@8wave/ai-elements 0.119.0-beta.26 → 0.119.0-beta.27

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 (205) hide show
  1. package/dist/_chunks/{Agent-D8YrsP52.js → Agent-Gdgpd3LA.js} +66 -66
  2. package/dist/_chunks/Agent-Gdgpd3LA.js.map +1 -0
  3. package/dist/_chunks/{PkStreamingMarkdown-Bry3y6Ru.js → PkStreamingMarkdown-BK9O_NLx.js} +889 -852
  4. package/dist/_chunks/{PkStreamingMarkdown-Bry3y6Ru.js.map → PkStreamingMarkdown-BK9O_NLx.js.map} +1 -1
  5. package/dist/_chunks/{PkToolEditSpreadsheet-5vHzEy4P.js → PkToolEditSpreadsheet-D-RCfnrN.js} +2 -2
  6. package/dist/_chunks/{PkToolEditSpreadsheet-5vHzEy4P.js.map → PkToolEditSpreadsheet-D-RCfnrN.js.map} +1 -1
  7. package/dist/_chunks/{PkToolRequestGeolocation-Cj8hTfNF.js → PkToolRequestGeolocation-PxhQxMP1.js} +2 -2
  8. package/dist/_chunks/{PkToolRequestGeolocation-Cj8hTfNF.js.map → PkToolRequestGeolocation-PxhQxMP1.js.map} +1 -1
  9. package/dist/_chunks/{PkToolRequestOAuthConnection-BWxR1hV4.js → PkToolRequestOAuthConnection-QYDJPUFF.js} +5 -4
  10. package/dist/_chunks/PkToolRequestOAuthConnection-QYDJPUFF.js.map +1 -0
  11. package/dist/_chunks/{PkToolShowArtifact-CfJLe8vD.js → PkToolShowArtifact-DGUj8f1k.js} +3 -3
  12. package/dist/_chunks/PkToolShowArtifact-DGUj8f1k.js.map +1 -0
  13. package/dist/_chunks/{PkToolShowCalendarEvent-Bp_yv8S7.js → PkToolShowCalendarEvent-BEjPZC1F.js} +4 -3
  14. package/dist/_chunks/PkToolShowCalendarEvent-BEjPZC1F.js.map +1 -0
  15. package/dist/_chunks/{PkToolShowComparison-Bvd4f4tJ.js → PkToolShowComparison-DLC22e1W.js} +4 -3
  16. package/dist/_chunks/PkToolShowComparison-DLC22e1W.js.map +1 -0
  17. package/dist/_chunks/{PkToolShowContactForm--9XOVqNB.js → PkToolShowContactForm-DXJI0MPZ.js} +5 -4
  18. package/dist/_chunks/PkToolShowContactForm-DXJI0MPZ.js.map +1 -0
  19. package/dist/_chunks/{PkToolShowDiagram-C-pNbC9n.js → PkToolShowDiagram-C5mSqZDp.js} +9 -8
  20. package/dist/_chunks/PkToolShowDiagram-C5mSqZDp.js.map +1 -0
  21. package/dist/_chunks/{PkToolShowEmail-BKel_O29.js → PkToolShowEmail-C7mUCqGL.js} +4 -3
  22. package/dist/_chunks/PkToolShowEmail-C7mUCqGL.js.map +1 -0
  23. package/dist/_chunks/{PkToolShowForm-CGAc1O6K.js → PkToolShowForm-UQo0Xdiq.js} +6 -5
  24. package/dist/_chunks/PkToolShowForm-UQo0Xdiq.js.map +1 -0
  25. package/dist/_chunks/{PkToolShowImageGallery-CIhIrIcY.js → PkToolShowImageGallery-rZ3AtIEP.js} +2 -2
  26. package/dist/_chunks/{PkToolShowImageGallery-CIhIrIcY.js.map → PkToolShowImageGallery-rZ3AtIEP.js.map} +1 -1
  27. package/dist/_chunks/{PkToolShowLocation-78C7jFiV.js → PkToolShowLocation-BOmxHZKd.js} +4 -3
  28. package/dist/_chunks/PkToolShowLocation-BOmxHZKd.js.map +1 -0
  29. package/dist/_chunks/{PkToolShowMessage-BScy-w4J.js → PkToolShowMessage-vw4XS4TR.js} +4 -3
  30. package/dist/_chunks/PkToolShowMessage-vw4XS4TR.js.map +1 -0
  31. package/dist/_chunks/{PkToolShowProductList-BjWKnbyD.js → PkToolShowProductList-ByeSoIwq.js} +2 -2
  32. package/dist/_chunks/{PkToolShowProductList-BjWKnbyD.js.map → PkToolShowProductList-ByeSoIwq.js.map} +1 -1
  33. package/dist/_chunks/{PkToolShowQrCode-B70jPHDw.js → PkToolShowQrCode-BhcAUXSZ.js} +4 -3
  34. package/dist/_chunks/PkToolShowQrCode-BhcAUXSZ.js.map +1 -0
  35. package/dist/_chunks/{PkToolShowSources-BJ-XFrLD.js → PkToolShowSources-q4XBOwJl.js} +51 -50
  36. package/dist/_chunks/PkToolShowSources-q4XBOwJl.js.map +1 -0
  37. package/dist/_chunks/{PkToolShowSuggestedReply-0KahUIlw.js → PkToolShowSuggestedReply-BISQY1ce.js} +2 -2
  38. package/dist/_chunks/{PkToolShowSuggestedReply-0KahUIlw.js.map → PkToolShowSuggestedReply-BISQY1ce.js.map} +1 -1
  39. package/dist/_chunks/{PkToolShowVideo-_V_d-PDr.js → PkToolShowVideo-BmHHW4Ep.js} +2 -2
  40. package/dist/_chunks/{PkToolShowVideo-_V_d-PDr.js.map → PkToolShowVideo-BmHHW4Ep.js.map} +1 -1
  41. package/dist/_chunks/{PkToolShowWebPages-D55VEPjK.js → PkToolShowWebPages-BaapF0CC.js} +2 -2
  42. package/dist/_chunks/{PkToolShowWebPages-D55VEPjK.js.map → PkToolShowWebPages-BaapF0CC.js.map} +1 -1
  43. package/dist/_chunks/VvButtonLocalized-DV-zbH9b.js +21 -0
  44. package/dist/_chunks/VvButtonLocalized-DV-zbH9b.js.map +1 -0
  45. package/dist/_chunks/{chatImagePolicy-DXkhb-N_.js → chatImagePolicy-CDNkMKdT.js} +2 -2
  46. package/dist/_chunks/{chatImagePolicy-DXkhb-N_.js.map → chatImagePolicy-CDNkMKdT.js.map} +1 -1
  47. package/dist/_chunks/{markdown-DpoAzJSk.js → markdown-BbaLt57-.js} +8 -8
  48. package/dist/_chunks/{markdown-DpoAzJSk.js.map → markdown-BbaLt57-.js.map} +1 -1
  49. package/dist/_chunks/text-BHCGblDQ.js +6 -0
  50. package/dist/_chunks/text-BHCGblDQ.js.map +1 -0
  51. package/dist/ai-elements.es.js +2789 -2526
  52. package/dist/ai-elements.es.js.map +1 -1
  53. package/dist-vue/PkChatbot.js +1 -1
  54. package/dist-vue/PkChatbotAuth.js +1 -1
  55. package/dist-vue/PkChatbotEmptyState.js +1 -1
  56. package/dist-vue/PkChatbotError.js +1 -1
  57. package/dist-vue/PkChatbotFeedbackForm.js +1 -1
  58. package/dist-vue/PkChatbotInput.js +1 -1
  59. package/dist-vue/PkChatbotMessages.js +1 -1
  60. package/dist-vue/PkChatbotStepPayload.js +1 -1
  61. package/dist-vue/PkChatbotStepToolDetail.js +1 -1
  62. package/dist-vue/PkChatbotSteps.js +1 -1
  63. package/dist-vue/PkChatbotViewChat.js +1 -1
  64. package/dist-vue/PkChatbotViewConversations.js +1 -1
  65. package/dist-vue/PkChatbotViewFiles.js +1 -1
  66. package/dist-vue/PkChatbotViewProfile.js +1 -1
  67. package/dist-vue/PkChatbotWakeupBar.js +1 -1
  68. package/dist-vue/_chunks/{Agent-dGF8mkG9.js → Agent-DU1WWaHR.js} +87 -87
  69. package/dist-vue/_chunks/Agent-DU1WWaHR.js.map +1 -0
  70. package/dist-vue/_chunks/{Document-CV-RJu_p.js → Document-Cto-Qws0.js} +2 -2
  71. package/dist-vue/_chunks/{Document-CV-RJu_p.js.map → Document-Cto-Qws0.js.map} +1 -1
  72. package/dist-vue/_chunks/{PkChatbot-536vsOfp.js → PkChatbot-D0BQ3VnX.js} +86 -85
  73. package/dist-vue/_chunks/PkChatbot-D0BQ3VnX.js.map +1 -0
  74. package/dist-vue/_chunks/{PkChatbotAuth-BMLLTSwK.js → PkChatbotAuth-BVZzjbK9.js} +4 -3
  75. package/dist-vue/_chunks/PkChatbotAuth-BVZzjbK9.js.map +1 -0
  76. package/dist-vue/_chunks/{PkChatbotEmptyState-Toj4CqXV.js → PkChatbotEmptyState-CGjFcwwB.js} +2 -2
  77. package/dist-vue/_chunks/{PkChatbotEmptyState-Toj4CqXV.js.map → PkChatbotEmptyState-CGjFcwwB.js.map} +1 -1
  78. package/dist-vue/_chunks/{PkChatbotError-CRGbK09-.js → PkChatbotError-BV5ga7hk.js} +4 -3
  79. package/dist-vue/_chunks/PkChatbotError-BV5ga7hk.js.map +1 -0
  80. package/dist-vue/_chunks/{PkChatbotFeedbackForm-CMFXjoKR.js → PkChatbotFeedbackForm-B5cYsWBr.js} +8 -7
  81. package/dist-vue/_chunks/PkChatbotFeedbackForm-B5cYsWBr.js.map +1 -0
  82. package/dist-vue/_chunks/{PkChatbotInput-BfZqRpQ2.js → PkChatbotInput-BVBQY0V5.js} +8 -7
  83. package/dist-vue/_chunks/PkChatbotInput-BVBQY0V5.js.map +1 -0
  84. package/dist-vue/_chunks/PkChatbotMessages-CK0lhcDj.js +876 -0
  85. package/dist-vue/_chunks/PkChatbotMessages-CK0lhcDj.js.map +1 -0
  86. package/dist-vue/_chunks/{PkChatbotStepPayload-D0eoPBQ8.js → PkChatbotStepPayload-l57qHqVf.js} +2 -2
  87. package/dist-vue/_chunks/{PkChatbotStepPayload-D0eoPBQ8.js.map → PkChatbotStepPayload-l57qHqVf.js.map} +1 -1
  88. package/dist-vue/_chunks/{PkChatbotStepToolDetail-CMx4cw1D.js → PkChatbotStepToolDetail-ChrOa4W4.js} +16 -16
  89. package/dist-vue/_chunks/{PkChatbotStepToolDetail-CMx4cw1D.js.map → PkChatbotStepToolDetail-ChrOa4W4.js.map} +1 -1
  90. package/dist-vue/_chunks/{PkChatbotSteps-DeZQhGRU.js → PkChatbotSteps-DnU9r4XT.js} +40 -40
  91. package/dist-vue/_chunks/{PkChatbotSteps-DeZQhGRU.js.map → PkChatbotSteps-DnU9r4XT.js.map} +1 -1
  92. package/dist-vue/_chunks/{PkChatbotViewChat-CVT6OUIv.js → PkChatbotViewChat-DIx3nwEg.js} +12 -12
  93. package/dist-vue/_chunks/{PkChatbotViewChat-CVT6OUIv.js.map → PkChatbotViewChat-DIx3nwEg.js.map} +1 -1
  94. package/dist-vue/_chunks/PkChatbotViewConversations-DDWO1Ci_.js +199 -0
  95. package/dist-vue/_chunks/PkChatbotViewConversations-DDWO1Ci_.js.map +1 -0
  96. package/dist-vue/_chunks/{PkChatbotViewFiles-CA20TBFY.js → PkChatbotViewFiles-O9YjrGP0.js} +18 -17
  97. package/dist-vue/_chunks/PkChatbotViewFiles-O9YjrGP0.js.map +1 -0
  98. package/dist-vue/_chunks/{PkChatbotViewProfile-CyzRxE3D.js → PkChatbotViewProfile-BoImMMj2.js} +11 -10
  99. package/dist-vue/_chunks/PkChatbotViewProfile-BoImMMj2.js.map +1 -0
  100. package/dist-vue/_chunks/{PkChatbotWakeupBar-jBti21FQ.js → PkChatbotWakeupBar-Cjgarxnw.js} +3 -2
  101. package/dist-vue/_chunks/PkChatbotWakeupBar-Cjgarxnw.js.map +1 -0
  102. package/dist-vue/_chunks/{PkStreamingMarkdown-C55Fi0Pd.js → PkStreamingMarkdown-JEkbkY5k.js} +23 -23
  103. package/dist-vue/_chunks/{PkStreamingMarkdown-C55Fi0Pd.js.map → PkStreamingMarkdown-JEkbkY5k.js.map} +1 -1
  104. package/dist-vue/_chunks/{PkSvgViewer-Ts3gQ1hB.js → PkSvgViewer-DrA4yi8Q.js} +7 -6
  105. package/dist-vue/_chunks/PkSvgViewer-DrA4yi8Q.js.map +1 -0
  106. package/dist-vue/_chunks/{PkToolEditSpreadsheet-HAskd6d3.js → PkToolEditSpreadsheet-BX_h8Hut.js} +2 -2
  107. package/dist-vue/_chunks/{PkToolEditSpreadsheet-HAskd6d3.js.map → PkToolEditSpreadsheet-BX_h8Hut.js.map} +1 -1
  108. package/dist-vue/_chunks/{PkToolRequestGeolocation-BE22qwxB.js → PkToolRequestGeolocation-JZYgc-2X.js} +2 -2
  109. package/dist-vue/_chunks/{PkToolRequestGeolocation-BE22qwxB.js.map → PkToolRequestGeolocation-JZYgc-2X.js.map} +1 -1
  110. package/dist-vue/_chunks/{PkToolRequestOAuthConnection-GfSalEJG.js → PkToolRequestOAuthConnection-Bwj84qHq.js} +11 -10
  111. package/dist-vue/_chunks/PkToolRequestOAuthConnection-Bwj84qHq.js.map +1 -0
  112. package/dist-vue/_chunks/{PkToolShowArtifact-z1qTnFkA.js → PkToolShowArtifact-BIvl5I2I.js} +5 -5
  113. package/dist-vue/_chunks/PkToolShowArtifact-BIvl5I2I.js.map +1 -0
  114. package/dist-vue/_chunks/{PkToolShowCalendarEvent-Dv_rss26.js → PkToolShowCalendarEvent-ve1I0xaV.js} +7 -6
  115. package/dist-vue/_chunks/PkToolShowCalendarEvent-ve1I0xaV.js.map +1 -0
  116. package/dist-vue/_chunks/{PkToolShowComparison-DQs3E6-k.js → PkToolShowComparison-c2e239T4.js} +3 -2
  117. package/dist-vue/_chunks/PkToolShowComparison-c2e239T4.js.map +1 -0
  118. package/dist-vue/_chunks/{PkToolShowContactForm-Y0lrHXhr.js → PkToolShowContactForm-CddxrLBZ.js} +13 -12
  119. package/dist-vue/_chunks/PkToolShowContactForm-CddxrLBZ.js.map +1 -0
  120. package/dist-vue/_chunks/{PkToolShowDiagram-7WxDObZ6.js → PkToolShowDiagram-DdR4x6pP.js} +10 -9
  121. package/dist-vue/_chunks/PkToolShowDiagram-DdR4x6pP.js.map +1 -0
  122. package/dist-vue/_chunks/{PkToolShowEmail-C591LR5N.js → PkToolShowEmail-CUgZN0J5.js} +8 -7
  123. package/dist-vue/_chunks/PkToolShowEmail-CUgZN0J5.js.map +1 -0
  124. package/dist-vue/_chunks/{PkToolShowForm-CZFWZub7.js → PkToolShowForm-DiXcYws_.js} +14 -13
  125. package/dist-vue/_chunks/PkToolShowForm-DiXcYws_.js.map +1 -0
  126. package/dist-vue/_chunks/{PkToolShowImageGallery-CkfXP_lD.js → PkToolShowImageGallery-COrJEjSv.js} +2 -2
  127. package/dist-vue/_chunks/{PkToolShowImageGallery-CkfXP_lD.js.map → PkToolShowImageGallery-COrJEjSv.js.map} +1 -1
  128. package/dist-vue/_chunks/{PkToolShowLocation-Dyz6h_0n.js → PkToolShowLocation-CHi_cONJ.js} +13 -12
  129. package/dist-vue/_chunks/PkToolShowLocation-CHi_cONJ.js.map +1 -0
  130. package/dist-vue/_chunks/{PkToolShowMessage-CbXERPHI.js → PkToolShowMessage-ATTN5Hac.js} +8 -7
  131. package/dist-vue/_chunks/PkToolShowMessage-ATTN5Hac.js.map +1 -0
  132. package/dist-vue/_chunks/{PkToolShowProductList-De-PtmD-.js → PkToolShowProductList-BIvJlpMT.js} +2 -2
  133. package/dist-vue/_chunks/{PkToolShowProductList-De-PtmD-.js.map → PkToolShowProductList-BIvJlpMT.js.map} +1 -1
  134. package/dist-vue/_chunks/{PkToolShowQrCode-DEAvfLFu.js → PkToolShowQrCode-D_5VUtEB.js} +3 -2
  135. package/dist-vue/_chunks/PkToolShowQrCode-D_5VUtEB.js.map +1 -0
  136. package/dist-vue/_chunks/{PkToolShowSources-CSN7S0zo.js → PkToolShowSources-CC-0Oh4K.js} +57 -56
  137. package/dist-vue/_chunks/PkToolShowSources-CC-0Oh4K.js.map +1 -0
  138. package/dist-vue/_chunks/{PkToolShowSuggestedReply-DjutyiEi.js → PkToolShowSuggestedReply-I6FBos-F.js} +2 -2
  139. package/dist-vue/_chunks/{PkToolShowSuggestedReply-DjutyiEi.js.map → PkToolShowSuggestedReply-I6FBos-F.js.map} +1 -1
  140. package/dist-vue/_chunks/{PkToolShowVideo-B_Q93E2y.js → PkToolShowVideo-UUNkUlrg.js} +2 -2
  141. package/dist-vue/_chunks/{PkToolShowVideo-B_Q93E2y.js.map → PkToolShowVideo-UUNkUlrg.js.map} +1 -1
  142. package/dist-vue/_chunks/{PkToolShowWebPages-D3CdjJUc.js → PkToolShowWebPages-CLYx_PgL.js} +2 -2
  143. package/dist-vue/_chunks/{PkToolShowWebPages-D3CdjJUc.js.map → PkToolShowWebPages-CLYx_PgL.js.map} +1 -1
  144. package/dist-vue/_chunks/VvButtonLocalized-BuzLsXp3.js +20 -0
  145. package/dist-vue/_chunks/VvButtonLocalized-BuzLsXp3.js.map +1 -0
  146. package/dist-vue/_chunks/{createChatbotApiClient-DSLxswr4.js → createChatbotApiClient-BdmGCAQR.js} +17 -17
  147. package/dist-vue/_chunks/{createChatbotApiClient-DSLxswr4.js.map → createChatbotApiClient-BdmGCAQR.js.map} +1 -1
  148. package/dist-vue/_chunks/{useChatbotStore-rtl-oKqU.js → useChatbotStore-BAv5K91p.js} +3 -3
  149. package/dist-vue/_chunks/{useChatbotStore-rtl-oKqU.js.map → useChatbotStore-BAv5K91p.js.map} +1 -1
  150. package/dist-vue/_chunks/{utils-CwIMEuAv.js → utils-BqPJ6DJT.js} +142 -78
  151. package/dist-vue/_chunks/utils-BqPJ6DJT.js.map +1 -0
  152. package/dist-vue/api.js +1 -1
  153. package/dist-vue/composables.js +276 -24
  154. package/dist-vue/composables.js.map +1 -1
  155. package/dist-vue/index.js +4214 -4186
  156. package/dist-vue/index.js.map +1 -1
  157. package/dist-vue/locales.js +42 -6
  158. package/dist-vue/packages/components/src/PkEditorMarkdown.d.ts +3 -2
  159. package/dist-vue/packages/components/src/VvButtonLocalized.d.ts +11 -0
  160. package/dist-vue/packages/components/src/chat/index.d.ts +1 -0
  161. package/dist-vue/packages/components/src/chat/utils.d.ts +30 -0
  162. package/dist-vue/packages/components/src/index.d.ts +1 -0
  163. package/package.json +1 -1
  164. package/dist/_chunks/Agent-D8YrsP52.js.map +0 -1
  165. package/dist/_chunks/PkToolRequestOAuthConnection-BWxR1hV4.js.map +0 -1
  166. package/dist/_chunks/PkToolShowArtifact-CfJLe8vD.js.map +0 -1
  167. package/dist/_chunks/PkToolShowCalendarEvent-Bp_yv8S7.js.map +0 -1
  168. package/dist/_chunks/PkToolShowComparison-Bvd4f4tJ.js.map +0 -1
  169. package/dist/_chunks/PkToolShowContactForm--9XOVqNB.js.map +0 -1
  170. package/dist/_chunks/PkToolShowDiagram-C-pNbC9n.js.map +0 -1
  171. package/dist/_chunks/PkToolShowEmail-BKel_O29.js.map +0 -1
  172. package/dist/_chunks/PkToolShowForm-CGAc1O6K.js.map +0 -1
  173. package/dist/_chunks/PkToolShowLocation-78C7jFiV.js.map +0 -1
  174. package/dist/_chunks/PkToolShowMessage-BScy-w4J.js.map +0 -1
  175. package/dist/_chunks/PkToolShowQrCode-B70jPHDw.js.map +0 -1
  176. package/dist/_chunks/PkToolShowSources-BJ-XFrLD.js.map +0 -1
  177. package/dist/_chunks/text-DbSEK8si.js +0 -6
  178. package/dist/_chunks/text-DbSEK8si.js.map +0 -1
  179. package/dist-vue/_chunks/Agent-dGF8mkG9.js.map +0 -1
  180. package/dist-vue/_chunks/PkChatbot-536vsOfp.js.map +0 -1
  181. package/dist-vue/_chunks/PkChatbotAuth-BMLLTSwK.js.map +0 -1
  182. package/dist-vue/_chunks/PkChatbotError-CRGbK09-.js.map +0 -1
  183. package/dist-vue/_chunks/PkChatbotFeedbackForm-CMFXjoKR.js.map +0 -1
  184. package/dist-vue/_chunks/PkChatbotInput-BfZqRpQ2.js.map +0 -1
  185. package/dist-vue/_chunks/PkChatbotMessages-CnI3e9wF.js +0 -869
  186. package/dist-vue/_chunks/PkChatbotMessages-CnI3e9wF.js.map +0 -1
  187. package/dist-vue/_chunks/PkChatbotViewConversations-DHeFtAfN.js +0 -197
  188. package/dist-vue/_chunks/PkChatbotViewConversations-DHeFtAfN.js.map +0 -1
  189. package/dist-vue/_chunks/PkChatbotViewFiles-CA20TBFY.js.map +0 -1
  190. package/dist-vue/_chunks/PkChatbotViewProfile-CyzRxE3D.js.map +0 -1
  191. package/dist-vue/_chunks/PkChatbotWakeupBar-jBti21FQ.js.map +0 -1
  192. package/dist-vue/_chunks/PkSvgViewer-Ts3gQ1hB.js.map +0 -1
  193. package/dist-vue/_chunks/PkToolRequestOAuthConnection-GfSalEJG.js.map +0 -1
  194. package/dist-vue/_chunks/PkToolShowArtifact-z1qTnFkA.js.map +0 -1
  195. package/dist-vue/_chunks/PkToolShowCalendarEvent-Dv_rss26.js.map +0 -1
  196. package/dist-vue/_chunks/PkToolShowComparison-DQs3E6-k.js.map +0 -1
  197. package/dist-vue/_chunks/PkToolShowContactForm-Y0lrHXhr.js.map +0 -1
  198. package/dist-vue/_chunks/PkToolShowDiagram-7WxDObZ6.js.map +0 -1
  199. package/dist-vue/_chunks/PkToolShowEmail-C591LR5N.js.map +0 -1
  200. package/dist-vue/_chunks/PkToolShowForm-CZFWZub7.js.map +0 -1
  201. package/dist-vue/_chunks/PkToolShowLocation-Dyz6h_0n.js.map +0 -1
  202. package/dist-vue/_chunks/PkToolShowMessage-CbXERPHI.js.map +0 -1
  203. package/dist-vue/_chunks/PkToolShowQrCode-DEAvfLFu.js.map +0 -1
  204. package/dist-vue/_chunks/PkToolShowSources-CSN7S0zo.js.map +0 -1
  205. package/dist-vue/_chunks/utils-CwIMEuAv.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PkStreamingMarkdown-C55Fi0Pd.js","names":["Sn","On","w","Tn","F","L","Rn","yn","wn","_","T","K","X","I","A","M","f","h","Y","q","v","z","Q","Z","j","J","V","N","x","y","$","O","C","ne","ee","re","te","U","ie","oe","se","le","ae","fe","ge","de","me","be","ke","Ie","Ee","Se","Oe","Te","D","Me","Ce","Pe","_e","B","Re","ye","h","DOMPurify","marked","remend","_openBlock","_createElementBlock","_sfc_main","normalizeImageHost","loadCdnCss","getShadowRoot","urlOrigin","isSameSite","useShortUrlResolver","getMarkdownTail","DELIMITED_MARKER","DEGRADED_MARKER","STRAY_DELIMITERS","stripProviderCitationMarkers","text","En","Sn$1","On$1","w$1","Tn$1","Mn","F$1","e","n","r","L$1","P","c","Cn","Ln","Pn","_n","t","o","s","l","Rn$1","Nn","yn$1","$n","a","u","Un","Dn","W","Bn","wn$1","i","Fn","Wn","_$1","T$1","g","K$1","H","X$1","I$1","R","Kn","Hn","Gn","Xn","Yn","qn","k","vn","zn","A$1","Qn","M$1","f$1","h$2","Zn","Y$1","p","q$1","v$1","z$1","Q$1","Z$1","j$1","J$1","V$1","b","N$1","x$1","nn","m","en","y$1","$$1","O$1","Vn","C$1","xn","ne$1","on","ee$1","re$1","te$1","U$1","rn","ie$1","oe$1","S","tn","se$1","sn","le$1","ln","ae$1","ce","an","cn","ue","fe$1","un","ge$1","de$1","fn","me$1","he","pe","be$1","gn","dn","ke$1","Ie$1","Ae","mn","hn","E","Ee$1","pn","Se$1","Oe$1","Te$1","D$1","Me$1","Ce$1","Le","Pe$1","bn","_e$1","kn","In","An","B$1","Re$1","d","Ne","ye$1","Or","B","y","V","M","D","h$1","x","ze","Q","Ee","Me","Ce","N","Ie","Y","fe","me","Be","ee","De","te","qe","Ze","ne","ve","xe","He","Ge","re","de","Qe","je","Fe","Ue","be","Ke","q","j","Xe","We","Re","Ve","Je","Ye","Te","et","tt","rt","Oe","st","it","at","lt","pt","ct","dt","kt","gt","ft","mt","xt","we","K","bt","Rt","Tt","ke","Ot","wt","ge","yt","se","St","J","_t","F","Z","$t","Pe","w","ye","ie","oe","A","ae","v","le","X","Se","Lt","_e","_","$e","G","T","$","z","O","L","C","I","f","At","_OverloadYield","_arrayLikeToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_slicedToArray","_unsupportedIterableToArray","AsyncGenerator","resume","settle","entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","apply","construct","args","func","thisArg","Func","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySlice","arraySplice","arrayIsArray","setCreate","unconstruct","setAdd","setHas","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","numberToString","booleanToString","bigintToString","symbolToString","objectHasOwnProperty","objectToString","regExpTest","typeErrorCreate","addToSet","transformCaseFunc","set","array","element","lcElement","cleanArray","index","clone","newObject","_ref2","object","_ref3","property","value","stringifyValue","valueAsRecord","valueToString","lookupGetter","stringified","desc","prop","fallbackValue","lookupAccessor","isRegex","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","ELEMENT_MARKUP_PROBE","COMMENT_MARKUP_PROBE","FALLBACK_TAG_CLOSE","SELF_CLOSING_TAG","NODE_TYPE","LITERAL_TEXT_ELEMENTS","getGlobal","_createTrustedTypesPolicy","trustedTypes","suffix","ATTR_NAME","purifyHostElement","policyName","scriptUrl","_createHooksMap","_resolveSetOption","cfg","key","options","fallback","_resolveObjectOption","makeFallback","createDOMPurify","window","DOMPurify","root","document","originalDocument","currentScript","HTMLTemplateElement","Node","Element","NodeFilter","DOMParser","ElementPrototype","cloneNode","remove","removeAttributeNode","getNextSibling","getChildNodes","getParentNode","getAttributes","getNodeType","getNodeName","getOwnerDocument","_readNodeType","node","_readNodeName","getNamespaceURI","_readNamespaceURI","template","trustedTypesPolicy","emptyHTML","defaultTrustedTypesPolicy","defaultTrustedTypesPolicyResolved","IN_TRUSTED_TYPES_POLICY","_assertNotInTrustedTypesPolicy","_createTrustedHTML","_createTrustedScriptURL","_getDefaultTrustedTypesPolicy","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","MUSTACHE_EXPR$1","ERB_EXPR$1","TMPLIT_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","CUSTOM_ELEMENT$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","SET_CONFIG_ALLOWED_TAGS","SET_CONFIG_ALLOWED_ATTR","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","IN_PLACE_VISITED","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","DEFAULT_MATHML_TEXT_INTEGRATION_POINTS","MATHML_TEXT_INTEGRATION_POINTS","DEFAULT_HTML_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","customElementHandling","previousTrustedTypesPolicy","error","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkSvgNamespace","parent","tagName","parentTagName","_checkMathMlNamespace","_checkHtmlNamespace","_checkValidNamespace","elementNamespace","parentNode","_forceRemove","_stripAttributeNode","attribute","name","_neutralizeRoot","childNodes","child","attributes","_removeAttribute","attr","_stripDisallowedAttributes","_walkTree","intoShadow","stack","visit","shadowRoot","_isDocumentFragment","_neutralizeSubtree","_collectLiveNodes","nodes","_neutralizeEscapedElements","reachable","before","_neutralizeDiscarded","rootRemoved","entry","_sanitizeUnvisitedNodes","visited","original","getOriginal","beforeNode","round","live","containers","pending","container","_sanitizeUnvisitedIn","iterator","_createNodeIterator","inShadow","_executeHooks","_sanitizeElements","_sanitizeAttributes","_sanitizeShadowDOM2","_markVisited","_isPatchLinkageAttribute","lcName","lcTag","_neutralizePatchLinkage","nodeType","_initDocument","doc","leadingWhitespace","dirty","matches","dirtyPayload","body","_stripTemplateExpressions","_scrubTemplateExpressions2","templates","tmpl","_scrubOwnCharacterData","walker","currentNode","_isClobbered","realTagName","_isNode","data","_isUnsafeNode","_matchesNameCheck","check","_sanitizeDisallowedNode","_isBasicCustomElement","childCount","hoisted","_forkSharedAllowlist","hookList","defaultSet","setConfigSet","_handleHookDetachedNode","removed","content","_isValidAttribute","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_applyTrustedTypesToAttribute","namespaceURI","_setAttributeValue","_isUnsafeAttributeValue","hookEvent","attrValue","initValue","recreatedNamedProp","shadowNode","shadowIterator","fragment","innerSr","_sanitizeAttachedShadowRoots","item","isElement","rootName","sr","importedNode","returnNode","inPlace","inPlaceNodes","outerVisited","walkRoot","nodeIterator","serializedHTML","tag","hookFunction","entryPoint","purify_default","escapeHtml","renderKatexPlaceholder","displayMode","SANITIZE_CONFIG","HELD_IMAGE_ATTRIBUTE","sanitizeMarkdownHtml","held","image","src","button","ChatImagePolicyKey","provideChatImagePolicy","computed","hosts","backendUrl","origin","imageHostOf","pageUrl","PLATFORM_MEDIA_PATH","isImageAllowed","url","policy","useChatImageGate","inject","shortUrls","released","ref","target","_hoisted_1","RENDER_INTERVAL_MS","PkStreamingMarkdown_default","defineComponent","props","__props","useI18n","beautifulMermaidPromise","loadBeautifulMermaid","katexPromise","loadKatex","mod","inlineKatexRule","blockKatexRule","idx","match","token","renderer","escapeAttribute","UNSAFE_LINK_SCHEME","isRenderingTable","shortenAddress","address","label","tokens","href","isBareAddressInTable","tooltip","title","titleAttr","targetAttrs","labels","cell","renderRow","cells","align","MERMAID_PREFIXES","normalizeLatexDelimiters","md","stripLeakedJson","fenced","fenceRe","fenceMatch","offset","preprocessors","containerRef","useTemplateRef","renderedMarkdown","refThrottled","toRef","visibleMarkdown","expandedMarkdown","resolveText","imageGate","onContentClick","event","renderMermaid","nextTick","theme","THEMES","code","renderMermaidSVG","highlightCode","blocks","hljs","block","renderKatex","katex","tex","rerenderMermaidOnThemeChange","handleImageError","img","placeholder","onMounted","onBeforeUnmount","watch","prevCharCount","createAnimatedSpan","span","delay","insertAnimatedWords","startIndex","parts","part","refNode","collectTextNodes","annotateNewContent","textNodes","charsSeen","wordIdx","textNode","nodeStart","nodeEnd","splitAt","newTextNode","newText","newVal","oldVal","openBlock","createElementBlock"],"sources":["../../../../packages/utils/src/citations.ts","../../../../node_modules/.pnpm/remend@1.4.0/node_modules/remend/dist/index.js","../../../../node_modules/.pnpm/marked@18.1.1/node_modules/marked/lib/marked.esm.js","../../../../node_modules/.pnpm/dompurify@3.4.17/node_modules/dompurify/dist/purify.es.mjs","../../../../packages/components/src/chat/markdownHtml.ts","../../../../packages/components/src/chat/chatImagePolicy.ts","../../../../packages/components/src/chat/PkStreamingMarkdown.vue","../../../../packages/components/src/chat/PkStreamingMarkdown.vue"],"sourcesContent":["/**\n * OpenAI's Responses API (native `web_search`, also through Azure and the\n * gateway) emits inline citations as a marker wrapped in Private Use Area\n * delimiters:\n *\n * \\uE200cite\\uE202turn1view1\\uE201\n *\n * `cite` is the marker kind and `turn1view1` is the reference: browsing turn 1,\n * first page viewed (`search4` = 4th search result, `news2`, `fetch0`, …).\n * Several refs can share one block.\n *\n * Those delimiters are invisible in every renderer and get dropped by most text\n * pipelines (JSON round-trips, markdown sanitizers, terminal output), which\n * leaves the bare payload behind as literal prose: `citeturn1view1`. Either way\n * the marker is display noise: the usable data lives in the part's\n * `providerMetadata.<provider>.annotations`, which carries url, title and the\n * span the marker occupied.\n *\n * IMPORTANT: those annotation `start_index`/`end_index` offsets are computed on\n * the text WITH the delimiters still in it. Render the citations from the\n * annotations FIRST (walking them last-to-first so earlier offsets stay valid),\n * and only then strip. Stripping first makes every offset stale.\n */\n\n/** A whole PUA-delimited block, `\\uE200…\\uE201`, plus the space before it. */\nconst DELIMITED_MARKER = /[ \\t]*\\uE200[^\\uE201]*\\uE201/g\n\n/**\n * The same payload once the delimiters are already lost: a marker keyword glued\n * to one or more `turn<n><kind><n>` refs. Anchored on both the keyword and the\n * ref shape, because on degraded text there are no boundaries left to trust and\n * a looser pattern would start eating prose. Tried only where a run of blanks\n * starts: from every position inside a long run it walked the rest of the run,\n * and 64k spaces took 7 seconds.\n */\nconst DEGRADED_MARKER =\n /(?<![ \\t])[ \\t]*(?:cite|filecite|videocite|audiocite|imagecite|screenshot)(?:turn\\d+[a-z]+\\d+)+/gi\n\n/**\n * Orphan delimiters: a block truncated mid-stream, or one whose payload some\n * upstream pass already removed.\n */\nconst STRAY_DELIMITERS = /[\\uE200-\\uE20F]/g\n\n/**\n * Removes provider citation markers from text meant for display, in all three\n * states they show up in: well-formed, delimiter-stripped, and truncated.\n */\nexport function stripProviderCitationMarkers(text: string): string {\n if (!text) {\n return text\n }\n return text\n .replace(DELIMITED_MARKER, '')\n .replace(DEGRADED_MARKER, '')\n .replace(STRAY_DELIMITERS, '')\n}\n","var En=Object.defineProperty,Sn=Object.defineProperties;var On=Object.getOwnPropertyDescriptors;var w=Object.getOwnPropertySymbols;var Tn=Object.prototype.hasOwnProperty,Mn=Object.prototype.propertyIsEnumerable;var F=(n,e,r)=>e in n?En(n,e,{enumerable:true,configurable:true,writable:true,value:r}):n[e]=r,L=(n,e)=>{for(var r in e||(e={}))Tn.call(e,r)&&F(n,r,e[r]);if(w)for(var r of w(e))Mn.call(e,r)&&F(n,r,e[r]);return n},P=(n,e)=>Sn(n,On(e));var c={PROSE:0,FENCE_MARKER:1,FENCE_INFO:2,FENCE_BODY:3,CODE_SPAN:4,CODE_SPAN_OPEN:5},Cn=/^(`{3,}|~{3,})(.*)$/,Ln=n=>n!==void 0&&n>=\"0\"&&n<=\"9\",Pn=(n,e)=>{let r=e;if(n[r]===\"-\"||n[r]===\"*\"||n[r]===\"+\")r+=1;else {for(;Ln(n[r])&&r-e<9;)r+=1;if(r===e||n[r]!==\".\"&&n[r]!==\")\")return -1;r+=1;}return n[r]===\" \"?r+1:-1},_n=(n,e,r)=>{let t=0,i=e,o=false,s=e;for(;;){for(;s<r&&n[s]===\" \";)s+=1;if(n[s]===\">\"){t+=1,s+=n[s+1]===\" \"?2:1,i=s,o=false;continue}let l=s<r?Pn(n,s):-1;if(l===-1)return {contentStart:s,listIndent:o?s-i:0,quoteDepth:t};s=l,o=true;}},Rn=(n,e,r,t)=>{let i=e;for(let o=0;o<t;o+=1){for(;i<r&&n[i]===\" \";)i+=1;if(n[i]!==\">\")return -1;i+=1,n[i]===\" \"&&(i+=1);}return i},Nn=(n,e,r,t,i)=>{let o=e+t;n.fill(c.FENCE_MARKER,o,o+i),n.fill(c.FENCE_INFO,o+i,Math.min(r+1,n.length));},yn=(n,e,r,t)=>{let i=e;for(;i<r&&n[i]===\" \";)i+=1;let o=0;for(;i<r&&n[i]===t.char;)i+=1,o+=1;if(o<t.length)return false;for(;i<r;){if(n[i]!==\" \"&&n[i]!==\"\t\"&&n[i]!==\"\\r\")return false;i+=1;}return true},$n=(n,e,r,t)=>{let i=t>r&&n[t-1]===\"\\r\"?t-1:t,o=_n(n,r,i),s=n.slice(o.contentStart,i).match(Cn);if(!s)return null;let[,l,a]=s,u=l[0];return u===\"`\"&&a.includes(\"`\")?null:(Nn(e,r,t,o.contentStart-r,l.length),{char:u,length:l.length,listIndent:o.listIndent,quoteDepth:o.quoteDepth})},Un=(n,e,r,t)=>{let i=Rn(n,e,r,t.quoteDepth);if(i===-1||t.listIndent===0)return i;let o=i;for(;o<r&&n[o]===\" \";)o+=1;return o===r||n[o]===\"\\r\"&&o+1===r||o-i>=t.listIndent?i:-1},Dn=(n,e)=>{let r=n.length,t=null,i=0;for(;i<r;){let o=n.indexOf(`\n`,i);o===-1&&(o=r);let s=t?Un(n,i,o,t):-1;t&&s===-1&&(t=null),t?yn(n,s,o,t)?(e.fill(c.FENCE_MARKER,i,o),t=null):e.fill(c.FENCE_BODY,i,Math.min(o+1,r)):t=$n(n,e,i,o),i=o+1;}return t},W=(n,e)=>{let r=e+1;for(;r<n.length&&n[r]===\"`\";)r+=1;return r},Bn=(n,e)=>{let r=e+1;for(;r<n.length&&(n[r]===\" \"||n[r]===\"\t\"||n[r]===\"\\r\");)r+=1;return r<n.length&&n[r]===`\n`},wn=(n,e,r)=>{let t=r;for(;;){let i=n.indexOf(\"`\",t);if(i===-1)return -1;let o=i>t&&n[i-1]===\"\\\\\"&&e[i-1]===c.PROSE;if(e[i]===c.PROSE&&!o)return i;t=i+1;}},Fn=(n,e)=>{let r=n.length,t=-1,i=0,o=0;for(;o<r;){if(t<0){if(o=wn(n,e,o),o===-1)break;let l=W(n,o);t=o,i=l-o,o=l;continue}if(e[o]!==c.PROSE){e.fill(c.CODE_SPAN_OPEN,t,o),t=-1,o+=1;continue}if(n[o]===`\n`&&Bn(n,o)){t=-1,o+=1;continue}if(n[o]!==\"`\"){o+=1;continue}let s=W(n,o);s-o===i&&(e.fill(c.CODE_SPAN,t,s),t=-1),o=s;}return t>=0?(e.fill(c.CODE_SPAN_OPEN,t,r),{start:t,runLength:i}):null},Wn=n=>{let e=new Uint8Array(n.length),r=Dn(n,e),t=Fn(n,e);return {text:n,regions:e,openFence:r,openSpan:t,mathMask:null,linkUrlMask:null,htmlTagMask:null}},_=null,T=null,g=n=>{if(T!==null&&n===_)return T;let e=Wn(n);return _=n,T=e,e},K=()=>{_=null,T=null;},H=(n,e)=>e>=n.regions.length?n.openFence!==null||n.openSpan!==null:e<0?false:n.regions[e]!==c.PROSE,G=(n,e)=>{if(e>=n.regions.length)return n.openFence!==null;if(e<0)return false;let r=n.regions[e];return r===c.FENCE_MARKER||r===c.FENCE_INFO||r===c.FENCE_BODY},X=(n,e)=>n.regions[e]===c.CODE_SPAN,I=(n,e)=>{let r=g(n),t=e+e,i=0;for(let o=n.indexOf(t);o!==-1;o=n.indexOf(t,o))r.regions[o]===c.PROSE?(i+=1,o+=2):o+=1;return i},R=new Uint8Array(0),Kn=n=>n===\"inlineLatex\"||n===\"blockLatex\",Hn=(n,e)=>e===\"[\"&&n===\"none\"?\"blockLatex\":e===\"]\"&&n===\"blockLatex\"?\"none\":e===\"(\"&&n===\"none\"?\"inlineLatex\":e===\")\"&&n===\"inlineLatex\"?\"none\":null,Gn=(n,e)=>e?n===\"blockDollar\"?\"none\":\"blockDollar\":n===\"blockDollar\"?n:n===\"inlineDollar\"?\"none\":\"inlineDollar\",Xn=n=>n.includes(\"$\")||n.includes(\"\\\\(\")||n.includes(\"\\\\[\"),Yn=(n,e,r)=>{let t=n[e+1];if(n[e]===\"\\\\\"){if(t===\"$\")return {context:r,length:2};let i=Hn(r,t);return i===null?null:{context:i,length:2}}if(n[e]===\"$\"&&!Kn(r)){let i=t===\"$\";return {context:Gn(r,i),length:i?2:1}}return null},qn=n=>{let{text:e,regions:r}=n,t=e.length,i=new Uint8Array(t),o=\"none\",s=0;for(;s<t;){i[s]=o===\"none\"?0:1;let l=r[s]===c.PROSE?Yn(e,s,o):null;if(l===null){s+=1;continue}o=l.context,l.length===2&&(i[s+1]=o===\"none\"?0:1),s+=l.length;}return i},k=(n,e)=>e<0||e>=n.text.length?false:(n.mathMask===null&&(n.mathMask=Xn(n.text)?qn(n):R),n.mathMask[e]===1),vn=(n,e,r,t)=>{let{text:i,regions:o}=n,s=new Uint8Array(r-e),l=0;for(let u=r-1;u>=e;u-=1)i[u]===\")\"&&o[u]===c.PROSE&&(l=1),s[u-e]=l;let a=false;for(let u=e;u<r;u+=1)a&&s[u-e]===1&&(t[u]=1),o[u]===c.PROSE&&(i[u]===\")\"?a=false:i[u]===\"(\"&&(a=u>0&&i[u-1]===\"]\"));},zn=n=>{let{text:e}=n,r=e.length,t=new Uint8Array(r),i=0;for(;i<r;){let o=e.indexOf(`\n`,i);o===-1&&(o=r),vn(n,i,o,t),i=o+1;}return t},A=(n,e)=>e<0||e>=n.text.length?false:(n.linkUrlMask===null&&(n.linkUrlMask=n.text.includes(\"](\")?zn(n):R),n.linkUrlMask[e]===1),Qn=n=>{let{text:e,regions:r}=n,t=e.length,i=new Uint8Array(t),o=false;for(let s=0;s<t;s+=1){if(e[s]===`\n`){o=false;continue}if(i[s]=o?1:0,r[s]===c.PROSE){if(e[s]===\">\")o=false;else if(e[s]===\"<\"){let l=e[s+1];o=l!==void 0&&(l>=\"a\"&&l<=\"z\"||l>=\"A\"&&l<=\"Z\"||l===\"/\");}}}return i},M=(n,e)=>e<0||e>=n.text.length?false:(n.htmlTagMask===null&&(n.htmlTagMask=n.text.includes(\"<\")?Qn(n):R),n.htmlTagMask[e]===1);var f=(n,e)=>H(g(n),e),h=(n,e)=>X(g(n),e);var Zn=/^(\\s*(?:[-*+]|\\d+[.)]) +)>(=?\\s*[$]?\\d)/gm,Y=n=>!n||typeof n!=\"string\"||!n.includes(\">\")?n:n.replace(Zn,(e,r,t,i)=>f(n,i)?e:`${r}\\\\>${t}`);var p=(n,{delimiter:e,markerLength:r,regex:t})=>{let i=n.lastIndexOf(e,n.length-2),o=i===-1?n.length-1:i;return n.slice(Math.max(0,o-r+1)).match(t)},q={delimiter:\"*\",markerLength:2,regex:/(\\*\\*)([^*]*\\*?)$/},v={delimiter:\"_\",markerLength:2,regex:/(__)([^_]*?)$/},z={delimiter:\"*\",markerLength:3,regex:/(\\*\\*\\*)([^*]*?)$/},Q={delimiter:\"*\",markerLength:1,regex:/(\\*)([^*]*?)$/},Z={delimiter:\"_\",markerLength:1,regex:/(_)([^_]*?)$/},j={delimiter:\"~\",markerLength:2,regex:/(~~)([^~]*?)$/},J={delimiter:\"_\",markerLength:2,regex:/(__)([^_]+)_$/},V={delimiter:\"~\",markerLength:2,regex:/(~~)([^~]+)~$/},b=/^[\\s_~*`]*$/,N=/^[\\s]*[-*+][\\s]+$/,x=/[\\p{L}\\p{N}_]/u,nn=/^\\*{4,}$/;var m=n=>{if(!n)return false;let e=n.charCodeAt(0);return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95?true:x.test(n)},jn=(n,e)=>G(g(n),e),en=(n,e)=>{let r=1;for(let t=e-1;t>=0;t-=1)if(n[t]===\"]\")r+=1;else if(n[t]===\"[\"&&(r-=1,r===0))return t;return -1},y=(n,e)=>{let r=1;for(let t=e+1;t<n.length;t+=1)if(n[t]===\"[\")r+=1;else if(n[t]===\"]\"&&(r-=1,r===0))return t;return -1},$=(n,e)=>k(g(n),e),Jn=(n,e)=>A(g(n),e);var O=(n,e,r)=>{let t=0;for(let a=e-1;a>=0;a-=1)if(n[a]===`\n`){t=a+1;break}let i=n.length;for(let a=e;a<n.length;a+=1)if(n[a]===`\n`){i=a;break}let o=n.substring(t,i),s=0,l=false;for(let a of o)if(a===r)s+=1;else if(a!==\" \"&&a!==\"\t\"){l=true;break}return s>=3&&!l};var Vn=(n,e,r,t)=>r===\"\\\\\"||k(n,e)?true:r!==\"*\"&&t===\"*\"?(e<n.text.length-2?n.text[e+2]:\"\")!==\"*\":r===\"*\"||(!r||r===\" \"||r===\"\t\"||r===`\n`)&&(!t||t===\" \"||t===\"\t\"||t===`\n`),C=n=>n===\" \"||n===\"\t\"||n===`\n`,xn=(n,e)=>!!(n&&e&&m(n)&&m(e)),ne=(n,e,r,t)=>{let i=xn(n,e),o=!!e&&!C(e),s=!!n&&!C(n);return i&&r%2===0&&!t?{count:false}:s&&r%2===1||o?{count:true,inWordAsteriskChain:i}:{count:false}},on=n=>{let e=g(n),r=0,t=false,i=n.length;for(let o=0;o<i;o+=1){if(n[o]!==\"*\"||e.regions[o]!==c.PROSE){m(n[o])||(t=false);continue}let s=o>0?n[o-1]:\"\",l=o<i-1?n[o+1]:\"\";if(Vn(e,o,s,l))continue;let a=ne(s,l,r,t);a.count&&(r+=1,t=a.inWordAsteriskChain);}return r},ee=(n,e,r,t)=>!!(r===\"\\\\\"||k(n,e)||A(n,e)||M(n,e)||r===\"_\"||t===\"_\"||r&&t&&m(r)&&m(t)),re=n=>{let e=g(n),r=0,t=n.length;for(let i=0;i<t;i+=1){if(n[i]!==\"_\"||e.regions[i]!==c.PROSE)continue;let o=i>0?n[i-1]:\"\",s=i<t-1?n[i+1]:\"\";ee(e,i,o,s)||(r+=1);}return r},te=n=>{let e=g(n),r=0,t=0;for(let i=0;i<n.length;i+=1)n[i]===\"*\"&&e.regions[i]===c.PROSE?t+=1:(t>=3&&(r+=Math.floor(t/3)),t=0);return t>=3&&(r+=Math.floor(t/3)),r},U=n=>I(n,\"*\"),rn=n=>n===\"\"||n===\" \"||n===\"\t\"||n===`\n`,ie=(n,e,r,t,i)=>{if(!(rn(r)&&rn(t)))return false;if(e>i.lineEnd){let o=n.indexOf(`\n`,e);i.lineEnd=o===-1?n.length:o,i.result=O(n,e,\"_\");}return i.result},oe=(n,e,r,t)=>{let i=n.text,o=e,s=false;o>0&&i[o-1]===\"\\\\\"&&(o+=1,s=true);let l=r-o;if(l<2)return false;let a=o>0?i[o-1]:\"\",u=s?\"\\\\\":a,S=r<i.length?i[r]:\"\";return m(u)&&m(S)||ie(i,o,u,S,t)||k(n,o)||A(n,o)||M(n,o)?false:Math.floor(l/2)%2===1},tn=n=>{let e=g(n),r=n.length,t={lineEnd:-1,result:false},i=false,o=0;for(;o<r;){if(n[o]!==\"_\"||e.regions[o]!==c.PROSE){o+=1;continue}let s=o,l=o+1;for(;l<r&&n[l]===\"_\"&&e.regions[l]===c.PROSE;)l+=1;o=l,oe(e,s,l,t)&&(i=!i);}return i},se=(n,e,r)=>{if(!e||b.test(e))return true;let i=n.substring(0,r).lastIndexOf(`\n`),o=i===-1?0:i+1,s=n.substring(o,r);return N.test(s)&&e.includes(`\n`)?true:O(n,r,\"*\")},sn=n=>{let e=p(n,q);if(!e)return n;let r=e[2],t=n.lastIndexOf(e[1]);return f(n,t)||h(n,t)||se(n,r,t)?n:U(n)%2===1?r.endsWith(\"*\")?`${n}*`:`${n}**`:n},le=(n,e,r)=>{if(!e||b.test(e))return true;let i=n.substring(0,r).lastIndexOf(`\n`),o=i===-1?0:i+1,s=n.substring(o,r);return N.test(s)&&e.includes(`\n`)?true:O(n,r,\"_\")},ln=n=>{let e=p(n,v);if(!e){let i=p(n,J);if(i){let o=n.lastIndexOf(i[1]);if(!(f(n,o)||h(n,o))&&tn(n))return `${n}_`}return n}let r=e[2],t=n.lastIndexOf(e[1]);return f(n,t)||h(n,t)||le(n,r,t)?n:tn(n)?`${n}__`:n},ae=(n,e)=>{let{text:r}=n;return r[e]===\"*\"&&n.regions[e]===c.PROSE&&r[e-1]!==\"*\"&&r[e+1]!==\"*\"&&r[e-1]!==\"\\\\\"&&!k(n,e)},ce=n=>{let e=g(n);for(let r=n.indexOf(\"*\");r!==-1;r=n.indexOf(\"*\",r+1)){if(!ae(e,r))continue;let t=r>0?n[r-1]:\"\",i=r<n.length-1?n[r+1]:\"\",o=!t||C(t),s=!i||C(i);if(!(o&&s)&&!(t&&i&&m(t)&&m(i))&&!s)return r}return -1},an=n=>{if(!p(n,Q))return n;let r=ce(n);if(r===-1||f(n,r)||h(n,r))return n;let t=n.substring(r+1);return !t||b.test(t)?n:on(n)%2===1?`${n}*`:n},cn=n=>{let e=g(n);for(let r=n.indexOf(\"_\");r!==-1;r=n.indexOf(\"_\",r+1))if(e.regions[r]===c.PROSE&&n[r-1]!==\"_\"&&n[r+1]!==\"_\"&&n[r-1]!==\"\\\\\"&&!k(e,r)&&!A(e,r)){let t=r>0?n[r-1]:\"\",i=r<n.length-1?n[r+1]:\"\";if(t&&i&&m(t)&&m(i))continue;return r}return -1},ue=n=>{let e=n.length;for(;e>0&&n[e-1]===`\n`;)e-=1;if(e<n.length){let r=n.slice(0,e),t=n.slice(e);return `${r}_${t}`}return `${n}_`},fe=n=>{if(!n.endsWith(\"**\"))return null;let e=n.slice(0,-2);if(U(e)%2!==1)return null;let t=e.indexOf(\"**\"),i=cn(e);return t!==-1&&i!==-1&&t<i?`${e}_**`:null},un=n=>{if(!p(n,Z))return n;let r=cn(n);if(r===-1)return n;let t=n.substring(r+1);if(!t||b.test(t)||f(n,r)||h(n,r))return n;if(re(n)%2===1){let o=fe(n);return o!==null?o:ue(n)}return n},ge=n=>{let e=U(n),r=on(n);return e%2===0&&r%2===0},de=(n,e,r)=>!e||b.test(e)||f(n,r)||h(n,r)?true:O(n,r,\"*\"),fn=n=>{if(nn.test(n))return n;let e=p(n,z);if(!e)return n;let r=e[2],t=n.lastIndexOf(e[1]);return de(n,r,t)?n:te(n)%2===1?ge(n)?n:`${n}***`:n};var me=/<[a-zA-Z/][^>]*$/,he=/[a-zA-Z/]/,pe=n=>n.includes(\"$\")||n.includes(\"\\\\(\")||n.includes(\"\\\\[\"),be=(n,e)=>{let r=n[e+1];return r!==void 0&&he.test(r)},gn=n=>{let e=n.match(me);if(!e||e.index===void 0)return n;let r=pe(n);for(let t=e.index;t<n.length;t+=1)if(!(n[t]!==\"<\"||!be(n,t))&&!f(n,t)&&!(r&&$(n,t)))return n.substring(0,t).trimEnd();return n};var dn=n=>{let e=g(n);if(e.openFence)return n;let r=e.openSpan;if(!r)return n;let t=n.slice(r.start+r.runLength);if(!t||b.test(t))return n;let i=0,o=n.length-1;for(;o>=0&&n[o]===\"`\";)i+=1,o-=1;return i>=r.runLength?n:n+\"`\".repeat(r.runLength-i)};var ke=n=>I(n,\"$\"),Ie=n=>{let e=g(n),r=0;for(let t=0;t<n.length;t+=1){if(n[t]===\"\\\\\"){t+=1;continue}e.regions[t]===c.PROSE&&n[t]===\"$\"&&(t+1<n.length&&n[t+1]===\"$\"?t+=1:r+=1);}return r},Ae=n=>{if(n.endsWith(\"$\")&&!n.endsWith(\"$$\"))return `${n}$`;let e=n.indexOf(\"$$\");return e!==-1&&n.indexOf(`\n`,e)!==-1&&!n.endsWith(`\n`)?`${n}\n$$`:`${n}$$`},mn=n=>ke(n)%2===0?n:Ae(n),hn=n=>Ie(n)%2===1?`${n}$`:n;var E=\"streamdown:incomplete-image\",Ee=(n,e,r)=>{if(n.substring(e+2).includes(\")\"))return null;let i=en(n,e);if(i===-1||f(n,i))return null;let o=i>0&&n[i-1]===\"!\",s=o?i-1:i,l=n.substring(0,s),a=n.substring(i+1,e);return o?`${l}![${a}](${E})`:r===\"text-only\"?`${l}${a}`:`${l}[${a}](streamdown:incomplete-link)`},pn=(n,e)=>{for(let r=0;r<e;r++)if(n[r]===\"[\"&&!f(n,r)){if(r>0&&n[r-1]===\"!\")continue;let t=y(n,r);if(t===-1)return r;if(t+1<n.length&&n[t+1]===\"(\"){let i=n.indexOf(\")\",t+2);i!==-1&&(r=i);}}return e},Se=(n,e,r)=>{let t=e>0&&n[e-1]===\"!\",i=t?e-1:e;if(!n.substring(e+1).includes(\"]\")){let l=n.substring(0,i);if(t){let a=n.substring(e+1);return `${l}![${a}](${E})`}if(r===\"text-only\"){let a=pn(n,e);return n.substring(0,a)+n.substring(a+1)}return `${n}](streamdown:incomplete-link)`}if(y(n,e)===-1){let l=n.substring(0,i);if(t){let a=n.substring(e+1);return `${l}![${a}](${E})`}if(r===\"text-only\"){let a=pn(n,e);return n.substring(0,a)+n.substring(a+1)}return `${n}](streamdown:incomplete-link)`}return null},Oe=(n,e)=>{let r=n.lastIndexOf(\"](\");if(r!==-1&&!f(n,r)){let t=Ee(n,r,e);if(t!==null)return t}for(let t=n.lastIndexOf(\"[\");t!==-1;t=t===0?-1:n.lastIndexOf(\"[\",t-1))if(!f(n,t)){let i=Se(n,t,e);if(i!==null)return i}return n},Te=32,D=(n,e=\"protocol\")=>{let r=n;for(let t=0;t<Te;t+=1){let i=Oe(r,e);if(i.length>=r.length)return i;r=i;}return r};var Me=/^-{1,2}$/,Ce=/^[\\s]*-{1,2}[\\s]+$/,Le=/^={1,2}$/,Pe=/^[\\s]*={1,2}[\\s]+$/,bn=n=>{if(!n||typeof n!=\"string\")return n;let e=n.lastIndexOf(`\n`);if(e===-1)return n;let r=n.substring(e+1),t=n.substring(0,e),i=r.trim();if(Me.test(i)&&!r.match(Ce)){let s=t.split(`\n`).at(-1);if(s&&s.trim().length>0)return `${n}\\u200B`}if(Le.test(i)&&!r.match(Pe)){let s=t.split(`\n`).at(-1);if(s&&s.trim().length>0)return `${n}\\u200B`}return n};var _e=/([\\p{L}\\p{N}_])~(?!~)(?=[\\p{L}\\p{N}_])/gu,kn=n=>!n||typeof n!=\"string\"||!n.includes(\"~\")?n:n.replace(_e,(e,r,t)=>{let i=t+r.length;return f(n,i)?e:`${r}\\\\~`});var In=n=>I(n,\"~\"),An=n=>{let e=p(n,j);if(e){let r=e[2];if(!r||b.test(r))return n;let t=n.lastIndexOf(e[1]);if(f(n,t)||h(n,t))return n;if(In(n)%2===1)return `${n}~~`}else {let r=p(n,V);if(r){let t=n.lastIndexOf(r[0].slice(0,2));if(f(n,t)||h(n,t))return n;if(In(n)%2===1)return `${n}~`}}return n};var B=n=>n!==false,Re=n=>n===true,d={SINGLE_TILDE:0,COMPARISON_OPERATORS:5,HTML_TAGS:10,SETEXT_HEADINGS:15,LINKS:20,BOLD_ITALIC:30,BOLD:35,ITALIC_DOUBLE_UNDERSCORE:40,ITALIC_SINGLE_ASTERISK:41,ITALIC_SINGLE_UNDERSCORE:42,INLINE_CODE:50,STRIKETHROUGH:60,KATEX:70,INLINE_KATEX:75,DEFAULT:100},Ne=[{handler:{name:\"singleTilde\",handle:kn,priority:d.SINGLE_TILDE},optionKey:\"singleTilde\"},{handler:{name:\"comparisonOperators\",handle:Y,priority:d.COMPARISON_OPERATORS},optionKey:\"comparisonOperators\"},{handler:{name:\"htmlTags\",handle:gn,priority:d.HTML_TAGS},optionKey:\"htmlTags\"},{handler:{name:\"setextHeadings\",handle:bn,priority:d.SETEXT_HEADINGS},optionKey:\"setextHeadings\"},{handler:{name:\"links\",handle:D,priority:d.LINKS},optionKey:\"links\",earlyReturn:n=>n.endsWith(\"](streamdown:incomplete-link)\")||n.endsWith(`](${E})`)},{handler:{name:\"boldItalic\",handle:fn,priority:d.BOLD_ITALIC},optionKey:\"boldItalic\"},{handler:{name:\"bold\",handle:sn,priority:d.BOLD},optionKey:\"bold\"},{handler:{name:\"italicDoubleUnderscore\",handle:ln,priority:d.ITALIC_DOUBLE_UNDERSCORE},optionKey:\"italic\"},{handler:{name:\"italicSingleAsterisk\",handle:an,priority:d.ITALIC_SINGLE_ASTERISK},optionKey:\"italic\"},{handler:{name:\"italicSingleUnderscore\",handle:un,priority:d.ITALIC_SINGLE_UNDERSCORE},optionKey:\"italic\"},{handler:{name:\"inlineCode\",handle:dn,priority:d.INLINE_CODE},optionKey:\"inlineCode\"},{handler:{name:\"strikethrough\",handle:An,priority:d.STRIKETHROUGH},optionKey:\"strikethrough\"},{handler:{name:\"katex\",handle:mn,priority:d.KATEX},optionKey:\"katex\"},{handler:{name:\"inlineKatex\",handle:hn,priority:d.INLINE_KATEX},optionKey:\"inlineKatex\"}],ye=n=>{var r;let e=(r=n==null?void 0:n.linkMode)!=null?r:\"protocol\";return Ne.filter(({handler:t,optionKey:i})=>t.name===\"links\"?B(n==null?void 0:n.links)||B(n==null?void 0:n.images):t.name===\"inlineKatex\"?Re(n==null?void 0:n.inlineKatex):B(n==null?void 0:n[i])).map(({handler:t,earlyReturn:i})=>t.name===\"links\"?{handler:P(L({},t),{handle:o=>D(o,e)}),earlyReturn:e===\"protocol\"?i:void 0}:{handler:t,earlyReturn:i})},$e=(n,e)=>{var s;if(!n||typeof n!=\"string\")return n;let r=n.endsWith(\" \")&&!n.endsWith(\" \")?n.slice(0,-1):n,t=ye(e),i=((s=e==null?void 0:e.handlers)!=null?s:[]).map(l=>{var a;return {handler:P(L({},l),{priority:(a=l.priority)!=null?a:d.DEFAULT}),earlyReturn:void 0}}),o=[...t,...i].sort((l,a)=>{var u,S;return ((u=l.handler.priority)!=null?u:0)-((S=a.handler.priority)!=null?S:0)});try{for(let{handler:l,earlyReturn:a}of o)if(r=l.handle(r),a!=null&&a(r))return r;return r.endsWith(\" \")&&!r.endsWith(\" \")?r.slice(0,-1):r}finally{K();}},Or=$e;export{E as INCOMPLETE_IMAGE_PLACEHOLDER,Or as default,jn as isWithinCodeBlock,Jn as isWithinLinkOrImageUrl,$ as isWithinMathBlock,m as isWordChar};","/**\n * marked v18.1.1 - a markdown parser\n * Copyright (c) 2018-2026, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction B(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var y=B();function V(a){y=a}var M={exec:()=>null};function D(a){let e=[];return t=>{let n=Math.max(0,Math.min(3,t-1)),i=e[n];return i||(i=a(n),e[n]=i),i}}function h(a,e=\"\"){let t=typeof a==\"string\"?a:a.source,n={replace:(i,r)=>{let o=typeof r==\"string\"?r:r.source;return o=o.replace(x.caret,\"$1\"),t=t.replace(i,o),n},getRegex:()=>new RegExp(t,e)};return n}var ze=((a=\"\")=>{try{return!!new RegExp(\"(?<=1)(?<!1)\"+a)}catch{return!1}})(),x={codeRemoveIndent:/^(?: {0,3}\\t| {1,4})/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \\t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,leadingSpaceTab:/^[ \\t]+/,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,numericCharacterReference:/&#(?:(\\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/,numericCharacterReferenceOrAmpersand:/&#(?:(\\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:a=>new RegExp(`^( {0,3}${a})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:D(a=>new RegExp(`^ {0,${a}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`)),hrRegex:D(a=>new RegExp(`^ {0,${a}}((?:-[ \t]*){3,}|(?:_[ \t]*){3,}|(?:\\\\*[ \t]*){3,})(?:\\\\n+|$)`)),fencesBeginRegex:D(a=>new RegExp(`^ {0,${a}}(?:\\`\\`\\`|~~~)`)),headingBeginRegex:D(a=>new RegExp(`^ {0,${a}}#`)),htmlBeginRegex:D(a=>new RegExp(`^ {0,${a}}(?:</?(?:${Q})(?: +|$|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\\\s>]|$)|!--)|<\\\\?|<![A-Za-z]|<!\\\\[CDATA\\\\[)`,\"i\")),blockquoteBeginRegex:D(a=>new RegExp(`^ {0,${a}}>`))},Ee=/^(?:[ \\t]*(?:\\n|$))+/,Me=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Ce=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,N=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Ie=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,Y=/ {0,3}(?:[*+-]|\\d{1,9}[.)])/,fe=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |fences|blockquote|heading|hr|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,me=h(fe).replace(/bull/g,Y).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Be=h(fe).replace(/bull/g,Y).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),ee=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \\t]+\\n)[^\\n]+)*)/,De=/^[^\\n]+/,te=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,qe=h(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",te).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Ze=h(/^(bull)([ \\t][^\\n]*?)?(?:\\n|$)/).replace(/bull/g,Y).getRegex(),Q=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",ne=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,ve=h(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n*|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>[^\\\\n]*\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>[^\\\\n]*\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>[^\\\\n]*\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!(?:script|pre|style|textarea)(?![a-z0-9-]))([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</[a-z][a-z0-9-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",ne).replace(\"tag\",Q).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),xe=a=>h(ee).replace(\"hr\",N).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",a).replace(\"html\",\" {0,3}(?:</?(?:tag)(?: +|\\\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\\\s>]|$)|!--)|<\\\\?|<![A-Za-z]|<!\\\\[CDATA\\\\[)\").replace(\"tag\",Q).getRegex(),He=xe(/ {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]/),Ge=xe(/ {0,3}(?:[*+-]|\\d{1,9}[.)])(?:[ \\t]|\\n|$)/),Ne=h(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",Ge).getRegex(),re={blockquote:Ne,code:Me,def:qe,fences:Ce,heading:Ie,hr:N,html:ve,lheading:me,list:Ze,newline:Ee,paragraph:He,table:M,text:De},de=h(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",N).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\" {0,3}(?:</?(?:tag)(?: +|\\\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\\\s>]|$)|!--)|<\\\\?|<![A-Za-z]|<!\\\\[CDATA\\\\[)\").replace(\"tag\",Q).getRegex(),Qe={...re,lheading:Be,table:de,paragraph:h(ee).replace(\"hr\",N).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",de).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]+[^ \\\\t\\\\n]\").replace(\"html\",\" {0,3}(?:</?(?:tag)(?: +|\\\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\\\s>]|$)|!--)|<\\\\?|<![A-Za-z]|<!\\\\[CDATA\\\\[)\").replace(\"tag\",Q).getRegex()},je={...re,html:h(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",ne).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:M,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:h(ee).replace(\"hr\",N).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",me).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Fe=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ue=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,be=/^( {2,}|\\\\)\\n(?!\\s*$)[ \\t]*/,Ke=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,S=/[\\p{P}\\p{S}]/u,q=/[\\s\\p{P}\\p{S}]/u,j=/[^\\s\\p{P}\\p{S}]/u,Xe=h(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,q).getRegex(),We=/[\\p{Pi}\\p{Ps}\"']/u,Re=/(?!~)[\\p{P}\\p{S}]/u,Ve=/(?!~)[\\s\\p{P}\\p{S}]/u,Je=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Ye=h(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",ze?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),Te=/^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/,et=h(Te,\"u\").replace(/punct/g,S).getRegex(),tt=h(Te,\"u\").replace(/punct/g,Re).getRegex(),nt=/^(?:\\*+(?:((?!\\*)(?!openQuote)punct)|([^\\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\\s_]))?/,rt=h(nt,\"u\").replace(/openQuote/g,We).replace(/punct/g,S).getRegex(),Oe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",st=h(Oe,\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),it=h(Oe,\"gu\").replace(/notPunctSpace/g,Je).replace(/punctSpace/g,Ve).replace(/punct/g,Re).getRegex(),ot=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)[\\\\s](\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|(?:(?!\\\\*)punct|notPunctSpace)(\\\\*+)(?!\\\\*)(?=notPunctSpace)\",at=h(ot,\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),lt=h(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),ut=\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\\\s](_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)\",pt=h(ut,\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),ct=h(/^~~?(?:((?!~)punct)|[^\\s~])/,\"u\").replace(/punct/g,S).getRegex(),ht=\"^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)\",dt=h(ht,\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),kt=h(/\\\\(punct)/,\"gu\").replace(/punct/g,S).getRegex(),gt=h(/(`+)(?:[^`]|[^`][\\s\\S]*?[^`])\\1(?!`)|`+|\\\\(punct)/,\"gu\").replace(/punct/g,S).getRegex(),ft=h(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),mt=h(ne).replace(\"(?:-->|$)\",\"-->\").getRegex(),xt=h(\"^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",mt).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),we=/\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]/,K=h(/(?:\\[(?:brackets|\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/).replace(\"brackets\",we).getRegex(),bt=h(/^!?\\[(label)\\]\\([ \\t\\n]*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?[ \\t\\n]*\\)/).replace(\"label\",K).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]+|(?=\\))/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),Rt=h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",K).replace(\"ref\",te).getRegex(),Tt=h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",te).getRegex(),ke=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\]){1,999}/,Ot=h(/(?:[^\\[\\]\\\\`]*(?:\\[(?:brackets|\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\]))){0,999}?[^\\[\\]\\\\`]*?/).replace(\"brackets\",we).getRegex(),wt=h(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",Ot).replace(\"ref\",ke).getRegex()).replace(\"nolink\",h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",ke).getRegex()).getRegex(),ge=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Pt=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\\w-])/,yt=h(/(?:mailto:email|xmpp:email(?:\\/[A-Za-z0-9@.]+)?)/).replace(/email/g,Pt).getRegex(),se={_backpedal:M,anyPunctuation:kt,anyPunctuationOutsideCode:gt,autolink:ft,blockSkip:Ye,br:be,code:Ue,del:M,delLDelim:M,delRDelim:M,emStrongLDelim:et,emStrongRDelimAst:st,emStrongRDelimUnd:lt,escape:Fe,link:bt,nolink:Tt,punctuation:Xe,reflink:Rt,reflinkSearch:wt,tag:xt,text:Ke,url:M},St={...se,emStrongLDelim:rt,emStrongRDelimAst:at,emStrongRDelimUnd:pt,link:h(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",K).getRegex(),reflink:h(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",K).getRegex()},J={...se,emStrongRDelimAst:it,emStrongLDelim:tt,delLDelim:ct,delRDelim:dt,url:h(/^emailProtocol|^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"emailProtocol\",yt).replace(\"protocol\",ge).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:h(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))))/).replace(\"protocol\",ge).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},_t={...J,br:h(be).replace(\"{2,}\",\"*\").getRegex(),text:h(J.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},F={normal:re,gfm:Qe,pedantic:je},Z={normal:se,gfm:J,breaks:_t,pedantic:St};var $t={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},Pe=a=>$t[a];function w(a,e){if(e){if(x.escapeTest.test(a))return a.replace(x.escapeReplace,Pe)}else if(x.escapeTestNoEncode.test(a))return a.replace(x.escapeReplaceNoEncode,Pe);return a}function ye(a){return x.numericCharacterReference.test(a)?a.replace(x.numericCharacterReferenceOrAmpersand,(e,t,n)=>{if(t===void 0&&n===void 0)return\"&amp;\";let i=t===void 0?Number.parseInt(n,16):Number.parseInt(t,10);return i===0||i>1114111||i>=55296&&i<=57343?\"\\uFFFD\":i===38?\"&amp;\":String.fromCodePoint(i)}):a}function ie(a){try{a=encodeURI(a).replace(x.percentDecode,\"%\")}catch{return null}return a}function oe(a,e){let t=a.replace(x.findPipe,(r,o,s)=>{let l=!1,u=o;for(;--u>=0&&s[u]===\"\\\\\";)l=!l;return l?\"|\":\" |\"}),n=t.split(x.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;i<n.length;i++)n[i]=n[i].trim().replace(x.slashPipe,\"|\");return n}function A(a,e,t){let n=a.length;if(n===0)return\"\";let i=0;for(;i<n;){let r=a.charAt(n-i-1);if(r===e&&!t)i++;else if(r!==e&&t)i++;else break}return a.slice(0,n-i)}function ae(a){let e=a.split(`\n`),t=e.length-1;for(;t>=0&&x.blankLine.test(e[t]);)t--;return e.length-t<=2?a:e.slice(0,t+1).join(`\n`)}function v(a){return a.trim().toLowerCase().toUpperCase().toLowerCase()}function le(a,e){if(a.indexOf(e[0])===-1&&a.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<a.length;n++)if(a[n]===\"\\\\\")n++;else if(a[n]===e[0])t++;else if(a[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function X(a,e=0){let t=e,n=\"\";for(let i of a)if(i===\"\t\"){let r=4-t%4;n+=\" \".repeat(r),t+=r}else n+=i,t++;return n}function Se(a,e,t,n,i){let r=e.href,o=e.title||null,s=a[1].replace(i.other.outputLinkReplace,\"$1\"),l=a[0].charAt(0)===\"!\",u=n.state.inLink,c=n.state.linkEmitted,p=n.state.inRawBlock;n.state.inLink=!0,n.state.linkEmitted=!1;let d=n.inlineTokens(s),g=n.state.linkEmitted;if(n.state.linkEmitted=c,n.state.inLink=u,!l){if(g){n.state.inRawBlock=p;return}n.state.linkEmitted=!0}return{type:l?\"image\":\"link\",raw:t,href:r,title:o,text:s,tokens:d}}function Lt(a,e,t){let n=a.match(t.other.indentCodeCompensation);if(n===null)return e;let i=n[1];return e.split(`\n`).map(r=>{let o=r.match(t.other.beginningSpace);if(o===null)return r;let[s]=o;return r.slice(Math.min(s.length,i.length))}).join(`\n`)}function _e(a,e,t,n){if(!e.includes(\"<\"))return!1;for(let i=0;i<e.length;i++){if(e[i]===\"\\\\\"){i++;continue}if(e[i]===\"`\"){let s=n.inline.code.exec(e.slice(i));if(s){i+=s[0].length-1;continue}}if(e[i]!==\"<\")continue;let r=a.slice(t+i),o=n.inline.tag.exec(r)||n.inline.autolink.exec(r);if(o){if(o[0].length>e.length-i)return!0;i+=o[0].length-1}}return!1}var _=class{options;rules;lexer;constructor(e){this.options=e||y}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:ae(t[0]),i=n.replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:n,codeBlockStyle:\"indented\",text:i}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],i=Lt(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:i}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let i=A(n,\"#\");(this.options.pedantic||!i||this.rules.other.endingSpaceTabChar.test(i))&&(n=i.trim())}return{type:\"heading\",raw:A(t[0],`\n`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:A(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=A(t[0],`\n`).split(`\n`),i=\"\",r=\"\",o=[];for(;n.length>0;){let s=!1,l=[],u;for(u=0;u<n.length;u++)if(this.rules.other.blockquoteStart.test(n[u]))l.push(n[u]),s=!0;else if(!s)l.push(n[u]);else break;n=n.slice(u);let c=l.join(`\n`),p=c.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");i=i?`${i}\n${c}`:c,r=r?`${r}\n${p}`:p;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(p,o,!0),this.lexer.state.top=d,n.length===0)break;let g=o.at(-1);if(g?.type===\"code\"||g?.type===\"heading\"||g?.type===\"hr\"||g?.type===\"html\")break;if(g?.type===\"blockquote\"){let k=g,P=n.join(`\n`),R=k.raw+`\n`+P.replace(this.rules.other.blockquoteSetextReplace2,\"\"),m=this.blockquote(R);o[o.length-1]=m;let E=R.substring(m.raw.length).replace(/^\\n/,\"\"),b=E?E.split(`\n`).length:0,H=b?n.slice(0,-b):n;H.length>0&&(i=`${i}\n${H.join(`\n`)}`),r=r.substring(0,r.length-k.text.length)+m.text;break}else if(g?.type===\"list\"){let k=g,P=k.raw+`\n`+n.join(`\n`),R=this.list(P);o[o.length-1]=R,i=i.substring(0,i.length-g.raw.length)+R.raw,r=r.substring(0,r.length-k.raw.length)+R.raw,n=P.substring(o.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:i,tokens:o,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=e,i=()=>n.length-e.length,r=t[1].trim(),o=r.length>1,s={type:\"list\",raw:\"\",ordered:o,start:o?+r.slice(0,-1):\"\",loose:!1,items:[]};r=o?`\\\\d{1,9}\\\\${r.slice(-1)}`:`\\\\${r}`,this.options.pedantic&&(r=o?r:\"[*+-]\");let l=this.rules.other.listItemRegex(r),u=!1;for(;e;){let p=!1,d=\"\";if(!(t=l.exec(e))||this.rules.block.hr.test(e))break;let g=i();e=e.substring(t[0].length);let k=t[2].split(`\n`,1)[0],P=t[1].length,R=this.options.pedantic?X(k,P):k.replace(this.rules.other.leadingSpaceTab,W=>X(W,P)),m=e.split(`\n`,1)[0],E=!R.trim(),b=0;if(this.options.pedantic?(b=2,d=R.trimStart()):E?b=P+1:(b=R.search(this.rules.other.nonSpaceChar),b=b>4?1:b,d=R.slice(b),b+=P),E&&this.rules.other.blankLine.test(m)&&(e=e.substring(m.length+1),p=!0),!p){let W=this.rules.other.nextBulletRegex(b),ue=this.rules.other.hrRegex(b),pe=this.rules.other.fencesBeginRegex(b),ce=this.rules.other.headingBeginRegex(b),$e=this.rules.other.htmlBeginRegex(b),Le=this.rules.other.blockquoteBeginRegex(b);for(;e;){let he=e.split(`\n`,1)[0],G;if(m=he,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting,\" \"),G=m):G=m.replace(this.rules.other.leadingSpaceTab,Ae=>X(Ae)),pe.test(m)||ce.test(m)||$e.test(m)||Le.test(m)||W.test(m)||ue.test(m))break;if(G.search(this.rules.other.nonSpaceChar)>=b||!m.trim())d+=`\n`+G.slice(b);else{if(E||R.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||pe.test(R)||ce.test(R)||ue.test(R))break;d+=`\n`+m}E=!m.trim(),e=e.substring(he.length+1),R=G.slice(b)}}let H=n.slice(g,i());s.loose||(u?s.loose=!0:this.rules.other.doubleBlankLine.test(H)&&(u=!0)),s.items.push({type:\"list_item\",raw:H,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]})}let c=s.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;s.raw=n.slice(0,i()).trimEnd();for(let p of s.items)if(this.lexer.state.top=!1,p.tokens=this.lexer.blockTokens(p.text,[]),!s.loose){let d=p.tokens.filter(k=>k.type===\"space\"),g=d.length>0&&d.some(k=>this.rules.other.anyLine.test(k.raw));s.loose=g}for(let p of s.items){let d=p.tokens[0];if(p.task&&(d?.type===\"text\"||d?.type===\"paragraph\")){p.text=p.text.replace(this.rules.other.listReplaceTask,\"\"),d.raw=d.raw.replace(this.rules.other.listReplaceTask,\"\"),d.text=d.text.replace(this.rules.other.listReplaceTask,\"\");for(let k=this.lexer.inlineQueue.length-1;k>=0;k--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[k].src)){this.lexer.inlineQueue[k].src=this.lexer.inlineQueue[k].src.replace(this.rules.other.listReplaceTask,\"\");break}let g=this.rules.other.listTaskCheckbox.exec(p.raw);if(g){let k={type:\"checkbox\",raw:g[0]+\" \",checked:g[0]!==\"[ ]\"};p.checked=k.checked,s.loose?p.tokens[0]&&[\"paragraph\",\"text\"].includes(p.tokens[0].type)&&\"tokens\"in p.tokens[0]&&p.tokens[0].tokens?(p.tokens[0].raw=k.raw+p.tokens[0].raw,p.tokens[0].text=k.raw+p.tokens[0].text,p.tokens[0].tokens.unshift(k)):p.tokens.unshift({type:\"paragraph\",raw:k.raw,text:k.raw,tokens:[k]}):p.tokens.unshift(k)}}else p.task&&(p.task=!1)}if(s.loose)for(let p of s.items){p.loose=!0;for(let d of p.tokens)d.type===\"text\"&&(d.type=\"paragraph\")}return s}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=ae(t[0]);return{type:\"html\",block:!0,raw:n,pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){if(!this.rules.other.startAngleBracket.test(t[2])&&le(t[2],\"()\")!==-1)return;let n=v(t[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:A(t[0],`\n`),href:i,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=oe(t[1]),i=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],o={type:\"table\",raw:A(t[0],`\n`),header:[],align:[],rows:[]};if(n.length===i.length){for(let s of i)this.rules.other.tableAlignRight.test(s)?o.align.push(\"right\"):this.rules.other.tableAlignCenter.test(s)?o.align.push(\"center\"):this.rules.other.tableAlignLeft.test(s)?o.align.push(\"left\"):o.align.push(null);for(let s=0;s<n.length;s++)o.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:o.align[s]});for(let s of r)o.rows.push(oe(s,o.header.length).map((l,u)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:o.align[u]})));return o}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:\"heading\",raw:A(t[0],`\n`),depth:t[2].charAt(0)===\"=\"?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){if(this.lexer.state.linkParenPossible===!1)return;let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)===\"!\"?2:1;if(!this.options.pedantic&&_e(e,t[1],n,this.rules))return;let i=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(i)){if(!this.rules.other.endAngleBracket.test(i))return;let s=A(i.slice(0,-1),\"\\\\\");if((i.length-s.length)%2===0)return}else{let s=le(t[2],\"()\");if(s===-2)return;if(s>-1){let u=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,u).trim(),t[3]=\"\"}}let r=t[2],o=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],o=s[3])}else o=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(i)?r=r.slice(1):r=r.slice(1,-1)),Se(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:o&&o.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=n[0].charAt(0)===\"!\"?2:1;if(!this.options.pedantic&&_e(e,n[1],i,this.rules))return;let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),o=t[v(r)];if(!o){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return Se(n,o,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let i=this.rules.inline.emStrongLDelim.exec(e);if(!i||!i[1]&&!i[2]&&!i[3]&&!i[4]||i[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(i[1]||i[3]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let o=[...i[0]].length-1,s,l,u=o,c=0,p=i[0][0],d=n===p,g=p===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(g.lastIndex=0,t=t.slice(-1*e.length+o);(i=g.exec(t))!==null;){if(s=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!s)continue;if(l=[...s].length,i[3]||i[4]){u+=l;continue}else if(i[5]||i[6]){if(o%3&&!((o+l)%3)){c+=l;continue}if(d)break}if(u-=l,u>0)continue;l=Math.min(l,l+u+c);let k=[...i[0]][0].length,P=e.slice(0,o+i.index+k+l);if(Math.min(o,l)%2){let m=P.slice(1,-1);return{type:\"em\",raw:P,text:m,tokens:this.lexer.inlineTokens(m)}}let R=P.slice(2,-2);return{type:\"strong\",raw:P,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),i=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&r&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e,t,n=\"\"){let i=this.rules.inline.delLDelim.exec(e);if(!i)return;if(!(i[1]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let o=[...i[0]].length-1,s,l,u=o,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+o);(i=c.exec(t))!==null;){if(s=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!s||(l=[...s].length,l!==o))continue;if(i[3]||i[4]){u+=l;continue}if(u-=l,u>0)continue;l=Math.min(l,l+u);let p=[...i[0]][0].length,d=e.slice(0,o+i.index+p+l),g=d.slice(o,-o);return{type:\"del\",raw:d,text:g,tokens:this.lexer.inlineTokens(g)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,i;return t[2]===\"@\"?(n=t[1],i=\"mailto:\"+n):(n=t[1],i=n),{type:\"link\",raw:t[0],text:n,href:i,autolink:!0,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,i;if(t[2]===\"@\")n=t[0],i=\"mailto:\"+n;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(r!==t[0]);n=t[0],t[1]===\"www.\"?i=\"http://\"+t[0]:i=t[0]}return{type:\"link\",raw:t[0],text:n,href:i,autolink:!0,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:n?t[0]:ye(t[0]),escaped:n}}}};var T=class a{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||y,this.options.tokenizer=this.options.tokenizer||new _,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,linkParenPossible:!0,top:!0};let t={other:x,block:F.normal,inline:Z.normal};this.options.pedantic?(t.block=F.pedantic,t.inline=Z.pedantic):this.options.gfm&&(t.block=F.gfm,this.options.breaks?t.inline=Z.breaks:t.inline=Z.gfm),this.tokenizer.rules=t}static get rules(){return{block:F,inline:Z}}static lex(e,t){return new a(t).lex(e)}static lexInline(e,t){return new a(t).inlineTokens(e)}lex(e){e=e.replace(x.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(x.tabCharGlobal,\" \").replace(x.spaceLine,\"\"));let i=1/0;for(;e;){if(e.length<i)i=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let o=e;if(this.options.extensions?.startBlock){let s=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(c=>{u=c.call({lexer:this},l),typeof u==\"number\"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(o=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(o))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=o.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes(\"[\"))return!1;let t=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(n[0])&&e.charAt(n.index-1)!==\"!\")return!0;for(let n of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let i=n[0],r=i.lastIndexOf(\"[\");if(!(i.charAt(0)===\"!\"||!Object.hasOwn(this.tokens.links,v(i.slice(r+1,-1))))&&!(r>1&&this.linkInText(i.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=this.state.linkParenPossible;this.state.linkParenPossible=n&&e.includes(\")\");try{return this.#e(e,t)}finally{this.state.linkParenPossible=n}}#e(e,t){let n=e;if(this.tokens.links&&e.includes(\"[\")){let s=this.tokenizer.rules.inline.reflinkSearch,l=u=>{let c=u.lastIndexOf(\"[\");if(!Object.hasOwn(this.tokens.links,v(u.slice(c+1,-1))))return u;if(c>1&&u.charAt(0)!==\"!\"){let p=u.slice(1,c-1);if(this.linkInText(p))return\"[\"+p.replace(s,l)+\"][\"+\"a\".repeat(u.length-c-2)+\"]\"}return\"[\"+\"a\".repeat(u.length-2)+\"]\"};n=n.replace(s,l)}n=n.replace(this.tokenizer.rules.inline.anyPunctuationOutsideCode,(s,l,u)=>u?\"+\".repeat(s.length):l?l+s.slice(l.length,-l.length).replace(/`/g,\"+\")+l:s),n=n.replace(this.tokenizer.rules.inline.blockSkip,(s,l,u)=>{let c=u?u.length:0;return s.slice(0,c)+\"[\"+\"a\".repeat(s.length-c-2)+\"]\"}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let i=!1,r=\"\",o=1/0;for(;e;){if(e.length<o)o=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}i||(r=\"\"),i=!1;let s;if(this.options.extensions?.inline?.some(u=>(s=u.call({lexer:this},e,t))?(e=e.substring(s.raw.length),t.push(s),!0):!1))continue;if(s=this.tokenizer.escape(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.tag(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.link(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(s.raw.length);let u=t.at(-1);s.type===\"text\"&&u?.type===\"text\"?(u.raw+=s.raw,u.text+=s.text):t.push(s);continue}if(s=this.tokenizer.emStrong(e,n,r)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.codespan(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.br(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.del(e,n,r)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.autolink(e)){e=e.substring(s.raw.length),t.push(s);continue}if(!this.state.inLink&&(s=this.tokenizer.url(e))){e=e.substring(s.raw.length),t.push(s);continue}let l=e;if(this.options.extensions?.startInline){let u=1/0,c=e.slice(1),p;this.options.extensions.startInline.forEach(d=>{p=d.call({lexer:this},c),typeof p==\"number\"&&p>=0&&(u=Math.min(u,p))}),u<1/0&&u>=0&&(l=e.substring(0,u+1))}if(s=this.tokenizer.inlineText(l)){e=e.substring(s.raw.length),s.raw.slice(-1)!==\"_\"&&(r=s.raw.slice(-1)),i=!0;let u=t.at(-1);u?.type===\"text\"?(u.raw+=s.raw,u.text+=s.text):t.push(s);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=\"Infinite loop on byte: \"+e;if(this.options.silent)console.error(t);else throw new Error(t)}};var $=class{options;parser;constructor(e){this.options=e||y}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let i=(t||\"\").match(x.notSpaceStart)?.[0],r=e?e.replace(x.endingNewline,\"\")+`\n`:\"\";return i?'<pre><code class=\"language-'+w(i)+'\">'+(n?r:w(r,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?r:w(r,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,i=\"\";for(let s=0;s<e.items.length;s++){let l=e.items[s];i+=this.listitem(l)}let r=t?\"ol\":\"ul\",o=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+r+o+`>\n`+i+\"</\"+r+`>\n`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let r=0;r<e.header.length;r++)n+=this.tablecell(e.header[r]);t+=this.tablerow({text:n});let i=\"\";for(let r=0;r<e.rows.length;r++){let o=e.rows[r];n=\"\";for(let s=0;s<o.length;s++)n+=this.tablecell(o[s]);i+=this.tablerow({text:n})}return i&&(i=`<tbody>${i}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+i+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:i,autolink:r}){let o=r?w(n,!0):this.parser.parseInline(i),s=ie(e);if(s===null)return o;e=w(s,r);let l='<a href=\"'+e+'\"';return t&&(l+=' title=\"'+w(t)+'\"'),l+=\">\"+o+\"</a>\",l}image({href:e,title:t,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let r=ie(e);if(r===null)return w(n);e=r;let o=`<img src=\"${w(e)}\" alt=\"${w(n)}\"`;return t&&(o+=` title=\"${w(t)}\"`),o+=\">\",o}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var z=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var O=class a{options;renderer;textRenderer;constructor(e){this.options=e||y,this.options.renderer=this.options.renderer||new $,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new z}static parse(e,t){return new a(t).parse(e)}static parseInline(e,t){return new a(t).parseInline(e)}parse(e){this.renderer.parser=this;let t=\"\";for(let n=0;n<e.length;n++){let i=e[n];if(this.options.extensions?.renderers?.[i.type]){let o=i,s=this.options.extensions.renderers[o.type].call({parser:this},o);if(s!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"checkbox\",\"html\",\"def\",\"paragraph\",\"text\"].includes(o.type)){t+=s||\"\";continue}}let r=i;switch(r.type){case\"space\":{t+=this.renderer.space(r);break}case\"hr\":{t+=this.renderer.hr(r);break}case\"heading\":{t+=this.renderer.heading(r);break}case\"code\":{t+=this.renderer.code(r);break}case\"table\":{t+=this.renderer.table(r);break}case\"blockquote\":{t+=this.renderer.blockquote(r);break}case\"list\":{t+=this.renderer.list(r);break}case\"checkbox\":{t+=this.renderer.checkbox(r);break}case\"html\":{t+=this.renderer.html(r);break}case\"def\":{t+=this.renderer.def(r);break}case\"paragraph\":{t+=this.renderer.paragraph(r);break}case\"text\":{t+=this.renderer.text(r);break}default:{let o='Token with \"'+r.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=\"\";for(let i=0;i<e.length;i++){let r=e[i];if(this.options.extensions?.renderers?.[r.type]){let s=this.options.extensions.renderers[r.type].call({parser:this},r);if(s!==!1||![\"escape\",\"html\",\"link\",\"image\",\"checkbox\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(r.type)){n+=s||\"\";continue}}let o=r;switch(o.type){case\"escape\":{n+=t.text(o);break}case\"html\":{n+=t.html(o);break}case\"link\":{n+=t.link(o);break}case\"image\":{n+=t.image(o);break}case\"checkbox\":{n+=t.checkbox(o);break}case\"strong\":{n+=t.strong(o);break}case\"em\":{n+=t.em(o);break}case\"codespan\":{n+=t.codespan(o);break}case\"br\":{n+=t.br(o);break}case\"del\":{n+=t.del(o);break}case\"text\":{n+=t.text(o);break}default:{let s='Token with \"'+o.type+'\" type was not found.';if(this.options.silent)return console.error(s),\"\";throw new Error(s)}}}return n}};var L=class{options;block;constructor(e){this.options=e||y}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?T.lex:T.lexInline}provideParser(e=this.block){return e?O.parse:O.parseInline}};function C(a,e){if(Array.isArray(e))for(let t=0;t<e.length;t++)a.push(e[t]);else a.push(e)}var U=class{defaults=B();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=O;Renderer=$;TextRenderer=z;Lexer=T;Tokenizer=_;Hooks=L;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let i of e)switch(C(n,t.call(this,i)),i.type){case\"table\":{let r=i;for(let o of r.header)C(n,this.walkTokens(o.tokens,t));for(let o of r.rows)for(let s of o)C(n,this.walkTokens(s.tokens,t));break}case\"list\":{let r=i;C(n,this.walkTokens(r.items,t));break}default:{let r=i;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(o=>{let s=r[o].flat(1/0);C(n,this.walkTokens(s,t))}):r.tokens&&C(n,this.walkTokens(r.tokens,t))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error(\"extension name required\");if(\"renderer\"in r){let o=t.renderers[r.name];o?t.renderers[r.name]=function(...s){let l=r.renderer.apply(this,s);return l===!1&&(l=o.apply(this,s)),l}:t.renderers[r.name]=r.renderer}if(\"tokenizer\"in r){if(!r.level||r.level!==\"block\"&&r.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let o=t[r.level];o?o.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level===\"block\"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level===\"inline\"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}\"childTokens\"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),i.extensions=t),n.renderer){let r=this.defaults.renderer||new $(this.defaults);for(let o in n.renderer){if(!(o in r))throw new Error(`renderer '${o}' does not exist`);if([\"options\",\"parser\"].includes(o))continue;let s=o,l=n.renderer[s],u=r[s];r[s]=(...c)=>{let p=l.apply(r,c);return p===!1&&(p=u.apply(r,c)),p||\"\"}}i.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new _(this.defaults);for(let o in n.tokenizer){if(!(o in r))throw new Error(`tokenizer '${o}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(o))continue;let s=o,l=n.tokenizer[s],u=r[s];r[s]=(...c)=>{let p=l.apply(r,c);return p===!1&&(p=u.apply(r,c)),p}}i.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new L;for(let o in n.hooks){if(!(o in r))throw new Error(`hook '${o}' does not exist`);if([\"options\",\"block\"].includes(o))continue;let s=o,l=n.hooks[s],u=r[s];L.passThroughHooks.has(o)?r[s]=c=>{if(this.defaults.async&&L.passThroughHooksRespectAsync.has(o))return(async()=>{let d=await l.call(r,c);return u.call(r,d)})();let p=l.call(r,c);return u.call(r,p)}:r[s]=(...c)=>{if(this.defaults.async)return(async()=>{let d=await l.apply(r,c);return d===!1&&(d=await u.apply(r,c)),d})();let p=l.apply(r,c);return p===!1&&(p=u.apply(r,c)),p}}i.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,o=n.walkTokens;i.walkTokens=function(s){let l=[];return l.push(o.call(this,s)),r&&C(l,r.call(this,s)),l}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return T.lex(e,t??this.defaults)}parser(e,t){return O.parse(e,t??this.defaults)}parseMarkdown(e){return(n,i)=>{let r={...i},o={...this.defaults,...r},s=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&r.async===!1)return s(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return s(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return s(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(o.hooks&&(o.hooks.options=o,o.hooks.block=e),o.async)return(async()=>{let l=o.hooks?await o.hooks.preprocess(n):n,c=await(o.hooks?await o.hooks.provideLexer(e):e?T.lex:T.lexInline)(l,o),p=o.hooks?await o.hooks.processAllTokens(c):c;o.walkTokens&&await Promise.all(this.walkTokens(p,o.walkTokens));let g=await(o.hooks?await o.hooks.provideParser(e):e?O.parse:O.parseInline)(p,o);return o.hooks?await o.hooks.postprocess(g):g})().catch(s);try{o.hooks&&(n=o.hooks.preprocess(n));let u=(o.hooks?o.hooks.provideLexer(e):e?T.lex:T.lexInline)(n,o);o.hooks&&(u=o.hooks.processAllTokens(u)),o.walkTokens&&this.walkTokens(u,o.walkTokens);let p=(o.hooks?o.hooks.provideParser(e):e?O.parse:O.parseInline)(u,o);return o.hooks&&(p=o.hooks.postprocess(p)),p}catch(l){return s(l)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let i=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(i):i}if(t)return Promise.reject(n);throw n}}};var I=new U;function f(a,e){return I.parse(a,e)}f.options=f.setOptions=function(a){return I.setOptions(a),f.defaults=I.defaults,V(f.defaults),f};f.getDefaults=B;f.defaults=y;function At(...a){return I.use(...a),f.defaults=I.defaults,V(f.defaults),f}f.use=At;f.walkTokens=function(a,e){return I.walkTokens(a,e)};f.parseInline=I.parseInline;f.Parser=O;f.parser=O.parse;f.Renderer=$;f.TextRenderer=z;f.Lexer=T;f.lexer=T.lex;f.Tokenizer=_;f.Hooks=L;f.parse=f;var Rn=f.options,Tn=f.setOptions,On=f.walkTokens,wn=f.parseInline,Pn=f,yn=O.parse,Sn=T.lex;export{L as Hooks,T as Lexer,U as Marked,O as Parser,$ as Renderer,z as TextRenderer,_ as Tokenizer,y as defaults,B as getDefaults,Sn as lexer,f as marked,Rn as options,Pn as parse,wn as parseInline,yn as parser,Tn as setOptions,At as use,On as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","/*! @license DOMPurify 3.4.17 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.17/LICENSE */\nfunction _OverloadYield(e, d) {\n\tthis.v = e, this.k = d;\n}\nfunction _arrayLikeToArray(r, a) {\n\t(null == a || a > r.length) && (a = r.length);\n\tfor (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n\treturn n;\n}\nfunction _arrayWithHoles(r) {\n\tif (Array.isArray(r)) return r;\n}\nfunction _iterableToArrayLimit(r, l) {\n\tvar t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n\tif (null != t) {\n\t\tvar e, n, i, u, a = [], f = !0, o = !1;\n\t\ttry {\n\t\t\tif (i = (t = t.call(r)).next, 0 === l) {\n\t\t\t\tif (Object(t) !== t) return;\n\t\t\t\tf = !1;\n\t\t\t} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n\t\t} catch (r) {\n\t\t\to = !0, n = r;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n\t\t\t} finally {\n\t\t\t\tif (o) throw n;\n\t\t\t}\n\t\t}\n\t\treturn a;\n\t}\n}\nfunction _nonIterableRest() {\n\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\nfunction _slicedToArray(r, e) {\n\treturn _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(r, a) {\n\tif (r) {\n\t\tif (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n\t\tvar t = {}.toString.call(r).slice(8, -1);\n\t\treturn \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n\t}\n}\nfunction AsyncGenerator(e) {\n\tvar t, n;\n\tfunction resume(t, n) {\n\t\ttry {\n\t\t\tvar r = e[t](n), o = r.value, u = o instanceof _OverloadYield;\n\t\t\tPromise.resolve(u ? o.v : o).then(function(n) {\n\t\t\t\tif (u) {\n\t\t\t\t\tvar i = \"return\" === t && o.k ? t : \"next\";\n\t\t\t\t\tif (!o.k || n.done) return resume(i, n);\n\t\t\t\t\tn = e[i](n).value;\n\t\t\t\t}\n\t\t\t\tsettle(!!r.done, n);\n\t\t\t}, function(e) {\n\t\t\t\tresume(\"throw\", e);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tsettle(2, e);\n\t\t}\n\t}\n\tfunction settle(e, r) {\n\t\t2 === e ? t.reject(r) : t.resolve({\n\t\t\tvalue: r,\n\t\t\tdone: e\n\t\t}), (t = t.next) ? resume(t.key, t.arg) : n = null;\n\t}\n\tthis._invoke = function(e, r) {\n\t\treturn new Promise(function(o, u) {\n\t\t\tvar i = {\n\t\t\t\tkey: e,\n\t\t\t\targ: r,\n\t\t\t\tresolve: o,\n\t\t\t\treject: u,\n\t\t\t\tnext: null\n\t\t\t};\n\t\t\tn ? n = n.next = i : (t = n = i, resume(e, r));\n\t\t});\n\t}, \"function\" != typeof e.return && (this.return = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function() {\n\treturn this;\n}, AsyncGenerator.prototype.next = function(e) {\n\treturn this._invoke(\"next\", e);\n}, AsyncGenerator.prototype.throw = function(e) {\n\treturn this._invoke(\"throw\", e);\n}, AsyncGenerator.prototype.return = function(e) {\n\treturn this._invoke(\"return\", e);\n};\nconst entries = Object.entries;\nconst setPrototypeOf = Object.setPrototypeOf;\nconst isFrozen = Object.isFrozen;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nlet freeze = Object.freeze;\nlet seal = Object.seal;\nlet create = Object.create;\nlet _ref = typeof Reflect !== \"undefined\" && Reflect;\nlet apply = _ref.apply;\nlet construct = _ref.construct;\nif (!freeze) freeze = function freeze(x) {\n\treturn x;\n};\nif (!seal) seal = function seal(x) {\n\treturn x;\n};\nif (!apply) apply = function apply(func, thisArg) {\n\tfor (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];\n\treturn func.apply(thisArg, args);\n};\nif (!construct) construct = function construct(Func) {\n\tfor (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2];\n\treturn new Func(...args);\n};\nconst arrayForEach = unapply(Array.prototype.forEach);\nArray.prototype.indexOf;\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\nconst setCreate = unconstruct(Set);\nconst setAdd = unapply(Set.prototype.add);\nconst setHas = unapply(Set.prototype.has);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString = typeof BigInt === \"undefined\" ? null : unapply(BigInt.prototype.toString);\nconst symbolToString = typeof Symbol === \"undefined\" ? null : unapply(Symbol.prototype.toString);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n* Creates a new function that calls the given function with a specified thisArg and arguments.\n*\n* @param func - The function to be wrapped and called.\n* @returns A new function that calls the given function with a specified thisArg and arguments.\n*/\nfunction unapply(func) {\n\treturn function(thisArg) {\n\t\tif (thisArg instanceof RegExp) thisArg.lastIndex = 0;\n\t\tfor (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3];\n\t\treturn apply(func, thisArg, args);\n\t};\n}\n/**\n* Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n*\n* @param func - The constructor function to be wrapped and called.\n* @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n*/\nfunction unconstruct(Func) {\n\treturn function() {\n\t\tfor (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];\n\t\treturn construct(Func, args);\n\t};\n}\n/**\n* Add properties to a lookup table\n*\n* @param set - The set to which elements will be added.\n* @param array - The array containing elements to be added to the set.\n* @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n* @returns The modified set with added elements.\n*/\nfunction addToSet(set, array) {\n\tlet transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;\n\tif (setPrototypeOf) setPrototypeOf(set, null);\n\tif (!arrayIsArray(array)) return set;\n\tlet l = array.length;\n\twhile (l--) {\n\t\tlet element = array[l];\n\t\tif (typeof element === \"string\") {\n\t\t\tconst lcElement = transformCaseFunc(element);\n\t\t\tif (lcElement !== element) {\n\t\t\t\tif (!isFrozen(array)) array[l] = lcElement;\n\t\t\t\telement = lcElement;\n\t\t\t}\n\t\t}\n\t\tset[element] = true;\n\t}\n\treturn set;\n}\n/**\n* Clean up an array to harden against CSPP\n*\n* @param array - The array to be cleaned.\n* @returns The cleaned version of the array\n*/\nfunction cleanArray(array) {\n\tfor (let index = 0; index < array.length; index++) if (!objectHasOwnProperty(array, index)) array[index] = null;\n\treturn array;\n}\n/**\n* Shallow clone an object\n*\n* @param object - The object to be cloned.\n* @returns A new object that copies the original.\n*/\nfunction clone(object) {\n\tconst newObject = create(null);\n\tfor (const _ref2 of entries(object)) {\n\t\tvar _ref3 = _slicedToArray(_ref2, 2);\n\t\tconst property = _ref3[0];\n\t\tconst value = _ref3[1];\n\t\tif (objectHasOwnProperty(object, property)) {\n\t\t\tif (arrayIsArray(value)) newObject[property] = cleanArray(value);\n\t\t\telse if (value && typeof value === \"object\" && value.constructor === Object) newObject[property] = clone(value);\n\t\t\telse newObject[property] = value;\n\t\t}\n\t}\n\treturn newObject;\n}\n/**\n* Convert non-node values into strings without depending on direct property access.\n*\n* @param value - The value to stringify.\n* @returns A string representation of the provided value.\n*/\nfunction stringifyValue(value) {\n\tswitch (typeof value) {\n\t\tcase \"string\": return value;\n\t\tcase \"number\": return numberToString(value);\n\t\tcase \"boolean\": return booleanToString(value);\n\t\tcase \"bigint\": return bigintToString ? bigintToString(value) : \"0\";\n\t\tcase \"symbol\": return symbolToString ? symbolToString(value) : \"Symbol()\";\n\t\tcase \"undefined\": return objectToString(value);\n\t\tcase \"function\":\n\t\tcase \"object\": {\n\t\t\tif (value === null) return objectToString(value);\n\t\t\tconst valueAsRecord = value;\n\t\t\tconst valueToString = lookupGetter(valueAsRecord, \"toString\");\n\t\t\tif (typeof valueToString === \"function\") {\n\t\t\t\tconst stringified = valueToString(valueAsRecord);\n\t\t\t\treturn typeof stringified === \"string\" ? stringified : objectToString(stringified);\n\t\t\t}\n\t\t\treturn objectToString(value);\n\t\t}\n\t\tdefault: return objectToString(value);\n\t}\n}\n/**\n* This method automatically checks if the prop is function or getter and behaves accordingly.\n*\n* @param object - The object to look up the getter function in its prototype chain.\n* @param prop - The property name for which to find the getter function.\n* @returns The getter function found in the prototype chain or a fallback function.\n*/\nfunction lookupGetter(object, prop) {\n\twhile (object !== null) {\n\t\tconst desc = getOwnPropertyDescriptor(object, prop);\n\t\tif (desc) {\n\t\t\tif (desc.get) return unapply(desc.get);\n\t\t\tif (typeof desc.value === \"function\") return unapply(desc.value);\n\t\t}\n\t\tobject = getPrototypeOf(object);\n\t}\n\tfunction fallbackValue() {\n\t\treturn null;\n\t}\n\treturn fallbackValue;\n}\n/**\n* Like lookupGetter, but for accessor properties only, and returns null\n* instead of a null-returning fallback when no getter exists on the chain.\n* Lets a caller fall back to a direct property read in environments that\n* lack the getter, where a fallback returning null would be indistinguishable\n* from a legitimate null value (e.g. namespaceURI of a no-namespace element).\n*\n* @param object - The object (usually a prototype) to start the lookup at.\n* @param prop - The accessor property name.\n* @returns The unapplied getter, or null if none was found.\n*/\nfunction lookupAccessor(object, prop) {\n\twhile (object !== null) {\n\t\tconst desc = getOwnPropertyDescriptor(object, prop);\n\t\tif (desc) return desc.get ? unapply(desc.get) : null;\n\t\tobject = getPrototypeOf(object);\n\t}\n\treturn null;\n}\nfunction isRegex(value) {\n\ttry {\n\t\tregExpTest(value, \"\");\n\t\treturn true;\n\t} catch (_unused) {\n\t\treturn false;\n\t}\n}\nconst html$1 = freeze([\n\t\"a\",\n\t\"abbr\",\n\t\"acronym\",\n\t\"address\",\n\t\"area\",\n\t\"article\",\n\t\"aside\",\n\t\"audio\",\n\t\"b\",\n\t\"bdi\",\n\t\"bdo\",\n\t\"big\",\n\t\"blink\",\n\t\"blockquote\",\n\t\"body\",\n\t\"br\",\n\t\"button\",\n\t\"canvas\",\n\t\"caption\",\n\t\"center\",\n\t\"cite\",\n\t\"code\",\n\t\"col\",\n\t\"colgroup\",\n\t\"content\",\n\t\"data\",\n\t\"datalist\",\n\t\"dd\",\n\t\"decorator\",\n\t\"del\",\n\t\"details\",\n\t\"dfn\",\n\t\"dialog\",\n\t\"dir\",\n\t\"div\",\n\t\"dl\",\n\t\"dt\",\n\t\"element\",\n\t\"em\",\n\t\"fieldset\",\n\t\"figcaption\",\n\t\"figure\",\n\t\"font\",\n\t\"footer\",\n\t\"form\",\n\t\"h1\",\n\t\"h2\",\n\t\"h3\",\n\t\"h4\",\n\t\"h5\",\n\t\"h6\",\n\t\"head\",\n\t\"header\",\n\t\"hgroup\",\n\t\"hr\",\n\t\"html\",\n\t\"i\",\n\t\"img\",\n\t\"input\",\n\t\"ins\",\n\t\"kbd\",\n\t\"label\",\n\t\"legend\",\n\t\"li\",\n\t\"main\",\n\t\"map\",\n\t\"mark\",\n\t\"marquee\",\n\t\"menu\",\n\t\"menuitem\",\n\t\"meter\",\n\t\"nav\",\n\t\"nobr\",\n\t\"ol\",\n\t\"optgroup\",\n\t\"option\",\n\t\"output\",\n\t\"p\",\n\t\"picture\",\n\t\"pre\",\n\t\"progress\",\n\t\"q\",\n\t\"rp\",\n\t\"rt\",\n\t\"ruby\",\n\t\"s\",\n\t\"samp\",\n\t\"search\",\n\t\"section\",\n\t\"select\",\n\t\"shadow\",\n\t\"slot\",\n\t\"small\",\n\t\"source\",\n\t\"spacer\",\n\t\"span\",\n\t\"strike\",\n\t\"strong\",\n\t\"style\",\n\t\"sub\",\n\t\"summary\",\n\t\"sup\",\n\t\"table\",\n\t\"tbody\",\n\t\"td\",\n\t\"template\",\n\t\"textarea\",\n\t\"tfoot\",\n\t\"th\",\n\t\"thead\",\n\t\"time\",\n\t\"tr\",\n\t\"track\",\n\t\"tt\",\n\t\"u\",\n\t\"ul\",\n\t\"var\",\n\t\"video\",\n\t\"wbr\"\n]);\nconst svg$1 = freeze([\n\t\"svg\",\n\t\"a\",\n\t\"altglyph\",\n\t\"altglyphdef\",\n\t\"altglyphitem\",\n\t\"animatecolor\",\n\t\"animatemotion\",\n\t\"animatetransform\",\n\t\"circle\",\n\t\"clippath\",\n\t\"defs\",\n\t\"desc\",\n\t\"ellipse\",\n\t\"enterkeyhint\",\n\t\"exportparts\",\n\t\"filter\",\n\t\"font\",\n\t\"g\",\n\t\"glyph\",\n\t\"glyphref\",\n\t\"hkern\",\n\t\"image\",\n\t\"inputmode\",\n\t\"line\",\n\t\"lineargradient\",\n\t\"marker\",\n\t\"mask\",\n\t\"metadata\",\n\t\"mpath\",\n\t\"part\",\n\t\"path\",\n\t\"pattern\",\n\t\"polygon\",\n\t\"polyline\",\n\t\"radialgradient\",\n\t\"rect\",\n\t\"stop\",\n\t\"style\",\n\t\"switch\",\n\t\"symbol\",\n\t\"text\",\n\t\"textpath\",\n\t\"title\",\n\t\"tref\",\n\t\"tspan\",\n\t\"view\",\n\t\"vkern\"\n]);\nconst svgFilters = freeze([\n\t\"feBlend\",\n\t\"feColorMatrix\",\n\t\"feComponentTransfer\",\n\t\"feComposite\",\n\t\"feConvolveMatrix\",\n\t\"feDiffuseLighting\",\n\t\"feDisplacementMap\",\n\t\"feDistantLight\",\n\t\"feDropShadow\",\n\t\"feFlood\",\n\t\"feFuncA\",\n\t\"feFuncB\",\n\t\"feFuncG\",\n\t\"feFuncR\",\n\t\"feGaussianBlur\",\n\t\"feImage\",\n\t\"feMerge\",\n\t\"feMergeNode\",\n\t\"feMorphology\",\n\t\"feOffset\",\n\t\"fePointLight\",\n\t\"feSpecularLighting\",\n\t\"feSpotLight\",\n\t\"feTile\",\n\t\"feTurbulence\"\n]);\nconst svgDisallowed = freeze([\n\t\"animate\",\n\t\"color-profile\",\n\t\"cursor\",\n\t\"discard\",\n\t\"font-face\",\n\t\"font-face-format\",\n\t\"font-face-name\",\n\t\"font-face-src\",\n\t\"font-face-uri\",\n\t\"foreignobject\",\n\t\"hatch\",\n\t\"hatchpath\",\n\t\"mesh\",\n\t\"meshgradient\",\n\t\"meshpatch\",\n\t\"meshrow\",\n\t\"missing-glyph\",\n\t\"script\",\n\t\"set\",\n\t\"solidcolor\",\n\t\"unknown\",\n\t\"use\"\n]);\nconst mathMl$1 = freeze([\n\t\"math\",\n\t\"menclose\",\n\t\"merror\",\n\t\"mfenced\",\n\t\"mfrac\",\n\t\"mglyph\",\n\t\"mi\",\n\t\"mlabeledtr\",\n\t\"mmultiscripts\",\n\t\"mn\",\n\t\"mo\",\n\t\"mover\",\n\t\"mpadded\",\n\t\"mphantom\",\n\t\"mroot\",\n\t\"mrow\",\n\t\"ms\",\n\t\"mspace\",\n\t\"msqrt\",\n\t\"mstyle\",\n\t\"msub\",\n\t\"msup\",\n\t\"msubsup\",\n\t\"mtable\",\n\t\"mtd\",\n\t\"mtext\",\n\t\"mtr\",\n\t\"munder\",\n\t\"munderover\",\n\t\"mprescripts\"\n]);\nconst mathMlDisallowed = freeze([\n\t\"maction\",\n\t\"maligngroup\",\n\t\"malignmark\",\n\t\"mlongdiv\",\n\t\"mscarries\",\n\t\"mscarry\",\n\t\"msgroup\",\n\t\"mstack\",\n\t\"msline\",\n\t\"msrow\",\n\t\"semantics\",\n\t\"annotation\",\n\t\"annotation-xml\",\n\t\"mprescripts\",\n\t\"none\"\n]);\nconst text = freeze([\"#text\"]);\nconst html = freeze([\n\t\"accept\",\n\t\"action\",\n\t\"align\",\n\t\"alt\",\n\t\"autocapitalize\",\n\t\"autocomplete\",\n\t\"autopictureinpicture\",\n\t\"autoplay\",\n\t\"background\",\n\t\"bgcolor\",\n\t\"border\",\n\t\"capture\",\n\t\"cellpadding\",\n\t\"cellspacing\",\n\t\"checked\",\n\t\"cite\",\n\t\"class\",\n\t\"clear\",\n\t\"color\",\n\t\"cols\",\n\t\"colspan\",\n\t\"command\",\n\t\"commandfor\",\n\t\"controls\",\n\t\"controlslist\",\n\t\"coords\",\n\t\"crossorigin\",\n\t\"datetime\",\n\t\"decoding\",\n\t\"default\",\n\t\"dir\",\n\t\"disabled\",\n\t\"disablepictureinpicture\",\n\t\"disableremoteplayback\",\n\t\"download\",\n\t\"draggable\",\n\t\"enctype\",\n\t\"enterkeyhint\",\n\t\"exportparts\",\n\t\"face\",\n\t\"for\",\n\t\"headers\",\n\t\"height\",\n\t\"hidden\",\n\t\"high\",\n\t\"href\",\n\t\"hreflang\",\n\t\"id\",\n\t\"inert\",\n\t\"inputmode\",\n\t\"integrity\",\n\t\"ismap\",\n\t\"kind\",\n\t\"label\",\n\t\"lang\",\n\t\"list\",\n\t\"loading\",\n\t\"loop\",\n\t\"low\",\n\t\"max\",\n\t\"maxlength\",\n\t\"media\",\n\t\"method\",\n\t\"min\",\n\t\"minlength\",\n\t\"multiple\",\n\t\"muted\",\n\t\"name\",\n\t\"nonce\",\n\t\"noshade\",\n\t\"novalidate\",\n\t\"nowrap\",\n\t\"open\",\n\t\"optimum\",\n\t\"part\",\n\t\"pattern\",\n\t\"placeholder\",\n\t\"playsinline\",\n\t\"popover\",\n\t\"popovertarget\",\n\t\"popovertargetaction\",\n\t\"poster\",\n\t\"preload\",\n\t\"pubdate\",\n\t\"radiogroup\",\n\t\"readonly\",\n\t\"rel\",\n\t\"required\",\n\t\"rev\",\n\t\"reversed\",\n\t\"role\",\n\t\"rows\",\n\t\"rowspan\",\n\t\"spellcheck\",\n\t\"scope\",\n\t\"selected\",\n\t\"shape\",\n\t\"size\",\n\t\"sizes\",\n\t\"slot\",\n\t\"span\",\n\t\"srclang\",\n\t\"start\",\n\t\"src\",\n\t\"srcset\",\n\t\"step\",\n\t\"style\",\n\t\"summary\",\n\t\"tabindex\",\n\t\"title\",\n\t\"translate\",\n\t\"type\",\n\t\"usemap\",\n\t\"valign\",\n\t\"value\",\n\t\"width\",\n\t\"wrap\",\n\t\"xmlns\"\n]);\nconst svg = freeze([\n\t\"accent-height\",\n\t\"accumulate\",\n\t\"additive\",\n\t\"alignment-baseline\",\n\t\"amplitude\",\n\t\"ascent\",\n\t\"attributename\",\n\t\"attributetype\",\n\t\"azimuth\",\n\t\"basefrequency\",\n\t\"baseline-shift\",\n\t\"begin\",\n\t\"bias\",\n\t\"by\",\n\t\"class\",\n\t\"clip\",\n\t\"clippathunits\",\n\t\"clip-path\",\n\t\"clip-rule\",\n\t\"color\",\n\t\"color-interpolation\",\n\t\"color-interpolation-filters\",\n\t\"color-profile\",\n\t\"color-rendering\",\n\t\"cx\",\n\t\"cy\",\n\t\"d\",\n\t\"dx\",\n\t\"dy\",\n\t\"diffuseconstant\",\n\t\"direction\",\n\t\"display\",\n\t\"divisor\",\n\t\"dominant-baseline\",\n\t\"dur\",\n\t\"edgemode\",\n\t\"elevation\",\n\t\"end\",\n\t\"exponent\",\n\t\"fill\",\n\t\"fill-opacity\",\n\t\"fill-rule\",\n\t\"filter\",\n\t\"filterunits\",\n\t\"flood-color\",\n\t\"flood-opacity\",\n\t\"font-family\",\n\t\"font-size\",\n\t\"font-size-adjust\",\n\t\"font-stretch\",\n\t\"font-style\",\n\t\"font-variant\",\n\t\"font-weight\",\n\t\"fx\",\n\t\"fy\",\n\t\"g1\",\n\t\"g2\",\n\t\"glyph-name\",\n\t\"glyphref\",\n\t\"gradientunits\",\n\t\"gradienttransform\",\n\t\"height\",\n\t\"href\",\n\t\"id\",\n\t\"image-rendering\",\n\t\"in\",\n\t\"in2\",\n\t\"intercept\",\n\t\"k\",\n\t\"k1\",\n\t\"k2\",\n\t\"k3\",\n\t\"k4\",\n\t\"kerning\",\n\t\"keypoints\",\n\t\"keysplines\",\n\t\"keytimes\",\n\t\"lang\",\n\t\"lengthadjust\",\n\t\"letter-spacing\",\n\t\"kernelmatrix\",\n\t\"kernelunitlength\",\n\t\"lighting-color\",\n\t\"local\",\n\t\"marker-end\",\n\t\"marker-mid\",\n\t\"marker-start\",\n\t\"markerheight\",\n\t\"markerunits\",\n\t\"markerwidth\",\n\t\"maskcontentunits\",\n\t\"maskunits\",\n\t\"max\",\n\t\"mask\",\n\t\"mask-type\",\n\t\"media\",\n\t\"method\",\n\t\"mode\",\n\t\"min\",\n\t\"name\",\n\t\"numoctaves\",\n\t\"offset\",\n\t\"operator\",\n\t\"opacity\",\n\t\"order\",\n\t\"orient\",\n\t\"orientation\",\n\t\"origin\",\n\t\"overflow\",\n\t\"paint-order\",\n\t\"path\",\n\t\"pathlength\",\n\t\"patterncontentunits\",\n\t\"patterntransform\",\n\t\"patternunits\",\n\t\"pointer-events\",\n\t\"points\",\n\t\"preservealpha\",\n\t\"preserveaspectratio\",\n\t\"primitiveunits\",\n\t\"r\",\n\t\"rx\",\n\t\"ry\",\n\t\"radius\",\n\t\"refx\",\n\t\"refy\",\n\t\"repeatcount\",\n\t\"repeatdur\",\n\t\"restart\",\n\t\"result\",\n\t\"rotate\",\n\t\"scale\",\n\t\"seed\",\n\t\"shape-rendering\",\n\t\"slope\",\n\t\"specularconstant\",\n\t\"specularexponent\",\n\t\"spreadmethod\",\n\t\"startoffset\",\n\t\"stddeviation\",\n\t\"stitchtiles\",\n\t\"stop-color\",\n\t\"stop-opacity\",\n\t\"stroke-dasharray\",\n\t\"stroke-dashoffset\",\n\t\"stroke-linecap\",\n\t\"stroke-linejoin\",\n\t\"stroke-miterlimit\",\n\t\"stroke-opacity\",\n\t\"stroke\",\n\t\"stroke-width\",\n\t\"style\",\n\t\"surfacescale\",\n\t\"systemlanguage\",\n\t\"tabindex\",\n\t\"tablevalues\",\n\t\"targetx\",\n\t\"targety\",\n\t\"transform\",\n\t\"transform-origin\",\n\t\"text-anchor\",\n\t\"text-decoration\",\n\t\"text-orientation\",\n\t\"text-rendering\",\n\t\"textlength\",\n\t\"type\",\n\t\"u1\",\n\t\"u2\",\n\t\"unicode\",\n\t\"values\",\n\t\"vector-effect\",\n\t\"viewbox\",\n\t\"visibility\",\n\t\"version\",\n\t\"vert-adv-y\",\n\t\"vert-origin-x\",\n\t\"vert-origin-y\",\n\t\"width\",\n\t\"word-spacing\",\n\t\"wrap\",\n\t\"writing-mode\",\n\t\"xchannelselector\",\n\t\"ychannelselector\",\n\t\"x\",\n\t\"x1\",\n\t\"x2\",\n\t\"xmlns\",\n\t\"y\",\n\t\"y1\",\n\t\"y2\",\n\t\"z\",\n\t\"zoomandpan\"\n]);\nconst mathMl = freeze([\n\t\"accent\",\n\t\"accentunder\",\n\t\"align\",\n\t\"bevelled\",\n\t\"close\",\n\t\"columnalign\",\n\t\"columnlines\",\n\t\"columnspacing\",\n\t\"columnspan\",\n\t\"denomalign\",\n\t\"depth\",\n\t\"dir\",\n\t\"display\",\n\t\"displaystyle\",\n\t\"encoding\",\n\t\"fence\",\n\t\"frame\",\n\t\"height\",\n\t\"href\",\n\t\"id\",\n\t\"largeop\",\n\t\"length\",\n\t\"linethickness\",\n\t\"lquote\",\n\t\"lspace\",\n\t\"mathbackground\",\n\t\"mathcolor\",\n\t\"mathsize\",\n\t\"mathvariant\",\n\t\"maxsize\",\n\t\"minsize\",\n\t\"movablelimits\",\n\t\"notation\",\n\t\"numalign\",\n\t\"open\",\n\t\"rowalign\",\n\t\"rowlines\",\n\t\"rowspacing\",\n\t\"rowspan\",\n\t\"rspace\",\n\t\"rquote\",\n\t\"scriptlevel\",\n\t\"scriptminsize\",\n\t\"scriptsizemultiplier\",\n\t\"selection\",\n\t\"separator\",\n\t\"separators\",\n\t\"stretchy\",\n\t\"subscriptshift\",\n\t\"supscriptshift\",\n\t\"symmetric\",\n\t\"voffset\",\n\t\"width\",\n\t\"xmlns\"\n]);\nconst xml = freeze([\n\t\"xlink:href\",\n\t\"xml:id\",\n\t\"xlink:title\",\n\t\"xml:space\",\n\t\"xmlns:xlink\"\n]);\nconst MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nconst ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nconst TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/);\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\nconst ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nconst COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nconst FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nconst SELF_CLOSING_TAG = seal(/\\/>/i);\nconst NODE_TYPE = {\n\telement: 1,\n\tattribute: 2,\n\ttext: 3,\n\tcdataSection: 4,\n\tentityReference: 5,\n\tentityNode: 6,\n\tprocessingInstruction: 7,\n\tcomment: 8,\n\tdocument: 9,\n\tdocumentType: 10,\n\tdocumentFragment: 11,\n\tnotation: 12\n};\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, [\n\t\"style\",\n\t\"script\",\n\t\"xmp\",\n\t\"iframe\",\n\t\"noembed\",\n\t\"noframes\",\n\t\"plaintext\",\n\t\"noscript\"\n]));\nconst getGlobal = function getGlobal() {\n\treturn typeof window === \"undefined\" ? null : window;\n};\n/**\n* Creates a no-op policy for internal use only.\n* Don't export this function outside this module!\n* @param trustedTypes The policy factory.\n* @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n* @return The policy created (or null, if Trusted Types\n* are not supported or creating the policy failed).\n*/\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n\tif (typeof trustedTypes !== \"object\" || typeof trustedTypes.createPolicy !== \"function\") return null;\n\tlet suffix = null;\n\tconst ATTR_NAME = \"data-tt-policy-suffix\";\n\tif (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) suffix = purifyHostElement.getAttribute(ATTR_NAME);\n\tconst policyName = \"dompurify\" + (suffix ? \"#\" + suffix : \"\");\n\ttry {\n\t\treturn trustedTypes.createPolicy(policyName, {\n\t\t\tcreateHTML(html) {\n\t\t\t\treturn html;\n\t\t\t},\n\t\t\tcreateScriptURL(scriptUrl) {\n\t\t\t\treturn scriptUrl;\n\t\t\t}\n\t\t});\n\t} catch (_) {\n\t\tconsole.warn(\"TrustedTypes policy \" + policyName + \" could not be created.\");\n\t\treturn null;\n\t}\n};\nconst _createHooksMap = function _createHooksMap() {\n\treturn {\n\t\tafterSanitizeAttributes: [],\n\t\tafterSanitizeElements: [],\n\t\tafterSanitizeShadowDOM: [],\n\t\tbeforeSanitizeAttributes: [],\n\t\tbeforeSanitizeElements: [],\n\t\tbeforeSanitizeShadowDOM: [],\n\t\tuponSanitizeAttribute: [],\n\t\tuponSanitizeElement: [],\n\t\tuponSanitizeShadowNode: []\n\t};\n};\n/**\n* Resolve a set-valued configuration option: a fresh set built from\n* cfg[key] when it is an own array property (seeded with a clone of\n* options.base when given, case-normalized via options.transform),\n* the fallback set otherwise.\n*\n* @param cfg the cloned, prototype-free configuration object\n* @param key the configuration property to read\n* @param fallback the set to use when the option is absent or not an array\n* @param options transform and optional base set to merge into\n* @returns the resolved set\n*/\nconst _resolveSetOption = function _resolveSetOption(cfg, key, fallback, options) {\n\treturn objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key]) ? addToSet(options.base ? clone(options.base) : {}, cfg[key], options.transform) : fallback;\n};\n/**\n* Resolve an object-valued configuration option: a prototype-free clone\n* of cfg[key] when it is an own, truthy object property, else a fresh\n* fallback built by makeFallback (fresh on every parse, so a previous\n* parse can never leak state into the next one).\n*\n* @param cfg the cloned, prototype-free configuration object\n* @param key the configuration property to read\n* @param makeFallback builds the fallback value when the option is absent\n* @returns the resolved object\n*/\nconst _resolveObjectOption = function _resolveObjectOption(cfg, key, makeFallback) {\n\tconst value = objectHasOwnProperty(cfg, key) ? cfg[key] : void 0;\n\treturn value && typeof value === \"object\" ? clone(value) : makeFallback();\n};\nfunction createDOMPurify() {\n\tlet window = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();\n\tconst DOMPurify = (root) => createDOMPurify(root);\n\tDOMPurify.version = \"3.4.17\";\n\tDOMPurify.removed = [];\n\tif (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n\t\tDOMPurify.isSupported = false;\n\t\treturn DOMPurify;\n\t}\n\tlet document = window.document;\n\tconst originalDocument = document;\n\tconst currentScript = originalDocument.currentScript;\n\twindow.DocumentFragment;\n\tconst HTMLTemplateElement = window.HTMLTemplateElement, Node = window.Node, Element = window.Element, NodeFilter = window.NodeFilter;\n\twindow.NamedNodeMap === void 0 && (window.NamedNodeMap || window.MozNamedAttrMap);\n\twindow.HTMLFormElement;\n\tconst DOMParser = window.DOMParser, trustedTypes = window.trustedTypes;\n\tconst ElementPrototype = Element.prototype;\n\tconst cloneNode = lookupGetter(ElementPrototype, \"cloneNode\");\n\tconst remove = lookupGetter(ElementPrototype, \"remove\");\n\tconst removeAttributeNode = lookupGetter(ElementPrototype, \"removeAttributeNode\");\n\tconst getNextSibling = lookupGetter(ElementPrototype, \"nextSibling\");\n\tconst getChildNodes = lookupGetter(ElementPrototype, \"childNodes\");\n\tconst getParentNode = lookupGetter(ElementPrototype, \"parentNode\");\n\tconst getShadowRoot = lookupGetter(ElementPrototype, \"shadowRoot\");\n\tconst getAttributes = lookupGetter(ElementPrototype, \"attributes\");\n\tconst getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, \"nodeType\") : null;\n\tconst getNodeName = Node && Node.prototype ? lookupGetter(Node.prototype, \"nodeName\") : null;\n\tconst getOwnerDocument = Node && Node.prototype ? lookupGetter(Node.prototype, \"ownerDocument\") : null;\n\tconst _readNodeType = function _readNodeType(node) {\n\t\treturn getNodeType ? getNodeType(node) : node.nodeType;\n\t};\n\tconst _readNodeName = function _readNodeName(node) {\n\t\treturn getNodeName ? getNodeName(node) : node.nodeName;\n\t};\n\tconst getNamespaceURI = lookupAccessor(ElementPrototype, \"namespaceURI\");\n\tconst _readNamespaceURI = function _readNamespaceURI(element) {\n\t\treturn getNamespaceURI ? getNamespaceURI(element) : element.namespaceURI;\n\t};\n\tif (typeof HTMLTemplateElement === \"function\") {\n\t\tconst template = document.createElement(\"template\");\n\t\tif (template.content && template.content.ownerDocument) document = template.content.ownerDocument;\n\t}\n\tlet trustedTypesPolicy;\n\tlet emptyHTML = \"\";\n\tlet defaultTrustedTypesPolicy;\n\tlet defaultTrustedTypesPolicyResolved = false;\n\tlet IN_TRUSTED_TYPES_POLICY = 0;\n\tconst _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy() {\n\t\tif (IN_TRUSTED_TYPES_POLICY > 0) throw typeErrorCreate(\"A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the \\\"DOMPurify and Trusted Types\\\" section of the README.\");\n\t};\n\tconst _createTrustedHTML = function _createTrustedHTML(html) {\n\t\t_assertNotInTrustedTypesPolicy();\n\t\tIN_TRUSTED_TYPES_POLICY++;\n\t\ttry {\n\t\t\treturn trustedTypesPolicy.createHTML(html);\n\t\t} finally {\n\t\t\tIN_TRUSTED_TYPES_POLICY--;\n\t\t}\n\t};\n\tconst _createTrustedScriptURL = function _createTrustedScriptURL(scriptUrl) {\n\t\t_assertNotInTrustedTypesPolicy();\n\t\tIN_TRUSTED_TYPES_POLICY++;\n\t\ttry {\n\t\t\treturn trustedTypesPolicy.createScriptURL(scriptUrl);\n\t\t} finally {\n\t\t\tIN_TRUSTED_TYPES_POLICY--;\n\t\t}\n\t};\n\tconst _getDefaultTrustedTypesPolicy = function _getDefaultTrustedTypesPolicy() {\n\t\tif (!defaultTrustedTypesPolicyResolved) {\n\t\t\tdefaultTrustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n\t\t\tdefaultTrustedTypesPolicyResolved = true;\n\t\t}\n\t\treturn defaultTrustedTypesPolicy;\n\t};\n\tconst _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;\n\tconst importNode = originalDocument.importNode;\n\tlet hooks = _createHooksMap();\n\t/**\n\t* Expose whether this browser supports running the full DOMPurify.\n\t*/\n\tDOMPurify.isSupported = typeof entries === \"function\" && typeof getParentNode === \"function\" && implementation && implementation.createHTMLDocument !== void 0;\n\tconst MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE, CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;\n\tlet IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n\t/**\n\t* We consider the elements and attributes below to be safe. Ideally\n\t* don't add any new ones but feel free to remove unwanted ones.\n\t*/\n\tlet ALLOWED_TAGS = null;\n\tconst DEFAULT_ALLOWED_TAGS = addToSet({}, [\n\t\t...html$1,\n\t\t...svg$1,\n\t\t...svgFilters,\n\t\t...mathMl$1,\n\t\t...text\n\t]);\n\tlet ALLOWED_ATTR = null;\n\tconst DEFAULT_ALLOWED_ATTR = addToSet({}, [\n\t\t...html,\n\t\t...svg,\n\t\t...mathMl,\n\t\t...xml\n\t]);\n\tlet CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n\t\ttagNameCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tattributeNameCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tallowCustomizedBuiltInElements: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: false\n\t\t}\n\t}));\n\tlet FORBID_TAGS = null;\n\tlet FORBID_ATTR = null;\n\tconst EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n\t\ttagCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tattributeCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t}\n\t}));\n\tlet ALLOW_ARIA_ATTR = true;\n\tlet ALLOW_DATA_ATTR = true;\n\tlet ALLOW_UNKNOWN_PROTOCOLS = false;\n\tlet ALLOW_SELF_CLOSE_IN_ATTR = true;\n\tlet SAFE_FOR_TEMPLATES = false;\n\tlet SAFE_FOR_XML = true;\n\tlet WHOLE_DOCUMENT = false;\n\tlet SET_CONFIG = false;\n\tlet SET_CONFIG_ALLOWED_TAGS = null;\n\tlet SET_CONFIG_ALLOWED_ATTR = null;\n\tlet FORCE_BODY = false;\n\tlet RETURN_DOM = false;\n\tlet RETURN_DOM_FRAGMENT = false;\n\tlet RETURN_TRUSTED_TYPE = false;\n\tlet SANITIZE_DOM = true;\n\tlet SANITIZE_NAMED_PROPS = false;\n\tconst SANITIZE_NAMED_PROPS_PREFIX = \"user-content-\";\n\tlet KEEP_CONTENT = true;\n\tlet IN_PLACE = false;\n\tlet IN_PLACE_VISITED = null;\n\tlet USE_PROFILES = {};\n\tlet FORBID_CONTENTS = null;\n\tconst DEFAULT_FORBID_CONTENTS = addToSet({}, [\n\t\t\"annotation-xml\",\n\t\t\"audio\",\n\t\t\"colgroup\",\n\t\t\"desc\",\n\t\t\"foreignobject\",\n\t\t\"head\",\n\t\t\"iframe\",\n\t\t\"math\",\n\t\t\"mi\",\n\t\t\"mn\",\n\t\t\"mo\",\n\t\t\"ms\",\n\t\t\"mtext\",\n\t\t\"noembed\",\n\t\t\"noframes\",\n\t\t\"noscript\",\n\t\t\"plaintext\",\n\t\t\"script\",\n\t\t\"selectedcontent\",\n\t\t\"style\",\n\t\t\"svg\",\n\t\t\"template\",\n\t\t\"thead\",\n\t\t\"title\",\n\t\t\"video\",\n\t\t\"xmp\"\n\t]);\n\tlet DATA_URI_TAGS = null;\n\tconst DEFAULT_DATA_URI_TAGS = addToSet({}, [\n\t\t\"audio\",\n\t\t\"video\",\n\t\t\"img\",\n\t\t\"source\",\n\t\t\"image\",\n\t\t\"track\"\n\t]);\n\tlet URI_SAFE_ATTRIBUTES = null;\n\tconst DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n\t\t\"alt\",\n\t\t\"class\",\n\t\t\"for\",\n\t\t\"id\",\n\t\t\"label\",\n\t\t\"name\",\n\t\t\"pattern\",\n\t\t\"placeholder\",\n\t\t\"role\",\n\t\t\"summary\",\n\t\t\"title\",\n\t\t\"value\",\n\t\t\"style\",\n\t\t\"xmlns\"\n\t]);\n\tconst MATHML_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n\tconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n\tconst HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n\tlet NAMESPACE = HTML_NAMESPACE;\n\tlet IS_EMPTY_INPUT = false;\n\tlet ALLOWED_NAMESPACES = null;\n\tconst DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [\n\t\tMATHML_NAMESPACE,\n\t\tSVG_NAMESPACE,\n\t\tHTML_NAMESPACE\n\t], stringToString);\n\tconst DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([\n\t\t\"mi\",\n\t\t\"mo\",\n\t\t\"mn\",\n\t\t\"ms\",\n\t\t\"mtext\"\n\t]);\n\tlet MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS);\n\tconst DEFAULT_HTML_INTEGRATION_POINTS = freeze([\"annotation-xml\"]);\n\tlet HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);\n\tconst COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n\t\t\"title\",\n\t\t\"style\",\n\t\t\"font\",\n\t\t\"a\",\n\t\t\"script\"\n\t]);\n\tlet PARSER_MEDIA_TYPE = null;\n\tconst SUPPORTED_PARSER_MEDIA_TYPES = [\"application/xhtml+xml\", \"text/html\"];\n\tconst DEFAULT_PARSER_MEDIA_TYPE = \"text/html\";\n\tlet transformCaseFunc = null;\n\tlet CONFIG = null;\n\tconst formElement = document.createElement(\"form\");\n\tconst isRegexOrFunction = function isRegexOrFunction(testValue) {\n\t\treturn testValue instanceof RegExp || testValue instanceof Function;\n\t};\n\t/**\n\t* _parseConfig\n\t*\n\t* @param cfg optional config literal\n\t*/\n\tconst _parseConfig = function _parseConfig() {\n\t\tlet cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t\tif (CONFIG && CONFIG === cfg) return;\n\t\tif (!cfg || typeof cfg !== \"object\") cfg = {};\n\t\tcfg = clone(cfg);\n\t\tPARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n\t\ttransformCaseFunc = PARSER_MEDIA_TYPE === \"application/xhtml+xml\" ? stringToString : stringToLowerCase;\n\t\tALLOWED_TAGS = _resolveSetOption(cfg, \"ALLOWED_TAGS\", DEFAULT_ALLOWED_TAGS, { transform: transformCaseFunc });\n\t\tALLOWED_ATTR = _resolveSetOption(cfg, \"ALLOWED_ATTR\", DEFAULT_ALLOWED_ATTR, { transform: transformCaseFunc });\n\t\tALLOWED_NAMESPACES = _resolveSetOption(cfg, \"ALLOWED_NAMESPACES\", DEFAULT_ALLOWED_NAMESPACES, { transform: stringToString });\n\t\tURI_SAFE_ATTRIBUTES = _resolveSetOption(cfg, \"ADD_URI_SAFE_ATTR\", DEFAULT_URI_SAFE_ATTRIBUTES, {\n\t\t\ttransform: transformCaseFunc,\n\t\t\tbase: DEFAULT_URI_SAFE_ATTRIBUTES\n\t\t});\n\t\tDATA_URI_TAGS = _resolveSetOption(cfg, \"ADD_DATA_URI_TAGS\", DEFAULT_DATA_URI_TAGS, {\n\t\t\ttransform: transformCaseFunc,\n\t\t\tbase: DEFAULT_DATA_URI_TAGS\n\t\t});\n\t\tFORBID_CONTENTS = _resolveSetOption(cfg, \"FORBID_CONTENTS\", DEFAULT_FORBID_CONTENTS, { transform: transformCaseFunc });\n\t\tFORBID_TAGS = _resolveSetOption(cfg, \"FORBID_TAGS\", clone({}), { transform: transformCaseFunc });\n\t\tFORBID_ATTR = _resolveSetOption(cfg, \"FORBID_ATTR\", clone({}), { transform: transformCaseFunc });\n\t\tUSE_PROFILES = objectHasOwnProperty(cfg, \"USE_PROFILES\") ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === \"object\" ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;\n\t\tALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n\t\tALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n\t\tALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n\t\tALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;\n\t\tSAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n\t\tSAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;\n\t\tWHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n\t\tRETURN_DOM = cfg.RETURN_DOM || false;\n\t\tRETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n\t\tRETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n\t\tFORCE_BODY = cfg.FORCE_BODY || false;\n\t\tSANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n\t\tSANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n\t\tKEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n\t\tIN_PLACE = cfg.IN_PLACE || false;\n\t\tIS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI;\n\t\tNAMESPACE = typeof cfg.NAMESPACE === \"string\" ? cfg.NAMESPACE : HTML_NAMESPACE;\n\t\tMATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(cfg, \"MATHML_TEXT_INTEGRATION_POINTS\", () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS));\n\t\tHTML_INTEGRATION_POINTS = _resolveObjectOption(cfg, \"HTML_INTEGRATION_POINTS\", () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS));\n\t\tconst customElementHandling = _resolveObjectOption(cfg, \"CUSTOM_ELEMENT_HANDLING\", () => create(null));\n\t\tCUSTOM_ELEMENT_HANDLING = create(null);\n\t\tif (objectHasOwnProperty(customElementHandling, \"tagNameCheck\") && isRegexOrFunction(customElementHandling.tagNameCheck)) CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;\n\t\tif (objectHasOwnProperty(customElementHandling, \"attributeNameCheck\") && isRegexOrFunction(customElementHandling.attributeNameCheck)) CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;\n\t\tif (objectHasOwnProperty(customElementHandling, \"allowCustomizedBuiltInElements\") && typeof customElementHandling.allowCustomizedBuiltInElements === \"boolean\") CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;\n\t\tseal(CUSTOM_ELEMENT_HANDLING);\n\t\tif (SAFE_FOR_TEMPLATES) ALLOW_DATA_ATTR = false;\n\t\tif (RETURN_DOM_FRAGMENT) RETURN_DOM = true;\n\t\tif (USE_PROFILES) {\n\t\t\tALLOWED_TAGS = addToSet({}, text);\n\t\t\tALLOWED_ATTR = create(null);\n\t\t\tif (USE_PROFILES.html === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, html$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, html);\n\t\t\t}\n\t\t\tif (USE_PROFILES.svg === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, svg$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, svg);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t\tif (USE_PROFILES.svgFilters === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, svgFilters);\n\t\t\t\taddToSet(ALLOWED_ATTR, svg);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t\tif (USE_PROFILES.mathMl === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, mathMl$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, mathMl);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t}\n\t\tEXTRA_ELEMENT_HANDLING.tagCheck = null;\n\t\tEXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\t\tif (objectHasOwnProperty(cfg, \"ADD_TAGS\")) {\n\t\t\tif (typeof cfg.ADD_TAGS === \"function\") EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n\t\t\telse if (arrayIsArray(cfg.ADD_TAGS)) {\n\t\t\t\tif (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) ALLOWED_TAGS = clone(ALLOWED_TAGS);\n\t\t\t\taddToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n\t\t\t}\n\t\t}\n\t\tif (objectHasOwnProperty(cfg, \"ADD_ATTR\")) {\n\t\t\tif (typeof cfg.ADD_ATTR === \"function\") EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n\t\t\telse if (arrayIsArray(cfg.ADD_ATTR)) {\n\t\t\t\tif (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) ALLOWED_ATTR = clone(ALLOWED_ATTR);\n\t\t\t\taddToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n\t\t\t}\n\t\t}\n\t\tif (objectHasOwnProperty(cfg, \"ADD_FORBID_CONTENTS\") && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {\n\t\t\tif (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) FORBID_CONTENTS = clone(FORBID_CONTENTS);\n\t\t\taddToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n\t\t}\n\t\tif (KEEP_CONTENT) ALLOWED_TAGS[\"#text\"] = true;\n\t\tif (WHOLE_DOCUMENT) addToSet(ALLOWED_TAGS, [\n\t\t\t\"html\",\n\t\t\t\"head\",\n\t\t\t\"body\"\n\t\t]);\n\t\tif (ALLOWED_TAGS.table) {\n\t\t\taddToSet(ALLOWED_TAGS, [\"tbody\"]);\n\t\t\tdelete FORBID_TAGS.tbody;\n\t\t}\n\t\tif (cfg.TRUSTED_TYPES_POLICY) {\n\t\t\tif (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== \"function\") throw typeErrorCreate(\"TRUSTED_TYPES_POLICY configuration option must provide a \\\"createHTML\\\" hook.\");\n\t\t\tif (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== \"function\") throw typeErrorCreate(\"TRUSTED_TYPES_POLICY configuration option must provide a \\\"createScriptURL\\\" hook.\");\n\t\t\tconst previousTrustedTypesPolicy = trustedTypesPolicy;\n\t\t\ttrustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\t\t\ttry {\n\t\t\t\temptyHTML = _createTrustedHTML(\"\");\n\t\t\t} catch (error) {\n\t\t\t\ttrustedTypesPolicy = previousTrustedTypesPolicy;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t} else if (cfg.TRUSTED_TYPES_POLICY === null) {\n\t\t\ttrustedTypesPolicy = void 0;\n\t\t\temptyHTML = \"\";\n\t\t} else {\n\t\t\tif (trustedTypesPolicy === void 0) trustedTypesPolicy = _getDefaultTrustedTypesPolicy();\n\t\t\tif (trustedTypesPolicy && typeof emptyHTML === \"string\") emptyHTML = _createTrustedHTML(\"\");\n\t\t}\n\t\tif (freeze) freeze(cfg);\n\t\tCONFIG = cfg;\n\t};\n\tconst ALL_SVG_TAGS = addToSet({}, [\n\t\t...svg$1,\n\t\t...svgFilters,\n\t\t...svgDisallowed\n\t]);\n\tconst ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n\t/**\n\t* Namespace rules for an element in the SVG namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkSvgNamespace = function _checkSvgNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === HTML_NAMESPACE) return tagName === \"svg\";\n\t\tif (parent.namespaceURI === MATHML_NAMESPACE) return tagName === \"svg\" && (parentTagName === \"annotation-xml\" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n\t\treturn Boolean(ALL_SVG_TAGS[tagName]);\n\t};\n\t/**\n\t* Namespace rules for an element in the MathML namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkMathMlNamespace = function _checkMathMlNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === HTML_NAMESPACE) return tagName === \"math\";\n\t\tif (parent.namespaceURI === SVG_NAMESPACE) return tagName === \"math\" && HTML_INTEGRATION_POINTS[parentTagName];\n\t\treturn Boolean(ALL_MATHML_TAGS[tagName]);\n\t};\n\t/**\n\t* Namespace rules for an element in the HTML namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkHtmlNamespace = function _checkHtmlNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) return false;\n\t\tif (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) return false;\n\t\treturn !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n\t};\n\t/**\n\t* @param element a DOM element whose namespace is being checked\n\t* @returns Return false if the element has a\n\t* namespace that a spec-compliant parser would never\n\t* return. Return true otherwise.\n\t*/\n\tconst _checkValidNamespace = function _checkValidNamespace(element) {\n\t\tconst elementNamespace = _readNamespaceURI(element);\n\t\tconst tagName = stringToLowerCase(_readNodeName(element));\n\t\tconst parentNode = getParentNode(element);\n\t\tlet parent;\n\t\tlet parentTagName;\n\t\tif (parentNode && _readNodeType(parentNode) === NODE_TYPE.element) {\n\t\t\tparent = { namespaceURI: _readNamespaceURI(parentNode) };\n\t\t\tparentTagName = stringToLowerCase(_readNodeName(parentNode));\n\t\t} else {\n\t\t\tparent = { namespaceURI: NAMESPACE };\n\t\t\tparentTagName = \"template\";\n\t\t}\n\t\tif (!ALLOWED_NAMESPACES[elementNamespace]) return false;\n\t\tif (elementNamespace === SVG_NAMESPACE) return _checkSvgNamespace(tagName, parent, parentTagName);\n\t\tif (elementNamespace === MATHML_NAMESPACE) return _checkMathMlNamespace(tagName, parent, parentTagName);\n\t\tif (elementNamespace === HTML_NAMESPACE) return _checkHtmlNamespace(tagName, parent, parentTagName);\n\t\tif (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && ALLOWED_NAMESPACES[elementNamespace]) return true;\n\t\treturn false;\n\t};\n\t/**\n\t* _forceRemove\n\t*\n\t* @param node a DOM node\n\t*/\n\tconst _forceRemove = function _forceRemove(node) {\n\t\tarrayPush(DOMPurify.removed, { element: node });\n\t\ttry {\n\t\t\tgetParentNode(node).removeChild(node);\n\t\t} catch (_) {\n\t\t\tremove(node);\n\t\t\tif (!getParentNode(node)) throw typeErrorCreate(\"a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place\");\n\t\t}\n\t};\n\t/**\n\t* _stripAttributeNode\n\t*\n\t* Remove a single Attr node case/namespace-exactly on an attribute-teardown\n\t* path. Name-based removeAttribute() ASCII-lowercases its lookup key for an\n\t* HTML element in an HTML document and so silently misses a case-preserved\n\t* handler (e.g. `ONERROR` off an XML/XHTML import) - the same defect\n\t* _removeAttribute() was fixed for, which a name-based call would reintroduce\n\t* on these IN_PLACE teardown paths. Unlike _removeAttribute this does not\n\t* record into DOMPurify.removed: the neutralize passes intentionally do not\n\t* book-keep. A clobbered/detached node falls back to best-effort name-based\n\t* removal.\n\t*\n\t* @param element the element to strip the attribute from\n\t* @param attribute the Attr node to remove\n\t* @param name the attribute's name, for the fallback path\n\t*/\n\tconst _stripAttributeNode = function _stripAttributeNode(element, attribute, name) {\n\t\ttry {\n\t\t\tremoveAttributeNode(element, attribute);\n\t\t} catch (_) {\n\t\t\ttry {\n\t\t\t\telement.removeAttribute(name);\n\t\t\t} catch (_) {}\n\t\t}\n\t};\n\t/**\n\t* Fail-closed teardown of an in-place root: strip every disallowed attribute\n\t* in the subtree first, so nothing armed is left behind, then remove all\n\t* children and the root's own attributes.\n\t*\n\t* @param root the in-place root to empty\n\t*/\n\tconst _neutralizeRoot = function _neutralizeRoot(root) {\n\t\t_neutralizeSubtree(root);\n\t\tconst childNodes = getChildNodes(root);\n\t\tif (childNodes) arrayForEach(arraySlice(childNodes), (child) => {\n\t\t\ttry {\n\t\t\t\tremove(child);\n\t\t\t} catch (_) {}\n\t\t});\n\t\tconst attributes = _readNodeType(root) === NODE_TYPE.element ? getAttributes(root) : null;\n\t\tif (attributes) for (let i = attributes.length - 1; i >= 0; --i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst name = attribute && attribute.name;\n\t\t\tif (typeof name === \"string\") _stripAttributeNode(root, attribute, name);\n\t\t}\n\t};\n\t/**\n\t* Removes an attribute, preferably as its exact Attr node: name-based\n\t* removal lowercases the name in HTML documents and misses case-preserved\n\t* names, e.g. from imported XHTML.\n\t*\n\t* @param name an Attribute name\n\t* @param element a DOM node\n\t* @param attr the exact Attr node to remove, when the caller has it\n\t*/\n\tconst _removeAttribute = function _removeAttribute(name, element, attr) {\n\t\tif (!attr) try {\n\t\t\tattr = element.getAttributeNode(name);\n\t\t} catch (_) {\n\t\t\tattr = null;\n\t\t}\n\t\tarrayPush(DOMPurify.removed, {\n\t\t\tattribute: attr || null,\n\t\t\tfrom: element\n\t\t});\n\t\ttry {\n\t\t\tif (attr) removeAttributeNode(element, attr);\n\t\t\telse element.removeAttribute(name);\n\t\t} catch (_) {\n\t\t\ttry {\n\t\t\t\telement.removeAttribute(name);\n\t\t\t} catch (_) {}\n\t\t}\n\t\tif (name === \"is\") {\n\t\t\tif (RETURN_DOM || RETURN_DOM_FRAGMENT) try {\n\t\t\t\t_forceRemove(element);\n\t\t\t} catch (_) {}\n\t\t\telse try {\n\t\t\t\telement.setAttribute(name, \"\");\n\t\t\t} catch (_) {}\n\t\t}\n\t};\n\t/**\n\t* Removes every attribute the configuration does not allow. Used to\n\t* neutralize nodes discarded from an in-place tree.\n\t*\n\t* @param element the element to strip\n\t*/\n\tconst _stripDisallowedAttributes = function _stripDisallowedAttributes(element) {\n\t\tconst attributes = getAttributes(element);\n\t\tif (!attributes) return;\n\t\tfor (let i = attributes.length - 1; i >= 0; --i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst name = attribute && attribute.name;\n\t\t\tif (typeof name !== \"string\" || ALLOWED_ATTR[transformCaseFunc(name)]) continue;\n\t\t\t_stripAttributeNode(element, attribute, name);\n\t\t}\n\t};\n\t/**\n\t* Iterative depth-first walk, so deep trees cannot overflow the call stack,\n\t* reading through the cached getters, so clobbering cannot hide children.\n\t* When `visit` returns false, the node's children are skipped. With\n\t* `intoShadow`, open shadow roots are walked after their host's children.\n\t*\n\t* @param root where to start\n\t* @param visit called for every node\n\t* @param intoShadow whether to enter open shadow roots\n\t*/\n\tconst _walkTree = function _walkTree(root, visit) {\n\t\tlet intoShadow = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n\t\tconst stack = [root];\n\t\twhile (stack.length > 0) {\n\t\t\tconst node = stack.pop();\n\t\t\tif (visit(node) === false) continue;\n\t\t\tif (intoShadow && _readNodeType(node) === NODE_TYPE.element) {\n\t\t\t\tconst shadowRoot = getShadowRoot(node);\n\t\t\t\tif (_isDocumentFragment(shadowRoot)) stack.push(shadowRoot);\n\t\t\t}\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push(childNodes[i]);\n\t\t}\n\t};\n\t/**\n\t* Strips disallowed attributes from every element of a discarded subtree,\n\t* so a handler that is already queued (a loading image) cannot fire.\n\t*\n\t* @param root the root of a removed subtree\n\t*/\n\tconst _neutralizeSubtree = function _neutralizeSubtree(root) {\n\t\t_walkTree(root, (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element) _stripDisallowedAttributes(node);\n\t\t});\n\t};\n\t/**\n\t* All nodes under `root`, root first, including open shadow roots. Template\n\t* content is not entered, it is inert.\n\t*\n\t* @param root the in-place root\n\t* @return the nodes\n\t*/\n\tconst _collectLiveNodes = function _collectLiveNodes(root) {\n\t\tconst nodes = [];\n\t\t_walkTree(root, (node) => {\n\t\t\tnodes.push(node);\n\t\t}, true);\n\t\treturn nodes;\n\t};\n\t/**\n\t* Strips disallowed attributes from every element that was under the\n\t* in-place root when the call started and no longer is, whatever removed\n\t* or moved it.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t*/\n\tconst _neutralizeEscapedElements = function _neutralizeEscapedElements(root, before) {\n\t\tconst reachable = setCreate();\n\t\tarrayForEach(_collectLiveNodes(root), (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element) setAdd(reachable, node);\n\t\t});\n\t\tarrayForEach(before, (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element && !setHas(reachable, node)) _stripDisallowedAttributes(node);\n\t\t});\n\t};\n\t/**\n\t* Neutralizes everything that left the in-place tree during the call: what\n\t* DOMPurify removed, and what hooks or custom elements removed or moved out.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t* @return true if the root itself was removed\n\t*/\n\tconst _neutralizeDiscarded = function _neutralizeDiscarded(root, before) {\n\t\tlet rootRemoved = false;\n\t\tarrayForEach(DOMPurify.removed, (entry) => {\n\t\t\tif (entry.element) {\n\t\t\t\trootRemoved = rootRemoved || entry.element === root;\n\t\t\t\t_neutralizeSubtree(entry.element);\n\t\t\t}\n\t\t});\n\t\t_neutralizeEscapedElements(root, before);\n\t\treturn rootRemoved;\n\t};\n\tconst MAX_UNVISITED_ROUNDS = 8;\n\t/**\n\t* The walk only moves forward, so a node moved to a position it already\n\t* passed is never visited. Give every original node that is still in the\n\t* tree but unvisited the normal treatment, hooks included. Nodes created\n\t* during the call are left alone. Fails closed if the tree keeps changing.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t*/\n\tconst _sanitizeUnvisitedNodes = function _sanitizeUnvisitedNodes(root, before) {\n\t\tconst visited = IN_PLACE_VISITED;\n\t\tlet original = null;\n\t\tconst getOriginal = () => {\n\t\t\tif (!original) {\n\t\t\t\toriginal = setCreate();\n\t\t\t\tarrayForEach(before, (beforeNode) => {\n\t\t\t\t\tsetAdd(original, beforeNode);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn original;\n\t\t};\n\t\tfor (let round = 0;; round++) {\n\t\t\tconst live = _collectLiveNodes(root);\n\t\t\tconst containers = [root];\n\t\t\tlet pending = false;\n\t\t\tarrayForEach(live, (node) => {\n\t\t\t\tif (_readNodeType(node) === NODE_TYPE.documentFragment) arrayPush(containers, node);\n\t\t\t\telse if (!pending && !setHas(visited, node)) pending = setHas(getOriginal(), node);\n\t\t\t});\n\t\t\tif (!pending) return;\n\t\t\tif (round >= MAX_UNVISITED_ROUNDS) throw typeErrorCreate(\"the tree kept changing during in-place sanitization; refusing to return it\");\n\t\t\tarrayForEach(containers, (container, index) => {\n\t\t\t\t_sanitizeUnvisitedIn(container, index > 0, root, getOriginal());\n\t\t\t});\n\t\t}\n\t};\n\t/**\n\t* One _sanitizeUnvisitedNodes pass over the root or an open shadow root.\n\t*\n\t* @param container the root or an open shadow root\n\t* @param inShadow whether container is a shadow root\n\t* @param root the in-place root\n\t* @param original the root's nodes collected before the walk, as a set\n\t*/\n\tconst _sanitizeUnvisitedIn = function _sanitizeUnvisitedIn(container, inShadow, root, original) {\n\t\tconst iterator = _createNodeIterator(container);\n\t\tlet node;\n\t\twhile (node = iterator.nextNode()) {\n\t\t\tif (!setHas(original, node) || setHas(IN_PLACE_VISITED, node)) continue;\n\t\t\tif (inShadow) _executeHooks(hooks.uponSanitizeShadowNode, node, null);\n\t\t\t_sanitizeElements(node, root);\n\t\t\t_sanitizeAttributes(node, root);\n\t\t\tif (_isDocumentFragment(node.content)) _sanitizeShadowDOM2(node.content);\n\t\t}\n\t};\n\t/**\n\t* Records that _sanitizeElements processed `node`. No-op outside IN_PLACE.\n\t*\n\t* @param node the node being processed\n\t*/\n\tconst _markVisited = function _markVisited(node) {\n\t\tif (IN_PLACE_VISITED) setAdd(IN_PLACE_VISITED, node);\n\t};\n\t/**\n\t* Patch-linkage attributes (declarative partial updates): `patchsrc`\n\t* always, `for` everywhere except on <label> and <output>. Gated on\n\t* SAFE_FOR_XML. Shared by the IN_PLACE pre-pass and _isValidAttribute.\n\t*\n\t* @param lcName the transformCaseFunc'd attribute name\n\t* @param lcTag the transformCaseFunc'd tag name of the carrying element\n\t* @return true if the attribute is patch linkage and must be dropped\n\t*/\n\tconst _isPatchLinkageAttribute = function _isPatchLinkageAttribute(lcName, lcTag) {\n\t\tif (!SAFE_FOR_XML) return false;\n\t\tif (lcName === \"patchsrc\") return true;\n\t\treturn lcName === \"for\" && lcTag !== \"label\" && lcTag !== \"output\";\n\t};\n\t/**\n\t* IN_PLACE pre-pass: sever all patch linkage before the walk, so no patch\n\t* can fire mid-walk into a part of the tree the walker already passed.\n\t* Removes range markers (processing instructions, comments with markup)\n\t* and strips linkage attributes. It cannot undo a patch that already fired.\n\t*\n\t* TODO: if the shipped feature can patch through `for` on <label>/<output>,\n\t* drop that pair here too (see test/declarative-patch-probe.html).\n\t*\n\t* @param root the in-place root to sweep\n\t*/\n\tconst _neutralizePatchLinkage = function _neutralizePatchLinkage(root) {\n\t\tif (!SAFE_FOR_XML) return;\n\t\t_walkTree(root, (node) => {\n\t\t\tconst nodeType = _readNodeType(node);\n\t\t\tif (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node.data)) {\n\t\t\t\ttry {\n\t\t\t\t\tremove(node);\n\t\t\t\t} catch (_) {}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (nodeType === NODE_TYPE.element) {\n\t\t\t\tconst element = node;\n\t\t\t\tconst lcTag = transformCaseFunc(_readNodeName(node));\n\t\t\t\ttry {\n\t\t\t\t\tif (element.hasAttribute && element.hasAttribute(\"patchsrc\")) element.removeAttribute(\"patchsrc\");\n\t\t\t\t\tif (element.hasAttribute && element.hasAttribute(\"for\") && _isPatchLinkageAttribute(\"for\", lcTag)) element.removeAttribute(\"for\");\n\t\t\t\t} catch (_) {}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t};\n\t/**\n\t* _initDocument\n\t*\n\t* @param dirty - a string of dirty markup\n\t* @return a DOM, filled with the dirty markup\n\t*/\n\tconst _initDocument = function _initDocument(dirty) {\n\t\tlet doc = null;\n\t\tlet leadingWhitespace = null;\n\t\tif (FORCE_BODY) dirty = \"<remove></remove>\" + dirty;\n\t\telse {\n\t\t\tconst matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n\t\t\tleadingWhitespace = matches && matches[0];\n\t\t}\n\t\tif (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && NAMESPACE === HTML_NAMESPACE) dirty = \"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\"><head></head><body>\" + dirty + \"</body></html>\";\n\t\tconst dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;\n\t\tif (NAMESPACE === HTML_NAMESPACE) try {\n\t\t\tdoc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n\t\t} catch (_) {}\n\t\tif (!doc || !doc.documentElement) {\n\t\t\tdoc = implementation.createDocument(NAMESPACE, \"template\", null);\n\t\t\ttry {\n\t\t\t\tdoc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n\t\t\t} catch (_) {}\n\t\t}\n\t\tconst body = doc.body || doc.documentElement;\n\t\tif (dirty && leadingWhitespace) body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n\t\tif (NAMESPACE === HTML_NAMESPACE) return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? \"html\" : \"body\")[0];\n\t\treturn WHOLE_DOCUMENT ? doc.documentElement : body;\n\t};\n\t/**\n\t* Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n\t*\n\t* @param root The root element or node to start traversing on.\n\t* @return The created NodeIterator\n\t*/\n\tconst _createNodeIterator = function _createNodeIterator(root) {\n\t\tconst doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;\n\t\treturn createNodeIterator.call(doc || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n\t};\n\t/**\n\t* Replace template expression syntax (mustache, ERB, template\n\t* literal) with a space; shared by all SAFE_FOR_TEMPLATES scrub\n\t* sites. Order matters: mustache, then ERB, then template literal.\n\t*\n\t* @param value the string to scrub\n\t* @returns the scrubbed string\n\t*/\n\tconst _stripTemplateExpressions = function _stripTemplateExpressions(value) {\n\t\tvalue = stringReplace(value, MUSTACHE_EXPR$1, \" \");\n\t\tvalue = stringReplace(value, ERB_EXPR$1, \" \");\n\t\tvalue = stringReplace(value, TMPLIT_EXPR$1, \" \");\n\t\treturn value;\n\t};\n\t/**\n\t* Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n\t* character data of an element subtree. Used as the final safety net for\n\t* SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n\t* which only form after text-node normalization (e.g. fragments split across\n\t* stripped elements) cannot survive into a template-evaluating framework.\n\t*\n\t* Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n\t* in place rather than round-tripping through innerHTML. This preserves\n\t* descendant node references (important for IN_PLACE callers), avoids a\n\t* serialize/reparse cycle, and reads literal character data — which means\n\t* `<%...%>` in text content matches the ERB regex against its real bytes\n\t* instead of the HTML-entity-escaped form innerHTML would produce.\n\t*\n\t* Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n\t* attributes is performed during the per-node `_sanitizeAttributes` pass.\n\t*\n\t* @param node The root element whose character data should be scrubbed.\n\t*/\n\tconst _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node) {\n\t\tvar _node$querySelectorAl;\n\t\t_scrubOwnCharacterData(node);\n\t\tconst templates = (_node$querySelectorAl = node.querySelectorAll) === null || _node$querySelectorAl === void 0 ? void 0 : _node$querySelectorAl.call(node, \"template\");\n\t\tif (templates) arrayForEach(templates, (tmpl) => {\n\t\t\tif (_isDocumentFragment(tmpl.content)) _scrubTemplateExpressions2(tmpl.content);\n\t\t});\n\t};\n\t/**\n\t* _scrubOwnCharacterData\n\t*\n\t* Non-recursive core of _scrubTemplateExpressions: normalize `node` and\n\t* strip template expressions from its own character data only. Does not\n\t* enter <template>.content or attached shadow roots (NodeIterator never\n\t* does). Used by _sanitizeShadowDOM, where every nested template content\n\t* and shadow root is already walked - and therefore scrubbed - by its own\n\t* recursive _sanitizeShadowDOM call; recursing here as well would rescrub\n\t* each nested fragment once per ancestor, which is quadratic in nesting\n\t* depth.\n\t*\n\t* @param node The root whose own character data should be scrubbed.\n\t*/\n\tconst _scrubOwnCharacterData = function _scrubOwnCharacterData(node) {\n\t\tnode.normalize();\n\t\tconst doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;\n\t\tconst walker = createNodeIterator.call(doc || node, node, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);\n\t\tlet currentNode = walker.nextNode();\n\t\twhile (currentNode) {\n\t\t\tcurrentNode.data = _stripTemplateExpressions(currentNode.data);\n\t\t\tcurrentNode = walker.nextNode();\n\t\t}\n\t};\n\t/**\n\t* _isClobbered\n\t*\n\t* Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n\t* interface with [LegacyOverrideBuiltIns]; a descendant element with a\n\t* `name` attribute matching a prototype property shadows that property\n\t* on direct reads. We use this check at the IN_PLACE entry-point and\n\t* during attribute sanitization to refuse clobbered forms.\n\t*\n\t* @param element element to check for clobbering attacks\n\t* @return true if clobbered, false if safe\n\t*/\n\tconst _isClobbered = function _isClobbered(element) {\n\t\tconst realTagName = getNodeName ? getNodeName(element) : null;\n\t\tif (typeof realTagName !== \"string\") return false;\n\t\tif (transformCaseFunc(realTagName) !== \"form\") return false;\n\t\treturn typeof element.nodeName !== \"string\" || typeof element.textContent !== \"string\" || typeof element.removeChild !== \"function\" || element.attributes !== getAttributes(element) || typeof element.removeAttribute !== \"function\" || typeof element.removeAttributeNode !== \"function\" || typeof element.getAttributeNode !== \"function\" || typeof element.setAttribute !== \"function\" || typeof element.namespaceURI !== \"string\" || typeof element.insertBefore !== \"function\" || typeof element.hasChildNodes !== \"function\" || element.nodeType !== getNodeType(element) || element.childNodes !== getChildNodes(element);\n\t};\n\t/**\n\t* Checks whether the given value is a DocumentFragment from any realm.\n\t*\n\t* The realm-independent replacement reads `nodeType` through the cached\n\t* Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n\t* constant (11). nodeType is a numeric value resolved from the node's\n\t* internal slot, identical across realms for the same kind of node.\n\t*\n\t* @param value object to check\n\t* @return true if value is a DocumentFragment-shaped node from any realm\n\t*/\n\tconst _isDocumentFragment = function _isDocumentFragment(value) {\n\t\tif (!getNodeType || typeof value !== \"object\" || value === null) return false;\n\t\ttry {\n\t\t\treturn getNodeType(value) === NODE_TYPE.documentFragment;\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t};\n\t/**\n\t* Checks whether the given object is a DOM node, including nodes that\n\t* originate from a different window/realm (e.g. an iframe's\n\t* contentDocument). The previous `value instanceof Node` check was\n\t* realm-bound: nodes from a different window failed it, causing\n\t* sanitize() to silently stringify them and reset IN_PLACE to false,\n\t* returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n\t*\n\t* @param value object to check whether it's a DOM node\n\t* @return true if value is a DOM node from any realm\n\t*/\n\tconst _isNode = function _isNode(value) {\n\t\tif (!getNodeType || typeof value !== \"object\" || value === null) return false;\n\t\ttry {\n\t\t\treturn typeof getNodeType(value) === \"number\";\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t};\n\tfunction _executeHooks(hooks, currentNode, data) {\n\t\tif (hooks.length === 0) return;\n\t\tarrayForEach(hooks, (hook) => {\n\t\t\thook.call(DOMPurify, currentNode, data, CONFIG);\n\t\t});\n\t}\n\t/**\n\t* Structural-threat checks that condemn a node regardless of the\n\t* allowlists: mXSS via namespace confusion, risky CSS construction,\n\t* processing instructions, markup-bearing comments. Pure predicate;\n\t* the caller removes. Check order is load-bearing.\n\t*\n\t* @param currentNode the node to inspect\n\t* @param tagName the node's transformCaseFunc'd tag name\n\t* @return true if the node must be removed\n\t*/\n\tconst _isUnsafeNode = function _isUnsafeNode(currentNode, tagName) {\n\t\tif (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML)) return true;\n\t\tif (SAFE_FOR_XML && LITERAL_TEXT_ELEMENTS[tagName] && _readNodeType(currentNode) === NODE_TYPE.element && _readNamespaceURI(currentNode) === HTML_NAMESPACE && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === \"string\" && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent))) return true;\n\t\tif (currentNode.nodeType === NODE_TYPE.processingInstruction) return true;\n\t\tif (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) return true;\n\t\treturn false;\n\t};\n\t/**\n\t* Evaluate a CUSTOM_ELEMENT_HANDLING check (a RegExp or a predicate\n\t* function, per the validation in _parseConfig) against a name.\n\t* Additional arguments are forwarded to predicate functions - the\n\t* attributeNameCheck predicate receives the tag name as its second\n\t* argument. A null/absent check never matches.\n\t*\n\t* @param check the configured tagNameCheck / attributeNameCheck value\n\t* @param name the name to test\n\t* @param args extra arguments forwarded to a predicate function\n\t* @return true if the check matches the name\n\t*/\n\tconst _matchesNameCheck = function _matchesNameCheck(check, name) {\n\t\tif (check instanceof RegExp) return regExpTest(check, name);\n\t\tif (check instanceof Function) {\n\t\t\tfor (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];\n\t\t\treturn Boolean(check(name, ...args));\n\t\t}\n\t\treturn false;\n\t};\n\t/**\n\t* Handle a node whose tag is forbidden or not allowlisted: keep\n\t* allowed custom elements (false return exits _sanitizeElements\n\t* early - the namespace and fallback-tag removal checks are\n\t* intentionally skipped for kept custom elements), else hoist\n\t* content per KEEP_CONTENT and remove.\n\t*\n\t* A kept custom element is the ONLY case in which this function\n\t* returns false, so the caller uses that return value to run the\n\t* afterSanitizeElements hook on the kept element and keep the\n\t* element-hook lifecycle consistent with normal allowlisted\n\t* elements (GHSA-c2j3-45gr-mqc4).\n\t*\n\t* @param currentNode the disallowed node\n\t* @param tagName the node's transformCaseFunc'd tag name\n\t* @return true if the node was removed, false if kept\n\t*/\n\tconst _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName, root) {\n\t\tif (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n\t\tif (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && !FORBID_CONTENTS[stringToLowerCase(tagName)]) {\n\t\t\tconst parentNode = getParentNode(currentNode);\n\t\t\tconst childNodes = getChildNodes(currentNode);\n\t\t\tif (childNodes && parentNode) {\n\t\t\t\tconst childCount = childNodes.length;\n\t\t\t\tfor (let i = childCount - 1; i >= 0; --i) {\n\t\t\t\t\tconst hoisted = currentNode === root ? cloneNode(childNodes[i], true) : childNodes[i];\n\t\t\t\t\tparentNode.insertBefore(hoisted, getNextSibling(currentNode));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_forceRemove(currentNode);\n\t\treturn true;\n\t};\n\t/**\n\t* Fork a hook-mutable allowlist off its shared binding the first time a\n\t* (possibly lazily-installed) uponSanitize* hook is about to see it, so the\n\t* hook cannot widen the per-instance default or the setConfig binding by\n\t* reference and leak past the call. Returns the set unchanged once it is\n\t* already call-local, so repeated calls across elements are idempotent.\n\t*\n\t* @param hookList the uponSanitize* hook array for this event\n\t* @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding\n\t* @param defaultSet the per-instance DEFAULT_ALLOWED_* constant\n\t* @param setConfigSet the captured setConfig() binding, or null\n\t* @return a call-local clone if a hook is present and set is still shared,\n\t* else set unchanged\n\t*/\n\tconst _forkSharedAllowlist = function _forkSharedAllowlist(hookList, set, defaultSet, setConfigSet) {\n\t\tif (hookList.length === 0) return set;\n\t\treturn set === defaultSet || set === setConfigSet ? clone(set) : set;\n\t};\n\t/**\n\t* A hook may have detached the node it was called for. If so, treat it as\n\t* removed and stop processing it; the walk root is exempt. On the IN_PLACE\n\t* path the detached subtree is neutralized right away.\n\t*\n\t* @param currentNode the node a hook may have detached\n\t* @param root the current walk root\n\t* @return true if the node was detached\n\t*/\n\tconst _handleHookDetachedNode = function _handleHookDetachedNode(currentNode, root) {\n\t\tif (currentNode === root || getParentNode(currentNode) !== null) return false;\n\t\tif (IN_PLACE) _neutralizeSubtree(currentNode);\n\t\treturn true;\n\t};\n\t/**\n\t* _sanitizeElements\n\t*\n\t* @protect nodeName\n\t* @protect textContent\n\t* @protect removeChild\n\t* @param currentNode to check for permission to exist\n\t* @return true if node was killed, false if left alive\n\t*/\n\tconst _sanitizeElements = function _sanitizeElements(currentNode, root) {\n\t\t_markVisited(currentNode);\n\t\t_executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\tif (_isClobbered(currentNode)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tconst tagName = transformCaseFunc(_readNodeName(currentNode));\n\t\tALLOWED_TAGS = _forkSharedAllowlist(hooks.uponSanitizeElement, ALLOWED_TAGS, DEFAULT_ALLOWED_TAGS, SET_CONFIG_ALLOWED_TAGS);\n\t\t_executeHooks(hooks.uponSanitizeElement, currentNode, {\n\t\t\ttagName,\n\t\t\tallowedTags: ALLOWED_TAGS\n\t\t});\n\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\tif (_isUnsafeNode(currentNode, tagName)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {\n\t\t\tconst removed = _sanitizeDisallowedNode(currentNode, tagName, root);\n\t\t\tif (removed === false) {\n\t\t\t\t_executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\t\t\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\t\t}\n\t\t\treturn removed;\n\t\t}\n\t\tif (_readNodeType(currentNode) === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif ((tagName === \"noscript\" || tagName === \"noembed\" || tagName === \"noframes\") && regExpTest(FALLBACK_TAG_CLOSE, currentNode.innerHTML)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n\t\t\tconst content = _stripTemplateExpressions(currentNode.textContent);\n\t\t\tif (currentNode.textContent !== content) {\n\t\t\t\tarrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n\t\t\t\tcurrentNode.textContent = content;\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\t\treturn _handleHookDetachedNode(currentNode, root);\n\t};\n\t/**\n\t* _isValidAttribute\n\t*\n\t* @param lcTag Lowercase tag name of containing element.\n\t* @param lcName Lowercase attribute name.\n\t* @param value Attribute value.\n\t* @return Returns true if `value` is valid, otherwise false.\n\t*/\n\tconst _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n\t\tif (FORBID_ATTR[lcName]) return false;\n\t\tif (_isPatchLinkageAttribute(lcName, lcTag)) return false;\n\t\tif (SANITIZE_DOM && (lcName === \"id\" || lcName === \"name\") && (value in document || value in formElement)) return false;\n\t\tconst nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);\n\t\tif (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName)) return true;\n\t\tif (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) return true;\n\t\tif (!nameIsPermitted) return _isBasicCustomElement(lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName, lcTag) || lcName === \"is\" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value);\n\t\tif (URI_SAFE_ATTRIBUTES[lcName]) return true;\n\t\tif (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, \"\"))) return true;\n\t\tif ((lcName === \"src\" || lcName === \"xlink:href\" || lcName === \"href\") && lcTag !== \"script\" && stringIndexOf(value, \"data:\") === 0 && DATA_URI_TAGS[lcTag]) return true;\n\t\tif (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, \"\"))) return true;\n\t\treturn !value;\n\t};\n\tconst RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n\t\t\"annotation-xml\",\n\t\t\"color-profile\",\n\t\t\"font-face\",\n\t\t\"font-face-format\",\n\t\t\"font-face-name\",\n\t\t\"font-face-src\",\n\t\t\"font-face-uri\",\n\t\t\"missing-glyph\"\n\t]);\n\t/**\n\t* _isBasicCustomElement\n\t* checks if at least one dash is included in tagName, and it's not the first char\n\t* for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n\t*\n\t* @param tagName name of the tag of the node to sanitize\n\t* @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n\t*/\n\tconst _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n\t\treturn !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);\n\t};\n\t/**\n\t* Wrap an attribute value in the matching Trusted Types object when\n\t* the active policy requires it. Namespaced attributes pass through\n\t* unchanged (no TT support yet, see\n\t* https://bugs.chromium.org/p/chromium/issues/detail?id=1305293).\n\t*\n\t* @param lcTag lowercase tag name of the containing element\n\t* @param lcName lowercase attribute name\n\t* @param namespaceURI the attribute's namespace, if any\n\t* @param value the attribute value to wrap\n\t* @return the value, wrapped when Trusted Types demand it\n\t*/\n\tconst _applyTrustedTypesToAttribute = function _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value) {\n\t\tif (trustedTypesPolicy && typeof trustedTypes === \"object\" && typeof trustedTypes.getAttributeType === \"function\" && !namespaceURI) switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n\t\t\tcase \"TrustedHTML\": return _createTrustedHTML(value);\n\t\t\tcase \"TrustedScriptURL\": return _createTrustedScriptURL(value);\n\t\t}\n\t\treturn value;\n\t};\n\t/**\n\t* Write a modified attribute value back onto the element. On\n\t* success, re-probe for clobbering introduced by the new value and\n\t* remove the element when found; otherwise, when this writeback is the\n\t* recreate half of the SANITIZE_NAMED_PROPS remove-and-recreate, pop the\n\t* removal entry that path recorded so it does not show as removed. On\n\t* failure, remove the attribute instead.\n\t*\n\t* Returns true only on a clean write (the value was set and the new value\n\t* introduced no clobbering). The caller uses that, together with its own\n\t* knowledge of whether this attribute pushed a DOMPurify.removed record, to\n\t* decide whether to pop that record. The pop must happen ONLY for the\n\t* named-prop remove-and-recreate; popping on any other value change (trim,\n\t* template scrubbing, Trusted Types) would consume an unrelated _forceRemove\n\t* subtree-cleanup record and let that detached subtree keep a live event\n\t* handler through the IN_PLACE neutralization pass (SO-001).\n\t*\n\t* @param currentNode the element carrying the attribute\n\t* @param name the attribute name as present on the element\n\t* @param namespaceURI the attribute's namespace, if any\n\t* @param value the new attribute value\n\t* @return true if the value was written without introducing clobbering\n\t*/\n\tconst _setAttributeValue = function _setAttributeValue(currentNode, name, namespaceURI, value) {\n\t\ttry {\n\t\t\tif (namespaceURI) currentNode.setAttributeNS(namespaceURI, name, value);\n\t\t\telse currentNode.setAttribute(name, value);\n\t\t\tif (_isClobbered(currentNode)) {\n\t\t\t\t_forceRemove(currentNode);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (_) {\n\t\t\t_removeAttribute(name, currentNode);\n\t\t\treturn false;\n\t\t}\n\t};\n\t/**\n\t* _isUnsafeAttributeValue\n\t*\n\t* Value-based attribute checks that the attribute walk applies before any\n\t* hook can force-keep an attribute, shared with the public\n\t* isValidAttribute() so that it never approves a value sanitize() would\n\t* strip.\n\t*\n\t* @param name the attribute name as found on the node (case preserved)\n\t* @param value the attribute value\n\t* @returns true if the attribute must be removed because of its value\n\t*/\n\tconst _isUnsafeAttributeValue = function _isUnsafeAttributeValue(name, value) {\n\t\tif (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) return true;\n\t\treturn stringToLowerCase(name) === \"attributename\" && stringMatch(value, \"href\") !== null;\n\t};\n\t/**\n\t* _sanitizeAttributes\n\t*\n\t* @protect attributes\n\t* @protect nodeName\n\t* @protect removeAttribute\n\t* @protect setAttribute\n\t*\n\t* @param currentNode to sanitize\n\t* @param root the current walk root\n\t*/\n\tconst _sanitizeAttributes = function _sanitizeAttributes(currentNode, root) {\n\t\t_executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\t\tif (_handleHookDetachedNode(currentNode, root)) return;\n\t\tconst attributes = currentNode.attributes;\n\t\tif (!attributes || _isClobbered(currentNode)) return;\n\t\tALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);\n\t\tconst hookEvent = {\n\t\t\tattrName: \"\",\n\t\t\tattrValue: \"\",\n\t\t\tkeepAttr: true,\n\t\t\tallowedAttributes: ALLOWED_ATTR,\n\t\t\tforceKeepAttr: void 0\n\t\t};\n\t\tlet l = attributes.length;\n\t\tconst lcTag = transformCaseFunc(currentNode.nodeName);\n\t\twhile (l--) {\n\t\t\tconst attr = attributes[l];\n\t\t\tconst name = attr.name, namespaceURI = attr.namespaceURI, attrValue = attr.value;\n\t\t\tconst lcName = transformCaseFunc(name);\n\t\t\tconst initValue = attrValue;\n\t\t\tlet value = name === \"value\" ? initValue : stringTrim(initValue);\n\t\t\tlet recreatedNamedProp = false;\n\t\t\thookEvent.attrName = lcName;\n\t\t\thookEvent.attrValue = value;\n\t\t\thookEvent.keepAttr = true;\n\t\t\thookEvent.forceKeepAttr = void 0;\n\t\t\t_executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n\t\t\tvalue = hookEvent.attrValue;\n\t\t\tif (SANITIZE_NAMED_PROPS && (lcName === \"id\" || lcName === \"name\") && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tvalue = SANITIZE_NAMED_PROPS_PREFIX + value;\n\t\t\t\trecreatedNamedProp = true;\n\t\t\t}\n\t\t\tif (_isUnsafeAttributeValue(name, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (hookEvent.forceKeepAttr) continue;\n\t\t\tif (!hookEvent.keepAttr) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (SAFE_FOR_TEMPLATES) value = _stripTemplateExpressions(value);\n\t\t\tif (!_isValidAttribute(lcTag, lcName, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvalue = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);\n\t\t\tif (value !== initValue) {\n\t\t\t\tif (_setAttributeValue(currentNode, name, namespaceURI, value) && recreatedNamedProp) arrayPop(DOMPurify.removed);\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n\t\t_handleHookDetachedNode(currentNode, root);\n\t};\n\t/**\n\t* _sanitizeShadowDOM\n\t*\n\t* @param fragment to iterate over recursively\n\t*/\n\tconst _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {\n\t\tlet shadowNode = null;\n\t\tconst shadowIterator = _createNodeIterator(fragment);\n\t\t_executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\t\twhile (shadowNode = shadowIterator.nextNode()) {\n\t\t\t_executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\t\t\t_sanitizeElements(shadowNode, fragment);\n\t\t\t_sanitizeAttributes(shadowNode, fragment);\n\t\t\tif (_isDocumentFragment(shadowNode.content)) _sanitizeShadowDOM2(shadowNode.content);\n\t\t\tif (_readNodeType(shadowNode) === NODE_TYPE.element) {\n\t\t\t\tconst innerSr = getShadowRoot(shadowNode);\n\t\t\t\tif (_isDocumentFragment(innerSr)) {\n\t\t\t\t\t_sanitizeAttachedShadowRoots(innerSr);\n\t\t\t\t\t_sanitizeShadowDOM2(innerSr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (SAFE_FOR_TEMPLATES) _scrubOwnCharacterData(fragment);\n\t\t_executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n\t};\n\t/**\n\t* Sanitizes every attached shadow root under `root`, since the node\n\t* iterator does not enter shadow trees. Needed for IN_PLACE input and for\n\t* DOM input whose clonable shadow roots were copied by importNode().\n\t*\n\t* @param root the subtree root to walk for attached shadow roots\n\t*/\n\tconst _sanitizeAttachedShadowRoots = function _sanitizeAttachedShadowRoots(root) {\n\t\tconst stack = [{\n\t\t\tnode: root,\n\t\t\tshadow: null\n\t\t}];\n\t\twhile (stack.length > 0) {\n\t\t\tconst item = stack.pop();\n\t\t\tif (item.shadow) {\n\t\t\t\t_sanitizeShadowDOM2(item.shadow);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst node = item.node;\n\t\t\tconst isElement = _readNodeType(node) === NODE_TYPE.element;\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push({\n\t\t\t\tnode: childNodes[i],\n\t\t\t\tshadow: null\n\t\t\t});\n\t\t\tif (isElement) {\n\t\t\t\tconst rootName = getNodeName ? getNodeName(node) : null;\n\t\t\t\tif (typeof rootName === \"string\" && transformCaseFunc(rootName) === \"template\") {\n\t\t\t\t\tconst content = node.content;\n\t\t\t\t\tif (_isDocumentFragment(content)) stack.push({\n\t\t\t\t\t\tnode: content,\n\t\t\t\t\t\tshadow: null\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isElement) {\n\t\t\t\tconst sr = getShadowRoot(node);\n\t\t\t\tif (_isDocumentFragment(sr)) stack.push({\n\t\t\t\t\tnode: null,\n\t\t\t\t\tshadow: sr\n\t\t\t\t}, {\n\t\t\t\t\tnode: sr,\n\t\t\t\t\tshadow: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\tDOMPurify.sanitize = function(dirty) {\n\t\tlet cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n\t\tlet body = null;\n\t\tlet importedNode = null;\n\t\tlet currentNode = null;\n\t\tlet returnNode = null;\n\t\tIS_EMPTY_INPUT = !dirty;\n\t\tif (IS_EMPTY_INPUT) dirty = \"<!-->\";\n\t\tif (typeof dirty !== \"string\" && !_isNode(dirty)) {\n\t\t\tdirty = stringifyValue(dirty);\n\t\t\tif (typeof dirty !== \"string\") throw typeErrorCreate(\"dirty is not a string, aborting\");\n\t\t}\n\t\tif (!DOMPurify.isSupported) return dirty;\n\t\tif (SET_CONFIG) {\n\t\t\tALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;\n\t\t\tALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;\n\t\t} else _parseConfig(cfg);\n\t\tif (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0) ALLOWED_TAGS = clone(ALLOWED_TAGS);\n\t\tif (hooks.uponSanitizeAttribute.length > 0) ALLOWED_ATTR = clone(ALLOWED_ATTR);\n\t\tDOMPurify.removed = [];\n\t\tconst inPlace = IN_PLACE && typeof dirty !== \"string\" && _isNode(dirty);\n\t\tlet inPlaceNodes = [];\n\t\tconst outerVisited = IN_PLACE_VISITED;\n\t\tif (inPlace) {\n\t\t\t_neutralizePatchLinkage(dirty);\n\t\t\tconst nn = _readNodeName(dirty);\n\t\t\tif (typeof nn === \"string\") {\n\t\t\t\tconst tagName = transformCaseFunc(nn);\n\t\t\t\tif (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n\t\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\t\tthrow typeErrorCreate(\"root node is forbidden and cannot be sanitized in-place\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_isClobbered(dirty)) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\tthrow typeErrorCreate(\"root node is clobbered and cannot be sanitized in-place\");\n\t\t\t}\n\t\t\tinPlaceNodes = _collectLiveNodes(dirty);\n\t\t\tIN_PLACE_VISITED = setCreate();\n\t\t} else if (_isNode(dirty)) {\n\t\t\tbody = _initDocument(\"<!---->\");\n\t\t\timportedNode = body.ownerDocument.importNode(dirty, true);\n\t\t\tif (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === \"BODY\") body = importedNode;\n\t\t\telse if (importedNode.nodeName === \"HTML\") body = importedNode;\n\t\t\telse body.appendChild(importedNode);\n\t\t\t_sanitizeAttachedShadowRoots(body);\n\t\t} else {\n\t\t\tif (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf(\"<\") === -1) return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;\n\t\t\tbody = _initDocument(dirty);\n\t\t\tif (!body) return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : \"\";\n\t\t}\n\t\tif (body && FORCE_BODY) _forceRemove(body.firstChild);\n\t\tconst walkRoot = inPlace ? dirty : body;\n\t\ttry {\n\t\t\tif (inPlace) _sanitizeAttachedShadowRoots(dirty);\n\t\t\tconst nodeIterator = _createNodeIterator(walkRoot);\n\t\t\twhile (currentNode = nodeIterator.nextNode()) {\n\t\t\t\t_sanitizeElements(currentNode, walkRoot);\n\t\t\t\t_sanitizeAttributes(currentNode, walkRoot);\n\t\t\t\tif (_isDocumentFragment(currentNode.content)) _sanitizeShadowDOM2(currentNode.content);\n\t\t\t}\n\t\t\tif (inPlace) _sanitizeUnvisitedNodes(dirty, inPlaceNodes);\n\t\t} catch (error) {\n\t\t\tif (inPlace) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\t_neutralizeDiscarded(dirty, inPlaceNodes);\n\t\t\t}\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tIN_PLACE_VISITED = outerVisited;\n\t\t}\n\t\tif (inPlace) {\n\t\t\tif (_neutralizeDiscarded(dirty, inPlaceNodes)) throw typeErrorCreate(\"a node selected for removal could not be safely returned; refusing to sanitize in place\");\n\t\t\tif (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(dirty);\n\t\t\treturn dirty;\n\t\t}\n\t\tif (RETURN_DOM) {\n\t\t\tif (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(body);\n\t\t\tif (RETURN_DOM_FRAGMENT) {\n\t\t\t\treturnNode = createDocumentFragment.call(body.ownerDocument);\n\t\t\t\twhile (body.firstChild) returnNode.appendChild(body.firstChild);\n\t\t\t} else returnNode = body;\n\t\t\tif (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) returnNode = importNode.call(originalDocument, returnNode, true);\n\t\t\treturn returnNode;\n\t\t}\n\t\tlet serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\t\tif (WHOLE_DOCUMENT && ALLOWED_TAGS[\"!doctype\"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) serializedHTML = \"<!DOCTYPE \" + body.ownerDocument.doctype.name + \">\\n\" + serializedHTML;\n\t\tif (SAFE_FOR_TEMPLATES) serializedHTML = _stripTemplateExpressions(serializedHTML);\n\t\treturn trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(serializedHTML) : serializedHTML;\n\t};\n\tDOMPurify.setConfig = function() {\n\t\tlet cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t\t_parseConfig(cfg);\n\t\tSET_CONFIG = true;\n\t\tSET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;\n\t\tSET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;\n\t};\n\tDOMPurify.clearConfig = function() {\n\t\tCONFIG = null;\n\t\tSET_CONFIG = false;\n\t\tSET_CONFIG_ALLOWED_TAGS = null;\n\t\tSET_CONFIG_ALLOWED_ATTR = null;\n\t\ttrustedTypesPolicy = defaultTrustedTypesPolicy;\n\t\temptyHTML = \"\";\n\t};\n\tDOMPurify.isValidAttribute = function(tag, attr, value) {\n\t\tif (!CONFIG) _parseConfig({});\n\t\tconst lcTag = transformCaseFunc(tag);\n\t\tconst lcName = transformCaseFunc(attr);\n\t\tif (typeof value === \"string\" && (_isUnsafeAttributeValue(attr, value) || !ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value))) return false;\n\t\treturn _isValidAttribute(lcTag, lcName, value);\n\t};\n\tDOMPurify.addHook = function(entryPoint, hookFunction) {\n\t\tif (typeof hookFunction !== \"function\") return;\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\tarrayPush(hooks[entryPoint], hookFunction);\n\t};\n\tDOMPurify.removeHook = function(entryPoint, hookFunction) {\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\tif (hookFunction !== void 0) {\n\t\t\tconst index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\t\t\treturn index === -1 ? void 0 : arraySplice(hooks[entryPoint], index, 1)[0];\n\t\t}\n\t\treturn arrayPop(hooks[entryPoint]);\n\t};\n\tDOMPurify.removeHooks = function(entryPoint) {\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\thooks[entryPoint] = [];\n\t};\n\tDOMPurify.removeAllHooks = function() {\n\t\thooks = _createHooksMap();\n\t};\n\treturn DOMPurify;\n}\nvar purify_default = createDOMPurify();\nexport { purify_default as default };\n\n//# sourceMappingURL=purify.es.mjs.map","import DOMPurify, { type Config } from 'dompurify'\n\n/**\n * Escapes text for the inside of an HTML element.\n */\nexport function escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n}\n\n/**\n * The placeholder a formula waits in until KaTeX renders it. The formula is\n * percent-encoded, not entity-encoded: the sanitizer drops an attribute whose\n * value holds `]>` or `-->`, and a formula can (`[a,b]>0`). The encoding has\n * no quote either, so the formula cannot close the attribute.\n */\nexport function renderKatexPlaceholder(\n text: string,\n displayMode: boolean,\n): string {\n const encoded = encodeURIComponent(text)\n return `<span class=\"katex-pending\" data-katex=\"${encoded}\" data-display=\"${displayMode}\"></span>`\n}\n\n// `target` is not among DOMPurify's defaults, and the link renderer sets it on\n// every external link. Without the unknown protocols an app link\n// (`msteams:`, `whatsapp:`) lost its href; the schemes that run code (`*script:`,\n// `data:` outside images) stay refused. A `<style>` element or a `style`\n// attribute can lay a fake page over the real one, and a form can post what the\n// reader types anywhere: the markdown never produces any of the three. Nor\n// does it produce the other ways of fetching a url by rendering it (media\n// elements, `srcset`, a poster, the `background` of a table, an SVG image or\n// filter image), which would carry an answer past the image hosts of the agent.\nconst SANITIZE_CONFIG: Config = {\n ADD_ATTR: ['target'],\n ALLOW_UNKNOWN_PROTOCOLS: true,\n FORBID_TAGS: [\n 'style',\n 'form',\n 'audio',\n 'video',\n 'source',\n 'picture',\n 'track',\n 'image',\n 'feImage',\n ],\n FORBID_ATTR: ['style', 'srcset', 'poster', 'background'],\n}\n\n// DOMPurify keeps `src` on any element, and an image input or a MathML glyph\n// fetches it as soon as it renders. Only an `<img>` keeps it, where the held\n// images below judge it; the inputs marked writes, the checkboxes of a task\n// list, have none.\nDOMPurify.addHook('uponSanitizeAttribute', (node, data) => {\n if (data.attrName === 'src' && node.nodeName !== 'IMG') {\n data.keepAttr = false\n }\n})\n\n/**\n * What the sanitizer does with an image the chat may not load by itself\n * (see `chatImagePolicy.ts`).\n */\nexport interface HeldImages {\n canLoad: (src: string) => boolean\n hostOf: (src: string) => string | undefined\n /** The words on the placeholder, for the host the image points to. */\n label: (host: string) => string\n}\n\n/** The attribute a held image keeps its url in, read back on a click. */\nexport const HELD_IMAGE_ATTRIBUTE = 'data-held-src'\n\n/**\n * Cleans the HTML rendered from a markdown before it reaches `v-html`. The\n * markdown is written by a model, and through the knowledge base, the tools and\n * the pages it reads, by whoever wrote those; marked passes the HTML it finds\n * through untouched, so a handler written in a document ran in the browser of\n * whoever read the answer. Scripts, handlers, `javascript:` urls, styles and\n * forms go, the formatting stays.\n *\n * With `held`, an image the chat may not load by itself becomes a button that\n * names its host: the url waits in an attribute, which fetches nothing, until\n * the reader asks for it.\n */\nexport function sanitizeMarkdownHtml(html: string, held?: HeldImages): string {\n if (!held) {\n return DOMPurify.sanitize(html, SANITIZE_CONFIG)\n }\n const fragment = DOMPurify.sanitize(html, {\n ...SANITIZE_CONFIG,\n RETURN_DOM_FRAGMENT: true,\n })\n for (const image of Array.from(fragment.querySelectorAll('img'))) {\n const src = image.getAttribute('src') ?? ''\n if (held.canLoad(src)) {\n continue\n }\n const button = image.ownerDocument.createElement('button')\n button.type = 'button'\n button.className = 'markdown-held-image'\n button.setAttribute(HELD_IMAGE_ATTRIBUTE, src)\n button.textContent = held.label(held.hostOf(src) ?? src)\n image.replaceWith(button)\n }\n // Serialized in the inert document DOMPurify parsed into: moved into the\n // page's document, an image would start loading before `v-html` runs.\n const container = fragment.ownerDocument.createElement('div')\n container.append(fragment)\n return container.innerHTML\n}\n","import type { ComputedRef, InjectionKey } from 'vue'\nimport { computed, inject, provide, ref } from 'vue'\nimport { useShortUrlResolver } from 'composables'\nimport { normalizeImageHost } from 'models'\nimport { urlOrigin } from 'utils'\n\n/**\n * Which images a chat loads by itself: hole 20 of\n * docs/specs/organization-isolation.md.\n *\n * The model writes the url of every image in an answer and in the image tool\n * cards (gallery, products, web pages), and a prompt injected through a\n * document, a page or a tool result can make it put the conversation in that\n * url. The browser fetches it as soon as it renders, and the text is gone.\n * So an image loads by itself only from the media of the platform and from\n * the hosts the agent lists (`interface.imageHosts`); any other shows its host\n * and loads on a click, a choice made by whoever reads it.\n *\n * Provided by `PkChatbot` (the app and the widget) and by the pages that show\n * an agent's answers; where nothing is provided, images load as before.\n */\nexport interface ChatImagePolicy {\n /** Host names the agent lists, normalized (`normalizeImageHost`). */\n hosts: string[]\n /** Origins of the platform, which serve the media of a chat. */\n platformOrigins: string[]\n}\n\nexport const ChatImagePolicyKey: InjectionKey<ComputedRef<ChatImagePolicy>> =\n Symbol('ChatImagePolicy')\n\n/**\n * Applies the policy of an agent to the answers rendered below: its listed\n * hosts, and the backend the page talks to, which serves the chat's media.\n * The hosts are normalized again because a preview passes them as typed,\n * before the schema does.\n */\nexport function provideChatImagePolicy(\n hosts: () => string[] | undefined,\n backendUrl: () => string | undefined,\n) {\n provide(\n ChatImagePolicyKey,\n computed(() => ({\n hosts: (hosts() ?? []).map(normalizeImageHost),\n platformOrigins: [urlOrigin(backendUrl())].filter(\n (origin): origin is string => !!origin,\n ),\n })),\n )\n}\n\n/**\n * The host an image url points to, for the placeholder, or `undefined` when\n * it does not parse.\n */\nexport function imageHostOf(src: string, pageUrl: string): string | undefined {\n try {\n return new URL(src, pageUrl).hostname || undefined\n } catch {\n return undefined\n }\n}\n\n/**\n * The paths the platform serves the media of a chat from (`media.service.ts`\n * and `chatMedia.service.ts` in the backend). Only these: the same origin\n * answers sign-in and OAuth routes that redirect to a url read from the query,\n * which would carry an answer anywhere. A short link (`/api/r/<hash>`) is not\n * among them either: `useChatImageGate` judges it by the url it stands for,\n * since a set of links prepared in advance could spell a secret out.\n */\nconst PLATFORM_MEDIA_PATH =\n /^\\/api\\/v1\\/(?:public\\/medias\\/[^/]+|[^/]+\\/agents\\/[^/]+\\/chats\\/[^/]+\\/media\\/[^/]+\\/(?:view|download))$/\n\n/**\n * Whether an image may load without a click. `data:` and `blob:` images never\n * reach the network; everything else needs the media of the platform or a\n * listed host, over https. The page's own origin gets no exception: a site,\n * the platform's included, often redirects wherever its query says.\n */\nexport function isImageAllowed(\n src: string,\n policy: ChatImagePolicy,\n pageUrl: string,\n): boolean {\n let url: URL\n try {\n url = new URL(src, pageUrl)\n } catch {\n return false\n }\n if (url.protocol === 'data:' || url.protocol === 'blob:') {\n return true\n }\n if (policy.platformOrigins.includes(url.origin)) {\n return PLATFORM_MEDIA_PATH.test(url.pathname)\n }\n return url.protocol === 'https:' && policy.hosts.includes(url.hostname)\n}\n\n/**\n * The policy of the surrounding chat, with the images released by a click.\n * A release is per url and lasts as long as the component that asked. A\n * short link of the platform is judged, and named, by the url it stands for:\n * it waits until the resolver brings that url back.\n */\nexport function useChatImageGate() {\n const policy = inject(ChatImagePolicyKey, undefined)\n const shortUrls = useShortUrlResolver()\n const released = ref(new Set<string>())\n const pageUrl = () =>\n typeof window === 'undefined'\n ? 'https://localhost/'\n : window.location.href\n const target = (src: string) => shortUrls.resolve(src).value.url ?? src\n\n const canLoad = (src: string | undefined): boolean =>\n !src ||\n !policy ||\n released.value.has(src) ||\n isImageAllowed(target(src), policy.value, pageUrl())\n\n const release = (src: string) => {\n released.value = new Set(released.value).add(src)\n }\n\n const hostOf = (src: string) => imageHostOf(target(src), pageUrl())\n\n return {\n /** Whether a policy applies here at all. */\n isGated: computed(() => !!policy),\n canLoad,\n release,\n hostOf,\n }\n}\n","<script setup lang=\"ts\">\n import remend from 'remend'\n import { marked, type Token, type Tokens } from 'marked'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n toRef,\n useTemplateRef,\n watch,\n } from 'vue'\n import { refThrottled } from '@vueuse/core'\n import { useI18n } from 'vue-i18n'\n import {\n loadCdnCss,\n getShadowRoot,\n isSameSite,\n stripProviderCitationMarkers,\n } from 'utils'\n import { useShortUrlResolver } from 'composables'\n import { getMarkdownTail } from './utils'\n import {\n escapeHtml,\n HELD_IMAGE_ATTRIBUTE,\n renderKatexPlaceholder,\n sanitizeMarkdownHtml,\n } from './markdownHtml'\n import { useChatImageGate } from './chatImagePolicy'\n\n export type StreamingAnimation =\n 'fadeIn' | 'blurIn' | 'dropIn' | 'slideUp' | 'fadeAndScale' | null\n\n const props = withDefaults(\n defineProps<{\n markdown?: string\n loading?: boolean\n animation?: StreamingAnimation\n animationDuration?: string\n isDark?: boolean\n /**\n * Renders only the last `tailLength` characters, for a live box\n * that follows the bottom of a text too long to parse whole.\n */\n tailLength?: number\n }>(),\n {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\n tailLength: undefined,\n },\n )\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n // --- Lazy-loaded heavy dependencies ---\n\n let beautifulMermaidPromise: Promise<\n typeof import('beautiful-mermaid')\n > | null = null\n function loadBeautifulMermaid() {\n if (!beautifulMermaidPromise) {\n beautifulMermaidPromise = import('beautiful-mermaid')\n }\n return beautifulMermaidPromise\n }\n\n let katexPromise: Promise<(typeof import('katex'))['default']> | null = null\n function loadKatex() {\n if (!katexPromise) {\n katexPromise = import('katex').then((mod) => mod.default)\n }\n return katexPromise\n }\n\n // --- Marked extensions ---\n\n const inlineKatexRule =\n /^(\\${1,2})(?!\\$)((?:\\\\.|[^\\\\\\n])*?(?:\\\\.|[^\\\\\\n$]))\\1(?=[\\s?!.,:\\uFF1F\\uFF01\\u3002\\uFF0C\\uFF1A]|$)/\n const blockKatexRule = /^(\\${1,2})\\n((?:\\\\[^]|[^\\\\])+?)\\n\\1(?:\\n|$)/\n\n marked.use({\n extensions: [\n {\n name: 'inlineKatex',\n level: 'inline',\n start: (src) => {\n const idx = src.indexOf('$')\n if (idx === -1) {\n return undefined\n }\n if (idx === 0 || src.charAt(idx - 1) === ' ') {\n return idx\n }\n return undefined\n },\n tokenizer(src) {\n const match = src.match(inlineKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'inlineKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return renderKatexPlaceholder(token.text, token.displayMode)\n },\n },\n {\n name: 'blockKatex',\n level: 'block',\n tokenizer(src) {\n const match = src.match(blockKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'blockKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return (\n renderKatexPlaceholder(token.text, token.displayMode) +\n '\\n'\n )\n },\n },\n ],\n })\n\n marked.use({\n extensions: [\n {\n name: 'thinking',\n level: 'block',\n start: (src) => src.indexOf('<thinking>'),\n tokenizer(src) {\n const match = /^<thinking>([\\s\\S]*?)<\\/thinking>/.exec(src)\n if (!match) {\n return\n }\n const token = {\n type: 'thinking',\n raw: match[0],\n text: match[1].trim(),\n tokens: [] as Token[],\n }\n this.lexer.blockTokens(token.text, token.tokens)\n return token\n },\n renderer(token) {\n return `<div class=\"thinking-block\">${this.parser.parse(token.tokens ?? [])}</div>`\n },\n },\n ],\n })\n\n // --- Custom renderer ---\n\n const renderer = new marked.Renderer()\n\n // marked escapes href and title inside its own link renderer. This\n // override replaces that renderer, so until now both went into `v-html`\n // verbatim: a quote in the URL closed the attribute and everything after\n // it became markup, in a document written by a model and, through the\n // knowledge base, by whoever fed it.\n const escapeAttribute = (value: string) =>\n value\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n // Schemes that execute rather than navigate. The link becomes plain text,\n // so the reader still sees what it said.\n const UNSAFE_LINK_SCHEME = /^(?:javascript|data|vbscript|file):/i\n\n // A bare address written in a cell is most of its row: the cell shows it\n // without the scheme and `www.`, with a break after each slash, while the\n // href and the tooltip keep it whole. Set while `renderer.table` renders\n // its cells, which marked does synchronously.\n let isRenderingTable = false\n const shortenAddress = (address: string) =>\n escapeAttribute(\n address.replace(/^https?:\\/\\/(?:www\\.)?/i, '').replace(/\\/$/, ''),\n ).replace(/\\//g, '/<wbr>')\n\n renderer.link = function ({ href, title, text: label, tokens }) {\n const text = this.parser.parseInline(tokens)\n // Control characters go first: the browser strips them before reading\n // the scheme, so they are how `java\\tscript:` gets past a check.\n // eslint-disable-next-line no-control-regex -- they are the point here\n const target = (href ?? '').trim().replace(/[\\x00-\\x1f]/g, '')\n if (!target || UNSAFE_LINK_SCHEME.test(target)) {\n return text\n }\n const isBareAddressInTable = isRenderingTable && label === target\n const tooltip = title || (isBareAddressInTable ? target : '')\n const titleAttr = tooltip ? ` title=\"${escapeAttribute(tooltip)}\"` : ''\n const targetAttrs = isSameSite(target)\n ? ''\n : ' target=\"_blank\" rel=\"noopener noreferrer\"'\n return `<a href=\"${escapeAttribute(target)}\"${titleAttr}${targetAttrs}>${isBareAddressInTable ? shortenAddress(target) : text}</a>`\n }\n\n // A data table (`.u-table`). From three columns up it stacks its rows into\n // blocks when the message is too narrow for them, with the heading of\n // each column, copied into `data-label`, as the label of its value; two\n // columns still fit side by side. The roles keep it a table for screen\n // readers once the style changes its display. Stacked, a cell is a grid\n // of label and value, and every child of a grid is an item of its own:\n // the value goes in one span, or a bold word, a link or the words the\n // stream animates one by one would scatter across both columns.\n renderer.table = function (token) {\n isRenderingTable = true\n try {\n const labels = token.header.map((cell) =>\n escapeAttribute(\n this.parser.parseInline(\n cell.tokens,\n this.parser.textRenderer,\n ),\n ),\n )\n const renderRow = (cells: Tokens.TableCell[]) =>\n `<tr role=\"row\">${cells\n .map((cell, index) => {\n const content = this.parser.parseInline(cell.tokens)\n const align = cell.align ? ` align=\"${cell.align}\"` : ''\n return cell.header\n ? `<th role=\"columnheader\"${align}>${content}</th>`\n : `<td role=\"cell\" data-label=\"${labels[index] ?? ''}\"${align}><span>${content}</span></td>`\n })\n .join('')}</tr>`\n const body = token.rows.length\n ? `<tbody role=\"rowgroup\">${token.rows.map(renderRow).join('')}</tbody>`\n : ''\n // Stacked, the head is out of sight and every row carries the\n // labels: a table with no rows yet (a header-only one, or the\n // stream before its first row) would show nothing at all.\n const tableClass =\n token.header.length >= 3 && token.rows.length\n ? 'u-table u-table--stack'\n : 'u-table'\n return `<div class=\"table-wrapper u-table-scroll\"><table class=\"${tableClass}\" role=\"table\"><thead role=\"rowgroup\">${renderRow(token.header)}</thead>${body}</table></div>\\n`\n } finally {\n isRenderingTable = false\n }\n }\n\n const MERMAID_PREFIXES =\n /^(sequenceDiagram|graph|classDiagram|stateDiagram|erDiagram|flowchart|xychart-beta)/\n\n // A fence holds code to show, not markup. Unescaped, an HTML sample became\n // elements and lost its tags before the highlighter read what was left.\n // Both the highlighter and the diagram renderer read `textContent`, which\n // gives the text back as written.\n renderer.code = ({ text }) => {\n if (MERMAID_PREFIXES.test(text)) {\n return `<pre class=\"mermaid\">${escapeHtml(text)}</pre>`\n }\n return `<pre><code>${escapeHtml(text)}</code></pre>`\n }\n\n // --- Preprocessing pipeline ---\n\n function normalizeLatexDelimiters(md: string): string {\n return md\n .replace(/\\\\\\[([\\s\\S]*?)\\\\\\]/g, (_, content) => `$$${content}$$`)\n .replace(/\\\\\\(([\\s\\S]*?)\\\\\\)/g, (_, content) => `$${content}$`)\n .replace(/^(\\d+)\\.(?!\\s)/gm, '$1\\\\.')\n }\n\n /**\n * Strips JSON objects/arrays that appear outside fenced code blocks.\n * Some models dump tool-call JSON directly into the text response.\n */\n function stripLeakedJson(md: string): string {\n const fenced = new Set<number>()\n const fenceRe = /^(`{3,}|~{3,})[^\\n]*\\n([\\s\\S]*?)\\n\\1/gm\n let fenceMatch: RegExpExecArray | null\n while ((fenceMatch = fenceRe.exec(md)) !== null) {\n for (\n let i = fenceMatch.index;\n i < fenceMatch.index + fenceMatch[0].length;\n i++\n ) {\n fenced.add(i)\n }\n }\n\n return md\n .replace(\n /[{[]([\\s\\S]*?)[}\\]]/g,\n (match, _inner, offset: number) => {\n if (fenced.has(offset)) {\n return match\n }\n try {\n JSON.parse(match)\n return ''\n } catch {\n return match\n }\n },\n )\n .replace(/\\n{3,}/g, '\\n\\n')\n }\n\n // Runs on the accumulated text, not on deltas, so a marker split across two\n // stream chunks still gets caught once both have landed.\n const preprocessors: Array<(md: string) => string> = [\n stripProviderCitationMarkers,\n stripLeakedJson,\n remend,\n normalizeLatexDelimiters,\n ]\n\n // --- Computed HTML ---\n\n const containerRef = useTemplateRef<HTMLDivElement>('container')\n\n // Every render parses the whole text again, and a stream changes it at every\n // delta: the cost of a turn grows with the square of its length. On chat\n // `st0Eg8iG0zUX0HQN` one parse took 24ms at 92KB, thousands of deltas\n // arrived, and the tab froze. The first text renders at once, the changes\n // after it at most once per interval, the last one always included.\n const RENDER_INTERVAL_MS = 100\n const renderedMarkdown = refThrottled(\n toRef(props, 'markdown'),\n RENDER_INTERVAL_MS,\n )\n const visibleMarkdown = computed(() =>\n props.tailLength\n ? getMarkdownTail(renderedMarkdown.value, props.tailLength)\n : renderedMarkdown.value,\n )\n\n // Expand backend short urls (`/api/r/<hash>`) back to their real target so\n // prose (e.g. a bulleted list of links) shows/opens real urls, not the\n // token-cheap short ones the model sees. No-op when no resolver is provided.\n const { resolveText } = useShortUrlResolver()\n const expandedMarkdown = resolveText(visibleMarkdown)\n\n // Inside a chat, an image from a host the agent does not list waits for a\n // click (see chatImagePolicy.ts); elsewhere images load as they always did.\n const imageGate = useChatImageGate()\n\n const html = computed(() => {\n const md = preprocessors.reduce(\n (text, fn) => fn(text),\n expandedMarkdown.value,\n )\n return sanitizeMarkdownHtml(\n marked.parse(md, {\n async: false,\n breaks: true,\n renderer,\n }) as string,\n imageGate.isGated.value\n ? {\n canLoad: imageGate.canLoad,\n hostOf: imageGate.hostOf,\n label: (host) => $t('label.imageHeld', { host }),\n }\n : undefined,\n )\n })\n\n /**\n * A held image is a button carrying its url: a click (or Enter, which a\n * button turns into one) releases that url, and the next render shows\n * the image. It may sit inside a link, which must not open.\n */\n function onContentClick(event: MouseEvent) {\n const held = (event.target as Element | null)?.closest?.(\n `[${HELD_IMAGE_ATTRIBUTE}]`,\n )\n const src = held?.getAttribute(HELD_IMAGE_ATTRIBUTE)\n if (!src) {\n return\n }\n event.preventDefault()\n event.stopPropagation()\n imageGate.release(src)\n }\n\n // --- Post-render processors ---\n\n async function renderMermaid() {\n if (props.loading) {\n return\n }\n\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid:not([data-rendered])',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.textContent?.trim()\n if (!code) {\n continue\n }\n\n try {\n const svg = renderMermaidSVG(code, theme)\n if (node.isConnected) {\n node.dataset.code = code\n node.innerHTML = svg\n node.setAttribute('data-rendered', 'true')\n }\n } catch {\n // Invalid syntax — node left untouched\n }\n }\n }\n\n async function highlightCode() {\n await nextTick()\n const blocks = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre:not(.mermaid) > code:not([data-highlighted])',\n )\n if (!blocks?.length) {\n return\n }\n\n const hljs = (await import('highlight.js/lib/common')).default\n for (const block of blocks) {\n hljs.highlightElement(block)\n block.setAttribute('data-highlighted', 'true')\n }\n }\n\n async function renderKatex() {\n await nextTick()\n const nodes =\n containerRef.value?.querySelectorAll<HTMLElement>('.katex-pending')\n if (!nodes?.length) {\n return\n }\n\n const katex = await loadKatex()\n // Keep this major in step with the installed katex: 0.18 prefixed the\n // internal class names (.sizing became .katex-sizing), so a stylesheet\n // from another major styles nothing. The widget pins the same major\n // again in its vite config, where katex is aliased to the CDN.\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/katex@0.18/dist/katex.min.css',\n getShadowRoot(containerRef.value),\n )\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const tex = node.dataset.katex\n if (!tex) {\n continue\n }\n const displayMode = node.dataset.display === 'true'\n try {\n node.innerHTML = katex.renderToString(decodeURIComponent(tex), {\n throwOnError: false,\n displayMode,\n })\n node.classList.remove('katex-pending')\n } catch {\n // Invalid LaTeX — leave placeholder\n }\n }\n }\n\n async function rerenderMermaidOnThemeChange() {\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid[data-rendered]',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.dataset.code\n if (!code) {\n continue\n }\n try {\n node.innerHTML = renderMermaidSVG(code, theme)\n } catch {\n // Invalid syntax — leave as-is\n }\n }\n }\n\n /**\n * Markdown images come from model output (or from a scraped page), so their\n * urls die often. The markup is injected with `v-html`, so there is no place\n * to bind `@error`: `error` doesn't bubble but it does propagate in the\n * capture phase, so one container listener covers every image, including the\n * ones added by later stream chunks.\n */\n function handleImageError(event: Event) {\n const img = event.target\n if (!(img instanceof HTMLImageElement) || img.dataset.broken) {\n return\n }\n img.dataset.broken = 'true'\n const placeholder = document.createElement('span')\n placeholder.className = 'markdown-broken-image'\n placeholder.textContent = img.alt || $t('label.imageLoadError')\n placeholder.title = img.src\n img.replaceWith(placeholder)\n }\n\n onMounted(() => {\n containerRef.value?.addEventListener('error', handleImageError, true)\n })\n onBeforeUnmount(() => {\n containerRef.value?.removeEventListener('error', handleImageError, true)\n })\n\n watch([html, () => props.loading], renderMermaid, { immediate: true })\n watch(() => props.isDark, rerenderMermaidOnThemeChange)\n watch(html, highlightCode, { immediate: true })\n watch(html, renderKatex, { immediate: true })\n\n // --- Streaming animation (FlowToken-style) ---\n\n let prevCharCount = 0\n\n function createAnimatedSpan(text: string, delay: number): HTMLSpanElement {\n const span = document.createElement('span')\n span.style.cssText = `animation:ft-${props.animation} ${props.animationDuration} ease-out ${delay}ms both;display:inline-block`\n span.textContent = text\n span.addEventListener(\n 'animationend',\n () => {\n const parent = span.parentNode\n if (!parent) {\n return\n }\n parent.replaceChild(document.createTextNode(text), span)\n parent.normalize()\n },\n { once: true },\n )\n return span\n }\n\n function insertAnimatedWords(\n text: string,\n parent: Node,\n refNode: Node | null,\n startIndex: number,\n ): number {\n let idx = startIndex\n const parts = text.split(/(\\s+)/)\n for (const part of parts) {\n if (!part) {\n continue\n }\n if (/^\\s+$/.test(part)) {\n parent.insertBefore(document.createTextNode(part), refNode)\n continue\n }\n parent.insertBefore(createAnimatedSpan(part, idx * 30), refNode)\n idx++\n }\n return idx\n }\n\n function collectTextNodes(root: HTMLElement): Text[] {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n if (\n node.parentElement?.closest(\n 'pre, code, .katex-pending, .markdown-broken-image',\n )\n ) {\n return NodeFilter.FILTER_REJECT\n }\n return NodeFilter.FILTER_ACCEPT\n },\n })\n const nodes: Text[] = []\n while (walker.nextNode()) {\n nodes.push(walker.currentNode as Text)\n }\n return nodes\n }\n\n function annotateNewContent() {\n if (!containerRef.value || !props.loading || !props.animation) {\n return\n }\n\n const textNodes = collectTextNodes(containerRef.value)\n let charsSeen = 0\n let wordIdx = 0\n\n for (const textNode of textNodes) {\n const text = textNode.textContent || ''\n const nodeStart = charsSeen\n const nodeEnd = charsSeen + text.length\n charsSeen = nodeEnd\n\n if (nodeEnd <= prevCharCount) {\n continue\n }\n\n const parent = textNode.parentNode\n if (!parent) {\n continue\n }\n\n // Entirely new node — animate all words\n if (nodeStart >= prevCharCount) {\n const ref = textNode.nextSibling\n parent.removeChild(textNode)\n wordIdx = insertAnimatedWords(text, parent, ref, wordIdx)\n continue\n }\n\n // Partially new — split and animate only the new portion\n const splitAt = prevCharCount - nodeStart\n const newTextNode = textNode.splitText(splitAt)\n const newText = newTextNode.textContent || ''\n const ref = newTextNode.nextSibling\n parent.removeChild(newTextNode)\n wordIdx = insertAnimatedWords(newText, parent, ref, wordIdx)\n }\n\n prevCharCount = charsSeen\n }\n\n watch(\n html,\n async () => {\n await nextTick()\n annotateNewContent()\n },\n { immediate: true },\n )\n\n watch(\n () => props.markdown,\n (newVal, oldVal) => {\n if (!newVal || (oldVal && newVal.length < oldVal.length)) {\n prevCharCount = 0\n }\n },\n )\n</script>\n\n<template>\n <div ref=\"container\" @click=\"onContentClick\" v-html=\"html\"></div>\n</template>\n\n<style>\n .markdown-held-image {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-3);\n font: inherit;\n font-size: var(--text-12);\n vertical-align: middle;\n cursor: pointer;\n }\n\n .markdown-held-image:hover,\n .markdown-held-image:focus-visible {\n background-color: var(--color-surface-2);\n color: var(--color-word-2);\n }\n\n .markdown-broken-image {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-4);\n font-size: var(--text-12);\n vertical-align: middle;\n }\n\n @keyframes ft-fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes ft-blurIn {\n from {\n opacity: 0;\n filter: blur(4px);\n }\n to {\n opacity: 1;\n filter: blur(0px);\n }\n }\n\n @keyframes ft-dropIn {\n from {\n transform: translateY(-8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-slideUp {\n from {\n transform: translateY(8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-fadeAndScale {\n from {\n transform: scale(0.85);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n</style>\n","<script setup lang=\"ts\">\n import remend from 'remend'\n import { marked, type Token, type Tokens } from 'marked'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n toRef,\n useTemplateRef,\n watch,\n } from 'vue'\n import { refThrottled } from '@vueuse/core'\n import { useI18n } from 'vue-i18n'\n import {\n loadCdnCss,\n getShadowRoot,\n isSameSite,\n stripProviderCitationMarkers,\n } from 'utils'\n import { useShortUrlResolver } from 'composables'\n import { getMarkdownTail } from './utils'\n import {\n escapeHtml,\n HELD_IMAGE_ATTRIBUTE,\n renderKatexPlaceholder,\n sanitizeMarkdownHtml,\n } from './markdownHtml'\n import { useChatImageGate } from './chatImagePolicy'\n\n export type StreamingAnimation =\n 'fadeIn' | 'blurIn' | 'dropIn' | 'slideUp' | 'fadeAndScale' | null\n\n const props = withDefaults(\n defineProps<{\n markdown?: string\n loading?: boolean\n animation?: StreamingAnimation\n animationDuration?: string\n isDark?: boolean\n /**\n * Renders only the last `tailLength` characters, for a live box\n * that follows the bottom of a text too long to parse whole.\n */\n tailLength?: number\n }>(),\n {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\n tailLength: undefined,\n },\n )\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n // --- Lazy-loaded heavy dependencies ---\n\n let beautifulMermaidPromise: Promise<\n typeof import('beautiful-mermaid')\n > | null = null\n function loadBeautifulMermaid() {\n if (!beautifulMermaidPromise) {\n beautifulMermaidPromise = import('beautiful-mermaid')\n }\n return beautifulMermaidPromise\n }\n\n let katexPromise: Promise<(typeof import('katex'))['default']> | null = null\n function loadKatex() {\n if (!katexPromise) {\n katexPromise = import('katex').then((mod) => mod.default)\n }\n return katexPromise\n }\n\n // --- Marked extensions ---\n\n const inlineKatexRule =\n /^(\\${1,2})(?!\\$)((?:\\\\.|[^\\\\\\n])*?(?:\\\\.|[^\\\\\\n$]))\\1(?=[\\s?!.,:\\uFF1F\\uFF01\\u3002\\uFF0C\\uFF1A]|$)/\n const blockKatexRule = /^(\\${1,2})\\n((?:\\\\[^]|[^\\\\])+?)\\n\\1(?:\\n|$)/\n\n marked.use({\n extensions: [\n {\n name: 'inlineKatex',\n level: 'inline',\n start: (src) => {\n const idx = src.indexOf('$')\n if (idx === -1) {\n return undefined\n }\n if (idx === 0 || src.charAt(idx - 1) === ' ') {\n return idx\n }\n return undefined\n },\n tokenizer(src) {\n const match = src.match(inlineKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'inlineKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return renderKatexPlaceholder(token.text, token.displayMode)\n },\n },\n {\n name: 'blockKatex',\n level: 'block',\n tokenizer(src) {\n const match = src.match(blockKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'blockKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return (\n renderKatexPlaceholder(token.text, token.displayMode) +\n '\\n'\n )\n },\n },\n ],\n })\n\n marked.use({\n extensions: [\n {\n name: 'thinking',\n level: 'block',\n start: (src) => src.indexOf('<thinking>'),\n tokenizer(src) {\n const match = /^<thinking>([\\s\\S]*?)<\\/thinking>/.exec(src)\n if (!match) {\n return\n }\n const token = {\n type: 'thinking',\n raw: match[0],\n text: match[1].trim(),\n tokens: [] as Token[],\n }\n this.lexer.blockTokens(token.text, token.tokens)\n return token\n },\n renderer(token) {\n return `<div class=\"thinking-block\">${this.parser.parse(token.tokens ?? [])}</div>`\n },\n },\n ],\n })\n\n // --- Custom renderer ---\n\n const renderer = new marked.Renderer()\n\n // marked escapes href and title inside its own link renderer. This\n // override replaces that renderer, so until now both went into `v-html`\n // verbatim: a quote in the URL closed the attribute and everything after\n // it became markup, in a document written by a model and, through the\n // knowledge base, by whoever fed it.\n const escapeAttribute = (value: string) =>\n value\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n // Schemes that execute rather than navigate. The link becomes plain text,\n // so the reader still sees what it said.\n const UNSAFE_LINK_SCHEME = /^(?:javascript|data|vbscript|file):/i\n\n // A bare address written in a cell is most of its row: the cell shows it\n // without the scheme and `www.`, with a break after each slash, while the\n // href and the tooltip keep it whole. Set while `renderer.table` renders\n // its cells, which marked does synchronously.\n let isRenderingTable = false\n const shortenAddress = (address: string) =>\n escapeAttribute(\n address.replace(/^https?:\\/\\/(?:www\\.)?/i, '').replace(/\\/$/, ''),\n ).replace(/\\//g, '/<wbr>')\n\n renderer.link = function ({ href, title, text: label, tokens }) {\n const text = this.parser.parseInline(tokens)\n // Control characters go first: the browser strips them before reading\n // the scheme, so they are how `java\\tscript:` gets past a check.\n // eslint-disable-next-line no-control-regex -- they are the point here\n const target = (href ?? '').trim().replace(/[\\x00-\\x1f]/g, '')\n if (!target || UNSAFE_LINK_SCHEME.test(target)) {\n return text\n }\n const isBareAddressInTable = isRenderingTable && label === target\n const tooltip = title || (isBareAddressInTable ? target : '')\n const titleAttr = tooltip ? ` title=\"${escapeAttribute(tooltip)}\"` : ''\n const targetAttrs = isSameSite(target)\n ? ''\n : ' target=\"_blank\" rel=\"noopener noreferrer\"'\n return `<a href=\"${escapeAttribute(target)}\"${titleAttr}${targetAttrs}>${isBareAddressInTable ? shortenAddress(target) : text}</a>`\n }\n\n // A data table (`.u-table`). From three columns up it stacks its rows into\n // blocks when the message is too narrow for them, with the heading of\n // each column, copied into `data-label`, as the label of its value; two\n // columns still fit side by side. The roles keep it a table for screen\n // readers once the style changes its display. Stacked, a cell is a grid\n // of label and value, and every child of a grid is an item of its own:\n // the value goes in one span, or a bold word, a link or the words the\n // stream animates one by one would scatter across both columns.\n renderer.table = function (token) {\n isRenderingTable = true\n try {\n const labels = token.header.map((cell) =>\n escapeAttribute(\n this.parser.parseInline(\n cell.tokens,\n this.parser.textRenderer,\n ),\n ),\n )\n const renderRow = (cells: Tokens.TableCell[]) =>\n `<tr role=\"row\">${cells\n .map((cell, index) => {\n const content = this.parser.parseInline(cell.tokens)\n const align = cell.align ? ` align=\"${cell.align}\"` : ''\n return cell.header\n ? `<th role=\"columnheader\"${align}>${content}</th>`\n : `<td role=\"cell\" data-label=\"${labels[index] ?? ''}\"${align}><span>${content}</span></td>`\n })\n .join('')}</tr>`\n const body = token.rows.length\n ? `<tbody role=\"rowgroup\">${token.rows.map(renderRow).join('')}</tbody>`\n : ''\n // Stacked, the head is out of sight and every row carries the\n // labels: a table with no rows yet (a header-only one, or the\n // stream before its first row) would show nothing at all.\n const tableClass =\n token.header.length >= 3 && token.rows.length\n ? 'u-table u-table--stack'\n : 'u-table'\n return `<div class=\"table-wrapper u-table-scroll\"><table class=\"${tableClass}\" role=\"table\"><thead role=\"rowgroup\">${renderRow(token.header)}</thead>${body}</table></div>\\n`\n } finally {\n isRenderingTable = false\n }\n }\n\n const MERMAID_PREFIXES =\n /^(sequenceDiagram|graph|classDiagram|stateDiagram|erDiagram|flowchart|xychart-beta)/\n\n // A fence holds code to show, not markup. Unescaped, an HTML sample became\n // elements and lost its tags before the highlighter read what was left.\n // Both the highlighter and the diagram renderer read `textContent`, which\n // gives the text back as written.\n renderer.code = ({ text }) => {\n if (MERMAID_PREFIXES.test(text)) {\n return `<pre class=\"mermaid\">${escapeHtml(text)}</pre>`\n }\n return `<pre><code>${escapeHtml(text)}</code></pre>`\n }\n\n // --- Preprocessing pipeline ---\n\n function normalizeLatexDelimiters(md: string): string {\n return md\n .replace(/\\\\\\[([\\s\\S]*?)\\\\\\]/g, (_, content) => `$$${content}$$`)\n .replace(/\\\\\\(([\\s\\S]*?)\\\\\\)/g, (_, content) => `$${content}$`)\n .replace(/^(\\d+)\\.(?!\\s)/gm, '$1\\\\.')\n }\n\n /**\n * Strips JSON objects/arrays that appear outside fenced code blocks.\n * Some models dump tool-call JSON directly into the text response.\n */\n function stripLeakedJson(md: string): string {\n const fenced = new Set<number>()\n const fenceRe = /^(`{3,}|~{3,})[^\\n]*\\n([\\s\\S]*?)\\n\\1/gm\n let fenceMatch: RegExpExecArray | null\n while ((fenceMatch = fenceRe.exec(md)) !== null) {\n for (\n let i = fenceMatch.index;\n i < fenceMatch.index + fenceMatch[0].length;\n i++\n ) {\n fenced.add(i)\n }\n }\n\n return md\n .replace(\n /[{[]([\\s\\S]*?)[}\\]]/g,\n (match, _inner, offset: number) => {\n if (fenced.has(offset)) {\n return match\n }\n try {\n JSON.parse(match)\n return ''\n } catch {\n return match\n }\n },\n )\n .replace(/\\n{3,}/g, '\\n\\n')\n }\n\n // Runs on the accumulated text, not on deltas, so a marker split across two\n // stream chunks still gets caught once both have landed.\n const preprocessors: Array<(md: string) => string> = [\n stripProviderCitationMarkers,\n stripLeakedJson,\n remend,\n normalizeLatexDelimiters,\n ]\n\n // --- Computed HTML ---\n\n const containerRef = useTemplateRef<HTMLDivElement>('container')\n\n // Every render parses the whole text again, and a stream changes it at every\n // delta: the cost of a turn grows with the square of its length. On chat\n // `st0Eg8iG0zUX0HQN` one parse took 24ms at 92KB, thousands of deltas\n // arrived, and the tab froze. The first text renders at once, the changes\n // after it at most once per interval, the last one always included.\n const RENDER_INTERVAL_MS = 100\n const renderedMarkdown = refThrottled(\n toRef(props, 'markdown'),\n RENDER_INTERVAL_MS,\n )\n const visibleMarkdown = computed(() =>\n props.tailLength\n ? getMarkdownTail(renderedMarkdown.value, props.tailLength)\n : renderedMarkdown.value,\n )\n\n // Expand backend short urls (`/api/r/<hash>`) back to their real target so\n // prose (e.g. a bulleted list of links) shows/opens real urls, not the\n // token-cheap short ones the model sees. No-op when no resolver is provided.\n const { resolveText } = useShortUrlResolver()\n const expandedMarkdown = resolveText(visibleMarkdown)\n\n // Inside a chat, an image from a host the agent does not list waits for a\n // click (see chatImagePolicy.ts); elsewhere images load as they always did.\n const imageGate = useChatImageGate()\n\n const html = computed(() => {\n const md = preprocessors.reduce(\n (text, fn) => fn(text),\n expandedMarkdown.value,\n )\n return sanitizeMarkdownHtml(\n marked.parse(md, {\n async: false,\n breaks: true,\n renderer,\n }) as string,\n imageGate.isGated.value\n ? {\n canLoad: imageGate.canLoad,\n hostOf: imageGate.hostOf,\n label: (host) => $t('label.imageHeld', { host }),\n }\n : undefined,\n )\n })\n\n /**\n * A held image is a button carrying its url: a click (or Enter, which a\n * button turns into one) releases that url, and the next render shows\n * the image. It may sit inside a link, which must not open.\n */\n function onContentClick(event: MouseEvent) {\n const held = (event.target as Element | null)?.closest?.(\n `[${HELD_IMAGE_ATTRIBUTE}]`,\n )\n const src = held?.getAttribute(HELD_IMAGE_ATTRIBUTE)\n if (!src) {\n return\n }\n event.preventDefault()\n event.stopPropagation()\n imageGate.release(src)\n }\n\n // --- Post-render processors ---\n\n async function renderMermaid() {\n if (props.loading) {\n return\n }\n\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid:not([data-rendered])',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.textContent?.trim()\n if (!code) {\n continue\n }\n\n try {\n const svg = renderMermaidSVG(code, theme)\n if (node.isConnected) {\n node.dataset.code = code\n node.innerHTML = svg\n node.setAttribute('data-rendered', 'true')\n }\n } catch {\n // Invalid syntax — node left untouched\n }\n }\n }\n\n async function highlightCode() {\n await nextTick()\n const blocks = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre:not(.mermaid) > code:not([data-highlighted])',\n )\n if (!blocks?.length) {\n return\n }\n\n const hljs = (await import('highlight.js/lib/common')).default\n for (const block of blocks) {\n hljs.highlightElement(block)\n block.setAttribute('data-highlighted', 'true')\n }\n }\n\n async function renderKatex() {\n await nextTick()\n const nodes =\n containerRef.value?.querySelectorAll<HTMLElement>('.katex-pending')\n if (!nodes?.length) {\n return\n }\n\n const katex = await loadKatex()\n // Keep this major in step with the installed katex: 0.18 prefixed the\n // internal class names (.sizing became .katex-sizing), so a stylesheet\n // from another major styles nothing. The widget pins the same major\n // again in its vite config, where katex is aliased to the CDN.\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/katex@0.18/dist/katex.min.css',\n getShadowRoot(containerRef.value),\n )\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const tex = node.dataset.katex\n if (!tex) {\n continue\n }\n const displayMode = node.dataset.display === 'true'\n try {\n node.innerHTML = katex.renderToString(decodeURIComponent(tex), {\n throwOnError: false,\n displayMode,\n })\n node.classList.remove('katex-pending')\n } catch {\n // Invalid LaTeX — leave placeholder\n }\n }\n }\n\n async function rerenderMermaidOnThemeChange() {\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid[data-rendered]',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.dataset.code\n if (!code) {\n continue\n }\n try {\n node.innerHTML = renderMermaidSVG(code, theme)\n } catch {\n // Invalid syntax — leave as-is\n }\n }\n }\n\n /**\n * Markdown images come from model output (or from a scraped page), so their\n * urls die often. The markup is injected with `v-html`, so there is no place\n * to bind `@error`: `error` doesn't bubble but it does propagate in the\n * capture phase, so one container listener covers every image, including the\n * ones added by later stream chunks.\n */\n function handleImageError(event: Event) {\n const img = event.target\n if (!(img instanceof HTMLImageElement) || img.dataset.broken) {\n return\n }\n img.dataset.broken = 'true'\n const placeholder = document.createElement('span')\n placeholder.className = 'markdown-broken-image'\n placeholder.textContent = img.alt || $t('label.imageLoadError')\n placeholder.title = img.src\n img.replaceWith(placeholder)\n }\n\n onMounted(() => {\n containerRef.value?.addEventListener('error', handleImageError, true)\n })\n onBeforeUnmount(() => {\n containerRef.value?.removeEventListener('error', handleImageError, true)\n })\n\n watch([html, () => props.loading], renderMermaid, { immediate: true })\n watch(() => props.isDark, rerenderMermaidOnThemeChange)\n watch(html, highlightCode, { immediate: true })\n watch(html, renderKatex, { immediate: true })\n\n // --- Streaming animation (FlowToken-style) ---\n\n let prevCharCount = 0\n\n function createAnimatedSpan(text: string, delay: number): HTMLSpanElement {\n const span = document.createElement('span')\n span.style.cssText = `animation:ft-${props.animation} ${props.animationDuration} ease-out ${delay}ms both;display:inline-block`\n span.textContent = text\n span.addEventListener(\n 'animationend',\n () => {\n const parent = span.parentNode\n if (!parent) {\n return\n }\n parent.replaceChild(document.createTextNode(text), span)\n parent.normalize()\n },\n { once: true },\n )\n return span\n }\n\n function insertAnimatedWords(\n text: string,\n parent: Node,\n refNode: Node | null,\n startIndex: number,\n ): number {\n let idx = startIndex\n const parts = text.split(/(\\s+)/)\n for (const part of parts) {\n if (!part) {\n continue\n }\n if (/^\\s+$/.test(part)) {\n parent.insertBefore(document.createTextNode(part), refNode)\n continue\n }\n parent.insertBefore(createAnimatedSpan(part, idx * 30), refNode)\n idx++\n }\n return idx\n }\n\n function collectTextNodes(root: HTMLElement): Text[] {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n if (\n node.parentElement?.closest(\n 'pre, code, .katex-pending, .markdown-broken-image',\n )\n ) {\n return NodeFilter.FILTER_REJECT\n }\n return NodeFilter.FILTER_ACCEPT\n },\n })\n const nodes: Text[] = []\n while (walker.nextNode()) {\n nodes.push(walker.currentNode as Text)\n }\n return nodes\n }\n\n function annotateNewContent() {\n if (!containerRef.value || !props.loading || !props.animation) {\n return\n }\n\n const textNodes = collectTextNodes(containerRef.value)\n let charsSeen = 0\n let wordIdx = 0\n\n for (const textNode of textNodes) {\n const text = textNode.textContent || ''\n const nodeStart = charsSeen\n const nodeEnd = charsSeen + text.length\n charsSeen = nodeEnd\n\n if (nodeEnd <= prevCharCount) {\n continue\n }\n\n const parent = textNode.parentNode\n if (!parent) {\n continue\n }\n\n // Entirely new node — animate all words\n if (nodeStart >= prevCharCount) {\n const ref = textNode.nextSibling\n parent.removeChild(textNode)\n wordIdx = insertAnimatedWords(text, parent, ref, wordIdx)\n continue\n }\n\n // Partially new — split and animate only the new portion\n const splitAt = prevCharCount - nodeStart\n const newTextNode = textNode.splitText(splitAt)\n const newText = newTextNode.textContent || ''\n const ref = newTextNode.nextSibling\n parent.removeChild(newTextNode)\n wordIdx = insertAnimatedWords(newText, parent, ref, wordIdx)\n }\n\n prevCharCount = charsSeen\n }\n\n watch(\n html,\n async () => {\n await nextTick()\n annotateNewContent()\n },\n { immediate: true },\n )\n\n watch(\n () => props.markdown,\n (newVal, oldVal) => {\n if (!newVal || (oldVal && newVal.length < oldVal.length)) {\n prevCharCount = 0\n }\n },\n )\n</script>\n\n<template>\n <div ref=\"container\" @click=\"onContentClick\" v-html=\"html\"></div>\n</template>\n\n<style>\n .markdown-held-image {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-3);\n font: inherit;\n font-size: var(--text-12);\n vertical-align: middle;\n cursor: pointer;\n }\n\n .markdown-held-image:hover,\n .markdown-held-image:focus-visible {\n background-color: var(--color-surface-2);\n color: var(--color-word-2);\n }\n\n .markdown-broken-image {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-4);\n font-size: var(--text-12);\n vertical-align: middle;\n }\n\n @keyframes ft-fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes ft-blurIn {\n from {\n opacity: 0;\n filter: blur(4px);\n }\n to {\n opacity: 1;\n filter: blur(0px);\n }\n }\n\n @keyframes ft-dropIn {\n from {\n transform: translateY(-8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-slideUp {\n from {\n transform: translateY(8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-fadeAndScale {\n from {\n transform: scale(0.85);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n</style>\n"],"ignoreList":[1,2,3],"mappings":";;;;;;;;;;AAyBA,IAAM4E,KAAmB,iCAUnBC,IACF,qGAMEC,KAAmB;AAMzB,SAAgBC,GAA6B,GAAsB;CAI/D,OAHKC,KAGEA,EACF,QAAQJ,IAAkB,EAAE,CAAC,CAC7B,QAAQC,GAAiB,EAAE,CAAC,CAC5B,QAAQC,IAAkB,EAAE;AACrC;;;ACxDA,IAAIG,KAAG,OAAO,gBAAejF,IAAG,OAAO,kBAAqBC,KAAG,OAAO,2BAA8BC,KAAE,OAAO,uBAA0BC,KAAG,OAAO,UAAU,gBAAemF,KAAG,OAAO,UAAU,sBAAyBlF,MAAG,GAAE,GAAE,MAAIoF,KAAKC,IAAER,GAAGQ,GAAED,GAAE;CAAC,YAAW;CAAK,cAAa;CAAK,UAAS;CAAK,OAAME;AAAC,CAAC,IAAE,EAAEF,KAAGE,GAAErF,MAAG,GAAE,MAAI;CAAC,KAAI,IAAIqF,KAAK,AAAIF,MAAE,CAAC,GAAG,GAAG,KAAKA,GAAEE,CAAC,KAAGtF,GAAEqF,GAAEC,GAAEF,EAAEE,EAAE;CAAE,IAAGxF,IAAE,KAAI,IAAIwF,KAAKxF,GAAEsF,CAAC,GAAE,GAAG,KAAKA,GAAEE,CAAC,KAAGtF,GAAEqF,GAAEC,GAAEF,EAAEE,EAAE;CAAE,OAAOD;AAAC,GAAEG,MAAG,GAAE,MAAI5F,EAAGyF,GAAExF,GAAGuF,CAAC,CAAC,GAAMK,IAAE;CAAC,OAAM;CAAE,cAAa;CAAE,YAAW;CAAE,YAAW;CAAE,WAAU;CAAE,gBAAe;AAAC,GAAEC,KAAG,uBAAsBC,MAAG,MAAGN,MAAI,KAAK,KAAGA,KAAG,OAAKA,KAAG,KAAIO,MAAI,GAAE,MAAI;CAAC,IAAIN,IAAEF;CAAE,IAAGC,EAAEC,OAAK,OAAKD,EAAEC,OAAK,OAAKD,EAAEC,OAAK,KAAI,KAAG;MAAO;EAAC,OAAKK,GAAGN,EAAEC,EAAE,KAAGA,IAAEF,IAAE,IAAG,KAAG;EAAE,IAAGE,MAAIF,KAAGC,EAAEC,OAAK,OAAKD,EAAEC,OAAK,KAAI,OAAQ;EAAG,KAAG;CAAE;CAAC,OAAOD,EAAEC,OAAK,MAAIA,IAAE,IAAE;AAAE,GAAEO,MAAI,GAAE,GAAE,MAAI;CAAC,IAAIC,IAAE,GAAE,IAAEV,GAAEW,IAAE,IAAMC,IAAEZ;CAAE,SAAO;EAAC,OAAKY,IAAEV,KAAGD,EAAEW,OAAK,MAAK,KAAG;EAAE,IAAGX,EAAEW,OAAK,KAAI;GAAC,KAAG,GAAE,KAAGX,EAAEW,IAAE,OAAK,MAAI,IAAE,GAAE,IAAEA,GAAE,IAAE;GAAM;EAAQ;EAAC,IAAIC,IAAED,IAAEV,IAAEM,GAAGP,GAAEW,CAAC,IAAE;EAAG,IAAGC,MAAI,IAAG,OAAO;GAAC,cAAaD;GAAE,YAAWD,IAAEC,IAAE,IAAE;GAAE,YAAWF;EAAC;EAAE,IAAEG,GAAE,IAAE;CAAK;AAAC,GAAE/F,MAAI,GAAE,GAAE,GAAE,MAAI;CAAC,IAAI,IAAEkF;CAAE,KAAI,IAAIW,IAAE,GAAEA,IAAED,GAAE,KAAG,GAAE;EAAC,OAAK,IAAER,KAAGD,EAAE,OAAK,MAAK,KAAG;EAAE,IAAGA,EAAE,OAAK,KAAI,OAAQ;EAAG,KAAG,GAAEA,EAAE,OAAK,QAAM,KAAG;CAAG;CAAC,OAAO;AAAC,GAAEc,MAAI,GAAE,GAAE,GAAE,GAAE,MAAI;CAAC,IAAIJ,IAAEX,IAAEU;CAAE,EAAE,KAAKL,EAAE,cAAaM,GAAEA,IAAE,CAAC,GAAEV,EAAE,KAAKI,EAAE,YAAWM,IAAE,GAAE,KAAK,IAAIT,IAAE,GAAED,EAAE,MAAM,CAAC;AAAE,GAAElF,KAAI,GAAE,GAAE,GAAE,MAAI;CAAC,IAAI,IAAEiF;CAAE,OAAK,IAAEE,KAAGD,EAAE,OAAK,MAAK,KAAG;CAAE,IAAIU,IAAE;CAAE,OAAK,IAAET,KAAGD,EAAE,OAAKS,EAAE,OAAM,KAAG,GAAE,KAAG;CAAE,IAAGC,IAAED,EAAE,QAAO,OAAQ;CAAM,OAAK,IAAER,IAAG;EAAC,IAAGD,EAAE,OAAK,OAAKA,EAAE,OAAK,OAAKA,EAAE,OAAK,MAAK,OAAQ;EAAM,KAAG;CAAE;CAAC,OAAQ;AAAI,GAAEgB,MAAI,GAAE,GAAE,GAAE,MAAI;CAAC,IAAI,IAAEP,IAAER,KAAGD,EAAES,IAAE,OAAK,OAAKA,IAAE,IAAEA,GAAEC,IAAEF,GAAGR,GAAEC,GAAE,CAAC,GAAEU,IAAEX,EAAE,MAAMU,EAAE,cAAa,CAAC,CAAC,CAAC,MAAML,EAAE;CAAE,IAAG,CAACM,GAAE,OAAO;CAAK,IAAG,GAAEC,GAAEK,KAAGN,GAAEO,IAAEN,EAAE;CAAG,OAAOM,MAAI,OAAKD,EAAE,SAAS,GAAG,IAAE,QAAMH,GAAGf,GAAEE,GAAEQ,GAAEC,EAAE,eAAaT,GAAEW,EAAE,MAAM,GAAE;EAAC,MAAKM;EAAE,QAAON,EAAE;EAAO,YAAWF,EAAE;EAAW,YAAWA,EAAE;CAAU;AAAE,GAAES,MAAI,GAAE,GAAE,GAAE,MAAI;CAAC,IAAI,IAAEtG,GAAGmF,GAAED,GAAEE,GAAEQ,EAAE,UAAU;CAAE,IAAG,MAAI,MAAIA,EAAE,eAAa,GAAE,OAAO;CAAE,IAAIC,IAAE;CAAE,OAAKA,IAAET,KAAGD,EAAEU,OAAK,MAAK,KAAG;CAAE,OAAOA,MAAIT,KAAGD,EAAEU,OAAK,QAAMA,IAAE,MAAIT,KAAGS,IAAE,KAAGD,EAAE,aAAW,IAAE;AAAE,GAAEW,MAAI,GAAE,MAAI;CAAC,IAAInB,IAAED,EAAE,QAAOS,IAAE,MAAK,IAAE;CAAE,OAAK,IAAER,IAAG;EAAC,IAAIS,IAAEV,EAAE,QAAQ,MACr6D,CAAC;EAAE,MAAI,OAAK,IAAEC;EAAG,IAAIU,IAAEF,IAAEU,GAAGnB,GAAE,GAAEU,GAAED,CAAC,IAAE;EAAG,KAAGE,MAAI,OAAK,IAAE,OAAMF,IAAE3F,EAAGkF,GAAEW,GAAED,GAAED,CAAC,KAAGV,EAAE,KAAKK,EAAE,cAAa,GAAEM,CAAC,GAAE,IAAE,QAAMX,EAAE,KAAKK,EAAE,YAAW,GAAE,KAAK,IAAIM,IAAE,GAAET,CAAC,CAAC,IAAE,IAAEe,GAAGhB,GAAED,GAAE,GAAEW,CAAC,GAAE,IAAEA,IAAE;CAAE;CAAC,OAAOD;AAAC,GAAEY,MAAG,GAAE,MAAI;CAAC,IAAIpB,IAAEF,IAAE;CAAE,OAAKE,IAAED,EAAE,UAAQA,EAAEC,OAAK,MAAK,KAAG;CAAE,OAAOA;AAAC,GAAEqB,MAAI,GAAE,MAAI;CAAC,IAAIrB,IAAEF,IAAE;CAAE,OAAKE,IAAED,EAAE,WAASA,EAAEC,OAAK,OAAKD,EAAEC,OAAK,OAAKD,EAAEC,OAAK,QAAO,KAAG;CAAE,OAAOA,IAAED,EAAE,UAAQA,EAAEC,OAAK;AACjW,GAAElF,MAAI,GAAE,GAAE,MAAI;CAAC,IAAI0F,IAAER;CAAE,SAAO;EAAC,IAAIuB,IAAExB,EAAE,QAAQ,KAAIS,CAAC;EAAE,IAAGe,MAAI,IAAG,OAAQ;EAAG,IAAId,IAAEc,IAAEf,KAAGT,EAAEwB,IAAE,OAAK,QAAMzB,EAAEyB,IAAE,OAAKpB,EAAE;EAAM,IAAGL,EAAEyB,OAAKpB,EAAE,SAAO,CAACM,GAAE,OAAOc;EAAE,IAAEA,IAAE;CAAE;AAAC,GAAEC,MAAI,GAAE,MAAI;CAAC,IAAIxB,IAAED,EAAE,QAAOS,IAAE,IAAG,IAAE,GAAEC,IAAE;CAAE,OAAKA,IAAET,IAAG;EAAC,IAAGQ,IAAE,GAAE;GAAC,IAAG,IAAE1F,GAAGiF,GAAED,GAAEW,CAAC,GAAEA,MAAI,IAAG;GAAM,IAAIE,IAAES,GAAErB,GAAEU,CAAC;GAAE,IAAEA,GAAE,IAAEE,IAAEF,GAAE,IAAEE;GAAE;EAAQ;EAAC,IAAGb,EAAEW,OAAKN,EAAE,OAAM;GAAC,EAAE,KAAKA,EAAE,gBAAeK,GAAEC,CAAC,GAAE,IAAE,IAAG,KAAG;GAAE;EAAQ;EAAC,IAAGV,EAAEU,OAAK,QACnWY,GAAGtB,GAAEU,CAAC,GAAE;GAAC,IAAE,IAAG,KAAG;GAAE;EAAQ;EAAC,IAAGV,EAAEU,OAAK,KAAI;GAAC,KAAG;GAAE;EAAQ;EAAC,IAAIC,IAAEU,GAAErB,GAAEU,CAAC;EAAE,IAAEA,MAAI,MAAIX,EAAE,KAAKK,EAAE,WAAUK,GAAEE,CAAC,GAAE,IAAE,KAAI,IAAEA;CAAE;CAAC,OAAOF,KAAG,KAAGV,EAAE,KAAKK,EAAE,gBAAeK,GAAER,CAAC,GAAE;EAAC,OAAMQ;EAAE,WAAU;CAAC,KAAG;AAAI,GAAEiB,MAAG,MAAG;CAAC,IAAI3B,IAAE,IAAI,WAAWC,EAAE,MAAM;CAAsB,OAAO;EAAC,MAAKA;EAAE,SAAQD;EAAE,WAA3CqB,GAAGpB,GAAED,CAAgD;EAAE,UAA7C0B,GAAGzB,GAAED,CAAiD;EAAE,UAAS;EAAK,aAAY;EAAK,aAAY;CAAI;AAAC,GAAE/E,KAAE,MAAKC,IAAE,MAAK4G,KAAE,MAAG;CAAC,IAAG5G,MAAI,QAAM+E,MAAIhF,IAAE,OAAOC;CAAE,IAAI8E,IAAE2B,GAAG1B,CAAC;CAAE,OAAO,KAAEA,GAAE,IAAED,GAAEA;AAAC,GAAE7E,UAAM;CAAC,KAAE,MAAK,IAAE;AAAK,GAAE6G,MAAG,GAAE,MAAIhC,KAAGC,EAAE,QAAQ,SAAOA,EAAE,cAAY,QAAMA,EAAE,aAAW,OAAKD,IAAE,IAAE,KAAMC,EAAE,QAAQD,OAAKK,EAAE,OAAwKjF,KAAG,GAAE,MAAI6E,EAAE,QAAQD,OAAKK,EAAE,WAAUhF,MAAG,GAAE,MAAI;CAAC,IAAI6E,IAAE4B,EAAE7B,CAAC,GAAES,IAAEV,IAAEA,GAAE,IAAE;CAAE,KAAI,IAAIW,IAAEV,EAAE,QAAQS,CAAC,GAAEC,MAAI,IAAG,IAAEV,EAAE,QAAQS,GAAEC,CAAC,GAAE,EAAE,QAAQA,OAAKN,EAAE,SAAO,KAAG,GAAE,KAAG,KAAG,KAAG;CAAE,OAAO;AAAC,GAAE8B,qBAAE,IAAI,WAAY,GAAEC,KAAG,MAAGnC,MAAI,iBAAeA,MAAI,cAAaoC,MAAI,GAAE,MAAIrC,MAAI,OAAKC,MAAI,SAAO,eAAaD,MAAI,OAAKC,MAAI,eAAa,SAAOD,MAAI,OAAKC,MAAI,SAAO,gBAAcD,MAAI,OAAKC,MAAI,gBAAc,SAAO,MAAKqC,MAAI,GAAE,MAAItC,IAAEC,MAAI,gBAAc,SAAO,gBAAcA,MAAI,gBAAcA,IAAEA,MAAI,iBAAe,SAAO,gBAAesC,MAAG,MAAGtC,EAAE,SAAS,GAAG,KAAGA,EAAE,SAAS,KAAK,KAAGA,EAAE,SAAS,KAAK,GAAEuC,MAAI,GAAE,GAAE,MAAI;CAAC,IAAI9B,IAAET,EAAED,IAAE;CAAG,IAAGC,EAAED,OAAK,MAAK;EAAC,IAAGU,MAAI,KAAI,OAAO;GAAC,SAAQR;GAAE,QAAO;EAAC;EAAE,IAAIuB,IAAEY,GAAGnC,GAAEQ,CAAC;EAAE,OAAOe,MAAI,OAAK,OAAK;GAAC,SAAQA;GAAE,QAAO;EAAC;CAAC;CAAC,IAAGxB,EAAED,OAAK,OAAK,CAACoC,EAAGlC,CAAC,GAAE;EAAC,IAAIuB,IAAEf,MAAI;EAAI,OAAO;GAAC,SAAQ4B,GAAGpC,GAAEuB,CAAC;GAAE,QAAOA,IAAE,IAAE;EAAC;CAAC;CAAC,OAAO;AAAI,GAAEgB,KAAG,MAAG;CAAC,IAAG,EAAC,MAAKzC,GAAE,SAAQE,MAAGD,GAAES,IAAEV,EAAE,QAAO,IAAE,IAAI,WAAWU,CAAC,GAAEC,IAAE,QAAOC,IAAE;CAAE,OAAKA,IAAEF,IAAG;EAAC,EAAEE,KAAGD,MAAI,SAAO,IAAE;EAAE,IAAIE,IAAEX,EAAEU,OAAKP,EAAE,QAAMmC,GAAGxC,GAAEY,GAAED,CAAC,IAAE;EAAK,AAAGE,MAAI,OAAM,KAAG,KAAW,IAAEA,EAAE,SAAQA,EAAE,WAAS,MAAI,EAAED,IAAE,KAAGD,MAAI,SAAO,IAAE,IAAG,KAAGE,EAAE;CAAO;CAAC,OAAO;AAAC,GAAE6B,KAAG,GAAE,MAAI1C,IAAE,KAAGA,KAAGC,EAAE,KAAK,SAAO,MAAOA,EAAE,aAAW,SAAO,EAAE,WAASsC,GAAGtC,EAAE,IAAI,IAAEwC,EAAGxC,CAAC,IAAEkC,KAAGlC,EAAE,SAASD,OAAK,IAAG2C,MAAI,GAAE,GAAE,GAAE,MAAI;CAAC,IAAG,EAAC,MAAK,GAAE,SAAQhC,MAAGV,GAAEW,IAAE,IAAI,WAAWV,IAAEF,CAAC,GAAEa,IAAE;CAAE,KAAI,IAAIM,IAAEjB,IAAE,GAAEiB,KAAGnB,GAAE,KAAK,EAAEmB,OAAK,OAAKR,EAAEQ,OAAKd,EAAE,UAAQ,IAAE,IAAG,EAAEc,IAAEnB,KAAGa;CAAE,IAAIK,IAAE;CAAM,KAAI,IAAIC,IAAEnB,GAAEmB,IAAEjB,GAAE,KAAG,GAAE,KAAGU,EAAEO,IAAEnB,OAAK,MAAI,EAAEmB,KAAG,IAAGR,EAAEQ,OAAKd,EAAE,UAAQ,EAAEc,OAAK,MAAI,IAAE,KAAM,EAAEA,OAAK,QAAM,IAAEA,IAAE,KAAG,EAAEA,IAAE,OAAK;AAAM,GAAEyB,MAAG,MAAG;CAAC,IAAG,EAAC,MAAK5C,MAAGC,GAAEC,IAAEF,EAAE,QAAOU,IAAE,IAAI,WAAWR,CAAC,GAAE,IAAE;CAAE,OAAK,IAAEA,IAAG;EAAC,IAAIS,IAAEX,EAAE,QAAQ,MAC7nE,CAAC;EAAE,MAAI,OAAK,IAAEE,IAAGyC,GAAG1C,GAAE,GAAEU,GAAED,CAAC,GAAE,IAAEC,IAAE;CAAE;CAAC,OAAOD;AAAC,GAAEpF,MAAG,GAAE,MAAI0E,IAAE,KAAGA,KAAGC,EAAE,KAAK,SAAO,MAAOA,EAAE,gBAAc,SAAO,EAAE,cAAYA,EAAE,KAAK,SAAS,IAAI,IAAE2C,GAAG3C,CAAC,IAAEkC,KAAGlC,EAAE,YAAYD,OAAK,IAAG8C,MAAG,MAAG;CAAC,IAAG,EAAC,MAAK9C,GAAE,SAAQE,MAAGD,GAAES,IAAEV,EAAE,QAAO,IAAE,IAAI,WAAWU,CAAC,GAAEC,IAAE;CAAM,KAAI,IAAIC,IAAE,GAAEA,IAAEF,GAAE,KAAG,GAAG,IAAGV,EAAEY,OAAK,MACnR,IAAE;MAAe,IAAG,EAAEA,KAAG,MAAMV,EAAEU,OAAKP,EAAE,OAAM;EAAC,IAAGL,EAAEY,OAAK,KAAI,IAAE;OAAW,IAAGZ,EAAEY,OAAK,KAAI;GAAC,IAAIC,IAAEb,EAAEY,IAAE;GAAG,IAAEC,MAAI,KAAK,MAAIA,KAAG,OAAKA,KAAG,OAAKA,KAAG,OAAKA,KAAG,OAAKA,MAAI;EAAK;CAAC;CAAE,OAAO;AAAC,GAAEtF,MAAG,GAAE,MAAIyE,IAAE,KAAGA,KAAGC,EAAE,KAAK,SAAO,MAAOA,EAAE,gBAAc,SAAO,EAAE,cAAYA,EAAE,KAAK,SAAS,GAAG,IAAE6C,GAAG7C,CAAC,IAAEkC,KAAGlC,EAAE,YAAYD,OAAK,IAAOxE,KAAG,GAAE,MAAIwG,GAAEF,EAAE7B,CAAC,GAAED,CAAC,GAAEvE,KAAG,GAAE,MAAIL,EAAE0G,EAAE7B,CAAC,GAAED,CAAC,GAAMkD,KAAG,6CAA4CxH,MAAE,MAAG,CAACuE,KAAG,OAAOA,KAAG,YAAU,CAACA,EAAE,SAAS,GAAG,IAAEA,IAAEA,EAAE,QAAQiD,KAAI,GAAE,GAAE,GAAE,MAAI1H,EAAEyE,GAAE,CAAC,IAAED,IAAE,GAAGE,EAAE,KAAKQ,GAAG,GAAM0C,KAAG,GAAE,EAAC,WAAUpD,GAAE,cAAaE,GAAE,OAAMQ,QAAK;CAAC,IAAI,IAAET,EAAE,YAAYD,GAAEC,EAAE,SAAO,CAAC,GAAEU,IAAE,MAAI,KAAGV,EAAE,SAAO,IAAE;CAAE,OAAOA,EAAE,MAAM,KAAK,IAAI,GAAEU,IAAET,IAAE,CAAC,CAAC,CAAC,CAAC,MAAMQ,CAAC;AAAC,GAAE/E,KAAE;CAAC,WAAU;CAAI,cAAa;CAAE,OAAM;AAAmB,GAAEC,KAAE;CAAC,WAAU;CAAI,cAAa;CAAE,OAAM;AAAe,GAAEC,KAAE;CAAC,WAAU;CAAI,cAAa;CAAE,OAAM;AAAmB,GAAEC,KAAE;CAAC,WAAU;CAAI,cAAa;CAAE,OAAM;AAAe,GAAEC,KAAE;CAAC,WAAU;CAAI,cAAa;CAAE,OAAM;AAAc,GAAEC,KAAE;CAAC,WAAU;CAAI,cAAa;CAAE,OAAM;AAAe,GAAEC,KAAE;CAAC,WAAU;CAAI,cAAa;CAAE,OAAM;AAAe,GAAEC,KAAE;CAAC,WAAU;CAAI,cAAa;CAAE,OAAM;AAAe,GAAE2H,IAAE,eAAc1H,KAAE,qBAAoBC,KAAE,kBAAiB4H,KAAG,YAAeC,KAAE,MAAG;CAAC,IAAG,CAAChE,GAAE,OAAQ;CAAM,IAAID,IAAEC,EAAE,WAAW,CAAC;CAAE,OAAOD,KAAG,MAAIA,KAAG,MAAIA,KAAG,MAAIA,KAAG,MAAIA,KAAG,MAAIA,KAAG,OAAKA,MAAI,MAAQ5D,GAAE,KAAK6D,CAAC;AAAC,GAAsBiE,KAAI,GAAE,MAAI;CAAC,IAAIhE,IAAE;CAAE,KAAI,IAAIQ,IAAEV,IAAE,GAAEU,KAAG,GAAE,KAAK,IAAGT,EAAES,OAAK,KAAI,KAAG;MAAO,IAAGT,EAAES,OAAK,QAAM,KAAKR,MAAI,IAAG,OAAOQ;CAAE,OAAQ;AAAE,GAAErE,MAAG,GAAE,MAAI;CAAC,IAAI6D,IAAE;CAAE,KAAI,IAAIQ,IAAEV,IAAE,GAAEU,IAAET,EAAE,QAAO,KAAG,GAAE,IAAGA,EAAES,OAAK,KAAI,KAAG;MAAO,IAAGT,EAAES,OAAK,QAAM,KAAKR,MAAI,IAAG,OAAOQ;CAAE,OAAQ;AAAE,GAAEpE,MAAG,GAAE,MAAIoG,EAAEZ,EAAE7B,CAAC,GAAED,CAAC,GAA0BzD,MAAG,GAAE,GAAE,MAAI;CAAC,IAAImE,IAAE;CAAE,KAAI,IAAIQ,IAAElB,IAAE,GAAEkB,KAAG,GAAE,KAAK,IAAGjB,EAAEiB,OAAK,MAClmD;EAAC,IAAEA,IAAE;EAAE;CAAK;CAAC,IAAI,IAAEjB,EAAE;CAAO,KAAI,IAAIiB,IAAElB,GAAEkB,IAAEjB,EAAE,QAAO,KAAG,GAAE,IAAGA,EAAEiB,OAAK,MAClE;EAAC,IAAEA;EAAE;CAAK;CAAC,IAAIP,IAAEV,EAAE,UAAUS,GAAE,CAAC,GAAEE,IAAE,GAAEC,IAAE;CAAM,KAAI,IAAIK,KAAKP,GAAE,IAAGO,MAAIhB,GAAE,KAAG;MAAO,IAAGgB,MAAI,OAAKA,MAAI,KAAI;EAAC,IAAE;EAAK;CAAK;CAAC,OAAON,KAAG,KAAG,CAACC;AAAC,GAAMyD,MAAI,GAAE,GAAE,GAAE,MAAIpE,MAAI,QAAMwC,EAAEzC,GAAED,CAAC,IAAE,KAAKE,MAAI,OAAKQ,MAAI,OAAKV,IAAEC,EAAE,KAAK,SAAO,IAAEA,EAAE,KAAKD,IAAE,KAAG,QAAM,MAAIE,MAAI,QAAM,CAACA,KAAGA,MAAI,OAAKA,MAAI,OAAKA,MAAI,UACtQ,CAACQ,KAAGA,MAAI,OAAKA,MAAI,OAAKA,MAAI,OAC5BlE,MAAE,MAAGyD,MAAI,OAAKA,MAAI,OAAKA,MAAI,MAC5BuE,MAAI,GAAE,MAAI,CAAC,EAAEvE,KAAGD,KAAGiE,EAAEhE,CAAC,KAAGgE,EAAEjE,CAAC,IAAGvD,MAAI,GAAE,GAAE,GAAE,MAAI;CAAC,IAAI,IAAE+H,GAAGvE,GAAED,CAAC,GAAEW,IAAE,CAAC,CAACX,KAAG,CAACxD,GAAEwD,CAAC,GAAEY,IAAE,CAAC,CAACX,KAAG,CAACzD,GAAEyD,CAAC;CAAE,OAAO,KAAGC,IAAE,KAAI,KAAG,CAACQ,IAAE,EAAC,OAAM,GAAK,IAAEE,KAAGV,IAAE,KAAI,KAAGS,IAAE;EAAC,OAAM;EAAK,qBAAoB;CAAC,IAAE,EAAC,OAAM,GAAK;AAAC,GAAE+D,MAAG,MAAG;CAAC,IAAI1E,IAAE8B,EAAE7B,CAAC,GAAEC,IAAE,GAAEQ,IAAE,IAAM,IAAET,EAAE;CAAO,KAAI,IAAIU,IAAE,GAAEA,IAAE,GAAE,KAAG,GAAE;EAAC,IAAGV,EAAEU,OAAK,OAAKX,EAAE,QAAQW,OAAKN,EAAE,OAAM;GAAC,EAAEJ,EAAEU,EAAE,MAAI,IAAE;GAAO;EAAQ;EAAC,IAAIC,IAAED,IAAE,IAAEV,EAAEU,IAAE,KAAG,IAAGE,IAAEF,IAAE,IAAE,IAAEV,EAAEU,IAAE,KAAG;EAAG,IAAG2D,GAAGtE,GAAEW,GAAEC,GAAEC,CAAC,GAAE;EAAS,IAAIK,IAAEzE,GAAGmE,GAAEC,GAAEX,GAAEQ,CAAC;EAAE,EAAE,UAAQ,KAAG,GAAE,IAAEQ,EAAE;CAAqB;CAAC,OAAOhB;AAAC,GAAExD,MAAI,GAAE,GAAE,GAAE,MAAI,CAAC,EAAEwD,MAAI,QAAMwC,EAAEzC,GAAED,CAAC,KAAG1E,GAAE2E,GAAED,CAAC,KAAGzE,GAAE0E,GAAED,CAAC,KAAGE,MAAI,OAAKQ,MAAI,OAAKR,KAAGQ,KAAGuD,EAAE/D,CAAC,KAAG+D,EAAEvD,CAAC,IAAG/D,MAAG,MAAG;CAAC,IAAIqD,IAAE8B,EAAE7B,CAAC,GAAEC,IAAE,GAAEQ,IAAET,EAAE;CAAO,KAAI,IAAI,IAAE,GAAE,IAAES,GAAE,KAAG,GAAE;EAAC,IAAGT,EAAE,OAAK,OAAKD,EAAE,QAAQ,OAAKK,EAAE,OAAM;EAAS,IAAIM,IAAE,IAAE,IAAEV,EAAE,IAAE,KAAG,IAAGW,IAAE,IAAEF,IAAE,IAAET,EAAE,IAAE,KAAG;EAAG,GAAGD,GAAE,GAAEW,GAAEC,CAAC,MAAI,KAAG;CAAG;CAAC,OAAOV;AAAC,GAAEtD,MAAG,MAAG;CAAC,IAAIoD,IAAE8B,EAAE7B,CAAC,GAAEC,IAAE,GAAEQ,IAAE;CAAE,KAAI,IAAI,IAAE,GAAE,IAAET,EAAE,QAAO,KAAG,GAAE,EAAE,OAAK,OAAKD,EAAE,QAAQ,OAAKK,EAAE,QAAM,KAAG,KAAGK,KAAG,MAAI,KAAG,KAAK,MAAMA,IAAE,CAAC,IAAG,IAAE;CAAG,OAAOA,KAAG,MAAI,KAAG,KAAK,MAAMA,IAAE,CAAC,IAAGR;AAAC,GAAErD,KAAE,MAAGxB,GAAE4E,GAAE,GAAG,GAAE8E,MAAG,MAAG9E,MAAI,MAAIA,MAAI,OAAKA,MAAI,OAAKA,MAAI,MACv5BnD,MAAI,GAAE,GAAE,GAAE,GAAE,MAAI;CAAC,IAAG,EAAEiI,GAAG7E,CAAC,KAAG6E,GAAGrE,CAAC,IAAG,OAAQ;CAAM,IAAGV,IAAE,EAAE,SAAQ;EAAC,IAAIW,IAAEV,EAAE,QAAQ,MAClFD,CAAC;EAAE,EAAE,UAAQW,MAAI,KAAGV,EAAE,SAAOU,GAAE,EAAE,SAAOpE,GAAE0D,GAAED,GAAE,GAAG;CAAE;CAAC,OAAO,EAAE;AAAM,GAAEjD,MAAI,GAAE,GAAE,GAAE,MAAI;CAAC,IAAI,IAAEkD,EAAE,MAAKU,IAAEX,GAAEY,IAAE;CAAM,IAAE,KAAG,EAAED,IAAE,OAAK,SAAO,KAAG,GAAE,IAAE;CAAM,IAAIE,IAAEX,IAAES;CAAE,IAAGE,IAAE,GAAE,OAAQ;CAAM,IAAIK,IAAEP,IAAE,IAAE,EAAEA,IAAE,KAAG,IAAGQ,IAAEP,IAAE,OAAKM,GAAEgE,IAAEhF,IAAE,EAAE,SAAO,EAAEA,KAAG;CAAG,OAAO+D,EAAE9C,CAAC,KAAG8C,EAAEiB,CAAC,KAAGpI,GAAG,GAAE6D,GAAEQ,GAAE+D,GAAExE,CAAC,KAAGgC,EAAEzC,GAAEU,CAAC,KAAGrF,GAAE2E,GAAEU,CAAC,KAAGpF,GAAE0E,GAAEU,CAAC,IAAE,KAAM,KAAK,MAAME,IAAE,CAAC,IAAE,KAAI;AAAC,GAAEsE,MAAG,MAAG;CAAC,IAAInF,IAAE8B,EAAE7B,CAAC,GAAEC,IAAED,EAAE,QAAOS,IAAE;EAAC,SAAQ;EAAG,QAAO;CAAK,GAAE,IAAE,IAAMC,IAAE;CAAE,OAAKA,IAAET,IAAG;EAAC,IAAGD,EAAEU,OAAK,OAAKX,EAAE,QAAQW,OAAKN,EAAE,OAAM;GAAC,KAAG;GAAE;EAAQ;EAAC,IAAIO,IAAED,GAAEE,IAAEF,IAAE;EAAE,OAAKE,IAAEX,KAAGD,EAAEY,OAAK,OAAKb,EAAE,QAAQa,OAAKR,EAAE,QAAO,KAAG;EAAE,IAAEQ,GAAE9D,GAAGiD,GAAEY,GAAEC,GAAEH,CAAC,MAAI,IAAE,CAAC;CAAG;CAAC,OAAO;AAAC,GAAE1D,MAAI,GAAE,GAAE,MAAI;CAAC,IAAG,CAACgD,KAAG6D,EAAE,KAAK7D,CAAC,GAAE,OAAQ;CAAK,IAAIyB,IAAExB,EAAE,UAAU,GAAEC,CAAC,CAAC,CAAC,YAAY,IAChnB,GAAES,IAAEc,MAAI,KAAG,IAAEA,IAAE,GAAEb,IAAEX,EAAE,UAAUU,GAAET,CAAC;CAAE,OAAO/D,GAAE,KAAKyE,CAAC,KAAGZ,EAAE,SAAS,IACjE,IAAE,KAAKzD,GAAE0D,GAAEC,GAAE,GAAG;AAAC,GAAEmF,MAAG,MAAG;CAAC,IAAIrF,IAAEoD,EAAEnD,GAAEtE,EAAC;CAAE,IAAG,CAACqE,GAAE,OAAOC;CAAE,IAAIC,IAAEF,EAAE,IAAGU,IAAET,EAAE,YAAYD,EAAE,EAAE;CAAE,OAAOxE,EAAEyE,GAAES,CAAC,KAAGjF,EAAEwE,GAAES,CAAC,KAAG1D,GAAGiD,GAAEC,GAAEQ,CAAC,IAAET,IAAEpD,EAAEoD,CAAC,IAAE,KAAI,IAAEC,EAAE,SAAS,GAAG,IAAE,GAAGD,EAAE,KAAG,GAAGA,EAAE,MAAIA;AAAC,GAAEhD,MAAI,GAAE,GAAE,MAAI;CAAC,IAAG,CAAC+C,KAAG6D,EAAE,KAAK7D,CAAC,GAAE,OAAQ;CAAK,IAAIyB,IAAExB,EAAE,UAAU,GAAEC,CAAC,CAAC,CAAC,YAAY,IACvP,GAAES,IAAEc,MAAI,KAAG,IAAEA,IAAE,GAAEb,IAAEX,EAAE,UAAUU,GAAET,CAAC;CAAE,OAAO/D,GAAE,KAAKyE,CAAC,KAAGZ,EAAE,SAAS,IACjE,IAAE,KAAKzD,GAAE0D,GAAEC,GAAE,GAAG;AAAC,GAAEqF,MAAG,MAAG;CAAC,IAAIvF,IAAEoD,EAAEnD,GAAErE,EAAC;CAAE,IAAG,CAACoE,GAAE;EAAC,IAAIyB,IAAE2B,EAAEnD,GAAEhE,EAAC;EAAE,IAAGwF,GAAE;GAAC,IAAId,IAAEV,EAAE,YAAYwB,EAAE,EAAE;GAAE,IAAG,EAAEjG,EAAEyE,GAAEU,CAAC,KAAGlF,EAAEwE,GAAEU,CAAC,MAAIwE,GAAGlF,CAAC,GAAE,OAAO,GAAGA,EAAE;EAAE;EAAC,OAAOA;CAAC;CAAC,IAAIC,IAAEF,EAAE,IAAGU,IAAET,EAAE,YAAYD,EAAE,EAAE;CAAE,OAAOxE,EAAEyE,GAAES,CAAC,KAAGjF,EAAEwE,GAAES,CAAC,KAAGzD,GAAGgD,GAAEC,GAAEQ,CAAC,IAAET,IAAEkF,GAAGlF,CAAC,IAAE,GAAGA,EAAE,MAAIA;AAAC,GAAE/C,MAAI,GAAE,MAAI;CAAC,IAAG,EAAC,MAAKgD,MAAGD;CAAE,OAAOC,EAAEF,OAAK,OAAKC,EAAE,QAAQD,OAAKK,EAAE,SAAOH,EAAEF,IAAE,OAAK,OAAKE,EAAEF,IAAE,OAAK,OAAKE,EAAEF,IAAE,OAAK,QAAM,CAAC0C,EAAEzC,GAAED,CAAC;AAAC,GAAEyF,MAAG,MAAG;CAAC,IAAIzF,IAAE8B,EAAE7B,CAAC;CAAE,KAAI,IAAIC,IAAED,EAAE,QAAQ,GAAG,GAAEC,MAAI,IAAG,IAAED,EAAE,QAAQ,KAAIC,IAAE,CAAC,GAAE;EAAC,IAAG,CAAChD,GAAG8C,GAAEE,CAAC,GAAE;EAAS,IAAIQ,IAAER,IAAE,IAAED,EAAEC,IAAE,KAAG,IAAG,IAAEA,IAAED,EAAE,SAAO,IAAEA,EAAEC,IAAE,KAAG,IAAGS,IAAE,CAACD,KAAGlE,GAAEkE,CAAC,GAAEE,IAAE,CAAC,KAAGpE,GAAE,CAAC;EAAE,IAAG,EAAEmE,KAAGC,MAAI,EAAEF,KAAG,KAAGuD,EAAEvD,CAAC,KAAGuD,EAAE,CAAC,MAAI,CAACrD,GAAE,OAAOV;CAAC;CAAC,OAAQ;AAAE,GAAEwF,MAAG,MAAG;CAAC,IAAG,CAACtC,EAAEnD,GAAEnE,EAAC,GAAE,OAAOmE;CAAE,IAAIC,IAAEuF,GAAGxF,CAAC;CAAE,IAAGC,MAAI,MAAI1E,EAAEyE,GAAEC,CAAC,KAAGzE,EAAEwE,GAAEC,CAAC,GAAE,OAAOD;CAAE,IAAIS,IAAET,EAAE,UAAUC,IAAE,CAAC;CAAE,OAAO,CAACQ,KAAGmD,EAAE,KAAKnD,CAAC,IAAET,IAAEyE,GAAGzE,CAAC,IAAE,KAAI,IAAE,GAAGA,EAAE,KAAGA;AAAC,GAAE0F,MAAG,MAAG;CAAC,IAAI3F,IAAE8B,EAAE7B,CAAC;CAAE,KAAI,IAAIC,IAAED,EAAE,QAAQ,GAAG,GAAEC,MAAI,IAAG,IAAED,EAAE,QAAQ,KAAIC,IAAE,CAAC,GAAE,IAAGF,EAAE,QAAQE,OAAKG,EAAE,SAAOJ,EAAEC,IAAE,OAAK,OAAKD,EAAEC,IAAE,OAAK,OAAKD,EAAEC,IAAE,OAAK,QAAM,CAACwC,EAAE1C,GAAEE,CAAC,KAAG,CAAC5E,GAAE0E,GAAEE,CAAC,GAAE;EAAC,IAAI,IAAEA,IAAE,IAAED,EAAEC,IAAE,KAAG,IAAGuB,IAAEvB,IAAED,EAAE,SAAO,IAAEA,EAAEC,IAAE,KAAG;EAAG,IAAG,KAAGuB,KAAGwC,EAAE,CAAC,KAAGA,EAAExC,CAAC,GAAE;EAAS,OAAOvB;CAAC;CAAC,OAAQ;AAAE,GAAE0F,MAAG,MAAG;CAAC,IAAI5F,IAAEC,EAAE;CAAO,OAAKD,IAAE,KAAGC,EAAED,IAAE,OAAK,OAC1+B;CAAuE,OAA/DA,IAAEC,EAAE,SAA+C,GAAjCA,EAAE,MAAM,GAAED,CAA0B,EAAE,GAAvBC,EAAE,MAAMD,CAAkB,MAAW,GAAGC,EAAE;AAAE,GAAE9C,MAAG,MAAG;CAAC,IAAG,CAAC8C,EAAE,SAAS,IAAI,GAAE,OAAO;CAAK,IAAID,IAAEC,EAAE,MAAM,GAAE,EAAE;CAAE,IAAGpD,EAAEmD,CAAC,IAAE,KAAI,GAAE,OAAO;CAAK,IAAIU,IAAEV,EAAE,QAAQ,IAAI,GAAEyB,IAAEkE,GAAG3F,CAAC;CAAE,OAAOU,MAAI,MAAIe,MAAI,MAAIf,IAAEe,IAAE,GAAGzB,EAAE,OAAK;AAAI,GAAE8F,MAAG,MAAG;CAAC,IAAG,CAAC1C,EAAEnD,GAAElE,EAAC,GAAE,OAAOkE;CAAE,IAAIC,IAAEyF,GAAG1F,CAAC;CAAE,IAAGC,MAAI,IAAG,OAAOD;CAAE,IAAIS,IAAET,EAAE,UAAUC,IAAE,CAAC;CAAE,IAAG,CAACQ,KAAGmD,EAAE,KAAKnD,CAAC,KAAGlF,EAAEyE,GAAEC,CAAC,KAAGzE,EAAEwE,GAAEC,CAAC,GAAE,OAAOD;CAAE,IAAGtD,GAAGsD,CAAC,IAAE,KAAI,GAAE;EAAC,IAAIU,IAAExD,GAAG8C,CAAC;EAAE,OAAOU,MAAI,OAAOiF,GAAG3F,CAAC,IAANU;CAAO;CAAC,OAAOV;AAAC,GAAE7C,MAAG,MAAG;CAAC,IAAI4C,IAAEnD,EAAEoD,CAAC,GAAEC,IAAEwE,GAAGzE,CAAC;CAAE,OAAOD,IAAE,KAAI,KAAGE,IAAE,KAAI;AAAC,GAAE7C,MAAI,GAAE,GAAE,MAAI,CAAC2C,KAAG6D,EAAE,KAAK7D,CAAC,KAAGxE,EAAEyE,GAAEC,CAAC,KAAGzE,EAAEwE,GAAEC,CAAC,IAAE,KAAK3D,GAAE0D,GAAEC,GAAE,GAAG,GAAE+F,MAAG,MAAG;CAAC,IAAGjC,GAAG,KAAK/D,CAAC,GAAE,OAAOA;CAAE,IAAID,IAAEoD,EAAEnD,GAAEpE,EAAC;CAAE,IAAG,CAACmE,GAAE,OAAOC;CAAE,IAAIC,IAAEF,EAAE;CAAyB,OAAO3C,GAAG4C,GAAEC,GAAhCD,EAAE,YAAYD,EAAE,EAAkB,CAAC,IAAEC,IAAErD,GAAGqD,CAAC,IAAE,KAAI,IAAE7C,GAAG6C,CAAC,IAAEA,IAAE,GAAGA,EAAE,OAAKA;AAAC,GAAM3C,KAAG,oBAAmB6I,KAAG,aAAYC,MAAG,MAAGnG,EAAE,SAAS,GAAG,KAAGA,EAAE,SAAS,KAAK,KAAGA,EAAE,SAAS,KAAK,GAAE1C,MAAI,GAAE,MAAI;CAAC,IAAI2C,IAAED,EAAED,IAAE;CAAG,OAAOE,MAAI,KAAK,KAAGiG,GAAG,KAAKjG,CAAC;AAAC,GAAEoG,MAAG,MAAG;CAAC,IAAItG,IAAEC,EAAE,MAAM3C,EAAE;CAAE,IAAG,CAAC0C,KAAGA,EAAE,UAAQ,KAAK,GAAE,OAAOC;CAAE,IAAIC,IAAEkG,GAAGnG,CAAC;CAAE,KAAI,IAAIS,IAAEV,EAAE,OAAMU,IAAET,EAAE,QAAO,KAAG,GAAE,IAAKA,EAAES,OAAK,OAAMnD,GAAG0C,GAAES,CAAC,KAAI,CAAClF,EAAEyE,GAAES,CAAC,KAAG,EAAER,KAAG5D,GAAE2D,GAAES,CAAC,IAAG,OAAOT,EAAE,UAAU,GAAES,CAAC,CAAC,CAAC,QAAQ;CAAE,OAAOT;AAAC,GAAMsG,MAAG,MAAG;CAAC,IAAIvG,IAAE8B,EAAE7B,CAAC;CAAE,IAAGD,EAAE,WAAU,OAAOC;CAAE,IAAIC,IAAEF,EAAE;CAAS,IAAG,CAACE,GAAE,OAAOD;CAAE,IAAIS,IAAET,EAAE,MAAMC,EAAE,QAAMA,EAAE,SAAS;CAAE,IAAG,CAACQ,KAAGmD,EAAE,KAAKnD,CAAC,GAAE,OAAOT;CAAE,IAAI,IAAE,GAAEU,IAAEV,EAAE,SAAO;CAAE,OAAKU,KAAG,KAAGV,EAAEU,OAAK,MAAK,KAAG,GAAE;CAAK,OAAO,KAAGT,EAAE,YAAUD,IAAEA,IAAE,IAAI,OAAOC,EAAE,YAAU,CAAC;AAAC,GAAM1C,MAAG,MAAGnC,GAAE4E,GAAE,GAAG,GAAExC,MAAG,MAAG;CAAC,IAAIuC,IAAE8B,EAAE7B,CAAC,GAAEC,IAAE;CAAE,KAAI,IAAIQ,IAAE,GAAEA,IAAET,EAAE,QAAO,KAAG,GAAG,AAAGA,EAAES,OAAK,OAAM,KAAG,IAAWV,EAAE,QAAQU,OAAKL,EAAE,SAAOJ,EAAES,OAAK,QAAMA,IAAE,IAAET,EAAE,UAAQA,EAAES,IAAE,OAAK,MAAI,KAAG,IAAE,KAAG;CAAI,OAAOR;AAAC,GAAEwG,MAAG,MAAG;CAAC,IAAGzG,EAAE,SAAS,GAAG,KAAG,CAACA,EAAE,SAAS,IAAI,GAAE,OAAO,GAAGA,EAAE;CAAG,IAAID,IAAEC,EAAE,QAAQ,IAAI;CAAE,OAAOD,MAAI,MAAIC,EAAE,QAAQ,MACziDD,CAAC,MAAI,MAAI,CAACC,EAAE,SAAS,IACtB,IAAE,GAAGA,EAAE;MACJ,GAAGA,EAAE;AAAG,GAAE0G,MAAG,MAAGnJ,GAAGyC,CAAC,IAAE,KAAI,IAAEA,IAAEyG,GAAGzG,CAAC,GAAE2G,MAAG,MAAGnJ,GAAGwC,CAAC,IAAE,KAAI,IAAE,GAAGA,EAAE,KAAGA,GAAM4G,KAAE,+BAA8BnJ,MAAI,GAAE,GAAE,MAAI;CAAC,IAAGuC,EAAE,UAAUD,IAAE,CAAC,CAAC,CAAC,SAAS,GAAG,GAAE,OAAO;CAAK,IAAIyB,IAAEyC,EAAGjE,GAAED,CAAC;CAAE,IAAGyB,MAAI,MAAIjG,EAAEyE,GAAEwB,CAAC,GAAE,OAAO;CAAK,IAAId,IAAEc,IAAE,KAAGxB,EAAEwB,IAAE,OAAK,KAAIb,IAAED,IAAEc,IAAE,IAAEA,GAAEZ,IAAEZ,EAAE,UAAU,GAAEW,CAAC,GAAEM,IAAEjB,EAAE,UAAUwB,IAAE,GAAEzB,CAAC;CAAE,OAAOW,IAAE,GAAGE,EAAE,IAAIK,EAAE,IAAI2F,GAAE,KAAG3G,MAAI,cAAY,GAAGW,IAAIK,MAAI,GAAGL,EAAE,GAAGK,EAAE;AAA8B,GAAE6F,KAAI,GAAE,MAAI;CAAC,KAAI,IAAI7G,IAAE,GAAEA,IAAEF,GAAE,KAAI,IAAGC,EAAEC,OAAK,OAAK,CAAC1E,EAAEyE,GAAEC,CAAC,GAAE;EAAC,IAAGA,IAAE,KAAGD,EAAEC,IAAE,OAAK,KAAI;EAAS,IAAI,IAAE7D,GAAE4D,GAAEC,CAAC;EAAE,IAAG,MAAI,IAAG,OAAOA;EAAE,IAAG,IAAE,IAAED,EAAE,UAAQA,EAAE,IAAE,OAAK,KAAI;GAAC,IAAIwB,IAAExB,EAAE,QAAQ,KAAI,IAAE,CAAC;GAAE,MAAI,OAAK,IAAEwB;EAAG;CAAC;CAAC,OAAOzB;AAAC,GAAErC,MAAI,GAAE,GAAE,MAAI;CAAC,IAAI+C,IAAEV,IAAE,KAAGC,EAAED,IAAE,OAAK,KAAI,IAAEU,IAAEV,IAAE,IAAEA;CAA2O,IAAtO,CAACC,EAAE,UAAUD,IAAE,CAAC,CAAC,CAAC,SAAS,GAAG,KAA2M3D,GAAE4D,GAAED,CAAC,MAAI,IAAG;EAAC,IAAIa,IAAEZ,EAAE,UAAU,GAAE,CAAC;EAAE,IAAGS,GAA0B,OAAO,GAAGG,EAAE,IAA7BZ,EAAE,UAAUD,IAAE,CAAmB,EAAE,IAAI6G,GAAE;EAAG,IAAG3G,MAAI,aAAY;GAAC,IAAIgB,IAAE6F,EAAG9G,GAAED,CAAC;GAAE,OAAOC,EAAE,UAAU,GAAEiB,CAAC,IAAEjB,EAAE,UAAUiB,IAAE,CAAC;EAAC;EAAC,OAAO,GAAGjB,EAAE;CAA8B;CAAC,OAAO;AAAI,GAAErC,KAAI,GAAE,MAAI;CAAC,IAAIsC,IAAED,EAAE,YAAY,IAAI;CAAE,IAAGC,MAAI,MAAI,CAAC1E,EAAEyE,GAAEC,CAAC,GAAE;EAAC,IAAIQ,IAAEhD,GAAGuC,GAAEC,GAAEF,CAAC;EAAE,IAAGU,MAAI,MAAK,OAAOA;CAAC;CAAC,KAAI,IAAIA,IAAET,EAAE,YAAY,GAAG,GAAES,MAAI,IAAG,IAAEA,MAAI,IAAE,KAAGT,EAAE,YAAY,KAAIS,IAAE,CAAC,GAAE,IAAG,CAAClF,EAAEyE,GAAES,CAAC,GAAE;EAAC,IAAIe,IAAE9D,GAAGsC,GAAES,GAAEV,CAAC;EAAE,IAAGyB,MAAI,MAAK,OAAOA;CAAC;CAAC,OAAOxB;AAAC,GAAEpC,KAAG,IAAGC,MAAG,GAAE,IAAE,eAAa;CAAC,IAAIoC,IAAED;CAAE,KAAI,IAAIS,IAAE,GAAEA,IAAE7C,IAAG,KAAG,GAAE;EAAC,IAAI4D,IAAE7D,EAAGsC,GAAEF,CAAC;EAAE,IAAGyB,EAAE,UAAQvB,EAAE,QAAO,OAAOuB;EAAE,IAAEA;CAAE;CAAC,OAAOvB;AAAC,GAAMnC,KAAG,YAAWC,KAAG,sBAAqBsJ,KAAG,YAAWrJ,KAAG,sBAAqBuJ,MAAG,MAAG;CAAC,IAAG,CAACvH,KAAG,OAAOA,KAAG,UAAS,OAAOA;CAAE,IAAID,IAAEC,EAAE,YAAY,IAC9hD;CAAE,IAAGD,MAAI,IAAG,OAAOC;CAAE,IAAIC,IAAED,EAAE,UAAUD,IAAE,CAAC,GAAEU,IAAET,EAAE,UAAU,GAAED,CAAC,GAAE,IAAEE,EAAE,KAAK;CAAE,IAAGnC,GAAG,KAAK,CAAC,KAAG,CAACmC,EAAE,MAAMlC,EAAE,GAAE;EAAC,IAAI4C,IAAEF,EAAE,MAAM,IACrH,CAAC,CAAC,GAAG,EAAE;EAAE,IAAGE,KAAGA,EAAE,KAAK,CAAC,CAAC,SAAO,GAAE,OAAO,GAAGX,EAAE;CAAO;CAAC,IAAGqH,GAAG,KAAK,CAAC,KAAG,CAACpH,EAAE,MAAMjC,EAAE,GAAE;EAAC,IAAI2C,IAAEF,EAAE,MAAM,IAChG,CAAC,CAAC,GAAG,EAAE;EAAE,IAAGE,KAAGA,EAAE,KAAK,CAAC,CAAC,SAAO,GAAE,OAAO,GAAGX,EAAE;CAAO;CAAC,OAAOA;AAAC,GAAM/B,KAAG,4CAA2CwJ,MAAG,MAAG,CAACzH,KAAG,OAAOA,KAAG,YAAU,CAACA,EAAE,SAAS,GAAG,IAAEA,IAAEA,EAAE,QAAQ/B,KAAI,GAAE,GAAE,MAA6B1C,EAAEyE,GAApBS,IAAER,EAAE,MAAmB,IAAEF,IAAE,GAAGE,EAAE,IAAK,GAAMyH,MAAG,MAAGtM,GAAE4E,GAAE,GAAG,GAAE2H,MAAG,MAAG;CAAC,IAAI5H,IAAEoD,EAAEnD,GAAEjE,EAAC;CAAE,IAAGgE,GAAE;EAAC,IAAIE,IAAEF,EAAE;EAAG,IAAG,CAACE,KAAG2D,EAAE,KAAK3D,CAAC,GAAE,OAAOD;EAAE,IAAIS,IAAET,EAAE,YAAYD,EAAE,EAAE;EAAE,IAAGxE,EAAEyE,GAAES,CAAC,KAAGjF,EAAEwE,GAAES,CAAC,GAAE,OAAOT;EAAE,IAAG0H,GAAG1H,CAAC,IAAE,KAAI,GAAE,OAAO,GAAGA,EAAE;CAAG,OAAM;EAAC,IAAIC,IAAEkD,EAAEnD,GAAE/D,EAAC;EAAE,IAAGgE,GAAE;GAAC,IAAIQ,IAAET,EAAE,YAAYC,EAAE,EAAE,CAAC,MAAM,GAAE,CAAC,CAAC;GAAE,IAAG1E,EAAEyE,GAAES,CAAC,KAAGjF,EAAEwE,GAAES,CAAC,GAAE,OAAOT;GAAE,IAAG0H,GAAG1H,CAAC,IAAE,KAAI,GAAE,OAAO,GAAGA,EAAE;EAAE;CAAC;CAAC,OAAOA;AAAC,GAAM9B,MAAE,MAAG8B,MAAI,IAAM7B,MAAG,MAAG6B,MAAI,IAAK8H,IAAE;CAAC,cAAa;CAAE,sBAAqB;CAAE,WAAU;CAAG,iBAAgB;CAAG,OAAM;CAAG,aAAY;CAAG,MAAK;CAAG,0BAAyB;CAAG,wBAAuB;CAAG,0BAAyB;CAAG,aAAY;CAAG,eAAc;CAAG,OAAM;CAAG,cAAa;CAAG,SAAQ;AAAG,GAAEC,KAAG;CAAC;EAAC,SAAQ;GAAC,MAAK;GAAc,QAAON;GAAG,UAASK,EAAE;EAAY;EAAE,WAAU;CAAa;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAsB,QAAOrM;GAAE,UAASqM,EAAE;EAAoB;EAAE,WAAU;CAAqB;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAW,QAAOzB;GAAG,UAASyB,EAAE;EAAS;EAAE,WAAU;CAAU;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAiB,QAAOP;GAAG,UAASO,EAAE;EAAe;EAAE,WAAU;CAAgB;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAQ,QAAOjK;GAAE,UAASiK,EAAE;EAAK;EAAE,WAAU;EAAQ,cAAY,MAAG9H,EAAE,SAAS,+BAA+B,KAAGA,EAAE,SAAS,gCAAS;CAAC;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAa,QAAOgG;GAAG,UAAS8B,EAAE;EAAW;EAAE,WAAU;CAAY;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAO,QAAO1C;GAAG,UAAS0C,EAAE;EAAI;EAAE,WAAU;CAAM;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAyB,QAAOxC;GAAG,UAASwC,EAAE;EAAwB;EAAE,WAAU;CAAQ;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAuB,QAAOrC;GAAG,UAASqC,EAAE;EAAsB;EAAE,WAAU;CAAQ;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAyB,QAAOjC;GAAG,UAASiC,EAAE;EAAwB;EAAE,WAAU;CAAQ;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAa,QAAOxB;GAAG,UAASwB,EAAE;EAAW;EAAE,WAAU;CAAY;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAgB,QAAOH;GAAG,UAASG,EAAE;EAAa;EAAE,WAAU;CAAe;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAQ,QAAOpB;GAAG,UAASoB,EAAE;EAAK;EAAE,WAAU;CAAO;CAAE;EAAC,SAAQ;GAAC,MAAK;GAAc,QAAOnB;GAAG,UAASmB,EAAE;EAAY;EAAE,WAAU;CAAa;AAAC,GAAE1J,MAAG,MAAG;CAAO,IAAI2B,IAAKC,GAAiB,YAAkB;CAAW,OAAO+H,GAAG,QAAQ,EAAC,SAAQ,GAAE,WAAUvG,QAAK,EAAE,SAAO,UAAQtD,GAAE8B,GAAiB,KAAK,KAAG9B,GAAE8B,GAAiB,MAAM,IAAE,EAAE,SAAO,gBAAc7B,GAAG6B,GAAiB,WAAW,IAAE9B,GAAE8B,IAAiBwB,EAAE,CAAC,CAAC,CAAC,KAAK,EAAC,SAAQf,GAAE,aAAYe,QAAKf,EAAE,SAAO,UAAQ;EAAC,SAAQN,GAAEvF,GAAE,CAAC,GAAE6F,CAAC,GAAE,EAAC,SAAO,MAAG5C,GAAE6C,GAAEX,CAAC,EAAC,CAAC;EAAE,aAAYA,MAAI,aAAWyB,IAAE,KAAK;CAAC,IAAE;EAAC,SAAQf;EAAE,aAAYe;CAAC,CAAC;AAAC,GAA2hByG,MAArhB,GAAE,MAAI;CAAO,IAAG,CAACjI,KAAG,OAAOA,KAAG,UAAS,OAAOA;CAAE,IAAIC,IAAED,EAAE,SAAS,GAAG,KAAG,CAACA,EAAE,SAAS,IAAI,IAAEA,EAAE,MAAM,GAAE,EAAE,IAAEA,GAAES,IAAErC,GAAG2B,CAAC,GAAE,KAAMA,GAAiB,YAAkB,CAAC,EAAA,CAAG,KAAI,OAAiB;EAAC,SAAQI,GAAEvF,GAAE,CAAC,GAAEgG,CAAC,GAAE,EAAC,UAAYA,EAAE,YAAkBkH,EAAE,QAAO,CAAC;EAAE,aAAY,KAAK;CAAC,EAAE,GAAEpH,IAAE,CAAC,GAAGD,GAAE,GAAG,CAAC,CAAC,CAAC,MAAM,GAAE,OAAwBG,EAAE,QAAQ,YAAkB,MAAOK,EAAE,QAAQ,YAAkB,EAAG;CAAE,IAAG;EAAC,KAAI,IAAG,EAAC,SAAQL,GAAE,aAAYK,OAAKP,GAAE,IAAG,IAAEE,EAAE,OAAOX,CAAC,GAAEgB,KAAG,QAAMA,EAAEhB,CAAC,GAAE,OAAOA;EAAE,OAAOA,EAAE,SAAS,GAAG,KAAG,CAACA,EAAE,SAAS,IAAI,IAAEA,EAAE,MAAM,GAAE,EAAE,IAAEA;CAAC,UAAQ;EAAC,EAAE;CAAE;AAAC;;;ACX1iG,SAASiI,KAAG;CAAC,OAAM;EAAC,OAAM,CAAC;EAAE,QAAO,CAAC;EAAE,YAAW;EAAK,KAAI,CAAC;EAAE,OAAM;EAAK,UAAS,CAAC;EAAE,UAAS;EAAK,QAAO,CAAC;EAAE,WAAU;EAAK,YAAW;CAAI;AAAC;AAAC,IAAIC,KAAED,GAAE;AAAE,SAASE,GAAE,GAAE;CAAC,KAAEnH;AAAC;AAAC,IAAIoH,KAAE,EAAC,YAAS,KAAI;AAAE,SAASC,GAAE,GAAE;CAAC,IAAIvI,IAAE,CAAC;CAAE,QAAO,MAAG;EAAC,IAAIC,IAAE,KAAK,IAAI,GAAE,KAAK,IAAI,GAAES,IAAE,CAAC,CAAC,GAAE,IAAEV,EAAEC;EAAG,OAAO,MAAI,IAAEiB,EAAEjB,CAAC,GAAE,EAAEA,KAAG,IAAG;CAAC;AAAC;AAAC,SAAS3B,EAAE,GAAE,IAAE,IAAG;CAAC,IAAIoC,IAAE,OAAOQ,KAAG,WAASA,IAAEA,EAAE,QAAOjB,IAAE;EAAC,UAAS,GAAE,MAAI;GAAC,IAAIU,IAAE,OAAOT,KAAG,WAASA,IAAEA,EAAE;GAAO,OAAO,IAAES,EAAE,QAAQ8H,EAAE,OAAM,IAAI,GAAE,IAAE/H,EAAE,QAAQe,GAAEd,CAAC,GAAEV;EAAC;EAAE,gBAAa,IAAI,OAAOS,GAAEV,CAAC;CAAC;CAAE,OAAOC;AAAC;AAAC,IAAIyI,OAAK,IAAE,OAAK;CAAC,IAAG;EAAC,OAAM,CAAC,CAAK,OAAO,iBAAexH,CAAC;CAAC,QAAM;EAAC,OAAM,CAAC;CAAC;AAAC,EAAA,CAAG,GAAEuH,IAAE;CAAC,kBAAiB;CAAyB,mBAAkB;CAAc,wBAAuB;CAAgB,gBAAe;CAAO,YAAW;CAAK,mBAAkB;CAAK,iBAAgB;CAAK,oBAAmB;CAAS,cAAa;CAAO,mBAAkB;CAAM,eAAc;CAAM,iBAAgB;CAAU,qBAAoB;CAAO,WAAU;CAAW,iBAAgB;CAAoB,iBAAgB;CAAW,yBAAwB;CAAiC,0BAAyB;CAAmB,oBAAmB;CAA0B,YAAW;CAAiB,iBAAgB;CAAe,kBAAiB;CAAY,SAAQ;CAAS,cAAa;CAAW,gBAAe;CAAO,iBAAgB;CAAa,mBAAkB;CAAY,iBAAgB;CAAY,kBAAiB;CAAa,gBAAe;CAAY,WAAU;CAAQ,SAAQ;CAAU,mBAAkB;CAAiC,iBAAgB;CAAmC,mBAAkB;CAAK,iBAAgB;CAAK,mBAAkB;CAAgC,qBAAoB;CAAgB,2BAA0B;CAA0C,sCAAqC;CAAsF,YAAW;CAAU,eAAc;CAAW,oBAAmB;CAAoD,uBAAsB;CAAqD,OAAM;CAAe,eAAc;CAAO,UAAS;CAAM,WAAU;CAAM,WAAU;CAAQ,gBAAe;CAAW,WAAU;CAAS,eAAc;CAAO,eAAc;CAAM,gBAAc,MAAO,OAAO,WAAWvH,EAAE,6BAA6B;CAAE,iBAAgBqH,IAAE,MAAO,OAAO,QAAQrH,EAAE,mDAAmD,CAAC;CAAE,SAAQqH,IAAE,MAAO,OAAO,QAAQrH,EAAE,4DAA4D,CAAC;CAAE,kBAAiBqH,IAAE,MAAO,OAAO,QAAQrH,EAAE,gBAAgB,CAAC;CAAE,mBAAkBqH,IAAE,MAAO,OAAO,QAAQrH,EAAE,GAAG,CAAC;CAAE,gBAAeqH,IAAE,MAAO,OAAO,QAAQrH,EAAE,YAAYyH,GAAE,kGAAiG,GAAG,CAAC;CAAE,sBAAqBJ,IAAE,MAAO,OAAO,QAAQrH,EAAE,GAAG,CAAC;AAAC,GAAE0H,KAAG,wBAAuBC,KAAG,yDAAwDC,KAAG,+GAA8GC,KAAE,sEAAqEC,KAAG,wCAAuCC,KAAE,+BAA8BC,KAAG,2JAA0JC,KAAG7K,EAAE4K,EAAE,CAAC,CAAC,QAAQ,SAAQD,EAAC,CAAC,CAAC,QAAQ,cAAa,mBAAmB,CAAC,CAAC,QAAQ,WAAU,uBAAuB,CAAC,CAAC,QAAQ,eAAc,SAAS,CAAC,CAAC,QAAQ,YAAW,sBAAsB,CAAC,CAAC,QAAQ,OAAM,qEAAqE,CAAC,CAAC,QAAQ,SAAQ,mBAAmB,CAAC,CAAC,QAAQ,YAAW,EAAE,CAAC,CAAC,SAAS,GAAEG,KAAG9K,EAAE4K,EAAE,CAAC,CAAC,QAAQ,SAAQD,EAAC,CAAC,CAAC,QAAQ,cAAa,mBAAmB,CAAC,CAAC,QAAQ,WAAU,uBAAuB,CAAC,CAAC,QAAQ,eAAc,SAAS,CAAC,CAAC,QAAQ,YAAW,sBAAsB,CAAC,CAAC,QAAQ,OAAM,qEAAqE,CAAC,CAAC,QAAQ,SAAQ,mBAAmB,CAAC,CAAC,QAAQ,UAAS,mCAAmC,CAAC,CAAC,SAAS,GAAEI,KAAG,4FAA2FC,KAAG,WAAUC,KAAG,oCAAmCC,KAAGlL,EAAE,6GAA6G,CAAC,CAAC,QAAQ,SAAQiL,EAAE,CAAC,CAAC,QAAQ,SAAQ,8DAA8D,CAAC,CAAC,SAAS,GAAEE,KAAGnL,EAAE,gCAAgC,CAAC,CAAC,QAAQ,SAAQ2K,EAAC,CAAC,CAAC,SAAS,GAAEN,KAAE,iWAAgWe,KAAG,iCAAgCC,KAAGrL,EAAE,4eAA2e,GAAG,CAAC,CAAC,QAAQ,WAAUoL,EAAE,CAAC,CAAC,QAAQ,OAAMf,EAAC,CAAC,CAAC,QAAQ,aAAY,0EAA0E,CAAC,CAAC,SAAS,GAAEiB,MAAG,MAAGtL,EAAE+K,EAAE,CAAC,CAAC,QAAQ,MAAKN,EAAC,CAAC,CAAC,QAAQ,WAAU,uBAAuB,CAAC,CAAC,QAAQ,aAAY,EAAE,CAAC,CAAC,QAAQ,UAAS,EAAE,CAAC,CAAC,QAAQ,cAAa,SAAS,CAAC,CAAC,QAAQ,UAAS,0DAA0D,CAAC,CAAC,QAAQ,QAAO7H,CAAC,CAAC,CAAC,QAAQ,QAAO,qHAAqH,CAAC,CAAC,QAAQ,OAAMyH,EAAC,CAAC,CAAC,SAAS,GAAEkB,KAAGD,GAAG,qCAAqC,GAAEE,KAAGF,GAAG,2CAA2C,GAAqFG,KAAG;CAAC,YAApFzL,EAAE,yCAAyC,CAAC,CAAC,QAAQ,aAAYwL,EAAE,CAAC,CAAC,SAA2B;CAAE,MAAKjB;CAAG,KAAIW;CAAG,QAAOV;CAAG,SAAQE;CAAG,IAAGD;CAAE,MAAKY;CAAG,UAASR;CAAG,MAAKM;CAAG,SAAQb;CAAG,WAAUiB;CAAG,OAAMvB;CAAE,MAAKgB;AAAE,GAAEU,KAAG1L,EAAE,6JAA6J,CAAC,CAAC,QAAQ,MAAKyK,EAAC,CAAC,CAAC,QAAQ,WAAU,uBAAuB,CAAC,CAAC,QAAQ,cAAa,SAAS,CAAC,CAAC,QAAQ,QAAO,wBAAwB,CAAC,CAAC,QAAQ,UAAS,0DAA0D,CAAC,CAAC,QAAQ,QAAO,6BAA6B,CAAC,CAAC,QAAQ,QAAO,qHAAqH,CAAC,CAAC,QAAQ,OAAMJ,EAAC,CAAC,CAAC,SAAS,GAAEsB,KAAG;CAAC,GAAGF;CAAG,UAASX;CAAG,OAAMY;CAAG,WAAU1L,EAAE+K,EAAE,CAAC,CAAC,QAAQ,MAAKN,EAAC,CAAC,CAAC,QAAQ,WAAU,uBAAuB,CAAC,CAAC,QAAQ,aAAY,EAAE,CAAC,CAAC,QAAQ,SAAQiB,EAAE,CAAC,CAAC,QAAQ,cAAa,SAAS,CAAC,CAAC,QAAQ,UAAS,0DAA0D,CAAC,CAAC,QAAQ,QAAO,wCAAwC,CAAC,CAAC,QAAQ,QAAO,qHAAqH,CAAC,CAAC,QAAQ,OAAMrB,EAAC,CAAC,CAAC,SAAS;AAAC,GAAEuB,KAAG;CAAC,GAAGH;CAAG,MAAKzL,EAAE,4IAAwI,CAAC,CAAC,QAAQ,WAAUoL,EAAE,CAAC,CAAC,QAAQ,QAAO,mKAAmK,CAAC,CAAC,SAAS;CAAE,KAAI;CAAoE,SAAQ;CAAyB,QAAOpB;CAAE,UAAS;CAAmC,WAAUhK,EAAE+K,EAAE,CAAC,CAAC,QAAQ,MAAKN,EAAC,CAAC,CAAC,QAAQ,WAAU,iBAChuP,CAAC,CAAC,QAAQ,YAAWI,EAAE,CAAC,CAAC,QAAQ,UAAS,EAAE,CAAC,CAAC,QAAQ,cAAa,SAAS,CAAC,CAAC,QAAQ,WAAU,EAAE,CAAC,CAAC,QAAQ,SAAQ,EAAE,CAAC,CAAC,QAAQ,SAAQ,EAAE,CAAC,CAAC,QAAQ,QAAO,EAAE,CAAC,CAAC,SAAS;AAAC,GAAEgB,KAAG,+CAA8CC,KAAG,uCAAsCC,KAAG,+BAA8BC,KAAG,+EAA8EpF,IAAE,iBAAgBqF,KAAE,mBAAkBC,KAAE,oBAAmBC,KAAGnM,EAAE,yBAAwB,GAAG,CAAC,CAAC,QAAQ,eAAciM,EAAC,CAAC,CAAC,SAAS,GAAEG,KAAG,qBAAoBC,KAAG,sBAAqBC,KAAG,wBAAuBC,KAAG,0BAAyBC,KAAGxM,EAAE,0BAAyB,GAAG,CAAC,CAAC,QAAQ,QAAO,mGAAmG,CAAC,CAAC,QAAQ,YAAWoK,KAAG,aAAW,WAAW,CAAC,CAAC,QAAQ,QAAO,yBAAyB,CAAC,CAAC,QAAQ,QAAO,gBAAgB,CAAC,CAAC,SAAS,GAAEqC,KAAG,qEAAoEC,KAAG1M,EAAEyM,IAAG,GAAG,CAAC,CAAC,QAAQ,UAAS7F,CAAC,CAAC,CAAC,SAAS,GAAE+F,KAAG3M,EAAEyM,IAAG,GAAG,CAAC,CAAC,QAAQ,UAASJ,EAAE,CAAC,CAAC,SAAS,GAAmGO,KAAG5M,EAAE,+FAAG,GAAG,CAAC,CAAC,QAAQ,cAAaoM,EAAE,CAAC,CAAC,QAAQ,UAASxF,CAAC,CAAC,CAAC,SAAS,GAAEiG,KAAG,yQAAwQC,KAAG9M,EAAE6M,IAAG,IAAI,CAAC,CAAC,QAAQ,kBAAiBX,EAAC,CAAC,CAAC,QAAQ,eAAcD,EAAC,CAAC,CAAC,QAAQ,UAASrF,CAAC,CAAC,CAAC,SAAS,GAAEmG,KAAG/M,EAAE6M,IAAG,IAAI,CAAC,CAAC,QAAQ,kBAAiBN,EAAE,CAAC,CAAC,QAAQ,eAAcD,EAAE,CAAC,CAAC,QAAQ,UAASD,EAAE,CAAC,CAAC,SAAS,GAAgSW,KAAGhN,EAAE,4RAAG,IAAI,CAAC,CAAC,QAAQ,kBAAiBkM,EAAC,CAAC,CAAC,QAAQ,eAAcD,EAAC,CAAC,CAAC,QAAQ,UAASrF,CAAC,CAAC,CAAC,SAAS,GAAEqG,KAAGjN,EAAE,oNAAmN,IAAI,CAAC,CAAC,QAAQ,kBAAiBkM,EAAC,CAAC,CAAC,QAAQ,eAAcD,EAAC,CAAC,CAAC,QAAQ,UAASrF,CAAC,CAAC,CAAC,SAAS,GAA0QsG,KAAGlN,EAAE,sQAAG,IAAI,CAAC,CAAC,QAAQ,kBAAiBkM,EAAC,CAAC,CAAC,QAAQ,eAAcD,EAAC,CAAC,CAAC,QAAQ,UAASrF,CAAC,CAAC,CAAC,SAAS,GAAEuG,KAAGnN,EAAE,+BAA8B,GAAG,CAAC,CAAC,QAAQ,UAAS4G,CAAC,CAAC,CAAC,SAAS,GAA0NwG,KAAGpN,EAAE,sNAAG,IAAI,CAAC,CAAC,QAAQ,kBAAiBkM,EAAC,CAAC,CAAC,QAAQ,eAAcD,EAAC,CAAC,CAAC,QAAQ,UAASrF,CAAC,CAAC,CAAC,SAAS,GAAEyG,KAAGrN,EAAE,aAAY,IAAI,CAAC,CAAC,QAAQ,UAAS4G,CAAC,CAAC,CAAC,SAAS,GAAE0G,KAAGtN,EAAE,qDAAoD,IAAI,CAAC,CAAC,QAAQ,UAAS4G,CAAC,CAAC,CAAC,SAAS,GAAE2G,KAAGvN,EAAE,qCAAqC,CAAC,CAAC,QAAQ,UAAS,8BAA8B,CAAC,CAAC,QAAQ,SAAQ,8IAA8I,CAAC,CAAC,SAAS,GAAEwN,KAAGxN,EAAEoL,EAAE,CAAC,CAAC,QAAQ,aAAY,KAAK,CAAC,CAAC,SAAS,GAAEqC,KAAGzN,EAAE,qKAAqK,CAAC,CAAC,QAAQ,WAAUwN,EAAE,CAAC,CAAC,QAAQ,aAAY,6EAA6E,CAAC,CAAC,SAAS,GAAEE,KAAG,+BAA8BC,KAAE3N,EAAE,+FAA+F,CAAC,CAAC,QAAQ,YAAW0N,EAAE,CAAC,CAAC,SAAS,GAAEE,KAAG5N,EAAE,sFAAsF,CAAC,CAAC,QAAQ,SAAQ2N,EAAC,CAAC,CAAC,QAAQ,QAAO,gDAAgD,CAAC,CAAC,QAAQ,SAAQ,6DAA6D,CAAC,CAAC,SAAS,GAAEE,KAAG7N,EAAE,yBAAyB,CAAC,CAAC,QAAQ,SAAQ2N,EAAC,CAAC,CAAC,QAAQ,OAAM1C,EAAE,CAAC,CAAC,SAAS,GAAE6C,KAAG9N,EAAE,uBAAuB,CAAC,CAAC,QAAQ,OAAMiL,EAAE,CAAC,CAAC,SAAS,GAAE8C,KAAG,0CAAyCC,KAAGhO,EAAE,qHAAqH,CAAC,CAAC,QAAQ,YAAW0N,EAAE,CAAC,CAAC,SAAS,GAAEO,KAAGjO,EAAE,yBAAwB,GAAG,CAAC,CAAC,QAAQ,WAAUA,EAAE,yBAAyB,CAAC,CAAC,QAAQ,SAAQgO,EAAE,CAAC,CAAC,QAAQ,OAAMD,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,UAAS/N,EAAE,uBAAuB,CAAC,CAAC,QAAQ,OAAM+N,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAEG,KAAG,sCAAmHC,KAAGnO,EAAE,kDAAkD,CAAC,CAAC,QAAQ,UAAS,0EAAE,CAAC,CAAC,SAAS,GAAEoO,KAAG;CAAC,YAAWpE;CAAE,gBAAeqD;CAAG,2BAA0BC;CAAG,UAASC;CAAG,WAAUf;CAAG,IAAGT;CAAG,MAAKD;CAAG,KAAI9B;CAAE,WAAUA;CAAE,WAAUA;CAAE,gBAAe0C;CAAG,mBAAkBI;CAAG,mBAAkBG;CAAG,QAAOpB;CAAG,MAAK+B;CAAG,QAAOE;CAAG,aAAY3B;CAAG,SAAQ0B;CAAG,eAAcI;CAAG,KAAIR;CAAG,MAAKzB;CAAG,KAAIhC;AAAC,GAAEqE,KAAG;CAAC,GAAGD;CAAG,gBAAexB;CAAG,mBAAkBI;CAAG,mBAAkBE;CAAG,MAAKlN,EAAE,yBAAyB,CAAC,CAAC,QAAQ,SAAQ2N,EAAC,CAAC,CAAC,SAAS;CAAE,SAAQ3N,EAAE,+BAA+B,CAAC,CAAC,QAAQ,SAAQ2N,EAAC,CAAC,CAAC,SAAS;AAAC,GAAEW,KAAE;CAAC,GAAGF;CAAG,mBAAkBrB;CAAG,gBAAeJ;CAAG,WAAUQ;CAAG,WAAUC;CAAG,KAAIpN,EAAE,+EAA+E,CAAC,CAAC,QAAQ,iBAAgBmO,EAAE,CAAC,CAAC,QAAQ,YAAWD,EAAE,CAAC,CAAC,QAAQ,SAAQ,4EAA4E,CAAC,CAAC,SAAS;CAAE,YAAW;CAA6E,KAAI;CAA0E,MAAKlO,EAAE,8RAA8R,CAAC,CAAC,QAAQ,YAAWkO,EAAE,CAAC,CAAC,QAAQ,kBAAiB,kBAAkB,CAAC,CAAC,SAAS;AAAC,GAAEK,KAAG;CAAC,GAAGD;CAAE,IAAGtO,EAAE+L,EAAE,CAAC,CAAC,QAAQ,QAAO,GAAG,CAAC,CAAC,SAAS;CAAE,MAAK/L,EAAEsO,GAAE,IAAI,CAAC,CAAC,QAAQ,QAAO,eAAe,CAAC,CAAC,QAAQ,WAAU,GAAG,CAAC,CAAC,SAAS;AAAC,GAAEE,KAAE;CAAC,QAAO/C;CAAG,KAAIE;CAAG,UAASC;AAAE,GAAE6C,KAAE;CAAC,QAAOL;CAAG,KAAIE;CAAE,QAAOC;CAAG,UAASF;AAAE,GAAMK,KAAG;CAAC,KAAI;CAAQ,KAAI;CAAO,KAAI;CAAO,MAAI;CAAS,KAAI;AAAO,GAAEC,MAAG,MAAGD,GAAG9L;AAAG,SAASgM,EAAE,GAAE,GAAE;CAAC,IAAGlN,GAAM;MAAAyI,EAAE,WAAW,KAAKvH,CAAC,GAAE,OAAOA,EAAE,QAAQuH,EAAE,eAAcwE,EAAE;CAAA,OAAO,IAAGxE,EAAE,mBAAmB,KAAKvH,CAAC,GAAE,OAAOA,EAAE,QAAQuH,EAAE,uBAAsBwE,EAAE;CAAE,OAAO/L;AAAC;AAAC,SAASiM,GAAG,GAAE;CAAC,OAAO1E,EAAE,0BAA0B,KAAKvH,CAAC,IAAEA,EAAE,QAAQuH,EAAE,uCAAsC,GAAE,GAAE,MAAI;EAAC,IAAG,MAAI,KAAK,KAAG,MAAI,KAAK,GAAE,OAAM;EAAQ,IAAIhH,IAAE,MAAI,KAAK,IAAE,OAAO,SAAS,GAAE,EAAE,IAAE,OAAO,SAAS,GAAE,EAAE;EAAE,OAAOA,MAAI,KAAGA,IAAE,WAASA,KAAG,SAAOA,KAAG,QAAM,MAASA,MAAI,KAAG,UAAQ,OAAO,cAAcA,CAAC;CAAC,CAAC,IAAEP;AAAC;AAAC,SAASkM,GAAG,GAAE;CAAC,IAAG;EAAC,IAAE,UAAUlM,CAAC,CAAC,CAAC,QAAQuH,EAAE,eAAc,GAAG;CAAC,QAAM;EAAC,OAAO;CAAI;CAAC,OAAOvH;AAAC;AAAC,SAASmM,GAAG,GAAE,GAAE;CAAC,IAAqG,IAA/FnM,EAAE,QAAQuH,EAAE,WAAU,GAAE,GAAE,MAAI;EAAC,IAAI5H,IAAE,CAAC,GAAEM,IAAER;EAAE,OAAK,EAAEQ,KAAG,KAAGP,EAAEO,OAAK,OAAM,IAAE,CAACN;EAAE,OAAOA,IAAE,MAAI;CAAI,CAAK,CAAC,CAAC,MAAM4H,EAAE,SAAS,GAAEhH,IAAE;CAAE,IAAG,EAAE,EAAE,CAAC,KAAK,KAAG,EAAE,MAAM,GAAE,EAAE,SAAO,KAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,KAAG,EAAE,IAAI,GAAEzB,GAAE;MAAG,EAAE,SAAOA,GAAE,EAAE,OAAOA,CAAC;OAAO,OAAK,EAAE,SAAOA,IAAG,EAAE,KAAK,EAAE;CAAA;CAAE,OAAKyB,IAAE,EAAE,QAAO,KAAI,EAAEA,KAAG,EAAEA,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQgH,EAAE,WAAU,GAAG;CAAE,OAAO;AAAC;AAAC,SAAS6E,GAAE,GAAE,GAAE,GAAE;CAAC,IAAIrN,IAAEiB,EAAE;CAAO,IAAGjB,MAAI,GAAE,OAAM;CAAG,IAAI,IAAE;CAAE,OAAK,IAAEA,IAAG;EAAC,IAAIC,IAAEgB,EAAE,OAAOjB,IAAE,IAAE,CAAC;EAAE,IAAGC,MAAIF,KAAG,CAACU,GAAE;OAAS,IAAGR,MAAIF,KAAGU,GAAE;OAAS;CAAK;CAAC,OAAOQ,EAAE,MAAM,GAAEjB,IAAE,CAAC;AAAC;AAAC,SAASsN,GAAG,GAAE;CAAC,IAAIvN,IAAEkB,EAAE,MAAM,IACtpP,GAAER,IAAEV,EAAE,SAAO;CAAE,OAAKU,KAAG,KAAG+H,EAAE,UAAU,KAAKzI,EAAEU,EAAE,IAAG;CAAI,OAAOV,EAAE,SAAOU,KAAG,IAAEQ,IAAElB,EAAE,MAAM,GAAEU,IAAE,CAAC,CAAC,CAAC,KAAK,IACjG;AAAC;AAAC,SAAS8M,GAAE,GAAE;CAAC,OAAOtM,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,YAAY;AAAC;AAAC,SAASuM,GAAG,GAAE,GAAE;CAAC,IAAGvM,EAAE,QAAQlB,EAAE,EAAE,MAAI,MAAIkB,EAAE,QAAQlB,EAAE,EAAE,MAAI,IAAG,OAAM;CAAG,IAAIU,IAAE;CAAE,KAAI,IAAIT,IAAE,GAAEA,IAAEiB,EAAE,QAAO,KAAI,IAAGA,EAAEjB,OAAK,MAAK;MAAS,IAAGiB,EAAEjB,OAAKD,EAAE,IAAG;MAAS,IAAGkB,EAAEjB,OAAKD,EAAE,OAAK,KAAIU,IAAE,IAAG,OAAOT;CAAE,OAAOS,IAAE,IAAE,KAAG;AAAE;AAAC,SAASgN,GAAE,GAAE,IAAE,GAAE;CAAC,IAAIhN,IAAEV,GAAEC,IAAE;CAAG,KAAI,IAAIwB,KAAKP,GAAE,IAAGO,MAAI,KAAI;EAAC,IAAIvB,IAAE,IAAEQ,IAAE;EAAE,KAAG,IAAI,OAAOR,CAAC,GAAE,KAAGA;CAAC,OAAM,KAAGuB,GAAE;CAAI,OAAOxB;AAAC;AAAC,SAAS0N,GAAG,GAAE,GAAE,GAAE,GAAE,GAAE;CAAC,IAAIzN,IAAEF,EAAE,MAAK,IAAEA,EAAE,SAAO,MAAK,IAAEkB,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,mBAAkB,IAAI,GAAEL,IAAEK,EAAE,EAAE,CAAC,OAAO,CAAC,MAAI,KAAIC,IAAElB,EAAE,MAAM,QAAOI,IAAEJ,EAAE,MAAM,aAAYmD,IAAEnD,EAAE,MAAM;CAAW,EAAE,MAAM,SAAO,CAAC,GAAE,EAAE,MAAM,cAAY,CAAC;CAAE,IAAI8H,IAAE9H,EAAE,aAAa,CAAC,GAAE6B,IAAE7B,EAAE,MAAM;CAAY,IAAG,EAAE,MAAM,cAAYI,GAAE,EAAE,MAAM,SAAOc,GAAE,CAACN,GAAE;EAAC,IAAGiB,GAAE;GAAC,EAAE,MAAM,aAAWsB;GAAE;EAAM;EAAC,EAAE,MAAM,cAAY,CAAC;CAAC;CAAC,OAAM;EAAC,MAAKvC,IAAE,UAAQ;EAAO,KAAIH;EAAE,MAAKR;EAAE,OAAM;EAAE,MAAK;EAAE,QAAO6H;CAAC;AAAC;AAAC,SAAS6F,GAAG,GAAE,GAAE,GAAE;CAAC,IAAI3N,IAAEiB,EAAE,MAAMR,EAAE,MAAM,sBAAsB;CAAE,IAAGT,MAAI,MAAK,OAAOD;CAAE,IAAI,IAAEC,EAAE;CAAG,OAAOD,EAAE,MAAM,IACn7B,CAAC,CAAC,KAAI,MAAG;EAAC,IAAIW,IAAET,EAAE,MAAMQ,EAAE,MAAM,cAAc;EAAE,IAAGC,MAAI,MAAK,OAAOT;EAAE,IAAG,CAACU,KAAGD;EAAE,OAAOT,EAAE,MAAM,KAAK,IAAIU,EAAE,QAAO,EAAE,MAAM,CAAC;CAAC,CAAC,CAAC,CAAC,KAAK,IACjI;AAAC;AAAC,SAASiN,GAAG,GAAE,GAAE,GAAE,GAAE;CAAC,IAAG,CAAC7N,EAAE,SAAS,GAAG,GAAE,OAAM,CAAC;CAAE,KAAI,IAAI,IAAE,GAAE,IAAEA,EAAE,QAAO,KAAI;EAAC,IAAGA,EAAE,OAAK,MAAK;GAAC;GAAI;EAAQ;EAAC,IAAGA,EAAE,OAAK,KAAI;GAAC,IAAIY,IAAEX,EAAE,OAAO,KAAK,KAAKD,EAAE,MAAM,CAAC,CAAC;GAAE,IAAGY,GAAE;IAAC,KAAGA,EAAE,EAAE,CAAC,SAAO;IAAE;GAAQ;EAAC;EAAC,IAAGZ,EAAE,OAAK,KAAI;EAAS,IAAIE,IAAEgB,EAAE,MAAMR,IAAE,CAAC,GAAE,IAAET,EAAE,OAAO,IAAI,KAAKC,CAAC,KAAGD,EAAE,OAAO,SAAS,KAAKC,CAAC;EAAE,IAAG,GAAE;GAAC,IAAG,EAAE,EAAE,CAAC,SAAOF,EAAE,SAAO,GAAE,OAAM,CAAC;GAAE,KAAG,EAAE,EAAE,CAAC,SAAO;EAAC;CAAC;CAAC,OAAM,CAAC;AAAC;AAAC,IAAI8N,KAAE,MAAK;CAAC;CAAQ;CAAM;CAAM,YAAY,GAAE;EAAC,KAAK,UAAQ,KAAG1F;CAAC;CAAC,MAAM,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,QAAQ,KAAK,CAAC;EAAE,IAAG,KAAG,EAAE,EAAE,CAAC,SAAO,GAAE,OAAM;GAAC,MAAK;GAAQ,KAAI,EAAE;EAAE;CAAC;CAAC,KAAK,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAInI,IAAE,KAAK,QAAQ,WAAS,EAAE,KAAGsN,GAAG,EAAE,EAAE;GAAoD,OAAM;IAAC,MAAK;IAAO,KAAItN;IAAE,gBAAe;IAAW,MAAnGA,EAAE,QAAQ,KAAK,MAAM,MAAM,kBAAiB,EAA4D;GAAC;EAAC;CAAC;CAAC,OAAO,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,OAAO,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAIA,IAAE,EAAE,IAAGwB,IAAEmM,GAAG3N,GAAE,EAAE,MAAI,IAAG,KAAK,KAAK;GAAE,OAAM;IAAC,MAAK;IAAO,KAAIA;IAAE,MAAK,EAAE,KAAG,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,MAAM,OAAO,gBAAe,IAAI,IAAE,EAAE;IAAG,MAAKwB;GAAC;EAAC;CAAC;CAAC,QAAQ,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,QAAQ,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAIxB,IAAE,EAAE,EAAE,CAAC,KAAK;GAAE,IAAG,KAAK,MAAM,MAAM,WAAW,KAAKA,CAAC,GAAE;IAAC,IAAIwB,IAAE6L,GAAErN,GAAE,GAAG;IAAE,CAAC,KAAK,QAAQ,YAAU,CAACwB,KAAG,KAAK,MAAM,MAAM,mBAAmB,KAAKA,CAAC,OAAK,IAAEA,EAAE,KAAK;GAAE;GAAC,OAAM;IAAC,MAAK;IAAU,KAAI6L,GAAE,EAAE,IAAG,IACjpC;IAAE,OAAM,EAAE,EAAE,CAAC;IAAO,MAAKrN;IAAE,QAAO,KAAK,MAAM,OAAOA,CAAC;GAAC;EAAC;CAAC;CAAC,GAAG,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,GAAG,KAAK,CAAC;EAAE,IAAG,GAAE,OAAM;GAAC,MAAK;GAAK,KAAIqN,GAAE,EAAE,IAAG,IAClI;EAAC;CAAC;CAAC,WAAW,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,WAAW,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAIrN,IAAEqN,GAAE,EAAE,IAAG,IAC9E,CAAC,CAAC,MAAM,IACR,GAAE7L,IAAE,IAAG,IAAE,IAAGd,IAAE,CAAC;GAAE,OAAKV,EAAE,SAAO,IAAG;IAAC,IAAIW,IAAE,CAAC,GAAEC,IAAE,CAAC,GAAEM,IAAQ;IAAN,OAAQA,IAAElB,EAAE,QAAO,KAAI,IAAG,KAAK,MAAM,MAAM,gBAAgB,KAAKA,EAAEkB,EAAE,GAAE,EAAE,KAAKlB,EAAEkB,EAAE,GAAE,IAAE,CAAC;SAAO,IAAG,CAACP,GAAE,EAAE,KAAKX,EAAEkB,EAAE;SAAO;IAAM,IAAElB,EAAE,MAAMkB,CAAC;IAAE,IAAId,IAAEQ,EAAE,KAAK,IACxM,GAAEuC,IAAE/C,EAAE,QAAQ,KAAK,MAAM,MAAM,yBAAwB,UACjD,CAAC,CAAC,QAAQ,KAAK,MAAM,MAAM,0BAAyB,EAAE;IAAE,IAAEoB,IAAE,GAAGA,EAAE;EACtEpB,MAAIA,GAAE,IAAE,IAAE,GAAG,EAAE;EACf+C,MAAIA;IAAE,IAAI2E,IAAE,KAAK,MAAM,MAAM;IAAI,IAAG,KAAK,MAAM,MAAM,MAAI,CAAC,GAAE,KAAK,MAAM,YAAY3E,GAAEzC,GAAE,CAAC,CAAC,GAAE,KAAK,MAAM,MAAM,MAAIoH,GAAE9H,EAAE,WAAS,GAAE;IAAM,IAAI6B,IAAEnB,EAAE,GAAG,EAAE;IAAE,IAAGmB,GAAG,SAAO,UAAQA,GAAG,SAAO,aAAWA,GAAG,SAAO,QAAMA,GAAG,SAAO,QAAO;IAAM,IAAGA,GAAG,SAAO,cAAa;KAAC,IAAIY,IAAEZ,GAAE1B,IAAEH,EAAE,KAAK,IAClR,GAAEkC,IAAEO,EAAE,MAAI,OACTtC,EAAE,QAAQ,KAAK,MAAM,MAAM,0BAAyB,EAAE,GAAE6D,IAAE,KAAK,WAAW9B,CAAC;KAAE,EAAExB,EAAE,SAAO,KAAGsD;KAAE,IAAI4C,IAAE1E,EAAE,UAAU8B,EAAE,IAAI,MAAM,CAAC,CAAC,QAAQ,OAAM,EAAE,GAAEJ,IAAEgD,IAAEA,EAAE,MAAM,IAC5J,CAAC,CAAC,SAAO,GAAE7E,IAAE6B,IAAE5D,EAAE,MAAM,GAAE,CAAC4D,CAAC,IAAE5D;KAAE,EAAE,SAAO,MAAI,IAAE,GAAGwB,EAAE;EAClDO,EAAE,KAAK,IACR,MAAK,IAAE,EAAE,UAAU,GAAE,EAAE,SAAOU,EAAE,KAAK,MAAM,IAAEuB,EAAE;KAAK;IAAK;IAAM,IAAGnC,GAAG,SAAO,QAAO;KAAC,IAAIY,IAAEZ,GAAE1B,IAAEsC,EAAE,MAAI,OACnGzC,EAAE,KAAK,IACR,GAAEkC,IAAE,KAAK,KAAK/B,CAAC;KAAE,EAAEO,EAAE,SAAO,KAAGwB,GAAE,IAAEV,EAAE,UAAU,GAAEA,EAAE,SAAOK,EAAE,IAAI,MAAM,IAAEK,EAAE,KAAI,IAAE,EAAE,UAAU,GAAE,EAAE,SAAOO,EAAE,IAAI,MAAM,IAAEP,EAAE,KAAI,IAAE/B,EAAE,UAAUO,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,IACpK;IAAU;GAAC;GAAC,OAAM;IAAC,MAAK;IAAa,KAAIc;IAAE,QAAOd;IAAE,MAAK;GAAC;EAAC;CAAC;CAAC,KAAK,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAI,IAAE,GAAEc,UAAM,EAAE,SAAO,EAAE,QAAOvB,IAAE,EAAE,EAAE,CAAC,KAAK,GAAES,IAAET,EAAE,SAAO,GAAEU,IAAE;IAAC,MAAK;IAAO,KAAI;IAAG,SAAQD;IAAE,OAAMA,IAAE,CAACT,EAAE,MAAM,GAAE,EAAE,IAAE;IAAG,OAAM,CAAC;IAAE,OAAM,CAAC;GAAC;GAAE,IAAES,IAAE,aAAaT,EAAE,MAAM,EAAE,MAAI,KAAKA,KAAI,KAAK,QAAQ,aAAW,IAAES,IAAET,IAAE;GAAS,IAAIW,IAAE,KAAK,MAAM,MAAM,cAAcX,CAAC,GAAEiB,IAAE,CAAC;GAAE,OAAK,IAAG;IAAC,IAAIiC,IAAE,CAAC,GAAE2E,IAAE;IAAG,IAAG,EAAE,IAAElH,EAAE,KAAK,CAAC,MAAI,KAAK,MAAM,MAAM,GAAG,KAAK,CAAC,GAAE;IAAM,IAAIiB,IAAEL,EAAE;IAAE,IAAE,EAAE,UAAU,EAAE,EAAE,CAAC,MAAM;IAAE,IAAIiB,IAAE,EAAE,EAAE,CAAC,MAAM,MACpf,CAAC,CAAC,CAAC,IAAGtC,IAAE,EAAE,EAAE,CAAC,QAAO+B,IAAE,KAAK,QAAQ,WAASuL,GAAEhL,GAAEtC,CAAC,IAAEsC,EAAE,QAAQ,KAAK,MAAM,MAAM,kBAAgB,MAAGgL,GAAEpM,GAAElB,CAAC,CAAC,GAAE6D,IAAE,EAAE,MAAM,MACnH,CAAC,CAAC,CAAC,IAAG4C,KAAE,CAAC1E,EAAE,KAAK,GAAE0B,IAAE;IAAE,IAAG,KAAK,QAAQ,YAAU,IAAE,GAAE,IAAE1B,EAAE,UAAU,KAAG0E,KAAE,IAAEzG,IAAE,KAAG,IAAE+B,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,GAAE,IAAE0B,IAAE,IAAE,IAAEA,GAAE,IAAE1B,EAAE,MAAM0B,CAAC,GAAE,KAAGzD,IAAGyG,MAAG,KAAK,MAAM,MAAM,UAAU,KAAK5C,CAAC,MAAI,IAAE,EAAE,UAAUA,EAAE,SAAO,CAAC,GAAE,IAAE,CAAC,IAAG,CAACb,GAAE;KAAC,IAAI9B,IAAE,KAAK,MAAM,MAAM,gBAAgBuC,CAAC,GAAE+B,IAAG,KAAK,MAAM,MAAM,QAAQ/B,CAAC,GAAEuC,IAAG,KAAK,MAAM,MAAM,iBAAiBvC,CAAC,GAAE4B,IAAG,KAAK,MAAM,MAAM,kBAAkB5B,CAAC,GAAEkK,IAAG,KAAK,MAAM,MAAM,eAAelK,CAAC,GAAEyD,IAAG,KAAK,MAAM,MAAM,qBAAqBzD,CAAC;KAAE,OAAK,IAAG;MAAC,IAAIsC,IAAG,EAAE,MAAM,MACre,CAAC,CAAC,CAAC,IAAG6H;MAAE,IAAG,IAAE7H,GAAG,KAAK,QAAQ,YAAU,IAAElC,EAAE,QAAQ,KAAK,MAAM,MAAM,oBAAmB,IAAI,GAAE,IAAEA,KAAG,IAAEA,EAAE,QAAQ,KAAK,MAAM,MAAM,kBAAgB,MAAIyJ,GAAEhH,CAAE,CAAC,GAAEN,EAAG,KAAKnC,CAAC,KAAGwB,EAAG,KAAKxB,CAAC,KAAG8J,EAAG,KAAK9J,CAAC,KAAGqD,EAAG,KAAKrD,CAAC,KAAG3C,EAAE,KAAK2C,CAAC,KAAG2B,EAAG,KAAK3B,CAAC,GAAE;MAAM,IAAG+J,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,KAAGnK,KAAG,CAACI,EAAE,KAAK,GAAE,KAAG,OAClS+J,EAAE,MAAMnK,CAAC;WAAM;OAAC,IAAGgD,MAAG1E,EAAE,QAAQ,KAAK,MAAM,MAAM,eAAc,MAAM,CAAC,CAAC,OAAO,KAAK,MAAM,MAAM,YAAY,KAAG,KAAGiE,EAAG,KAAKjE,CAAC,KAAGsD,EAAG,KAAKtD,CAAC,KAAGyD,EAAG,KAAKzD,CAAC,GAAE;OAAM,KAAG,OAC7J8B;MAAC;MAAC,KAAE,CAACA,EAAE,KAAK,GAAE,IAAE,EAAE,UAAUkC,EAAG,SAAO,CAAC,GAAE,IAAE6H,EAAE,MAAMnK,CAAC;KAAC;IAAC;IAAC,IAAI7B,IAAE,EAAE,MAAMF,GAAEL,EAAE,CAAC;IAAE,EAAE,UAAQN,IAAE,EAAE,QAAM,CAAC,IAAE,KAAK,MAAM,MAAM,gBAAgB,KAAKa,CAAC,MAAI,IAAE,CAAC,KAAIpB,EAAE,MAAM,KAAK;KAAC,MAAK;KAAY,KAAIoB;KAAE,MAAK,CAAC,CAAC,KAAK,QAAQ,OAAK,KAAK,MAAM,MAAM,WAAW,KAAK+F,CAAC;KAAE,OAAM,CAAC;KAAE,MAAKA;KAAE,QAAO,CAAC;IAAC,CAAC;GAAC;GAAC,IAAI1H,IAAEO,EAAE,MAAM,GAAG,EAAE;GAAE,IAAGP,GAAE,EAAE,MAAIA,EAAE,IAAI,QAAQ,GAAE,EAAE,OAAKA,EAAE,KAAK,QAAQ;QAAO;GAAO,EAAE,MAAI,EAAE,MAAM,GAAEoB,EAAE,CAAC,CAAC,CAAC,QAAQ;GAAE,KAAI,IAAI2B,KAAKxC,EAAE,OAAM,IAAG,KAAK,MAAM,MAAM,MAAI,CAAC,GAAE,EAAE,SAAO,KAAK,MAAM,YAAYwC,EAAE,MAAK,CAAC,CAAC,GAAE,CAACxC,EAAE,OAAM;IAAC,IAAImH,IAAE3E,EAAE,OAAO,QAAO,MAAGV,EAAE,SAAO,OAAO;IAAgE,EAAE,QAA9DqF,EAAE,SAAO,KAAGA,EAAE,MAAK,MAAG,KAAK,MAAM,MAAM,QAAQ,KAAKrF,EAAE,GAAG,CAAC;GAAW;GAAC,KAAI,IAAIU,KAAKxC,EAAE,OAAM;IAAC,IAAImH,IAAE3E,EAAE,OAAO;IAAG,IAAGA,EAAE,SAAO2E,GAAG,SAAO,UAAQA,GAAG,SAAO,cAAa;KAAC,EAAE,OAAK3E,EAAE,KAAK,QAAQ,KAAK,MAAM,MAAM,iBAAgB,EAAE,GAAE,EAAE,MAAI2E,EAAE,IAAI,QAAQ,KAAK,MAAM,MAAM,iBAAgB,EAAE,GAAE,EAAE,OAAKA,EAAE,KAAK,QAAQ,KAAK,MAAM,MAAM,iBAAgB,EAAE;KAAE,KAAI,IAAIrF,IAAE,KAAK,MAAM,YAAY,SAAO,GAAEA,KAAG,GAAE,KAAI,IAAG,KAAK,MAAM,MAAM,WAAW,KAAK,KAAK,MAAM,YAAYA,EAAE,CAAC,GAAG,GAAE;MAAC,KAAK,MAAM,YAAYA,EAAE,CAAC,MAAI,KAAK,MAAM,YAAYA,EAAE,CAAC,IAAI,QAAQ,KAAK,MAAM,MAAM,iBAAgB,EAAE;MAAE;KAAK;KAAC,IAAIZ,IAAE,KAAK,MAAM,MAAM,iBAAiB,KAAKsB,EAAE,GAAG;KAAE,IAAGtB,GAAE;MAAC,IAAIY,IAAE;OAAC,MAAK;OAAW,KAAIZ,EAAE,KAAG;OAAI,SAAQA,EAAE,OAAK;MAAK;MAAE,EAAE,UAAQY,EAAE,SAAQ9B,EAAE,QAAMwC,EAAE,OAAO,MAAI,CAAC,aAAY,MAAM,CAAC,CAAC,SAASA,EAAE,OAAO,EAAE,CAAC,IAAI,KAAG,YAAWA,EAAE,OAAO,MAAIA,EAAE,OAAO,EAAE,CAAC,UAAQ,EAAE,OAAO,EAAE,CAAC,MAAIV,EAAE,MAAIU,EAAE,OAAO,EAAE,CAAC,KAAI,EAAE,OAAO,EAAE,CAAC,OAAKV,EAAE,MAAIU,EAAE,OAAO,EAAE,CAAC,MAAKA,EAAE,OAAO,EAAE,CAAC,OAAO,QAAQV,CAAC,KAAGU,EAAE,OAAO,QAAQ;OAAC,MAAK;OAAY,KAAIV,EAAE;OAAI,MAAKA,EAAE;OAAI,QAAO,CAACA,CAAC;MAAC,CAAC,IAAEU,EAAE,OAAO,QAAQV,CAAC;KAAC;IAAC,OAAM,AAASU,EAAE,SAAK,CAAC;GAAE;GAAC,IAAGxC,EAAE,OAAM,KAAI,IAAIwC,KAAKxC,EAAE,OAAM;IAAC,EAAE,QAAM,CAAC;IAAE,KAAI,IAAImH,KAAK3E,EAAE,QAAO,EAAE,SAAO,WAAS,EAAE,OAAK;GAAY;GAAC,OAAOxC;EAAC;CAAC;CAAC,KAAK,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAIX,IAAEsN,GAAG,EAAE,EAAE;GAAE,OAAM;IAAC,MAAK;IAAO,OAAM,CAAC;IAAE,KAAItN;IAAE,KAAI,EAAE,OAAK,SAAO,EAAE,OAAK,YAAU,EAAE,OAAK;IAAQ,MAAKA;GAAC;EAAC;CAAC;CAAC,IAAI,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAG,CAAC,KAAK,MAAM,MAAM,kBAAkB,KAAK,EAAE,EAAE,KAAGwN,GAAG,EAAE,IAAG,IAAI,MAAI,IAAG;GAAO,IAAIxN,IAAEuN,GAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,KAAK,MAAM,MAAM,qBAAoB,GAAG,GAAE/L,IAAE,EAAE,KAAG,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,MAAM,cAAa,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,OAAO,gBAAe,IAAI,IAAE,IAAG,IAAE,EAAE,KAAG,EAAE,EAAE,CAAC,UAAU,GAAE,EAAE,EAAE,CAAC,SAAO,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,OAAO,gBAAe,IAAI,IAAE,EAAE;GAAG,OAAM;IAAC,MAAK;IAAM,KAAIxB;IAAE,KAAIqN,GAAE,EAAE,IAAG,IACjuE;IAAE,MAAK7L;IAAE,OAAM;GAAC;EAAC;CAAC;CAAC,MAAM,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,MAAM,KAAK,CAAC;EAAE,IAAG,CAAC,KAAG,CAAC,KAAK,MAAM,MAAM,eAAe,KAAK,EAAE,EAAE,GAAE;EAAO,IAAI,IAAE4L,GAAG,EAAE,EAAE,GAAE5L,IAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,MAAM,iBAAgB,EAAE,CAAC,CAAC,MAAM,GAAG,GAAEvB,IAAE,EAAE,EAAE,EAAE,KAAK,IAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,MAAM,mBAAkB,EAAE,CAAC,CAAC,MAAM,IAClR,IAAE,CAAC,GAAES,IAAE;GAAC,MAAK;GAAQ,KAAI2M,GAAE,EAAE,IAAG,IAChC;GAAE,QAAO,CAAC;GAAE,OAAM,CAAC;GAAE,MAAK,CAAC;EAAC;EAAE,IAAG,EAAE,WAAS7L,EAAE,QAAO;GAAC,KAAI,IAAIb,KAAKa,GAAE,KAAK,MAAM,MAAM,gBAAgB,KAAKb,CAAC,IAAED,EAAE,MAAM,KAAK,OAAO,IAAE,KAAK,MAAM,MAAM,iBAAiB,KAAKC,CAAC,IAAED,EAAE,MAAM,KAAK,QAAQ,IAAE,KAAK,MAAM,MAAM,eAAe,KAAKC,CAAC,IAAED,EAAE,MAAM,KAAK,MAAM,IAAEA,EAAE,MAAM,KAAK,IAAI;GAAE,KAAI,IAAIC,IAAE,GAAEA,IAAE,EAAE,QAAO,KAAI,EAAE,OAAO,KAAK;IAAC,MAAK,EAAEA;IAAG,QAAO,KAAK,MAAM,OAAO,EAAEA,EAAE;IAAE,QAAO,CAAC;IAAE,OAAMD,EAAE,MAAMC;GAAE,CAAC;GAAE,KAAI,IAAIA,KAAKV,GAAE,EAAE,KAAK,KAAKmN,GAAGzM,GAAED,EAAE,OAAO,MAAM,CAAC,CAAC,KAAK,GAAE,OAAK;IAAC,MAAKE;IAAE,QAAO,KAAK,MAAM,OAAOA,CAAC;IAAE,QAAO,CAAC;IAAE,OAAMF,EAAE,MAAMQ;GAAE,EAAE,CAAC;GAAE,OAAOR;EAAC;CAAC;CAAC,SAAS,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,SAAS,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAIV,IAAE,EAAE,EAAE,CAAC,KAAK;GAAE,OAAM;IAAC,MAAK;IAAU,KAAIqN,GAAE,EAAE,IAAG,IAC5nB;IAAE,OAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAI,MAAI,IAAE;IAAE,MAAKrN;IAAE,QAAO,KAAK,MAAM,OAAOA,CAAC;GAAC;EAAC;CAAC;CAAC,UAAU,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,UAAU,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAIA,IAAE,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAO,CAAC,MAAI,OACpK,EAAE,EAAE,CAAC,MAAM,GAAE,EAAE,IAAE,EAAE;GAAG,OAAM;IAAC,MAAK;IAAY,KAAI,EAAE;IAAG,MAAKA;IAAE,QAAO,KAAK,MAAM,OAAOA,CAAC;GAAC;EAAC;CAAC;CAAC,KAAK,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;EAAE,IAAG,GAAE,OAAM;GAAC,MAAK;GAAO,KAAI,EAAE;GAAG,MAAK,EAAE;GAAG,QAAO,KAAK,MAAM,OAAO,EAAE,EAAE;EAAC;CAAC;CAAC,OAAO,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC;EAAE,IAAG,GAAE,OAAM;GAAC,MAAK;GAAS,KAAI,EAAE;GAAG,MAAK,EAAE;EAAE;CAAC;CAAC,IAAI,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC;EAAE,IAAG,GAAE,OAAM,CAAC,KAAK,MAAM,MAAM,UAAQ,KAAK,MAAM,MAAM,UAAU,KAAK,EAAE,EAAE,IAAE,KAAK,MAAM,MAAM,SAAO,CAAC,IAAE,KAAK,MAAM,MAAM,UAAQ,KAAK,MAAM,MAAM,QAAQ,KAAK,EAAE,EAAE,MAAI,KAAK,MAAM,MAAM,SAAO,CAAC,IAAG,CAAC,KAAK,MAAM,MAAM,cAAY,KAAK,MAAM,MAAM,kBAAkB,KAAK,EAAE,EAAE,IAAE,KAAK,MAAM,MAAM,aAAW,CAAC,IAAE,KAAK,MAAM,MAAM,cAAY,KAAK,MAAM,MAAM,gBAAgB,KAAK,EAAE,EAAE,MAAI,KAAK,MAAM,MAAM,aAAW,CAAC,IAAG;GAAC,MAAK;GAAO,KAAI,EAAE;GAAG,QAAO,KAAK,MAAM,MAAM;GAAO,YAAW,KAAK,MAAM,MAAM;GAAW,OAAM,CAAC;GAAE,MAAK,EAAE;EAAE;CAAC;CAAC,KAAK,GAAE;EAAC,IAAG,KAAK,MAAM,MAAM,sBAAoB,CAAC,GAAE;EAAO,IAAI,IAAE,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAI,IAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAI,MAAI,IAAE;GAAE,IAAG,CAAC,KAAK,QAAQ,YAAU4N,GAAG,GAAE,EAAE,IAAG,GAAE,KAAK,KAAK,GAAE;GAAO,IAAIpM,IAAE,EAAE,EAAE,CAAC,KAAK;GAAE,IAAG,CAAC,KAAK,QAAQ,YAAU,KAAK,MAAM,MAAM,kBAAkB,KAAKA,CAAC,GAAE;IAAC,IAAG,CAAC,KAAK,MAAM,MAAM,gBAAgB,KAAKA,CAAC,GAAE;IAAO,IAAIb,IAAE0M,GAAE7L,EAAE,MAAM,GAAE,EAAE,GAAE,IAAI;IAAE,KAAIA,EAAE,SAAOb,EAAE,UAAQ,KAAI,GAAE;GAAM,OAAK;IAAC,IAAIA,IAAE6M,GAAG,EAAE,IAAG,IAAI;IAAE,IAAG7M,MAAI,IAAG;IAAO,IAAGA,IAAE,IAAG;KAAC,IAAIO,KAAG,EAAE,EAAE,CAAC,QAAQ,GAAG,MAAI,IAAE,IAAE,KAAG,EAAE,EAAE,CAAC,SAAOP;KAAE,EAAE,KAAG,EAAE,EAAE,CAAC,UAAU,GAAEA,CAAC,GAAE,EAAE,KAAG,EAAE,EAAE,CAAC,UAAU,GAAEO,CAAC,CAAC,CAAC,KAAK,GAAE,EAAE,KAAG;IAAE;GAAC;GAAC,IAAIjB,IAAE,EAAE,IAAGS,IAAE;GAAG,IAAG,KAAK,QAAQ,UAAS;IAAC,IAAIC,IAAE,KAAK,MAAM,MAAM,kBAAkB,KAAKV,CAAC;IAAE,MAAI,IAAEU,EAAE,IAAG,IAAEA,EAAE;GAAG,OAAM,IAAE,EAAE,KAAG,EAAE,EAAE,CAAC,MAAM,GAAE,EAAE,IAAE;GAAG,OAAO,IAAEV,EAAE,KAAK,GAAE,KAAK,MAAM,MAAM,kBAAkB,KAAKA,CAAC,MAAI,AAA8EA,IAA9E,KAAK,QAAQ,YAAU,CAAC,KAAK,MAAM,MAAM,gBAAgB,KAAKuB,CAAC,IAAIvB,EAAE,MAAM,CAAC,IAAIA,EAAE,MAAM,GAAE,EAAE,IAAGyN,GAAG,GAAE;IAAC,MAAKzN,KAAGA,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAe,IAAI;IAAE,OAAMS,KAAGA,EAAE,QAAQ,KAAK,MAAM,OAAO,gBAAe,IAAI;GAAC,GAAE,EAAE,IAAG,KAAK,OAAM,KAAK,KAAK;EAAC;CAAC;CAAC,QAAQ,GAAE,GAAE;EAAC,IAAI;EAAE,KAAI,IAAE,KAAK,MAAM,OAAO,QAAQ,KAAK,CAAC,OAAK,IAAE,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC,IAAG;GAAC,IAAIc,IAAE,EAAE,EAAE,CAAC,OAAO,CAAC,MAAI,MAAI,IAAE;GAAE,IAAG,CAAC,KAAK,QAAQ,YAAUoM,GAAG,GAAE,EAAE,IAAGpM,GAAE,KAAK,KAAK,GAAE;GAAO,IAAqEd,IAAE,EAAE6M,IAAlE,EAAE,MAAI,EAAE,GAAA,CAAI,QAAQ,KAAK,MAAM,MAAM,qBAAoB,GAAW,CAAC;GAAG,IAAG,CAAC7M,GAAE;IAAC,IAAIC,IAAE,EAAE,EAAE,CAAC,OAAO,CAAC;IAAE,OAAM;KAAC,MAAK;KAAO,KAAIA;KAAE,MAAKA;IAAC;GAAC;GAAC,OAAO+M,GAAG,GAAEhN,GAAE,EAAE,IAAG,KAAK,OAAM,KAAK,KAAK;EAAC;CAAC;CAAC,SAAS,GAAE,GAAE,IAAE,IAAG;EAAC,IAAIc,IAAE,KAAK,MAAM,OAAO,eAAe,KAAK,CAAC;EAAE,IAAG,GAACA,KAAG,CAACA,EAAE,MAAI,CAACA,EAAE,MAAI,CAACA,EAAE,MAAI,CAACA,EAAE,MAAIA,EAAE,MAAI,EAAE,MAAM,KAAK,MAAM,MAAM,mBAAmB,OAAY,EAAEA,EAAE,MAAIA,EAAE,OAAS,CAAC,KAAG,KAAK,MAAM,OAAO,YAAY,KAAK,CAAC,IAAE;GAAC,IAAId,IAAE,CAAC,GAAGc,EAAE,EAAE,CAAC,CAAC,SAAO,GAAEb,GAAEC,GAAEM,IAAER,GAAE,IAAE,GAAEyC,IAAE3B,EAAE,EAAE,CAAC,IAAGsG,IAAE,MAAI3E,GAAEtB,IAAEsB,MAAI,MAAI,KAAK,MAAM,OAAO,oBAAkB,KAAK,MAAM,OAAO;GAAkB,KAAI,EAAE,YAAU,GAAE,IAAE,EAAE,MAAM,KAAG,EAAE,SAAOzC,CAAC,IAAG,IAAEmB,EAAE,KAAK,CAAC,OAAK,OAAM;IAAC,IAAG,IAAEL,EAAE,MAAIA,EAAE,MAAIA,EAAE,MAAIA,EAAE,MAAIA,EAAE,MAAIA,EAAE,IAAG,CAACb,GAAE;IAAS,IAAG,IAAE,CAAC,GAAGA,CAAC,CAAC,CAAC,QAAOa,EAAE,MAAIA,EAAE,IAAG;KAAC,KAAGZ;KAAE;IAAQ;IAAM,IAAGY,EAAE,MAAIA,EAAE,IAAG;KAAC,IAAGd,IAAE,KAAG,GAAGA,IAAEE,KAAG,IAAG;MAAC,KAAGA;MAAE;KAAQ;KAAC,IAAGkH,GAAE;IAAK;IAAC,IAAG,KAAGlH,GAAEM,IAAE,GAAE;IAAS,IAAE,KAAK,IAAIN,GAAEA,IAAEM,IAAE,CAAC;IAAE,IAAIuB,IAAE,CAAC,GAAGjB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAOrB,IAAE,EAAE,MAAM,GAAEO,IAAEc,EAAE,QAAMiB,IAAE7B,CAAC;IAAE,IAAG,KAAK,IAAIF,GAAEE,CAAC,IAAE,GAAE;KAAC,IAAIoD,IAAE7D,EAAE,MAAM,GAAE,EAAE;KAAE,OAAM;MAAC,MAAK;MAAK,KAAIA;MAAE,MAAK6D;MAAE,QAAO,KAAK,MAAM,aAAaA,CAAC;KAAC;IAAC;IAAC,IAAI9B,IAAE/B,EAAE,MAAM,GAAE,EAAE;IAAE,OAAM;KAAC,MAAK;KAAS,KAAIA;KAAE,MAAK+B;KAAE,QAAO,KAAK,MAAM,aAAaA,CAAC;IAAC;GAAC;EAAC;CAAC;CAAC,SAAS,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAIlC,IAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,MAAM,mBAAkB,GAAG,GAAEwB,IAAE,KAAK,MAAM,MAAM,aAAa,KAAKxB,CAAC,GAAE,IAAE,KAAK,MAAM,MAAM,kBAAkB,KAAKA,CAAC,KAAG,KAAK,MAAM,MAAM,gBAAgB,KAAKA,CAAC;GAAE,OAAOwB,KAAG,MAAI,IAAExB,EAAE,UAAU,GAAEA,EAAE,SAAO,CAAC,IAAG;IAAC,MAAK;IAAW,KAAI,EAAE;IAAG,MAAKA;GAAC;EAAC;CAAC;CAAC,GAAG,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,OAAO,GAAG,KAAK,CAAC;EAAE,IAAG,GAAE,OAAM;GAAC,MAAK;GAAK,KAAI,EAAE;EAAE;CAAC;CAAC,IAAI,GAAE,GAAE,IAAE,IAAG;EAAC,IAAIwB,IAAE,KAAK,MAAM,OAAO,UAAU,KAAK,CAAC;EAAE,IAAIA,MAAY,CAAEA,EAAE,MAAS,CAAC,KAAG,KAAK,MAAM,OAAO,YAAY,KAAK,CAAC,IAAE;GAAC,IAAId,IAAE,CAAC,GAAGc,EAAE,EAAE,CAAC,CAAC,SAAO,GAAEb,GAAEC,GAAEM,IAAER,GAAEN,IAAE,KAAK,MAAM,OAAO;GAAU,KAAI,EAAE,YAAU,GAAE,IAAE,EAAE,MAAM,KAAG,EAAE,SAAOM,CAAC,IAAG,IAAEN,EAAE,KAAK,CAAC,OAAK,OAAM;IAAC,IAAG,IAAEoB,EAAE,MAAIA,EAAE,MAAIA,EAAE,MAAIA,EAAE,MAAIA,EAAE,MAAIA,EAAE,IAAG,CAACb,MAAI,IAAE,CAAC,GAAGA,CAAC,CAAC,CAAC,QAAOC,MAAIF,IAAG;IAAS,IAAGc,EAAE,MAAIA,EAAE,IAAG;KAAC,KAAGZ;KAAE;IAAQ;IAAC,IAAG,KAAGA,GAAEM,IAAE,GAAE;IAAS,IAAE,KAAK,IAAIN,GAAEA,IAAEM,CAAC;IAAE,IAAIiC,IAAE,CAAC,GAAG3B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAOsG,IAAE,EAAE,MAAM,GAAEpH,IAAEc,EAAE,QAAM2B,IAAEvC,CAAC,GAAEiB,IAAEiG,EAAE,MAAMpH,GAAE,CAACA,CAAC;IAAE,OAAM;KAAC,MAAK;KAAM,KAAIoH;KAAE,MAAKjG;KAAE,QAAO,KAAK,MAAM,aAAaA,CAAC;IAAC;GAAC;EAAC;CAAC;CAAC,SAAS,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,OAAO,SAAS,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAI7B,GAAEwB;GAAE,OAAO,EAAE,OAAK,OAAK,IAAE,EAAE,IAAG,IAAE,YAAUxB,MAAI,IAAE,EAAE,IAAG,IAAEA,IAAG;IAAC,MAAK;IAAO,KAAI,EAAE;IAAG,MAAKA;IAAE,MAAKwB;IAAE,UAAS,CAAC;IAAE,QAAO,CAAC;KAAC,MAAK;KAAO,KAAIxB;KAAE,MAAKA;IAAC,CAAC;GAAC;EAAC;CAAC;CAAC,IAAI,GAAE;EAAC,IAAI;EAAE,IAAG,IAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,GAAE;GAAC,IAAIA,GAAEwB;GAAE,IAAG,EAAE,OAAK,KAAI,IAAE,EAAE,IAAG,IAAE,YAAUxB;QAAM;IAAC,IAAI;IAAE;KAAG,IAAE,EAAE,IAAG,EAAE,KAAG,KAAK,MAAM,OAAO,WAAW,KAAK,EAAE,EAAE,CAAC,GAAG,MAAI;WAAS,MAAI,EAAE;IAAI,IAAE,EAAE,IAAG,AAA+BwB,IAA/B,EAAE,OAAK,SAAS,YAAU,EAAE,KAAK,EAAE;GAAE;GAAC,OAAM;IAAC,MAAK;IAAO,KAAI,EAAE;IAAG,MAAKxB;IAAE,MAAKwB;IAAE,UAAS,CAAC;IAAE,QAAO,CAAC;KAAC,MAAK;KAAO,KAAIxB;KAAE,MAAKA;IAAC,CAAC;GAAC;EAAC;CAAC;CAAC,WAAW,GAAE;EAAC,IAAI,IAAE,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;EAAE,IAAG,GAAE;GAAC,IAAIA,IAAE,KAAK,MAAM,MAAM;GAAW,OAAM;IAAC,MAAK;IAAO,KAAI,EAAE;IAAG,MAAKA,IAAE,EAAE,KAAGkN,GAAG,EAAE,EAAE;IAAE,SAAQlN;GAAC;EAAC;CAAC;AAAC,GAAMgO,IAAE,MAAM/M,EAAC;CAAC;CAAO;CAAQ;CAAM;CAAY;CAAU,YAAY,GAAE;EAAC,KAAK,SAAO,CAAC,GAAE,KAAK,OAAO,QAAM,OAAO,OAAO,IAAI,GAAE,KAAK,UAAQ,KAAGkH,IAAE,KAAK,QAAQ,YAAU,KAAK,QAAQ,aAAW,IAAI0F,GAAA,GAAE,KAAK,YAAU,KAAK,QAAQ,WAAU,KAAK,UAAU,UAAQ,KAAK,SAAQ,KAAK,UAAU,QAAM,MAAK,KAAK,cAAY,CAAC,GAAE,KAAK,QAAM;GAAC,QAAO,CAAC;GAAE,YAAW,CAAC;GAAE,aAAY,CAAC;GAAE,mBAAkB,CAAC;GAAE,KAAI,CAAC;EAAC;EAAE,IAAI,IAAE;GAAC,OAAMrF;GAAE,OAAMqE,GAAE;GAAO,QAAOC,GAAE;EAAM;EAAE,KAAK,QAAQ,YAAU,EAAE,QAAMD,GAAE,UAAS,EAAE,SAAOC,GAAE,YAAU,KAAK,QAAQ,QAAM,EAAE,QAAMD,GAAE,KAAI,AAAsC,EAAE,SAAxC,KAAK,QAAQ,SAAgBC,GAAE,SAAgBA,GAAE,MAAK,KAAK,UAAU,QAAM;CAAC;CAAC,WAAW,QAAO;EAAC,OAAM;GAAC,OAAMD;GAAE,QAAOC;EAAC;CAAC;CAAC,OAAO,IAAI,GAAE,GAAE;EAAC,OAAO,IAAI7L,EAAER,CAAC,CAAC,CAAC,IAAIV,CAAC;CAAC;CAAC,OAAO,UAAU,GAAE,GAAE;EAAC,OAAO,IAAIkB,EAAER,CAAC,CAAC,CAAC,aAAaV,CAAC;CAAC;CAAC,IAAI,GAAE;EAAC,IAAE,EAAE,QAAQyI,EAAE,gBAAe,IAC55K,GAAE,KAAK,YAAY,GAAE,KAAK,MAAM;EAAE,KAAI,IAAI/H,IAAE,GAAEA,IAAE,KAAK,YAAY,QAAO,KAAI;GAAC,IAAIT,IAAE,KAAK,YAAYS;GAAG,KAAK,aAAaT,EAAE,KAAIA,EAAE,MAAM;EAAC;EAAC,OAAO,KAAK,cAAY,CAAC,GAAE,KAAK;CAAM;CAAC,YAAY,GAAE,IAAE,CAAC,GAAE,IAAE,CAAC,GAAE;EAAC,KAAK,UAAU,QAAM,MAAK,KAAK,QAAQ,aAAW,IAAE,EAAE,QAAQwI,EAAE,eAAc,MAAM,CAAC,CAAC,QAAQA,EAAE,WAAU,EAAE;EAAG,IAAIhH,IAAE,IAAE;EAAE,OAAK,IAAG;GAAC,IAAG,EAAE,SAAOA,GAAE,IAAE,EAAE;QAAW;IAAC,KAAK,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAAE;GAAK;GAAC,IAAIvB;GAAE,IAAG,KAAK,QAAQ,YAAY,OAAO,MAAK,OAAI,IAAEU,EAAE,KAAK,EAAC,OAAM,KAAI,GAAE,GAAE,CAAC,MAAI,IAAE,EAAE,UAAUV,EAAE,IAAI,MAAM,GAAE,EAAE,KAAKA,CAAC,GAAE,CAAC,KAAG,CAAC,CAAC,GAAE;GAAS,IAAG,IAAE,KAAK,UAAU,MAAM,CAAC,GAAE;IAAC,IAAE,EAAE,UAAUA,EAAE,IAAI,MAAM;IAAE,IAAIU,IAAE,EAAE,GAAG,EAAE;IAAE,EAAE,IAAI,WAAS,KAAGA,MAAI,KAAK,IAAE,EAAE,OAAK,OACzoB,EAAE,KAAKV,CAAC;IAAE;GAAQ;GAAC,IAAG,IAAE,KAAK,UAAU,KAAK,CAAC,GAAE;IAAC,IAAE,EAAE,UAAUA,EAAE,IAAI,MAAM;IAAE,IAAIU,IAAE,EAAE,GAAG,EAAE;IAAE,GAAG,SAAO,eAAaA,GAAG,SAAO,UAAQ,EAAE,QAAMA,EAAE,IAAI,SAAS,IAC5J,IAAE,KAAG,QACHV,EAAE,KAAI,EAAE,QAAM,OACfA,EAAE,MAAK,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC,MAAIU,EAAE,QAAM,EAAE,KAAKV,CAAC;IAAE;GAAQ;GAAsY,KAAlY,IAAE,KAAK,UAAU,OAAO,CAAC,OAAqD,IAAE,KAAK,UAAU,QAAQ,CAAC,OAAqD,IAAE,KAAK,UAAU,GAAG,CAAC,OAAqD,IAAE,KAAK,UAAU,WAAW,CAAC,OAAqD,IAAE,KAAK,UAAU,KAAK,CAAC,OAAqD,IAAE,KAAK,UAAU,KAAK,CAAC,IAAE;IAAC,IAAE,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAE,EAAE,KAAKA,CAAC;IAAE;GAAQ;GAAC,IAAG,IAAE,KAAK,UAAU,IAAI,CAAC,GAAE;IAAC,IAAE,EAAE,UAAUA,EAAE,IAAI,MAAM;IAAE,IAAIU,IAAE,EAAE,GAAG,EAAE;IAAE,GAAG,SAAO,eAAaA,GAAG,SAAO,UAAQ,EAAE,QAAMA,EAAE,IAAI,SAAS,IACvpB,IAAE,KAAG,QACHV,EAAE,KAAI,EAAE,QAAM,OACfA,EAAE,KAAI,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC,MAAIU,EAAE,QAAM,KAAK,OAAO,MAAMV,EAAE,SAAO,KAAK,OAAO,MAAMA,EAAE,OAAK;KAAC,MAAKA,EAAE;KAAK,OAAMA,EAAE;IAAK,GAAE,EAAE,KAAKA,CAAC;IAAG;GAAQ;GAA8E,KAA1E,IAAE,KAAK,UAAU,MAAM,CAAC,OAAqD,IAAE,KAAK,UAAU,SAAS,CAAC,IAAE;IAAC,IAAE,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAE,EAAE,KAAKA,CAAC;IAAE;GAAQ;GAAC,IAAIS,IAAE;GAAE,IAAG,KAAK,QAAQ,YAAY,YAAW;IAAC,IAAIC,IAAE,IAAE,GAAEC,IAAE,EAAE,MAAM,CAAC,GAAEM;IAAE,KAAK,QAAQ,WAAW,WAAW,SAAQ,MAAG;KAAC,IAAEd,EAAE,KAAK,EAAC,OAAM,KAAI,GAAEQ,CAAC,GAAE,OAAOM,KAAG,YAAUA,KAAG,MAAI,IAAE,KAAK,IAAIP,GAAEO,CAAC;IAAE,CAAC,GAAEP,IAAE,IAAE,KAAGA,KAAG,MAAI,IAAE,EAAE,UAAU,GAAEA,IAAE,CAAC;GAAE;GAAC,IAAG,KAAK,MAAM,QAAM,IAAE,KAAK,UAAU,UAAUD,CAAC,IAAG;IAAC,IAAIC,IAAE,EAAE,GAAG,EAAE;IAAE,KAAGA,GAAG,SAAO,eAAa,EAAE,QAAMA,EAAE,IAAI,SAAS,IACnoB,IAAE,KAAG,QACHV,EAAE,KAAI,EAAE,QAAM,OACfA,EAAE,MAAK,KAAK,YAAY,IAAI,GAAE,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC,MAAIU,EAAE,QAAM,EAAE,KAAKV,CAAC,GAAE,IAAES,EAAE,WAAS,EAAE,QAAO,IAAE,EAAE,UAAUT,EAAE,IAAI,MAAM;GAAU,OAAC,IAAG,IAAE,KAAK,UAAU,KAAK,CAAC,GAAE;IAAC,IAAE,EAAE,UAAUA,EAAE,IAAI,MAAM;IAAE,IAAIU,IAAE,EAAE,GAAG,EAAE;IAAE,GAAG,SAAO,UAAQ,EAAE,QAAMA,EAAE,IAAI,SAAS,IACzP,IAAE,KAAG,QACHV,EAAE,KAAI,EAAE,QAAM,OACfA,EAAE,MAAK,KAAK,YAAY,IAAI,GAAE,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC,MAAIU,EAAE,QAAM,EAAE,KAAKV,CAAC;GAAU,OAAC,IAAG,GAAE;IAAC,KAAK,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAAE;GAAK;EAAC;EAAC,OAAO,KAAK,MAAM,MAAI,CAAC,GAAE;CAAC;CAAC,OAAO,GAAE,IAAE,CAAC,GAAE;EAAC,OAAO,KAAK,YAAY,KAAK;GAAC,KAAI;GAAE,QAAO;EAAC,CAAC,GAAE;CAAC;CAAC,WAAW,GAAE;EAAC,IAAG,CAAC,EAAE,SAAS,GAAG,GAAE,OAAM,CAAC;EAAE,IAAI,IAAE,KAAK,UAAU,MAAM,OAAO;EAAK,KAAI,IAAI,KAAK,EAAE,SAAS,KAAK,UAAU,MAAM,OAAO,SAAS,GAAE,IAAG,EAAE,KAAK,EAAE,EAAE,KAAG,EAAE,OAAO,EAAE,QAAM,CAAC,MAAI,KAAI,OAAM,CAAC;EAAE,KAAI,IAAID,KAAK,EAAE,SAAS,KAAK,UAAU,MAAM,OAAO,aAAa,GAAE;GAAC,IAAIwB,IAAExB,EAAE,IAAGC,IAAEuB,EAAE,YAAY,GAAG;GAAE,IAAKA,EAAE,OAAO,CAAC,MAAI,OAAM,OAAO,OAAO,KAAK,OAAO,OAAM+L,GAAE/L,EAAE,MAAMvB,IAAE,GAAE,EAAE,CAAC,CAAC,KAAI,EAAEA,IAAE,KAAG,KAAK,WAAWuB,EAAE,MAAM,GAAEvB,IAAE,CAAC,CAAC,IAAG,OAAM,CAAC;EAAC;EAAC,OAAM,CAAC;CAAC;CAAC,aAAa,GAAE,IAAE,CAAC,GAAE;EAAC,KAAK,UAAU,QAAM;EAAK,IAAI,IAAE,KAAK,MAAM;EAAkB,KAAK,MAAM,oBAAkB,KAAG,EAAE,SAAS,GAAG;EAAE,IAAG;GAAC,OAAO,KAAK,GAAG,GAAE,CAAC;EAAC,UAAQ;GAAC,KAAK,MAAM,oBAAkB;EAAC;CAAC;CAAC,GAAG,GAAE,GAAE;EAAC,IAAI,IAAE;EAAE,IAAG,KAAK,OAAO,SAAO,EAAE,SAAS,GAAG,GAAE;GAAC,IAAIU,IAAE,KAAK,UAAU,MAAM,OAAO,eAAcC,KAAE,MAAG;IAAC,IAAIR,IAAEc,EAAE,YAAY,GAAG;IAAE,IAAG,CAAC,OAAO,OAAO,KAAK,OAAO,OAAMqM,GAAErM,EAAE,MAAMd,IAAE,GAAE,EAAE,CAAC,CAAC,GAAE,OAAOc;IAAE,IAAGd,IAAE,KAAGc,EAAE,OAAO,CAAC,MAAI,KAAI;KAAC,IAAIiC,IAAEjC,EAAE,MAAM,GAAEd,IAAE,CAAC;KAAE,IAAG,KAAK,WAAW+C,CAAC,GAAE,OAAM,MAAIA,EAAE,QAAQxC,GAAEC,CAAC,IAAE,OAAK,IAAI,OAAOM,EAAE,SAAOd,IAAE,CAAC,IAAE;IAAG;IAAC,OAAM,MAAI,IAAI,OAAOc,EAAE,SAAO,CAAC,IAAE;GAAG;GAAE,IAAE,EAAE,QAAQP,GAAEC,CAAC;EAAC;EAAC,IAAE,EAAE,QAAQ,KAAK,UAAU,MAAM,OAAO,4BAA2B,GAAE,GAAE,MAAIM,IAAE,IAAI,OAAOP,EAAE,MAAM,IAAEC,IAAEA,IAAED,EAAE,MAAMC,EAAE,QAAO,CAACA,EAAE,MAAM,CAAC,CAAC,QAAQ,MAAK,GAAG,IAAEA,IAAED,CAAC,GAAE,IAAE,EAAE,QAAQ,KAAK,UAAU,MAAM,OAAO,YAAW,GAAE,GAAE,MAAI;GAAC,IAAIP,IAAEc,IAAEA,EAAE,SAAO;GAAE,OAAOP,EAAE,MAAM,GAAEP,CAAC,IAAE,MAAI,IAAI,OAAOO,EAAE,SAAOP,IAAE,CAAC,IAAE;EAAG,CAAC,GAAE,IAAE,KAAK,QAAQ,OAAO,cAAc,KAAK,EAAC,OAAM,KAAI,GAAE,CAAC,KAAG;EAAE,IAAIoB,IAAE,CAAC,GAAEvB,IAAE,IAAGS,IAAE,IAAE;EAAE,OAAK,IAAG;GAAC,IAAG,EAAE,SAAOA,GAAE,IAAE,EAAE;QAAW;IAAC,KAAK,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAAE;GAAK;GAAC,MAAI,IAAE,KAAI,IAAE,CAAC;GAAE,IAAIC;GAAE,IAAG,KAAK,QAAQ,YAAY,QAAQ,MAAK,OAAI,IAAEO,EAAE,KAAK,EAAC,OAAM,KAAI,GAAE,GAAE,CAAC,MAAI,IAAE,EAAE,UAAUP,EAAE,IAAI,MAAM,GAAE,EAAE,KAAKA,CAAC,GAAE,CAAC,KAAG,CAAC,CAAC,GAAE;GAAkK,KAAtJ,IAAE,KAAK,UAAU,OAAO,CAAC,OAAqD,IAAE,KAAK,UAAU,IAAI,CAAC,OAAqD,IAAE,KAAK,UAAU,KAAK,CAAC,IAAE;IAAC,IAAE,EAAE,UAAUA,EAAE,IAAI,MAAM,GAAE,EAAE,KAAKA,CAAC;IAAE;GAAQ;GAAC,IAAG,IAAE,KAAK,UAAU,QAAQ,GAAE,KAAK,OAAO,KAAK,GAAE;IAAC,IAAE,EAAE,UAAUA,EAAE,IAAI,MAAM;IAAE,IAAIO,IAAE,EAAE,GAAG,EAAE;IAAE,EAAE,SAAO,UAAQA,GAAG,SAAO,UAAQ,EAAE,OAAKP,EAAE,KAAI,EAAE,QAAMA,EAAE,QAAM,EAAE,KAAKA,CAAC;IAAE;GAAQ;GAA8Y,KAA1Y,IAAE,KAAK,UAAU,SAAS,GAAE,GAAEV,CAAC,OAAqD,IAAE,KAAK,UAAU,SAAS,CAAC,OAAqD,IAAE,KAAK,UAAU,GAAG,CAAC,OAAqD,IAAE,KAAK,UAAU,IAAI,GAAE,GAAEA,CAAC,OAAqD,IAAE,KAAK,UAAU,SAAS,CAAC,MAAqD,CAAC,KAAK,MAAM,WAAS,IAAE,KAAK,UAAU,IAAI,CAAC,IAAG;IAAC,IAAE,EAAE,UAAUU,EAAE,IAAI,MAAM,GAAE,EAAE,KAAKA,CAAC;IAAE;GAAQ;GAAC,IAAIC,IAAE;GAAE,IAAG,KAAK,QAAQ,YAAY,aAAY;IAAC,IAAIM,IAAE,IAAE,GAAEd,IAAE,EAAE,MAAM,CAAC,GAAE+C;IAAE,KAAK,QAAQ,WAAW,YAAY,SAAQ,MAAG;KAAC,IAAE2E,EAAE,KAAK,EAAC,OAAM,KAAI,GAAE1H,CAAC,GAAE,OAAO+C,KAAG,YAAUA,KAAG,MAAI,IAAE,KAAK,IAAIjC,GAAEiC,CAAC;IAAE,CAAC,GAAEjC,IAAE,IAAE,KAAGA,KAAG,MAAI,IAAE,EAAE,UAAU,GAAEA,IAAE,CAAC;GAAE;GAAC,IAAG,IAAE,KAAK,UAAU,WAAWN,CAAC,GAAE;IAAC,IAAE,EAAE,UAAUD,EAAE,IAAI,MAAM,GAAEA,EAAE,IAAI,MAAM,EAAE,MAAI,QAAM,IAAEA,EAAE,IAAI,MAAM,EAAE,IAAG,IAAE,CAAC;IAAE,IAAIO,IAAE,EAAE,GAAG,EAAE;IAAE,GAAG,SAAO,UAAQ,EAAE,OAAKP,EAAE,KAAI,EAAE,QAAMA,EAAE,QAAM,EAAE,KAAKA,CAAC;GAAU,OAAC,IAAG,GAAE;IAAC,KAAK,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAAE;GAAK;EAAC;EAAC,OAAO;CAAC;CAAC,kBAAkB,GAAE;EAAC,IAAI,IAAE,4BAA0B;EAAE,IAAG,KAAK,QAAQ,QAAO,QAAQ,MAAM,CAAC;OAAO,MAAU,MAAM,CAAC;CAAC;AAAC,GAAMsN,KAAE,MAAK;CAAC;CAAQ;CAAO,YAAY,GAAE;EAAC,KAAK,UAAQ,KAAG9F;CAAC;CAAC,MAAM,GAAE;EAAC,OAAM;CAAE;CAAC,KAAK,EAAC,MAAK,GAAE,MAAK,GAAE,SAAQ,KAAG;EAAC,IAAI3G,KAAG,KAAG,GAAA,CAAI,MAAMgH,EAAE,aAAa,CAAC,GAAG,IAAGvI,IAAE,IAAE,EAAE,QAAQuI,EAAE,eAAc,EAAE,IAAE,OAC38G;EAAG,OAAOhH,IAAE,iCAA8ByL,EAAEzL,CAAC,IAAE,SAAM,IAAEvB,IAAEgN,EAAEhN,GAAE,CAAC,CAAC,KAAG,oBAClE,iBAAe,IAAEA,IAAEgN,EAAEhN,GAAE,CAAC,CAAC,KAAG;CAC7B;CAAC,WAAW,EAAC,QAAO,KAAG;EAAC,OAAM;EAC7B,KAAK,OAAO,MAAM,CAAC,EAAE;;CACtB;CAAC,KAAK,EAAC,MAAK,KAAG;EAAC,OAAO;CAAC;CAAC,IAAI,GAAE;EAAC,OAAM;CAAE;CAAC,QAAQ,EAAC,QAAO,GAAE,OAAM,KAAG;EAAC,OAAM,KAAK,EAAE,GAAG,KAAK,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE;;CACvH;CAAC,GAAG,GAAE;EAAC,OAAM;CACb;CAAC,KAAK,GAAE;EAAC,IAAI,IAAE,EAAE,SAAQ,IAAE,EAAE,OAAMuB,IAAE;EAAG,KAAI,IAAIb,IAAE,GAAEA,IAAE,EAAE,MAAM,QAAO,KAAI;GAAC,IAAIC,IAAE,EAAE,MAAMD;GAAG,KAAG,KAAK,SAASC,CAAC;EAAC;EAAC,IAAIX,IAAE,IAAE,OAAK,MAAKS,IAAE,KAAG,MAAI,IAAE,cAAW,IAAE,OAAI;EAAG,OAAM,MAAIT,IAAES,IAAE,QAC7Kc,IAAE,OAAKvB,IAAE;CACV;CAAC,SAAS,GAAE;EAAC,OAAM,OAAO,KAAK,OAAO,MAAM,EAAE,MAAM,EAAE;;CACtD;CAAC,SAAS,EAAC,SAAQ,KAAG;EAAC,OAAM,aAAW,IAAE,kBAAc,MAAI;CAA+B;CAAC,UAAU,EAAC,QAAO,KAAG;EAAC,OAAM,MAAM,KAAK,OAAO,YAAY,CAAC,EAAE;;CACzJ;CAAC,MAAM,GAAE;EAAC,IAAI,IAAE,IAAG,IAAE;EAAG,KAAI,IAAIA,IAAE,GAAEA,IAAE,EAAE,OAAO,QAAO,KAAI,KAAG,KAAK,UAAU,EAAE,OAAOA,EAAE;EAAE,KAAG,KAAK,SAAS,EAAC,MAAK,EAAC,CAAC;EAAE,IAAIuB,IAAE;EAAG,KAAI,IAAIvB,IAAE,GAAEA,IAAE,EAAE,KAAK,QAAO,KAAI;GAAC,IAAIS,IAAE,EAAE,KAAKT;GAAG,IAAE;GAAG,KAAI,IAAIU,IAAE,GAAEA,IAAED,EAAE,QAAO,KAAI,KAAG,KAAK,UAAUA,EAAEC,EAAE;GAAE,KAAG,KAAK,SAAS,EAAC,MAAK,EAAC,CAAC;EAAC;EAAC,OAAO,AAAIa,MAAE,UAAUA,EAAE,WAAW,uBAEpS,IAAE,eACFA,IAAE;CACH;CAAC,SAAS,EAAC,MAAK,KAAG;EAAC,OAAM;EACzB,EAAE;;CACH;CAAC,UAAU,GAAE;EAAC,IAAI,IAAE,KAAK,OAAO,YAAY,EAAE,MAAM,GAAE,IAAE,EAAE,SAAO,OAAK;EAAK,QAAO,EAAE,QAAM,IAAI,EAAE,UAAU,EAAE,MAAM,MAAI,IAAI,EAAE,MAAI,IAAE,KAAK,EAAE;;CACzI;CAAC,OAAO,EAAC,QAAO,KAAG;EAAC,OAAM,WAAW,KAAK,OAAO,YAAY,CAAC,EAAE;CAAU;CAAC,GAAG,EAAC,QAAO,KAAG;EAAC,OAAM,OAAO,KAAK,OAAO,YAAY,CAAC,EAAE;CAAM;CAAC,SAAS,EAAC,MAAK,KAAG;EAAC,OAAM,SAASyL,EAAE,GAAE,CAAC,CAAC,EAAE;CAAQ;CAAC,GAAG,GAAE;EAAC,OAAM;CAAM;CAAC,IAAI,EAAC,QAAO,KAAG;EAAC,OAAM,QAAQ,KAAK,OAAO,YAAY,CAAC,EAAE;CAAO;CAAC,KAAK,EAAC,MAAK,GAAE,OAAM,GAAE,MAAK,GAAE,QAAOzL,GAAE,UAASvB,KAAG;EAAC,IAAIS,IAAET,IAAEgN,EAAE,GAAE,CAAC,CAAC,IAAE,KAAK,OAAO,YAAYzL,CAAC,GAAEb,IAAEwM,GAAG,CAAC;EAAE,IAAGxM,MAAI,MAAK,OAAOD;EAAE,IAAEuM,EAAEtM,GAAEV,CAAC;EAAE,IAAIW,IAAE,eAAY,IAAE;EAAI,OAAO,MAAI,KAAG,cAAWqM,EAAE,CAAC,IAAE,OAAK,KAAG,MAAIvM,IAAE,QAAOE;CAAC;CAAC,MAAM,EAAC,MAAK,GAAE,OAAM,GAAE,MAAK,GAAE,QAAOY,KAAG;EAAC,MAAI,IAAE,KAAK,OAAO,YAAYA,GAAE,KAAK,OAAO,YAAY;EAAG,IAAIvB,IAAEkN,GAAG,CAAC;EAAE,IAAGlN,MAAI,MAAK,OAAOgN,EAAE,CAAC;EAAE,IAAEhN;EAAE,IAAIS,IAAE,aAAauM,EAAE,CAAC,EAAE,SAASA,EAAE,CAAC,EAAE;EAAG,OAAO,MAAI,KAAG,WAAWA,EAAE,CAAC,EAAE,KAAI,KAAG,KAAIvM;CAAC;CAAC,KAAK,GAAE;EAAC,OAAM,YAAW,KAAG,EAAE,SAAO,KAAK,OAAO,YAAY,EAAE,MAAM,IAAE,aAAY,KAAG,EAAE,UAAQ,EAAE,OAAKuM,EAAE,EAAE,IAAI;CAAC;AAAC,GAAMiB,KAAE,MAAK;CAAC,OAAO,EAAC,MAAK,KAAG;EAAC,OAAO;CAAC;CAAC,GAAG,EAAC,MAAK,KAAG;EAAC,OAAO;CAAC;CAAC,SAAS,EAAC,MAAK,KAAG;EAAC,OAAO;CAAC;CAAC,IAAI,EAAC,MAAK,KAAG;EAAC,OAAO;CAAC;CAAC,KAAK,EAAC,MAAK,KAAG;EAAC,OAAO;CAAC;CAAC,KAAK,EAAC,MAAK,KAAG;EAAC,OAAO;CAAC;CAAC,KAAK,EAAC,MAAK,KAAG;EAAC,OAAM,KAAG;CAAC;CAAC,MAAM,EAAC,MAAK,KAAG;EAAC,OAAM,KAAG;CAAC;CAAC,KAAI;EAAC,OAAM;CAAE;CAAC,SAAS,EAAC,KAAI,KAAG;EAAC,OAAO;CAAC;AAAC,GAAMC,IAAE,MAAMlN,EAAC;CAAC;CAAQ;CAAS;CAAa,YAAY,GAAE;EAAC,KAAK,UAAQ,KAAGkH,IAAE,KAAK,QAAQ,WAAS,KAAK,QAAQ,YAAU,IAAI8F,GAAA,GAAE,KAAK,WAAS,KAAK,QAAQ,UAAS,KAAK,SAAS,UAAQ,KAAK,SAAQ,KAAK,SAAS,SAAO,MAAK,KAAK,eAAa,IAAIC,GAAA;CAAC;CAAC,OAAO,MAAM,GAAE,GAAE;EAAC,OAAO,IAAIjN,EAAER,CAAC,CAAC,CAAC,MAAMV,CAAC;CAAC;CAAC,OAAO,YAAY,GAAE,GAAE;EAAC,OAAO,IAAIkB,EAAER,CAAC,CAAC,CAAC,YAAYV,CAAC;CAAC;CAAC,MAAM,GAAE;EAAC,KAAK,SAAS,SAAO;EAAK,IAAI,IAAE;EAAG,KAAI,IAAI,IAAE,GAAE,IAAE,EAAE,QAAO,KAAI;GAAC,IAAIyB,IAAE,EAAE;GAAG,IAAG,KAAK,QAAQ,YAAY,YAAYA,EAAE,OAAM;IAAC,IAAId,IAAEc,GAAEb,IAAE,KAAK,QAAQ,WAAW,UAAUD,EAAE,KAAK,CAAC,KAAK,EAAC,QAAO,KAAI,GAAEA,CAAC;IAAE,IAAGC,MAAI,CAAC,KAAG,CAAC;KAAC;KAAQ;KAAK;KAAU;KAAO;KAAQ;KAAa;KAAO;KAAW;KAAO;KAAM;KAAY;IAAM,CAAC,CAAC,SAASD,EAAE,IAAI,GAAE;KAAC,KAAGC,KAAG;KAAG;IAAQ;GAAC;GAAC,IAAIV,IAAEuB;GAAE,QAAOvB,EAAE,MAAT;IAAe,KAAI;KAAS,KAAG,KAAK,SAAS,MAAMA,CAAC;KAAE;IAAM,KAAI;KAAM,KAAG,KAAK,SAAS,GAAGA,CAAC;KAAE;IAAM,KAAI;KAAW,KAAG,KAAK,SAAS,QAAQA,CAAC;KAAE;IAAM,KAAI;KAAQ,KAAG,KAAK,SAAS,KAAKA,CAAC;KAAE;IAAM,KAAI;KAAS,KAAG,KAAK,SAAS,MAAMA,CAAC;KAAE;IAAM,KAAI;KAAc,KAAG,KAAK,SAAS,WAAWA,CAAC;KAAE;IAAM,KAAI;KAAQ,KAAG,KAAK,SAAS,KAAKA,CAAC;KAAE;IAAM,KAAI;KAAY,KAAG,KAAK,SAAS,SAASA,CAAC;KAAE;IAAM,KAAI;KAAQ,KAAG,KAAK,SAAS,KAAKA,CAAC;KAAE;IAAM,KAAI;KAAO,KAAG,KAAK,SAAS,IAAIA,CAAC;KAAE;IAAM,KAAI;KAAa,KAAG,KAAK,SAAS,UAAUA,CAAC;KAAE;IAAM,KAAI;KAAQ,KAAG,KAAK,SAAS,KAAKA,CAAC;KAAE;IAAM,SAAQ;KAAC,IAAIS,IAAE,kBAAeT,EAAE,OAAK;KAAwB,IAAG,KAAK,QAAQ,QAAO,OAAO,QAAQ,MAAMS,CAAC,GAAE;KAAG,MAAU,MAAMA,CAAC;IAAC;GAAC;EAAC;EAAC,OAAO;CAAC;CAAC,YAAY,GAAE,IAAE,KAAK,UAAS;EAAC,KAAK,SAAS,SAAO;EAAK,IAAI,IAAE;EAAG,KAAI,IAAIc,IAAE,GAAEA,IAAE,EAAE,QAAO,KAAI;GAAC,IAAIvB,IAAE,EAAEuB;GAAG,IAAG,KAAK,QAAQ,YAAY,YAAYvB,EAAE,OAAM;IAAC,IAAIU,IAAE,KAAK,QAAQ,WAAW,UAAUV,EAAE,KAAK,CAAC,KAAK,EAAC,QAAO,KAAI,GAAEA,CAAC;IAAE,IAAGU,MAAI,CAAC,KAAG,CAAC;KAAC;KAAS;KAAO;KAAO;KAAQ;KAAW;KAAS;KAAK;KAAW;KAAK;KAAM;IAAM,CAAC,CAAC,SAASV,EAAE,IAAI,GAAE;KAAC,KAAGU,KAAG;KAAG;IAAQ;GAAC;GAAC,IAAID,IAAET;GAAE,QAAOS,EAAE,MAAT;IAAe,KAAI;KAAU,KAAG,EAAE,KAAKA,CAAC;KAAE;IAAM,KAAI;KAAQ,KAAG,EAAE,KAAKA,CAAC;KAAE;IAAM,KAAI;KAAQ,KAAG,EAAE,KAAKA,CAAC;KAAE;IAAM,KAAI;KAAS,KAAG,EAAE,MAAMA,CAAC;KAAE;IAAM,KAAI;KAAY,KAAG,EAAE,SAASA,CAAC;KAAE;IAAM,KAAI;KAAU,KAAG,EAAE,OAAOA,CAAC;KAAE;IAAM,KAAI;KAAM,KAAG,EAAE,GAAGA,CAAC;KAAE;IAAM,KAAI;KAAY,KAAG,EAAE,SAASA,CAAC;KAAE;IAAM,KAAI;KAAM,KAAG,EAAE,GAAGA,CAAC;KAAE;IAAM,KAAI;KAAO,KAAG,EAAE,IAAIA,CAAC;KAAE;IAAM,KAAI;KAAQ,KAAG,EAAE,KAAKA,CAAC;KAAE;IAAM,SAAQ;KAAC,IAAIC,IAAE,kBAAeD,EAAE,OAAK;KAAwB,IAAG,KAAK,QAAQ,QAAO,OAAO,QAAQ,MAAMC,CAAC,GAAE;KAAG,MAAU,MAAMA,CAAC;IAAC;GAAC;EAAC;EAAC,OAAO;CAAC;AAAC,GAAMyN,KAAE,MAAK;CAAC;CAAQ;CAAM,YAAY,GAAE;EAAC,KAAK,UAAQ,KAAGjG;CAAC;CAAC,OAAO,mCAAiB,IAAI,IAAI;EAAC;EAAa;EAAc;EAAmB;CAAc,CAAC;CAAE,OAAO,+CAA6B,IAAI,IAAI;EAAC;EAAa;EAAc;CAAkB,CAAC;CAAE,WAAW,GAAE;EAAC,OAAO;CAAC;CAAC,YAAY,GAAE;EAAC,OAAO;CAAC;CAAC,iBAAiB,GAAE;EAAC,OAAO;CAAC;CAAC,aAAa,GAAE;EAAC,OAAO;CAAC;CAAC,aAAa,IAAE,KAAK,OAAM;EAAC,OAAO,IAAE6F,EAAE,MAAIA,EAAE;CAAS;CAAC,cAAc,IAAE,KAAK,OAAM;EAAC,OAAO,IAAEG,EAAE,QAAMA,EAAE;CAAW;AAAC;AAAE,SAASE,GAAE,GAAE,GAAE;CAAC,IAAG,MAAM,QAAQtO,CAAC,GAAE,KAAI,IAAIU,IAAE,GAAEA,IAAEV,EAAE,QAAO,KAAI,EAAE,KAAKA,EAAEU,EAAE;MAAO,EAAE,KAAKV,CAAC;AAAC;AAChpH,IAAIuO,KAAE,IAAI,MADkpH;CAAC,WAASpG,GAAE;CAAE,UAAQ,KAAK;CAAW,QAAM,KAAK,cAAc,CAAC,CAAC;CAAE,cAAY,KAAK,cAAc,CAAC,CAAC;CAAE,SAAOiG;CAAE,WAASF;CAAE,eAAaC;CAAE,QAAMF;CAAE,YAAUH;CAAE,QAAMO;CAAE,YAAY,GAAG,GAAE;EAAC,KAAK,IAAI,GAAG,CAAC;CAAC;CAAC,WAAW,GAAE,GAAE;EAAC,IAAI,IAAE,CAAC;EAAE,KAAI,IAAI5M,KAAK,GAAE,QAAO6M,GAAE,GAAE,EAAE,KAAK,MAAK7M,CAAC,CAAC,GAAEA,EAAE,MAA7B;GAAmC,KAAI,SAAQ;IAAC,IAAIvB,IAAEuB;IAAE,KAAI,IAAId,KAAKT,EAAE,QAAO,GAAE,GAAE,KAAK,WAAWS,EAAE,QAAO,CAAC,CAAC;IAAE,KAAI,IAAIA,KAAKT,EAAE,MAAK,KAAI,IAAIU,KAAKD,GAAE,GAAE,GAAE,KAAK,WAAWC,EAAE,QAAO,CAAC,CAAC;IAAE;GAAK;GAAC,KAAI,QAAO;IAAC,IAAIV,IAAEuB;IAAE,GAAE,GAAE,KAAK,WAAWvB,EAAE,OAAM,CAAC,CAAC;IAAE;GAAK;GAAC,SAAQ;IAAC,IAAIA,IAAEuB;IAAE,KAAK,SAAS,YAAY,cAAcvB,EAAE,QAAM,KAAK,SAAS,WAAW,YAAYA,EAAE,KAAK,CAAC,SAAQ,MAAG;KAAC,IAAIU,IAAEV,EAAES,EAAE,CAAC,KAAK,IAAE,CAAC;KAAE,GAAE,GAAE,KAAK,WAAWC,GAAE,CAAC,CAAC;IAAC,CAAC,IAAEV,EAAE,UAAQoO,GAAE,GAAE,KAAK,WAAWpO,EAAE,QAAO,CAAC,CAAC;GAAC;EAAC;EAAC,OAAO;CAAC;CAAC,IAAI,GAAG,GAAE;EAAC,IAAI,IAAE,KAAK,SAAS,cAAY;GAAC,WAAU,CAAC;GAAE,aAAY,CAAC;EAAC;EAAE,OAAO,EAAE,SAAQ,MAAG;GAAC,IAAIuB,IAAE,EAAC,GAAGxB,EAAC;GAAE,IAAG,EAAE,QAAM,KAAK,SAAS,SAAOwB,EAAE,SAAO,CAAC,GAAExB,EAAE,eAAaA,EAAE,WAAW,SAAQ,MAAG;IAAC,IAAG,CAACC,EAAE,MAAK,MAAU,MAAM,yBAAyB;IAAE,IAAG,cAAaA,GAAE;KAAC,IAAIS,IAAE,EAAE,UAAUT,EAAE;KAAM,IAAE,EAAE,UAAUA,EAAE,QAAM,SAAS,GAAGU,GAAE;MAAC,IAAIC,IAAEX,EAAE,SAAS,MAAM,MAAKU,CAAC;MAAE,OAAOC,MAAI,CAAC,MAAI,IAAEF,EAAE,MAAM,MAAKC,CAAC,IAAGC;KAAC,IAAE,EAAE,UAAUX,EAAE,QAAMA,EAAE;IAAQ;IAAC,IAAG,eAAcA,GAAE;KAAC,IAAG,CAACA,EAAE,SAAOA,EAAE,UAAQ,WAASA,EAAE,UAAQ,UAAS,MAAU,MAAM,6CAA6C;KAAE,IAAIS,IAAE,EAAET,EAAE;KAAO,IAAES,EAAE,QAAQT,EAAE,SAAS,IAAE,EAAEA,EAAE,SAAO,CAACA,EAAE,SAAS,GAAEA,EAAE,UAAQA,EAAE,UAAQ,UAAQ,EAAE,aAAW,EAAE,WAAW,KAAKA,EAAE,KAAK,IAAE,EAAE,aAAW,CAACA,EAAE,KAAK,IAAEA,EAAE,UAAQ,aAAW,EAAE,cAAY,EAAE,YAAY,KAAKA,EAAE,KAAK,IAAE,EAAE,cAAY,CAACA,EAAE,KAAK;IAAG;IAAC,iBAAgBA,KAAGA,EAAE,gBAAc,EAAE,YAAYA,EAAE,QAAMA,EAAE;GAAY,CAAC,GAAE,EAAE,aAAW,IAAGD,EAAE,UAAS;IAAC,IAAIC,IAAE,KAAK,SAAS,YAAU,IAAIgO,GAAE,KAAK,QAAQ;IAAE,KAAI,IAAIvN,KAAKV,EAAE,UAAS;KAAC,IAAG,EAAEU,KAAKT,IAAG,MAAU,MAAM,aAAaS,EAAE,iBAAiB;KAAE,IAAG,CAAC,WAAU,QAAQ,CAAC,CAAC,SAASA,CAAC,GAAE;KAAS,IAAIC,IAAED,GAAEE,IAAEZ,EAAE,SAASW,IAAGO,IAAEjB,EAAEU;KAAG,EAAEA,MAAI,GAAGP,MAAI;MAAC,IAAI+C,IAAEvC,EAAE,MAAMX,GAAEG,CAAC;MAAE,OAAO+C,MAAI,CAAC,MAAI,IAAEjC,EAAE,MAAMjB,GAAEG,CAAC,IAAG+C,KAAG;KAAE;IAAC;IAAC,EAAE,WAASlD;GAAC;GAAC,IAAGD,EAAE,WAAU;IAAC,IAAIC,IAAE,KAAK,SAAS,aAAW,IAAI4N,GAAE,KAAK,QAAQ;IAAE,KAAI,IAAInN,KAAKV,EAAE,WAAU;KAAC,IAAG,EAAEU,KAAKT,IAAG,MAAU,MAAM,cAAcS,EAAE,iBAAiB;KAAE,IAAG;MAAC;MAAU;MAAQ;KAAO,CAAC,CAAC,SAASA,CAAC,GAAE;KAAS,IAAIC,IAAED,GAAEE,IAAEZ,EAAE,UAAUW,IAAGO,IAAEjB,EAAEU;KAAG,EAAEA,MAAI,GAAGP,MAAI;MAAC,IAAI+C,IAAEvC,EAAE,MAAMX,GAAEG,CAAC;MAAE,OAAO+C,MAAI,CAAC,MAAI,IAAEjC,EAAE,MAAMjB,GAAEG,CAAC,IAAG+C;KAAC;IAAC;IAAC,EAAE,YAAUlD;GAAC;GAAC,IAAGD,EAAE,OAAM;IAAC,IAAIC,IAAE,KAAK,SAAS,SAAO,IAAImO,GAAA;IAAE,KAAI,IAAI1N,KAAKV,EAAE,OAAM;KAAC,IAAG,EAAEU,KAAKT,IAAG,MAAU,MAAM,SAASS,EAAE,iBAAiB;KAAE,IAAG,CAAC,WAAU,OAAO,CAAC,CAAC,SAASA,CAAC,GAAE;KAAS,IAAIC,IAAED,GAAEE,IAAEZ,EAAE,MAAMW,IAAGO,IAAEjB,EAAEU;KAAG,AAAuMV,EAAEU,KAAzMyN,GAAE,iBAAiB,IAAI1N,CAAC,KAAO,MAAG;MAAC,IAAG,KAAK,SAAS,SAAO0N,GAAE,6BAA6B,IAAI1N,CAAC,GAAE,QAAO,YAAS;OAAC,IAAIoH,IAAE,MAAMlH,EAAE,KAAKX,GAAEG,CAAC;OAAE,OAAOc,EAAE,KAAKjB,GAAE6H,CAAC;MAAC,EAAA,CAAG;MAAE,IAAI3E,IAAEvC,EAAE,KAAKX,GAAEG,CAAC;MAAE,OAAOc,EAAE,KAAKjB,GAAEkD,CAAC;KAAC,KAAQ,GAAG/C,MAAI;MAAC,IAAG,KAAK,SAAS,OAAM,QAAO,YAAS;OAAC,IAAI0H,IAAE,MAAMlH,EAAE,MAAMX,GAAEG,CAAC;OAAE,OAAO0H,MAAI,CAAC,MAAI,IAAE,MAAM5G,EAAE,MAAMjB,GAAEG,CAAC,IAAG0H;MAAC,EAAA,CAAG;MAAE,IAAI3E,IAAEvC,EAAE,MAAMX,GAAEG,CAAC;MAAE,OAAO+C,MAAI,CAAC,MAAI,IAAEjC,EAAE,MAAMjB,GAAEG,CAAC,IAAG+C;KAAC;IAAC;IAAC,EAAE,QAAMlD;GAAC;GAAC,IAAGD,EAAE,YAAW;IAAC,IAAIC,IAAE,KAAK,SAAS,YAAWS,IAAEV,EAAE;IAAW,EAAE,aAAW,SAAS,GAAE;KAAC,IAAIY,IAAE,CAAC;KAAE,OAAOA,EAAE,KAAKF,EAAE,KAAK,MAAKC,CAAC,CAAC,GAAEV,KAAGoO,GAAEzN,GAAEX,EAAE,KAAK,MAAKU,CAAC,CAAC,GAAEC;IAAC;GAAC;GAAC,KAAK,WAAS;IAAC,GAAG,KAAK;IAAS,GAAGY;GAAC;EAAC,CAAC,GAAE;CAAI;CAAC,WAAW,GAAE;EAAC,OAAO,KAAK,WAAS;GAAC,GAAG,KAAK;GAAS,GAAG;EAAC,GAAE;CAAI;CAAC,MAAM,GAAE,GAAE;EAAC,OAAOwM,EAAE,IAAI,GAAE,KAAG,KAAK,QAAQ;CAAC;CAAC,OAAO,GAAE,GAAE;EAAC,OAAOG,EAAE,MAAM,GAAE,KAAG,KAAK,QAAQ;CAAC;CAAC,cAAc,GAAE;EAAC,QAAO,GAAE,MAAI;GAAC,IAAI,IAAE,EAAC,GAAG3M,EAAC,GAAEd,IAAE;IAAC,GAAG,KAAK;IAAS,GAAG;GAAC,GAAEC,IAAE,KAAK,QAAQ,CAAC,CAACD,EAAE,QAAO,CAAC,CAACA,EAAE,KAAK;GAAE,IAAG,KAAK,SAAS,UAAQ,CAAC,KAAG,EAAE,UAAQ,CAAC,GAAE,OAAOC,EAAE,gBAAI,MAAM,oIAAoI,CAAC;GAAE,IAAG,OAAOX,IAAE,OAAKA,MAAI,MAAK,OAAOW,EAAE,gBAAI,MAAM,gDAAgD,CAAC;GAAE,IAAG,OAAOX,KAAG,UAAS,OAAOW,EAAE,gBAAI,MAAM,0CAAwC,OAAO,UAAU,SAAS,KAAKX,CAAC,IAAE,mBAAmB,CAAC;GAAE,IAAGU,EAAE,UAAQ,EAAE,MAAM,UAAQA,GAAE,EAAE,MAAM,QAAM,IAAGA,EAAE,OAAM,QAAO,YAAS;IAAC,IAAIE,IAAEF,EAAE,QAAM,MAAMA,EAAE,MAAM,WAAWV,CAAC,IAAEA,GAAEI,IAAE,OAAMM,EAAE,QAAM,MAAMA,EAAE,MAAM,aAAa,CAAC,IAAE,IAAEsN,EAAE,MAAIA,EAAE,UAAA,CAAWpN,GAAEF,CAAC,GAAEyC,IAAEzC,EAAE,QAAM,MAAMA,EAAE,MAAM,iBAAiBN,CAAC,IAAEA;IAAE,EAAE,cAAY,MAAM,QAAQ,IAAI,KAAK,WAAW+C,GAAEzC,EAAE,UAAU,CAAC;IAAE,IAAImB,IAAE,OAAMnB,EAAE,QAAM,MAAMA,EAAE,MAAM,cAAc,CAAC,IAAE,IAAEyN,EAAE,QAAMA,EAAE,YAAA,CAAahL,GAAEzC,CAAC;IAAE,OAAOA,EAAE,QAAM,MAAMA,EAAE,MAAM,YAAYmB,CAAC,IAAEA;GAAC,EAAA,CAAG,CAAC,CAAC,MAAMlB,CAAC;GAAE,IAAG;IAAC,EAAE,UAAQ,IAAED,EAAE,MAAM,WAAWV,CAAC;IAAG,IAAIkB,KAAGR,EAAE,QAAMA,EAAE,MAAM,aAAa,CAAC,IAAE,IAAEsN,EAAE,MAAIA,EAAE,UAAA,CAAWhO,GAAEU,CAAC;IAAE,EAAE,UAAQ,IAAEA,EAAE,MAAM,iBAAiBQ,CAAC,IAAGR,EAAE,cAAY,KAAK,WAAWQ,GAAER,EAAE,UAAU;IAAE,IAAIyC,KAAGzC,EAAE,QAAMA,EAAE,MAAM,cAAc,CAAC,IAAE,IAAEyN,EAAE,QAAMA,EAAE,YAAA,CAAajN,GAAER,CAAC;IAAE,OAAOA,EAAE,UAAQ,IAAEA,EAAE,MAAM,YAAYyC,CAAC,IAAGA;GAAC,SAAOvC,GAAE;IAAC,OAAOD,EAAEC,CAAC;GAAC;EAAC;CAAC;CAAC,QAAQ,GAAE,GAAE;EAAC,QAAO,MAAG;GAAC,IAAG,EAAE,WAAS,+DAC/sQ,GAAE;IAAC,IAAIY,IAAE,mCAAiCyL,EAAE,EAAE,UAAQ,IAAG,CAAC,CAAC,IAAE;IAAS,OAAO,IAAE,QAAQ,QAAQzL,CAAC,IAAEA;GAAC;GAAC,IAAG,GAAE,OAAO,QAAQ,OAAO,CAAC;GAAE,MAAM;EAAC;CAAC;AAAC,EAAY;AAAE,SAAS+M,EAAE,GAAE,GAAE;CAAC,OAAOD,GAAE,MAAMrN,GAAElB,CAAC;AAAC;AAAC,EAAE,UAAQ,EAAE,aAAW,SAAS,GAAE;CAAC,OAAOuO,GAAE,WAAWrN,CAAC,GAAE,EAAE,WAASqN,GAAE,UAASlG,GAAEmG,EAAE,QAAQ,GAAEA;AAAC,GAAE,EAAE,cAAYrG,IAAE,EAAE,WAASC;AAAE,SAASqG,GAAG,GAAGvN,GAAE;CAAC,OAAOqN,GAAE,IAAI,GAAGrN,CAAC,GAAE,EAAE,WAASqN,GAAE,UAASlG,GAAEmG,EAAE,QAAQ,GAAEA;AAAC;AAAC,EAAE,MAAIC,IAAG,EAAE,aAAW,SAAS,GAAE,GAAE;CAAC,OAAOF,GAAE,WAAWrN,GAAElB,CAAC;AAAC,GAAE,EAAE,cAAYuO,GAAE,aAAY,EAAE,SAAOH,GAAE,EAAE,SAAOA,EAAE,OAAM,EAAE,WAASF,IAAE,EAAE,eAAaC,IAAE,EAAE,QAAMF,GAAE,EAAE,QAAMA,EAAE,KAAI,EAAE,YAAUH,IAAE,EAAE,QAAMO,IAAE,EAAE,QAAMG,GAASA,EAAE,SAAWA,EAAE,YAAcA,EAAE,YAAcA,EAAE,aAAoBJ,EAAE,OAASH,EAAE;;;AC3EtuB,SAASS,GAAe,GAAG,GAAG;CAC7B,KAAK,IAAI,GAAG,KAAK,IAAI3G;AACtB;AACA,SAAS4G,GAAkB,GAAG,GAAG;CAChC,CAASzN,KAAR,QAAaA,IAAIhB,EAAE,YAAY,IAAIA,EAAE;CACtC,KAAK,IAAIF,IAAI,GAAGC,IAAI,MAAMiB,CAAC,GAAGlB,IAAIkB,GAAG,KAAK,EAAElB,KAAKE,EAAEF;CACnD,OAAOC;AACR;AACA,SAAS2O,GAAgB,GAAG;CAC3B,IAAI,MAAM,QAAQ1O,CAAC,GAAG,OAAOA;AAC9B;AACA,SAAS2O,GAAsB,GAAG,GAAG;CACpC,IAAInO,IAAYR,KAAR,OAAY,OAAsB,OAAO,SAAtB,OAAgCA,EAAE,OAAO,aAAaA,EAAE;CACnF,IAAYQ,KAAR,MAAW;EACd,IAAIV,GAAGC,GAAGwB,GAAGN,GAAGD,IAAI,CAAC,GAAGsN,IAAI,CAAC,GAAG7N,IAAI,CAAC;EACrC,IAAI;GACH,IAAI,KAAK,IAAID,EAAE,KAAKR,CAAC,EAAA,CAAG,MAAYW,MAAN,GAAS;IACtC,IAAI,OAAOH,CAAC,MAAMA,GAAG;IACrB,IAAI,CAAC;GACN,OAAO,OAAO,EAAE,KAAK,IAAIe,EAAE,KAAKf,CAAC,EAAA,CAAG,UAAUQ,EAAE,KAAKlB,EAAE,KAAK,GAAGkB,EAAE,WAAWL,IAAI,IAAI,CAAC;EACtF,SAASX,GAAG;GACX,IAAI,CAAC,GAAG,IAAIA;EACb,UAAU;GACT,IAAI;IACH,IAAI,CAACsO,KAAa9N,EAAE,UAAV,SAAqB,IAAIA,EAAE,OAAO,GAAG,OAAOS,CAAC,MAAMA,IAAI;GAClE,UAAU;IACT,IAAIR,GAAG,MAAMV;GACd;EACD;EACA,OAAOiB;CACR;AACD;AACA,SAAS4N,KAAmB;CAC3B,MAAU,UAAU,2IAA2I;AAChK;AAEA,SAASC,GAAe,GAAG,GAAG;CAC7B,OAAOH,GAAgB1O,CAAC,KAAK2O,GAAsB3O,GAAGF,CAAC,KAAKgP,GAA4B9O,GAAGF,CAAC,KAAK8O,GAAiB;AACnH;AACA,SAASE,GAA4B,GAAG,GAAG;CAC1C,IAAI9O,GAAG;EACN,IAAgB,OAAOA,KAAnB,UAAsB,OAAOyO,GAAkBzO,GAAGgB,CAAC;EACvD,IAAIR,IAAI,CAAC,EAAE,SAAS,KAAKR,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE;EACvC,OAAoBQ,MAAb,YAAkBR,EAAE,gBAAgB,IAAIA,EAAE,YAAY,OAAiBQ,MAAV,SAAyBA,MAAV,QAAc,MAAM,KAAKR,CAAC,IAAoBQ,MAAhB,eAAqB,2CAA2C,KAAKA,CAAC,IAAIiO,GAAkBzO,GAAGgB,CAAC,IAAI,KAAK;CAC3N;AACD;AACA,SAAS+N,GAAe,GAAG;CAC1B,IAAI,GAAG;CACP,SAASC,EAAO,GAAG,GAAG;EACrB,IAAI;GACH,IAAIhP,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAIA,EAAE,OAAOiB,IAAI,aAAauN;GAC/C,QAAQ,QAAQvN,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG;IAC7C,IAAIA,GAAG;KACN,IAAIM,IAAiB,MAAb,YAAkB,EAAE,IAAI,IAAI;KACpC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,OAAOyN,EAAOzN,GAAG,CAAC;KACtC,IAAI,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC;IACb;IACA,EAAO,CAAC,CAACvB,EAAE,MAAM,CAAC;GACnB,GAAG,SAAS,GAAG;IACd,EAAO,SAAS,CAAC;GAClB,CAAC;EACF,SAAS,GAAG;GACX,EAAO,GAAG,CAAC;EACZ;CACD;CACA,SAASiP,EAAO,GAAG,GAAG;EACrB,AAAM,MAAN,IAAU,EAAE,OAAOjP,CAAC,IAAI,EAAE,QAAQ;GACjC,OAAOA;GACP,MAAM;EACP,CAAC,IAAI,IAAI,EAAE,QAAQgP,EAAO,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI;CAC/C;CACA,KAAK,UAAU,SAAS,GAAG,GAAG;EAC7B,OAAO,IAAI,QAAQ,SAAS,GAAG,GAAG;GACjC,IAAIzN,IAAI;IACP,KAAK;IACL,KAAKvB;IACL,SAASS;IACT,QAAQQ;IACR,MAAM;GACP;GACA,IAAI,IAAI,EAAE,OAAOM,KAAK,IAAI,IAAIA,GAAGyN,EAAO,GAAGhP,CAAC;EAC7C,CAAC;CACF,GAAiB,OAAO,EAAE,UAAvB,eAAkC,KAAK,SAAS,KAAK;AACzD;AACA,GAAe,UAAwB,OAAO,UAArB,cAA+B,OAAO,iBAAiB,qBAAqB,WAAW;CAC/G,OAAO;AACR,GAAG,GAAe,UAAU,OAAO,SAAS,GAAG;CAC9C,OAAO,KAAK,QAAQ,QAAQ,CAAC;AAC9B,GAAG,GAAe,UAAU,QAAQ,SAAS,GAAG;CAC/C,OAAO,KAAK,QAAQ,SAAS,CAAC;AAC/B,GAAG,GAAe,UAAU,SAAS,SAAS,GAAG;CAChD,OAAO,KAAK,QAAQ,UAAU,CAAC;AAChC;AACA,IAAMkP,KAAU,OAAO,SACjBC,KAAiB,OAAO,gBACxBC,KAAW,OAAO,UAClBC,KAAiB,OAAO,gBACxBC,KAA2B,OAAO,0BACpCC,IAAS,OAAO,QAChBC,IAAO,OAAO,MACdC,KAAS,OAAO,QAChBC,KAAO,OAAO,UAAY,OAAe,SACzCC,KAAQD,GAAK,OACbE,KAAYF,GAAK;AACrB,AAAaH,MAAS,SAAgB,GAAG;CACxC,OAAOhH;AACR,GACA,AAAWiH,MAAO,SAAc,GAAG;CAClC,OAAOjH;AACR,GACA,AAAYoH,OAAQ,SAAe,GAAM,GAAS;CAC5C,IAA6BE,QAA2F;CAC7H,OAAOC,EAAK,MAAMC,GAASF,CAAI;AAChC,GACA,AAAgBD,OAAY,SAAmB,GAAM;CAEpD,OAAO,IAAII,EAAK,OADqH,kBAClH,CAAI;AACxB;AACA,IAAMC,KAAeC,EAAQ,MAAM,UAAU,OAAO;AACpD,MAAM,UAAU;AAChB,IAAMC,KAAmBD,EAAQ,MAAM,UAAU,WAAW,GACtDE,KAAWF,EAAQ,MAAM,UAAU,GAAG,GACtCG,KAAYH,EAAQ,MAAM,UAAU,IAAI,GACxCI,KAAaJ,EAAQ,MAAM,UAAU,KAAK,GAC1CK,KAAcL,EAAQ,MAAM,UAAU,MAAM,GAC5CM,KAAe,MAAM,SACrBC,KAAYC,GAAY,GAAG,GAC3BC,KAAST,EAAQ,IAAI,UAAU,GAAG,GAClCU,KAASV,EAAQ,IAAI,UAAU,GAAG,GAClCW,KAAoBX,EAAQ,OAAO,UAAU,WAAW,GACxDY,KAAiBZ,EAAQ,OAAO,UAAU,QAAQ,GAClDa,KAAcb,EAAQ,OAAO,UAAU,KAAK,GAC5Cc,KAAgBd,EAAQ,OAAO,UAAU,OAAO,GAChDe,KAAgBf,EAAQ,OAAO,UAAU,OAAO,GAChDgB,KAAahB,EAAQ,OAAO,UAAU,IAAI,GAC1CiB,KAAiBjB,EAAQ,OAAO,UAAU,QAAQ,GAClDkB,KAAkBlB,EAAQ,QAAQ,UAAU,QAAQ,GACpDmB,KAAiB,OAAO,SAAW,MAAc,OAAOnB,EAAQ,OAAO,UAAU,QAAQ,GACzFoB,KAAiB,OAAO,SAAW,MAAc,OAAOpB,EAAQ,OAAO,UAAU,QAAQ,GACzFqB,IAAuBrB,EAAQ,OAAO,UAAU,cAAc,GAC9DsB,KAAiBtB,EAAQ,OAAO,UAAU,QAAQ,GAClDuB,IAAavB,EAAQ,OAAO,UAAU,IAAI,GAC1CwB,KAAkBhB,GAAY,SAAS;AAO7C,SAASR,EAAQ,GAAM;CACtB,OAAO,SAAS,GAAS;EACxB,AAAIH,aAAmB,WAAQ,EAAQ,YAAY;EAC9C,IAA8BF,QAAkG;EACrI,OAAOF,GAAMG,GAAMC,GAASF,CAAI;CACjC;AACD;AAOA,SAASa,GAAY,GAAM;CAC1B,OAAO,WAAW;EAEjB,OAAOd,GAAUI,GAAM,IADsF,SACtF,CAAI;CAC5B;AACD;AASA,SAAS2B,EAAS,GAAK,GAAO;CAC7B,IAAIC,IAAoB,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAKf;CAEzF,IADI1B,MAAgBA,GAAe0C,GAAK,IAAI,GACxC,CAACrB,GAAasB,CAAK,GAAG,OAAOD;CACjC,IAAIlR,IAAImR,EAAM;CACd,OAAO,MAAK;EACX,IAAIC,IAAUD,EAAMnR;EACpB,IAAI,OAAOoR,KAAY,UAAU;GAChC,IAAMC,IAAYJ,EAAkBG,CAAO;GAC3C,AAAIC,MAAcD,MACZ3C,GAAS0C,CAAK,MAAG,EAAMnR,KAAKqR,IACjC,IAAUA;EAEZ;EACA,EAAID,KAAW;CAChB;CACA,OAAOF;AACR;AAOA,SAASI,GAAW,GAAO;CAC1B,KAAK,IAAIC,IAAQ,GAAGA,IAAQJ,EAAM,QAAQ,KAAS,AAAKP,EAAqBO,GAAOI,CAAK,MAAG,EAAMA,KAAS;CAC3G,OAAOJ;AACR;AAOA,SAASK,EAAM,GAAQ;CACtB,IAAMC,IAAY3C,GAAO,IAAI;CAC7B,KAAK,IAAM4C,KAASnD,GAAQoD,CAAM,GAAG;EACpC,IAAIC,IAAQ1D,GAAewD,GAAO,CAAC;EACnC,IAAMG,IAAWD,EAAM,IACjBE,IAAQF,EAAM;EACpB,AAAIhB,EAAqBe,GAAQE,CAAQ,MACxC,AAEKJ,EAAUI,KAFXhC,GAAaiC,CAAK,IAAyBR,GAAWQ,CAAK,IACtDA,KAAS,OAAOA,KAAU,YAAYA,EAAM,gBAAgB,SAA8BN,EAAMM,CAAK,IACnFA;CAE7B;CACA,OAAOL;AACR;AAOA,SAASM,GAAe,GAAO;CAC9B,QAAQ,OAAOD,GAAf;EACC,KAAK,UAAU,OAAOA;EACtB,KAAK,UAAU,OAAOtB,GAAesB,CAAK;EAC1C,KAAK,WAAW,OAAOrB,GAAgBqB,CAAK;EAC5C,KAAK,UAAU,OAAOpB,KAAiBA,GAAeoB,CAAK,IAAI;EAC/D,KAAK,UAAU,OAAOnB,KAAiBA,GAAemB,CAAK,IAAI;EAC/D,KAAK,aAAa,OAAOjB,GAAeiB,CAAK;EAC7C,KAAK;EACL,KAAK,UAAU;GACd,IAAIA,MAAU,MAAM,OAAOjB,GAAeiB,CAAK;GAC/C,IAAME,IAAgBF,GAChBG,IAAgBC,EAAaF,GAAe,UAAU;GAC5D,IAAI,OAAOC,KAAkB,YAAY;IACxC,IAAME,IAAcF,EAAcD,CAAa;IAC/C,OAAO,OAAOG,KAAgB,WAAWA,IAActB,GAAesB,CAAW;GAClF;GACA,OAAOtB,GAAeiB,CAAK;EAC5B;EACA,SAAS,OAAOjB,GAAeiB,CAAK;CACrC;AACD;AAQA,SAASI,EAAa,GAAQ,GAAM;CACnC,OAAOP,MAAW,OAAM;EACvB,IAAMS,IAAOzD,GAAyBgD,GAAQU,CAAI;EAClD,IAAID,GAAM;GACT,IAAIA,EAAK,KAAK,OAAO7C,EAAQ6C,EAAK,GAAG;GACrC,IAAI,OAAOA,EAAK,SAAU,YAAY,OAAO7C,EAAQ6C,EAAK,KAAK;EAChE;EACA,IAAS1D,GAAeiD,CAAM;CAC/B;CACA,SAASW,IAAgB;EACxB,OAAO;CACR;CACA,OAAOA;AACR;AAYA,SAASC,GAAe,GAAQ,GAAM;CACrC,OAAOZ,MAAW,OAAM;EACvB,IAAMS,IAAOzD,GAAyBgD,GAAQU,CAAI;EAClD,IAAID,GAAM,OAAOA,EAAK,MAAM7C,EAAQ6C,EAAK,GAAG,IAAI;EAChD,IAAS1D,GAAeiD,CAAM;CAC/B;CACA,OAAO;AACR;AACA,SAASa,GAAQ,GAAO;CACvB,IAAI;EAEH,OADA1B,EAAWgB,GAAO,EAAE,GACb;CACR,QAAkB;EACjB,OAAO;CACR;AACD;AACA,IAAMW,KAAS7D,EAAO,iqBAwHtB,CAAC,GACK8D,KAAQ9D,EAAO,sYAgDrB,CAAC,GACK+D,KAAa/D,EAAO;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,CAAC,GACKgE,KAAgBhE,EAAO;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,CAAC,GACKiE,KAAWjE,EAAO,qOA+BxB,CAAC,GACKkE,KAAmBlE,EAAO;CAC/B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,CAAC,GACKjQ,KAAOiQ,EAAO,CAAC,OAAO,CAAC,GACvBmE,KAAOnE,EAAO,u8BAuHpB,CAAC,GACKoE,KAAMpE,EAAO,g3DAiMnB,CAAC,GACKqE,KAASrE,EAAO,shBAuDtB,CAAC,GACKsE,KAAMtE,EAAO;CAClB;CACA;CACA;CACA;CACA;AACD,CAAC,GACKuE,KAAgBtE,EAAK,uBAAuB,GAC5CuE,KAAWvE,EAAK,uBAAuB,GACvCwE,KAAcxE,EAAK,aAAa,GAChCyE,KAAYzE,EAAK,8BAA8B,GAC/C0E,KAAY1E,EAAK,gBAAgB,GACjC2E,KAAiB3E,EAAK,kGAAkG,GACxH4E,KAAoB5E,EAAK,uBAAuB,GAChD6E,KAAkB7E,EAAK,6DAA6D,GACpF8E,KAAe9E,EAAK,SAAS,GAC7B+E,KAAiB/E,EAAK,0BAA0B,GAChDgF,KAAuBhF,EAAK,UAAU,GACtCiF,KAAuBjF,EAAK,SAAS,GACrCkF,KAAqBlF,EAAK,6BAA6B,GACvDmF,KAAmBnF,EAAK,MAAM,GAC9BoF,IAAY;CACjB,SAAS;CACT,WAAW;CACX,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,YAAY;CACZ,uBAAuB;CACvB,SAAS;CACT,UAAU;CACV,cAAc;CACd,kBAAkB;CAClB,UAAU;AACX,GACMC,KAAwBtF,EAAOoC,EAAS,CAAC,GAAG;CACjD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD,CAAC,CAAC,GACImD,KAAY,WAAqB;CACtC,OAAO,OAAO,SAAW,MAAc,OAAO;AAC/C,GASMC,KAA4B,SAAmC,GAAc,GAAmB;CACrG,IAAI,OAAOC,KAAiB,YAAY,OAAOA,EAAa,gBAAiB,YAAY,OAAO;CAChG,IAAIC,IAAS,MACPC,IAAY;CAClB,AAAIC,KAAqBA,EAAkB,aAAaD,CAAS,MAAG,IAASC,EAAkB,aAAaD,CAAS;CACrH,IAAME,IAAa,eAAeH,IAAS,MAAMA,IAAS;CAC1D,IAAI;EACH,OAAOD,EAAa,aAAaI,GAAY;GAC5C,WAAW,GAAM;IAChB,OAAO1B;GACR;GACA,gBAAgB,GAAW;IAC1B,OAAO2B;GACR;EACD,CAAC;CACF,QAAY;EAEX,OADA,QAAQ,KAAK,yBAAyBD,IAAa,wBAAwB,GACpE;CACR;AACD,GACME,KAAkB,WAA2B;CAClD,OAAO;EACN,yBAAyB,CAAC;EAC1B,uBAAuB,CAAC;EACxB,wBAAwB,CAAC;EACzB,0BAA0B,CAAC;EAC3B,wBAAwB,CAAC;EACzB,yBAAyB,CAAC;EAC1B,uBAAuB,CAAC;EACxB,qBAAqB,CAAC;EACtB,wBAAwB,CAAC;CAC1B;AACD,GAaMC,KAAoB,SAA2B,GAAK,GAAK,GAAU,GAAS;CACjF,OAAOhE,EAAqBiE,GAAKC,CAAG,KAAKjF,GAAagF,EAAIC,EAAI,IAAI9D,EAAS+D,EAAQ,OAAOvD,EAAMuD,EAAQ,IAAI,IAAI,CAAC,GAAGF,EAAIC,IAAMC,EAAQ,SAAS,IAAIC;AACpJ,GAYMC,KAAuB,SAA8B,GAAK,GAAK,GAAc;CAClF,IAAMnD,IAAQlB,EAAqBiE,GAAKC,CAAG,IAAID,EAAIC,KAAO,KAAK;CAC/D,OAAOhD,KAAS,OAAOA,KAAU,WAAWN,EAAMM,CAAK,IAAIoD,EAAa;AACzE;AACA,SAASC,KAAkB;CAC1B,IAAIC,IAAS,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAKjB,GAAU,GAClFkB,KAAa,MAASF,GAAgBG,CAAI;CAGhD,IAFA,EAAU,UAAU,UACpB,EAAU,UAAU,CAAC,GACjB,CAACF,KAAU,CAACA,EAAO,YAAYA,EAAO,SAAS,aAAanB,EAAU,YAAY,CAACmB,EAAO,SAE7F,OADA,EAAU,cAAc,IACjBC;CAER,IAAIE,IAAWH,EAAO,UAChBI,IAAmBD,GACnBE,IAAgBD,EAAiB;CACvC,EAAO;CACP,IAAME,IAAsBN,EAAO,qBAAqBO,IAAOP,EAAO,MAAMQ,IAAUR,EAAO,SAASS,IAAaT,EAAO;CAE1H,AADAA,EAAO,iBAAiB,KAAK,MAAMA,EAAO,gBAAgBA,EAAO,kBACjEA,EAAO;CACP,IAAMU,IAAYV,EAAO,WAAWf,IAAee,EAAO,cACpDW,IAAmBH,EAAQ,WAC3BI,IAAY9D,EAAa6D,GAAkB,WAAW,GACtDE,IAAS/D,EAAa6D,GAAkB,QAAQ,GAChDG,KAAsBhE,EAAa6D,GAAkB,qBAAqB,GAC1EI,IAAiBjE,EAAa6D,GAAkB,aAAa,GAC7DK,IAAgBlE,EAAa6D,GAAkB,YAAY,GAC3DM,KAAgBnE,EAAa6D,GAAkB,YAAY,GAC3D7X,KAAgBgU,EAAa6D,GAAkB,YAAY,GAC3DO,IAAgBpE,EAAa6D,GAAkB,YAAY,GAC3DQ,KAAcZ,KAAQA,EAAK,YAAYzD,EAAayD,EAAK,WAAW,UAAU,IAAI,MAClFa,KAAcb,KAAQA,EAAK,YAAYzD,EAAayD,EAAK,WAAW,UAAU,IAAI,MAClFc,KAAmBd,KAAQA,EAAK,YAAYzD,EAAayD,EAAK,WAAW,eAAe,IAAI,MAC5Fe,IAAgB,SAAuB,GAAM;EAClD,OAAOH,KAAcA,GAAYI,CAAI,IAAIA,EAAK;CAC/C,GACMC,KAAgB,SAAuB,GAAM;EAClD,OAAOJ,KAAcA,GAAYG,CAAI,IAAIA,EAAK;CAC/C,GACME,KAAkBtE,GAAewD,GAAkB,cAAc,GACjEe,KAAoB,SAA2B,GAAS;EAC7D,OAAOD,KAAkBA,GAAgBzF,CAAO,IAAIA,EAAQ;CAC7D;CACA,IAAI,OAAOsE,KAAwB,YAAY;EAC9C,IAAMqB,IAAWxB,EAAS,cAAc,UAAU;EAClD,AAAIwB,EAAS,WAAWA,EAAS,QAAQ,kBAAe,IAAWA,EAAS,QAAQ;CACrF;CACA,IAAIC,GACAC,KAAY,IACZC,IACAC,KAAoC,IACpCC,KAA0B,GACxBC,KAAiC,WAA0C;EAChF,IAAID,KAA0B,GAAG,MAAMrG,GAAgB,6RAA6R;CACrV,GACMuG,KAAqB,SAA4B,GAAM;EAE5D,AADAD,GAA+B,GAC/B;EACA,IAAI;GACH,OAAOL,EAAmB,WAAWjE,CAAI;EAC1C,UAAU;GACT;EACD;CACD,GACMwE,KAA0B,SAAiC,GAAW;EAE3E,AADAF,GAA+B,GAC/B;EACA,IAAI;GACH,OAAOL,EAAmB,gBAAgBtC,CAAS;EACpD,UAAU;GACT;EACD;CACD,GACM8C,IAAgC,WAAyC;EAK9E,OAJA,AAECL,QADA,KAA4B/C,GAA0BC,GAAcoB,CAAa,GAC7C,KAE9ByB;CACR,GACMO,KAAYlC,GAAUmC,KAAiBD,GAAU,gBAAgBE,KAAqBF,GAAU,oBAAoBG,KAAyBH,GAAU,wBAAwBI,KAAuBJ,GAAU,sBAChNK,KAAatC,EAAiB,YAChCuC,IAAQpD,GAAgB;CAI5B,EAAU,cAAc,OAAOpG,MAAY,cAAc,OAAO8H,MAAkB,cAAcqB,MAAkBA,GAAe,uBAAuB,KAAK;CAC7J,IAAMM,KAAkB7E,IAAe8E,KAAa7E,IAAU8E,KAAgB7E,IAAa8E,KAAc7E,IAAW8E,KAAc7E,IAAW8E,KAAsB5E,IAAmB6E,KAAoB5E,IAAiB6E,KAAmB3E,IAC1O4E,KAAmBhF,IAKnBiF,IAAe,MACbC,IAAuB1H,EAAS,CAAC,GAAG;EACzC,GAAGyB;EACH,GAAGC;EACH,GAAGC;EACH,GAAGE;EACH,GAAGlU;CACJ,CAAC,GACGga,IAAe,MACbC,KAAuB5H,EAAS,CAAC,GAAG;EACzC,GAAG+B;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;CACJ,CAAC,GACG2F,IAA0B,OAAO,KAAK/J,GAAO,MAAM;EACtD,cAAc;GACb,UAAU;GACV,cAAc;GACd,YAAY;GACZ,OAAO;EACR;EACA,oBAAoB;GACnB,UAAU;GACV,cAAc;GACd,YAAY;GACZ,OAAO;EACR;EACA,gCAAgC;GAC/B,UAAU;GACV,cAAc;GACd,YAAY;GACZ,OAAO;EACR;CACD,CAAC,CAAC,GACEgK,KAAc,MACdC,KAAc,MACZC,IAAyB,OAAO,KAAKlK,GAAO,MAAM;EACvD,UAAU;GACT,UAAU;GACV,cAAc;GACd,YAAY;GACZ,OAAO;EACR;EACA,gBAAgB;GACf,UAAU;GACV,cAAc;GACd,YAAY;GACZ,OAAO;EACR;CACD,CAAC,CAAC,GACEmK,KAAkB,IAClBC,KAAkB,IAClBC,KAA0B,IAC1BC,KAA2B,IAC3BC,IAAqB,IACrBC,IAAe,IACfC,KAAiB,IACjBC,KAAa,IACbC,KAA0B,MAC1BC,KAA0B,MAC1BC,KAAa,IACbC,IAAa,IACbC,IAAsB,IACtBC,KAAsB,IACtBC,KAAe,IACfC,IAAuB,IACrBC,KAA8B,iBAChCC,KAAe,IACfC,KAAW,IACXC,KAAmB,MACnBC,KAAe,CAAC,GAChBC,KAAkB,MAChBC,KAA0BvJ,EAAS,CAAC,GAAG,mNA2B7C,CAAC,GACGwJ,KAAgB,MACdC,IAAwBzJ,EAAS,CAAC,GAAG;EAC1C;EACA;EACA;EACA;EACA;EACA;CACD,CAAC,GACG0J,KAAsB,MACpBC,KAA8B3J,EAAS,CAAC,GAAG;EAChD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,CAAC,GACK4J,KAAmB,sCACnBC,IAAgB,8BAChBC,IAAiB,gCACnBC,KAAYD,GACZE,KAAiB,IACjBC,KAAqB,MACnBC,KAA6BlK,EAAS,CAAC,GAAG;EAC/C4J;EACAC;EACAC;CACD,GAAG3K,EAAc,GACXgL,KAAyCvM,EAAO;EACrD;EACA;EACA;EACA;EACA;CACD,CAAC,GACGwM,KAAiCpK,EAAS,CAAC,GAAGmK,EAAsC,GAClFE,KAAkCzM,EAAO,CAAC,gBAAgB,CAAC,GAC7D0M,KAA0BtK,EAAS,CAAC,GAAGqK,EAA+B,GACpEE,KAA+BvK,EAAS,CAAC,GAAG;EACjD;EACA;EACA;EACA;EACA;CACD,CAAC,GACGwK,KAAoB,MAClBC,KAA+B,CAAC,yBAAyB,WAAW,GAEtExK,IAAoB,MACpByK,KAAS,MACPC,KAAcpG,EAAS,cAAc,MAAM,GAC3CqG,KAAoB,SAA2B,GAAW;EAC/D,OAAOC,aAAqB,UAAUA,aAAqB;CAC5D,GAMMC,KAAe,WAAwB;EAC5C,IAAIjH,IAAM,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;EAC5E,IAAI6G,MAAUA,OAAW7G,GAAK;EAsC9B,CArCI,CAACA,KAAO,OAAOA,KAAQ,cAAU,IAAM,CAAC,IAC5C,IAAMrD,EAAMqD,CAAG,GACf,KAAoB4G,GAA6B,QAAQ5G,EAAI,iBAAiB,MAAM,KAAK,cAA4BA,EAAI,mBACzH,IAAoB2G,OAAsB,0BAA0BrL,KAAiBD,IACrF,IAAe0E,GAAkBC,GAAK,gBAAgB6D,GAAsB,EAAE,WAAWzH,EAAkB,CAAC,GAC5G,IAAe2D,GAAkBC,GAAK,gBAAgB+D,IAAsB,EAAE,WAAW3H,EAAkB,CAAC,GAC5G,KAAqB2D,GAAkBC,GAAK,sBAAsBqG,IAA4B,EAAE,WAAW/K,GAAe,CAAC,GAC3H,KAAsByE,GAAkBC,GAAK,qBAAqB8F,IAA6B;GAC9F,WAAW1J;GACX,MAAM0J;EACP,CAAC,GACD,KAAgB/F,GAAkBC,GAAK,qBAAqB4F,GAAuB;GAClF,WAAWxJ;GACX,MAAMwJ;EACP,CAAC,GACD,KAAkB7F,GAAkBC,GAAK,mBAAmB0F,IAAyB,EAAE,WAAWtJ,EAAkB,CAAC,GACrH,KAAc2D,GAAkBC,GAAK,eAAerD,EAAM,CAAC,CAAC,GAAG,EAAE,WAAWP,EAAkB,CAAC,GAC/F,KAAc2D,GAAkBC,GAAK,eAAerD,EAAM,CAAC,CAAC,GAAG,EAAE,WAAWP,EAAkB,CAAC,GAC/F,KAAeL,EAAqBiE,GAAK,cAAc,IAAIA,EAAI,gBAAgB,OAAOA,EAAI,gBAAiB,WAAWrD,EAAMqD,EAAI,YAAY,IAAIA,EAAI,eAAe,IACnK,KAAkBA,EAAI,oBAAoB,IAC1C,KAAkBA,EAAI,oBAAoB,IAC1C,KAA0BA,EAAI,2BAA2B,IACzD,KAA2BA,EAAI,6BAA6B,IAC5D,IAAqBA,EAAI,sBAAsB,IAC/C,IAAeA,EAAI,iBAAiB,IACpC,KAAiBA,EAAI,kBAAkB,IACvC,IAAaA,EAAI,cAAc,IAC/B,IAAsBA,EAAI,uBAAuB,IACjD,KAAsBA,EAAI,uBAAuB,IACjD,KAAaA,EAAI,cAAc,IAC/B,KAAeA,EAAI,iBAAiB,IACpC,IAAuBA,EAAI,wBAAwB,IACnD,KAAeA,EAAI,iBAAiB,IACpC,KAAWA,EAAI,YAAY,IAC3B,KAAmBrC,GAAQqC,EAAI,kBAAkB,IAAIA,EAAI,qBAAqBrB,IAC9E,KAAY,OAAOqB,EAAI,aAAc,WAAWA,EAAI,YAAYiG,GAChE,KAAiC7F,GAAqBJ,GAAK,wCAAwC7D,EAAS,CAAC,GAAGmK,EAAsC,CAAC,GACvJ,KAA0BlG,GAAqBJ,GAAK,iCAAiC7D,EAAS,CAAC,GAAGqK,EAA+B,CAAC;EAClI,IAAMU,IAAwB9G,GAAqBJ,GAAK,iCAAiC/F,GAAO,IAAI,CAAC;EA6DrG,IA5DA,IAA0BA,GAAO,IAAI,GACjC8B,EAAqBmL,GAAuB,cAAc,KAAKH,GAAkBG,EAAsB,YAAY,MAAG,EAAwB,eAAeA,EAAsB,eACnLnL,EAAqBmL,GAAuB,oBAAoB,KAAKH,GAAkBG,EAAsB,kBAAkB,MAAG,EAAwB,qBAAqBA,EAAsB,qBACrMnL,EAAqBmL,GAAuB,gCAAgC,KAAK,OAAOA,EAAsB,kCAAmC,cAAW,EAAwB,iCAAiCA,EAAsB,iCAC/OlN,EAAKgK,CAAuB,GACxBQ,MAAoB,KAAkB,KACtCQ,MAAqB,IAAa,KAClCQ,OACH,IAAerJ,EAAS,CAAC,GAAGrS,EAAI,GAChC,IAAemQ,GAAO,IAAI,GACtBuL,GAAa,SAAS,OACzBrJ,EAASyH,GAAchG,EAAM,GAC7BzB,EAAS2H,GAAc5F,EAAI,IAExBsH,GAAa,QAAQ,OACxBrJ,EAASyH,GAAc/F,EAAK,GAC5B1B,EAAS2H,GAAc3F,EAAG,GAC1BhC,EAAS2H,GAAczF,EAAG,IAEvBmH,GAAa,eAAe,OAC/BrJ,EAASyH,GAAc9F,EAAU,GACjC3B,EAAS2H,GAAc3F,EAAG,GAC1BhC,EAAS2H,GAAczF,EAAG,IAEvBmH,GAAa,WAAW,OAC3BrJ,EAASyH,GAAc5F,EAAQ,GAC/B7B,EAAS2H,GAAc1F,EAAM,GAC7BjC,EAAS2H,GAAczF,EAAG,KAG5B,EAAuB,WAAW,MAClC,EAAuB,iBAAiB,MACpCtC,EAAqBiE,GAAK,UAAU,MACnC,OAAOA,EAAI,YAAa,aAAY,EAAuB,WAAWA,EAAI,WACrEhF,GAAagF,EAAI,QAAQ,MAC7B4D,MAAiBC,MAAsB,IAAelH,EAAMiH,CAAY,IAC5EzH,EAASyH,GAAc5D,EAAI,UAAU5D,CAAiB,KAGpDL,EAAqBiE,GAAK,UAAU,MACnC,OAAOA,EAAI,YAAa,aAAY,EAAuB,iBAAiBA,EAAI,WAC3EhF,GAAagF,EAAI,QAAQ,MAC7B8D,MAAiBC,OAAsB,IAAepH,EAAMmH,CAAY,IAC5E3H,EAAS2H,GAAc9D,EAAI,UAAU5D,CAAiB,KAGpDL,EAAqBiE,GAAK,qBAAqB,KAAKhF,GAAagF,EAAI,mBAAmB,MACvFyF,OAAoBC,OAAyB,KAAkB/I,EAAM8I,EAAe,IACxFtJ,EAASsJ,IAAiBzF,EAAI,qBAAqB5D,CAAiB,IAEjEiJ,OAAc,EAAa,WAAW,KACtCX,MAAgBvI,EAASyH,GAAc;GAC1C;GACA;GACA;EACD,CAAC,GACGA,EAAa,UAChBzH,EAASyH,GAAc,CAAC,OAAO,CAAC,GAChC,OAAOK,GAAY,QAEhBjE,EAAI,sBAAsB;GAC7B,IAAI,OAAOA,EAAI,qBAAqB,cAAe,YAAY,MAAM9D,GAAgB,+EAA+E;GACpK,IAAI,OAAO8D,EAAI,qBAAqB,mBAAoB,YAAY,MAAM9D,GAAgB,oFAAoF;GAC9K,IAAMiL,IAA6BhF;GACnC,IAAqBnC,EAAI;GACzB,IAAI;IACH,KAAYyC,GAAmB,EAAE;GAClC,SAAS2E,GAAO;IAEf,MADA,IAAqBD,GACfC;GACP;EACD,OAAO,AAAIpH,EAAI,yBAAyB,QACvC,IAAqB,KAAK,GAC1B,KAAY,OAERmC,MAAuB,KAAK,MAAG,IAAqBQ,EAA8B,IAClFR,KAAsB,OAAOC,MAAc,aAAU,KAAYK,GAAmB,EAAE;EAG3F,AADI1I,KAAQA,EAAOiG,CAAG,GACtB,KAASA;CACV,GACMqH,KAAelL,EAAS,CAAC,GAAG;EACjC,GAAG0B;EACH,GAAGC;EACH,GAAGC;CACJ,CAAC,GACKuJ,KAAkBnL,EAAS,CAAC,GAAG,CAAC,GAAG6B,IAAU,GAAGC,EAAgB,CAAC,GASjEsJ,KAAqB,SAA4B,GAAS,GAAQ,GAAe;EAGtF,OAFIC,EAAO,iBAAiBvB,IAAuBwB,MAAY,QAC3DD,EAAO,iBAAiBzB,KAAyB0B,MAAY,UAAUC,MAAkB,oBAAoBnB,GAA+BmB,MACzI,EAAQL,GAAaI;CAC7B,GASME,KAAwB,SAA+B,GAAS,GAAQ,GAAe;EAG5F,OAFIH,EAAO,iBAAiBvB,IAAuBwB,MAAY,SAC3DD,EAAO,iBAAiBxB,IAAsByB,MAAY,UAAUhB,GAAwBiB,KACzF,EAAQJ,GAAgBG;CAChC,GASMG,KAAsB,SAA6B,GAAS,GAAQ,GAAe;EAGxF,OAFIJ,EAAO,iBAAiBxB,KAAiB,CAACS,GAAwBiB,MAClEF,EAAO,iBAAiBzB,MAAoB,CAACQ,GAA+BmB,KAAuB,KAChG,CAACJ,GAAgBG,OAAaf,GAA6Be,MAAY,CAACJ,GAAaI;CAC7F,GAOMI,KAAuB,SAA8B,GAAS;EACnE,IAAMC,IAAmB7F,GAAkB1F,CAAO,GAC5CkL,IAAUpM,GAAkB0G,GAAcxF,CAAO,CAAC,GAClDwL,IAAavG,GAAcjF,CAAO,GACpCiL,GACAE;EAaJ,OAZIK,KAAclG,EAAckG,CAAU,MAAM3I,EAAU,WACzD,IAAS,EAAE,cAAc6C,GAAkB8F,CAAU,EAAE,GACvD,IAAgB1M,GAAkB0G,GAAcgG,CAAU,CAAC,MAE3D,IAAS,EAAE,cAAc7B,GAAU,GACnC,IAAgB,aAEZE,GAAmB0B,KACpBA,MAAqB9B,IAAsBuB,GAAmBE,GAASD,GAAQE,CAAa,IAC5FI,MAAqB/B,KAAyB4B,GAAsBF,GAASD,GAAQE,CAAa,IAClGI,MAAqB7B,IAAuB2B,GAAoBH,GAASD,GAAQE,CAAa,IAClG,GAAIf,OAAsB,2BAA2BP,GAAmB0B,MAJtB;CAMnD,GAMME,KAAe,SAAsB,GAAM;EAChD,GAAUxH,EAAU,SAAS,EAAE,SAASsB,EAAK,CAAC;EAC9C,IAAI;GACH,GAAcA,CAAI,CAAC,CAAC,YAAYA,CAAI;EACrC,QAAY;GAEX,IADAV,EAAOU,CAAI,GACP,CAACN,GAAcM,CAAI,GAAG,MAAM5F,GAAgB,8HAA8H;EAC/K;CACD,GAkBM+L,KAAsB,SAA6B,GAAS,GAAW,GAAM;EAClF,IAAI;GACH,GAAoB1L,GAAS2L,CAAS;EACvC,QAAY;GACX,IAAI;IACH,EAAQ,gBAAgBC,CAAI;GAC7B,QAAY,CAAC;EACd;CACD,GAQMC,KAAkB,SAAyB,GAAM;EACtD,GAAmB3H,CAAI;EACvB,IAAM4H,IAAa9G,EAAcd,CAAI;EACrC,AAAI4H,KAAY5N,GAAaK,GAAWuN,CAAU,IAAI,MAAU;GAC/D,IAAI;IACH,EAAOC,CAAK;GACb,QAAY,CAAC;EACd,CAAC;EACD,IAAMC,IAAa1G,EAAcpB,CAAI,MAAMrB,EAAU,UAAUqC,EAAchB,CAAI,IAAI;EACrF,IAAI8H,GAAY,KAAK,IAAIxc,IAAIwc,EAAW,SAAS,GAAGxc,KAAK,GAAG,EAAEA,GAAG;GAChE,IAAMmc,IAAYK,EAAWxc,IACvBoc,IAAOD,KAAaA,EAAU;GACpC,AAAI,OAAOC,KAAS,YAAUF,GAAoBxH,GAAMyH,GAAWC,CAAI;EACxE;CACD,GAUMK,KAAmB,SAA0B,GAAM,GAAS,GAAM;EACvE,IAAI,CAACC,GAAM,IAAI;GACd,IAAOlM,EAAQ,iBAAiB4L,CAAI;EACrC,QAAY;GACX,IAAO;EACR;EACA,GAAU3H,EAAU,SAAS;GAC5B,WAAWiI,KAAQ;GACnB,MAAMlM;EACP,CAAC;EACD,IAAI;GACH,AAAIkM,IAAMpH,GAAoB9E,GAASkM,CAAI,IACtClM,EAAQ,gBAAgB4L,CAAI;EAClC,QAAY;GACX,IAAI;IACH,EAAQ,gBAAgBA,CAAI;GAC7B,QAAY,CAAC;EACd;EACA,IAAIA,MAAS,MAAM;GAClB,IAAIpD,KAAcC,GAAqB,IAAI;IAC1C,GAAazI,CAAO;GACrB,QAAY,CAAC;QACR,IAAI;IACR,EAAQ,aAAa4L,GAAM,EAAE;GAC9B,QAAY,CAAC;EACd;CACD,GAOMO,KAA6B,SAAoC,GAAS;EAC/E,IAAMH,IAAa9G,EAAclF,CAAO;EACxC,IAAKgM,GACL,KAAK,IAAIxc,IAAIwc,EAAW,SAAS,GAAGxc,KAAK,GAAG,EAAEA,GAAG;GAChD,IAAMmc,IAAYK,EAAWxc,IACvBoc,IAAOD,KAAaA,EAAU;GACpC,AAAI,OAAOC,KAAS,YAAYrE,EAAa1H,EAAkB+L,CAAI,MACnEF,GAAoB1L,GAAS2L,GAAWC,CAAI;EAC7C;CACD,GAWMQ,KAAY,SAAmB,GAAM,GAAO;EACjD,IAAIC,IAAa,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,KAAI,UAAU,IACvEC,IAAQ,CAACpI,CAAI;EACnB,OAAOoI,EAAM,SAAS,IAAG;GACxB,IAAM/G,IAAO+G,EAAM,IAAI;GACvB,IAAIC,EAAMhH,CAAI,MAAM,IAAO;GAC3B,IAAI8G,KAAc/G,EAAcC,CAAI,MAAM1C,EAAU,SAAS;IAC5D,IAAM2J,IAAa1f,GAAcyY,CAAI;IACrC,AAAIkH,EAAoBD,CAAU,KAAGF,EAAM,KAAKE,CAAU;GAC3D;GACA,IAAMV,IAAa9G,EAAcO,CAAI;GACrC,IAAIuG,GAAY,KAAK,IAAItc,IAAIsc,EAAW,SAAS,GAAGtc,KAAK,GAAG,EAAEA,GAAG,EAAM,KAAKsc,EAAWtc,EAAE;EAC1F;CACD,GAOMkd,KAAqB,SAA4B,GAAM;EAC5D,GAAUxI,IAAO,MAAS;GACzB,AAAIoB,EAAcC,CAAI,MAAM1C,EAAU,WAASsJ,GAA2B5G,CAAI;EAC/E,CAAC;CACF,GAQMoH,KAAoB,SAA2B,GAAM;EAC1D,IAAMC,IAAQ,CAAC;EAIf,OAHAR,GAAUlI,IAAO,MAAS;GACzB,EAAM,KAAKqB,CAAI;EAChB,GAAG,EAAI,GACAqH;CACR,GASMC,KAA6B,SAAoC,GAAM,GAAQ;EACpF,IAAMC,IAAYpO,GAAU;EAI5B,AAHAR,GAAayO,GAAkBzI,CAAI,IAAI,MAAS;GAC/C,AAAIoB,EAAcC,CAAI,MAAM1C,EAAU,WAASjE,GAAOkO,GAAWvH,CAAI;EACtE,CAAC,GACDrH,GAAa6O,IAAS,MAAS;GAC9B,AAAIzH,EAAcC,CAAI,MAAM1C,EAAU,WAAW,CAAChE,GAAOiO,GAAWvH,CAAI,KAAG4G,GAA2B5G,CAAI;EAC3G,CAAC;CACF,GASMyH,KAAuB,SAA8B,GAAM,GAAQ;EACxE,IAAIC,IAAc;EAQlB,OAPA/O,GAAa+F,EAAU,UAAU,MAAU;GAC1C,AAAIiJ,EAAM,YACT,MAA6BA,EAAM,YAAYhJ,GAC/CwI,GAAmBQ,EAAM,OAAO;EAElC,CAAC,GACDL,GAA2B3I,GAAM6I,CAAM,GAChCE;CACR,GAWME,KAA0B,SAAiC,GAAM,GAAQ;EAC9E,IAAMC,IAAUpE,IACZqE,IAAW,MACTC,WACAD,MACJ,IAAW3O,GAAU,GACrBR,GAAa6O,IAAS,MAAe;GACpC,GAAOM,GAAUE,CAAU;EAC5B,CAAC,IAEKF;EAER,KAAK,IAAIG,IAAQ,IAAI,KAAS;GAC7B,IAAMC,IAAOd,GAAkBzI,CAAI,GAC7BwJ,IAAa,CAACxJ,CAAI,GACpByJ,IAAU;GAKd,IAJAzP,GAAauP,IAAO,MAAS;IAC5B,AAAInI,EAAcC,CAAI,MAAM1C,EAAU,mBAAkBvE,GAAUoP,GAAYnI,CAAI,IACzE,CAACoI,KAAW,CAAC9O,GAAOuO,GAAS7H,CAAI,MAAG,IAAU1G,GAAOyO,EAAY,GAAG/H,CAAI;GAClF,CAAC,GACG,CAACoI,GAAS;GACd,IAAIH,KAAS,GAAsB,MAAM7N,GAAgB,4EAA4E;GACrI,GAAa+N,IAAa,GAAW,MAAU;IAC9C,GAAqBE,GAAWzN,IAAQ,GAAG+D,GAAMoJ,EAAY,CAAC;GAC/D,CAAC;EACF;CACD,GASMO,KAAuB,SAA8B,GAAW,GAAU,GAAM,GAAU;EAC/F,IAAMC,IAAWC,GAAoBH,CAAS,GAC1CrI;EACJ,OAAO,IAAOuI,EAAS,SAAS,IAC/B,AAAKjP,GAAOwO,GAAU9H,CAAI,KAAK,IAAOyD,IAAkBzD,CAAI,MACxDyI,KAAUC,EAActH,EAAM,wBAAwBpB,GAAM,IAAI,GACpE2I,GAAkB3I,GAAMrB,CAAI,GAC5BiK,GAAoB5I,GAAMrB,CAAI,GAC1BuI,EAAoBlH,EAAK,OAAO,KAAG6I,EAAoB7I,EAAK,OAAO;CAEzE,GAMM8I,KAAe,SAAsB,GAAM;EAChD,AAAIrF,MAAkBpK,GAAOoK,IAAkBzD,CAAI;CACpD,GAUM+I,KAA2B,SAAkC,GAAQ,GAAO;EAGjF,OAFKpG,IACDqG,MAAW,cACRA,MAAW,SAASC,MAAU,WAAWA,MAAU,WAFhC;CAG3B,GAYMC,KAA0B,SAAiC,GAAM;EACtE,AAAKvG,KACLkE,GAAUlI,IAAO,MAAS;GACzB,IAAMwK,IAAWpJ,EAAcC,CAAI;GACnC,IAAImJ,MAAa7L,EAAU,yBAAyB6L,MAAa7L,EAAU,WAAWnD,EAAWgD,IAAsB6C,EAAK,IAAI,GAAG;IAClI,IAAI;KACH,EAAOA,CAAI;IACZ,QAAY,CAAC;IACb,OAAO;GACR;GACA,IAAImJ,MAAa7L,EAAU,SAAS;IACnC,IAAM7C,IAAUuF,GACViJ,IAAQ3O,EAAkB2F,GAAcD,CAAI,CAAC;IACnD,IAAI;KAEH,AADIvF,EAAQ,gBAAgBA,EAAQ,aAAa,UAAU,KAAGA,EAAQ,gBAAgB,UAAU,GAC5FA,EAAQ,gBAAgBA,EAAQ,aAAa,KAAK,KAAKsO,GAAyB,OAAOE,CAAK,KAAGxO,EAAQ,gBAAgB,KAAK;IACjI,QAAY,CAAC;GACd;GACA,OAAO;EACR,CAAC;CACF,GAOM2O,KAAgB,SAAuB,GAAO;EACnD,IAAIC,IAAM,MACNC,IAAoB;EACxB,IAAItG,IAAY,IAAQ,sBAAsBuG;OACzC;GACJ,IAAMC,IAAU/P,GAAY8P,GAAO,aAAa;GAChD,IAAoBC,KAAWA,EAAQ;EACxC;EACA,AAAI3E,OAAsB,2BAA2BT,OAAcD,MAAgB,IAAQ,qEAAqEoF,IAAQ;EACxK,IAAME,IAAepJ,IAAqBM,GAAmB4I,CAAK,IAAIA;EACtE,IAAInF,OAAcD,GAAgB,IAAI;GACrC,IAAM,IAAIhF,EAAU,CAAC,CAAC,gBAAgBsK,GAAc5E,EAAiB;EACtE,QAAY,CAAC;EACb,IAAI,CAACwE,KAAO,CAACA,EAAI,iBAAiB;GACjC,IAAMtI,GAAe,eAAeqD,IAAW,YAAY,IAAI;GAC/D,IAAI;IACH,EAAI,gBAAgB,YAAYC,KAAiB/D,KAAYmJ;GAC9D,QAAY,CAAC;EACd;EACA,IAAMC,IAAOL,EAAI,QAAQA,EAAI;EAG7B,OAFIE,KAASD,KAAmBI,EAAK,aAAa9K,EAAS,eAAe0K,CAAiB,GAAGI,EAAK,WAAW,MAAM,IAAI,GACpHtF,OAAcD,IAAuBjD,GAAqB,KAAKmI,GAAKzG,KAAiB,SAAS,MAAM,CAAC,CAAC,KACnGA,KAAiByG,EAAI,kBAAkBK;CAC/C,GAOMlB,KAAsB,SAA6B,GAAM;EAC9D,IAAMa,IAAMvJ,KAAmBA,GAAiBnB,CAAI,IAAIA,EAAK;EAC7D,OAAOqC,GAAmB,KAAKqI,KAAO1K,GAAMA,GAAMO,EAAW,eAAeA,EAAW,eAAeA,EAAW,YAAYA,EAAW,8BAA8BA,EAAW,oBAAoB,IAAI;CAC1M,GASMyK,KAA4B,SAAmC,GAAO;EAI3E,OAHA,IAAQjQ,GAAcyB,GAAOkG,IAAiB,GAAG,GACjD,IAAQ3H,GAAcyB,GAAOmG,IAAY,GAAG,GAC5C,IAAQ5H,GAAcyB,GAAOoG,IAAe,GAAG,GACxCpG;CACR,GAoBMyO,KAA6B,SAAmC,GAAM;EAE3E,GAAuB5J,CAAI;EAC3B,IAAM6J,IAAqC7J,EAAK,kBAAgG,KAAKA,GAAM,UAAU;EACrK,AAAI6J,KAAWlR,GAAakR,IAAY,MAAS;GAChD,AAAI3C,EAAoB4C,EAAK,OAAO,KAAGF,GAA2BE,EAAK,OAAO;EAC/E,CAAC;CACF,GAeMC,KAAyB,SAAgC,GAAM;EACpE,EAAK,UAAU;EACf,IAAMV,IAAMvJ,KAAmBA,GAAiBE,CAAI,IAAIA,EAAK,eACvDgK,IAAShJ,GAAmB,KAAKqI,KAAOrJ,GAAMA,GAAMd,EAAW,YAAYA,EAAW,eAAeA,EAAW,qBAAqBA,EAAW,6BAA6B,IAAI,GACnL+K,IAAcD,EAAO,SAAS;EAClC,OAAOC,IAEN,AADA,EAAY,OAAON,GAA0BM,EAAY,IAAI,GAC7D,IAAcD,EAAO,SAAS;CAEhC,GAaME,KAAe,SAAsB,GAAS;EACnD,IAAMC,IAActK,KAAcA,GAAYpF,CAAO,IAAI;EAGzD,OAFI,OAAO0P,KAAgB,YACvB7P,EAAkB6P,CAAW,MAAM,SAAe,KAC/C,OAAO1P,EAAQ,YAAa,YAAY,OAAOA,EAAQ,eAAgB,YAAY,OAAOA,EAAQ,eAAgB,cAAcA,EAAQ,eAAekF,EAAclF,CAAO,KAAK,OAAOA,EAAQ,mBAAoB,cAAc,OAAOA,EAAQ,uBAAwB,cAAc,OAAOA,EAAQ,oBAAqB,cAAc,OAAOA,EAAQ,gBAAiB,cAAc,OAAOA,EAAQ,gBAAiB,YAAY,OAAOA,EAAQ,gBAAiB,cAAc,OAAOA,EAAQ,iBAAkB,cAAcA,EAAQ,aAAamF,GAAYnF,CAAO,KAAKA,EAAQ,eAAegF,EAAchF,CAAO;CACjmB,GAYMyM,IAAsB,SAA6B,GAAO;EAC/D,IAAI,CAACtH,MAAe,OAAOzE,KAAU,aAAYA,GAAgB,OAAO;EACxE,IAAI;GACH,OAAOyE,GAAYzE,CAAK,MAAMmC,EAAU;EACzC,QAAY;GACX,OAAO;EACR;CACD,GAYM8M,KAAU,SAAiB,GAAO;EACvC,IAAI,CAACxK,MAAe,OAAOzE,KAAU,aAAYA,GAAgB,OAAO;EACxE,IAAI;GACH,OAAO,OAAOyE,GAAYzE,CAAK,KAAM;EACtC,QAAY;GACX,OAAO;EACR;CACD;CACA,SAASuN,EAAc,GAAO,GAAa,GAAM;EAChD,AAAItH,EAAM,WAAW,KACrBzI,GAAayI,IAAQ,MAAS;GAC7B,EAAK,KAAK1C,GAAWuL,GAAaI,GAAMtF,EAAM;EAC/C,CAAC;CACF;CAWA,IAAMuF,KAAgB,SAAuB,GAAa,GAAS;EAKlE,OADA,GAHI3H,KAAgBsH,EAAY,cAAc,KAAK,CAACG,GAAQH,EAAY,iBAAiB,KAAK9P,EAAW+C,IAAsB+M,EAAY,WAAW,KAAK9P,EAAW+C,IAAsB+M,EAAY,SAAS,KAC7MtH,KAAgBpF,GAAsBoI,MAAY5F,EAAckK,CAAW,MAAM3M,EAAU,WAAW6C,GAAkB8J,CAAW,MAAM9F,MAAmBiG,GAAQH,EAAY,iBAAiB,KAAK,OAAOA,EAAY,eAAgB,YAAY9P,EAAW+C,IAAsB+M,EAAY,WAAW,MAC7SA,EAAY,aAAa3M,EAAU,yBACnCqF,KAAgBsH,EAAY,aAAa3M,EAAU,WAAWnD,EAAWgD,IAAsB8M,EAAY,IAAI;CAEpH,GAaMM,KAAoB,SAA2B,GAAO,GAAM;EAMjE,OALIC,aAAiB,SAAerQ,EAAWqQ,GAAOnE,CAAI,IACtDmE,aAAiB,YAEb,EAAQA,EAAMnE,GAAM,OADkG,kBAC/F,CAAI;CAGpC,GAkBMoE,KAA0B,SAAiC,GAAa,GAAS,GAAM;EAC5F,IAAI,CAACtI,GAAYwD,MAAY+E,GAAsB/E,CAAO,KAAK4E,GAAkBrI,EAAwB,cAAcyD,CAAO,GAAG,OAAO;EACxI,IAAIpC,MAAgB,CAACI,GAAgBgC,MAAY,CAAChC,GAAgBpK,GAAkBoM,CAAO,IAAI;GAC9F,IAAMM,IAAavG,GAAcuK,CAAW,GACtC1D,IAAa9G,EAAcwK,CAAW;GAC5C,IAAI1D,KAAcN,GAAY;IAC7B,IAAM0E,IAAapE,EAAW;IAC9B,KAAK,IAAItc,IAAI0gB,IAAa,GAAG1gB,KAAK,GAAG,EAAEA,GAAG;KACzC,IAAM2gB,IAAUX,MAAgBtL,IAAOU,EAAUkH,EAAWtc,IAAI,EAAI,IAAIsc,EAAWtc;KACnF,EAAW,aAAa2gB,GAASpL,EAAeyK,CAAW,CAAC;IAC7D;GACD;EACD;EAEA,OADA/D,GAAa+D,CAAW,GACjB;CACR,GAeMY,KAAuB,SAA8B,GAAU,GAAK,GAAY,GAAc;EAEnG,OADIC,EAAS,WAAW,IAAUvQ,IAC3BA,MAAQwQ,KAAcxQ,MAAQyQ,IAAenQ,EAAMN,CAAG,IAAIA;CAClE,GAUM0Q,KAA0B,SAAiC,GAAa,GAAM;EAGnF,OAFIhB,MAAgBtL,KAAQe,GAAcuK,CAAW,MAAM,OAAa,MACpEzG,MAAU2D,GAAmB8C,CAAW,GACrC;CACR,GAUMtB,KAAoB,SAA2B,GAAa,GAAM;EAGvE,IAFAG,GAAamB,CAAW,GACxBvB,EAActH,EAAM,wBAAwB6I,GAAa,IAAI,GACzDgB,GAAwBhB,GAAatL,CAAI,GAAG,OAAO;EACvD,IAAIuL,GAAaD,CAAW,GAE3B,OADA/D,GAAa+D,CAAW,GACjB;EAER,IAAMtE,IAAUrL,EAAkB2F,GAAcgK,CAAW,CAAC;EAM5D,IALA,IAAeY,GAAqBzJ,EAAM,qBAAqBU,GAAcC,GAAsBe,EAAuB,GAC1H4F,EAActH,EAAM,qBAAqB6I,GAAa;GACrD;GACA,aAAanI;EACd,CAAC,GACGmJ,GAAwBhB,GAAatL,CAAI,GAAG,OAAO;EACvD,IAAI2L,GAAcL,GAAatE,CAAO,GAErC,OADAO,GAAa+D,CAAW,GACjB;EAER,IAAI9H,GAAYwD,MAAY,EAAEtD,EAAuB,oBAAoB,YAAYA,EAAuB,SAASsD,CAAO,MAAM,CAAC7D,EAAa6D,IAAU;GACzJ,IAAMuF,IAAUT,GAAwBR,GAAatE,GAAShH,CAAI;GAKlE,OAJIuM,MAAY,OACfxC,EAActH,EAAM,uBAAuB6I,GAAa,IAAI,GACxDgB,GAAwBhB,GAAatL,CAAI,KAAU,KAEjDuM;EACR;EAKA,IAJInL,EAAckK,CAAW,MAAM3M,EAAU,WAAW,CAACyI,GAAqBkE,CAAW,MAIpFtE,MAAY,cAAcA,MAAY,aAAaA,MAAY,eAAexL,EAAWiD,IAAoB6M,EAAY,SAAS,GAEtI,OADA/D,GAAa+D,CAAW,GACjB;EAER,IAAIvH,KAAsBuH,EAAY,aAAa3M,EAAU,MAAM;GAClE,IAAM6N,IAAUxB,GAA0BM,EAAY,WAAW;GACjE,AAAIA,EAAY,gBAAgBkB,MAC/BpS,GAAU2F,EAAU,SAAS,EAAE,SAASuL,EAAY,UAAU,EAAE,CAAC,GACjE,EAAY,cAAckB;EAE5B;EAEA,OADAzC,EAActH,EAAM,uBAAuB6I,GAAa,IAAI,GACrDgB,GAAwBhB,GAAatL,CAAI;CACjD,GASMyM,KAAoB,SAA2B,GAAO,GAAQ,GAAO;EAG1E,IAFIhJ,GAAY4G,MACZD,GAAyBC,GAAQC,CAAK,KACtC7F,OAAiB4F,MAAW,QAAQA,MAAW,YAAY7N,KAASyD,KAAYzD,KAAS6J,KAAc,OAAO;EAClH,IAAMqG,IAAkBrJ,EAAagH,MAAW3G,EAAuB,0BAA0B,YAAYA,EAAuB,eAAe2G,GAAQC,CAAK;EAQhK,OAPI1G,MAAmBpI,EAAWqH,IAAawH,CAAM,KACjD1G,MAAmBnI,EAAWsH,IAAauH,CAAM,IAAU,KAC1DqC,IACDtH,GAAoBiF,MACpB7O,EAAW0H,IAAkBnI,GAAcyB,GAAOwG,IAAmB,EAAE,CAAC,MACvEqH,MAAW,SAASA,MAAW,gBAAgBA,MAAW,WAAWC,MAAU,YAAYtP,GAAcwB,GAAO,OAAO,MAAM,KAAK0I,GAAcoF,MACjJzG,MAA2B,CAACrI,EAAWuH,IAAqBhI,GAAcyB,GAAOwG,IAAmB,EAAE,CAAC,IAAU,KAC9G,CAACxG,IALqBuP,GAAsBzB,CAAK,KAAKsB,GAAkBrI,EAAwB,cAAc+G,CAAK,KAAKsB,GAAkBrI,EAAwB,oBAAoB8G,GAAQC,CAAK,KAAKD,MAAW,QAAQ9G,EAAwB,kCAAkCqI,GAAkBrI,EAAwB,cAAc/G,CAAK;CAM1V,GACMmQ,KAAgCjR,EAAS,CAAC,GAAG;EAClD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,CAAC,GASKqQ,KAAwB,SAA+B,GAAS;EACrE,OAAO,CAACY,GAA8B/R,GAAkBoM,CAAO,MAAMxL,EAAWyH,IAAkB+D,CAAO;CAC1G,GAaM4F,KAAgC,SAAuC,GAAO,GAAQ,GAAc,GAAO;EAChH,IAAIlL,KAAsB,OAAO3C,KAAiB,YAAY,OAAOA,EAAa,oBAAqB,cAAc,CAAC8N,GAAc,QAAQ9N,EAAa,iBAAiBuL,GAAOD,CAAM,GAAnD;GACnI,KAAK,eAAe,OAAOrI,GAAmBxF,CAAK;GACnD,KAAK,oBAAoB,OAAOyF,GAAwBzF,CAAK;EAC9D;EACA,OAAOA;CACR,GAwBMsQ,KAAqB,SAA4B,GAAa,GAAM,GAAc,GAAO;EAC9F,IAAI;GAOH,OANID,IAAcvB,EAAY,eAAeuB,GAAcnF,GAAMlL,CAAK,IACjE8O,EAAY,aAAa5D,GAAMlL,CAAK,GACzC,CAAI+O,GAAaD,CAAW,MAC3B/D,GAAa+D,CAAW,GACjB;EAGT,QAAY;GAEX,OADAvD,GAAiBL,GAAM4D,CAAW,GAC3B;EACR;CACD,GAaMyB,KAA0B,SAAiC,GAAM,GAAO;EAE7E,OADI/I,KAAgBxI,EAAW,sFAAsFgB,CAAK,IAAU,KAC7H5B,GAAkB8M,CAAI,MAAM,mBAAmB5M,GAAY0B,GAAO,MAAM,MAAM;CACtF,GAYMyN,KAAsB,SAA6B,GAAa,GAAM;EAE3E,IADAF,EAActH,EAAM,0BAA0B6I,GAAa,IAAI,GAC3DgB,GAAwBhB,GAAatL,CAAI,GAAG;EAChD,IAAM8H,IAAawD,EAAY;EAC/B,IAAI,CAACxD,KAAcyD,GAAaD,CAAW,GAAG;EAC9C,IAAeY,GAAqBzJ,EAAM,uBAAuBY,GAAcC,IAAsBc,EAAuB;EAC5H,IAAM4I,IAAY;GACjB,UAAU;GACV,WAAW;GACX,UAAU;GACV,mBAAmB3J;GACnB,eAAe,KAAK;EACrB,GACI3Y,IAAIod,EAAW,QACbwC,IAAQ3O,EAAkB2P,EAAY,QAAQ;EACpD,OAAO,MAAK;GACX,IAAMtD,IAAOF,EAAWpd,IAClBgd,IAAOM,EAAK,MAAM6E,IAAe7E,EAAK,cAAciF,IAAYjF,EAAK,OACrEqC,IAAS1O,EAAkB+L,CAAI,GAC/BwF,IAAYD,GACdzQ,IAAQkL,MAAS,UAAUwF,IAAYjS,GAAWiS,CAAS,GAC3DC,IAAqB;GAYzB,AAXA,EAAU,WAAW9C,GACrB,EAAU,YAAY7N,GACtB,EAAU,WAAW,IACrB,EAAU,gBAAgB,KAAK,GAC/BuN,EAActH,EAAM,uBAAuB6I,GAAa0B,CAAS,GACjE,IAAQA,EAAU,WACdtI,MAAyB2F,MAAW,QAAQA,MAAW,WAAWrP,GAAcwB,GAAOmI,EAA2B,MAAM,MAC3HoD,GAAiBL,GAAM4D,GAAatD,CAAI,GACxC,IAAQrD,KAA8BnI,GACtC,IAAqB,KAElBuQ,GAAwBrF,GAAMlL,CAAK,IACtCuL,GAAiBL,GAAM4D,GAAatD,CAAI,IAGrCgF,EAAU,kBACTA,EAAU,WAIX,CAAClJ,MAA4BtI,EAAWkD,IAAkBlC,CAAK,IAClEuL,GAAiBL,GAAM4D,GAAatD,CAAI,KAGrCjE,MAAoB,IAAQiH,GAA0BxO,CAAK,IAC1DiQ,GAAkBnC,GAAOD,GAAQ7N,CAAK,KAI3C,IAAQoQ,GAA8BtC,GAAOD,GAAQwC,GAAcrQ,CAAK,GACpEA,MAAU0Q,KACTJ,GAAmBxB,GAAa5D,GAAMmF,GAAcrQ,CAAK,KAAK2Q,KAAoBhT,GAAS4F,EAAU,OAAO,KALhHgI,GAAiBL,GAAM4D,GAAatD,CAAI,KATxCD,GAAiBL,GAAM4D,GAAatD,CAAI;EAgB1C;EAEA,AADA+B,EAActH,EAAM,yBAAyB6I,GAAa,IAAI,GAC9DgB,GAAwBhB,GAAatL,CAAI;CAC1C,GAMMkK,IAAsB,SAA4B,GAAU;EACjE,IAAIkD,IAAa,MACXC,IAAiBxD,GAAoByD,CAAQ;EAEnD,KADAvD,EAActH,EAAM,yBAAyB6K,GAAU,IAAI,GACpD,IAAaD,EAAe,SAAS,IAK3C,IAJAtD,EAActH,EAAM,wBAAwB2K,GAAY,IAAI,GAC5DpD,GAAkBoD,GAAYE,CAAQ,GACtCrD,GAAoBmD,GAAYE,CAAQ,GACpC/E,EAAoB6E,EAAW,OAAO,KAAGlD,EAAoBkD,EAAW,OAAO,GAC/EhM,EAAcgM,CAAU,MAAMzO,EAAU,SAAS;GACpD,IAAM4O,IAAU3kB,GAAcwkB,CAAU;GACxC,AAAI7E,EAAoBgF,CAAO,MAC9BC,GAA6BD,CAAO,GACpCrD,EAAoBqD,CAAO;EAE7B;EAGD,AADIxJ,KAAoBqH,GAAuBkC,CAAQ,GACvDvD,EAActH,EAAM,wBAAwB6K,GAAU,IAAI;CAC3D,GAQME,KAA+B,SAAsC,GAAM;EAChF,IAAMpF,IAAQ,CAAC;GACd,MAAMpI;GACN,QAAQ;EACT,CAAC;EACD,OAAOoI,EAAM,SAAS,IAAG;GACxB,IAAMqF,IAAOrF,EAAM,IAAI;GACvB,IAAIqF,EAAK,QAAQ;IAChB,EAAoBA,EAAK,MAAM;IAC/B;GACD;GACA,IAAMpM,IAAOoM,EAAK,MACZC,IAAYtM,EAAcC,CAAI,MAAM1C,EAAU,SAC9CiJ,IAAa9G,EAAcO,CAAI;GACrC,IAAIuG,GAAY,KAAK,IAAItc,IAAIsc,EAAW,SAAS,GAAGtc,KAAK,GAAG,EAAEA,GAAG,EAAM,KAAK;IAC3E,MAAMsc,EAAWtc;IACjB,QAAQ;GACT,CAAC;GACD,IAAIoiB,GAAW;IACd,IAAMC,IAAWzM,KAAcA,GAAYG,CAAI,IAAI;IACnD,IAAI,OAAOsM,KAAa,YAAYhS,EAAkBgS,CAAQ,MAAM,YAAY;KAC/E,IAAMnB,IAAUnL,EAAK;KACrB,AAAIkH,EAAoBiE,CAAO,KAAGpE,EAAM,KAAK;MAC5C,MAAMoE;MACN,QAAQ;KACT,CAAC;IACF;GACD;GACA,IAAIkB,GAAW;IACd,IAAME,IAAKhlB,GAAcyY,CAAI;IAC7B,AAAIkH,EAAoBqF,CAAE,KAAGxF,EAAM,KAAK;KACvC,MAAM;KACN,QAAQwF;IACT,GAAG;KACF,MAAMA;KACN,QAAQ;IACT,CAAC;GACF;EACD;CACD;CAqIA,OApIA,EAAU,WAAW,SAAS,GAAO;EACpC,IAAIrO,IAAM,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC,GACxEwL,IAAO,MACP8C,IAAe,MACfvC,IAAc,MACdwC,IAAa;EAGjB,IAFA,KAAiB,CAAClD,GACdlF,OAAgB,IAAQ,UACxB,OAAOkF,KAAU,YAAY,CAACa,GAAQb,CAAK,MAC9C,IAAQnO,GAAemO,CAAK,GACxB,OAAOA,KAAU,WAAU,MAAMnP,GAAgB,iCAAiC;EAEvF,IAAI,CAACsE,EAAU,aAAa,OAAO6K;EAOnC,AANI1G,MACH,IAAeC,IACf,IAAeC,MACToC,GAAajH,CAAG,IACnBkD,EAAM,oBAAoB,SAAS,KAAKA,EAAM,sBAAsB,SAAS,OAAG,IAAevG,EAAMiH,CAAY,IACjHV,EAAM,sBAAsB,SAAS,MAAG,IAAevG,EAAMmH,CAAY,IAC7E,EAAU,UAAU,CAAC;EACrB,IAAM0K,IAAUlJ,MAAY,OAAO+F,KAAU,YAAYa,GAAQb,CAAK,GAClEoD,IAAe,CAAC,GACdC,IAAenJ;EACrB,IAAIiJ,GAAS;GACZ,GAAwBnD,CAAK;GAC7B,IAAM/c,IAAKyT,GAAcsJ,CAAK;GAC9B,IAAI,OAAO/c,KAAO,UAAU;IAC3B,IAAMmZ,IAAUrL,EAAkB9N,CAAE;IACpC,IAAI,CAACsV,EAAa6D,MAAYxD,GAAYwD,IAEzC,MADAW,GAAgBiD,CAAK,GACfnP,GAAgB,yDAAyD;GAEjF;GACA,IAAI8P,GAAaX,CAAK,GAErB,MADAjD,GAAgBiD,CAAK,GACfnP,GAAgB,yDAAyD;GAGhF,AADA,IAAegN,GAAkBmC,CAAK,GACtC,KAAmBpQ,GAAU;EAC9B,OAAO,IAAIiR,GAAQb,CAAK,GAMvB,AALA,IAAOH,GAAc,SAAS,GAC9B,IAAeM,EAAK,cAAc,WAAWH,GAAO,EAAI,GACpDiD,EAAa,aAAalP,EAAU,WAAWkP,EAAa,aAAa,UACpEA,EAAa,aAAa,SADkD,IAAOA,IAEvF9C,EAAK,YAAY8C,CAAY,GAClCL,GAA6BzC,CAAI;OAC3B;GACN,IAAI,CAACzG,KAAc,CAACP,KAAsB,CAACE,MAAkB2G,EAAM,QAAQ,GAAG,MAAM,IAAI,OAAOlJ,KAAsB8C,KAAsBxC,GAAmB4I,CAAK,IAAIA;GAEvK,IADA,IAAOH,GAAcG,CAAK,GACtB,CAACG,GAAM,OAAOzG,IAAa,OAAOE,KAAsB7C,KAAY;EACzE;EACA,AAAIoJ,KAAQ1G,MAAYkD,GAAawD,EAAK,UAAU;EACpD,IAAMmD,IAAWH,IAAUnD,IAAQG;EACnC,IAAI;GACH,AAAIgD,KAASP,GAA6B5C,CAAK;GAC/C,IAAMuD,IAAetE,GAAoBqE,CAAQ;GACjD,OAAO,IAAcC,EAAa,SAAS,IAG1C,AAFAnE,GAAkBsB,GAAa4C,CAAQ,GACvCjE,GAAoBqB,GAAa4C,CAAQ,GACrC3F,EAAoB+C,EAAY,OAAO,KAAGpB,EAAoBoB,EAAY,OAAO;GAEtF,AAAIyC,KAAS9E,GAAwB2B,GAAOoD,CAAY;EACzD,SAASrH,GAAO;GAKf,MAJIoH,MACHpG,GAAgBiD,CAAK,GACrB9B,GAAqB8B,GAAOoD,CAAY,IAEnCrH;EACP,UAAU;GACT,KAAmBsH;EACpB;EACA,IAAIF,GAAS;GACZ,IAAIjF,GAAqB8B,GAAOoD,CAAY,GAAG,MAAMvS,GAAgB,yFAAyF;GAE9J,OADIsI,KAAoBkH,GAA2BL,CAAK,GACjDA;EACR;EACA,IAAItG,GAAY;GAEf,IADIP,KAAoBkH,GAA2BF,CAAI,GACnDxG,GAEH,KADA,IAAajC,GAAuB,KAAKyI,EAAK,aAAa,GACpDA,EAAK,aAAY,EAAW,YAAYA,EAAK,UAAU;QACxD,IAAaA;GAEpB,QADI1H,EAAa,cAAcA,EAAa,oBAAgB,IAAab,GAAW,KAAKtC,GAAkB4N,GAAY,EAAI,IACpHA;EACR;EACA,IAAIM,IAAiBnK,KAAiB8G,EAAK,YAAYA,EAAK;EAG5D,OAFI9G,MAAkBd,EAAa,eAAe4H,EAAK,iBAAiBA,EAAK,cAAc,WAAWA,EAAK,cAAc,QAAQ,QAAQvP,EAAW6C,IAAc0M,EAAK,cAAc,QAAQ,IAAI,MAAG,IAAiB,eAAeA,EAAK,cAAc,QAAQ,OAAO,QAAQqD,IAC1QrK,MAAoB,IAAiBiH,GAA0BoD,CAAc,IAC1E1M,KAAsB8C,KAAsBxC,GAAmBoM,CAAc,IAAIA;CACzF,GACA,EAAU,YAAY,WAAW;EAChC,IAAI7O,IAAM,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;EAI5E,AAHAiH,GAAajH,CAAG,GAChB,KAAa,IACb,KAA0B4D,GAC1B,KAA0BE;CAC3B,GACA,EAAU,cAAc,WAAW;EAMlC,AALA,KAAS,MACT,KAAa,IACb,KAA0B,MAC1B,KAA0B,MAC1B,IAAqBzB,IACrB,KAAY;CACb,GACA,EAAU,mBAAmB,SAAS,GAAK,GAAM,GAAO;EACvD,AAAKwE,MAAQI,GAAa,CAAC,CAAC;EAC5B,IAAM8D,IAAQ3O,EAAkB0S,CAAG,GAC7BhE,IAAS1O,EAAkBqM,CAAI;EAErC,OADI,OAAOxL,KAAU,aAAauQ,GAAwB/E,GAAMxL,CAAK,KAAK,CAACsH,MAA4BtI,EAAWkD,IAAkBlC,CAAK,KAAW,KAC7IiQ,GAAkBnC,GAAOD,GAAQ7N,CAAK;CAC9C,GACA,EAAU,UAAU,SAAS,GAAY,GAAc;EACtD,AAAI,OAAO8R,KAAiB,cACvBhT,EAAqBmH,GAAO8L,CAAU,KAC3CnU,GAAUqI,EAAM8L,IAAaD,CAAY;CAC1C,GACA,EAAU,aAAa,SAAS,GAAY,GAAc;EACzD,IAAKhT,EAAqBmH,GAAO8L,CAAU,GAC3C;OAAID,MAAiB,KAAK,GAAG;IAC5B,IAAMrS,IAAQ/B,GAAiBuI,EAAM8L,IAAaD,CAAY;IAC9D,OAAOrS,MAAU,KAAK,KAAK,IAAI3B,GAAYmI,EAAM8L,IAAatS,GAAO,CAAC,CAAC,CAAC;GACzE;GACA,OAAO9B,GAASsI,EAAM8L,EAAW;EADjC;CAED,GACA,EAAU,cAAc,SAAS,GAAY;EAC5C,AAAKjT,EAAqBmH,GAAO8L,CAAU,MAC3C,EAAMA,KAAc,CAAC;CACtB,GACA,EAAU,iBAAiB,WAAW;EACrC,IAAQlP,GAAgB;CACzB,GACOU;AACR;AACA,IAAIyO,KAAiB3O,GAAgB;;;ACn+ErC,SAAgB4O,GAAW,GAAsB;CAC7C,OAAOplB,EACF,QAAQ,MAAM,OAAO,CAAC,CACtB,QAAQ,MAAM,MAAM,CAAC,CACrB,QAAQ,MAAM,MAAM;AAC7B;AAQA,SAAgBqlB,GACZ,GACA,GACM;CAEN,OAAO,2CADS,mBAAmBrlB,CACe,EAAQ,kBAAkBslB,EAAY;AAC5F;AAWA,IAAMC,KAA0B;CAC5B,UAAU,CAAC,QAAQ;CACnB,yBAAyB;CACzB,aAAa;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACJ;CACA,aAAa;EAAC;EAAS;EAAU;EAAU;CAAY;AAC3D;AAMAxmB,GAAU,QAAQ,0BAA0B,GAAM,MAAS;CACvD,AAAIsjB,EAAK,aAAa,SAASrK,EAAK,aAAa,UAC7C,EAAK,WAAW;AAExB,CAAC;AAcD,IAAawN,KAAuB;AAcpC,SAAgBC,GAAqB,GAAc,GAA2B;CAC1E,IAAI,CAACC,GACD,OAAO3mB,GAAU,SAASqV,GAAMmR,EAAe;CAEnD,IAAMtB,IAAWllB,GAAU,SAASqV,GAAM;EACtC,GAAGmR;EACH,qBAAqB;CACzB,CAAC;CACD,KAAK,IAAMI,KAAS,MAAM,KAAK1B,EAAS,iBAAiB,KAAK,CAAC,GAAG;EAC9D,IAAM2B,IAAMD,EAAM,aAAa,KAAK,KAAK;EACzC,IAAID,EAAK,QAAQE,CAAG,GAChB;EAEJ,IAAMC,IAASF,EAAM,cAAc,cAAc,QAAQ;EAKzD,AAJA,EAAO,OAAO,UACd,EAAO,YAAY,uBACnBE,EAAO,aAAaL,IAAsBI,CAAG,GAC7C,EAAO,cAAcF,EAAK,MAAMA,EAAK,OAAOE,CAAG,KAAKA,CAAG,GACvDD,EAAM,YAAYE,CAAM;CAC5B;CAGA,IAAMxF,IAAY4D,EAAS,cAAc,cAAc,KAAK;CAE5D,OADA5D,EAAU,OAAO4D,CAAQ,GAClB5D,EAAU;AACrB;;;ACrFA,IAAayF,KACT,OAAO,iBAAiB;AAQ5B,SAAgBC,GACZ,GACA,GACF;CACE,EACID,IACAE,SAAgB;EACZ,QAAQC,EAAM,KAAK,CAAC,EAAA,CAAG,IAAI5mB,CAAkB;EAC7C,iBAAiB,CAACG,EAAU0mB,EAAW,CAAC,CAAC,CAAC,CAAC,QACtC,MAA6B,CAAC,CAACC,CACpC;CACJ,EAAE,CACN;AACJ;AAMA,SAAgBC,GAAY,GAAa,GAAqC;CAC1E,IAAI;EACA,OAAO,IAAI,IAAIR,GAAKS,CAAO,CAAC,CAAC,YAAY,KAAA;CAC7C,QAAQ;EACJ;CACJ;AACJ;AAUA,IAAMC,KACF;AAQJ,SAAgBC,GACZ,GACA,GACA,GACO;CACP,IAAIC;CACJ,IAAI;EACA,IAAM,IAAI,IAAIZ,GAAKS,CAAO;CAC9B,QAAQ;EACJ,OAAO;CACX;CAOA,OANIG,EAAI,aAAa,WAAWA,EAAI,aAAa,UACtC,KAEPC,EAAO,gBAAgB,SAASD,EAAI,MAAM,IACnCF,GAAoB,KAAKE,EAAI,QAAQ,IAEzCA,EAAI,aAAa,YAAYC,EAAO,MAAM,SAASD,EAAI,QAAQ;AAC1E;AAQA,SAAgBE,KAAmB;CAC/B,IAAMD,IAASE,EAAOb,IAAoB,KAAA,CAAS,GAC7Cc,IAAYlnB,EAAoB,GAChCmnB,IAAWC,kBAAI,IAAI,IAAY,CAAC,GAChCT,UACF,OAAO,SAAW,MACZ,uBACA,OAAO,SAAS,MACpBU,KAAU,MAAgBH,EAAU,QAAQhB,CAAG,CAAC,CAAC,MAAM,OAAOA;CAcpE,OAAO;EAEH,SAASI,QAAe,CAAC,CAACS,CAAM;EAChC,UAfa,MACb,CAACb,KACD,CAACa,KACDI,EAAS,MAAM,IAAIjB,CAAG,KACtBW,GAAeQ,EAAOnB,CAAG,GAAGa,EAAO,OAAOJ,EAAQ,CAAC;EAYnD,UAVa,MAAgB;GAC7B,EAAS,QAAQ,IAAI,IAAIQ,EAAS,KAAK,CAAC,CAAC,IAAIjB,CAAG;EACpD;EASI,SAPY,MAAgBQ,GAAYW,EAAOnB,CAAG,GAAGS,EAAQ,CAAC;CAQlE;AACJ;;;wBCwMUY,KAAqB;;;;;;;;;;;;;;;;;EA/S3B,IAAMG,IAAQC,GAuBR,EAAE,GAAG7Z,MAAO8Z,GAAQ,EAAE,UAAU,SAAS,CAAC,GAI5CC,IAEO;EACX,SAASC,IAAuB;GAI5B,OAHA,AACID,MAA0B,OAAO,sBAE9BA;EACX;EAEA,IAAIE,IAAoE;EACxE,SAASC,KAAY;GAIjB,OAHA,AACID,MAAe,OAAO,QAAQ,CAAC,MAAM,MAAQE,EAAI,OAAO,GAErDF;EACX;EAIA,IAAMG,IACF,sGACEC,KAAiB;EA0DvB,AAxDA7Y,EAAO,IAAI,EACP,YAAY,CACR;GACI,MAAM;GACN,OAAO;GACP,QAAQ,MAAQ;IACZ,IAAM8Y,IAAMlC,EAAI,QAAQ,GAAG;IAC3B,IAAIkC,MAAQ,OAGRA,MAAQ,KAAKlC,EAAI,OAAOkC,IAAM,CAAC,MAAM,MACrC,OAAOA;GAGf;GACA,UAAU,GAAK;IACX,IAAMC,IAAQnC,EAAI,MAAMgC,CAAe;IACvC,IAAKG,GAGL,OAAO;KACH,MAAM;KACN,KAAKA,EAAM;KACX,MAAMA,EAAM,EAAE,CAAC,KAAK;KACpB,aAAaA,EAAM,EAAE,CAAC,WAAW;IACrC;GACJ;GACA,SAAS,GAAO;IACZ,OAAO1C,GAAuB2C,EAAM,MAAMA,EAAM,WAAW;GAC/D;EACJ,GACA;GACI,MAAM;GACN,OAAO;GACP,UAAU,GAAK;IACX,IAAMD,IAAQnC,EAAI,MAAMiC,EAAc;IACtC,IAAKE,GAGL,OAAO;KACH,MAAM;KACN,KAAKA,EAAM;KACX,MAAMA,EAAM,EAAE,CAAC,KAAK;KACpB,aAAaA,EAAM,EAAE,CAAC,WAAW;IACrC;GACJ;GACA,SAAS,GAAO;IACZ,OACI1C,GAAuB2C,EAAM,MAAMA,EAAM,WAAW,IACpD;GAER;EACJ,CACJ,EACJ,CAAC,GAEDhZ,EAAO,IAAI,EACP,YAAY,CACR;GACI,MAAM;GACN,OAAO;GACP,QAAQ,MAAQ4W,EAAI,QAAQ,YAAY;GACxC,UAAU,GAAK;IACX,IAAMmC,IAAQ,oCAAoC,KAAKnC,CAAG;IAC1D,IAAI,CAACmC,GACD;IAEJ,IAAMC,IAAQ;KACV,MAAM;KACN,KAAKD,EAAM;KACX,MAAMA,EAAM,EAAE,CAAC,KAAK;KACpB,QAAQ,CAAC;IACb;IAEA,OADA,KAAK,MAAM,YAAYC,EAAM,MAAMA,EAAM,MAAM,GACxCA;GACX;GACA,SAAS,GAAO;IACZ,OAAO,+BAA+B,KAAK,OAAO,MAAMA,EAAM,UAAU,CAAC,CAAC,EAAE;GAChF;EACJ,CACJ,EACJ,CAAC;EAID,IAAMC,KAAW,IAAIjpB,EAAO,SAAS,GAO/BkpB,KAAmB,MACrB/U,EACK,QAAQ,MAAM,OAAO,CAAA,CACrB,QAAQ,MAAM,QAAQ,CAAA,CACtB,QAAQ,MAAM,MAAM,CAAA,CACpB,QAAQ,MAAM,MAAM,GAGvBgV,KAAqB,wCAMvBC,KAAmB,IACjBC,MAAkB,MACpBH,EACII,EAAQ,QAAQ,2BAA2B,EAAE,CAAC,CAAC,QAAQ,OAAO,EAAE,CACpE,CAAC,CAAC,QAAQ,OAAO,QAAQ;EA4B7B,AA1BA,GAAS,OAAO,SAAU,EAAE,SAAM,UAAO,MAAMC,GAAO,aAAU;GAC5D,IAAMvoB,IAAO,KAAK,OAAO,YAAYwoB,CAAM,GAIrCzB,KAAU0B,KAAQ,GAAA,CAAI,KAAK,CAAC,CAAC,QAAQ,gBAAgB,EAAE;GAC7D,IAAI,CAAC1B,KAAUoB,GAAmB,KAAKpB,CAAM,GACzC,OAAO/mB;GAEX,IAAM0oB,IAAuBN,MAAoBG,MAAUxB,GACrD4B,IAAUC,MAAUF,IAAuB3B,IAAS,KACpD8B,IAAYF,IAAU,WAAWT,EAAgBS,CAAO,EAAE,KAAK,IAC/DG,IAAcrpB,EAAWsnB,CAAM,IAC/B,KACA;GACN,OAAO,YAAYmB,EAAgBnB,CAAM,EAAE,GAAG8B,IAAYC,EAAY,GAAGJ,IAAuBL,GAAetB,CAAM,IAAI/mB,EAAK;EAClI,GAUA,GAAS,QAAQ,SAAU,GAAO;GAC9B,KAAmB;GACnB,IAAI;IACA,IAAM+oB,IAASf,EAAM,OAAO,KAAK,MAC7BE,EACI,KAAK,OAAO,YACRc,EAAK,QACL,KAAK,OAAO,YAChB,CACJ,CACJ,GACMC,KAAa,MACf,kBAAkBC,EACb,KAAK,GAAM,MAAU;KAClB,IAAM/F,IAAU,KAAK,OAAO,YAAY6F,EAAK,MAAM,GAC7CG,IAAQH,EAAK,QAAQ,WAAWA,EAAK,MAAM,KAAK;KACtD,OAAOA,EAAK,SACN,0BAA0BG,EAAM,GAAGhG,EAAQ,SAC3C,+BAA+B4F,EAAOnW,MAAU,GAAG,GAAGuW,EAAM,SAAShG,EAAQ;IACvF,CAAC,CAAA,CACA,KAAK,EAAE,EAAE,QACZzB,IAAOsG,EAAM,KAAK,SAClB,0BAA0BA,EAAM,KAAK,IAAIiB,CAAS,CAAC,CAAC,KAAK,EAAE,EAAE,YAC7D;IAQN,OAAO,2DAHHjB,EAAM,OAAO,UAAU,KAAKA,EAAM,KAAK,SACjC,2BACA,UACmE,wCAAwCiB,EAAUjB,EAAM,MAAM,EAAE,UAAUtG,EAAK;GAChK,UAAU;IACN,KAAmB;GACvB;EACJ;EAEA,IAAM0H,KACF;EAMJ,GAAS,QAAQ,EAAE,cACXA,GAAiB,KAAKppB,CAAI,IACnB,wBAAwBolB,GAAWplB,CAAI,EAAE,UAE7C,cAAcolB,GAAWplB,CAAI,EAAE;EAK1C,SAASqpB,GAAyB,GAAoB;GAClD,OAAOC,EACF,QAAQ,wBAAwB,GAAG,MAAY,KAAKnG,EAAQ,GAAG,CAAA,CAC/D,QAAQ,wBAAwB,GAAG,MAAY,IAAIA,EAAQ,EAAE,CAAA,CAC7D,QAAQ,oBAAoB,OAAO;EAC5C;EAMA,SAASoG,GAAgB,GAAoB;GACzC,IAAMC,oBAAS,IAAI,IAAY,GACzBC,IAAU,0CACZC;GACJ,QAAQ,IAAaD,EAAQ,KAAKH,CAAE,OAAO,OACvC,KACI,IAAIrnB,IAAIynB,EAAW,OACnBznB,IAAIynB,EAAW,QAAQA,EAAW,EAAE,CAAC,QACrC,KAEA,EAAO,IAAIznB,CAAC;GAIpB,OAAOqnB,EACF,QACG,yBACC,GAAO,GAAQ,MAAmB;IAC/B,IAAIE,EAAO,IAAIG,CAAM,GACjB,OAAO5B;IAEX,IAAI;KAEA,OADA,KAAK,MAAMA,CAAK,GACT;IACX,QAAQ;KACJ,OAAOA;IACX;GACJ,CACJ,CAAA,CACC,QAAQ,WAAW,MAAM;EAClC;EAIA,IAAM6B,KAA+C;GACjD7pB;GACAwpB;GACAtqB;GACAoqB;EACJ,GAIMQ,IAAeC,GAA+B,WAAW,GAQzDC,KAAmBC,GACrBC,GAAM7C,GAAO,UAAU,GACvBH,EACJ,GACMiD,KAAkBlE,QACpBoB,EAAM,aACAznB,EAAgBoqB,GAAiB,OAAO3C,EAAM,UAAU,IACxD2C,GAAiB,KAC3B,GAKM,EAAE,oBAAgBrqB,EAAoB,GACtCyqB,KAAmBC,GAAYF,EAAe,GAI9CG,KAAY3D,GAAiB,GAE7BtS,KAAO4R,QAAe;GACxB,IAAMsD,IAAKM,GAAc,QACpB,GAAM,MAAOnjB,EAAGzG,CAAI,GACrBmqB,GAAiB,KACrB;GACA,OAAO1E,GACHzmB,EAAO,MAAMsqB,GAAI;IACb,OAAO;IACP,QAAQ;IACR;GACJ,CAAC,GACDe,GAAU,QAAQ,QACZ;IACI,SAASA,GAAU;IACnB,QAAQA,GAAU;IAClB,QAAQ,MAAS7c,EAAG,mBAAmB,EAAE,QAAK,CAAC;GACnD,IACA,KAAA,CACV;EACJ,CAAC;EAOD,SAAS8c,EAAe,GAAmB;GAIvC,IAAM1E,KAHQ2E,EAAM,QAA2B,UAC3C,IAAI/E,GAAqB,EAC7B,EAAA,EACkB,aAAaA,EAAoB;GACnD,AAAKI,MAGL2E,EAAM,eAAe,GACrBA,EAAM,gBAAgB,GACtBF,GAAU,QAAQzE,CAAG;EACzB;EAIA,eAAe4E,KAAgB;GAC3B,IAAIpD,EAAM,SACN;GAGJ,MAAMqD,EAAS;GACf,IAAMpL,IAAQwK,EAAa,OAAO,iBAC9B,kCACJ;GACA,IAAI,CAACxK,GAAO,QACR;GAGJ,IAAM,EAAE,qBAAkB,cAAW,MAAMmI,EAAqB,GAC1DkD,IAAQtD,EAAM,SACduD,EAAO,iBACPA,EAAO;GAEb,KAAK,IAAM3S,KAAQ,MAAM,KAAKqH,CAAK,GAAG;IAClC,IAAI,CAACrH,EAAK,aACN;IAEJ,IAAM4S,IAAO5S,EAAK,aAAa,KAAK;IACpC,IAAK4S,GAIL,IAAI;KACA,IAAMvW,IAAMwW,EAAiBD,GAAMF,CAAK;KACxC,AAAI1S,EAAK,gBACL,EAAK,QAAQ,OAAO4S,GACpB,EAAK,YAAYvW,GACjB2D,EAAK,aAAa,iBAAiB,MAAM;IAEjD,QAAQ,CAER;GACJ;EACJ;EAEA,eAAe8S,KAAgB;GAC3B,MAAML,EAAS;GACf,IAAMM,IAASlB,EAAa,OAAO,iBAC/B,kDACJ;GACA,IAAI,CAACkB,GAAQ,QACT;GAGJ,IAAMC,KAAQ,MAAM,OAAO,2BAAA,CAA4B;GACvD,KAAK,IAAMC,KAASF,GAEhB,AADAC,EAAK,iBAAiBC,CAAK,GAC3BA,EAAM,aAAa,oBAAoB,MAAM;EAErD;EAEA,eAAeC,KAAc;GACzB,MAAMT,EAAS;GACf,IAAMpL,IACFwK,EAAa,OAAO,iBAA8B,gBAAgB;GACtE,IAAI,CAACxK,GAAO,QACR;GAGJ,IAAM8L,IAAQ,MAAMzD,GAAU;GAK9B,EACI,8DACAnoB,EAAcsqB,EAAa,KAAK,CACpC;GAEA,KAAK,IAAM7R,KAAQ,MAAM,KAAKqH,CAAK,GAAG;IAClC,IAAI,CAACrH,EAAK,aACN;IAEJ,IAAMoT,IAAMpT,EAAK,QAAQ;IACzB,IAAI,CAACoT,GACD;IAEJ,IAAM9F,IAActN,EAAK,QAAQ,YAAY;IAC7C,IAAI;KAKA,AAJA,EAAK,YAAYmT,EAAM,eAAe,mBAAmBC,CAAG,GAAG;MAC3D,cAAc;MACd;KACJ,CAAC,GACDpT,EAAK,UAAU,OAAO,eAAe;IACzC,QAAQ,CAER;GACJ;EACJ;EAEA,eAAeqT,KAA+B;GAC1C,MAAMZ,EAAS;GACf,IAAMpL,IAAQwK,EAAa,OAAO,iBAC9B,4BACJ;GACA,IAAI,CAACxK,GAAO,QACR;GAGJ,IAAM,EAAE,qBAAkB,cAAW,MAAMmI,EAAqB,GAC1DkD,IAAQtD,EAAM,SACduD,EAAO,iBACPA,EAAO;GAEb,KAAK,IAAM3S,KAAQ,MAAM,KAAKqH,CAAK,GAAG;IAClC,IAAI,CAACrH,EAAK,aACN;IAEJ,IAAM4S,IAAO5S,EAAK,QAAQ;IAC1B,IAAK4S,GAGL,IAAI;KACA,EAAK,YAAYC,EAAiBD,GAAMF,CAAK;IACjD,QAAQ,CAER;GACJ;EACJ;EASA,SAASY,GAAiB,GAAc;GACpC,IAAMC,IAAMhB,EAAM;GAClB,IAAI,EAAEgB,aAAe,qBAAqBA,EAAI,QAAQ,QAClD;GAEJ,EAAI,QAAQ,SAAS;GACrB,IAAMC,IAAc,SAAS,cAAc,MAAM;GAIjD,AAHA,EAAY,YAAY,yBACxB,EAAY,cAAcD,EAAI,OAAO/d,EAAG,sBAAsB,GAC9D,EAAY,QAAQ+d,EAAI,KACxBA,EAAI,YAAYC,CAAW;EAC/B;EAYA,AAVAC,QAAgB;GACZ,EAAa,OAAO,iBAAiB,SAASH,IAAkB,EAAI;EACxE,CAAC,GACDI,QAAsB;GAClB,EAAa,OAAO,oBAAoB,SAASJ,IAAkB,EAAI;EAC3E,CAAC,GAEDK,EAAM,CAACvX,UAAYgT,EAAM,OAAO,GAAGoD,IAAe,EAAE,WAAW,GAAK,CAAC,GACrEmB,QAAYvE,EAAM,QAAQiE,EAA4B,GACtDM,EAAMvX,IAAM0W,IAAe,EAAE,WAAW,GAAK,CAAC,GAC9Ca,EAAMvX,IAAM8W,IAAa,EAAE,WAAW,GAAK,CAAC;EAI5C,IAAIU,KAAgB;EAEpB,SAASC,GAAmB,GAAc,GAAgC;GACtE,IAAMC,IAAO,SAAS,cAAc,MAAM;GAe1C,OAdA,EAAK,MAAM,UAAU,gBAAgB1E,EAAM,UAAU,GAAGA,EAAM,kBAAkB,YAAY2E,EAAM,+BAClG,EAAK,cAAc/rB,GACnB8rB,EAAK,iBACD,sBACM;IACF,IAAMpO,IAASoO,EAAK;IACpB,AAAKpO,MAGLA,EAAO,aAAa,SAAS,eAAe1d,CAAI,GAAG8rB,CAAI,GACvDpO,EAAO,UAAU;GACrB,GACA,EAAE,MAAM,GAAK,CACjB,GACOoO;EACX;EAEA,SAASE,GACL,GACA,GACA,GACA,GACM;GACN,IAAIlE,IAAMmE,GACJC,IAAQlsB,EAAK,MAAM,OAAO;GAChC,KAAK,IAAMmsB,KAAQD,GACf,AAAKC,MAGD,QAAQ,KAAKA,CAAI,IACjBzO,EAAO,aAAa,SAAS,eAAeyO,CAAI,GAAGC,CAAO,KAG9D1O,EAAO,aAAamO,GAAmBM,GAAMrE,IAAM,EAAE,GAAGsE,CAAO,GAC/D;GAEJ,OAAOtE;EACX;EAEA,SAASuE,GAAiB,GAA2B;GACjD,IAAMrK,IAAS,SAAS,iBAAiBrL,GAAM,WAAW,WAAW,EACjE,WAAW,GAAM;IAQb,OANIqB,EAAK,eAAe,QAChB,mDACJ,IAEO,WAAW,gBAEf,WAAW;GACtB,EACJ,CAAC,GACKqH,IAAgB,CAAC;GACvB,OAAO2C,EAAO,SAAS,IACnB,EAAM,KAAKA,EAAO,WAAmB;GAEzC,OAAO3C;EACX;EAEA,SAASiN,IAAqB;GAC1B,IAAI,CAACzC,EAAa,SAAS,CAACzC,EAAM,WAAW,CAACA,EAAM,WAChD;GAGJ,IAAMmF,IAAYF,GAAiBxC,EAAa,KAAK,GACjD2C,IAAY,GACZC,IAAU;GAEd,KAAK,IAAMC,KAAYH,GAAW;IAC9B,IAAMvsB,IAAO0sB,EAAS,eAAe,IAC/BC,IAAYH,GACZI,IAAUJ,IAAYxsB,EAAK;IAGjC,IAFA,IAAY4sB,GAERA,KAAWhB,IACX;IAGJ,IAAMlO,IAASgP,EAAS;IACxB,IAAI,CAAChP,GACD;IAIJ,IAAIiP,KAAaf,IAAe;KAC5B,IAAM9E,IAAM4F,EAAS;KAErB,AADAhP,EAAO,YAAYgP,CAAQ,GAC3B,IAAUV,GAAoBhsB,GAAM0d,GAAQoJ,GAAK2F,CAAO;KACxD;IACJ;IAGA,IAAMI,IAAUjB,KAAgBe,GAC1BG,IAAcJ,EAAS,UAAUG,CAAO,GACxCE,IAAUD,EAAY,eAAe,IACrChG,IAAMgG,EAAY;IAExB,AADApP,EAAO,YAAYoP,CAAW,GAC9B,IAAUd,GAAoBe,GAASrP,GAAQoJ,GAAK2F,CAAO;GAC/D;GAEA,KAAgBD;EACpB;SAEAb,EACIvX,IACA,YAAY;GAER,AADA,MAAMqW,EAAS,GACf6B,EAAmB;EACvB,GACA,EAAE,WAAW,GAAK,CACtB,GAEAX,QACUvE,EAAM,WACX,GAAQ,MAAW;GAChB,CAAI,CAAC4F,KAAWC,KAAUD,EAAO,SAASC,EAAO,YAC7C,KAAgB;EAExB,CACJ,cAIA/tB,GAAA,GAAAC,EAAiE,OAAA;GAA5D,KAAI;GAAa,SAAOmrB;GAAgB,WAAQlW,GAAA"}
1
+ {"version":3,"file":"PkStreamingMarkdown-JEkbkY5k.js","names":["Sn","On","w","Tn","F","L","Rn","yn","wn","_","T","K","X","I","A","M","f","h","Y","q","v","z","Q","Z","j","J","V","N","x","y","$","O","C","ne","ee","re","te","U","ie","oe","se","le","ae","fe","ge","de","me","be","ke","Ie","Ee","Se","Oe","Te","D","Me","Ce","Pe","_e","B","Re","ye","h","DOMPurify","marked","remend","_openBlock","_createElementBlock","_sfc_main","normalizeImageHost","loadCdnCss","getShadowRoot","getMarkdownTail","isSameSite","useShortUrlResolver","DELIMITED_MARKER","DEGRADED_MARKER","STRAY_DELIMITERS","stripProviderCitationMarkers","text","En","Sn$1","On$1","w$1","Tn$1","Mn","F$1","e","n","r","L$1","P","c","Cn","Ln","Pn","_n","t","o","s","l","Rn$1","Nn","yn$1","$n","a","u","Un","Dn","W","Bn","wn$1","i","Fn","Wn","_$1","T$1","g","K$1","H","X$1","I$1","R","Kn","Hn","Gn","Xn","Yn","qn","k","vn","zn","A$1","Qn","M$1","f$1","h$2","Zn","Y$1","p","q$1","v$1","z$1","Q$1","Z$1","j$1","J$1","V$1","b","N$1","x$1","nn","m","en","y$1","$$1","O$1","Vn","C$1","xn","ne$1","on","ee$1","re$1","te$1","U$1","rn","ie$1","oe$1","S","tn","se$1","sn","le$1","ln","ae$1","ce","an","cn","ue","fe$1","un","ge$1","de$1","fn","me$1","he","pe","be$1","gn","dn","ke$1","Ie$1","Ae","mn","hn","E","Ee$1","pn","Se$1","Oe$1","Te$1","D$1","Me$1","Ce$1","Le","Pe$1","bn","_e$1","kn","In","An","B$1","Re$1","d","Ne","ye$1","Or","B","y","V","M","D","h$1","x","ze","Q","Ee","Me","Ce","N","Ie","Y","fe","me","Be","ee","De","te","qe","Ze","ne","ve","xe","He","Ge","re","de","Qe","je","Fe","Ue","be","Ke","q","j","Xe","We","Re","Ve","Je","Ye","Te","et","tt","rt","Oe","st","it","at","lt","pt","ct","dt","kt","gt","ft","mt","xt","we","K","bt","Rt","Tt","ke","Ot","wt","ge","yt","se","St","J","_t","F","Z","$t","Pe","w","ye","ie","oe","A","ae","v","le","X","Se","Lt","_e","_","$e","G","T","$","z","O","L","C","I","f","At","_OverloadYield","_arrayLikeToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_slicedToArray","_unsupportedIterableToArray","AsyncGenerator","resume","settle","entries","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","apply","construct","args","func","thisArg","Func","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySlice","arraySplice","arrayIsArray","setCreate","unconstruct","setAdd","setHas","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","numberToString","booleanToString","bigintToString","symbolToString","objectHasOwnProperty","objectToString","regExpTest","typeErrorCreate","addToSet","transformCaseFunc","set","array","element","lcElement","cleanArray","index","clone","newObject","_ref2","object","_ref3","property","value","stringifyValue","valueAsRecord","valueToString","lookupGetter","stringified","desc","prop","fallbackValue","lookupAccessor","isRegex","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","ELEMENT_MARKUP_PROBE","COMMENT_MARKUP_PROBE","FALLBACK_TAG_CLOSE","SELF_CLOSING_TAG","NODE_TYPE","LITERAL_TEXT_ELEMENTS","getGlobal","_createTrustedTypesPolicy","trustedTypes","suffix","ATTR_NAME","purifyHostElement","policyName","scriptUrl","_createHooksMap","_resolveSetOption","cfg","key","options","fallback","_resolveObjectOption","makeFallback","createDOMPurify","window","DOMPurify","root","document","originalDocument","currentScript","HTMLTemplateElement","Node","Element","NodeFilter","DOMParser","ElementPrototype","cloneNode","remove","removeAttributeNode","getNextSibling","getChildNodes","getParentNode","getAttributes","getNodeType","getNodeName","getOwnerDocument","_readNodeType","node","_readNodeName","getNamespaceURI","_readNamespaceURI","template","trustedTypesPolicy","emptyHTML","defaultTrustedTypesPolicy","defaultTrustedTypesPolicyResolved","IN_TRUSTED_TYPES_POLICY","_assertNotInTrustedTypesPolicy","_createTrustedHTML","_createTrustedScriptURL","_getDefaultTrustedTypesPolicy","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","MUSTACHE_EXPR$1","ERB_EXPR$1","TMPLIT_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","CUSTOM_ELEMENT$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","SET_CONFIG_ALLOWED_TAGS","SET_CONFIG_ALLOWED_ATTR","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","IN_PLACE_VISITED","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","DEFAULT_MATHML_TEXT_INTEGRATION_POINTS","MATHML_TEXT_INTEGRATION_POINTS","DEFAULT_HTML_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","customElementHandling","previousTrustedTypesPolicy","error","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkSvgNamespace","parent","tagName","parentTagName","_checkMathMlNamespace","_checkHtmlNamespace","_checkValidNamespace","elementNamespace","parentNode","_forceRemove","_stripAttributeNode","attribute","name","_neutralizeRoot","childNodes","child","attributes","_removeAttribute","attr","_stripDisallowedAttributes","_walkTree","intoShadow","stack","visit","shadowRoot","_isDocumentFragment","_neutralizeSubtree","_collectLiveNodes","nodes","_neutralizeEscapedElements","reachable","before","_neutralizeDiscarded","rootRemoved","entry","_sanitizeUnvisitedNodes","visited","original","getOriginal","beforeNode","round","live","containers","pending","container","_sanitizeUnvisitedIn","iterator","_createNodeIterator","inShadow","_executeHooks","_sanitizeElements","_sanitizeAttributes","_sanitizeShadowDOM2","_markVisited","_isPatchLinkageAttribute","lcName","lcTag","_neutralizePatchLinkage","nodeType","_initDocument","doc","leadingWhitespace","dirty","matches","dirtyPayload","body","_stripTemplateExpressions","_scrubTemplateExpressions2","templates","tmpl","_scrubOwnCharacterData","walker","currentNode","_isClobbered","realTagName","_isNode","data","_isUnsafeNode","_matchesNameCheck","check","_sanitizeDisallowedNode","_isBasicCustomElement","childCount","hoisted","_forkSharedAllowlist","hookList","defaultSet","setConfigSet","_handleHookDetachedNode","removed","content","_isValidAttribute","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_applyTrustedTypesToAttribute","namespaceURI","_setAttributeValue","_isUnsafeAttributeValue","hookEvent","attrValue","initValue","recreatedNamedProp","shadowNode","shadowIterator","fragment","innerSr","_sanitizeAttachedShadowRoots","item","isElement","rootName","sr","importedNode","returnNode","inPlace","inPlaceNodes","outerVisited","walkRoot","nodeIterator","serializedHTML","tag","hookFunction","entryPoint","purify_default","escapeHtml","renderKatexPlaceholder","displayMode","SANITIZE_CONFIG","HELD_IMAGE_ATTRIBUTE","sanitizeMarkdownHtml","held","image","src","button","ChatImagePolicyKey","provideChatImagePolicy","computed","hosts","urlOrigin","backendUrl","origin","imageHostOf","pageUrl","PLATFORM_MEDIA_PATH","isImageAllowed","url","policy","useChatImageGate","inject","shortUrls","released","ref","target","_hoisted_1","RENDER_INTERVAL_MS","PkStreamingMarkdown_default","defineComponent","props","__props","useI18n","beautifulMermaidPromise","loadBeautifulMermaid","katexPromise","loadKatex","mod","inlineKatexRule","blockKatexRule","idx","match","token","renderer","escapeAttribute","UNSAFE_LINK_SCHEME","isRenderingTable","shortenAddress","address","label","tokens","href","isBareAddressInTable","tooltip","title","titleAttr","targetAttrs","labels","cell","renderRow","cells","align","MERMAID_PREFIXES","normalizeLatexDelimiters","md","stripLeakedJson","fenced","fenceRe","fenceMatch","offset","preprocessors","containerRef","useTemplateRef","renderedMarkdown","refThrottled","toRef","visibleMarkdown","expandedMarkdown","resolveText","imageGate","onContentClick","event","renderMermaid","nextTick","theme","THEMES","code","renderMermaidSVG","highlightCode","blocks","hljs","block","renderKatex","katex","tex","rerenderMermaidOnThemeChange","handleImageError","img","placeholder","onMounted","onBeforeUnmount","watch","prevCharCount","createAnimatedSpan","span","delay","insertAnimatedWords","startIndex","parts","part","refNode","collectTextNodes","annotateNewContent","textNodes","charsSeen","wordIdx","textNode","nodeStart","nodeEnd","splitAt","newTextNode","newText","newVal","oldVal","openBlock","createElementBlock"],"sources":["../../../../packages/utils/src/citations.ts","../../../../node_modules/.pnpm/remend@1.4.0/node_modules/remend/dist/index.js","../../../../node_modules/.pnpm/marked@18.1.1/node_modules/marked/lib/marked.esm.js","../../../../node_modules/.pnpm/dompurify@3.4.17/node_modules/dompurify/dist/purify.es.mjs","../../../../packages/components/src/chat/markdownHtml.ts","../../../../packages/components/src/chat/chatImagePolicy.ts","../../../../packages/components/src/chat/PkStreamingMarkdown.vue","../../../../packages/components/src/chat/PkStreamingMarkdown.vue"],"sourcesContent":["/**\n * OpenAI's Responses API (native `web_search`, also through Azure and the\n * gateway) emits inline citations as a marker wrapped in Private Use Area\n * delimiters:\n *\n * \\uE200cite\\uE202turn1view1\\uE201\n *\n * `cite` is the marker kind and `turn1view1` is the reference: browsing turn 1,\n * first page viewed (`search4` = 4th search result, `news2`, `fetch0`, …).\n * Several refs can share one block.\n *\n * Those delimiters are invisible in every renderer and get dropped by most text\n * pipelines (JSON round-trips, markdown sanitizers, terminal output), which\n * leaves the bare payload behind as literal prose: `citeturn1view1`. Either way\n * the marker is display noise: the usable data lives in the part's\n * `providerMetadata.<provider>.annotations`, which carries url, title and the\n * span the marker occupied.\n *\n * IMPORTANT: those annotation `start_index`/`end_index` offsets are computed on\n * the text WITH the delimiters still in it. Render the citations from the\n * annotations FIRST (walking them last-to-first so earlier offsets stay valid),\n * and only then strip. Stripping first makes every offset stale.\n */\n\n/** A whole PUA-delimited block, `\\uE200…\\uE201`, plus the space before it. */\nconst DELIMITED_MARKER = /[ \\t]*\\uE200[^\\uE201]*\\uE201/g\n\n/**\n * The same payload once the delimiters are already lost: a marker keyword glued\n * to one or more `turn<n><kind><n>` refs. Anchored on both the keyword and the\n * ref shape, because on degraded text there are no boundaries left to trust and\n * a looser pattern would start eating prose. Tried only where a run of blanks\n * starts: from every position inside a long run it walked the rest of the run,\n * and 64k spaces took 7 seconds.\n */\nconst DEGRADED_MARKER =\n /(?<![ \\t])[ \\t]*(?:cite|filecite|videocite|audiocite|imagecite|screenshot)(?:turn\\d+[a-z]+\\d+)+/gi\n\n/**\n * Orphan delimiters: a block truncated mid-stream, or one whose payload some\n * upstream pass already removed.\n */\nconst STRAY_DELIMITERS = /[\\uE200-\\uE20F]/g\n\n/**\n * Removes provider citation markers from text meant for display, in all three\n * states they show up in: well-formed, delimiter-stripped, and truncated.\n */\nexport function stripProviderCitationMarkers(text: string): string {\n if (!text) {\n return text\n }\n return text\n .replace(DELIMITED_MARKER, '')\n .replace(DEGRADED_MARKER, '')\n .replace(STRAY_DELIMITERS, '')\n}\n","var En=Object.defineProperty,Sn=Object.defineProperties;var On=Object.getOwnPropertyDescriptors;var w=Object.getOwnPropertySymbols;var Tn=Object.prototype.hasOwnProperty,Mn=Object.prototype.propertyIsEnumerable;var F=(n,e,r)=>e in n?En(n,e,{enumerable:true,configurable:true,writable:true,value:r}):n[e]=r,L=(n,e)=>{for(var r in e||(e={}))Tn.call(e,r)&&F(n,r,e[r]);if(w)for(var r of w(e))Mn.call(e,r)&&F(n,r,e[r]);return n},P=(n,e)=>Sn(n,On(e));var c={PROSE:0,FENCE_MARKER:1,FENCE_INFO:2,FENCE_BODY:3,CODE_SPAN:4,CODE_SPAN_OPEN:5},Cn=/^(`{3,}|~{3,})(.*)$/,Ln=n=>n!==void 0&&n>=\"0\"&&n<=\"9\",Pn=(n,e)=>{let r=e;if(n[r]===\"-\"||n[r]===\"*\"||n[r]===\"+\")r+=1;else {for(;Ln(n[r])&&r-e<9;)r+=1;if(r===e||n[r]!==\".\"&&n[r]!==\")\")return -1;r+=1;}return n[r]===\" \"?r+1:-1},_n=(n,e,r)=>{let t=0,i=e,o=false,s=e;for(;;){for(;s<r&&n[s]===\" \";)s+=1;if(n[s]===\">\"){t+=1,s+=n[s+1]===\" \"?2:1,i=s,o=false;continue}let l=s<r?Pn(n,s):-1;if(l===-1)return {contentStart:s,listIndent:o?s-i:0,quoteDepth:t};s=l,o=true;}},Rn=(n,e,r,t)=>{let i=e;for(let o=0;o<t;o+=1){for(;i<r&&n[i]===\" \";)i+=1;if(n[i]!==\">\")return -1;i+=1,n[i]===\" \"&&(i+=1);}return i},Nn=(n,e,r,t,i)=>{let o=e+t;n.fill(c.FENCE_MARKER,o,o+i),n.fill(c.FENCE_INFO,o+i,Math.min(r+1,n.length));},yn=(n,e,r,t)=>{let i=e;for(;i<r&&n[i]===\" \";)i+=1;let o=0;for(;i<r&&n[i]===t.char;)i+=1,o+=1;if(o<t.length)return false;for(;i<r;){if(n[i]!==\" \"&&n[i]!==\"\t\"&&n[i]!==\"\\r\")return false;i+=1;}return true},$n=(n,e,r,t)=>{let i=t>r&&n[t-1]===\"\\r\"?t-1:t,o=_n(n,r,i),s=n.slice(o.contentStart,i).match(Cn);if(!s)return null;let[,l,a]=s,u=l[0];return u===\"`\"&&a.includes(\"`\")?null:(Nn(e,r,t,o.contentStart-r,l.length),{char:u,length:l.length,listIndent:o.listIndent,quoteDepth:o.quoteDepth})},Un=(n,e,r,t)=>{let i=Rn(n,e,r,t.quoteDepth);if(i===-1||t.listIndent===0)return i;let o=i;for(;o<r&&n[o]===\" \";)o+=1;return o===r||n[o]===\"\\r\"&&o+1===r||o-i>=t.listIndent?i:-1},Dn=(n,e)=>{let r=n.length,t=null,i=0;for(;i<r;){let o=n.indexOf(`\n`,i);o===-1&&(o=r);let s=t?Un(n,i,o,t):-1;t&&s===-1&&(t=null),t?yn(n,s,o,t)?(e.fill(c.FENCE_MARKER,i,o),t=null):e.fill(c.FENCE_BODY,i,Math.min(o+1,r)):t=$n(n,e,i,o),i=o+1;}return t},W=(n,e)=>{let r=e+1;for(;r<n.length&&n[r]===\"`\";)r+=1;return r},Bn=(n,e)=>{let r=e+1;for(;r<n.length&&(n[r]===\" \"||n[r]===\"\t\"||n[r]===\"\\r\");)r+=1;return r<n.length&&n[r]===`\n`},wn=(n,e,r)=>{let t=r;for(;;){let i=n.indexOf(\"`\",t);if(i===-1)return -1;let o=i>t&&n[i-1]===\"\\\\\"&&e[i-1]===c.PROSE;if(e[i]===c.PROSE&&!o)return i;t=i+1;}},Fn=(n,e)=>{let r=n.length,t=-1,i=0,o=0;for(;o<r;){if(t<0){if(o=wn(n,e,o),o===-1)break;let l=W(n,o);t=o,i=l-o,o=l;continue}if(e[o]!==c.PROSE){e.fill(c.CODE_SPAN_OPEN,t,o),t=-1,o+=1;continue}if(n[o]===`\n`&&Bn(n,o)){t=-1,o+=1;continue}if(n[o]!==\"`\"){o+=1;continue}let s=W(n,o);s-o===i&&(e.fill(c.CODE_SPAN,t,s),t=-1),o=s;}return t>=0?(e.fill(c.CODE_SPAN_OPEN,t,r),{start:t,runLength:i}):null},Wn=n=>{let e=new Uint8Array(n.length),r=Dn(n,e),t=Fn(n,e);return {text:n,regions:e,openFence:r,openSpan:t,mathMask:null,linkUrlMask:null,htmlTagMask:null}},_=null,T=null,g=n=>{if(T!==null&&n===_)return T;let e=Wn(n);return _=n,T=e,e},K=()=>{_=null,T=null;},H=(n,e)=>e>=n.regions.length?n.openFence!==null||n.openSpan!==null:e<0?false:n.regions[e]!==c.PROSE,G=(n,e)=>{if(e>=n.regions.length)return n.openFence!==null;if(e<0)return false;let r=n.regions[e];return r===c.FENCE_MARKER||r===c.FENCE_INFO||r===c.FENCE_BODY},X=(n,e)=>n.regions[e]===c.CODE_SPAN,I=(n,e)=>{let r=g(n),t=e+e,i=0;for(let o=n.indexOf(t);o!==-1;o=n.indexOf(t,o))r.regions[o]===c.PROSE?(i+=1,o+=2):o+=1;return i},R=new Uint8Array(0),Kn=n=>n===\"inlineLatex\"||n===\"blockLatex\",Hn=(n,e)=>e===\"[\"&&n===\"none\"?\"blockLatex\":e===\"]\"&&n===\"blockLatex\"?\"none\":e===\"(\"&&n===\"none\"?\"inlineLatex\":e===\")\"&&n===\"inlineLatex\"?\"none\":null,Gn=(n,e)=>e?n===\"blockDollar\"?\"none\":\"blockDollar\":n===\"blockDollar\"?n:n===\"inlineDollar\"?\"none\":\"inlineDollar\",Xn=n=>n.includes(\"$\")||n.includes(\"\\\\(\")||n.includes(\"\\\\[\"),Yn=(n,e,r)=>{let t=n[e+1];if(n[e]===\"\\\\\"){if(t===\"$\")return {context:r,length:2};let i=Hn(r,t);return i===null?null:{context:i,length:2}}if(n[e]===\"$\"&&!Kn(r)){let i=t===\"$\";return {context:Gn(r,i),length:i?2:1}}return null},qn=n=>{let{text:e,regions:r}=n,t=e.length,i=new Uint8Array(t),o=\"none\",s=0;for(;s<t;){i[s]=o===\"none\"?0:1;let l=r[s]===c.PROSE?Yn(e,s,o):null;if(l===null){s+=1;continue}o=l.context,l.length===2&&(i[s+1]=o===\"none\"?0:1),s+=l.length;}return i},k=(n,e)=>e<0||e>=n.text.length?false:(n.mathMask===null&&(n.mathMask=Xn(n.text)?qn(n):R),n.mathMask[e]===1),vn=(n,e,r,t)=>{let{text:i,regions:o}=n,s=new Uint8Array(r-e),l=0;for(let u=r-1;u>=e;u-=1)i[u]===\")\"&&o[u]===c.PROSE&&(l=1),s[u-e]=l;let a=false;for(let u=e;u<r;u+=1)a&&s[u-e]===1&&(t[u]=1),o[u]===c.PROSE&&(i[u]===\")\"?a=false:i[u]===\"(\"&&(a=u>0&&i[u-1]===\"]\"));},zn=n=>{let{text:e}=n,r=e.length,t=new Uint8Array(r),i=0;for(;i<r;){let o=e.indexOf(`\n`,i);o===-1&&(o=r),vn(n,i,o,t),i=o+1;}return t},A=(n,e)=>e<0||e>=n.text.length?false:(n.linkUrlMask===null&&(n.linkUrlMask=n.text.includes(\"](\")?zn(n):R),n.linkUrlMask[e]===1),Qn=n=>{let{text:e,regions:r}=n,t=e.length,i=new Uint8Array(t),o=false;for(let s=0;s<t;s+=1){if(e[s]===`\n`){o=false;continue}if(i[s]=o?1:0,r[s]===c.PROSE){if(e[s]===\">\")o=false;else if(e[s]===\"<\"){let l=e[s+1];o=l!==void 0&&(l>=\"a\"&&l<=\"z\"||l>=\"A\"&&l<=\"Z\"||l===\"/\");}}}return i},M=(n,e)=>e<0||e>=n.text.length?false:(n.htmlTagMask===null&&(n.htmlTagMask=n.text.includes(\"<\")?Qn(n):R),n.htmlTagMask[e]===1);var f=(n,e)=>H(g(n),e),h=(n,e)=>X(g(n),e);var Zn=/^(\\s*(?:[-*+]|\\d+[.)]) +)>(=?\\s*[$]?\\d)/gm,Y=n=>!n||typeof n!=\"string\"||!n.includes(\">\")?n:n.replace(Zn,(e,r,t,i)=>f(n,i)?e:`${r}\\\\>${t}`);var p=(n,{delimiter:e,markerLength:r,regex:t})=>{let i=n.lastIndexOf(e,n.length-2),o=i===-1?n.length-1:i;return n.slice(Math.max(0,o-r+1)).match(t)},q={delimiter:\"*\",markerLength:2,regex:/(\\*\\*)([^*]*\\*?)$/},v={delimiter:\"_\",markerLength:2,regex:/(__)([^_]*?)$/},z={delimiter:\"*\",markerLength:3,regex:/(\\*\\*\\*)([^*]*?)$/},Q={delimiter:\"*\",markerLength:1,regex:/(\\*)([^*]*?)$/},Z={delimiter:\"_\",markerLength:1,regex:/(_)([^_]*?)$/},j={delimiter:\"~\",markerLength:2,regex:/(~~)([^~]*?)$/},J={delimiter:\"_\",markerLength:2,regex:/(__)([^_]+)_$/},V={delimiter:\"~\",markerLength:2,regex:/(~~)([^~]+)~$/},b=/^[\\s_~*`]*$/,N=/^[\\s]*[-*+][\\s]+$/,x=/[\\p{L}\\p{N}_]/u,nn=/^\\*{4,}$/;var m=n=>{if(!n)return false;let e=n.charCodeAt(0);return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95?true:x.test(n)},jn=(n,e)=>G(g(n),e),en=(n,e)=>{let r=1;for(let t=e-1;t>=0;t-=1)if(n[t]===\"]\")r+=1;else if(n[t]===\"[\"&&(r-=1,r===0))return t;return -1},y=(n,e)=>{let r=1;for(let t=e+1;t<n.length;t+=1)if(n[t]===\"[\")r+=1;else if(n[t]===\"]\"&&(r-=1,r===0))return t;return -1},$=(n,e)=>k(g(n),e),Jn=(n,e)=>A(g(n),e);var O=(n,e,r)=>{let t=0;for(let a=e-1;a>=0;a-=1)if(n[a]===`\n`){t=a+1;break}let i=n.length;for(let a=e;a<n.length;a+=1)if(n[a]===`\n`){i=a;break}let o=n.substring(t,i),s=0,l=false;for(let a of o)if(a===r)s+=1;else if(a!==\" \"&&a!==\"\t\"){l=true;break}return s>=3&&!l};var Vn=(n,e,r,t)=>r===\"\\\\\"||k(n,e)?true:r!==\"*\"&&t===\"*\"?(e<n.text.length-2?n.text[e+2]:\"\")!==\"*\":r===\"*\"||(!r||r===\" \"||r===\"\t\"||r===`\n`)&&(!t||t===\" \"||t===\"\t\"||t===`\n`),C=n=>n===\" \"||n===\"\t\"||n===`\n`,xn=(n,e)=>!!(n&&e&&m(n)&&m(e)),ne=(n,e,r,t)=>{let i=xn(n,e),o=!!e&&!C(e),s=!!n&&!C(n);return i&&r%2===0&&!t?{count:false}:s&&r%2===1||o?{count:true,inWordAsteriskChain:i}:{count:false}},on=n=>{let e=g(n),r=0,t=false,i=n.length;for(let o=0;o<i;o+=1){if(n[o]!==\"*\"||e.regions[o]!==c.PROSE){m(n[o])||(t=false);continue}let s=o>0?n[o-1]:\"\",l=o<i-1?n[o+1]:\"\";if(Vn(e,o,s,l))continue;let a=ne(s,l,r,t);a.count&&(r+=1,t=a.inWordAsteriskChain);}return r},ee=(n,e,r,t)=>!!(r===\"\\\\\"||k(n,e)||A(n,e)||M(n,e)||r===\"_\"||t===\"_\"||r&&t&&m(r)&&m(t)),re=n=>{let e=g(n),r=0,t=n.length;for(let i=0;i<t;i+=1){if(n[i]!==\"_\"||e.regions[i]!==c.PROSE)continue;let o=i>0?n[i-1]:\"\",s=i<t-1?n[i+1]:\"\";ee(e,i,o,s)||(r+=1);}return r},te=n=>{let e=g(n),r=0,t=0;for(let i=0;i<n.length;i+=1)n[i]===\"*\"&&e.regions[i]===c.PROSE?t+=1:(t>=3&&(r+=Math.floor(t/3)),t=0);return t>=3&&(r+=Math.floor(t/3)),r},U=n=>I(n,\"*\"),rn=n=>n===\"\"||n===\" \"||n===\"\t\"||n===`\n`,ie=(n,e,r,t,i)=>{if(!(rn(r)&&rn(t)))return false;if(e>i.lineEnd){let o=n.indexOf(`\n`,e);i.lineEnd=o===-1?n.length:o,i.result=O(n,e,\"_\");}return i.result},oe=(n,e,r,t)=>{let i=n.text,o=e,s=false;o>0&&i[o-1]===\"\\\\\"&&(o+=1,s=true);let l=r-o;if(l<2)return false;let a=o>0?i[o-1]:\"\",u=s?\"\\\\\":a,S=r<i.length?i[r]:\"\";return m(u)&&m(S)||ie(i,o,u,S,t)||k(n,o)||A(n,o)||M(n,o)?false:Math.floor(l/2)%2===1},tn=n=>{let e=g(n),r=n.length,t={lineEnd:-1,result:false},i=false,o=0;for(;o<r;){if(n[o]!==\"_\"||e.regions[o]!==c.PROSE){o+=1;continue}let s=o,l=o+1;for(;l<r&&n[l]===\"_\"&&e.regions[l]===c.PROSE;)l+=1;o=l,oe(e,s,l,t)&&(i=!i);}return i},se=(n,e,r)=>{if(!e||b.test(e))return true;let i=n.substring(0,r).lastIndexOf(`\n`),o=i===-1?0:i+1,s=n.substring(o,r);return N.test(s)&&e.includes(`\n`)?true:O(n,r,\"*\")},sn=n=>{let e=p(n,q);if(!e)return n;let r=e[2],t=n.lastIndexOf(e[1]);return f(n,t)||h(n,t)||se(n,r,t)?n:U(n)%2===1?r.endsWith(\"*\")?`${n}*`:`${n}**`:n},le=(n,e,r)=>{if(!e||b.test(e))return true;let i=n.substring(0,r).lastIndexOf(`\n`),o=i===-1?0:i+1,s=n.substring(o,r);return N.test(s)&&e.includes(`\n`)?true:O(n,r,\"_\")},ln=n=>{let e=p(n,v);if(!e){let i=p(n,J);if(i){let o=n.lastIndexOf(i[1]);if(!(f(n,o)||h(n,o))&&tn(n))return `${n}_`}return n}let r=e[2],t=n.lastIndexOf(e[1]);return f(n,t)||h(n,t)||le(n,r,t)?n:tn(n)?`${n}__`:n},ae=(n,e)=>{let{text:r}=n;return r[e]===\"*\"&&n.regions[e]===c.PROSE&&r[e-1]!==\"*\"&&r[e+1]!==\"*\"&&r[e-1]!==\"\\\\\"&&!k(n,e)},ce=n=>{let e=g(n);for(let r=n.indexOf(\"*\");r!==-1;r=n.indexOf(\"*\",r+1)){if(!ae(e,r))continue;let t=r>0?n[r-1]:\"\",i=r<n.length-1?n[r+1]:\"\",o=!t||C(t),s=!i||C(i);if(!(o&&s)&&!(t&&i&&m(t)&&m(i))&&!s)return r}return -1},an=n=>{if(!p(n,Q))return n;let r=ce(n);if(r===-1||f(n,r)||h(n,r))return n;let t=n.substring(r+1);return !t||b.test(t)?n:on(n)%2===1?`${n}*`:n},cn=n=>{let e=g(n);for(let r=n.indexOf(\"_\");r!==-1;r=n.indexOf(\"_\",r+1))if(e.regions[r]===c.PROSE&&n[r-1]!==\"_\"&&n[r+1]!==\"_\"&&n[r-1]!==\"\\\\\"&&!k(e,r)&&!A(e,r)){let t=r>0?n[r-1]:\"\",i=r<n.length-1?n[r+1]:\"\";if(t&&i&&m(t)&&m(i))continue;return r}return -1},ue=n=>{let e=n.length;for(;e>0&&n[e-1]===`\n`;)e-=1;if(e<n.length){let r=n.slice(0,e),t=n.slice(e);return `${r}_${t}`}return `${n}_`},fe=n=>{if(!n.endsWith(\"**\"))return null;let e=n.slice(0,-2);if(U(e)%2!==1)return null;let t=e.indexOf(\"**\"),i=cn(e);return t!==-1&&i!==-1&&t<i?`${e}_**`:null},un=n=>{if(!p(n,Z))return n;let r=cn(n);if(r===-1)return n;let t=n.substring(r+1);if(!t||b.test(t)||f(n,r)||h(n,r))return n;if(re(n)%2===1){let o=fe(n);return o!==null?o:ue(n)}return n},ge=n=>{let e=U(n),r=on(n);return e%2===0&&r%2===0},de=(n,e,r)=>!e||b.test(e)||f(n,r)||h(n,r)?true:O(n,r,\"*\"),fn=n=>{if(nn.test(n))return n;let e=p(n,z);if(!e)return n;let r=e[2],t=n.lastIndexOf(e[1]);return de(n,r,t)?n:te(n)%2===1?ge(n)?n:`${n}***`:n};var me=/<[a-zA-Z/][^>]*$/,he=/[a-zA-Z/]/,pe=n=>n.includes(\"$\")||n.includes(\"\\\\(\")||n.includes(\"\\\\[\"),be=(n,e)=>{let r=n[e+1];return r!==void 0&&he.test(r)},gn=n=>{let e=n.match(me);if(!e||e.index===void 0)return n;let r=pe(n);for(let t=e.index;t<n.length;t+=1)if(!(n[t]!==\"<\"||!be(n,t))&&!f(n,t)&&!(r&&$(n,t)))return n.substring(0,t).trimEnd();return n};var dn=n=>{let e=g(n);if(e.openFence)return n;let r=e.openSpan;if(!r)return n;let t=n.slice(r.start+r.runLength);if(!t||b.test(t))return n;let i=0,o=n.length-1;for(;o>=0&&n[o]===\"`\";)i+=1,o-=1;return i>=r.runLength?n:n+\"`\".repeat(r.runLength-i)};var ke=n=>I(n,\"$\"),Ie=n=>{let e=g(n),r=0;for(let t=0;t<n.length;t+=1){if(n[t]===\"\\\\\"){t+=1;continue}e.regions[t]===c.PROSE&&n[t]===\"$\"&&(t+1<n.length&&n[t+1]===\"$\"?t+=1:r+=1);}return r},Ae=n=>{if(n.endsWith(\"$\")&&!n.endsWith(\"$$\"))return `${n}$`;let e=n.indexOf(\"$$\");return e!==-1&&n.indexOf(`\n`,e)!==-1&&!n.endsWith(`\n`)?`${n}\n$$`:`${n}$$`},mn=n=>ke(n)%2===0?n:Ae(n),hn=n=>Ie(n)%2===1?`${n}$`:n;var E=\"streamdown:incomplete-image\",Ee=(n,e,r)=>{if(n.substring(e+2).includes(\")\"))return null;let i=en(n,e);if(i===-1||f(n,i))return null;let o=i>0&&n[i-1]===\"!\",s=o?i-1:i,l=n.substring(0,s),a=n.substring(i+1,e);return o?`${l}![${a}](${E})`:r===\"text-only\"?`${l}${a}`:`${l}[${a}](streamdown:incomplete-link)`},pn=(n,e)=>{for(let r=0;r<e;r++)if(n[r]===\"[\"&&!f(n,r)){if(r>0&&n[r-1]===\"!\")continue;let t=y(n,r);if(t===-1)return r;if(t+1<n.length&&n[t+1]===\"(\"){let i=n.indexOf(\")\",t+2);i!==-1&&(r=i);}}return e},Se=(n,e,r)=>{let t=e>0&&n[e-1]===\"!\",i=t?e-1:e;if(!n.substring(e+1).includes(\"]\")){let l=n.substring(0,i);if(t){let a=n.substring(e+1);return `${l}![${a}](${E})`}if(r===\"text-only\"){let a=pn(n,e);return n.substring(0,a)+n.substring(a+1)}return `${n}](streamdown:incomplete-link)`}if(y(n,e)===-1){let l=n.substring(0,i);if(t){let a=n.substring(e+1);return `${l}![${a}](${E})`}if(r===\"text-only\"){let a=pn(n,e);return n.substring(0,a)+n.substring(a+1)}return `${n}](streamdown:incomplete-link)`}return null},Oe=(n,e)=>{let r=n.lastIndexOf(\"](\");if(r!==-1&&!f(n,r)){let t=Ee(n,r,e);if(t!==null)return t}for(let t=n.lastIndexOf(\"[\");t!==-1;t=t===0?-1:n.lastIndexOf(\"[\",t-1))if(!f(n,t)){let i=Se(n,t,e);if(i!==null)return i}return n},Te=32,D=(n,e=\"protocol\")=>{let r=n;for(let t=0;t<Te;t+=1){let i=Oe(r,e);if(i.length>=r.length)return i;r=i;}return r};var Me=/^-{1,2}$/,Ce=/^[\\s]*-{1,2}[\\s]+$/,Le=/^={1,2}$/,Pe=/^[\\s]*={1,2}[\\s]+$/,bn=n=>{if(!n||typeof n!=\"string\")return n;let e=n.lastIndexOf(`\n`);if(e===-1)return n;let r=n.substring(e+1),t=n.substring(0,e),i=r.trim();if(Me.test(i)&&!r.match(Ce)){let s=t.split(`\n`).at(-1);if(s&&s.trim().length>0)return `${n}\\u200B`}if(Le.test(i)&&!r.match(Pe)){let s=t.split(`\n`).at(-1);if(s&&s.trim().length>0)return `${n}\\u200B`}return n};var _e=/([\\p{L}\\p{N}_])~(?!~)(?=[\\p{L}\\p{N}_])/gu,kn=n=>!n||typeof n!=\"string\"||!n.includes(\"~\")?n:n.replace(_e,(e,r,t)=>{let i=t+r.length;return f(n,i)?e:`${r}\\\\~`});var In=n=>I(n,\"~\"),An=n=>{let e=p(n,j);if(e){let r=e[2];if(!r||b.test(r))return n;let t=n.lastIndexOf(e[1]);if(f(n,t)||h(n,t))return n;if(In(n)%2===1)return `${n}~~`}else {let r=p(n,V);if(r){let t=n.lastIndexOf(r[0].slice(0,2));if(f(n,t)||h(n,t))return n;if(In(n)%2===1)return `${n}~`}}return n};var B=n=>n!==false,Re=n=>n===true,d={SINGLE_TILDE:0,COMPARISON_OPERATORS:5,HTML_TAGS:10,SETEXT_HEADINGS:15,LINKS:20,BOLD_ITALIC:30,BOLD:35,ITALIC_DOUBLE_UNDERSCORE:40,ITALIC_SINGLE_ASTERISK:41,ITALIC_SINGLE_UNDERSCORE:42,INLINE_CODE:50,STRIKETHROUGH:60,KATEX:70,INLINE_KATEX:75,DEFAULT:100},Ne=[{handler:{name:\"singleTilde\",handle:kn,priority:d.SINGLE_TILDE},optionKey:\"singleTilde\"},{handler:{name:\"comparisonOperators\",handle:Y,priority:d.COMPARISON_OPERATORS},optionKey:\"comparisonOperators\"},{handler:{name:\"htmlTags\",handle:gn,priority:d.HTML_TAGS},optionKey:\"htmlTags\"},{handler:{name:\"setextHeadings\",handle:bn,priority:d.SETEXT_HEADINGS},optionKey:\"setextHeadings\"},{handler:{name:\"links\",handle:D,priority:d.LINKS},optionKey:\"links\",earlyReturn:n=>n.endsWith(\"](streamdown:incomplete-link)\")||n.endsWith(`](${E})`)},{handler:{name:\"boldItalic\",handle:fn,priority:d.BOLD_ITALIC},optionKey:\"boldItalic\"},{handler:{name:\"bold\",handle:sn,priority:d.BOLD},optionKey:\"bold\"},{handler:{name:\"italicDoubleUnderscore\",handle:ln,priority:d.ITALIC_DOUBLE_UNDERSCORE},optionKey:\"italic\"},{handler:{name:\"italicSingleAsterisk\",handle:an,priority:d.ITALIC_SINGLE_ASTERISK},optionKey:\"italic\"},{handler:{name:\"italicSingleUnderscore\",handle:un,priority:d.ITALIC_SINGLE_UNDERSCORE},optionKey:\"italic\"},{handler:{name:\"inlineCode\",handle:dn,priority:d.INLINE_CODE},optionKey:\"inlineCode\"},{handler:{name:\"strikethrough\",handle:An,priority:d.STRIKETHROUGH},optionKey:\"strikethrough\"},{handler:{name:\"katex\",handle:mn,priority:d.KATEX},optionKey:\"katex\"},{handler:{name:\"inlineKatex\",handle:hn,priority:d.INLINE_KATEX},optionKey:\"inlineKatex\"}],ye=n=>{var r;let e=(r=n==null?void 0:n.linkMode)!=null?r:\"protocol\";return Ne.filter(({handler:t,optionKey:i})=>t.name===\"links\"?B(n==null?void 0:n.links)||B(n==null?void 0:n.images):t.name===\"inlineKatex\"?Re(n==null?void 0:n.inlineKatex):B(n==null?void 0:n[i])).map(({handler:t,earlyReturn:i})=>t.name===\"links\"?{handler:P(L({},t),{handle:o=>D(o,e)}),earlyReturn:e===\"protocol\"?i:void 0}:{handler:t,earlyReturn:i})},$e=(n,e)=>{var s;if(!n||typeof n!=\"string\")return n;let r=n.endsWith(\" \")&&!n.endsWith(\" \")?n.slice(0,-1):n,t=ye(e),i=((s=e==null?void 0:e.handlers)!=null?s:[]).map(l=>{var a;return {handler:P(L({},l),{priority:(a=l.priority)!=null?a:d.DEFAULT}),earlyReturn:void 0}}),o=[...t,...i].sort((l,a)=>{var u,S;return ((u=l.handler.priority)!=null?u:0)-((S=a.handler.priority)!=null?S:0)});try{for(let{handler:l,earlyReturn:a}of o)if(r=l.handle(r),a!=null&&a(r))return r;return r.endsWith(\" \")&&!r.endsWith(\" \")?r.slice(0,-1):r}finally{K();}},Or=$e;export{E as INCOMPLETE_IMAGE_PLACEHOLDER,Or as default,jn as isWithinCodeBlock,Jn as isWithinLinkOrImageUrl,$ as isWithinMathBlock,m as isWordChar};","/**\n * marked v18.1.1 - a markdown parser\n * Copyright (c) 2018-2026, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction B(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var y=B();function V(a){y=a}var M={exec:()=>null};function D(a){let e=[];return t=>{let n=Math.max(0,Math.min(3,t-1)),i=e[n];return i||(i=a(n),e[n]=i),i}}function h(a,e=\"\"){let t=typeof a==\"string\"?a:a.source,n={replace:(i,r)=>{let o=typeof r==\"string\"?r:r.source;return o=o.replace(x.caret,\"$1\"),t=t.replace(i,o),n},getRegex:()=>new RegExp(t,e)};return n}var ze=((a=\"\")=>{try{return!!new RegExp(\"(?<=1)(?<!1)\"+a)}catch{return!1}})(),x={codeRemoveIndent:/^(?: {0,3}\\t| {1,4})/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \\t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,leadingSpaceTab:/^[ \\t]+/,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,numericCharacterReference:/&#(?:(\\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/,numericCharacterReferenceOrAmpersand:/&#(?:(\\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:a=>new RegExp(`^( {0,3}${a})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:D(a=>new RegExp(`^ {0,${a}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`)),hrRegex:D(a=>new RegExp(`^ {0,${a}}((?:-[ \t]*){3,}|(?:_[ \t]*){3,}|(?:\\\\*[ \t]*){3,})(?:\\\\n+|$)`)),fencesBeginRegex:D(a=>new RegExp(`^ {0,${a}}(?:\\`\\`\\`|~~~)`)),headingBeginRegex:D(a=>new RegExp(`^ {0,${a}}#`)),htmlBeginRegex:D(a=>new RegExp(`^ {0,${a}}(?:</?(?:${Q})(?: +|$|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\\\s>]|$)|!--)|<\\\\?|<![A-Za-z]|<!\\\\[CDATA\\\\[)`,\"i\")),blockquoteBeginRegex:D(a=>new RegExp(`^ {0,${a}}>`))},Ee=/^(?:[ \\t]*(?:\\n|$))+/,Me=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Ce=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,N=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Ie=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,Y=/ {0,3}(?:[*+-]|\\d{1,9}[.)])/,fe=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |fences|blockquote|heading|hr|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,me=h(fe).replace(/bull/g,Y).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Be=h(fe).replace(/bull/g,Y).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),ee=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \\t]+\\n)[^\\n]+)*)/,De=/^[^\\n]+/,te=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,qe=h(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",te).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Ze=h(/^(bull)([ \\t][^\\n]*?)?(?:\\n|$)/).replace(/bull/g,Y).getRegex(),Q=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",ne=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,ve=h(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n*|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>[^\\\\n]*\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>[^\\\\n]*\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>[^\\\\n]*\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!(?:script|pre|style|textarea)(?![a-z0-9-]))([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</[a-z][a-z0-9-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",ne).replace(\"tag\",Q).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),xe=a=>h(ee).replace(\"hr\",N).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",a).replace(\"html\",\" {0,3}(?:</?(?:tag)(?: +|\\\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\\\s>]|$)|!--)|<\\\\?|<![A-Za-z]|<!\\\\[CDATA\\\\[)\").replace(\"tag\",Q).getRegex(),He=xe(/ {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]/),Ge=xe(/ {0,3}(?:[*+-]|\\d{1,9}[.)])(?:[ \\t]|\\n|$)/),Ne=h(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",Ge).getRegex(),re={blockquote:Ne,code:Me,def:qe,fences:Ce,heading:Ie,hr:N,html:ve,lheading:me,list:Ze,newline:Ee,paragraph:He,table:M,text:De},de=h(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",N).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\" {0,3}(?:</?(?:tag)(?: +|\\\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\\\s>]|$)|!--)|<\\\\?|<![A-Za-z]|<!\\\\[CDATA\\\\[)\").replace(\"tag\",Q).getRegex(),Qe={...re,lheading:Be,table:de,paragraph:h(ee).replace(\"hr\",N).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",de).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*(?:\\\\n|$))|~~~)[^\\\\n]*(?:\\\\n|$)\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]+[^ \\\\t\\\\n]\").replace(\"html\",\" {0,3}(?:</?(?:tag)(?: +|\\\\n|/?>)|<(?:(?:script|pre|style|textarea)(?:[\\\\s>]|$)|!--)|<\\\\?|<![A-Za-z]|<!\\\\[CDATA\\\\[)\").replace(\"tag\",Q).getRegex()},je={...re,html:h(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",ne).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:M,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:h(ee).replace(\"hr\",N).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",me).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Fe=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ue=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,be=/^( {2,}|\\\\)\\n(?!\\s*$)[ \\t]*/,Ke=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,S=/[\\p{P}\\p{S}]/u,q=/[\\s\\p{P}\\p{S}]/u,j=/[^\\s\\p{P}\\p{S}]/u,Xe=h(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,q).getRegex(),We=/[\\p{Pi}\\p{Ps}\"']/u,Re=/(?!~)[\\p{P}\\p{S}]/u,Ve=/(?!~)[\\s\\p{P}\\p{S}]/u,Je=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Ye=h(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",ze?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),Te=/^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/,et=h(Te,\"u\").replace(/punct/g,S).getRegex(),tt=h(Te,\"u\").replace(/punct/g,Re).getRegex(),nt=/^(?:\\*+(?:((?!\\*)(?!openQuote)punct)|([^\\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\\s_]))?/,rt=h(nt,\"u\").replace(/openQuote/g,We).replace(/punct/g,S).getRegex(),Oe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",st=h(Oe,\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),it=h(Oe,\"gu\").replace(/notPunctSpace/g,Je).replace(/punctSpace/g,Ve).replace(/punct/g,Re).getRegex(),ot=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)[\\\\s](\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|(?:(?!\\\\*)punct|notPunctSpace)(\\\\*+)(?!\\\\*)(?=notPunctSpace)\",at=h(ot,\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),lt=h(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),ut=\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\\\s](_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)\",pt=h(ut,\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),ct=h(/^~~?(?:((?!~)punct)|[^\\s~])/,\"u\").replace(/punct/g,S).getRegex(),ht=\"^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)\",dt=h(ht,\"gu\").replace(/notPunctSpace/g,j).replace(/punctSpace/g,q).replace(/punct/g,S).getRegex(),kt=h(/\\\\(punct)/,\"gu\").replace(/punct/g,S).getRegex(),gt=h(/(`+)(?:[^`]|[^`][\\s\\S]*?[^`])\\1(?!`)|`+|\\\\(punct)/,\"gu\").replace(/punct/g,S).getRegex(),ft=h(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),mt=h(ne).replace(\"(?:-->|$)\",\"-->\").getRegex(),xt=h(\"^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",mt).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),we=/\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]/,K=h(/(?:\\[(?:brackets|\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/).replace(\"brackets\",we).getRegex(),bt=h(/^!?\\[(label)\\]\\([ \\t\\n]*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?[ \\t\\n]*\\)/).replace(\"label\",K).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]+|(?=\\))/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),Rt=h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",K).replace(\"ref\",te).getRegex(),Tt=h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",te).getRegex(),ke=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\]){1,999}/,Ot=h(/(?:[^\\[\\]\\\\`]*(?:\\[(?:brackets|\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\]))){0,999}?[^\\[\\]\\\\`]*?/).replace(\"brackets\",we).getRegex(),wt=h(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",Ot).replace(\"ref\",ke).getRegex()).replace(\"nolink\",h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",ke).getRegex()).getRegex(),ge=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Pt=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\\w-])/,yt=h(/(?:mailto:email|xmpp:email(?:\\/[A-Za-z0-9@.]+)?)/).replace(/email/g,Pt).getRegex(),se={_backpedal:M,anyPunctuation:kt,anyPunctuationOutsideCode:gt,autolink:ft,blockSkip:Ye,br:be,code:Ue,del:M,delLDelim:M,delRDelim:M,emStrongLDelim:et,emStrongRDelimAst:st,emStrongRDelimUnd:lt,escape:Fe,link:bt,nolink:Tt,punctuation:Xe,reflink:Rt,reflinkSearch:wt,tag:xt,text:Ke,url:M},St={...se,emStrongLDelim:rt,emStrongRDelimAst:at,emStrongRDelimUnd:pt,link:h(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",K).getRegex(),reflink:h(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",K).getRegex()},J={...se,emStrongRDelimAst:it,emStrongLDelim:tt,delLDelim:ct,delRDelim:dt,url:h(/^emailProtocol|^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"emailProtocol\",yt).replace(\"protocol\",ge).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:h(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))))/).replace(\"protocol\",ge).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},_t={...J,br:h(be).replace(\"{2,}\",\"*\").getRegex(),text:h(J.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},F={normal:re,gfm:Qe,pedantic:je},Z={normal:se,gfm:J,breaks:_t,pedantic:St};var $t={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},Pe=a=>$t[a];function w(a,e){if(e){if(x.escapeTest.test(a))return a.replace(x.escapeReplace,Pe)}else if(x.escapeTestNoEncode.test(a))return a.replace(x.escapeReplaceNoEncode,Pe);return a}function ye(a){return x.numericCharacterReference.test(a)?a.replace(x.numericCharacterReferenceOrAmpersand,(e,t,n)=>{if(t===void 0&&n===void 0)return\"&amp;\";let i=t===void 0?Number.parseInt(n,16):Number.parseInt(t,10);return i===0||i>1114111||i>=55296&&i<=57343?\"\\uFFFD\":i===38?\"&amp;\":String.fromCodePoint(i)}):a}function ie(a){try{a=encodeURI(a).replace(x.percentDecode,\"%\")}catch{return null}return a}function oe(a,e){let t=a.replace(x.findPipe,(r,o,s)=>{let l=!1,u=o;for(;--u>=0&&s[u]===\"\\\\\";)l=!l;return l?\"|\":\" |\"}),n=t.split(x.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;i<n.length;i++)n[i]=n[i].trim().replace(x.slashPipe,\"|\");return n}function A(a,e,t){let n=a.length;if(n===0)return\"\";let i=0;for(;i<n;){let r=a.charAt(n-i-1);if(r===e&&!t)i++;else if(r!==e&&t)i++;else break}return a.slice(0,n-i)}function ae(a){let e=a.split(`\n`),t=e.length-1;for(;t>=0&&x.blankLine.test(e[t]);)t--;return e.length-t<=2?a:e.slice(0,t+1).join(`\n`)}function v(a){return a.trim().toLowerCase().toUpperCase().toLowerCase()}function le(a,e){if(a.indexOf(e[0])===-1&&a.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<a.length;n++)if(a[n]===\"\\\\\")n++;else if(a[n]===e[0])t++;else if(a[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function X(a,e=0){let t=e,n=\"\";for(let i of a)if(i===\"\t\"){let r=4-t%4;n+=\" \".repeat(r),t+=r}else n+=i,t++;return n}function Se(a,e,t,n,i){let r=e.href,o=e.title||null,s=a[1].replace(i.other.outputLinkReplace,\"$1\"),l=a[0].charAt(0)===\"!\",u=n.state.inLink,c=n.state.linkEmitted,p=n.state.inRawBlock;n.state.inLink=!0,n.state.linkEmitted=!1;let d=n.inlineTokens(s),g=n.state.linkEmitted;if(n.state.linkEmitted=c,n.state.inLink=u,!l){if(g){n.state.inRawBlock=p;return}n.state.linkEmitted=!0}return{type:l?\"image\":\"link\",raw:t,href:r,title:o,text:s,tokens:d}}function Lt(a,e,t){let n=a.match(t.other.indentCodeCompensation);if(n===null)return e;let i=n[1];return e.split(`\n`).map(r=>{let o=r.match(t.other.beginningSpace);if(o===null)return r;let[s]=o;return r.slice(Math.min(s.length,i.length))}).join(`\n`)}function _e(a,e,t,n){if(!e.includes(\"<\"))return!1;for(let i=0;i<e.length;i++){if(e[i]===\"\\\\\"){i++;continue}if(e[i]===\"`\"){let s=n.inline.code.exec(e.slice(i));if(s){i+=s[0].length-1;continue}}if(e[i]!==\"<\")continue;let r=a.slice(t+i),o=n.inline.tag.exec(r)||n.inline.autolink.exec(r);if(o){if(o[0].length>e.length-i)return!0;i+=o[0].length-1}}return!1}var _=class{options;rules;lexer;constructor(e){this.options=e||y}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:ae(t[0]),i=n.replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:n,codeBlockStyle:\"indented\",text:i}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],i=Lt(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:i}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let i=A(n,\"#\");(this.options.pedantic||!i||this.rules.other.endingSpaceTabChar.test(i))&&(n=i.trim())}return{type:\"heading\",raw:A(t[0],`\n`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:A(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=A(t[0],`\n`).split(`\n`),i=\"\",r=\"\",o=[];for(;n.length>0;){let s=!1,l=[],u;for(u=0;u<n.length;u++)if(this.rules.other.blockquoteStart.test(n[u]))l.push(n[u]),s=!0;else if(!s)l.push(n[u]);else break;n=n.slice(u);let c=l.join(`\n`),p=c.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");i=i?`${i}\n${c}`:c,r=r?`${r}\n${p}`:p;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(p,o,!0),this.lexer.state.top=d,n.length===0)break;let g=o.at(-1);if(g?.type===\"code\"||g?.type===\"heading\"||g?.type===\"hr\"||g?.type===\"html\")break;if(g?.type===\"blockquote\"){let k=g,P=n.join(`\n`),R=k.raw+`\n`+P.replace(this.rules.other.blockquoteSetextReplace2,\"\"),m=this.blockquote(R);o[o.length-1]=m;let E=R.substring(m.raw.length).replace(/^\\n/,\"\"),b=E?E.split(`\n`).length:0,H=b?n.slice(0,-b):n;H.length>0&&(i=`${i}\n${H.join(`\n`)}`),r=r.substring(0,r.length-k.text.length)+m.text;break}else if(g?.type===\"list\"){let k=g,P=k.raw+`\n`+n.join(`\n`),R=this.list(P);o[o.length-1]=R,i=i.substring(0,i.length-g.raw.length)+R.raw,r=r.substring(0,r.length-k.raw.length)+R.raw,n=P.substring(o.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:i,tokens:o,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=e,i=()=>n.length-e.length,r=t[1].trim(),o=r.length>1,s={type:\"list\",raw:\"\",ordered:o,start:o?+r.slice(0,-1):\"\",loose:!1,items:[]};r=o?`\\\\d{1,9}\\\\${r.slice(-1)}`:`\\\\${r}`,this.options.pedantic&&(r=o?r:\"[*+-]\");let l=this.rules.other.listItemRegex(r),u=!1;for(;e;){let p=!1,d=\"\";if(!(t=l.exec(e))||this.rules.block.hr.test(e))break;let g=i();e=e.substring(t[0].length);let k=t[2].split(`\n`,1)[0],P=t[1].length,R=this.options.pedantic?X(k,P):k.replace(this.rules.other.leadingSpaceTab,W=>X(W,P)),m=e.split(`\n`,1)[0],E=!R.trim(),b=0;if(this.options.pedantic?(b=2,d=R.trimStart()):E?b=P+1:(b=R.search(this.rules.other.nonSpaceChar),b=b>4?1:b,d=R.slice(b),b+=P),E&&this.rules.other.blankLine.test(m)&&(e=e.substring(m.length+1),p=!0),!p){let W=this.rules.other.nextBulletRegex(b),ue=this.rules.other.hrRegex(b),pe=this.rules.other.fencesBeginRegex(b),ce=this.rules.other.headingBeginRegex(b),$e=this.rules.other.htmlBeginRegex(b),Le=this.rules.other.blockquoteBeginRegex(b);for(;e;){let he=e.split(`\n`,1)[0],G;if(m=he,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting,\" \"),G=m):G=m.replace(this.rules.other.leadingSpaceTab,Ae=>X(Ae)),pe.test(m)||ce.test(m)||$e.test(m)||Le.test(m)||W.test(m)||ue.test(m))break;if(G.search(this.rules.other.nonSpaceChar)>=b||!m.trim())d+=`\n`+G.slice(b);else{if(E||R.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||pe.test(R)||ce.test(R)||ue.test(R))break;d+=`\n`+m}E=!m.trim(),e=e.substring(he.length+1),R=G.slice(b)}}let H=n.slice(g,i());s.loose||(u?s.loose=!0:this.rules.other.doubleBlankLine.test(H)&&(u=!0)),s.items.push({type:\"list_item\",raw:H,task:!!this.options.gfm&&this.rules.other.listIsTask.test(d),loose:!1,text:d,tokens:[]})}let c=s.items.at(-1);if(c)c.raw=c.raw.trimEnd(),c.text=c.text.trimEnd();else return;s.raw=n.slice(0,i()).trimEnd();for(let p of s.items)if(this.lexer.state.top=!1,p.tokens=this.lexer.blockTokens(p.text,[]),!s.loose){let d=p.tokens.filter(k=>k.type===\"space\"),g=d.length>0&&d.some(k=>this.rules.other.anyLine.test(k.raw));s.loose=g}for(let p of s.items){let d=p.tokens[0];if(p.task&&(d?.type===\"text\"||d?.type===\"paragraph\")){p.text=p.text.replace(this.rules.other.listReplaceTask,\"\"),d.raw=d.raw.replace(this.rules.other.listReplaceTask,\"\"),d.text=d.text.replace(this.rules.other.listReplaceTask,\"\");for(let k=this.lexer.inlineQueue.length-1;k>=0;k--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[k].src)){this.lexer.inlineQueue[k].src=this.lexer.inlineQueue[k].src.replace(this.rules.other.listReplaceTask,\"\");break}let g=this.rules.other.listTaskCheckbox.exec(p.raw);if(g){let k={type:\"checkbox\",raw:g[0]+\" \",checked:g[0]!==\"[ ]\"};p.checked=k.checked,s.loose?p.tokens[0]&&[\"paragraph\",\"text\"].includes(p.tokens[0].type)&&\"tokens\"in p.tokens[0]&&p.tokens[0].tokens?(p.tokens[0].raw=k.raw+p.tokens[0].raw,p.tokens[0].text=k.raw+p.tokens[0].text,p.tokens[0].tokens.unshift(k)):p.tokens.unshift({type:\"paragraph\",raw:k.raw,text:k.raw,tokens:[k]}):p.tokens.unshift(k)}}else p.task&&(p.task=!1)}if(s.loose)for(let p of s.items){p.loose=!0;for(let d of p.tokens)d.type===\"text\"&&(d.type=\"paragraph\")}return s}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=ae(t[0]);return{type:\"html\",block:!0,raw:n,pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){if(!this.rules.other.startAngleBracket.test(t[2])&&le(t[2],\"()\")!==-1)return;let n=v(t[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:A(t[0],`\n`),href:i,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=oe(t[1]),i=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],o={type:\"table\",raw:A(t[0],`\n`),header:[],align:[],rows:[]};if(n.length===i.length){for(let s of i)this.rules.other.tableAlignRight.test(s)?o.align.push(\"right\"):this.rules.other.tableAlignCenter.test(s)?o.align.push(\"center\"):this.rules.other.tableAlignLeft.test(s)?o.align.push(\"left\"):o.align.push(null);for(let s=0;s<n.length;s++)o.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:o.align[s]});for(let s of r)o.rows.push(oe(s,o.header.length).map((l,u)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:o.align[u]})));return o}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:\"heading\",raw:A(t[0],`\n`),depth:t[2].charAt(0)===\"=\"?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){if(this.lexer.state.linkParenPossible===!1)return;let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)===\"!\"?2:1;if(!this.options.pedantic&&_e(e,t[1],n,this.rules))return;let i=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(i)){if(!this.rules.other.endAngleBracket.test(i))return;let s=A(i.slice(0,-1),\"\\\\\");if((i.length-s.length)%2===0)return}else{let s=le(t[2],\"()\");if(s===-2)return;if(s>-1){let u=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,u).trim(),t[3]=\"\"}}let r=t[2],o=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],o=s[3])}else o=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(i)?r=r.slice(1):r=r.slice(1,-1)),Se(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:o&&o.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=n[0].charAt(0)===\"!\"?2:1;if(!this.options.pedantic&&_e(e,n[1],i,this.rules))return;let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),o=t[v(r)];if(!o){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return Se(n,o,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let i=this.rules.inline.emStrongLDelim.exec(e);if(!i||!i[1]&&!i[2]&&!i[3]&&!i[4]||i[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(i[1]||i[3]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let o=[...i[0]].length-1,s,l,u=o,c=0,p=i[0][0],d=n===p,g=p===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(g.lastIndex=0,t=t.slice(-1*e.length+o);(i=g.exec(t))!==null;){if(s=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!s)continue;if(l=[...s].length,i[3]||i[4]){u+=l;continue}else if(i[5]||i[6]){if(o%3&&!((o+l)%3)){c+=l;continue}if(d)break}if(u-=l,u>0)continue;l=Math.min(l,l+u+c);let k=[...i[0]][0].length,P=e.slice(0,o+i.index+k+l);if(Math.min(o,l)%2){let m=P.slice(1,-1);return{type:\"em\",raw:P,text:m,tokens:this.lexer.inlineTokens(m)}}let R=P.slice(2,-2);return{type:\"strong\",raw:P,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),i=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return i&&r&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e,t,n=\"\"){let i=this.rules.inline.delLDelim.exec(e);if(!i)return;if(!(i[1]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let o=[...i[0]].length-1,s,l,u=o,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+o);(i=c.exec(t))!==null;){if(s=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!s||(l=[...s].length,l!==o))continue;if(i[3]||i[4]){u+=l;continue}if(u-=l,u>0)continue;l=Math.min(l,l+u);let p=[...i[0]][0].length,d=e.slice(0,o+i.index+p+l),g=d.slice(o,-o);return{type:\"del\",raw:d,text:g,tokens:this.lexer.inlineTokens(g)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,i;return t[2]===\"@\"?(n=t[1],i=\"mailto:\"+n):(n=t[1],i=n),{type:\"link\",raw:t[0],text:n,href:i,autolink:!0,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,i;if(t[2]===\"@\")n=t[0],i=\"mailto:\"+n;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(r!==t[0]);n=t[0],t[1]===\"www.\"?i=\"http://\"+t[0]:i=t[0]}return{type:\"link\",raw:t[0],text:n,href:i,autolink:!0,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:n?t[0]:ye(t[0]),escaped:n}}}};var T=class a{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||y,this.options.tokenizer=this.options.tokenizer||new _,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,linkParenPossible:!0,top:!0};let t={other:x,block:F.normal,inline:Z.normal};this.options.pedantic?(t.block=F.pedantic,t.inline=Z.pedantic):this.options.gfm&&(t.block=F.gfm,this.options.breaks?t.inline=Z.breaks:t.inline=Z.gfm),this.tokenizer.rules=t}static get rules(){return{block:F,inline:Z}}static lex(e,t){return new a(t).lex(e)}static lexInline(e,t){return new a(t).inlineTokens(e)}lex(e){e=e.replace(x.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(x.tabCharGlobal,\" \").replace(x.spaceLine,\"\"));let i=1/0;for(;e;){if(e.length<i)i=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let o=e;if(this.options.extensions?.startBlock){let s=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(c=>{u=c.call({lexer:this},l),typeof u==\"number\"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(o=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(o))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=o.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes(\"[\"))return!1;let t=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(n[0])&&e.charAt(n.index-1)!==\"!\")return!0;for(let n of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let i=n[0],r=i.lastIndexOf(\"[\");if(!(i.charAt(0)===\"!\"||!Object.hasOwn(this.tokens.links,v(i.slice(r+1,-1))))&&!(r>1&&this.linkInText(i.slice(1,r-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=this.state.linkParenPossible;this.state.linkParenPossible=n&&e.includes(\")\");try{return this.#e(e,t)}finally{this.state.linkParenPossible=n}}#e(e,t){let n=e;if(this.tokens.links&&e.includes(\"[\")){let s=this.tokenizer.rules.inline.reflinkSearch,l=u=>{let c=u.lastIndexOf(\"[\");if(!Object.hasOwn(this.tokens.links,v(u.slice(c+1,-1))))return u;if(c>1&&u.charAt(0)!==\"!\"){let p=u.slice(1,c-1);if(this.linkInText(p))return\"[\"+p.replace(s,l)+\"][\"+\"a\".repeat(u.length-c-2)+\"]\"}return\"[\"+\"a\".repeat(u.length-2)+\"]\"};n=n.replace(s,l)}n=n.replace(this.tokenizer.rules.inline.anyPunctuationOutsideCode,(s,l,u)=>u?\"+\".repeat(s.length):l?l+s.slice(l.length,-l.length).replace(/`/g,\"+\")+l:s),n=n.replace(this.tokenizer.rules.inline.blockSkip,(s,l,u)=>{let c=u?u.length:0;return s.slice(0,c)+\"[\"+\"a\".repeat(s.length-c-2)+\"]\"}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let i=!1,r=\"\",o=1/0;for(;e;){if(e.length<o)o=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}i||(r=\"\"),i=!1;let s;if(this.options.extensions?.inline?.some(u=>(s=u.call({lexer:this},e,t))?(e=e.substring(s.raw.length),t.push(s),!0):!1))continue;if(s=this.tokenizer.escape(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.tag(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.link(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(s.raw.length);let u=t.at(-1);s.type===\"text\"&&u?.type===\"text\"?(u.raw+=s.raw,u.text+=s.text):t.push(s);continue}if(s=this.tokenizer.emStrong(e,n,r)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.codespan(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.br(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.del(e,n,r)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.autolink(e)){e=e.substring(s.raw.length),t.push(s);continue}if(!this.state.inLink&&(s=this.tokenizer.url(e))){e=e.substring(s.raw.length),t.push(s);continue}let l=e;if(this.options.extensions?.startInline){let u=1/0,c=e.slice(1),p;this.options.extensions.startInline.forEach(d=>{p=d.call({lexer:this},c),typeof p==\"number\"&&p>=0&&(u=Math.min(u,p))}),u<1/0&&u>=0&&(l=e.substring(0,u+1))}if(s=this.tokenizer.inlineText(l)){e=e.substring(s.raw.length),s.raw.slice(-1)!==\"_\"&&(r=s.raw.slice(-1)),i=!0;let u=t.at(-1);u?.type===\"text\"?(u.raw+=s.raw,u.text+=s.text):t.push(s);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=\"Infinite loop on byte: \"+e;if(this.options.silent)console.error(t);else throw new Error(t)}};var $=class{options;parser;constructor(e){this.options=e||y}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let i=(t||\"\").match(x.notSpaceStart)?.[0],r=e?e.replace(x.endingNewline,\"\")+`\n`:\"\";return i?'<pre><code class=\"language-'+w(i)+'\">'+(n?r:w(r,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?r:w(r,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,i=\"\";for(let s=0;s<e.items.length;s++){let l=e.items[s];i+=this.listitem(l)}let r=t?\"ol\":\"ul\",o=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+r+o+`>\n`+i+\"</\"+r+`>\n`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let r=0;r<e.header.length;r++)n+=this.tablecell(e.header[r]);t+=this.tablerow({text:n});let i=\"\";for(let r=0;r<e.rows.length;r++){let o=e.rows[r];n=\"\";for(let s=0;s<o.length;s++)n+=this.tablecell(o[s]);i+=this.tablerow({text:n})}return i&&(i=`<tbody>${i}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+i+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:i,autolink:r}){let o=r?w(n,!0):this.parser.parseInline(i),s=ie(e);if(s===null)return o;e=w(s,r);let l='<a href=\"'+e+'\"';return t&&(l+=' title=\"'+w(t)+'\"'),l+=\">\"+o+\"</a>\",l}image({href:e,title:t,text:n,tokens:i}){i&&(n=this.parser.parseInline(i,this.parser.textRenderer));let r=ie(e);if(r===null)return w(n);e=r;let o=`<img src=\"${w(e)}\" alt=\"${w(n)}\"`;return t&&(o+=` title=\"${w(t)}\"`),o+=\">\",o}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var z=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var O=class a{options;renderer;textRenderer;constructor(e){this.options=e||y,this.options.renderer=this.options.renderer||new $,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new z}static parse(e,t){return new a(t).parse(e)}static parseInline(e,t){return new a(t).parseInline(e)}parse(e){this.renderer.parser=this;let t=\"\";for(let n=0;n<e.length;n++){let i=e[n];if(this.options.extensions?.renderers?.[i.type]){let o=i,s=this.options.extensions.renderers[o.type].call({parser:this},o);if(s!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"checkbox\",\"html\",\"def\",\"paragraph\",\"text\"].includes(o.type)){t+=s||\"\";continue}}let r=i;switch(r.type){case\"space\":{t+=this.renderer.space(r);break}case\"hr\":{t+=this.renderer.hr(r);break}case\"heading\":{t+=this.renderer.heading(r);break}case\"code\":{t+=this.renderer.code(r);break}case\"table\":{t+=this.renderer.table(r);break}case\"blockquote\":{t+=this.renderer.blockquote(r);break}case\"list\":{t+=this.renderer.list(r);break}case\"checkbox\":{t+=this.renderer.checkbox(r);break}case\"html\":{t+=this.renderer.html(r);break}case\"def\":{t+=this.renderer.def(r);break}case\"paragraph\":{t+=this.renderer.paragraph(r);break}case\"text\":{t+=this.renderer.text(r);break}default:{let o='Token with \"'+r.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=\"\";for(let i=0;i<e.length;i++){let r=e[i];if(this.options.extensions?.renderers?.[r.type]){let s=this.options.extensions.renderers[r.type].call({parser:this},r);if(s!==!1||![\"escape\",\"html\",\"link\",\"image\",\"checkbox\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(r.type)){n+=s||\"\";continue}}let o=r;switch(o.type){case\"escape\":{n+=t.text(o);break}case\"html\":{n+=t.html(o);break}case\"link\":{n+=t.link(o);break}case\"image\":{n+=t.image(o);break}case\"checkbox\":{n+=t.checkbox(o);break}case\"strong\":{n+=t.strong(o);break}case\"em\":{n+=t.em(o);break}case\"codespan\":{n+=t.codespan(o);break}case\"br\":{n+=t.br(o);break}case\"del\":{n+=t.del(o);break}case\"text\":{n+=t.text(o);break}default:{let s='Token with \"'+o.type+'\" type was not found.';if(this.options.silent)return console.error(s),\"\";throw new Error(s)}}}return n}};var L=class{options;block;constructor(e){this.options=e||y}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?T.lex:T.lexInline}provideParser(e=this.block){return e?O.parse:O.parseInline}};function C(a,e){if(Array.isArray(e))for(let t=0;t<e.length;t++)a.push(e[t]);else a.push(e)}var U=class{defaults=B();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=O;Renderer=$;TextRenderer=z;Lexer=T;Tokenizer=_;Hooks=L;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let i of e)switch(C(n,t.call(this,i)),i.type){case\"table\":{let r=i;for(let o of r.header)C(n,this.walkTokens(o.tokens,t));for(let o of r.rows)for(let s of o)C(n,this.walkTokens(s.tokens,t));break}case\"list\":{let r=i;C(n,this.walkTokens(r.items,t));break}default:{let r=i;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(o=>{let s=r[o].flat(1/0);C(n,this.walkTokens(s,t))}):r.tokens&&C(n,this.walkTokens(r.tokens,t))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error(\"extension name required\");if(\"renderer\"in r){let o=t.renderers[r.name];o?t.renderers[r.name]=function(...s){let l=r.renderer.apply(this,s);return l===!1&&(l=o.apply(this,s)),l}:t.renderers[r.name]=r.renderer}if(\"tokenizer\"in r){if(!r.level||r.level!==\"block\"&&r.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let o=t[r.level];o?o.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level===\"block\"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level===\"inline\"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}\"childTokens\"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),i.extensions=t),n.renderer){let r=this.defaults.renderer||new $(this.defaults);for(let o in n.renderer){if(!(o in r))throw new Error(`renderer '${o}' does not exist`);if([\"options\",\"parser\"].includes(o))continue;let s=o,l=n.renderer[s],u=r[s];r[s]=(...c)=>{let p=l.apply(r,c);return p===!1&&(p=u.apply(r,c)),p||\"\"}}i.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new _(this.defaults);for(let o in n.tokenizer){if(!(o in r))throw new Error(`tokenizer '${o}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(o))continue;let s=o,l=n.tokenizer[s],u=r[s];r[s]=(...c)=>{let p=l.apply(r,c);return p===!1&&(p=u.apply(r,c)),p}}i.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new L;for(let o in n.hooks){if(!(o in r))throw new Error(`hook '${o}' does not exist`);if([\"options\",\"block\"].includes(o))continue;let s=o,l=n.hooks[s],u=r[s];L.passThroughHooks.has(o)?r[s]=c=>{if(this.defaults.async&&L.passThroughHooksRespectAsync.has(o))return(async()=>{let d=await l.call(r,c);return u.call(r,d)})();let p=l.call(r,c);return u.call(r,p)}:r[s]=(...c)=>{if(this.defaults.async)return(async()=>{let d=await l.apply(r,c);return d===!1&&(d=await u.apply(r,c)),d})();let p=l.apply(r,c);return p===!1&&(p=u.apply(r,c)),p}}i.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,o=n.walkTokens;i.walkTokens=function(s){let l=[];return l.push(o.call(this,s)),r&&C(l,r.call(this,s)),l}}this.defaults={...this.defaults,...i}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return T.lex(e,t??this.defaults)}parser(e,t){return O.parse(e,t??this.defaults)}parseMarkdown(e){return(n,i)=>{let r={...i},o={...this.defaults,...r},s=this.onError(!!o.silent,!!o.async);if(this.defaults.async===!0&&r.async===!1)return s(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return s(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return s(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(o.hooks&&(o.hooks.options=o,o.hooks.block=e),o.async)return(async()=>{let l=o.hooks?await o.hooks.preprocess(n):n,c=await(o.hooks?await o.hooks.provideLexer(e):e?T.lex:T.lexInline)(l,o),p=o.hooks?await o.hooks.processAllTokens(c):c;o.walkTokens&&await Promise.all(this.walkTokens(p,o.walkTokens));let g=await(o.hooks?await o.hooks.provideParser(e):e?O.parse:O.parseInline)(p,o);return o.hooks?await o.hooks.postprocess(g):g})().catch(s);try{o.hooks&&(n=o.hooks.preprocess(n));let u=(o.hooks?o.hooks.provideLexer(e):e?T.lex:T.lexInline)(n,o);o.hooks&&(u=o.hooks.processAllTokens(u)),o.walkTokens&&this.walkTokens(u,o.walkTokens);let p=(o.hooks?o.hooks.provideParser(e):e?O.parse:O.parseInline)(u,o);return o.hooks&&(p=o.hooks.postprocess(p)),p}catch(l){return s(l)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let i=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(i):i}if(t)return Promise.reject(n);throw n}}};var I=new U;function f(a,e){return I.parse(a,e)}f.options=f.setOptions=function(a){return I.setOptions(a),f.defaults=I.defaults,V(f.defaults),f};f.getDefaults=B;f.defaults=y;function At(...a){return I.use(...a),f.defaults=I.defaults,V(f.defaults),f}f.use=At;f.walkTokens=function(a,e){return I.walkTokens(a,e)};f.parseInline=I.parseInline;f.Parser=O;f.parser=O.parse;f.Renderer=$;f.TextRenderer=z;f.Lexer=T;f.lexer=T.lex;f.Tokenizer=_;f.Hooks=L;f.parse=f;var Rn=f.options,Tn=f.setOptions,On=f.walkTokens,wn=f.parseInline,Pn=f,yn=O.parse,Sn=T.lex;export{L as Hooks,T as Lexer,U as Marked,O as Parser,$ as Renderer,z as TextRenderer,_ as Tokenizer,y as defaults,B as getDefaults,Sn as lexer,f as marked,Rn as options,Pn as parse,wn as parseInline,yn as parser,Tn as setOptions,At as use,On as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","/*! @license DOMPurify 3.4.17 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.17/LICENSE */\nfunction _OverloadYield(e, d) {\n\tthis.v = e, this.k = d;\n}\nfunction _arrayLikeToArray(r, a) {\n\t(null == a || a > r.length) && (a = r.length);\n\tfor (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n\treturn n;\n}\nfunction _arrayWithHoles(r) {\n\tif (Array.isArray(r)) return r;\n}\nfunction _iterableToArrayLimit(r, l) {\n\tvar t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n\tif (null != t) {\n\t\tvar e, n, i, u, a = [], f = !0, o = !1;\n\t\ttry {\n\t\t\tif (i = (t = t.call(r)).next, 0 === l) {\n\t\t\t\tif (Object(t) !== t) return;\n\t\t\t\tf = !1;\n\t\t\t} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n\t\t} catch (r) {\n\t\t\to = !0, n = r;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n\t\t\t} finally {\n\t\t\t\tif (o) throw n;\n\t\t\t}\n\t\t}\n\t\treturn a;\n\t}\n}\nfunction _nonIterableRest() {\n\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\nfunction _slicedToArray(r, e) {\n\treturn _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(r, a) {\n\tif (r) {\n\t\tif (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n\t\tvar t = {}.toString.call(r).slice(8, -1);\n\t\treturn \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n\t}\n}\nfunction AsyncGenerator(e) {\n\tvar t, n;\n\tfunction resume(t, n) {\n\t\ttry {\n\t\t\tvar r = e[t](n), o = r.value, u = o instanceof _OverloadYield;\n\t\t\tPromise.resolve(u ? o.v : o).then(function(n) {\n\t\t\t\tif (u) {\n\t\t\t\t\tvar i = \"return\" === t && o.k ? t : \"next\";\n\t\t\t\t\tif (!o.k || n.done) return resume(i, n);\n\t\t\t\t\tn = e[i](n).value;\n\t\t\t\t}\n\t\t\t\tsettle(!!r.done, n);\n\t\t\t}, function(e) {\n\t\t\t\tresume(\"throw\", e);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tsettle(2, e);\n\t\t}\n\t}\n\tfunction settle(e, r) {\n\t\t2 === e ? t.reject(r) : t.resolve({\n\t\t\tvalue: r,\n\t\t\tdone: e\n\t\t}), (t = t.next) ? resume(t.key, t.arg) : n = null;\n\t}\n\tthis._invoke = function(e, r) {\n\t\treturn new Promise(function(o, u) {\n\t\t\tvar i = {\n\t\t\t\tkey: e,\n\t\t\t\targ: r,\n\t\t\t\tresolve: o,\n\t\t\t\treject: u,\n\t\t\t\tnext: null\n\t\t\t};\n\t\t\tn ? n = n.next = i : (t = n = i, resume(e, r));\n\t\t});\n\t}, \"function\" != typeof e.return && (this.return = void 0);\n}\nAsyncGenerator.prototype[\"function\" == typeof Symbol && Symbol.asyncIterator || \"@@asyncIterator\"] = function() {\n\treturn this;\n}, AsyncGenerator.prototype.next = function(e) {\n\treturn this._invoke(\"next\", e);\n}, AsyncGenerator.prototype.throw = function(e) {\n\treturn this._invoke(\"throw\", e);\n}, AsyncGenerator.prototype.return = function(e) {\n\treturn this._invoke(\"return\", e);\n};\nconst entries = Object.entries;\nconst setPrototypeOf = Object.setPrototypeOf;\nconst isFrozen = Object.isFrozen;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nlet freeze = Object.freeze;\nlet seal = Object.seal;\nlet create = Object.create;\nlet _ref = typeof Reflect !== \"undefined\" && Reflect;\nlet apply = _ref.apply;\nlet construct = _ref.construct;\nif (!freeze) freeze = function freeze(x) {\n\treturn x;\n};\nif (!seal) seal = function seal(x) {\n\treturn x;\n};\nif (!apply) apply = function apply(func, thisArg) {\n\tfor (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];\n\treturn func.apply(thisArg, args);\n};\nif (!construct) construct = function construct(Func) {\n\tfor (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2];\n\treturn new Func(...args);\n};\nconst arrayForEach = unapply(Array.prototype.forEach);\nArray.prototype.indexOf;\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\nconst setCreate = unconstruct(Set);\nconst setAdd = unapply(Set.prototype.add);\nconst setHas = unapply(Set.prototype.has);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString = typeof BigInt === \"undefined\" ? null : unapply(BigInt.prototype.toString);\nconst symbolToString = typeof Symbol === \"undefined\" ? null : unapply(Symbol.prototype.toString);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n* Creates a new function that calls the given function with a specified thisArg and arguments.\n*\n* @param func - The function to be wrapped and called.\n* @returns A new function that calls the given function with a specified thisArg and arguments.\n*/\nfunction unapply(func) {\n\treturn function(thisArg) {\n\t\tif (thisArg instanceof RegExp) thisArg.lastIndex = 0;\n\t\tfor (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3];\n\t\treturn apply(func, thisArg, args);\n\t};\n}\n/**\n* Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n*\n* @param func - The constructor function to be wrapped and called.\n* @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n*/\nfunction unconstruct(Func) {\n\treturn function() {\n\t\tfor (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];\n\t\treturn construct(Func, args);\n\t};\n}\n/**\n* Add properties to a lookup table\n*\n* @param set - The set to which elements will be added.\n* @param array - The array containing elements to be added to the set.\n* @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n* @returns The modified set with added elements.\n*/\nfunction addToSet(set, array) {\n\tlet transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;\n\tif (setPrototypeOf) setPrototypeOf(set, null);\n\tif (!arrayIsArray(array)) return set;\n\tlet l = array.length;\n\twhile (l--) {\n\t\tlet element = array[l];\n\t\tif (typeof element === \"string\") {\n\t\t\tconst lcElement = transformCaseFunc(element);\n\t\t\tif (lcElement !== element) {\n\t\t\t\tif (!isFrozen(array)) array[l] = lcElement;\n\t\t\t\telement = lcElement;\n\t\t\t}\n\t\t}\n\t\tset[element] = true;\n\t}\n\treturn set;\n}\n/**\n* Clean up an array to harden against CSPP\n*\n* @param array - The array to be cleaned.\n* @returns The cleaned version of the array\n*/\nfunction cleanArray(array) {\n\tfor (let index = 0; index < array.length; index++) if (!objectHasOwnProperty(array, index)) array[index] = null;\n\treturn array;\n}\n/**\n* Shallow clone an object\n*\n* @param object - The object to be cloned.\n* @returns A new object that copies the original.\n*/\nfunction clone(object) {\n\tconst newObject = create(null);\n\tfor (const _ref2 of entries(object)) {\n\t\tvar _ref3 = _slicedToArray(_ref2, 2);\n\t\tconst property = _ref3[0];\n\t\tconst value = _ref3[1];\n\t\tif (objectHasOwnProperty(object, property)) {\n\t\t\tif (arrayIsArray(value)) newObject[property] = cleanArray(value);\n\t\t\telse if (value && typeof value === \"object\" && value.constructor === Object) newObject[property] = clone(value);\n\t\t\telse newObject[property] = value;\n\t\t}\n\t}\n\treturn newObject;\n}\n/**\n* Convert non-node values into strings without depending on direct property access.\n*\n* @param value - The value to stringify.\n* @returns A string representation of the provided value.\n*/\nfunction stringifyValue(value) {\n\tswitch (typeof value) {\n\t\tcase \"string\": return value;\n\t\tcase \"number\": return numberToString(value);\n\t\tcase \"boolean\": return booleanToString(value);\n\t\tcase \"bigint\": return bigintToString ? bigintToString(value) : \"0\";\n\t\tcase \"symbol\": return symbolToString ? symbolToString(value) : \"Symbol()\";\n\t\tcase \"undefined\": return objectToString(value);\n\t\tcase \"function\":\n\t\tcase \"object\": {\n\t\t\tif (value === null) return objectToString(value);\n\t\t\tconst valueAsRecord = value;\n\t\t\tconst valueToString = lookupGetter(valueAsRecord, \"toString\");\n\t\t\tif (typeof valueToString === \"function\") {\n\t\t\t\tconst stringified = valueToString(valueAsRecord);\n\t\t\t\treturn typeof stringified === \"string\" ? stringified : objectToString(stringified);\n\t\t\t}\n\t\t\treturn objectToString(value);\n\t\t}\n\t\tdefault: return objectToString(value);\n\t}\n}\n/**\n* This method automatically checks if the prop is function or getter and behaves accordingly.\n*\n* @param object - The object to look up the getter function in its prototype chain.\n* @param prop - The property name for which to find the getter function.\n* @returns The getter function found in the prototype chain or a fallback function.\n*/\nfunction lookupGetter(object, prop) {\n\twhile (object !== null) {\n\t\tconst desc = getOwnPropertyDescriptor(object, prop);\n\t\tif (desc) {\n\t\t\tif (desc.get) return unapply(desc.get);\n\t\t\tif (typeof desc.value === \"function\") return unapply(desc.value);\n\t\t}\n\t\tobject = getPrototypeOf(object);\n\t}\n\tfunction fallbackValue() {\n\t\treturn null;\n\t}\n\treturn fallbackValue;\n}\n/**\n* Like lookupGetter, but for accessor properties only, and returns null\n* instead of a null-returning fallback when no getter exists on the chain.\n* Lets a caller fall back to a direct property read in environments that\n* lack the getter, where a fallback returning null would be indistinguishable\n* from a legitimate null value (e.g. namespaceURI of a no-namespace element).\n*\n* @param object - The object (usually a prototype) to start the lookup at.\n* @param prop - The accessor property name.\n* @returns The unapplied getter, or null if none was found.\n*/\nfunction lookupAccessor(object, prop) {\n\twhile (object !== null) {\n\t\tconst desc = getOwnPropertyDescriptor(object, prop);\n\t\tif (desc) return desc.get ? unapply(desc.get) : null;\n\t\tobject = getPrototypeOf(object);\n\t}\n\treturn null;\n}\nfunction isRegex(value) {\n\ttry {\n\t\tregExpTest(value, \"\");\n\t\treturn true;\n\t} catch (_unused) {\n\t\treturn false;\n\t}\n}\nconst html$1 = freeze([\n\t\"a\",\n\t\"abbr\",\n\t\"acronym\",\n\t\"address\",\n\t\"area\",\n\t\"article\",\n\t\"aside\",\n\t\"audio\",\n\t\"b\",\n\t\"bdi\",\n\t\"bdo\",\n\t\"big\",\n\t\"blink\",\n\t\"blockquote\",\n\t\"body\",\n\t\"br\",\n\t\"button\",\n\t\"canvas\",\n\t\"caption\",\n\t\"center\",\n\t\"cite\",\n\t\"code\",\n\t\"col\",\n\t\"colgroup\",\n\t\"content\",\n\t\"data\",\n\t\"datalist\",\n\t\"dd\",\n\t\"decorator\",\n\t\"del\",\n\t\"details\",\n\t\"dfn\",\n\t\"dialog\",\n\t\"dir\",\n\t\"div\",\n\t\"dl\",\n\t\"dt\",\n\t\"element\",\n\t\"em\",\n\t\"fieldset\",\n\t\"figcaption\",\n\t\"figure\",\n\t\"font\",\n\t\"footer\",\n\t\"form\",\n\t\"h1\",\n\t\"h2\",\n\t\"h3\",\n\t\"h4\",\n\t\"h5\",\n\t\"h6\",\n\t\"head\",\n\t\"header\",\n\t\"hgroup\",\n\t\"hr\",\n\t\"html\",\n\t\"i\",\n\t\"img\",\n\t\"input\",\n\t\"ins\",\n\t\"kbd\",\n\t\"label\",\n\t\"legend\",\n\t\"li\",\n\t\"main\",\n\t\"map\",\n\t\"mark\",\n\t\"marquee\",\n\t\"menu\",\n\t\"menuitem\",\n\t\"meter\",\n\t\"nav\",\n\t\"nobr\",\n\t\"ol\",\n\t\"optgroup\",\n\t\"option\",\n\t\"output\",\n\t\"p\",\n\t\"picture\",\n\t\"pre\",\n\t\"progress\",\n\t\"q\",\n\t\"rp\",\n\t\"rt\",\n\t\"ruby\",\n\t\"s\",\n\t\"samp\",\n\t\"search\",\n\t\"section\",\n\t\"select\",\n\t\"shadow\",\n\t\"slot\",\n\t\"small\",\n\t\"source\",\n\t\"spacer\",\n\t\"span\",\n\t\"strike\",\n\t\"strong\",\n\t\"style\",\n\t\"sub\",\n\t\"summary\",\n\t\"sup\",\n\t\"table\",\n\t\"tbody\",\n\t\"td\",\n\t\"template\",\n\t\"textarea\",\n\t\"tfoot\",\n\t\"th\",\n\t\"thead\",\n\t\"time\",\n\t\"tr\",\n\t\"track\",\n\t\"tt\",\n\t\"u\",\n\t\"ul\",\n\t\"var\",\n\t\"video\",\n\t\"wbr\"\n]);\nconst svg$1 = freeze([\n\t\"svg\",\n\t\"a\",\n\t\"altglyph\",\n\t\"altglyphdef\",\n\t\"altglyphitem\",\n\t\"animatecolor\",\n\t\"animatemotion\",\n\t\"animatetransform\",\n\t\"circle\",\n\t\"clippath\",\n\t\"defs\",\n\t\"desc\",\n\t\"ellipse\",\n\t\"enterkeyhint\",\n\t\"exportparts\",\n\t\"filter\",\n\t\"font\",\n\t\"g\",\n\t\"glyph\",\n\t\"glyphref\",\n\t\"hkern\",\n\t\"image\",\n\t\"inputmode\",\n\t\"line\",\n\t\"lineargradient\",\n\t\"marker\",\n\t\"mask\",\n\t\"metadata\",\n\t\"mpath\",\n\t\"part\",\n\t\"path\",\n\t\"pattern\",\n\t\"polygon\",\n\t\"polyline\",\n\t\"radialgradient\",\n\t\"rect\",\n\t\"stop\",\n\t\"style\",\n\t\"switch\",\n\t\"symbol\",\n\t\"text\",\n\t\"textpath\",\n\t\"title\",\n\t\"tref\",\n\t\"tspan\",\n\t\"view\",\n\t\"vkern\"\n]);\nconst svgFilters = freeze([\n\t\"feBlend\",\n\t\"feColorMatrix\",\n\t\"feComponentTransfer\",\n\t\"feComposite\",\n\t\"feConvolveMatrix\",\n\t\"feDiffuseLighting\",\n\t\"feDisplacementMap\",\n\t\"feDistantLight\",\n\t\"feDropShadow\",\n\t\"feFlood\",\n\t\"feFuncA\",\n\t\"feFuncB\",\n\t\"feFuncG\",\n\t\"feFuncR\",\n\t\"feGaussianBlur\",\n\t\"feImage\",\n\t\"feMerge\",\n\t\"feMergeNode\",\n\t\"feMorphology\",\n\t\"feOffset\",\n\t\"fePointLight\",\n\t\"feSpecularLighting\",\n\t\"feSpotLight\",\n\t\"feTile\",\n\t\"feTurbulence\"\n]);\nconst svgDisallowed = freeze([\n\t\"animate\",\n\t\"color-profile\",\n\t\"cursor\",\n\t\"discard\",\n\t\"font-face\",\n\t\"font-face-format\",\n\t\"font-face-name\",\n\t\"font-face-src\",\n\t\"font-face-uri\",\n\t\"foreignobject\",\n\t\"hatch\",\n\t\"hatchpath\",\n\t\"mesh\",\n\t\"meshgradient\",\n\t\"meshpatch\",\n\t\"meshrow\",\n\t\"missing-glyph\",\n\t\"script\",\n\t\"set\",\n\t\"solidcolor\",\n\t\"unknown\",\n\t\"use\"\n]);\nconst mathMl$1 = freeze([\n\t\"math\",\n\t\"menclose\",\n\t\"merror\",\n\t\"mfenced\",\n\t\"mfrac\",\n\t\"mglyph\",\n\t\"mi\",\n\t\"mlabeledtr\",\n\t\"mmultiscripts\",\n\t\"mn\",\n\t\"mo\",\n\t\"mover\",\n\t\"mpadded\",\n\t\"mphantom\",\n\t\"mroot\",\n\t\"mrow\",\n\t\"ms\",\n\t\"mspace\",\n\t\"msqrt\",\n\t\"mstyle\",\n\t\"msub\",\n\t\"msup\",\n\t\"msubsup\",\n\t\"mtable\",\n\t\"mtd\",\n\t\"mtext\",\n\t\"mtr\",\n\t\"munder\",\n\t\"munderover\",\n\t\"mprescripts\"\n]);\nconst mathMlDisallowed = freeze([\n\t\"maction\",\n\t\"maligngroup\",\n\t\"malignmark\",\n\t\"mlongdiv\",\n\t\"mscarries\",\n\t\"mscarry\",\n\t\"msgroup\",\n\t\"mstack\",\n\t\"msline\",\n\t\"msrow\",\n\t\"semantics\",\n\t\"annotation\",\n\t\"annotation-xml\",\n\t\"mprescripts\",\n\t\"none\"\n]);\nconst text = freeze([\"#text\"]);\nconst html = freeze([\n\t\"accept\",\n\t\"action\",\n\t\"align\",\n\t\"alt\",\n\t\"autocapitalize\",\n\t\"autocomplete\",\n\t\"autopictureinpicture\",\n\t\"autoplay\",\n\t\"background\",\n\t\"bgcolor\",\n\t\"border\",\n\t\"capture\",\n\t\"cellpadding\",\n\t\"cellspacing\",\n\t\"checked\",\n\t\"cite\",\n\t\"class\",\n\t\"clear\",\n\t\"color\",\n\t\"cols\",\n\t\"colspan\",\n\t\"command\",\n\t\"commandfor\",\n\t\"controls\",\n\t\"controlslist\",\n\t\"coords\",\n\t\"crossorigin\",\n\t\"datetime\",\n\t\"decoding\",\n\t\"default\",\n\t\"dir\",\n\t\"disabled\",\n\t\"disablepictureinpicture\",\n\t\"disableremoteplayback\",\n\t\"download\",\n\t\"draggable\",\n\t\"enctype\",\n\t\"enterkeyhint\",\n\t\"exportparts\",\n\t\"face\",\n\t\"for\",\n\t\"headers\",\n\t\"height\",\n\t\"hidden\",\n\t\"high\",\n\t\"href\",\n\t\"hreflang\",\n\t\"id\",\n\t\"inert\",\n\t\"inputmode\",\n\t\"integrity\",\n\t\"ismap\",\n\t\"kind\",\n\t\"label\",\n\t\"lang\",\n\t\"list\",\n\t\"loading\",\n\t\"loop\",\n\t\"low\",\n\t\"max\",\n\t\"maxlength\",\n\t\"media\",\n\t\"method\",\n\t\"min\",\n\t\"minlength\",\n\t\"multiple\",\n\t\"muted\",\n\t\"name\",\n\t\"nonce\",\n\t\"noshade\",\n\t\"novalidate\",\n\t\"nowrap\",\n\t\"open\",\n\t\"optimum\",\n\t\"part\",\n\t\"pattern\",\n\t\"placeholder\",\n\t\"playsinline\",\n\t\"popover\",\n\t\"popovertarget\",\n\t\"popovertargetaction\",\n\t\"poster\",\n\t\"preload\",\n\t\"pubdate\",\n\t\"radiogroup\",\n\t\"readonly\",\n\t\"rel\",\n\t\"required\",\n\t\"rev\",\n\t\"reversed\",\n\t\"role\",\n\t\"rows\",\n\t\"rowspan\",\n\t\"spellcheck\",\n\t\"scope\",\n\t\"selected\",\n\t\"shape\",\n\t\"size\",\n\t\"sizes\",\n\t\"slot\",\n\t\"span\",\n\t\"srclang\",\n\t\"start\",\n\t\"src\",\n\t\"srcset\",\n\t\"step\",\n\t\"style\",\n\t\"summary\",\n\t\"tabindex\",\n\t\"title\",\n\t\"translate\",\n\t\"type\",\n\t\"usemap\",\n\t\"valign\",\n\t\"value\",\n\t\"width\",\n\t\"wrap\",\n\t\"xmlns\"\n]);\nconst svg = freeze([\n\t\"accent-height\",\n\t\"accumulate\",\n\t\"additive\",\n\t\"alignment-baseline\",\n\t\"amplitude\",\n\t\"ascent\",\n\t\"attributename\",\n\t\"attributetype\",\n\t\"azimuth\",\n\t\"basefrequency\",\n\t\"baseline-shift\",\n\t\"begin\",\n\t\"bias\",\n\t\"by\",\n\t\"class\",\n\t\"clip\",\n\t\"clippathunits\",\n\t\"clip-path\",\n\t\"clip-rule\",\n\t\"color\",\n\t\"color-interpolation\",\n\t\"color-interpolation-filters\",\n\t\"color-profile\",\n\t\"color-rendering\",\n\t\"cx\",\n\t\"cy\",\n\t\"d\",\n\t\"dx\",\n\t\"dy\",\n\t\"diffuseconstant\",\n\t\"direction\",\n\t\"display\",\n\t\"divisor\",\n\t\"dominant-baseline\",\n\t\"dur\",\n\t\"edgemode\",\n\t\"elevation\",\n\t\"end\",\n\t\"exponent\",\n\t\"fill\",\n\t\"fill-opacity\",\n\t\"fill-rule\",\n\t\"filter\",\n\t\"filterunits\",\n\t\"flood-color\",\n\t\"flood-opacity\",\n\t\"font-family\",\n\t\"font-size\",\n\t\"font-size-adjust\",\n\t\"font-stretch\",\n\t\"font-style\",\n\t\"font-variant\",\n\t\"font-weight\",\n\t\"fx\",\n\t\"fy\",\n\t\"g1\",\n\t\"g2\",\n\t\"glyph-name\",\n\t\"glyphref\",\n\t\"gradientunits\",\n\t\"gradienttransform\",\n\t\"height\",\n\t\"href\",\n\t\"id\",\n\t\"image-rendering\",\n\t\"in\",\n\t\"in2\",\n\t\"intercept\",\n\t\"k\",\n\t\"k1\",\n\t\"k2\",\n\t\"k3\",\n\t\"k4\",\n\t\"kerning\",\n\t\"keypoints\",\n\t\"keysplines\",\n\t\"keytimes\",\n\t\"lang\",\n\t\"lengthadjust\",\n\t\"letter-spacing\",\n\t\"kernelmatrix\",\n\t\"kernelunitlength\",\n\t\"lighting-color\",\n\t\"local\",\n\t\"marker-end\",\n\t\"marker-mid\",\n\t\"marker-start\",\n\t\"markerheight\",\n\t\"markerunits\",\n\t\"markerwidth\",\n\t\"maskcontentunits\",\n\t\"maskunits\",\n\t\"max\",\n\t\"mask\",\n\t\"mask-type\",\n\t\"media\",\n\t\"method\",\n\t\"mode\",\n\t\"min\",\n\t\"name\",\n\t\"numoctaves\",\n\t\"offset\",\n\t\"operator\",\n\t\"opacity\",\n\t\"order\",\n\t\"orient\",\n\t\"orientation\",\n\t\"origin\",\n\t\"overflow\",\n\t\"paint-order\",\n\t\"path\",\n\t\"pathlength\",\n\t\"patterncontentunits\",\n\t\"patterntransform\",\n\t\"patternunits\",\n\t\"pointer-events\",\n\t\"points\",\n\t\"preservealpha\",\n\t\"preserveaspectratio\",\n\t\"primitiveunits\",\n\t\"r\",\n\t\"rx\",\n\t\"ry\",\n\t\"radius\",\n\t\"refx\",\n\t\"refy\",\n\t\"repeatcount\",\n\t\"repeatdur\",\n\t\"restart\",\n\t\"result\",\n\t\"rotate\",\n\t\"scale\",\n\t\"seed\",\n\t\"shape-rendering\",\n\t\"slope\",\n\t\"specularconstant\",\n\t\"specularexponent\",\n\t\"spreadmethod\",\n\t\"startoffset\",\n\t\"stddeviation\",\n\t\"stitchtiles\",\n\t\"stop-color\",\n\t\"stop-opacity\",\n\t\"stroke-dasharray\",\n\t\"stroke-dashoffset\",\n\t\"stroke-linecap\",\n\t\"stroke-linejoin\",\n\t\"stroke-miterlimit\",\n\t\"stroke-opacity\",\n\t\"stroke\",\n\t\"stroke-width\",\n\t\"style\",\n\t\"surfacescale\",\n\t\"systemlanguage\",\n\t\"tabindex\",\n\t\"tablevalues\",\n\t\"targetx\",\n\t\"targety\",\n\t\"transform\",\n\t\"transform-origin\",\n\t\"text-anchor\",\n\t\"text-decoration\",\n\t\"text-orientation\",\n\t\"text-rendering\",\n\t\"textlength\",\n\t\"type\",\n\t\"u1\",\n\t\"u2\",\n\t\"unicode\",\n\t\"values\",\n\t\"vector-effect\",\n\t\"viewbox\",\n\t\"visibility\",\n\t\"version\",\n\t\"vert-adv-y\",\n\t\"vert-origin-x\",\n\t\"vert-origin-y\",\n\t\"width\",\n\t\"word-spacing\",\n\t\"wrap\",\n\t\"writing-mode\",\n\t\"xchannelselector\",\n\t\"ychannelselector\",\n\t\"x\",\n\t\"x1\",\n\t\"x2\",\n\t\"xmlns\",\n\t\"y\",\n\t\"y1\",\n\t\"y2\",\n\t\"z\",\n\t\"zoomandpan\"\n]);\nconst mathMl = freeze([\n\t\"accent\",\n\t\"accentunder\",\n\t\"align\",\n\t\"bevelled\",\n\t\"close\",\n\t\"columnalign\",\n\t\"columnlines\",\n\t\"columnspacing\",\n\t\"columnspan\",\n\t\"denomalign\",\n\t\"depth\",\n\t\"dir\",\n\t\"display\",\n\t\"displaystyle\",\n\t\"encoding\",\n\t\"fence\",\n\t\"frame\",\n\t\"height\",\n\t\"href\",\n\t\"id\",\n\t\"largeop\",\n\t\"length\",\n\t\"linethickness\",\n\t\"lquote\",\n\t\"lspace\",\n\t\"mathbackground\",\n\t\"mathcolor\",\n\t\"mathsize\",\n\t\"mathvariant\",\n\t\"maxsize\",\n\t\"minsize\",\n\t\"movablelimits\",\n\t\"notation\",\n\t\"numalign\",\n\t\"open\",\n\t\"rowalign\",\n\t\"rowlines\",\n\t\"rowspacing\",\n\t\"rowspan\",\n\t\"rspace\",\n\t\"rquote\",\n\t\"scriptlevel\",\n\t\"scriptminsize\",\n\t\"scriptsizemultiplier\",\n\t\"selection\",\n\t\"separator\",\n\t\"separators\",\n\t\"stretchy\",\n\t\"subscriptshift\",\n\t\"supscriptshift\",\n\t\"symmetric\",\n\t\"voffset\",\n\t\"width\",\n\t\"xmlns\"\n]);\nconst xml = freeze([\n\t\"xlink:href\",\n\t\"xml:id\",\n\t\"xlink:title\",\n\t\"xml:space\",\n\t\"xmlns:xlink\"\n]);\nconst MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nconst ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nconst TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/);\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\nconst ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nconst COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nconst FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nconst SELF_CLOSING_TAG = seal(/\\/>/i);\nconst NODE_TYPE = {\n\telement: 1,\n\tattribute: 2,\n\ttext: 3,\n\tcdataSection: 4,\n\tentityReference: 5,\n\tentityNode: 6,\n\tprocessingInstruction: 7,\n\tcomment: 8,\n\tdocument: 9,\n\tdocumentType: 10,\n\tdocumentFragment: 11,\n\tnotation: 12\n};\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, [\n\t\"style\",\n\t\"script\",\n\t\"xmp\",\n\t\"iframe\",\n\t\"noembed\",\n\t\"noframes\",\n\t\"plaintext\",\n\t\"noscript\"\n]));\nconst getGlobal = function getGlobal() {\n\treturn typeof window === \"undefined\" ? null : window;\n};\n/**\n* Creates a no-op policy for internal use only.\n* Don't export this function outside this module!\n* @param trustedTypes The policy factory.\n* @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n* @return The policy created (or null, if Trusted Types\n* are not supported or creating the policy failed).\n*/\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n\tif (typeof trustedTypes !== \"object\" || typeof trustedTypes.createPolicy !== \"function\") return null;\n\tlet suffix = null;\n\tconst ATTR_NAME = \"data-tt-policy-suffix\";\n\tif (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) suffix = purifyHostElement.getAttribute(ATTR_NAME);\n\tconst policyName = \"dompurify\" + (suffix ? \"#\" + suffix : \"\");\n\ttry {\n\t\treturn trustedTypes.createPolicy(policyName, {\n\t\t\tcreateHTML(html) {\n\t\t\t\treturn html;\n\t\t\t},\n\t\t\tcreateScriptURL(scriptUrl) {\n\t\t\t\treturn scriptUrl;\n\t\t\t}\n\t\t});\n\t} catch (_) {\n\t\tconsole.warn(\"TrustedTypes policy \" + policyName + \" could not be created.\");\n\t\treturn null;\n\t}\n};\nconst _createHooksMap = function _createHooksMap() {\n\treturn {\n\t\tafterSanitizeAttributes: [],\n\t\tafterSanitizeElements: [],\n\t\tafterSanitizeShadowDOM: [],\n\t\tbeforeSanitizeAttributes: [],\n\t\tbeforeSanitizeElements: [],\n\t\tbeforeSanitizeShadowDOM: [],\n\t\tuponSanitizeAttribute: [],\n\t\tuponSanitizeElement: [],\n\t\tuponSanitizeShadowNode: []\n\t};\n};\n/**\n* Resolve a set-valued configuration option: a fresh set built from\n* cfg[key] when it is an own array property (seeded with a clone of\n* options.base when given, case-normalized via options.transform),\n* the fallback set otherwise.\n*\n* @param cfg the cloned, prototype-free configuration object\n* @param key the configuration property to read\n* @param fallback the set to use when the option is absent or not an array\n* @param options transform and optional base set to merge into\n* @returns the resolved set\n*/\nconst _resolveSetOption = function _resolveSetOption(cfg, key, fallback, options) {\n\treturn objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key]) ? addToSet(options.base ? clone(options.base) : {}, cfg[key], options.transform) : fallback;\n};\n/**\n* Resolve an object-valued configuration option: a prototype-free clone\n* of cfg[key] when it is an own, truthy object property, else a fresh\n* fallback built by makeFallback (fresh on every parse, so a previous\n* parse can never leak state into the next one).\n*\n* @param cfg the cloned, prototype-free configuration object\n* @param key the configuration property to read\n* @param makeFallback builds the fallback value when the option is absent\n* @returns the resolved object\n*/\nconst _resolveObjectOption = function _resolveObjectOption(cfg, key, makeFallback) {\n\tconst value = objectHasOwnProperty(cfg, key) ? cfg[key] : void 0;\n\treturn value && typeof value === \"object\" ? clone(value) : makeFallback();\n};\nfunction createDOMPurify() {\n\tlet window = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();\n\tconst DOMPurify = (root) => createDOMPurify(root);\n\tDOMPurify.version = \"3.4.17\";\n\tDOMPurify.removed = [];\n\tif (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n\t\tDOMPurify.isSupported = false;\n\t\treturn DOMPurify;\n\t}\n\tlet document = window.document;\n\tconst originalDocument = document;\n\tconst currentScript = originalDocument.currentScript;\n\twindow.DocumentFragment;\n\tconst HTMLTemplateElement = window.HTMLTemplateElement, Node = window.Node, Element = window.Element, NodeFilter = window.NodeFilter;\n\twindow.NamedNodeMap === void 0 && (window.NamedNodeMap || window.MozNamedAttrMap);\n\twindow.HTMLFormElement;\n\tconst DOMParser = window.DOMParser, trustedTypes = window.trustedTypes;\n\tconst ElementPrototype = Element.prototype;\n\tconst cloneNode = lookupGetter(ElementPrototype, \"cloneNode\");\n\tconst remove = lookupGetter(ElementPrototype, \"remove\");\n\tconst removeAttributeNode = lookupGetter(ElementPrototype, \"removeAttributeNode\");\n\tconst getNextSibling = lookupGetter(ElementPrototype, \"nextSibling\");\n\tconst getChildNodes = lookupGetter(ElementPrototype, \"childNodes\");\n\tconst getParentNode = lookupGetter(ElementPrototype, \"parentNode\");\n\tconst getShadowRoot = lookupGetter(ElementPrototype, \"shadowRoot\");\n\tconst getAttributes = lookupGetter(ElementPrototype, \"attributes\");\n\tconst getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, \"nodeType\") : null;\n\tconst getNodeName = Node && Node.prototype ? lookupGetter(Node.prototype, \"nodeName\") : null;\n\tconst getOwnerDocument = Node && Node.prototype ? lookupGetter(Node.prototype, \"ownerDocument\") : null;\n\tconst _readNodeType = function _readNodeType(node) {\n\t\treturn getNodeType ? getNodeType(node) : node.nodeType;\n\t};\n\tconst _readNodeName = function _readNodeName(node) {\n\t\treturn getNodeName ? getNodeName(node) : node.nodeName;\n\t};\n\tconst getNamespaceURI = lookupAccessor(ElementPrototype, \"namespaceURI\");\n\tconst _readNamespaceURI = function _readNamespaceURI(element) {\n\t\treturn getNamespaceURI ? getNamespaceURI(element) : element.namespaceURI;\n\t};\n\tif (typeof HTMLTemplateElement === \"function\") {\n\t\tconst template = document.createElement(\"template\");\n\t\tif (template.content && template.content.ownerDocument) document = template.content.ownerDocument;\n\t}\n\tlet trustedTypesPolicy;\n\tlet emptyHTML = \"\";\n\tlet defaultTrustedTypesPolicy;\n\tlet defaultTrustedTypesPolicyResolved = false;\n\tlet IN_TRUSTED_TYPES_POLICY = 0;\n\tconst _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy() {\n\t\tif (IN_TRUSTED_TYPES_POLICY > 0) throw typeErrorCreate(\"A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the \\\"DOMPurify and Trusted Types\\\" section of the README.\");\n\t};\n\tconst _createTrustedHTML = function _createTrustedHTML(html) {\n\t\t_assertNotInTrustedTypesPolicy();\n\t\tIN_TRUSTED_TYPES_POLICY++;\n\t\ttry {\n\t\t\treturn trustedTypesPolicy.createHTML(html);\n\t\t} finally {\n\t\t\tIN_TRUSTED_TYPES_POLICY--;\n\t\t}\n\t};\n\tconst _createTrustedScriptURL = function _createTrustedScriptURL(scriptUrl) {\n\t\t_assertNotInTrustedTypesPolicy();\n\t\tIN_TRUSTED_TYPES_POLICY++;\n\t\ttry {\n\t\t\treturn trustedTypesPolicy.createScriptURL(scriptUrl);\n\t\t} finally {\n\t\t\tIN_TRUSTED_TYPES_POLICY--;\n\t\t}\n\t};\n\tconst _getDefaultTrustedTypesPolicy = function _getDefaultTrustedTypesPolicy() {\n\t\tif (!defaultTrustedTypesPolicyResolved) {\n\t\t\tdefaultTrustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n\t\t\tdefaultTrustedTypesPolicyResolved = true;\n\t\t}\n\t\treturn defaultTrustedTypesPolicy;\n\t};\n\tconst _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;\n\tconst importNode = originalDocument.importNode;\n\tlet hooks = _createHooksMap();\n\t/**\n\t* Expose whether this browser supports running the full DOMPurify.\n\t*/\n\tDOMPurify.isSupported = typeof entries === \"function\" && typeof getParentNode === \"function\" && implementation && implementation.createHTMLDocument !== void 0;\n\tconst MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE, CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;\n\tlet IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n\t/**\n\t* We consider the elements and attributes below to be safe. Ideally\n\t* don't add any new ones but feel free to remove unwanted ones.\n\t*/\n\tlet ALLOWED_TAGS = null;\n\tconst DEFAULT_ALLOWED_TAGS = addToSet({}, [\n\t\t...html$1,\n\t\t...svg$1,\n\t\t...svgFilters,\n\t\t...mathMl$1,\n\t\t...text\n\t]);\n\tlet ALLOWED_ATTR = null;\n\tconst DEFAULT_ALLOWED_ATTR = addToSet({}, [\n\t\t...html,\n\t\t...svg,\n\t\t...mathMl,\n\t\t...xml\n\t]);\n\tlet CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n\t\ttagNameCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tattributeNameCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tallowCustomizedBuiltInElements: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: false\n\t\t}\n\t}));\n\tlet FORBID_TAGS = null;\n\tlet FORBID_ATTR = null;\n\tconst EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n\t\ttagCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tattributeCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t}\n\t}));\n\tlet ALLOW_ARIA_ATTR = true;\n\tlet ALLOW_DATA_ATTR = true;\n\tlet ALLOW_UNKNOWN_PROTOCOLS = false;\n\tlet ALLOW_SELF_CLOSE_IN_ATTR = true;\n\tlet SAFE_FOR_TEMPLATES = false;\n\tlet SAFE_FOR_XML = true;\n\tlet WHOLE_DOCUMENT = false;\n\tlet SET_CONFIG = false;\n\tlet SET_CONFIG_ALLOWED_TAGS = null;\n\tlet SET_CONFIG_ALLOWED_ATTR = null;\n\tlet FORCE_BODY = false;\n\tlet RETURN_DOM = false;\n\tlet RETURN_DOM_FRAGMENT = false;\n\tlet RETURN_TRUSTED_TYPE = false;\n\tlet SANITIZE_DOM = true;\n\tlet SANITIZE_NAMED_PROPS = false;\n\tconst SANITIZE_NAMED_PROPS_PREFIX = \"user-content-\";\n\tlet KEEP_CONTENT = true;\n\tlet IN_PLACE = false;\n\tlet IN_PLACE_VISITED = null;\n\tlet USE_PROFILES = {};\n\tlet FORBID_CONTENTS = null;\n\tconst DEFAULT_FORBID_CONTENTS = addToSet({}, [\n\t\t\"annotation-xml\",\n\t\t\"audio\",\n\t\t\"colgroup\",\n\t\t\"desc\",\n\t\t\"foreignobject\",\n\t\t\"head\",\n\t\t\"iframe\",\n\t\t\"math\",\n\t\t\"mi\",\n\t\t\"mn\",\n\t\t\"mo\",\n\t\t\"ms\",\n\t\t\"mtext\",\n\t\t\"noembed\",\n\t\t\"noframes\",\n\t\t\"noscript\",\n\t\t\"plaintext\",\n\t\t\"script\",\n\t\t\"selectedcontent\",\n\t\t\"style\",\n\t\t\"svg\",\n\t\t\"template\",\n\t\t\"thead\",\n\t\t\"title\",\n\t\t\"video\",\n\t\t\"xmp\"\n\t]);\n\tlet DATA_URI_TAGS = null;\n\tconst DEFAULT_DATA_URI_TAGS = addToSet({}, [\n\t\t\"audio\",\n\t\t\"video\",\n\t\t\"img\",\n\t\t\"source\",\n\t\t\"image\",\n\t\t\"track\"\n\t]);\n\tlet URI_SAFE_ATTRIBUTES = null;\n\tconst DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n\t\t\"alt\",\n\t\t\"class\",\n\t\t\"for\",\n\t\t\"id\",\n\t\t\"label\",\n\t\t\"name\",\n\t\t\"pattern\",\n\t\t\"placeholder\",\n\t\t\"role\",\n\t\t\"summary\",\n\t\t\"title\",\n\t\t\"value\",\n\t\t\"style\",\n\t\t\"xmlns\"\n\t]);\n\tconst MATHML_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n\tconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n\tconst HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n\tlet NAMESPACE = HTML_NAMESPACE;\n\tlet IS_EMPTY_INPUT = false;\n\tlet ALLOWED_NAMESPACES = null;\n\tconst DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [\n\t\tMATHML_NAMESPACE,\n\t\tSVG_NAMESPACE,\n\t\tHTML_NAMESPACE\n\t], stringToString);\n\tconst DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([\n\t\t\"mi\",\n\t\t\"mo\",\n\t\t\"mn\",\n\t\t\"ms\",\n\t\t\"mtext\"\n\t]);\n\tlet MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS);\n\tconst DEFAULT_HTML_INTEGRATION_POINTS = freeze([\"annotation-xml\"]);\n\tlet HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);\n\tconst COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n\t\t\"title\",\n\t\t\"style\",\n\t\t\"font\",\n\t\t\"a\",\n\t\t\"script\"\n\t]);\n\tlet PARSER_MEDIA_TYPE = null;\n\tconst SUPPORTED_PARSER_MEDIA_TYPES = [\"application/xhtml+xml\", \"text/html\"];\n\tconst DEFAULT_PARSER_MEDIA_TYPE = \"text/html\";\n\tlet transformCaseFunc = null;\n\tlet CONFIG = null;\n\tconst formElement = document.createElement(\"form\");\n\tconst isRegexOrFunction = function isRegexOrFunction(testValue) {\n\t\treturn testValue instanceof RegExp || testValue instanceof Function;\n\t};\n\t/**\n\t* _parseConfig\n\t*\n\t* @param cfg optional config literal\n\t*/\n\tconst _parseConfig = function _parseConfig() {\n\t\tlet cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t\tif (CONFIG && CONFIG === cfg) return;\n\t\tif (!cfg || typeof cfg !== \"object\") cfg = {};\n\t\tcfg = clone(cfg);\n\t\tPARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n\t\ttransformCaseFunc = PARSER_MEDIA_TYPE === \"application/xhtml+xml\" ? stringToString : stringToLowerCase;\n\t\tALLOWED_TAGS = _resolveSetOption(cfg, \"ALLOWED_TAGS\", DEFAULT_ALLOWED_TAGS, { transform: transformCaseFunc });\n\t\tALLOWED_ATTR = _resolveSetOption(cfg, \"ALLOWED_ATTR\", DEFAULT_ALLOWED_ATTR, { transform: transformCaseFunc });\n\t\tALLOWED_NAMESPACES = _resolveSetOption(cfg, \"ALLOWED_NAMESPACES\", DEFAULT_ALLOWED_NAMESPACES, { transform: stringToString });\n\t\tURI_SAFE_ATTRIBUTES = _resolveSetOption(cfg, \"ADD_URI_SAFE_ATTR\", DEFAULT_URI_SAFE_ATTRIBUTES, {\n\t\t\ttransform: transformCaseFunc,\n\t\t\tbase: DEFAULT_URI_SAFE_ATTRIBUTES\n\t\t});\n\t\tDATA_URI_TAGS = _resolveSetOption(cfg, \"ADD_DATA_URI_TAGS\", DEFAULT_DATA_URI_TAGS, {\n\t\t\ttransform: transformCaseFunc,\n\t\t\tbase: DEFAULT_DATA_URI_TAGS\n\t\t});\n\t\tFORBID_CONTENTS = _resolveSetOption(cfg, \"FORBID_CONTENTS\", DEFAULT_FORBID_CONTENTS, { transform: transformCaseFunc });\n\t\tFORBID_TAGS = _resolveSetOption(cfg, \"FORBID_TAGS\", clone({}), { transform: transformCaseFunc });\n\t\tFORBID_ATTR = _resolveSetOption(cfg, \"FORBID_ATTR\", clone({}), { transform: transformCaseFunc });\n\t\tUSE_PROFILES = objectHasOwnProperty(cfg, \"USE_PROFILES\") ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === \"object\" ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;\n\t\tALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n\t\tALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n\t\tALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n\t\tALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;\n\t\tSAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n\t\tSAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;\n\t\tWHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n\t\tRETURN_DOM = cfg.RETURN_DOM || false;\n\t\tRETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n\t\tRETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n\t\tFORCE_BODY = cfg.FORCE_BODY || false;\n\t\tSANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n\t\tSANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n\t\tKEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n\t\tIN_PLACE = cfg.IN_PLACE || false;\n\t\tIS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI;\n\t\tNAMESPACE = typeof cfg.NAMESPACE === \"string\" ? cfg.NAMESPACE : HTML_NAMESPACE;\n\t\tMATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(cfg, \"MATHML_TEXT_INTEGRATION_POINTS\", () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS));\n\t\tHTML_INTEGRATION_POINTS = _resolveObjectOption(cfg, \"HTML_INTEGRATION_POINTS\", () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS));\n\t\tconst customElementHandling = _resolveObjectOption(cfg, \"CUSTOM_ELEMENT_HANDLING\", () => create(null));\n\t\tCUSTOM_ELEMENT_HANDLING = create(null);\n\t\tif (objectHasOwnProperty(customElementHandling, \"tagNameCheck\") && isRegexOrFunction(customElementHandling.tagNameCheck)) CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;\n\t\tif (objectHasOwnProperty(customElementHandling, \"attributeNameCheck\") && isRegexOrFunction(customElementHandling.attributeNameCheck)) CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;\n\t\tif (objectHasOwnProperty(customElementHandling, \"allowCustomizedBuiltInElements\") && typeof customElementHandling.allowCustomizedBuiltInElements === \"boolean\") CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;\n\t\tseal(CUSTOM_ELEMENT_HANDLING);\n\t\tif (SAFE_FOR_TEMPLATES) ALLOW_DATA_ATTR = false;\n\t\tif (RETURN_DOM_FRAGMENT) RETURN_DOM = true;\n\t\tif (USE_PROFILES) {\n\t\t\tALLOWED_TAGS = addToSet({}, text);\n\t\t\tALLOWED_ATTR = create(null);\n\t\t\tif (USE_PROFILES.html === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, html$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, html);\n\t\t\t}\n\t\t\tif (USE_PROFILES.svg === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, svg$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, svg);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t\tif (USE_PROFILES.svgFilters === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, svgFilters);\n\t\t\t\taddToSet(ALLOWED_ATTR, svg);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t\tif (USE_PROFILES.mathMl === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, mathMl$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, mathMl);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t}\n\t\tEXTRA_ELEMENT_HANDLING.tagCheck = null;\n\t\tEXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\t\tif (objectHasOwnProperty(cfg, \"ADD_TAGS\")) {\n\t\t\tif (typeof cfg.ADD_TAGS === \"function\") EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n\t\t\telse if (arrayIsArray(cfg.ADD_TAGS)) {\n\t\t\t\tif (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) ALLOWED_TAGS = clone(ALLOWED_TAGS);\n\t\t\t\taddToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n\t\t\t}\n\t\t}\n\t\tif (objectHasOwnProperty(cfg, \"ADD_ATTR\")) {\n\t\t\tif (typeof cfg.ADD_ATTR === \"function\") EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n\t\t\telse if (arrayIsArray(cfg.ADD_ATTR)) {\n\t\t\t\tif (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) ALLOWED_ATTR = clone(ALLOWED_ATTR);\n\t\t\t\taddToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n\t\t\t}\n\t\t}\n\t\tif (objectHasOwnProperty(cfg, \"ADD_FORBID_CONTENTS\") && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {\n\t\t\tif (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) FORBID_CONTENTS = clone(FORBID_CONTENTS);\n\t\t\taddToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n\t\t}\n\t\tif (KEEP_CONTENT) ALLOWED_TAGS[\"#text\"] = true;\n\t\tif (WHOLE_DOCUMENT) addToSet(ALLOWED_TAGS, [\n\t\t\t\"html\",\n\t\t\t\"head\",\n\t\t\t\"body\"\n\t\t]);\n\t\tif (ALLOWED_TAGS.table) {\n\t\t\taddToSet(ALLOWED_TAGS, [\"tbody\"]);\n\t\t\tdelete FORBID_TAGS.tbody;\n\t\t}\n\t\tif (cfg.TRUSTED_TYPES_POLICY) {\n\t\t\tif (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== \"function\") throw typeErrorCreate(\"TRUSTED_TYPES_POLICY configuration option must provide a \\\"createHTML\\\" hook.\");\n\t\t\tif (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== \"function\") throw typeErrorCreate(\"TRUSTED_TYPES_POLICY configuration option must provide a \\\"createScriptURL\\\" hook.\");\n\t\t\tconst previousTrustedTypesPolicy = trustedTypesPolicy;\n\t\t\ttrustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\t\t\ttry {\n\t\t\t\temptyHTML = _createTrustedHTML(\"\");\n\t\t\t} catch (error) {\n\t\t\t\ttrustedTypesPolicy = previousTrustedTypesPolicy;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t} else if (cfg.TRUSTED_TYPES_POLICY === null) {\n\t\t\ttrustedTypesPolicy = void 0;\n\t\t\temptyHTML = \"\";\n\t\t} else {\n\t\t\tif (trustedTypesPolicy === void 0) trustedTypesPolicy = _getDefaultTrustedTypesPolicy();\n\t\t\tif (trustedTypesPolicy && typeof emptyHTML === \"string\") emptyHTML = _createTrustedHTML(\"\");\n\t\t}\n\t\tif (freeze) freeze(cfg);\n\t\tCONFIG = cfg;\n\t};\n\tconst ALL_SVG_TAGS = addToSet({}, [\n\t\t...svg$1,\n\t\t...svgFilters,\n\t\t...svgDisallowed\n\t]);\n\tconst ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n\t/**\n\t* Namespace rules for an element in the SVG namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkSvgNamespace = function _checkSvgNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === HTML_NAMESPACE) return tagName === \"svg\";\n\t\tif (parent.namespaceURI === MATHML_NAMESPACE) return tagName === \"svg\" && (parentTagName === \"annotation-xml\" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n\t\treturn Boolean(ALL_SVG_TAGS[tagName]);\n\t};\n\t/**\n\t* Namespace rules for an element in the MathML namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkMathMlNamespace = function _checkMathMlNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === HTML_NAMESPACE) return tagName === \"math\";\n\t\tif (parent.namespaceURI === SVG_NAMESPACE) return tagName === \"math\" && HTML_INTEGRATION_POINTS[parentTagName];\n\t\treturn Boolean(ALL_MATHML_TAGS[tagName]);\n\t};\n\t/**\n\t* Namespace rules for an element in the HTML namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkHtmlNamespace = function _checkHtmlNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) return false;\n\t\tif (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) return false;\n\t\treturn !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n\t};\n\t/**\n\t* @param element a DOM element whose namespace is being checked\n\t* @returns Return false if the element has a\n\t* namespace that a spec-compliant parser would never\n\t* return. Return true otherwise.\n\t*/\n\tconst _checkValidNamespace = function _checkValidNamespace(element) {\n\t\tconst elementNamespace = _readNamespaceURI(element);\n\t\tconst tagName = stringToLowerCase(_readNodeName(element));\n\t\tconst parentNode = getParentNode(element);\n\t\tlet parent;\n\t\tlet parentTagName;\n\t\tif (parentNode && _readNodeType(parentNode) === NODE_TYPE.element) {\n\t\t\tparent = { namespaceURI: _readNamespaceURI(parentNode) };\n\t\t\tparentTagName = stringToLowerCase(_readNodeName(parentNode));\n\t\t} else {\n\t\t\tparent = { namespaceURI: NAMESPACE };\n\t\t\tparentTagName = \"template\";\n\t\t}\n\t\tif (!ALLOWED_NAMESPACES[elementNamespace]) return false;\n\t\tif (elementNamespace === SVG_NAMESPACE) return _checkSvgNamespace(tagName, parent, parentTagName);\n\t\tif (elementNamespace === MATHML_NAMESPACE) return _checkMathMlNamespace(tagName, parent, parentTagName);\n\t\tif (elementNamespace === HTML_NAMESPACE) return _checkHtmlNamespace(tagName, parent, parentTagName);\n\t\tif (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && ALLOWED_NAMESPACES[elementNamespace]) return true;\n\t\treturn false;\n\t};\n\t/**\n\t* _forceRemove\n\t*\n\t* @param node a DOM node\n\t*/\n\tconst _forceRemove = function _forceRemove(node) {\n\t\tarrayPush(DOMPurify.removed, { element: node });\n\t\ttry {\n\t\t\tgetParentNode(node).removeChild(node);\n\t\t} catch (_) {\n\t\t\tremove(node);\n\t\t\tif (!getParentNode(node)) throw typeErrorCreate(\"a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place\");\n\t\t}\n\t};\n\t/**\n\t* _stripAttributeNode\n\t*\n\t* Remove a single Attr node case/namespace-exactly on an attribute-teardown\n\t* path. Name-based removeAttribute() ASCII-lowercases its lookup key for an\n\t* HTML element in an HTML document and so silently misses a case-preserved\n\t* handler (e.g. `ONERROR` off an XML/XHTML import) - the same defect\n\t* _removeAttribute() was fixed for, which a name-based call would reintroduce\n\t* on these IN_PLACE teardown paths. Unlike _removeAttribute this does not\n\t* record into DOMPurify.removed: the neutralize passes intentionally do not\n\t* book-keep. A clobbered/detached node falls back to best-effort name-based\n\t* removal.\n\t*\n\t* @param element the element to strip the attribute from\n\t* @param attribute the Attr node to remove\n\t* @param name the attribute's name, for the fallback path\n\t*/\n\tconst _stripAttributeNode = function _stripAttributeNode(element, attribute, name) {\n\t\ttry {\n\t\t\tremoveAttributeNode(element, attribute);\n\t\t} catch (_) {\n\t\t\ttry {\n\t\t\t\telement.removeAttribute(name);\n\t\t\t} catch (_) {}\n\t\t}\n\t};\n\t/**\n\t* Fail-closed teardown of an in-place root: strip every disallowed attribute\n\t* in the subtree first, so nothing armed is left behind, then remove all\n\t* children and the root's own attributes.\n\t*\n\t* @param root the in-place root to empty\n\t*/\n\tconst _neutralizeRoot = function _neutralizeRoot(root) {\n\t\t_neutralizeSubtree(root);\n\t\tconst childNodes = getChildNodes(root);\n\t\tif (childNodes) arrayForEach(arraySlice(childNodes), (child) => {\n\t\t\ttry {\n\t\t\t\tremove(child);\n\t\t\t} catch (_) {}\n\t\t});\n\t\tconst attributes = _readNodeType(root) === NODE_TYPE.element ? getAttributes(root) : null;\n\t\tif (attributes) for (let i = attributes.length - 1; i >= 0; --i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst name = attribute && attribute.name;\n\t\t\tif (typeof name === \"string\") _stripAttributeNode(root, attribute, name);\n\t\t}\n\t};\n\t/**\n\t* Removes an attribute, preferably as its exact Attr node: name-based\n\t* removal lowercases the name in HTML documents and misses case-preserved\n\t* names, e.g. from imported XHTML.\n\t*\n\t* @param name an Attribute name\n\t* @param element a DOM node\n\t* @param attr the exact Attr node to remove, when the caller has it\n\t*/\n\tconst _removeAttribute = function _removeAttribute(name, element, attr) {\n\t\tif (!attr) try {\n\t\t\tattr = element.getAttributeNode(name);\n\t\t} catch (_) {\n\t\t\tattr = null;\n\t\t}\n\t\tarrayPush(DOMPurify.removed, {\n\t\t\tattribute: attr || null,\n\t\t\tfrom: element\n\t\t});\n\t\ttry {\n\t\t\tif (attr) removeAttributeNode(element, attr);\n\t\t\telse element.removeAttribute(name);\n\t\t} catch (_) {\n\t\t\ttry {\n\t\t\t\telement.removeAttribute(name);\n\t\t\t} catch (_) {}\n\t\t}\n\t\tif (name === \"is\") {\n\t\t\tif (RETURN_DOM || RETURN_DOM_FRAGMENT) try {\n\t\t\t\t_forceRemove(element);\n\t\t\t} catch (_) {}\n\t\t\telse try {\n\t\t\t\telement.setAttribute(name, \"\");\n\t\t\t} catch (_) {}\n\t\t}\n\t};\n\t/**\n\t* Removes every attribute the configuration does not allow. Used to\n\t* neutralize nodes discarded from an in-place tree.\n\t*\n\t* @param element the element to strip\n\t*/\n\tconst _stripDisallowedAttributes = function _stripDisallowedAttributes(element) {\n\t\tconst attributes = getAttributes(element);\n\t\tif (!attributes) return;\n\t\tfor (let i = attributes.length - 1; i >= 0; --i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst name = attribute && attribute.name;\n\t\t\tif (typeof name !== \"string\" || ALLOWED_ATTR[transformCaseFunc(name)]) continue;\n\t\t\t_stripAttributeNode(element, attribute, name);\n\t\t}\n\t};\n\t/**\n\t* Iterative depth-first walk, so deep trees cannot overflow the call stack,\n\t* reading through the cached getters, so clobbering cannot hide children.\n\t* When `visit` returns false, the node's children are skipped. With\n\t* `intoShadow`, open shadow roots are walked after their host's children.\n\t*\n\t* @param root where to start\n\t* @param visit called for every node\n\t* @param intoShadow whether to enter open shadow roots\n\t*/\n\tconst _walkTree = function _walkTree(root, visit) {\n\t\tlet intoShadow = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n\t\tconst stack = [root];\n\t\twhile (stack.length > 0) {\n\t\t\tconst node = stack.pop();\n\t\t\tif (visit(node) === false) continue;\n\t\t\tif (intoShadow && _readNodeType(node) === NODE_TYPE.element) {\n\t\t\t\tconst shadowRoot = getShadowRoot(node);\n\t\t\t\tif (_isDocumentFragment(shadowRoot)) stack.push(shadowRoot);\n\t\t\t}\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push(childNodes[i]);\n\t\t}\n\t};\n\t/**\n\t* Strips disallowed attributes from every element of a discarded subtree,\n\t* so a handler that is already queued (a loading image) cannot fire.\n\t*\n\t* @param root the root of a removed subtree\n\t*/\n\tconst _neutralizeSubtree = function _neutralizeSubtree(root) {\n\t\t_walkTree(root, (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element) _stripDisallowedAttributes(node);\n\t\t});\n\t};\n\t/**\n\t* All nodes under `root`, root first, including open shadow roots. Template\n\t* content is not entered, it is inert.\n\t*\n\t* @param root the in-place root\n\t* @return the nodes\n\t*/\n\tconst _collectLiveNodes = function _collectLiveNodes(root) {\n\t\tconst nodes = [];\n\t\t_walkTree(root, (node) => {\n\t\t\tnodes.push(node);\n\t\t}, true);\n\t\treturn nodes;\n\t};\n\t/**\n\t* Strips disallowed attributes from every element that was under the\n\t* in-place root when the call started and no longer is, whatever removed\n\t* or moved it.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t*/\n\tconst _neutralizeEscapedElements = function _neutralizeEscapedElements(root, before) {\n\t\tconst reachable = setCreate();\n\t\tarrayForEach(_collectLiveNodes(root), (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element) setAdd(reachable, node);\n\t\t});\n\t\tarrayForEach(before, (node) => {\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element && !setHas(reachable, node)) _stripDisallowedAttributes(node);\n\t\t});\n\t};\n\t/**\n\t* Neutralizes everything that left the in-place tree during the call: what\n\t* DOMPurify removed, and what hooks or custom elements removed or moved out.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t* @return true if the root itself was removed\n\t*/\n\tconst _neutralizeDiscarded = function _neutralizeDiscarded(root, before) {\n\t\tlet rootRemoved = false;\n\t\tarrayForEach(DOMPurify.removed, (entry) => {\n\t\t\tif (entry.element) {\n\t\t\t\trootRemoved = rootRemoved || entry.element === root;\n\t\t\t\t_neutralizeSubtree(entry.element);\n\t\t\t}\n\t\t});\n\t\t_neutralizeEscapedElements(root, before);\n\t\treturn rootRemoved;\n\t};\n\tconst MAX_UNVISITED_ROUNDS = 8;\n\t/**\n\t* The walk only moves forward, so a node moved to a position it already\n\t* passed is never visited. Give every original node that is still in the\n\t* tree but unvisited the normal treatment, hooks included. Nodes created\n\t* during the call are left alone. Fails closed if the tree keeps changing.\n\t*\n\t* @param root the in-place root\n\t* @param before the root's nodes, collected before the walk\n\t*/\n\tconst _sanitizeUnvisitedNodes = function _sanitizeUnvisitedNodes(root, before) {\n\t\tconst visited = IN_PLACE_VISITED;\n\t\tlet original = null;\n\t\tconst getOriginal = () => {\n\t\t\tif (!original) {\n\t\t\t\toriginal = setCreate();\n\t\t\t\tarrayForEach(before, (beforeNode) => {\n\t\t\t\t\tsetAdd(original, beforeNode);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn original;\n\t\t};\n\t\tfor (let round = 0;; round++) {\n\t\t\tconst live = _collectLiveNodes(root);\n\t\t\tconst containers = [root];\n\t\t\tlet pending = false;\n\t\t\tarrayForEach(live, (node) => {\n\t\t\t\tif (_readNodeType(node) === NODE_TYPE.documentFragment) arrayPush(containers, node);\n\t\t\t\telse if (!pending && !setHas(visited, node)) pending = setHas(getOriginal(), node);\n\t\t\t});\n\t\t\tif (!pending) return;\n\t\t\tif (round >= MAX_UNVISITED_ROUNDS) throw typeErrorCreate(\"the tree kept changing during in-place sanitization; refusing to return it\");\n\t\t\tarrayForEach(containers, (container, index) => {\n\t\t\t\t_sanitizeUnvisitedIn(container, index > 0, root, getOriginal());\n\t\t\t});\n\t\t}\n\t};\n\t/**\n\t* One _sanitizeUnvisitedNodes pass over the root or an open shadow root.\n\t*\n\t* @param container the root or an open shadow root\n\t* @param inShadow whether container is a shadow root\n\t* @param root the in-place root\n\t* @param original the root's nodes collected before the walk, as a set\n\t*/\n\tconst _sanitizeUnvisitedIn = function _sanitizeUnvisitedIn(container, inShadow, root, original) {\n\t\tconst iterator = _createNodeIterator(container);\n\t\tlet node;\n\t\twhile (node = iterator.nextNode()) {\n\t\t\tif (!setHas(original, node) || setHas(IN_PLACE_VISITED, node)) continue;\n\t\t\tif (inShadow) _executeHooks(hooks.uponSanitizeShadowNode, node, null);\n\t\t\t_sanitizeElements(node, root);\n\t\t\t_sanitizeAttributes(node, root);\n\t\t\tif (_isDocumentFragment(node.content)) _sanitizeShadowDOM2(node.content);\n\t\t}\n\t};\n\t/**\n\t* Records that _sanitizeElements processed `node`. No-op outside IN_PLACE.\n\t*\n\t* @param node the node being processed\n\t*/\n\tconst _markVisited = function _markVisited(node) {\n\t\tif (IN_PLACE_VISITED) setAdd(IN_PLACE_VISITED, node);\n\t};\n\t/**\n\t* Patch-linkage attributes (declarative partial updates): `patchsrc`\n\t* always, `for` everywhere except on <label> and <output>. Gated on\n\t* SAFE_FOR_XML. Shared by the IN_PLACE pre-pass and _isValidAttribute.\n\t*\n\t* @param lcName the transformCaseFunc'd attribute name\n\t* @param lcTag the transformCaseFunc'd tag name of the carrying element\n\t* @return true if the attribute is patch linkage and must be dropped\n\t*/\n\tconst _isPatchLinkageAttribute = function _isPatchLinkageAttribute(lcName, lcTag) {\n\t\tif (!SAFE_FOR_XML) return false;\n\t\tif (lcName === \"patchsrc\") return true;\n\t\treturn lcName === \"for\" && lcTag !== \"label\" && lcTag !== \"output\";\n\t};\n\t/**\n\t* IN_PLACE pre-pass: sever all patch linkage before the walk, so no patch\n\t* can fire mid-walk into a part of the tree the walker already passed.\n\t* Removes range markers (processing instructions, comments with markup)\n\t* and strips linkage attributes. It cannot undo a patch that already fired.\n\t*\n\t* TODO: if the shipped feature can patch through `for` on <label>/<output>,\n\t* drop that pair here too (see test/declarative-patch-probe.html).\n\t*\n\t* @param root the in-place root to sweep\n\t*/\n\tconst _neutralizePatchLinkage = function _neutralizePatchLinkage(root) {\n\t\tif (!SAFE_FOR_XML) return;\n\t\t_walkTree(root, (node) => {\n\t\t\tconst nodeType = _readNodeType(node);\n\t\t\tif (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node.data)) {\n\t\t\t\ttry {\n\t\t\t\t\tremove(node);\n\t\t\t\t} catch (_) {}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (nodeType === NODE_TYPE.element) {\n\t\t\t\tconst element = node;\n\t\t\t\tconst lcTag = transformCaseFunc(_readNodeName(node));\n\t\t\t\ttry {\n\t\t\t\t\tif (element.hasAttribute && element.hasAttribute(\"patchsrc\")) element.removeAttribute(\"patchsrc\");\n\t\t\t\t\tif (element.hasAttribute && element.hasAttribute(\"for\") && _isPatchLinkageAttribute(\"for\", lcTag)) element.removeAttribute(\"for\");\n\t\t\t\t} catch (_) {}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t};\n\t/**\n\t* _initDocument\n\t*\n\t* @param dirty - a string of dirty markup\n\t* @return a DOM, filled with the dirty markup\n\t*/\n\tconst _initDocument = function _initDocument(dirty) {\n\t\tlet doc = null;\n\t\tlet leadingWhitespace = null;\n\t\tif (FORCE_BODY) dirty = \"<remove></remove>\" + dirty;\n\t\telse {\n\t\t\tconst matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n\t\t\tleadingWhitespace = matches && matches[0];\n\t\t}\n\t\tif (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && NAMESPACE === HTML_NAMESPACE) dirty = \"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\"><head></head><body>\" + dirty + \"</body></html>\";\n\t\tconst dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;\n\t\tif (NAMESPACE === HTML_NAMESPACE) try {\n\t\t\tdoc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n\t\t} catch (_) {}\n\t\tif (!doc || !doc.documentElement) {\n\t\t\tdoc = implementation.createDocument(NAMESPACE, \"template\", null);\n\t\t\ttry {\n\t\t\t\tdoc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n\t\t\t} catch (_) {}\n\t\t}\n\t\tconst body = doc.body || doc.documentElement;\n\t\tif (dirty && leadingWhitespace) body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n\t\tif (NAMESPACE === HTML_NAMESPACE) return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? \"html\" : \"body\")[0];\n\t\treturn WHOLE_DOCUMENT ? doc.documentElement : body;\n\t};\n\t/**\n\t* Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n\t*\n\t* @param root The root element or node to start traversing on.\n\t* @return The created NodeIterator\n\t*/\n\tconst _createNodeIterator = function _createNodeIterator(root) {\n\t\tconst doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;\n\t\treturn createNodeIterator.call(doc || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n\t};\n\t/**\n\t* Replace template expression syntax (mustache, ERB, template\n\t* literal) with a space; shared by all SAFE_FOR_TEMPLATES scrub\n\t* sites. Order matters: mustache, then ERB, then template literal.\n\t*\n\t* @param value the string to scrub\n\t* @returns the scrubbed string\n\t*/\n\tconst _stripTemplateExpressions = function _stripTemplateExpressions(value) {\n\t\tvalue = stringReplace(value, MUSTACHE_EXPR$1, \" \");\n\t\tvalue = stringReplace(value, ERB_EXPR$1, \" \");\n\t\tvalue = stringReplace(value, TMPLIT_EXPR$1, \" \");\n\t\treturn value;\n\t};\n\t/**\n\t* Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n\t* character data of an element subtree. Used as the final safety net for\n\t* SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n\t* which only form after text-node normalization (e.g. fragments split across\n\t* stripped elements) cannot survive into a template-evaluating framework.\n\t*\n\t* Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n\t* in place rather than round-tripping through innerHTML. This preserves\n\t* descendant node references (important for IN_PLACE callers), avoids a\n\t* serialize/reparse cycle, and reads literal character data — which means\n\t* `<%...%>` in text content matches the ERB regex against its real bytes\n\t* instead of the HTML-entity-escaped form innerHTML would produce.\n\t*\n\t* Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n\t* attributes is performed during the per-node `_sanitizeAttributes` pass.\n\t*\n\t* @param node The root element whose character data should be scrubbed.\n\t*/\n\tconst _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node) {\n\t\tvar _node$querySelectorAl;\n\t\t_scrubOwnCharacterData(node);\n\t\tconst templates = (_node$querySelectorAl = node.querySelectorAll) === null || _node$querySelectorAl === void 0 ? void 0 : _node$querySelectorAl.call(node, \"template\");\n\t\tif (templates) arrayForEach(templates, (tmpl) => {\n\t\t\tif (_isDocumentFragment(tmpl.content)) _scrubTemplateExpressions2(tmpl.content);\n\t\t});\n\t};\n\t/**\n\t* _scrubOwnCharacterData\n\t*\n\t* Non-recursive core of _scrubTemplateExpressions: normalize `node` and\n\t* strip template expressions from its own character data only. Does not\n\t* enter <template>.content or attached shadow roots (NodeIterator never\n\t* does). Used by _sanitizeShadowDOM, where every nested template content\n\t* and shadow root is already walked - and therefore scrubbed - by its own\n\t* recursive _sanitizeShadowDOM call; recursing here as well would rescrub\n\t* each nested fragment once per ancestor, which is quadratic in nesting\n\t* depth.\n\t*\n\t* @param node The root whose own character data should be scrubbed.\n\t*/\n\tconst _scrubOwnCharacterData = function _scrubOwnCharacterData(node) {\n\t\tnode.normalize();\n\t\tconst doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;\n\t\tconst walker = createNodeIterator.call(doc || node, node, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);\n\t\tlet currentNode = walker.nextNode();\n\t\twhile (currentNode) {\n\t\t\tcurrentNode.data = _stripTemplateExpressions(currentNode.data);\n\t\t\tcurrentNode = walker.nextNode();\n\t\t}\n\t};\n\t/**\n\t* _isClobbered\n\t*\n\t* Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n\t* interface with [LegacyOverrideBuiltIns]; a descendant element with a\n\t* `name` attribute matching a prototype property shadows that property\n\t* on direct reads. We use this check at the IN_PLACE entry-point and\n\t* during attribute sanitization to refuse clobbered forms.\n\t*\n\t* @param element element to check for clobbering attacks\n\t* @return true if clobbered, false if safe\n\t*/\n\tconst _isClobbered = function _isClobbered(element) {\n\t\tconst realTagName = getNodeName ? getNodeName(element) : null;\n\t\tif (typeof realTagName !== \"string\") return false;\n\t\tif (transformCaseFunc(realTagName) !== \"form\") return false;\n\t\treturn typeof element.nodeName !== \"string\" || typeof element.textContent !== \"string\" || typeof element.removeChild !== \"function\" || element.attributes !== getAttributes(element) || typeof element.removeAttribute !== \"function\" || typeof element.removeAttributeNode !== \"function\" || typeof element.getAttributeNode !== \"function\" || typeof element.setAttribute !== \"function\" || typeof element.namespaceURI !== \"string\" || typeof element.insertBefore !== \"function\" || typeof element.hasChildNodes !== \"function\" || element.nodeType !== getNodeType(element) || element.childNodes !== getChildNodes(element);\n\t};\n\t/**\n\t* Checks whether the given value is a DocumentFragment from any realm.\n\t*\n\t* The realm-independent replacement reads `nodeType` through the cached\n\t* Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n\t* constant (11). nodeType is a numeric value resolved from the node's\n\t* internal slot, identical across realms for the same kind of node.\n\t*\n\t* @param value object to check\n\t* @return true if value is a DocumentFragment-shaped node from any realm\n\t*/\n\tconst _isDocumentFragment = function _isDocumentFragment(value) {\n\t\tif (!getNodeType || typeof value !== \"object\" || value === null) return false;\n\t\ttry {\n\t\t\treturn getNodeType(value) === NODE_TYPE.documentFragment;\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t};\n\t/**\n\t* Checks whether the given object is a DOM node, including nodes that\n\t* originate from a different window/realm (e.g. an iframe's\n\t* contentDocument). The previous `value instanceof Node` check was\n\t* realm-bound: nodes from a different window failed it, causing\n\t* sanitize() to silently stringify them and reset IN_PLACE to false,\n\t* returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n\t*\n\t* @param value object to check whether it's a DOM node\n\t* @return true if value is a DOM node from any realm\n\t*/\n\tconst _isNode = function _isNode(value) {\n\t\tif (!getNodeType || typeof value !== \"object\" || value === null) return false;\n\t\ttry {\n\t\t\treturn typeof getNodeType(value) === \"number\";\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t};\n\tfunction _executeHooks(hooks, currentNode, data) {\n\t\tif (hooks.length === 0) return;\n\t\tarrayForEach(hooks, (hook) => {\n\t\t\thook.call(DOMPurify, currentNode, data, CONFIG);\n\t\t});\n\t}\n\t/**\n\t* Structural-threat checks that condemn a node regardless of the\n\t* allowlists: mXSS via namespace confusion, risky CSS construction,\n\t* processing instructions, markup-bearing comments. Pure predicate;\n\t* the caller removes. Check order is load-bearing.\n\t*\n\t* @param currentNode the node to inspect\n\t* @param tagName the node's transformCaseFunc'd tag name\n\t* @return true if the node must be removed\n\t*/\n\tconst _isUnsafeNode = function _isUnsafeNode(currentNode, tagName) {\n\t\tif (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML)) return true;\n\t\tif (SAFE_FOR_XML && LITERAL_TEXT_ELEMENTS[tagName] && _readNodeType(currentNode) === NODE_TYPE.element && _readNamespaceURI(currentNode) === HTML_NAMESPACE && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === \"string\" && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent))) return true;\n\t\tif (currentNode.nodeType === NODE_TYPE.processingInstruction) return true;\n\t\tif (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) return true;\n\t\treturn false;\n\t};\n\t/**\n\t* Evaluate a CUSTOM_ELEMENT_HANDLING check (a RegExp or a predicate\n\t* function, per the validation in _parseConfig) against a name.\n\t* Additional arguments are forwarded to predicate functions - the\n\t* attributeNameCheck predicate receives the tag name as its second\n\t* argument. A null/absent check never matches.\n\t*\n\t* @param check the configured tagNameCheck / attributeNameCheck value\n\t* @param name the name to test\n\t* @param args extra arguments forwarded to a predicate function\n\t* @return true if the check matches the name\n\t*/\n\tconst _matchesNameCheck = function _matchesNameCheck(check, name) {\n\t\tif (check instanceof RegExp) return regExpTest(check, name);\n\t\tif (check instanceof Function) {\n\t\t\tfor (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];\n\t\t\treturn Boolean(check(name, ...args));\n\t\t}\n\t\treturn false;\n\t};\n\t/**\n\t* Handle a node whose tag is forbidden or not allowlisted: keep\n\t* allowed custom elements (false return exits _sanitizeElements\n\t* early - the namespace and fallback-tag removal checks are\n\t* intentionally skipped for kept custom elements), else hoist\n\t* content per KEEP_CONTENT and remove.\n\t*\n\t* A kept custom element is the ONLY case in which this function\n\t* returns false, so the caller uses that return value to run the\n\t* afterSanitizeElements hook on the kept element and keep the\n\t* element-hook lifecycle consistent with normal allowlisted\n\t* elements (GHSA-c2j3-45gr-mqc4).\n\t*\n\t* @param currentNode the disallowed node\n\t* @param tagName the node's transformCaseFunc'd tag name\n\t* @return true if the node was removed, false if kept\n\t*/\n\tconst _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName, root) {\n\t\tif (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n\t\tif (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && !FORBID_CONTENTS[stringToLowerCase(tagName)]) {\n\t\t\tconst parentNode = getParentNode(currentNode);\n\t\t\tconst childNodes = getChildNodes(currentNode);\n\t\t\tif (childNodes && parentNode) {\n\t\t\t\tconst childCount = childNodes.length;\n\t\t\t\tfor (let i = childCount - 1; i >= 0; --i) {\n\t\t\t\t\tconst hoisted = currentNode === root ? cloneNode(childNodes[i], true) : childNodes[i];\n\t\t\t\t\tparentNode.insertBefore(hoisted, getNextSibling(currentNode));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_forceRemove(currentNode);\n\t\treturn true;\n\t};\n\t/**\n\t* Fork a hook-mutable allowlist off its shared binding the first time a\n\t* (possibly lazily-installed) uponSanitize* hook is about to see it, so the\n\t* hook cannot widen the per-instance default or the setConfig binding by\n\t* reference and leak past the call. Returns the set unchanged once it is\n\t* already call-local, so repeated calls across elements are idempotent.\n\t*\n\t* @param hookList the uponSanitize* hook array for this event\n\t* @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding\n\t* @param defaultSet the per-instance DEFAULT_ALLOWED_* constant\n\t* @param setConfigSet the captured setConfig() binding, or null\n\t* @return a call-local clone if a hook is present and set is still shared,\n\t* else set unchanged\n\t*/\n\tconst _forkSharedAllowlist = function _forkSharedAllowlist(hookList, set, defaultSet, setConfigSet) {\n\t\tif (hookList.length === 0) return set;\n\t\treturn set === defaultSet || set === setConfigSet ? clone(set) : set;\n\t};\n\t/**\n\t* A hook may have detached the node it was called for. If so, treat it as\n\t* removed and stop processing it; the walk root is exempt. On the IN_PLACE\n\t* path the detached subtree is neutralized right away.\n\t*\n\t* @param currentNode the node a hook may have detached\n\t* @param root the current walk root\n\t* @return true if the node was detached\n\t*/\n\tconst _handleHookDetachedNode = function _handleHookDetachedNode(currentNode, root) {\n\t\tif (currentNode === root || getParentNode(currentNode) !== null) return false;\n\t\tif (IN_PLACE) _neutralizeSubtree(currentNode);\n\t\treturn true;\n\t};\n\t/**\n\t* _sanitizeElements\n\t*\n\t* @protect nodeName\n\t* @protect textContent\n\t* @protect removeChild\n\t* @param currentNode to check for permission to exist\n\t* @return true if node was killed, false if left alive\n\t*/\n\tconst _sanitizeElements = function _sanitizeElements(currentNode, root) {\n\t\t_markVisited(currentNode);\n\t\t_executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\tif (_isClobbered(currentNode)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tconst tagName = transformCaseFunc(_readNodeName(currentNode));\n\t\tALLOWED_TAGS = _forkSharedAllowlist(hooks.uponSanitizeElement, ALLOWED_TAGS, DEFAULT_ALLOWED_TAGS, SET_CONFIG_ALLOWED_TAGS);\n\t\t_executeHooks(hooks.uponSanitizeElement, currentNode, {\n\t\t\ttagName,\n\t\t\tallowedTags: ALLOWED_TAGS\n\t\t});\n\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\tif (_isUnsafeNode(currentNode, tagName)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {\n\t\t\tconst removed = _sanitizeDisallowedNode(currentNode, tagName, root);\n\t\t\tif (removed === false) {\n\t\t\t\t_executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\t\t\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\t\t}\n\t\t\treturn removed;\n\t\t}\n\t\tif (_readNodeType(currentNode) === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif ((tagName === \"noscript\" || tagName === \"noembed\" || tagName === \"noframes\") && regExpTest(FALLBACK_TAG_CLOSE, currentNode.innerHTML)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n\t\t\tconst content = _stripTemplateExpressions(currentNode.textContent);\n\t\t\tif (currentNode.textContent !== content) {\n\t\t\t\tarrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n\t\t\t\tcurrentNode.textContent = content;\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\t\treturn _handleHookDetachedNode(currentNode, root);\n\t};\n\t/**\n\t* _isValidAttribute\n\t*\n\t* @param lcTag Lowercase tag name of containing element.\n\t* @param lcName Lowercase attribute name.\n\t* @param value Attribute value.\n\t* @return Returns true if `value` is valid, otherwise false.\n\t*/\n\tconst _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n\t\tif (FORBID_ATTR[lcName]) return false;\n\t\tif (_isPatchLinkageAttribute(lcName, lcTag)) return false;\n\t\tif (SANITIZE_DOM && (lcName === \"id\" || lcName === \"name\") && (value in document || value in formElement)) return false;\n\t\tconst nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);\n\t\tif (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName)) return true;\n\t\tif (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) return true;\n\t\tif (!nameIsPermitted) return _isBasicCustomElement(lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName, lcTag) || lcName === \"is\" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value);\n\t\tif (URI_SAFE_ATTRIBUTES[lcName]) return true;\n\t\tif (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, \"\"))) return true;\n\t\tif ((lcName === \"src\" || lcName === \"xlink:href\" || lcName === \"href\") && lcTag !== \"script\" && stringIndexOf(value, \"data:\") === 0 && DATA_URI_TAGS[lcTag]) return true;\n\t\tif (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, \"\"))) return true;\n\t\treturn !value;\n\t};\n\tconst RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n\t\t\"annotation-xml\",\n\t\t\"color-profile\",\n\t\t\"font-face\",\n\t\t\"font-face-format\",\n\t\t\"font-face-name\",\n\t\t\"font-face-src\",\n\t\t\"font-face-uri\",\n\t\t\"missing-glyph\"\n\t]);\n\t/**\n\t* _isBasicCustomElement\n\t* checks if at least one dash is included in tagName, and it's not the first char\n\t* for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n\t*\n\t* @param tagName name of the tag of the node to sanitize\n\t* @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n\t*/\n\tconst _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n\t\treturn !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);\n\t};\n\t/**\n\t* Wrap an attribute value in the matching Trusted Types object when\n\t* the active policy requires it. Namespaced attributes pass through\n\t* unchanged (no TT support yet, see\n\t* https://bugs.chromium.org/p/chromium/issues/detail?id=1305293).\n\t*\n\t* @param lcTag lowercase tag name of the containing element\n\t* @param lcName lowercase attribute name\n\t* @param namespaceURI the attribute's namespace, if any\n\t* @param value the attribute value to wrap\n\t* @return the value, wrapped when Trusted Types demand it\n\t*/\n\tconst _applyTrustedTypesToAttribute = function _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value) {\n\t\tif (trustedTypesPolicy && typeof trustedTypes === \"object\" && typeof trustedTypes.getAttributeType === \"function\" && !namespaceURI) switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n\t\t\tcase \"TrustedHTML\": return _createTrustedHTML(value);\n\t\t\tcase \"TrustedScriptURL\": return _createTrustedScriptURL(value);\n\t\t}\n\t\treturn value;\n\t};\n\t/**\n\t* Write a modified attribute value back onto the element. On\n\t* success, re-probe for clobbering introduced by the new value and\n\t* remove the element when found; otherwise, when this writeback is the\n\t* recreate half of the SANITIZE_NAMED_PROPS remove-and-recreate, pop the\n\t* removal entry that path recorded so it does not show as removed. On\n\t* failure, remove the attribute instead.\n\t*\n\t* Returns true only on a clean write (the value was set and the new value\n\t* introduced no clobbering). The caller uses that, together with its own\n\t* knowledge of whether this attribute pushed a DOMPurify.removed record, to\n\t* decide whether to pop that record. The pop must happen ONLY for the\n\t* named-prop remove-and-recreate; popping on any other value change (trim,\n\t* template scrubbing, Trusted Types) would consume an unrelated _forceRemove\n\t* subtree-cleanup record and let that detached subtree keep a live event\n\t* handler through the IN_PLACE neutralization pass (SO-001).\n\t*\n\t* @param currentNode the element carrying the attribute\n\t* @param name the attribute name as present on the element\n\t* @param namespaceURI the attribute's namespace, if any\n\t* @param value the new attribute value\n\t* @return true if the value was written without introducing clobbering\n\t*/\n\tconst _setAttributeValue = function _setAttributeValue(currentNode, name, namespaceURI, value) {\n\t\ttry {\n\t\t\tif (namespaceURI) currentNode.setAttributeNS(namespaceURI, name, value);\n\t\t\telse currentNode.setAttribute(name, value);\n\t\t\tif (_isClobbered(currentNode)) {\n\t\t\t\t_forceRemove(currentNode);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (_) {\n\t\t\t_removeAttribute(name, currentNode);\n\t\t\treturn false;\n\t\t}\n\t};\n\t/**\n\t* _isUnsafeAttributeValue\n\t*\n\t* Value-based attribute checks that the attribute walk applies before any\n\t* hook can force-keep an attribute, shared with the public\n\t* isValidAttribute() so that it never approves a value sanitize() would\n\t* strip.\n\t*\n\t* @param name the attribute name as found on the node (case preserved)\n\t* @param value the attribute value\n\t* @returns true if the attribute must be removed because of its value\n\t*/\n\tconst _isUnsafeAttributeValue = function _isUnsafeAttributeValue(name, value) {\n\t\tif (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) return true;\n\t\treturn stringToLowerCase(name) === \"attributename\" && stringMatch(value, \"href\") !== null;\n\t};\n\t/**\n\t* _sanitizeAttributes\n\t*\n\t* @protect attributes\n\t* @protect nodeName\n\t* @protect removeAttribute\n\t* @protect setAttribute\n\t*\n\t* @param currentNode to sanitize\n\t* @param root the current walk root\n\t*/\n\tconst _sanitizeAttributes = function _sanitizeAttributes(currentNode, root) {\n\t\t_executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\t\tif (_handleHookDetachedNode(currentNode, root)) return;\n\t\tconst attributes = currentNode.attributes;\n\t\tif (!attributes || _isClobbered(currentNode)) return;\n\t\tALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);\n\t\tconst hookEvent = {\n\t\t\tattrName: \"\",\n\t\t\tattrValue: \"\",\n\t\t\tkeepAttr: true,\n\t\t\tallowedAttributes: ALLOWED_ATTR,\n\t\t\tforceKeepAttr: void 0\n\t\t};\n\t\tlet l = attributes.length;\n\t\tconst lcTag = transformCaseFunc(currentNode.nodeName);\n\t\twhile (l--) {\n\t\t\tconst attr = attributes[l];\n\t\t\tconst name = attr.name, namespaceURI = attr.namespaceURI, attrValue = attr.value;\n\t\t\tconst lcName = transformCaseFunc(name);\n\t\t\tconst initValue = attrValue;\n\t\t\tlet value = name === \"value\" ? initValue : stringTrim(initValue);\n\t\t\tlet recreatedNamedProp = false;\n\t\t\thookEvent.attrName = lcName;\n\t\t\thookEvent.attrValue = value;\n\t\t\thookEvent.keepAttr = true;\n\t\t\thookEvent.forceKeepAttr = void 0;\n\t\t\t_executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n\t\t\tvalue = hookEvent.attrValue;\n\t\t\tif (SANITIZE_NAMED_PROPS && (lcName === \"id\" || lcName === \"name\") && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tvalue = SANITIZE_NAMED_PROPS_PREFIX + value;\n\t\t\t\trecreatedNamedProp = true;\n\t\t\t}\n\t\t\tif (_isUnsafeAttributeValue(name, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (hookEvent.forceKeepAttr) continue;\n\t\t\tif (!hookEvent.keepAttr) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (SAFE_FOR_TEMPLATES) value = _stripTemplateExpressions(value);\n\t\t\tif (!_isValidAttribute(lcTag, lcName, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvalue = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);\n\t\t\tif (value !== initValue) {\n\t\t\t\tif (_setAttributeValue(currentNode, name, namespaceURI, value) && recreatedNamedProp) arrayPop(DOMPurify.removed);\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n\t\t_handleHookDetachedNode(currentNode, root);\n\t};\n\t/**\n\t* _sanitizeShadowDOM\n\t*\n\t* @param fragment to iterate over recursively\n\t*/\n\tconst _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {\n\t\tlet shadowNode = null;\n\t\tconst shadowIterator = _createNodeIterator(fragment);\n\t\t_executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\t\twhile (shadowNode = shadowIterator.nextNode()) {\n\t\t\t_executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\t\t\t_sanitizeElements(shadowNode, fragment);\n\t\t\t_sanitizeAttributes(shadowNode, fragment);\n\t\t\tif (_isDocumentFragment(shadowNode.content)) _sanitizeShadowDOM2(shadowNode.content);\n\t\t\tif (_readNodeType(shadowNode) === NODE_TYPE.element) {\n\t\t\t\tconst innerSr = getShadowRoot(shadowNode);\n\t\t\t\tif (_isDocumentFragment(innerSr)) {\n\t\t\t\t\t_sanitizeAttachedShadowRoots(innerSr);\n\t\t\t\t\t_sanitizeShadowDOM2(innerSr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (SAFE_FOR_TEMPLATES) _scrubOwnCharacterData(fragment);\n\t\t_executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n\t};\n\t/**\n\t* Sanitizes every attached shadow root under `root`, since the node\n\t* iterator does not enter shadow trees. Needed for IN_PLACE input and for\n\t* DOM input whose clonable shadow roots were copied by importNode().\n\t*\n\t* @param root the subtree root to walk for attached shadow roots\n\t*/\n\tconst _sanitizeAttachedShadowRoots = function _sanitizeAttachedShadowRoots(root) {\n\t\tconst stack = [{\n\t\t\tnode: root,\n\t\t\tshadow: null\n\t\t}];\n\t\twhile (stack.length > 0) {\n\t\t\tconst item = stack.pop();\n\t\t\tif (item.shadow) {\n\t\t\t\t_sanitizeShadowDOM2(item.shadow);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst node = item.node;\n\t\t\tconst isElement = _readNodeType(node) === NODE_TYPE.element;\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push({\n\t\t\t\tnode: childNodes[i],\n\t\t\t\tshadow: null\n\t\t\t});\n\t\t\tif (isElement) {\n\t\t\t\tconst rootName = getNodeName ? getNodeName(node) : null;\n\t\t\t\tif (typeof rootName === \"string\" && transformCaseFunc(rootName) === \"template\") {\n\t\t\t\t\tconst content = node.content;\n\t\t\t\t\tif (_isDocumentFragment(content)) stack.push({\n\t\t\t\t\t\tnode: content,\n\t\t\t\t\t\tshadow: null\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isElement) {\n\t\t\t\tconst sr = getShadowRoot(node);\n\t\t\t\tif (_isDocumentFragment(sr)) stack.push({\n\t\t\t\t\tnode: null,\n\t\t\t\t\tshadow: sr\n\t\t\t\t}, {\n\t\t\t\t\tnode: sr,\n\t\t\t\t\tshadow: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\tDOMPurify.sanitize = function(dirty) {\n\t\tlet cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n\t\tlet body = null;\n\t\tlet importedNode = null;\n\t\tlet currentNode = null;\n\t\tlet returnNode = null;\n\t\tIS_EMPTY_INPUT = !dirty;\n\t\tif (IS_EMPTY_INPUT) dirty = \"<!-->\";\n\t\tif (typeof dirty !== \"string\" && !_isNode(dirty)) {\n\t\t\tdirty = stringifyValue(dirty);\n\t\t\tif (typeof dirty !== \"string\") throw typeErrorCreate(\"dirty is not a string, aborting\");\n\t\t}\n\t\tif (!DOMPurify.isSupported) return dirty;\n\t\tif (SET_CONFIG) {\n\t\t\tALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;\n\t\t\tALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;\n\t\t} else _parseConfig(cfg);\n\t\tif (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0) ALLOWED_TAGS = clone(ALLOWED_TAGS);\n\t\tif (hooks.uponSanitizeAttribute.length > 0) ALLOWED_ATTR = clone(ALLOWED_ATTR);\n\t\tDOMPurify.removed = [];\n\t\tconst inPlace = IN_PLACE && typeof dirty !== \"string\" && _isNode(dirty);\n\t\tlet inPlaceNodes = [];\n\t\tconst outerVisited = IN_PLACE_VISITED;\n\t\tif (inPlace) {\n\t\t\t_neutralizePatchLinkage(dirty);\n\t\t\tconst nn = _readNodeName(dirty);\n\t\t\tif (typeof nn === \"string\") {\n\t\t\t\tconst tagName = transformCaseFunc(nn);\n\t\t\t\tif (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n\t\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\t\tthrow typeErrorCreate(\"root node is forbidden and cannot be sanitized in-place\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_isClobbered(dirty)) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\tthrow typeErrorCreate(\"root node is clobbered and cannot be sanitized in-place\");\n\t\t\t}\n\t\t\tinPlaceNodes = _collectLiveNodes(dirty);\n\t\t\tIN_PLACE_VISITED = setCreate();\n\t\t} else if (_isNode(dirty)) {\n\t\t\tbody = _initDocument(\"<!---->\");\n\t\t\timportedNode = body.ownerDocument.importNode(dirty, true);\n\t\t\tif (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === \"BODY\") body = importedNode;\n\t\t\telse if (importedNode.nodeName === \"HTML\") body = importedNode;\n\t\t\telse body.appendChild(importedNode);\n\t\t\t_sanitizeAttachedShadowRoots(body);\n\t\t} else {\n\t\t\tif (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf(\"<\") === -1) return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;\n\t\t\tbody = _initDocument(dirty);\n\t\t\tif (!body) return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : \"\";\n\t\t}\n\t\tif (body && FORCE_BODY) _forceRemove(body.firstChild);\n\t\tconst walkRoot = inPlace ? dirty : body;\n\t\ttry {\n\t\t\tif (inPlace) _sanitizeAttachedShadowRoots(dirty);\n\t\t\tconst nodeIterator = _createNodeIterator(walkRoot);\n\t\t\twhile (currentNode = nodeIterator.nextNode()) {\n\t\t\t\t_sanitizeElements(currentNode, walkRoot);\n\t\t\t\t_sanitizeAttributes(currentNode, walkRoot);\n\t\t\t\tif (_isDocumentFragment(currentNode.content)) _sanitizeShadowDOM2(currentNode.content);\n\t\t\t}\n\t\t\tif (inPlace) _sanitizeUnvisitedNodes(dirty, inPlaceNodes);\n\t\t} catch (error) {\n\t\t\tif (inPlace) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\t_neutralizeDiscarded(dirty, inPlaceNodes);\n\t\t\t}\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tIN_PLACE_VISITED = outerVisited;\n\t\t}\n\t\tif (inPlace) {\n\t\t\tif (_neutralizeDiscarded(dirty, inPlaceNodes)) throw typeErrorCreate(\"a node selected for removal could not be safely returned; refusing to sanitize in place\");\n\t\t\tif (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(dirty);\n\t\t\treturn dirty;\n\t\t}\n\t\tif (RETURN_DOM) {\n\t\t\tif (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(body);\n\t\t\tif (RETURN_DOM_FRAGMENT) {\n\t\t\t\treturnNode = createDocumentFragment.call(body.ownerDocument);\n\t\t\t\twhile (body.firstChild) returnNode.appendChild(body.firstChild);\n\t\t\t} else returnNode = body;\n\t\t\tif (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) returnNode = importNode.call(originalDocument, returnNode, true);\n\t\t\treturn returnNode;\n\t\t}\n\t\tlet serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\t\tif (WHOLE_DOCUMENT && ALLOWED_TAGS[\"!doctype\"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) serializedHTML = \"<!DOCTYPE \" + body.ownerDocument.doctype.name + \">\\n\" + serializedHTML;\n\t\tif (SAFE_FOR_TEMPLATES) serializedHTML = _stripTemplateExpressions(serializedHTML);\n\t\treturn trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(serializedHTML) : serializedHTML;\n\t};\n\tDOMPurify.setConfig = function() {\n\t\tlet cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t\t_parseConfig(cfg);\n\t\tSET_CONFIG = true;\n\t\tSET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;\n\t\tSET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;\n\t};\n\tDOMPurify.clearConfig = function() {\n\t\tCONFIG = null;\n\t\tSET_CONFIG = false;\n\t\tSET_CONFIG_ALLOWED_TAGS = null;\n\t\tSET_CONFIG_ALLOWED_ATTR = null;\n\t\ttrustedTypesPolicy = defaultTrustedTypesPolicy;\n\t\temptyHTML = \"\";\n\t};\n\tDOMPurify.isValidAttribute = function(tag, attr, value) {\n\t\tif (!CONFIG) _parseConfig({});\n\t\tconst lcTag = transformCaseFunc(tag);\n\t\tconst lcName = transformCaseFunc(attr);\n\t\tif (typeof value === \"string\" && (_isUnsafeAttributeValue(attr, value) || !ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value))) return false;\n\t\treturn _isValidAttribute(lcTag, lcName, value);\n\t};\n\tDOMPurify.addHook = function(entryPoint, hookFunction) {\n\t\tif (typeof hookFunction !== \"function\") return;\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\tarrayPush(hooks[entryPoint], hookFunction);\n\t};\n\tDOMPurify.removeHook = function(entryPoint, hookFunction) {\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\tif (hookFunction !== void 0) {\n\t\t\tconst index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\t\t\treturn index === -1 ? void 0 : arraySplice(hooks[entryPoint], index, 1)[0];\n\t\t}\n\t\treturn arrayPop(hooks[entryPoint]);\n\t};\n\tDOMPurify.removeHooks = function(entryPoint) {\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\thooks[entryPoint] = [];\n\t};\n\tDOMPurify.removeAllHooks = function() {\n\t\thooks = _createHooksMap();\n\t};\n\treturn DOMPurify;\n}\nvar purify_default = createDOMPurify();\nexport { purify_default as default };\n\n//# sourceMappingURL=purify.es.mjs.map","import DOMPurify, { type Config } from 'dompurify'\n\n/**\n * Escapes text for the inside of an HTML element.\n */\nexport function escapeHtml(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n}\n\n/**\n * The placeholder a formula waits in until KaTeX renders it. The formula is\n * percent-encoded, not entity-encoded: the sanitizer drops an attribute whose\n * value holds `]>` or `-->`, and a formula can (`[a,b]>0`). The encoding has\n * no quote either, so the formula cannot close the attribute.\n */\nexport function renderKatexPlaceholder(\n text: string,\n displayMode: boolean,\n): string {\n const encoded = encodeURIComponent(text)\n return `<span class=\"katex-pending\" data-katex=\"${encoded}\" data-display=\"${displayMode}\"></span>`\n}\n\n// `target` is not among DOMPurify's defaults, and the link renderer sets it on\n// every external link. Without the unknown protocols an app link\n// (`msteams:`, `whatsapp:`) lost its href; the schemes that run code (`*script:`,\n// `data:` outside images) stay refused. A `<style>` element or a `style`\n// attribute can lay a fake page over the real one, and a form can post what the\n// reader types anywhere: the markdown never produces any of the three. Nor\n// does it produce the other ways of fetching a url by rendering it (media\n// elements, `srcset`, a poster, the `background` of a table, an SVG image or\n// filter image), which would carry an answer past the image hosts of the agent.\nconst SANITIZE_CONFIG: Config = {\n ADD_ATTR: ['target'],\n ALLOW_UNKNOWN_PROTOCOLS: true,\n FORBID_TAGS: [\n 'style',\n 'form',\n 'audio',\n 'video',\n 'source',\n 'picture',\n 'track',\n 'image',\n 'feImage',\n ],\n FORBID_ATTR: ['style', 'srcset', 'poster', 'background'],\n}\n\n// DOMPurify keeps `src` on any element, and an image input or a MathML glyph\n// fetches it as soon as it renders. Only an `<img>` keeps it, where the held\n// images below judge it; the inputs marked writes, the checkboxes of a task\n// list, have none.\nDOMPurify.addHook('uponSanitizeAttribute', (node, data) => {\n if (data.attrName === 'src' && node.nodeName !== 'IMG') {\n data.keepAttr = false\n }\n})\n\n/**\n * What the sanitizer does with an image the chat may not load by itself\n * (see `chatImagePolicy.ts`).\n */\nexport interface HeldImages {\n canLoad: (src: string) => boolean\n hostOf: (src: string) => string | undefined\n /** The words on the placeholder, for the host the image points to. */\n label: (host: string) => string\n}\n\n/** The attribute a held image keeps its url in, read back on a click. */\nexport const HELD_IMAGE_ATTRIBUTE = 'data-held-src'\n\n/**\n * Cleans the HTML rendered from a markdown before it reaches `v-html`. The\n * markdown is written by a model, and through the knowledge base, the tools and\n * the pages it reads, by whoever wrote those; marked passes the HTML it finds\n * through untouched, so a handler written in a document ran in the browser of\n * whoever read the answer. Scripts, handlers, `javascript:` urls, styles and\n * forms go, the formatting stays.\n *\n * With `held`, an image the chat may not load by itself becomes a button that\n * names its host: the url waits in an attribute, which fetches nothing, until\n * the reader asks for it.\n */\nexport function sanitizeMarkdownHtml(html: string, held?: HeldImages): string {\n if (!held) {\n return DOMPurify.sanitize(html, SANITIZE_CONFIG)\n }\n const fragment = DOMPurify.sanitize(html, {\n ...SANITIZE_CONFIG,\n RETURN_DOM_FRAGMENT: true,\n })\n for (const image of Array.from(fragment.querySelectorAll('img'))) {\n const src = image.getAttribute('src') ?? ''\n if (held.canLoad(src)) {\n continue\n }\n const button = image.ownerDocument.createElement('button')\n button.type = 'button'\n button.className = 'markdown-held-image'\n button.setAttribute(HELD_IMAGE_ATTRIBUTE, src)\n button.textContent = held.label(held.hostOf(src) ?? src)\n image.replaceWith(button)\n }\n // Serialized in the inert document DOMPurify parsed into: moved into the\n // page's document, an image would start loading before `v-html` runs.\n const container = fragment.ownerDocument.createElement('div')\n container.append(fragment)\n return container.innerHTML\n}\n","import type { ComputedRef, InjectionKey } from 'vue'\nimport { computed, inject, provide, ref } from 'vue'\nimport { useShortUrlResolver } from 'composables'\nimport { normalizeImageHost } from 'models'\nimport { urlOrigin } from 'utils'\n\n/**\n * Which images a chat loads by itself: hole 20 of\n * docs/specs/organization-isolation.md.\n *\n * The model writes the url of every image in an answer and in the image tool\n * cards (gallery, products, web pages), and a prompt injected through a\n * document, a page or a tool result can make it put the conversation in that\n * url. The browser fetches it as soon as it renders, and the text is gone.\n * So an image loads by itself only from the media of the platform and from\n * the hosts the agent lists (`interface.imageHosts`); any other shows its host\n * and loads on a click, a choice made by whoever reads it.\n *\n * Provided by `PkChatbot` (the app and the widget) and by the pages that show\n * an agent's answers; where nothing is provided, images load as before.\n */\nexport interface ChatImagePolicy {\n /** Host names the agent lists, normalized (`normalizeImageHost`). */\n hosts: string[]\n /** Origins of the platform, which serve the media of a chat. */\n platformOrigins: string[]\n}\n\nexport const ChatImagePolicyKey: InjectionKey<ComputedRef<ChatImagePolicy>> =\n Symbol('ChatImagePolicy')\n\n/**\n * Applies the policy of an agent to the answers rendered below: its listed\n * hosts, and the backend the page talks to, which serves the chat's media.\n * The hosts are normalized again because a preview passes them as typed,\n * before the schema does.\n */\nexport function provideChatImagePolicy(\n hosts: () => string[] | undefined,\n backendUrl: () => string | undefined,\n) {\n provide(\n ChatImagePolicyKey,\n computed(() => ({\n hosts: (hosts() ?? []).map(normalizeImageHost),\n platformOrigins: [urlOrigin(backendUrl())].filter(\n (origin): origin is string => !!origin,\n ),\n })),\n )\n}\n\n/**\n * The host an image url points to, for the placeholder, or `undefined` when\n * it does not parse.\n */\nexport function imageHostOf(src: string, pageUrl: string): string | undefined {\n try {\n return new URL(src, pageUrl).hostname || undefined\n } catch {\n return undefined\n }\n}\n\n/**\n * The paths the platform serves the media of a chat from (`media.service.ts`\n * and `chatMedia.service.ts` in the backend). Only these: the same origin\n * answers sign-in and OAuth routes that redirect to a url read from the query,\n * which would carry an answer anywhere. A short link (`/api/r/<hash>`) is not\n * among them either: `useChatImageGate` judges it by the url it stands for,\n * since a set of links prepared in advance could spell a secret out.\n */\nconst PLATFORM_MEDIA_PATH =\n /^\\/api\\/v1\\/(?:public\\/medias\\/[^/]+|[^/]+\\/agents\\/[^/]+\\/chats\\/[^/]+\\/media\\/[^/]+\\/(?:view|download))$/\n\n/**\n * Whether an image may load without a click. `data:` and `blob:` images never\n * reach the network; everything else needs the media of the platform or a\n * listed host, over https. The page's own origin gets no exception: a site,\n * the platform's included, often redirects wherever its query says.\n */\nexport function isImageAllowed(\n src: string,\n policy: ChatImagePolicy,\n pageUrl: string,\n): boolean {\n let url: URL\n try {\n url = new URL(src, pageUrl)\n } catch {\n return false\n }\n if (url.protocol === 'data:' || url.protocol === 'blob:') {\n return true\n }\n if (policy.platformOrigins.includes(url.origin)) {\n return PLATFORM_MEDIA_PATH.test(url.pathname)\n }\n return url.protocol === 'https:' && policy.hosts.includes(url.hostname)\n}\n\n/**\n * The policy of the surrounding chat, with the images released by a click.\n * A release is per url and lasts as long as the component that asked. A\n * short link of the platform is judged, and named, by the url it stands for:\n * it waits until the resolver brings that url back.\n */\nexport function useChatImageGate() {\n const policy = inject(ChatImagePolicyKey, undefined)\n const shortUrls = useShortUrlResolver()\n const released = ref(new Set<string>())\n const pageUrl = () =>\n typeof window === 'undefined'\n ? 'https://localhost/'\n : window.location.href\n const target = (src: string) => shortUrls.resolve(src).value.url ?? src\n\n const canLoad = (src: string | undefined): boolean =>\n !src ||\n !policy ||\n released.value.has(src) ||\n isImageAllowed(target(src), policy.value, pageUrl())\n\n const release = (src: string) => {\n released.value = new Set(released.value).add(src)\n }\n\n const hostOf = (src: string) => imageHostOf(target(src), pageUrl())\n\n return {\n /** Whether a policy applies here at all. */\n isGated: computed(() => !!policy),\n canLoad,\n release,\n hostOf,\n }\n}\n","<script setup lang=\"ts\">\n import remend from 'remend'\n import { marked, type Token, type Tokens } from 'marked'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n toRef,\n useTemplateRef,\n watch,\n } from 'vue'\n import { refThrottled } from '@vueuse/core'\n import { useI18n } from 'vue-i18n'\n import {\n loadCdnCss,\n getShadowRoot,\n isSameSite,\n stripProviderCitationMarkers,\n } from 'utils'\n import { useShortUrlResolver } from 'composables'\n import { getMarkdownTail } from './utils'\n import {\n escapeHtml,\n HELD_IMAGE_ATTRIBUTE,\n renderKatexPlaceholder,\n sanitizeMarkdownHtml,\n } from './markdownHtml'\n import { useChatImageGate } from './chatImagePolicy'\n\n export type StreamingAnimation =\n 'fadeIn' | 'blurIn' | 'dropIn' | 'slideUp' | 'fadeAndScale' | null\n\n const props = withDefaults(\n defineProps<{\n markdown?: string\n loading?: boolean\n animation?: StreamingAnimation\n animationDuration?: string\n isDark?: boolean\n /**\n * Renders only the last `tailLength` characters, for a live box\n * that follows the bottom of a text too long to parse whole.\n */\n tailLength?: number\n }>(),\n {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\n tailLength: undefined,\n },\n )\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n // --- Lazy-loaded heavy dependencies ---\n\n let beautifulMermaidPromise: Promise<\n typeof import('beautiful-mermaid')\n > | null = null\n function loadBeautifulMermaid() {\n if (!beautifulMermaidPromise) {\n beautifulMermaidPromise = import('beautiful-mermaid')\n }\n return beautifulMermaidPromise\n }\n\n let katexPromise: Promise<(typeof import('katex'))['default']> | null = null\n function loadKatex() {\n if (!katexPromise) {\n katexPromise = import('katex').then((mod) => mod.default)\n }\n return katexPromise\n }\n\n // --- Marked extensions ---\n\n const inlineKatexRule =\n /^(\\${1,2})(?!\\$)((?:\\\\.|[^\\\\\\n])*?(?:\\\\.|[^\\\\\\n$]))\\1(?=[\\s?!.,:\\uFF1F\\uFF01\\u3002\\uFF0C\\uFF1A]|$)/\n const blockKatexRule = /^(\\${1,2})\\n((?:\\\\[^]|[^\\\\])+?)\\n\\1(?:\\n|$)/\n\n marked.use({\n extensions: [\n {\n name: 'inlineKatex',\n level: 'inline',\n start: (src) => {\n const idx = src.indexOf('$')\n if (idx === -1) {\n return undefined\n }\n if (idx === 0 || src.charAt(idx - 1) === ' ') {\n return idx\n }\n return undefined\n },\n tokenizer(src) {\n const match = src.match(inlineKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'inlineKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return renderKatexPlaceholder(token.text, token.displayMode)\n },\n },\n {\n name: 'blockKatex',\n level: 'block',\n tokenizer(src) {\n const match = src.match(blockKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'blockKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return (\n renderKatexPlaceholder(token.text, token.displayMode) +\n '\\n'\n )\n },\n },\n ],\n })\n\n marked.use({\n extensions: [\n {\n name: 'thinking',\n level: 'block',\n start: (src) => src.indexOf('<thinking>'),\n tokenizer(src) {\n const match = /^<thinking>([\\s\\S]*?)<\\/thinking>/.exec(src)\n if (!match) {\n return\n }\n const token = {\n type: 'thinking',\n raw: match[0],\n text: match[1].trim(),\n tokens: [] as Token[],\n }\n this.lexer.blockTokens(token.text, token.tokens)\n return token\n },\n renderer(token) {\n return `<div class=\"thinking-block\">${this.parser.parse(token.tokens ?? [])}</div>`\n },\n },\n ],\n })\n\n // --- Custom renderer ---\n\n const renderer = new marked.Renderer()\n\n // marked escapes href and title inside its own link renderer. This\n // override replaces that renderer, so until now both went into `v-html`\n // verbatim: a quote in the URL closed the attribute and everything after\n // it became markup, in a document written by a model and, through the\n // knowledge base, by whoever fed it.\n const escapeAttribute = (value: string) =>\n value\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n // Schemes that execute rather than navigate. The link becomes plain text,\n // so the reader still sees what it said.\n const UNSAFE_LINK_SCHEME = /^(?:javascript|data|vbscript|file):/i\n\n // A bare address written in a cell is most of its row: the cell shows it\n // without the scheme and `www.`, with a break after each slash, while the\n // href and the tooltip keep it whole. Set while `renderer.table` renders\n // its cells, which marked does synchronously.\n let isRenderingTable = false\n const shortenAddress = (address: string) =>\n escapeAttribute(\n address.replace(/^https?:\\/\\/(?:www\\.)?/i, '').replace(/\\/$/, ''),\n ).replace(/\\//g, '/<wbr>')\n\n renderer.link = function ({ href, title, text: label, tokens }) {\n const text = this.parser.parseInline(tokens)\n // Control characters go first: the browser strips them before reading\n // the scheme, so they are how `java\\tscript:` gets past a check.\n // eslint-disable-next-line no-control-regex -- they are the point here\n const target = (href ?? '').trim().replace(/[\\x00-\\x1f]/g, '')\n if (!target || UNSAFE_LINK_SCHEME.test(target)) {\n return text\n }\n const isBareAddressInTable = isRenderingTable && label === target\n const tooltip = title || (isBareAddressInTable ? target : '')\n const titleAttr = tooltip ? ` title=\"${escapeAttribute(tooltip)}\"` : ''\n const targetAttrs = isSameSite(target)\n ? ''\n : ' target=\"_blank\" rel=\"noopener noreferrer\"'\n return `<a href=\"${escapeAttribute(target)}\"${titleAttr}${targetAttrs}>${isBareAddressInTable ? shortenAddress(target) : text}</a>`\n }\n\n // A data table (`.u-table`). From three columns up it stacks its rows into\n // blocks when the message is too narrow for them, with the heading of\n // each column, copied into `data-label`, as the label of its value; two\n // columns still fit side by side. The roles keep it a table for screen\n // readers once the style changes its display. Stacked, a cell is a grid\n // of label and value, and every child of a grid is an item of its own:\n // the value goes in one span, or a bold word, a link or the words the\n // stream animates one by one would scatter across both columns.\n renderer.table = function (token) {\n isRenderingTable = true\n try {\n const labels = token.header.map((cell) =>\n escapeAttribute(\n this.parser.parseInline(\n cell.tokens,\n this.parser.textRenderer,\n ),\n ),\n )\n const renderRow = (cells: Tokens.TableCell[]) =>\n `<tr role=\"row\">${cells\n .map((cell, index) => {\n const content = this.parser.parseInline(cell.tokens)\n const align = cell.align ? ` align=\"${cell.align}\"` : ''\n return cell.header\n ? `<th role=\"columnheader\"${align}>${content}</th>`\n : `<td role=\"cell\" data-label=\"${labels[index] ?? ''}\"${align}><span>${content}</span></td>`\n })\n .join('')}</tr>`\n const body = token.rows.length\n ? `<tbody role=\"rowgroup\">${token.rows.map(renderRow).join('')}</tbody>`\n : ''\n // Stacked, the head is out of sight and every row carries the\n // labels: a table with no rows yet (a header-only one, or the\n // stream before its first row) would show nothing at all.\n const tableClass =\n token.header.length >= 3 && token.rows.length\n ? 'u-table u-table--stack'\n : 'u-table'\n return `<div class=\"table-wrapper u-table-scroll\"><table class=\"${tableClass}\" role=\"table\"><thead role=\"rowgroup\">${renderRow(token.header)}</thead>${body}</table></div>\\n`\n } finally {\n isRenderingTable = false\n }\n }\n\n const MERMAID_PREFIXES =\n /^(sequenceDiagram|graph|classDiagram|stateDiagram|erDiagram|flowchart|xychart-beta)/\n\n // A fence holds code to show, not markup. Unescaped, an HTML sample became\n // elements and lost its tags before the highlighter read what was left.\n // Both the highlighter and the diagram renderer read `textContent`, which\n // gives the text back as written.\n renderer.code = ({ text }) => {\n if (MERMAID_PREFIXES.test(text)) {\n return `<pre class=\"mermaid\">${escapeHtml(text)}</pre>`\n }\n return `<pre><code>${escapeHtml(text)}</code></pre>`\n }\n\n // --- Preprocessing pipeline ---\n\n function normalizeLatexDelimiters(md: string): string {\n return md\n .replace(/\\\\\\[([\\s\\S]*?)\\\\\\]/g, (_, content) => `$$${content}$$`)\n .replace(/\\\\\\(([\\s\\S]*?)\\\\\\)/g, (_, content) => `$${content}$`)\n .replace(/^(\\d+)\\.(?!\\s)/gm, '$1\\\\.')\n }\n\n /**\n * Strips JSON objects/arrays that appear outside fenced code blocks.\n * Some models dump tool-call JSON directly into the text response.\n */\n function stripLeakedJson(md: string): string {\n const fenced = new Set<number>()\n const fenceRe = /^(`{3,}|~{3,})[^\\n]*\\n([\\s\\S]*?)\\n\\1/gm\n let fenceMatch: RegExpExecArray | null\n while ((fenceMatch = fenceRe.exec(md)) !== null) {\n for (\n let i = fenceMatch.index;\n i < fenceMatch.index + fenceMatch[0].length;\n i++\n ) {\n fenced.add(i)\n }\n }\n\n return md\n .replace(\n /[{[]([\\s\\S]*?)[}\\]]/g,\n (match, _inner, offset: number) => {\n if (fenced.has(offset)) {\n return match\n }\n try {\n JSON.parse(match)\n return ''\n } catch {\n return match\n }\n },\n )\n .replace(/\\n{3,}/g, '\\n\\n')\n }\n\n // Runs on the accumulated text, not on deltas, so a marker split across two\n // stream chunks still gets caught once both have landed.\n const preprocessors: Array<(md: string) => string> = [\n stripProviderCitationMarkers,\n stripLeakedJson,\n remend,\n normalizeLatexDelimiters,\n ]\n\n // --- Computed HTML ---\n\n const containerRef = useTemplateRef<HTMLDivElement>('container')\n\n // Every render parses the whole text again, and a stream changes it at every\n // delta: the cost of a turn grows with the square of its length. On chat\n // `st0Eg8iG0zUX0HQN` one parse took 24ms at 92KB, thousands of deltas\n // arrived, and the tab froze. The first text renders at once, the changes\n // after it at most once per interval, the last one always included.\n const RENDER_INTERVAL_MS = 100\n const renderedMarkdown = refThrottled(\n toRef(props, 'markdown'),\n RENDER_INTERVAL_MS,\n )\n const visibleMarkdown = computed(() =>\n props.tailLength\n ? getMarkdownTail(renderedMarkdown.value, props.tailLength)\n : renderedMarkdown.value,\n )\n\n // Expand backend short urls (`/api/r/<hash>`) back to their real target so\n // prose (e.g. a bulleted list of links) shows/opens real urls, not the\n // token-cheap short ones the model sees. No-op when no resolver is provided.\n const { resolveText } = useShortUrlResolver()\n const expandedMarkdown = resolveText(visibleMarkdown)\n\n // Inside a chat, an image from a host the agent does not list waits for a\n // click (see chatImagePolicy.ts); elsewhere images load as they always did.\n const imageGate = useChatImageGate()\n\n const html = computed(() => {\n const md = preprocessors.reduce(\n (text, fn) => fn(text),\n expandedMarkdown.value,\n )\n return sanitizeMarkdownHtml(\n marked.parse(md, {\n async: false,\n breaks: true,\n renderer,\n }) as string,\n imageGate.isGated.value\n ? {\n canLoad: imageGate.canLoad,\n hostOf: imageGate.hostOf,\n label: (host) => $t('label.imageHeld', { host }),\n }\n : undefined,\n )\n })\n\n /**\n * A held image is a button carrying its url: a click (or Enter, which a\n * button turns into one) releases that url, and the next render shows\n * the image. It may sit inside a link, which must not open.\n */\n function onContentClick(event: MouseEvent) {\n const held = (event.target as Element | null)?.closest?.(\n `[${HELD_IMAGE_ATTRIBUTE}]`,\n )\n const src = held?.getAttribute(HELD_IMAGE_ATTRIBUTE)\n if (!src) {\n return\n }\n event.preventDefault()\n event.stopPropagation()\n imageGate.release(src)\n }\n\n // --- Post-render processors ---\n\n async function renderMermaid() {\n if (props.loading) {\n return\n }\n\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid:not([data-rendered])',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.textContent?.trim()\n if (!code) {\n continue\n }\n\n try {\n const svg = renderMermaidSVG(code, theme)\n if (node.isConnected) {\n node.dataset.code = code\n node.innerHTML = svg\n node.setAttribute('data-rendered', 'true')\n }\n } catch {\n // Invalid syntax — node left untouched\n }\n }\n }\n\n async function highlightCode() {\n await nextTick()\n const blocks = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre:not(.mermaid) > code:not([data-highlighted])',\n )\n if (!blocks?.length) {\n return\n }\n\n const hljs = (await import('highlight.js/lib/common')).default\n for (const block of blocks) {\n hljs.highlightElement(block)\n block.setAttribute('data-highlighted', 'true')\n }\n }\n\n async function renderKatex() {\n await nextTick()\n const nodes =\n containerRef.value?.querySelectorAll<HTMLElement>('.katex-pending')\n if (!nodes?.length) {\n return\n }\n\n const katex = await loadKatex()\n // Keep this major in step with the installed katex: 0.18 prefixed the\n // internal class names (.sizing became .katex-sizing), so a stylesheet\n // from another major styles nothing. The widget pins the same major\n // again in its vite config, where katex is aliased to the CDN.\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/katex@0.18/dist/katex.min.css',\n getShadowRoot(containerRef.value),\n )\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const tex = node.dataset.katex\n if (!tex) {\n continue\n }\n const displayMode = node.dataset.display === 'true'\n try {\n node.innerHTML = katex.renderToString(decodeURIComponent(tex), {\n throwOnError: false,\n displayMode,\n })\n node.classList.remove('katex-pending')\n } catch {\n // Invalid LaTeX — leave placeholder\n }\n }\n }\n\n async function rerenderMermaidOnThemeChange() {\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid[data-rendered]',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.dataset.code\n if (!code) {\n continue\n }\n try {\n node.innerHTML = renderMermaidSVG(code, theme)\n } catch {\n // Invalid syntax — leave as-is\n }\n }\n }\n\n /**\n * Markdown images come from model output (or from a scraped page), so their\n * urls die often. The markup is injected with `v-html`, so there is no place\n * to bind `@error`: `error` doesn't bubble but it does propagate in the\n * capture phase, so one container listener covers every image, including the\n * ones added by later stream chunks.\n */\n function handleImageError(event: Event) {\n const img = event.target\n if (!(img instanceof HTMLImageElement) || img.dataset.broken) {\n return\n }\n img.dataset.broken = 'true'\n const placeholder = document.createElement('span')\n placeholder.className = 'markdown-broken-image'\n placeholder.textContent = img.alt || $t('label.imageLoadError')\n placeholder.title = img.src\n img.replaceWith(placeholder)\n }\n\n onMounted(() => {\n containerRef.value?.addEventListener('error', handleImageError, true)\n })\n onBeforeUnmount(() => {\n containerRef.value?.removeEventListener('error', handleImageError, true)\n })\n\n watch([html, () => props.loading], renderMermaid, { immediate: true })\n watch(() => props.isDark, rerenderMermaidOnThemeChange)\n watch(html, highlightCode, { immediate: true })\n watch(html, renderKatex, { immediate: true })\n\n // --- Streaming animation (FlowToken-style) ---\n\n let prevCharCount = 0\n\n function createAnimatedSpan(text: string, delay: number): HTMLSpanElement {\n const span = document.createElement('span')\n span.style.cssText = `animation:ft-${props.animation} ${props.animationDuration} ease-out ${delay}ms both;display:inline-block`\n span.textContent = text\n span.addEventListener(\n 'animationend',\n () => {\n const parent = span.parentNode\n if (!parent) {\n return\n }\n parent.replaceChild(document.createTextNode(text), span)\n parent.normalize()\n },\n { once: true },\n )\n return span\n }\n\n function insertAnimatedWords(\n text: string,\n parent: Node,\n refNode: Node | null,\n startIndex: number,\n ): number {\n let idx = startIndex\n const parts = text.split(/(\\s+)/)\n for (const part of parts) {\n if (!part) {\n continue\n }\n if (/^\\s+$/.test(part)) {\n parent.insertBefore(document.createTextNode(part), refNode)\n continue\n }\n parent.insertBefore(createAnimatedSpan(part, idx * 30), refNode)\n idx++\n }\n return idx\n }\n\n function collectTextNodes(root: HTMLElement): Text[] {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n if (\n node.parentElement?.closest(\n 'pre, code, .katex-pending, .markdown-broken-image',\n )\n ) {\n return NodeFilter.FILTER_REJECT\n }\n return NodeFilter.FILTER_ACCEPT\n },\n })\n const nodes: Text[] = []\n while (walker.nextNode()) {\n nodes.push(walker.currentNode as Text)\n }\n return nodes\n }\n\n function annotateNewContent() {\n if (!containerRef.value || !props.loading || !props.animation) {\n return\n }\n\n const textNodes = collectTextNodes(containerRef.value)\n let charsSeen = 0\n let wordIdx = 0\n\n for (const textNode of textNodes) {\n const text = textNode.textContent || ''\n const nodeStart = charsSeen\n const nodeEnd = charsSeen + text.length\n charsSeen = nodeEnd\n\n if (nodeEnd <= prevCharCount) {\n continue\n }\n\n const parent = textNode.parentNode\n if (!parent) {\n continue\n }\n\n // Entirely new node — animate all words\n if (nodeStart >= prevCharCount) {\n const ref = textNode.nextSibling\n parent.removeChild(textNode)\n wordIdx = insertAnimatedWords(text, parent, ref, wordIdx)\n continue\n }\n\n // Partially new — split and animate only the new portion\n const splitAt = prevCharCount - nodeStart\n const newTextNode = textNode.splitText(splitAt)\n const newText = newTextNode.textContent || ''\n const ref = newTextNode.nextSibling\n parent.removeChild(newTextNode)\n wordIdx = insertAnimatedWords(newText, parent, ref, wordIdx)\n }\n\n prevCharCount = charsSeen\n }\n\n watch(\n html,\n async () => {\n await nextTick()\n annotateNewContent()\n },\n { immediate: true },\n )\n\n watch(\n () => props.markdown,\n (newVal, oldVal) => {\n if (!newVal || (oldVal && newVal.length < oldVal.length)) {\n prevCharCount = 0\n }\n },\n )\n</script>\n\n<template>\n <div ref=\"container\" @click=\"onContentClick\" v-html=\"html\"></div>\n</template>\n\n<style>\n .markdown-held-image {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-3);\n font: inherit;\n font-size: var(--text-12);\n vertical-align: middle;\n cursor: pointer;\n }\n\n .markdown-held-image:hover,\n .markdown-held-image:focus-visible {\n background-color: var(--color-surface-2);\n color: var(--color-word-2);\n }\n\n .markdown-broken-image {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-4);\n font-size: var(--text-12);\n vertical-align: middle;\n }\n\n @keyframes ft-fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes ft-blurIn {\n from {\n opacity: 0;\n filter: blur(4px);\n }\n to {\n opacity: 1;\n filter: blur(0px);\n }\n }\n\n @keyframes ft-dropIn {\n from {\n transform: translateY(-8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-slideUp {\n from {\n transform: translateY(8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-fadeAndScale {\n from {\n transform: scale(0.85);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n</style>\n","<script setup lang=\"ts\">\n import remend from 'remend'\n import { marked, type Token, type Tokens } from 'marked'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n toRef,\n useTemplateRef,\n watch,\n } from 'vue'\n import { refThrottled } from '@vueuse/core'\n import { useI18n } from 'vue-i18n'\n import {\n loadCdnCss,\n getShadowRoot,\n isSameSite,\n stripProviderCitationMarkers,\n } from 'utils'\n import { useShortUrlResolver } from 'composables'\n import { getMarkdownTail } from './utils'\n import {\n escapeHtml,\n HELD_IMAGE_ATTRIBUTE,\n renderKatexPlaceholder,\n sanitizeMarkdownHtml,\n } from './markdownHtml'\n import { useChatImageGate } from './chatImagePolicy'\n\n export type StreamingAnimation =\n 'fadeIn' | 'blurIn' | 'dropIn' | 'slideUp' | 'fadeAndScale' | null\n\n const props = withDefaults(\n defineProps<{\n markdown?: string\n loading?: boolean\n animation?: StreamingAnimation\n animationDuration?: string\n isDark?: boolean\n /**\n * Renders only the last `tailLength` characters, for a live box\n * that follows the bottom of a text too long to parse whole.\n */\n tailLength?: number\n }>(),\n {\n markdown: '',\n loading: false,\n animation: 'fadeIn',\n animationDuration: '0.3s',\n isDark: false,\n tailLength: undefined,\n },\n )\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n // --- Lazy-loaded heavy dependencies ---\n\n let beautifulMermaidPromise: Promise<\n typeof import('beautiful-mermaid')\n > | null = null\n function loadBeautifulMermaid() {\n if (!beautifulMermaidPromise) {\n beautifulMermaidPromise = import('beautiful-mermaid')\n }\n return beautifulMermaidPromise\n }\n\n let katexPromise: Promise<(typeof import('katex'))['default']> | null = null\n function loadKatex() {\n if (!katexPromise) {\n katexPromise = import('katex').then((mod) => mod.default)\n }\n return katexPromise\n }\n\n // --- Marked extensions ---\n\n const inlineKatexRule =\n /^(\\${1,2})(?!\\$)((?:\\\\.|[^\\\\\\n])*?(?:\\\\.|[^\\\\\\n$]))\\1(?=[\\s?!.,:\\uFF1F\\uFF01\\u3002\\uFF0C\\uFF1A]|$)/\n const blockKatexRule = /^(\\${1,2})\\n((?:\\\\[^]|[^\\\\])+?)\\n\\1(?:\\n|$)/\n\n marked.use({\n extensions: [\n {\n name: 'inlineKatex',\n level: 'inline',\n start: (src) => {\n const idx = src.indexOf('$')\n if (idx === -1) {\n return undefined\n }\n if (idx === 0 || src.charAt(idx - 1) === ' ') {\n return idx\n }\n return undefined\n },\n tokenizer(src) {\n const match = src.match(inlineKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'inlineKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return renderKatexPlaceholder(token.text, token.displayMode)\n },\n },\n {\n name: 'blockKatex',\n level: 'block',\n tokenizer(src) {\n const match = src.match(blockKatexRule)\n if (!match) {\n return\n }\n return {\n type: 'blockKatex',\n raw: match[0],\n text: match[2].trim(),\n displayMode: match[1].length === 2,\n }\n },\n renderer(token) {\n return (\n renderKatexPlaceholder(token.text, token.displayMode) +\n '\\n'\n )\n },\n },\n ],\n })\n\n marked.use({\n extensions: [\n {\n name: 'thinking',\n level: 'block',\n start: (src) => src.indexOf('<thinking>'),\n tokenizer(src) {\n const match = /^<thinking>([\\s\\S]*?)<\\/thinking>/.exec(src)\n if (!match) {\n return\n }\n const token = {\n type: 'thinking',\n raw: match[0],\n text: match[1].trim(),\n tokens: [] as Token[],\n }\n this.lexer.blockTokens(token.text, token.tokens)\n return token\n },\n renderer(token) {\n return `<div class=\"thinking-block\">${this.parser.parse(token.tokens ?? [])}</div>`\n },\n },\n ],\n })\n\n // --- Custom renderer ---\n\n const renderer = new marked.Renderer()\n\n // marked escapes href and title inside its own link renderer. This\n // override replaces that renderer, so until now both went into `v-html`\n // verbatim: a quote in the URL closed the attribute and everything after\n // it became markup, in a document written by a model and, through the\n // knowledge base, by whoever fed it.\n const escapeAttribute = (value: string) =>\n value\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n // Schemes that execute rather than navigate. The link becomes plain text,\n // so the reader still sees what it said.\n const UNSAFE_LINK_SCHEME = /^(?:javascript|data|vbscript|file):/i\n\n // A bare address written in a cell is most of its row: the cell shows it\n // without the scheme and `www.`, with a break after each slash, while the\n // href and the tooltip keep it whole. Set while `renderer.table` renders\n // its cells, which marked does synchronously.\n let isRenderingTable = false\n const shortenAddress = (address: string) =>\n escapeAttribute(\n address.replace(/^https?:\\/\\/(?:www\\.)?/i, '').replace(/\\/$/, ''),\n ).replace(/\\//g, '/<wbr>')\n\n renderer.link = function ({ href, title, text: label, tokens }) {\n const text = this.parser.parseInline(tokens)\n // Control characters go first: the browser strips them before reading\n // the scheme, so they are how `java\\tscript:` gets past a check.\n // eslint-disable-next-line no-control-regex -- they are the point here\n const target = (href ?? '').trim().replace(/[\\x00-\\x1f]/g, '')\n if (!target || UNSAFE_LINK_SCHEME.test(target)) {\n return text\n }\n const isBareAddressInTable = isRenderingTable && label === target\n const tooltip = title || (isBareAddressInTable ? target : '')\n const titleAttr = tooltip ? ` title=\"${escapeAttribute(tooltip)}\"` : ''\n const targetAttrs = isSameSite(target)\n ? ''\n : ' target=\"_blank\" rel=\"noopener noreferrer\"'\n return `<a href=\"${escapeAttribute(target)}\"${titleAttr}${targetAttrs}>${isBareAddressInTable ? shortenAddress(target) : text}</a>`\n }\n\n // A data table (`.u-table`). From three columns up it stacks its rows into\n // blocks when the message is too narrow for them, with the heading of\n // each column, copied into `data-label`, as the label of its value; two\n // columns still fit side by side. The roles keep it a table for screen\n // readers once the style changes its display. Stacked, a cell is a grid\n // of label and value, and every child of a grid is an item of its own:\n // the value goes in one span, or a bold word, a link or the words the\n // stream animates one by one would scatter across both columns.\n renderer.table = function (token) {\n isRenderingTable = true\n try {\n const labels = token.header.map((cell) =>\n escapeAttribute(\n this.parser.parseInline(\n cell.tokens,\n this.parser.textRenderer,\n ),\n ),\n )\n const renderRow = (cells: Tokens.TableCell[]) =>\n `<tr role=\"row\">${cells\n .map((cell, index) => {\n const content = this.parser.parseInline(cell.tokens)\n const align = cell.align ? ` align=\"${cell.align}\"` : ''\n return cell.header\n ? `<th role=\"columnheader\"${align}>${content}</th>`\n : `<td role=\"cell\" data-label=\"${labels[index] ?? ''}\"${align}><span>${content}</span></td>`\n })\n .join('')}</tr>`\n const body = token.rows.length\n ? `<tbody role=\"rowgroup\">${token.rows.map(renderRow).join('')}</tbody>`\n : ''\n // Stacked, the head is out of sight and every row carries the\n // labels: a table with no rows yet (a header-only one, or the\n // stream before its first row) would show nothing at all.\n const tableClass =\n token.header.length >= 3 && token.rows.length\n ? 'u-table u-table--stack'\n : 'u-table'\n return `<div class=\"table-wrapper u-table-scroll\"><table class=\"${tableClass}\" role=\"table\"><thead role=\"rowgroup\">${renderRow(token.header)}</thead>${body}</table></div>\\n`\n } finally {\n isRenderingTable = false\n }\n }\n\n const MERMAID_PREFIXES =\n /^(sequenceDiagram|graph|classDiagram|stateDiagram|erDiagram|flowchart|xychart-beta)/\n\n // A fence holds code to show, not markup. Unescaped, an HTML sample became\n // elements and lost its tags before the highlighter read what was left.\n // Both the highlighter and the diagram renderer read `textContent`, which\n // gives the text back as written.\n renderer.code = ({ text }) => {\n if (MERMAID_PREFIXES.test(text)) {\n return `<pre class=\"mermaid\">${escapeHtml(text)}</pre>`\n }\n return `<pre><code>${escapeHtml(text)}</code></pre>`\n }\n\n // --- Preprocessing pipeline ---\n\n function normalizeLatexDelimiters(md: string): string {\n return md\n .replace(/\\\\\\[([\\s\\S]*?)\\\\\\]/g, (_, content) => `$$${content}$$`)\n .replace(/\\\\\\(([\\s\\S]*?)\\\\\\)/g, (_, content) => `$${content}$`)\n .replace(/^(\\d+)\\.(?!\\s)/gm, '$1\\\\.')\n }\n\n /**\n * Strips JSON objects/arrays that appear outside fenced code blocks.\n * Some models dump tool-call JSON directly into the text response.\n */\n function stripLeakedJson(md: string): string {\n const fenced = new Set<number>()\n const fenceRe = /^(`{3,}|~{3,})[^\\n]*\\n([\\s\\S]*?)\\n\\1/gm\n let fenceMatch: RegExpExecArray | null\n while ((fenceMatch = fenceRe.exec(md)) !== null) {\n for (\n let i = fenceMatch.index;\n i < fenceMatch.index + fenceMatch[0].length;\n i++\n ) {\n fenced.add(i)\n }\n }\n\n return md\n .replace(\n /[{[]([\\s\\S]*?)[}\\]]/g,\n (match, _inner, offset: number) => {\n if (fenced.has(offset)) {\n return match\n }\n try {\n JSON.parse(match)\n return ''\n } catch {\n return match\n }\n },\n )\n .replace(/\\n{3,}/g, '\\n\\n')\n }\n\n // Runs on the accumulated text, not on deltas, so a marker split across two\n // stream chunks still gets caught once both have landed.\n const preprocessors: Array<(md: string) => string> = [\n stripProviderCitationMarkers,\n stripLeakedJson,\n remend,\n normalizeLatexDelimiters,\n ]\n\n // --- Computed HTML ---\n\n const containerRef = useTemplateRef<HTMLDivElement>('container')\n\n // Every render parses the whole text again, and a stream changes it at every\n // delta: the cost of a turn grows with the square of its length. On chat\n // `st0Eg8iG0zUX0HQN` one parse took 24ms at 92KB, thousands of deltas\n // arrived, and the tab froze. The first text renders at once, the changes\n // after it at most once per interval, the last one always included.\n const RENDER_INTERVAL_MS = 100\n const renderedMarkdown = refThrottled(\n toRef(props, 'markdown'),\n RENDER_INTERVAL_MS,\n )\n const visibleMarkdown = computed(() =>\n props.tailLength\n ? getMarkdownTail(renderedMarkdown.value, props.tailLength)\n : renderedMarkdown.value,\n )\n\n // Expand backend short urls (`/api/r/<hash>`) back to their real target so\n // prose (e.g. a bulleted list of links) shows/opens real urls, not the\n // token-cheap short ones the model sees. No-op when no resolver is provided.\n const { resolveText } = useShortUrlResolver()\n const expandedMarkdown = resolveText(visibleMarkdown)\n\n // Inside a chat, an image from a host the agent does not list waits for a\n // click (see chatImagePolicy.ts); elsewhere images load as they always did.\n const imageGate = useChatImageGate()\n\n const html = computed(() => {\n const md = preprocessors.reduce(\n (text, fn) => fn(text),\n expandedMarkdown.value,\n )\n return sanitizeMarkdownHtml(\n marked.parse(md, {\n async: false,\n breaks: true,\n renderer,\n }) as string,\n imageGate.isGated.value\n ? {\n canLoad: imageGate.canLoad,\n hostOf: imageGate.hostOf,\n label: (host) => $t('label.imageHeld', { host }),\n }\n : undefined,\n )\n })\n\n /**\n * A held image is a button carrying its url: a click (or Enter, which a\n * button turns into one) releases that url, and the next render shows\n * the image. It may sit inside a link, which must not open.\n */\n function onContentClick(event: MouseEvent) {\n const held = (event.target as Element | null)?.closest?.(\n `[${HELD_IMAGE_ATTRIBUTE}]`,\n )\n const src = held?.getAttribute(HELD_IMAGE_ATTRIBUTE)\n if (!src) {\n return\n }\n event.preventDefault()\n event.stopPropagation()\n imageGate.release(src)\n }\n\n // --- Post-render processors ---\n\n async function renderMermaid() {\n if (props.loading) {\n return\n }\n\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid:not([data-rendered])',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.textContent?.trim()\n if (!code) {\n continue\n }\n\n try {\n const svg = renderMermaidSVG(code, theme)\n if (node.isConnected) {\n node.dataset.code = code\n node.innerHTML = svg\n node.setAttribute('data-rendered', 'true')\n }\n } catch {\n // Invalid syntax — node left untouched\n }\n }\n }\n\n async function highlightCode() {\n await nextTick()\n const blocks = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre:not(.mermaid) > code:not([data-highlighted])',\n )\n if (!blocks?.length) {\n return\n }\n\n const hljs = (await import('highlight.js/lib/common')).default\n for (const block of blocks) {\n hljs.highlightElement(block)\n block.setAttribute('data-highlighted', 'true')\n }\n }\n\n async function renderKatex() {\n await nextTick()\n const nodes =\n containerRef.value?.querySelectorAll<HTMLElement>('.katex-pending')\n if (!nodes?.length) {\n return\n }\n\n const katex = await loadKatex()\n // Keep this major in step with the installed katex: 0.18 prefixed the\n // internal class names (.sizing became .katex-sizing), so a stylesheet\n // from another major styles nothing. The widget pins the same major\n // again in its vite config, where katex is aliased to the CDN.\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/katex@0.18/dist/katex.min.css',\n getShadowRoot(containerRef.value),\n )\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const tex = node.dataset.katex\n if (!tex) {\n continue\n }\n const displayMode = node.dataset.display === 'true'\n try {\n node.innerHTML = katex.renderToString(decodeURIComponent(tex), {\n throwOnError: false,\n displayMode,\n })\n node.classList.remove('katex-pending')\n } catch {\n // Invalid LaTeX — leave placeholder\n }\n }\n }\n\n async function rerenderMermaidOnThemeChange() {\n await nextTick()\n const nodes = containerRef.value?.querySelectorAll<HTMLElement>(\n 'pre.mermaid[data-rendered]',\n )\n if (!nodes?.length) {\n return\n }\n\n const { renderMermaidSVG, THEMES } = await loadBeautifulMermaid()\n const theme = props.isDark\n ? THEMES['github-dark']\n : THEMES['github-light']\n\n for (const node of Array.from(nodes)) {\n if (!node.isConnected) {\n continue\n }\n const code = node.dataset.code\n if (!code) {\n continue\n }\n try {\n node.innerHTML = renderMermaidSVG(code, theme)\n } catch {\n // Invalid syntax — leave as-is\n }\n }\n }\n\n /**\n * Markdown images come from model output (or from a scraped page), so their\n * urls die often. The markup is injected with `v-html`, so there is no place\n * to bind `@error`: `error` doesn't bubble but it does propagate in the\n * capture phase, so one container listener covers every image, including the\n * ones added by later stream chunks.\n */\n function handleImageError(event: Event) {\n const img = event.target\n if (!(img instanceof HTMLImageElement) || img.dataset.broken) {\n return\n }\n img.dataset.broken = 'true'\n const placeholder = document.createElement('span')\n placeholder.className = 'markdown-broken-image'\n placeholder.textContent = img.alt || $t('label.imageLoadError')\n placeholder.title = img.src\n img.replaceWith(placeholder)\n }\n\n onMounted(() => {\n containerRef.value?.addEventListener('error', handleImageError, true)\n })\n onBeforeUnmount(() => {\n containerRef.value?.removeEventListener('error', handleImageError, true)\n })\n\n watch([html, () => props.loading], renderMermaid, { immediate: true })\n watch(() => props.isDark, rerenderMermaidOnThemeChange)\n watch(html, highlightCode, { immediate: true })\n watch(html, renderKatex, { immediate: true })\n\n // --- Streaming animation (FlowToken-style) ---\n\n let prevCharCount = 0\n\n function createAnimatedSpan(text: string, delay: number): HTMLSpanElement {\n const span = document.createElement('span')\n span.style.cssText = `animation:ft-${props.animation} ${props.animationDuration} ease-out ${delay}ms both;display:inline-block`\n span.textContent = text\n span.addEventListener(\n 'animationend',\n () => {\n const parent = span.parentNode\n if (!parent) {\n return\n }\n parent.replaceChild(document.createTextNode(text), span)\n parent.normalize()\n },\n { once: true },\n )\n return span\n }\n\n function insertAnimatedWords(\n text: string,\n parent: Node,\n refNode: Node | null,\n startIndex: number,\n ): number {\n let idx = startIndex\n const parts = text.split(/(\\s+)/)\n for (const part of parts) {\n if (!part) {\n continue\n }\n if (/^\\s+$/.test(part)) {\n parent.insertBefore(document.createTextNode(part), refNode)\n continue\n }\n parent.insertBefore(createAnimatedSpan(part, idx * 30), refNode)\n idx++\n }\n return idx\n }\n\n function collectTextNodes(root: HTMLElement): Text[] {\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\n acceptNode(node) {\n if (\n node.parentElement?.closest(\n 'pre, code, .katex-pending, .markdown-broken-image',\n )\n ) {\n return NodeFilter.FILTER_REJECT\n }\n return NodeFilter.FILTER_ACCEPT\n },\n })\n const nodes: Text[] = []\n while (walker.nextNode()) {\n nodes.push(walker.currentNode as Text)\n }\n return nodes\n }\n\n function annotateNewContent() {\n if (!containerRef.value || !props.loading || !props.animation) {\n return\n }\n\n const textNodes = collectTextNodes(containerRef.value)\n let charsSeen = 0\n let wordIdx = 0\n\n for (const textNode of textNodes) {\n const text = textNode.textContent || ''\n const nodeStart = charsSeen\n const nodeEnd = charsSeen + text.length\n charsSeen = nodeEnd\n\n if (nodeEnd <= prevCharCount) {\n continue\n }\n\n const parent = textNode.parentNode\n if (!parent) {\n continue\n }\n\n // Entirely new node — animate all words\n if (nodeStart >= prevCharCount) {\n const ref = textNode.nextSibling\n parent.removeChild(textNode)\n wordIdx = insertAnimatedWords(text, parent, ref, wordIdx)\n continue\n }\n\n // Partially new — split and animate only the new portion\n const splitAt = prevCharCount - nodeStart\n const newTextNode = textNode.splitText(splitAt)\n const newText = newTextNode.textContent || ''\n const ref = newTextNode.nextSibling\n parent.removeChild(newTextNode)\n wordIdx = insertAnimatedWords(newText, parent, ref, wordIdx)\n }\n\n prevCharCount = charsSeen\n }\n\n watch(\n html,\n async () => {\n await nextTick()\n annotateNewContent()\n },\n { immediate: true },\n )\n\n watch(\n () => props.markdown,\n (newVal, oldVal) => {\n if (!newVal || (oldVal && newVal.length < oldVal.length)) {\n prevCharCount = 0\n }\n },\n )\n</script>\n\n<template>\n <div ref=\"container\" @click=\"onContentClick\" v-html=\"html\"></div>\n</template>\n\n<style>\n .markdown-held-image {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-3);\n font: inherit;\n font-size: var(--text-12);\n vertical-align: middle;\n cursor: pointer;\n }\n\n .markdown-held-image:hover,\n .markdown-held-image:focus-visible {\n background-color: var(--color-surface-2);\n color: var(--color-word-2);\n }\n\n .markdown-broken-image {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n max-width: 100%;\n padding: var(--spacing-4) var(--spacing-8);\n border: var(--border) dashed var(--color-surface-4);\n border-radius: var(--rounded-md);\n background-color: var(--color-surface-1);\n color: var(--color-word-4);\n font-size: var(--text-12);\n vertical-align: middle;\n }\n\n @keyframes ft-fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes ft-blurIn {\n from {\n opacity: 0;\n filter: blur(4px);\n }\n to {\n opacity: 1;\n filter: blur(0px);\n }\n }\n\n @keyframes ft-dropIn {\n from {\n transform: translateY(-8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-slideUp {\n from {\n transform: translateY(8px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n @keyframes ft-fadeAndScale {\n from {\n transform: scale(0.85);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n }\n</style>\n"],"ignoreList":[1,2,3],"mappings":"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"}