@epic-web/workshop-app 5.4.1 → 5.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/build/client/assets/{_-BrkpfnBb.js → _-hAKYb2AG.js} +2 -2
  2. package/build/client/assets/{_-BrkpfnBb.js.map → _-hAKYb2AG.js.map} +1 -1
  3. package/build/client/assets/_exerciseNumber-PTdG9GGB.js +2 -0
  4. package/build/client/assets/_exerciseNumber-PTdG9GGB.js.map +1 -0
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-BIMJh_sg.js → _exerciseNumber_._stepNumber-03erOIGo.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-BIMJh_sg.js.map → _exerciseNumber_._stepNumber-03erOIGo.js.map} +1 -1
  7. package/build/client/assets/_exerciseNumber_.finished-DQg4F1NL.js +2 -0
  8. package/build/client/assets/_exerciseNumber_.finished-DQg4F1NL.js.map +1 -0
  9. package/build/client/assets/{_layout-88n0To1b.js → _layout-B4JGpA3A.js} +2 -2
  10. package/build/client/assets/{_layout-88n0To1b.js.map → _layout-B4JGpA3A.js.map} +1 -1
  11. package/build/client/assets/{_layout-Dfmv2zcn.js → _layout-BJbMl6SJ.js} +2 -2
  12. package/build/client/assets/{_layout-Dfmv2zcn.js.map → _layout-BJbMl6SJ.js.map} +1 -1
  13. package/build/client/assets/_layout-Bu0lel3p.js +6 -0
  14. package/build/client/assets/_layout-Bu0lel3p.js.map +1 -0
  15. package/build/client/assets/_layout-DHoH74NH.js +2 -0
  16. package/build/client/assets/_layout-DHoH74NH.js.map +1 -0
  17. package/build/client/assets/{accordion-D9-D-n9p.js → accordion-DLg7gJkp.js} +2 -2
  18. package/build/client/assets/{accordion-D9-D-n9p.js.map → accordion-DLg7gJkp.js.map} +1 -1
  19. package/build/client/assets/account-DLDPrc9J.js +2 -0
  20. package/build/client/assets/account-DLDPrc9J.js.map +1 -0
  21. package/build/client/assets/app-DJDjmdlu.js +2 -0
  22. package/build/client/assets/{app-DgTXXO8s.js.map → app-DJDjmdlu.js.map} +1 -1
  23. package/build/client/assets/{button-_qPvcoqR.js → button-39zQyNX6.js} +2 -2
  24. package/build/client/assets/{button-_qPvcoqR.js.map → button-39zQyNX6.js.map} +1 -1
  25. package/build/client/assets/{components-Be92gVxW.js → components-DUNtf72c.js} +2 -2
  26. package/build/client/assets/{components-Be92gVxW.js.map → components-DUNtf72c.js.map} +1 -1
  27. package/build/client/assets/diff-B3oaU_KB.js +2 -0
  28. package/build/client/assets/{diff-BhRAIPKc.js.map → diff-B3oaU_KB.js.map} +1 -1
  29. package/build/client/assets/{diff-8nlDkmpc.js → diff-BNCREJvf.js} +2 -2
  30. package/build/client/assets/{diff-8nlDkmpc.js.map → diff-BNCREJvf.js.map} +1 -1
  31. package/build/client/assets/{discord-BUWZUTEC.js → discord-CEOqKs_c.js} +2 -2
  32. package/build/client/assets/{discord-BUWZUTEC.js.map → discord-CEOqKs_c.js.map} +1 -1
  33. package/build/client/assets/discord-CpIgvYus.js +2 -0
  34. package/build/client/assets/discord-CpIgvYus.js.map +1 -0
  35. package/build/client/assets/{entry.client-DqIWuxf8.js → entry.client-CrlHhRMR.js} +2 -2
  36. package/build/client/assets/{entry.client-DqIWuxf8.js.map → entry.client-CrlHhRMR.js.map} +1 -1
  37. package/build/client/assets/epic-video-D8ex9vao.js +2 -0
  38. package/build/client/assets/epic-video-D8ex9vao.js.map +1 -0
  39. package/build/client/assets/error-boundary-3zItlMUO.js +2 -0
  40. package/build/client/assets/{error-boundary-BZA-ffa8.js.map → error-boundary-3zItlMUO.js.map} +1 -1
  41. package/build/client/assets/finished-rUzUjnEm.js +2 -0
  42. package/build/client/assets/finished-rUzUjnEm.js.map +1 -0
  43. package/build/client/assets/index-BajUQsFT.js +3053 -0
  44. package/build/client/assets/index-BajUQsFT.js.map +1 -0
  45. package/build/client/assets/{index-BCxBKsqT.js → index-CLNXC84j.js} +2 -2
  46. package/build/client/assets/{index-BCxBKsqT.js.map → index-CLNXC84j.js.map} +1 -1
  47. package/build/client/assets/{index-BCTr8uu6.js → index-CV3nxGFp.js} +2 -2
  48. package/build/client/assets/{index-BCTr8uu6.js.map → index-CV3nxGFp.js.map} +1 -1
  49. package/build/client/assets/{index-BFGhCX_U.js → index-C_B1-9rF.js} +2 -2
  50. package/build/client/assets/{index-BFGhCX_U.js.map → index-C_B1-9rF.js.map} +1 -1
  51. package/build/client/assets/{index-pkiQppkK.js → index-DDqzbGM2.js} +2 -2
  52. package/build/client/assets/{index-pkiQppkK.js.map → index-DDqzbGM2.js.map} +1 -1
  53. package/build/client/assets/index-DE-jwnOP.js +2 -0
  54. package/build/client/assets/index-DE-jwnOP.js.map +1 -0
  55. package/build/client/assets/{index-DZDhtMuq.js → index-DFqQCjCw.js} +2 -2
  56. package/build/client/assets/{index-DZDhtMuq.js.map → index-DFqQCjCw.js.map} +1 -1
  57. package/build/client/assets/{index-Bdg3v8tC.js → index-DH1w3QmP.js} +2 -2
  58. package/build/client/assets/{index-Bdg3v8tC.js.map → index-DH1w3QmP.js.map} +1 -1
  59. package/build/client/assets/{index-C9Hx0Dey.js → index-LjRZeU7x.js} +2 -2
  60. package/build/client/assets/{index-C9Hx0Dey.js.map → index-LjRZeU7x.js.map} +1 -1
  61. package/build/client/assets/index-mivnjq36.js +2 -0
  62. package/build/client/assets/index-mivnjq36.js.map +1 -0
  63. package/build/client/assets/{loading-XhMtj4mp.js → loading-DW_I206H.js} +2 -2
  64. package/build/client/assets/{loading-XhMtj4mp.js.map → loading-DW_I206H.js.map} +1 -1
  65. package/build/client/assets/{login-C1oOgi98.js → login-CdNej0Z7.js} +2 -2
  66. package/build/client/assets/{login-C1oOgi98.js.map → login-CdNej0Z7.js.map} +1 -1
  67. package/build/client/assets/manifest-62ea49c4.js +1 -0
  68. package/build/client/assets/{mdx-CEjzXoEx.js → mdx-C9dqA6IZ.js} +2 -2
  69. package/build/client/assets/{mdx-CEjzXoEx.js.map → mdx-C9dqA6IZ.js.map} +1 -1
  70. package/build/client/assets/{misc-DUy_whwE.js → misc-DIdEn_jt.js} +2 -2
  71. package/build/client/assets/{misc-DUy_whwE.js.map → misc-DIdEn_jt.js.map} +1 -1
  72. package/build/client/assets/{nav-chevrons-DnR25VLp.js → nav-chevrons-B3SvZV8B.js} +2 -2
  73. package/build/client/assets/{nav-chevrons-DnR25VLp.js.map → nav-chevrons-B3SvZV8B.js.map} +1 -1
  74. package/build/client/assets/onboarding-CC9zz4rl.js +2 -0
  75. package/build/client/assets/onboarding-CC9zz4rl.js.map +1 -0
  76. package/build/client/assets/{pe-ChIwTk8v.js → pe-D5h19vSo.js} +2 -2
  77. package/build/client/assets/{pe-ChIwTk8v.js.map → pe-D5h19vSo.js.map} +1 -1
  78. package/build/client/assets/presence-D1DPz__2.js +28 -0
  79. package/build/client/assets/presence-D1DPz__2.js.map +1 -0
  80. package/build/client/assets/{preview-DaZd0wMb.js → preview-BEtmdi0E.js} +2 -2
  81. package/build/client/assets/{preview-DaZd0wMb.js.map → preview-BEtmdi0E.js.map} +1 -1
  82. package/build/client/assets/{product-DIAmCwmZ.js → product-CYOFfeJM.js} +2 -2
  83. package/build/client/assets/{product-DIAmCwmZ.js.map → product-CYOFfeJM.js.map} +1 -1
  84. package/build/client/assets/{progress-DQt_Bn9o.js → progress-D6SP0Gec.js} +2 -2
  85. package/build/client/assets/{progress-DQt_Bn9o.js.map → progress-D6SP0Gec.js.map} +1 -1
  86. package/build/client/assets/{progress-bar-BaTU3Yx_.js → progress-bar-CBDBzRQ2.js} +2 -2
  87. package/build/client/assets/{progress-bar-BaTU3Yx_.js.map → progress-bar-CBDBzRQ2.js.map} +1 -1
  88. package/build/client/assets/{request-info-ByUEfOil.js → request-info-vBkaf3Rk.js} +2 -2
  89. package/build/client/assets/{request-info-ByUEfOil.js.map → request-info-vBkaf3Rk.js.map} +1 -1
  90. package/build/client/assets/{revalidation-ws-dUa9CAqr.js → revalidation-ws-DK5QOPlL.js} +2 -2
  91. package/build/client/assets/{revalidation-ws-dUa9CAqr.js.map → revalidation-ws-DK5QOPlL.js.map} +1 -1
  92. package/build/client/assets/{root-a3d3Qwip.js → root-Bg-hxaOK.js} +2 -2
  93. package/build/client/assets/{root-a3d3Qwip.js.map → root-Bg-hxaOK.js.map} +1 -1
  94. package/build/client/assets/{set-playground-CBHBA46B.js → set-playground-CMoUFgkO.js} +2 -2
  95. package/build/client/assets/{set-playground-CBHBA46B.js.map → set-playground-CMoUFgkO.js.map} +1 -1
  96. package/build/client/assets/{support-CIz02V_r.js → support-CPzYlWkd.js} +2 -2
  97. package/build/client/assets/{support-CIz02V_r.js.map → support-CPzYlWkd.js.map} +1 -1
  98. package/build/client/assets/test-C8wkLh9a.js +2 -0
  99. package/build/client/assets/{test-DoKJvNug.js.map → test-C8wkLh9a.js.map} +1 -1
  100. package/build/client/assets/{tests-DbuyD2cI.js → tests-CiM4RPOf.js} +2 -2
  101. package/build/client/assets/tests-CiM4RPOf.js.map +1 -0
  102. package/build/client/assets/{tooltip-DO9uwurQ.js → tooltip-BoVikCa-.js} +2 -2
  103. package/build/client/assets/{tooltip-DO9uwurQ.js.map → tooltip-BoVikCa-.js.map} +1 -1
  104. package/build/client/assets/{use-event-source-x59d4R2Z.js → use-event-source-M87p8Tme.js} +2 -2
  105. package/build/client/assets/{use-event-source-x59d4R2Z.js.map → use-event-source-M87p8Tme.js.map} +1 -1
  106. package/build/client/assets/{user-Bv6wYhQP.js → user-CbbIYEs8.js} +2 -2
  107. package/build/client/assets/{user-Bv6wYhQP.js.map → user-CbbIYEs8.js.map} +1 -1
  108. package/build/client/assets/{version-lxUUxt3s.js → version-CIF3cX3N.js} +2 -2
  109. package/build/client/assets/{version-lxUUxt3s.js.map → version-CIF3cX3N.js.map} +1 -1
  110. package/build/client/assets/{workshop-config-WVltG_BV.js → workshop-config-C5sYl312.js} +2 -2
  111. package/build/client/assets/{workshop-config-WVltG_BV.js.map → workshop-config-C5sYl312.js.map} +1 -1
  112. package/build/server/index.js +456 -782
  113. package/build/server/index.js.map +1 -1
  114. package/package.json +8 -8
  115. package/build/client/assets/_exerciseNumber-DCSM0NCG.js +0 -2
  116. package/build/client/assets/_exerciseNumber-DCSM0NCG.js.map +0 -1
  117. package/build/client/assets/_exerciseNumber_.finished-nbpk1ToO.js +0 -2
  118. package/build/client/assets/_exerciseNumber_.finished-nbpk1ToO.js.map +0 -1
  119. package/build/client/assets/_layout-Cbz7Qt-S.js +0 -6
  120. package/build/client/assets/_layout-Cbz7Qt-S.js.map +0 -1
  121. package/build/client/assets/_layout-DTAM9xh5.js +0 -2
  122. package/build/client/assets/_layout-DTAM9xh5.js.map +0 -1
  123. package/build/client/assets/account-C4Piztoz.js +0 -2
  124. package/build/client/assets/account-C4Piztoz.js.map +0 -1
  125. package/build/client/assets/app-DgTXXO8s.js +0 -2
  126. package/build/client/assets/diff-BhRAIPKc.js +0 -2
  127. package/build/client/assets/discord-Bdnx7fu-.js +0 -2
  128. package/build/client/assets/discord-Bdnx7fu-.js.map +0 -1
  129. package/build/client/assets/epic-video-Bp4BOD2R.js +0 -3053
  130. package/build/client/assets/epic-video-Bp4BOD2R.js.map +0 -1
  131. package/build/client/assets/error-boundary-BZA-ffa8.js +0 -2
  132. package/build/client/assets/finished-C0cpfAFL.js +0 -2
  133. package/build/client/assets/finished-C0cpfAFL.js.map +0 -1
  134. package/build/client/assets/index-Bi1TbRTj.js +0 -2
  135. package/build/client/assets/index-Bi1TbRTj.js.map +0 -1
  136. package/build/client/assets/index-Ca4vBON4.js +0 -2
  137. package/build/client/assets/index-Ca4vBON4.js.map +0 -1
  138. package/build/client/assets/manifest-e5b2a6e1.js +0 -1
  139. package/build/client/assets/onboarding-C2YNq60k.js +0 -2
  140. package/build/client/assets/onboarding-C2YNq60k.js.map +0 -1
  141. package/build/client/assets/presence-DJGFvdDh.js +0 -28
  142. package/build/client/assets/presence-DJGFvdDh.js.map +0 -1
  143. package/build/client/assets/test-DoKJvNug.js +0 -2
  144. package/build/client/assets/tests-DbuyD2cI.js.map +0 -1
  145. /package/build/client/assets/{epic-video-DUnRvy1A.css → index-DUnRvy1A.css} +0 -0
@@ -1,4 +1,4 @@
1
- import{j as n,n as S,l as yt,r as m}from"./index-BFGhCX_U.js";import{D as xt}from"./epic-video-Bp4BOD2R.js";import{I as g,e as V}from"./misc-DUy_whwE.js";import{R as Lt,A as Et}from"./accordion-D9-D-n9p.js";import{z as i}from"./request-info-ByUEfOil.js";import{u as Tt}from"./index-Bdg3v8tC.js";import{b as St}from"./user-Bv6wYhQP.js";import{u as Dt}from"./use-event-source-x59d4R2Z.js";import{S as C}from"./tooltip-DO9uwurQ.js";import{u as B}from"./pe-ChIwTk8v.js";import{a as M}from"./components-Be92gVxW.js";import{a as G,P as At}from"./set-playground-CBHBA46B.js";function kt({playgroundAppName:t,problemAppName:s,isUpToDate:o,allApps:c,children:r}){const e=t===s,a=e&&o?n.jsx(g,{size:"xl",name:"Linked"}):n.jsx(g,{size:"xl",name:"Unlinked",className:"animate-pulse text-foreground-danger"});let l="Click to reset Playground.";return o||(l="Playground is out of date. Click to reset Playground."),e||(l="Playground is not set to the right app. Click to set Playground."),n.jsxs("div",{className:"flex h-full w-full flex-col justify-between",children:[n.jsxs("div",{className:"flex h-14 flex-shrink-0 items-center justify-start gap-2 border-b px-3",children:[n.jsx("div",{className:"display-alt-up",children:s?n.jsx(G,{appName:s,tooltipText:l,children:a}):n.jsx(C,{content:"No problem app available for this step",children:n.jsx("div",{children:n.jsx(g,{name:"Question"})})})}),n.jsx("div",{className:"display-alt-down",children:t?n.jsx(G,{appName:t,reset:!0,tooltipText:"Reset Playground",children:n.jsx("div",{className:"flex h-7 w-7 items-center justify-center",children:n.jsx(g,{name:"Refresh"})})}):n.jsx("div",{className:"h-7 w-7"})}),n.jsx(At,{allApps:c,playgroundAppName:t})]}),n.jsx("div",{className:"flex h-full flex-1 flex-grow items-center justify-center",children:r})]})}var W={},L={};const Nt="Á",Rt="á",jt="Ă",Ct="ă",Ut="∾",Ht="∿",$t="∾̳",Vt="Â",Bt="â",Mt="´",Ot="А",Pt="а",Ft="Æ",It="æ",Gt="⁡",_t="𝔄",zt="𝔞",Xt="À",Jt="à",Yt="ℵ",Zt="ℵ",Qt="Α",Kt="α",Wt="Ā",ts="ā",ss="⨿",os="&",ns="&",cs="⩕",rs="⩓",es="∧",as="⩜",ls="⩘",is="⩚",us="∠",ps="⦤",ds="∠",fs="⦨",gs="⦩",ms="⦪",hs="⦫",bs="⦬",vs="⦭",ws="⦮",qs="⦯",ys="∡",xs="∟",Ls="⊾",Es="⦝",Ts="∢",Ss="Å",Ds="⍼",As="Ą",ks="ą",Ns="𝔸",Rs="𝕒",js="⩯",Cs="≈",Us="⩰",Hs="≊",$s="≋",Vs="'",Bs="⁡",Ms="≈",Os="≊",Ps="Å",Fs="å",Is="𝒜",Gs="𝒶",_s="≔",zs="*",Xs="≈",Js="≍",Ys="Ã",Zs="ã",Qs="Ä",Ks="ä",Ws="∳",to="⨑",so="≌",oo="϶",no="‵",co="∽",ro="⋍",eo="∖",ao="⫧",lo="⊽",io="⌅",uo="⌆",po="⌅",fo="⎵",go="⎶",mo="≌",ho="Б",bo="б",vo="„",wo="∵",qo="∵",yo="∵",xo="⦰",Lo="϶",Eo="ℬ",To="ℬ",So="Β",Do="β",Ao="ℶ",ko="≬",No="𝔅",Ro="𝔟",jo="⋂",Co="◯",Uo="⋃",Ho="⨀",$o="⨁",Vo="⨂",Bo="⨆",Mo="★",Oo="▽",Po="△",Fo="⨄",Io="⋁",Go="⋀",_o="⤍",zo="⧫",Xo="▪",Jo="▴",Yo="▾",Zo="◂",Qo="▸",Ko="␣",Wo="▒",tn="░",sn="▓",on="█",nn="=⃥",cn="≡⃥",rn="⫭",en="⌐",an="𝔹",ln="𝕓",un="⊥",pn="⊥",dn="⋈",fn="⧉",gn="┐",mn="╕",hn="╖",bn="╗",vn="┌",wn="╒",qn="╓",yn="╔",xn="─",Ln="═",En="┬",Tn="╤",Sn="╥",Dn="╦",An="┴",kn="╧",Nn="╨",Rn="╩",jn="⊟",Cn="⊞",Un="⊠",Hn="┘",$n="╛",Vn="╜",Bn="╝",Mn="└",On="╘",Pn="╙",Fn="╚",In="│",Gn="║",_n="┼",zn="╪",Xn="╫",Jn="╬",Yn="┤",Zn="╡",Qn="╢",Kn="╣",Wn="├",tc="╞",sc="╟",oc="╠",nc="‵",cc="˘",rc="˘",ec="¦",ac="𝒷",lc="ℬ",ic="⁏",uc="∽",pc="⋍",dc="⧅",fc="\\",gc="⟈",mc="•",hc="•",bc="≎",vc="⪮",wc="≏",qc="≎",yc="≏",xc="Ć",Lc="ć",Ec="⩄",Tc="⩉",Sc="⩋",Dc="∩",Ac="⋒",kc="⩇",Nc="⩀",Rc="ⅅ",jc="∩︀",Cc="⁁",Uc="ˇ",Hc="ℭ",$c="⩍",Vc="Č",Bc="č",Mc="Ç",Oc="ç",Pc="Ĉ",Fc="ĉ",Ic="∰",Gc="⩌",_c="⩐",zc="Ċ",Xc="ċ",Jc="¸",Yc="¸",Zc="⦲",Qc="¢",Kc="·",Wc="·",tr="𝔠",sr="ℭ",or="Ч",nr="ч",cr="✓",rr="✓",er="Χ",ar="χ",lr="ˆ",ir="≗",ur="↺",pr="↻",dr="⊛",fr="⊚",gr="⊝",mr="⊙",hr="®",br="Ⓢ",vr="⊖",wr="⊕",qr="⊗",yr="○",xr="⧃",Lr="≗",Er="⨐",Tr="⫯",Sr="⧂",Dr="∲",Ar="”",kr="’",Nr="♣",Rr="♣",jr=":",Cr="∷",Ur="⩴",Hr="≔",$r="≔",Vr=",",Br="@",Mr="∁",Or="∘",Pr="∁",Fr="ℂ",Ir="≅",Gr="⩭",_r="≡",zr="∮",Xr="∯",Jr="∮",Yr="𝕔",Zr="ℂ",Qr="∐",Kr="∐",Wr="©",te="©",se="℗",oe="∳",ne="↵",ce="✗",re="⨯",ee="𝒞",ae="𝒸",le="⫏",ie="⫑",ue="⫐",pe="⫒",de="⋯",fe="⤸",ge="⤵",me="⋞",he="⋟",be="↶",ve="⤽",we="⩈",qe="⩆",ye="≍",xe="∪",Le="⋓",Ee="⩊",Te="⊍",Se="⩅",De="∪︀",Ae="↷",ke="⤼",Ne="⋞",Re="⋟",je="⋎",Ce="⋏",Ue="¤",He="↶",$e="↷",Ve="⋎",Be="⋏",Me="∲",Oe="∱",Pe="⌭",Fe="†",Ie="‡",Ge="ℸ",_e="↓",ze="↡",Xe="⇓",Je="‐",Ye="⫤",Ze="⊣",Qe="⤏",Ke="˝",We="Ď",ta="ď",sa="Д",oa="д",na="‡",ca="⇊",ra="ⅅ",ea="ⅆ",aa="⤑",la="⩷",ia="°",ua="∇",pa="Δ",da="δ",fa="⦱",ga="⥿",ma="𝔇",ha="𝔡",ba="⥥",va="⇃",wa="⇂",qa="´",ya="˙",xa="˝",La="`",Ea="˜",Ta="⋄",Sa="⋄",Da="⋄",Aa="♦",ka="♦",Na="¨",Ra="ⅆ",ja="ϝ",Ca="⋲",Ua="÷",Ha="÷",$a="⋇",Va="⋇",Ba="Ђ",Ma="ђ",Oa="⌞",Pa="⌍",Fa="$",Ia="𝔻",Ga="𝕕",_a="¨",za="˙",Xa="⃜",Ja="≐",Ya="≑",Za="≐",Qa="∸",Ka="∔",Wa="⊡",tl="⌆",sl="∯",ol="¨",nl="⇓",cl="⇐",rl="⇔",el="⫤",al="⟸",ll="⟺",il="⟹",ul="⇒",pl="⊨",dl="⇑",fl="⇕",gl="∥",ml="⤓",hl="↓",bl="↓",vl="⇓",wl="⇵",ql="̑",yl="⇊",xl="⇃",Ll="⇂",El="⥐",Tl="⥞",Sl="⥖",Dl="↽",Al="⥟",kl="⥗",Nl="⇁",Rl="↧",jl="⊤",Cl="⤐",Ul="⌟",Hl="⌌",$l="𝒟",Vl="𝒹",Bl="Ѕ",Ml="ѕ",Ol="⧶",Pl="Đ",Fl="đ",Il="⋱",Gl="▿",_l="▾",zl="⇵",Xl="⥯",Jl="⦦",Yl="Џ",Zl="џ",Ql="⟿",Kl="É",Wl="é",ti="⩮",si="Ě",oi="ě",ni="Ê",ci="ê",ri="≖",ei="≕",ai="Э",li="э",ii="⩷",ui="Ė",pi="ė",di="≑",fi="ⅇ",gi="≒",mi="𝔈",hi="𝔢",bi="⪚",vi="È",wi="è",qi="⪖",yi="⪘",xi="⪙",Li="∈",Ei="⏧",Ti="ℓ",Si="⪕",Di="⪗",Ai="Ē",ki="ē",Ni="∅",Ri="∅",ji="◻",Ci="∅",Ui="▫",Hi=" ",$i=" ",Vi=" ",Bi="Ŋ",Mi="ŋ",Oi=" ",Pi="Ę",Fi="ę",Ii="𝔼",Gi="𝕖",_i="⋕",zi="⧣",Xi="⩱",Ji="ε",Yi="Ε",Zi="ε",Qi="ϵ",Ki="≖",Wi="≕",tu="≂",su="⪖",ou="⪕",nu="⩵",cu="=",ru="≂",eu="≟",au="⇌",lu="≡",iu="⩸",uu="⧥",pu="⥱",du="≓",fu="ℯ",gu="ℰ",mu="≐",hu="⩳",bu="≂",vu="Η",wu="η",qu="Ð",yu="ð",xu="Ë",Lu="ë",Eu="€",Tu="!",Su="∃",Du="∃",Au="ℰ",ku="ⅇ",Nu="ⅇ",Ru="≒",ju="Ф",Cu="ф",Uu="♀",Hu="ffi",$u="ff",Vu="ffl",Bu="𝔉",Mu="𝔣",Ou="fi",Pu="◼",Fu="▪",Iu="fj",Gu="♭",_u="fl",zu="▱",Xu="ƒ",Ju="𝔽",Yu="𝕗",Zu="∀",Qu="∀",Ku="⋔",Wu="⫙",tp="ℱ",sp="⨍",op="½",np="⅓",cp="¼",rp="⅕",ep="⅙",ap="⅛",lp="⅔",ip="⅖",up="¾",pp="⅗",dp="⅜",fp="⅘",gp="⅚",mp="⅝",hp="⅞",bp="⁄",vp="⌢",wp="𝒻",qp="ℱ",yp="ǵ",xp="Γ",Lp="γ",Ep="Ϝ",Tp="ϝ",Sp="⪆",Dp="Ğ",Ap="ğ",kp="Ģ",Np="Ĝ",Rp="ĝ",jp="Г",Cp="г",Up="Ġ",Hp="ġ",$p="≥",Vp="≧",Bp="⪌",Mp="⋛",Op="≥",Pp="≧",Fp="⩾",Ip="⪩",Gp="⩾",_p="⪀",zp="⪂",Xp="⪄",Jp="⋛︀",Yp="⪔",Zp="𝔊",Qp="𝔤",Kp="≫",Wp="⋙",td="⋙",sd="ℷ",od="Ѓ",nd="ѓ",cd="⪥",rd="≷",ed="⪒",ad="⪤",ld="⪊",id="⪊",ud="⪈",pd="≩",dd="⪈",fd="≩",gd="⋧",md="𝔾",hd="𝕘",bd="`",vd="≥",wd="⋛",qd="≧",yd="⪢",xd="≷",Ld="⩾",Ed="≳",Td="𝒢",Sd="ℊ",Dd="≳",Ad="⪎",kd="⪐",Nd="⪧",Rd="⩺",jd=">",Cd=">",Ud="≫",Hd="⋗",$d="⦕",Vd="⩼",Bd="⪆",Md="⥸",Od="⋗",Pd="⋛",Fd="⪌",Id="≷",Gd="≳",_d="≩︀",zd="≩︀",Xd="ˇ",Jd=" ",Yd="½",Zd="ℋ",Qd="Ъ",Kd="ъ",Wd="⥈",tf="↔",sf="⇔",of="↭",nf="^",cf="ℏ",rf="Ĥ",ef="ĥ",af="♥",lf="♥",uf="…",pf="⊹",df="𝔥",ff="ℌ",gf="ℋ",mf="⤥",hf="⤦",bf="⇿",vf="∻",wf="↩",qf="↪",yf="𝕙",xf="ℍ",Lf="―",Ef="─",Tf="𝒽",Sf="ℋ",Df="ℏ",Af="Ħ",kf="ħ",Nf="≎",Rf="≏",jf="⁃",Cf="‐",Uf="Í",Hf="í",$f="⁣",Vf="Î",Bf="î",Mf="И",Of="и",Pf="İ",Ff="Е",If="е",Gf="¡",_f="⇔",zf="𝔦",Xf="ℑ",Jf="Ì",Yf="ì",Zf="ⅈ",Qf="⨌",Kf="∭",Wf="⧜",tg="℩",sg="IJ",og="ij",ng="Ī",cg="ī",rg="ℑ",eg="ⅈ",ag="ℐ",lg="ℑ",ig="ı",ug="ℑ",pg="⊷",dg="Ƶ",fg="⇒",gg="℅",mg="∞",hg="⧝",bg="ı",vg="⊺",wg="∫",qg="∬",yg="ℤ",xg="∫",Lg="⊺",Eg="⋂",Tg="⨗",Sg="⨼",Dg="⁣",Ag="⁢",kg="Ё",Ng="ё",Rg="Į",jg="į",Cg="𝕀",Ug="𝕚",Hg="Ι",$g="ι",Vg="⨼",Bg="¿",Mg="𝒾",Og="ℐ",Pg="∈",Fg="⋵",Ig="⋹",Gg="⋴",_g="⋳",zg="∈",Xg="⁢",Jg="Ĩ",Yg="ĩ",Zg="І",Qg="і",Kg="Ï",Wg="ï",tm="Ĵ",sm="ĵ",om="Й",nm="й",cm="𝔍",rm="𝔧",em="ȷ",am="𝕁",lm="𝕛",im="𝒥",um="𝒿",pm="Ј",dm="ј",fm="Є",gm="є",mm="Κ",hm="κ",bm="ϰ",vm="Ķ",wm="ķ",qm="К",ym="к",xm="𝔎",Lm="𝔨",Em="ĸ",Tm="Х",Sm="х",Dm="Ќ",Am="ќ",km="𝕂",Nm="𝕜",Rm="𝒦",jm="𝓀",Cm="⇚",Um="Ĺ",Hm="ĺ",$m="⦴",Vm="ℒ",Bm="Λ",Mm="λ",Om="⟨",Pm="⟪",Fm="⦑",Im="⟨",Gm="⪅",_m="ℒ",zm="«",Xm="⇤",Jm="⤟",Ym="←",Zm="↞",Qm="⇐",Km="⤝",Wm="↩",th="↫",sh="⤹",oh="⥳",nh="↢",ch="⤙",rh="⤛",eh="⪫",ah="⪭",lh="⪭︀",ih="⤌",uh="⤎",ph="❲",dh="{",fh="[",gh="⦋",mh="⦏",hh="⦍",bh="Ľ",vh="ľ",wh="Ļ",qh="ļ",yh="⌈",xh="{",Lh="Л",Eh="л",Th="⤶",Sh="“",Dh="„",Ah="⥧",kh="⥋",Nh="↲",Rh="≤",jh="≦",Ch="⟨",Uh="⇤",Hh="←",$h="←",Vh="⇐",Bh="⇆",Mh="↢",Oh="⌈",Ph="⟦",Fh="⥡",Ih="⥙",Gh="⇃",_h="⌊",zh="↽",Xh="↼",Jh="⇇",Yh="↔",Zh="↔",Qh="⇔",Kh="⇆",Wh="⇋",tb="↭",sb="⥎",ob="↤",nb="⊣",cb="⥚",rb="⋋",eb="⧏",ab="⊲",lb="⊴",ib="⥑",ub="⥠",pb="⥘",db="↿",fb="⥒",gb="↼",mb="⪋",hb="⋚",bb="≤",vb="≦",wb="⩽",qb="⪨",yb="⩽",xb="⩿",Lb="⪁",Eb="⪃",Tb="⋚︀",Sb="⪓",Db="⪅",Ab="⋖",kb="⋚",Nb="⪋",Rb="⋚",jb="≦",Cb="≶",Ub="≶",Hb="⪡",$b="≲",Vb="⩽",Bb="≲",Mb="⥼",Ob="⌊",Pb="𝔏",Fb="𝔩",Ib="≶",Gb="⪑",_b="⥢",zb="↽",Xb="↼",Jb="⥪",Yb="▄",Zb="Љ",Qb="љ",Kb="⇇",Wb="≪",tv="⋘",sv="⌞",ov="⇚",nv="⥫",cv="◺",rv="Ŀ",ev="ŀ",av="⎰",lv="⎰",iv="⪉",uv="⪉",pv="⪇",dv="≨",fv="⪇",gv="≨",mv="⋦",hv="⟬",bv="⇽",vv="⟦",wv="⟵",qv="⟵",yv="⟸",xv="⟷",Lv="⟷",Ev="⟺",Tv="⟼",Sv="⟶",Dv="⟶",Av="⟹",kv="↫",Nv="↬",Rv="⦅",jv="𝕃",Cv="𝕝",Uv="⨭",Hv="⨴",$v="∗",Vv="_",Bv="↙",Mv="↘",Ov="◊",Pv="◊",Fv="⧫",Iv="(",Gv="⦓",_v="⇆",zv="⌟",Xv="⇋",Jv="⥭",Yv="‎",Zv="⊿",Qv="‹",Kv="𝓁",Wv="ℒ",tw="↰",sw="↰",ow="≲",nw="⪍",cw="⪏",rw="[",ew="‘",aw="‚",lw="Ł",iw="ł",uw="⪦",pw="⩹",dw="<",fw="<",gw="≪",mw="⋖",hw="⋋",bw="⋉",vw="⥶",ww="⩻",qw="◃",yw="⊴",xw="◂",Lw="⦖",Ew="⥊",Tw="⥦",Sw="≨︀",Dw="≨︀",Aw="¯",kw="♂",Nw="✠",Rw="✠",jw="↦",Cw="↦",Uw="↧",Hw="↤",$w="↥",Vw="▮",Bw="⨩",Mw="М",Ow="м",Pw="—",Fw="∺",Iw="∡",Gw=" ",_w="ℳ",zw="𝔐",Xw="𝔪",Jw="℧",Yw="µ",Zw="*",Qw="⫰",Kw="∣",Ww="·",tq="⊟",sq="−",oq="∸",nq="⨪",cq="∓",rq="⫛",eq="…",aq="∓",lq="⊧",iq="𝕄",uq="𝕞",pq="∓",dq="𝓂",fq="ℳ",gq="∾",mq="Μ",hq="μ",bq="⊸",vq="⊸",wq="∇",qq="Ń",yq="ń",xq="∠⃒",Lq="≉",Eq="⩰̸",Tq="≋̸",Sq="ʼn",Dq="≉",Aq="♮",kq="ℕ",Nq="♮",Rq=" ",jq="≎̸",Cq="≏̸",Uq="⩃",Hq="Ň",$q="ň",Vq="Ņ",Bq="ņ",Mq="≇",Oq="⩭̸",Pq="⩂",Fq="Н",Iq="н",Gq="–",_q="⤤",zq="↗",Xq="⇗",Jq="↗",Yq="≠",Zq="≐̸",Qq="​",Kq="​",Wq="​",ty="​",sy="≢",oy="⤨",ny="≂̸",cy="≫",ry="≪",ey=`
1
+ import{j as n,n as S,l as yt,r as m}from"./index-C_B1-9rF.js";import{D as xt}from"./epic-video-D8ex9vao.js";import{I as g,e as V}from"./misc-DIdEn_jt.js";import{R as Lt,A as Et}from"./accordion-DLg7gJkp.js";import{z as i}from"./request-info-vBkaf3Rk.js";import{u as Tt}from"./index-DH1w3QmP.js";import{c as St}from"./user-CbbIYEs8.js";import{u as Dt}from"./use-event-source-M87p8Tme.js";import{S as C}from"./tooltip-BoVikCa-.js";import{u as B}from"./pe-D5h19vSo.js";import{a as M}from"./components-DUNtf72c.js";import{a as G,P as At}from"./set-playground-CMoUFgkO.js";function kt({playgroundAppName:t,problemAppName:s,isUpToDate:o,allApps:c,children:r}){const e=t===s,a=e&&o?n.jsx(g,{size:"xl",name:"Linked"}):n.jsx(g,{size:"xl",name:"Unlinked",className:"animate-pulse text-foreground-danger"});let l="Click to reset Playground.";return o||(l="Playground is out of date. Click to reset Playground."),e||(l="Playground is not set to the right app. Click to set Playground."),n.jsxs("div",{className:"flex h-full w-full flex-col justify-between",children:[n.jsxs("div",{className:"flex h-14 flex-shrink-0 items-center justify-start gap-2 border-b px-3",children:[n.jsx("div",{className:"display-alt-up",children:s?n.jsx(G,{appName:s,tooltipText:l,children:a}):n.jsx(C,{content:"No problem app available for this step",children:n.jsx("div",{children:n.jsx(g,{name:"Question"})})})}),n.jsx("div",{className:"display-alt-down",children:t?n.jsx(G,{appName:t,reset:!0,tooltipText:"Reset Playground",children:n.jsx("div",{className:"flex h-7 w-7 items-center justify-center",children:n.jsx(g,{name:"Refresh"})})}):n.jsx("div",{className:"h-7 w-7"})}),n.jsx(At,{allApps:c,playgroundAppName:t})]}),n.jsx("div",{className:"flex h-full flex-1 flex-grow items-center justify-center",children:r})]})}var W={},L={};const Nt="Á",Rt="á",jt="Ă",Ct="ă",Ut="∾",Ht="∿",$t="∾̳",Vt="Â",Bt="â",Mt="´",Ot="А",Pt="а",Ft="Æ",It="æ",Gt="⁡",_t="𝔄",zt="𝔞",Xt="À",Jt="à",Yt="ℵ",Zt="ℵ",Qt="Α",Kt="α",Wt="Ā",ts="ā",ss="⨿",os="&",ns="&",cs="⩕",rs="⩓",es="∧",as="⩜",ls="⩘",is="⩚",us="∠",ps="⦤",ds="∠",fs="⦨",gs="⦩",ms="⦪",hs="⦫",bs="⦬",vs="⦭",ws="⦮",qs="⦯",ys="∡",xs="∟",Ls="⊾",Es="⦝",Ts="∢",Ss="Å",Ds="⍼",As="Ą",ks="ą",Ns="𝔸",Rs="𝕒",js="⩯",Cs="≈",Us="⩰",Hs="≊",$s="≋",Vs="'",Bs="⁡",Ms="≈",Os="≊",Ps="Å",Fs="å",Is="𝒜",Gs="𝒶",_s="≔",zs="*",Xs="≈",Js="≍",Ys="Ã",Zs="ã",Qs="Ä",Ks="ä",Ws="∳",to="⨑",so="≌",oo="϶",no="‵",co="∽",ro="⋍",eo="∖",ao="⫧",lo="⊽",io="⌅",uo="⌆",po="⌅",fo="⎵",go="⎶",mo="≌",ho="Б",bo="б",vo="„",wo="∵",qo="∵",yo="∵",xo="⦰",Lo="϶",Eo="ℬ",To="ℬ",So="Β",Do="β",Ao="ℶ",ko="≬",No="𝔅",Ro="𝔟",jo="⋂",Co="◯",Uo="⋃",Ho="⨀",$o="⨁",Vo="⨂",Bo="⨆",Mo="★",Oo="▽",Po="△",Fo="⨄",Io="⋁",Go="⋀",_o="⤍",zo="⧫",Xo="▪",Jo="▴",Yo="▾",Zo="◂",Qo="▸",Ko="␣",Wo="▒",tn="░",sn="▓",on="█",nn="=⃥",cn="≡⃥",rn="⫭",en="⌐",an="𝔹",ln="𝕓",un="⊥",pn="⊥",dn="⋈",fn="⧉",gn="┐",mn="╕",hn="╖",bn="╗",vn="┌",wn="╒",qn="╓",yn="╔",xn="─",Ln="═",En="┬",Tn="╤",Sn="╥",Dn="╦",An="┴",kn="╧",Nn="╨",Rn="╩",jn="⊟",Cn="⊞",Un="⊠",Hn="┘",$n="╛",Vn="╜",Bn="╝",Mn="└",On="╘",Pn="╙",Fn="╚",In="│",Gn="║",_n="┼",zn="╪",Xn="╫",Jn="╬",Yn="┤",Zn="╡",Qn="╢",Kn="╣",Wn="├",tc="╞",sc="╟",oc="╠",nc="‵",cc="˘",rc="˘",ec="¦",ac="𝒷",lc="ℬ",ic="⁏",uc="∽",pc="⋍",dc="⧅",fc="\\",gc="⟈",mc="•",hc="•",bc="≎",vc="⪮",wc="≏",qc="≎",yc="≏",xc="Ć",Lc="ć",Ec="⩄",Tc="⩉",Sc="⩋",Dc="∩",Ac="⋒",kc="⩇",Nc="⩀",Rc="ⅅ",jc="∩︀",Cc="⁁",Uc="ˇ",Hc="ℭ",$c="⩍",Vc="Č",Bc="č",Mc="Ç",Oc="ç",Pc="Ĉ",Fc="ĉ",Ic="∰",Gc="⩌",_c="⩐",zc="Ċ",Xc="ċ",Jc="¸",Yc="¸",Zc="⦲",Qc="¢",Kc="·",Wc="·",tr="𝔠",sr="ℭ",or="Ч",nr="ч",cr="✓",rr="✓",er="Χ",ar="χ",lr="ˆ",ir="≗",ur="↺",pr="↻",dr="⊛",fr="⊚",gr="⊝",mr="⊙",hr="®",br="Ⓢ",vr="⊖",wr="⊕",qr="⊗",yr="○",xr="⧃",Lr="≗",Er="⨐",Tr="⫯",Sr="⧂",Dr="∲",Ar="”",kr="’",Nr="♣",Rr="♣",jr=":",Cr="∷",Ur="⩴",Hr="≔",$r="≔",Vr=",",Br="@",Mr="∁",Or="∘",Pr="∁",Fr="ℂ",Ir="≅",Gr="⩭",_r="≡",zr="∮",Xr="∯",Jr="∮",Yr="𝕔",Zr="ℂ",Qr="∐",Kr="∐",Wr="©",te="©",se="℗",oe="∳",ne="↵",ce="✗",re="⨯",ee="𝒞",ae="𝒸",le="⫏",ie="⫑",ue="⫐",pe="⫒",de="⋯",fe="⤸",ge="⤵",me="⋞",he="⋟",be="↶",ve="⤽",we="⩈",qe="⩆",ye="≍",xe="∪",Le="⋓",Ee="⩊",Te="⊍",Se="⩅",De="∪︀",Ae="↷",ke="⤼",Ne="⋞",Re="⋟",je="⋎",Ce="⋏",Ue="¤",He="↶",$e="↷",Ve="⋎",Be="⋏",Me="∲",Oe="∱",Pe="⌭",Fe="†",Ie="‡",Ge="ℸ",_e="↓",ze="↡",Xe="⇓",Je="‐",Ye="⫤",Ze="⊣",Qe="⤏",Ke="˝",We="Ď",ta="ď",sa="Д",oa="д",na="‡",ca="⇊",ra="ⅅ",ea="ⅆ",aa="⤑",la="⩷",ia="°",ua="∇",pa="Δ",da="δ",fa="⦱",ga="⥿",ma="𝔇",ha="𝔡",ba="⥥",va="⇃",wa="⇂",qa="´",ya="˙",xa="˝",La="`",Ea="˜",Ta="⋄",Sa="⋄",Da="⋄",Aa="♦",ka="♦",Na="¨",Ra="ⅆ",ja="ϝ",Ca="⋲",Ua="÷",Ha="÷",$a="⋇",Va="⋇",Ba="Ђ",Ma="ђ",Oa="⌞",Pa="⌍",Fa="$",Ia="𝔻",Ga="𝕕",_a="¨",za="˙",Xa="⃜",Ja="≐",Ya="≑",Za="≐",Qa="∸",Ka="∔",Wa="⊡",tl="⌆",sl="∯",ol="¨",nl="⇓",cl="⇐",rl="⇔",el="⫤",al="⟸",ll="⟺",il="⟹",ul="⇒",pl="⊨",dl="⇑",fl="⇕",gl="∥",ml="⤓",hl="↓",bl="↓",vl="⇓",wl="⇵",ql="̑",yl="⇊",xl="⇃",Ll="⇂",El="⥐",Tl="⥞",Sl="⥖",Dl="↽",Al="⥟",kl="⥗",Nl="⇁",Rl="↧",jl="⊤",Cl="⤐",Ul="⌟",Hl="⌌",$l="𝒟",Vl="𝒹",Bl="Ѕ",Ml="ѕ",Ol="⧶",Pl="Đ",Fl="đ",Il="⋱",Gl="▿",_l="▾",zl="⇵",Xl="⥯",Jl="⦦",Yl="Џ",Zl="џ",Ql="⟿",Kl="É",Wl="é",ti="⩮",si="Ě",oi="ě",ni="Ê",ci="ê",ri="≖",ei="≕",ai="Э",li="э",ii="⩷",ui="Ė",pi="ė",di="≑",fi="ⅇ",gi="≒",mi="𝔈",hi="𝔢",bi="⪚",vi="È",wi="è",qi="⪖",yi="⪘",xi="⪙",Li="∈",Ei="⏧",Ti="ℓ",Si="⪕",Di="⪗",Ai="Ē",ki="ē",Ni="∅",Ri="∅",ji="◻",Ci="∅",Ui="▫",Hi=" ",$i=" ",Vi=" ",Bi="Ŋ",Mi="ŋ",Oi=" ",Pi="Ę",Fi="ę",Ii="𝔼",Gi="𝕖",_i="⋕",zi="⧣",Xi="⩱",Ji="ε",Yi="Ε",Zi="ε",Qi="ϵ",Ki="≖",Wi="≕",tu="≂",su="⪖",ou="⪕",nu="⩵",cu="=",ru="≂",eu="≟",au="⇌",lu="≡",iu="⩸",uu="⧥",pu="⥱",du="≓",fu="ℯ",gu="ℰ",mu="≐",hu="⩳",bu="≂",vu="Η",wu="η",qu="Ð",yu="ð",xu="Ë",Lu="ë",Eu="€",Tu="!",Su="∃",Du="∃",Au="ℰ",ku="ⅇ",Nu="ⅇ",Ru="≒",ju="Ф",Cu="ф",Uu="♀",Hu="ffi",$u="ff",Vu="ffl",Bu="𝔉",Mu="𝔣",Ou="fi",Pu="◼",Fu="▪",Iu="fj",Gu="♭",_u="fl",zu="▱",Xu="ƒ",Ju="𝔽",Yu="𝕗",Zu="∀",Qu="∀",Ku="⋔",Wu="⫙",tp="ℱ",sp="⨍",op="½",np="⅓",cp="¼",rp="⅕",ep="⅙",ap="⅛",lp="⅔",ip="⅖",up="¾",pp="⅗",dp="⅜",fp="⅘",gp="⅚",mp="⅝",hp="⅞",bp="⁄",vp="⌢",wp="𝒻",qp="ℱ",yp="ǵ",xp="Γ",Lp="γ",Ep="Ϝ",Tp="ϝ",Sp="⪆",Dp="Ğ",Ap="ğ",kp="Ģ",Np="Ĝ",Rp="ĝ",jp="Г",Cp="г",Up="Ġ",Hp="ġ",$p="≥",Vp="≧",Bp="⪌",Mp="⋛",Op="≥",Pp="≧",Fp="⩾",Ip="⪩",Gp="⩾",_p="⪀",zp="⪂",Xp="⪄",Jp="⋛︀",Yp="⪔",Zp="𝔊",Qp="𝔤",Kp="≫",Wp="⋙",td="⋙",sd="ℷ",od="Ѓ",nd="ѓ",cd="⪥",rd="≷",ed="⪒",ad="⪤",ld="⪊",id="⪊",ud="⪈",pd="≩",dd="⪈",fd="≩",gd="⋧",md="𝔾",hd="𝕘",bd="`",vd="≥",wd="⋛",qd="≧",yd="⪢",xd="≷",Ld="⩾",Ed="≳",Td="𝒢",Sd="ℊ",Dd="≳",Ad="⪎",kd="⪐",Nd="⪧",Rd="⩺",jd=">",Cd=">",Ud="≫",Hd="⋗",$d="⦕",Vd="⩼",Bd="⪆",Md="⥸",Od="⋗",Pd="⋛",Fd="⪌",Id="≷",Gd="≳",_d="≩︀",zd="≩︀",Xd="ˇ",Jd=" ",Yd="½",Zd="ℋ",Qd="Ъ",Kd="ъ",Wd="⥈",tf="↔",sf="⇔",of="↭",nf="^",cf="ℏ",rf="Ĥ",ef="ĥ",af="♥",lf="♥",uf="…",pf="⊹",df="𝔥",ff="ℌ",gf="ℋ",mf="⤥",hf="⤦",bf="⇿",vf="∻",wf="↩",qf="↪",yf="𝕙",xf="ℍ",Lf="―",Ef="─",Tf="𝒽",Sf="ℋ",Df="ℏ",Af="Ħ",kf="ħ",Nf="≎",Rf="≏",jf="⁃",Cf="‐",Uf="Í",Hf="í",$f="⁣",Vf="Î",Bf="î",Mf="И",Of="и",Pf="İ",Ff="Е",If="е",Gf="¡",_f="⇔",zf="𝔦",Xf="ℑ",Jf="Ì",Yf="ì",Zf="ⅈ",Qf="⨌",Kf="∭",Wf="⧜",tg="℩",sg="IJ",og="ij",ng="Ī",cg="ī",rg="ℑ",eg="ⅈ",ag="ℐ",lg="ℑ",ig="ı",ug="ℑ",pg="⊷",dg="Ƶ",fg="⇒",gg="℅",mg="∞",hg="⧝",bg="ı",vg="⊺",wg="∫",qg="∬",yg="ℤ",xg="∫",Lg="⊺",Eg="⋂",Tg="⨗",Sg="⨼",Dg="⁣",Ag="⁢",kg="Ё",Ng="ё",Rg="Į",jg="į",Cg="𝕀",Ug="𝕚",Hg="Ι",$g="ι",Vg="⨼",Bg="¿",Mg="𝒾",Og="ℐ",Pg="∈",Fg="⋵",Ig="⋹",Gg="⋴",_g="⋳",zg="∈",Xg="⁢",Jg="Ĩ",Yg="ĩ",Zg="І",Qg="і",Kg="Ï",Wg="ï",tm="Ĵ",sm="ĵ",om="Й",nm="й",cm="𝔍",rm="𝔧",em="ȷ",am="𝕁",lm="𝕛",im="𝒥",um="𝒿",pm="Ј",dm="ј",fm="Є",gm="є",mm="Κ",hm="κ",bm="ϰ",vm="Ķ",wm="ķ",qm="К",ym="к",xm="𝔎",Lm="𝔨",Em="ĸ",Tm="Х",Sm="х",Dm="Ќ",Am="ќ",km="𝕂",Nm="𝕜",Rm="𝒦",jm="𝓀",Cm="⇚",Um="Ĺ",Hm="ĺ",$m="⦴",Vm="ℒ",Bm="Λ",Mm="λ",Om="⟨",Pm="⟪",Fm="⦑",Im="⟨",Gm="⪅",_m="ℒ",zm="«",Xm="⇤",Jm="⤟",Ym="←",Zm="↞",Qm="⇐",Km="⤝",Wm="↩",th="↫",sh="⤹",oh="⥳",nh="↢",ch="⤙",rh="⤛",eh="⪫",ah="⪭",lh="⪭︀",ih="⤌",uh="⤎",ph="❲",dh="{",fh="[",gh="⦋",mh="⦏",hh="⦍",bh="Ľ",vh="ľ",wh="Ļ",qh="ļ",yh="⌈",xh="{",Lh="Л",Eh="л",Th="⤶",Sh="“",Dh="„",Ah="⥧",kh="⥋",Nh="↲",Rh="≤",jh="≦",Ch="⟨",Uh="⇤",Hh="←",$h="←",Vh="⇐",Bh="⇆",Mh="↢",Oh="⌈",Ph="⟦",Fh="⥡",Ih="⥙",Gh="⇃",_h="⌊",zh="↽",Xh="↼",Jh="⇇",Yh="↔",Zh="↔",Qh="⇔",Kh="⇆",Wh="⇋",tb="↭",sb="⥎",ob="↤",nb="⊣",cb="⥚",rb="⋋",eb="⧏",ab="⊲",lb="⊴",ib="⥑",ub="⥠",pb="⥘",db="↿",fb="⥒",gb="↼",mb="⪋",hb="⋚",bb="≤",vb="≦",wb="⩽",qb="⪨",yb="⩽",xb="⩿",Lb="⪁",Eb="⪃",Tb="⋚︀",Sb="⪓",Db="⪅",Ab="⋖",kb="⋚",Nb="⪋",Rb="⋚",jb="≦",Cb="≶",Ub="≶",Hb="⪡",$b="≲",Vb="⩽",Bb="≲",Mb="⥼",Ob="⌊",Pb="𝔏",Fb="𝔩",Ib="≶",Gb="⪑",_b="⥢",zb="↽",Xb="↼",Jb="⥪",Yb="▄",Zb="Љ",Qb="љ",Kb="⇇",Wb="≪",tv="⋘",sv="⌞",ov="⇚",nv="⥫",cv="◺",rv="Ŀ",ev="ŀ",av="⎰",lv="⎰",iv="⪉",uv="⪉",pv="⪇",dv="≨",fv="⪇",gv="≨",mv="⋦",hv="⟬",bv="⇽",vv="⟦",wv="⟵",qv="⟵",yv="⟸",xv="⟷",Lv="⟷",Ev="⟺",Tv="⟼",Sv="⟶",Dv="⟶",Av="⟹",kv="↫",Nv="↬",Rv="⦅",jv="𝕃",Cv="𝕝",Uv="⨭",Hv="⨴",$v="∗",Vv="_",Bv="↙",Mv="↘",Ov="◊",Pv="◊",Fv="⧫",Iv="(",Gv="⦓",_v="⇆",zv="⌟",Xv="⇋",Jv="⥭",Yv="‎",Zv="⊿",Qv="‹",Kv="𝓁",Wv="ℒ",tw="↰",sw="↰",ow="≲",nw="⪍",cw="⪏",rw="[",ew="‘",aw="‚",lw="Ł",iw="ł",uw="⪦",pw="⩹",dw="<",fw="<",gw="≪",mw="⋖",hw="⋋",bw="⋉",vw="⥶",ww="⩻",qw="◃",yw="⊴",xw="◂",Lw="⦖",Ew="⥊",Tw="⥦",Sw="≨︀",Dw="≨︀",Aw="¯",kw="♂",Nw="✠",Rw="✠",jw="↦",Cw="↦",Uw="↧",Hw="↤",$w="↥",Vw="▮",Bw="⨩",Mw="М",Ow="м",Pw="—",Fw="∺",Iw="∡",Gw=" ",_w="ℳ",zw="𝔐",Xw="𝔪",Jw="℧",Yw="µ",Zw="*",Qw="⫰",Kw="∣",Ww="·",tq="⊟",sq="−",oq="∸",nq="⨪",cq="∓",rq="⫛",eq="…",aq="∓",lq="⊧",iq="𝕄",uq="𝕞",pq="∓",dq="𝓂",fq="ℳ",gq="∾",mq="Μ",hq="μ",bq="⊸",vq="⊸",wq="∇",qq="Ń",yq="ń",xq="∠⃒",Lq="≉",Eq="⩰̸",Tq="≋̸",Sq="ʼn",Dq="≉",Aq="♮",kq="ℕ",Nq="♮",Rq=" ",jq="≎̸",Cq="≏̸",Uq="⩃",Hq="Ň",$q="ň",Vq="Ņ",Bq="ņ",Mq="≇",Oq="⩭̸",Pq="⩂",Fq="Н",Iq="н",Gq="–",_q="⤤",zq="↗",Xq="⇗",Jq="↗",Yq="≠",Zq="≐̸",Qq="​",Kq="​",Wq="​",ty="​",sy="≢",oy="⤨",ny="≂̸",cy="≫",ry="≪",ey=`
2
2
  `,ay="∄",ly="∄",iy="𝔑",uy="𝔫",py="≧̸",dy="≱",fy="≱",gy="≧̸",my="⩾̸",hy="⩾̸",by="⋙̸",vy="≵",wy="≫⃒",qy="≯",yy="≯",xy="≫̸",Ly="↮",Ey="⇎",Ty="⫲",Sy="∋",Dy="⋼",Ay="⋺",ky="∋",Ny="Њ",Ry="њ",jy="↚",Cy="⇍",Uy="‥",Hy="≦̸",$y="≰",Vy="↚",By="⇍",My="↮",Oy="⇎",Py="≰",Fy="≦̸",Iy="⩽̸",Gy="⩽̸",_y="≮",zy="⋘̸",Xy="≴",Jy="≪⃒",Yy="≮",Zy="⋪",Qy="⋬",Ky="≪̸",Wy="∤",tx="⁠",sx=" ",ox="𝕟",nx="ℕ",cx="⫬",rx="¬",ex="≢",ax="≭",lx="∦",ix="∉",ux="≠",px="≂̸",dx="∄",fx="≯",gx="≱",mx="≧̸",hx="≫̸",bx="≹",vx="⩾̸",wx="≵",qx="≎̸",yx="≏̸",xx="∉",Lx="⋵̸",Ex="⋹̸",Tx="∉",Sx="⋷",Dx="⋶",Ax="⧏̸",kx="⋪",Nx="⋬",Rx="≮",jx="≰",Cx="≸",Ux="≪̸",Hx="⩽̸",$x="≴",Vx="⪢̸",Bx="⪡̸",Mx="∌",Ox="∌",Px="⋾",Fx="⋽",Ix="⊀",Gx="⪯̸",_x="⋠",zx="∌",Xx="⧐̸",Jx="⋫",Yx="⋭",Zx="⊏̸",Qx="⋢",Kx="⊐̸",Wx="⋣",tL="⊂⃒",sL="⊈",oL="⊁",nL="⪰̸",cL="⋡",rL="≿̸",eL="⊃⃒",aL="⊉",lL="≁",iL="≄",uL="≇",pL="≉",dL="∤",fL="∦",gL="∦",mL="⫽⃥",hL="∂̸",bL="⨔",vL="⊀",wL="⋠",qL="⊀",yL="⪯̸",xL="⪯̸",LL="⤳̸",EL="↛",TL="⇏",SL="↝̸",DL="↛",AL="⇏",kL="⋫",NL="⋭",RL="⊁",jL="⋡",CL="⪰̸",UL="𝒩",HL="𝓃",$L="∤",VL="∦",BL="≁",ML="≄",OL="≄",PL="∤",FL="∦",IL="⋢",GL="⋣",_L="⊄",zL="⫅̸",XL="⊈",JL="⊂⃒",YL="⊈",ZL="⫅̸",QL="⊁",KL="⪰̸",WL="⊅",tE="⫆̸",sE="⊉",oE="⊃⃒",nE="⊉",cE="⫆̸",rE="≹",eE="Ñ",aE="ñ",lE="≸",iE="⋪",uE="⋬",pE="⋫",dE="⋭",fE="Ν",gE="ν",mE="#",hE="№",bE=" ",vE="≍⃒",wE="⊬",qE="⊭",yE="⊮",xE="⊯",LE="≥⃒",EE=">⃒",TE="⤄",SE="⧞",DE="⤂",AE="≤⃒",kE="<⃒",NE="⊴⃒",RE="⤃",jE="⊵⃒",CE="∼⃒",UE="⤣",HE="↖",$E="⇖",VE="↖",BE="⤧",ME="Ó",OE="ó",PE="⊛",FE="Ô",IE="ô",GE="⊚",_E="О",zE="о",XE="⊝",JE="Ő",YE="ő",ZE="⨸",QE="⊙",KE="⦼",WE="Œ",tT="œ",sT="⦿",oT="𝔒",nT="𝔬",cT="˛",rT="Ò",eT="ò",aT="⧁",lT="⦵",iT="Ω",uT="∮",pT="↺",dT="⦾",fT="⦻",gT="‾",mT="⧀",hT="Ō",bT="ō",vT="Ω",wT="ω",qT="Ο",yT="ο",xT="⦶",LT="⊖",ET="𝕆",TT="𝕠",ST="⦷",DT="“",AT="‘",kT="⦹",NT="⊕",RT="↻",jT="⩔",CT="∨",UT="⩝",HT="ℴ",$T="ℴ",VT="ª",BT="º",MT="⊶",OT="⩖",PT="⩗",FT="⩛",IT="Ⓢ",GT="𝒪",_T="ℴ",zT="Ø",XT="ø",JT="⊘",YT="Õ",ZT="õ",QT="⨶",KT="⨷",WT="⊗",t1="Ö",s1="ö",o1="⌽",n1="‾",c1="⏞",r1="⎴",e1="⏜",a1="¶",l1="∥",i1="∥",u1="⫳",p1="⫽",d1="∂",f1="∂",g1="П",m1="п",h1="%",b1=".",v1="‰",w1="⊥",q1="‱",y1="𝔓",x1="𝔭",L1="Φ",E1="φ",T1="ϕ",S1="ℳ",D1="☎",A1="Π",k1="π",N1="⋔",R1="ϖ",j1="ℏ",C1="ℎ",U1="ℏ",H1="⨣",$1="⊞",V1="⨢",B1="+",M1="∔",O1="⨥",P1="⩲",F1="±",I1="±",G1="⨦",_1="⨧",z1="±",X1="ℌ",J1="⨕",Y1="𝕡",Z1="ℙ",Q1="£",K1="⪷",W1="⪻",tS="≺",sS="≼",oS="⪷",nS="≺",cS="≼",rS="≺",eS="⪯",aS="≼",lS="≾",iS="⪯",uS="⪹",pS="⪵",dS="⋨",fS="⪯",gS="⪳",mS="≾",hS="′",bS="″",vS="ℙ",wS="⪹",qS="⪵",yS="⋨",xS="∏",LS="∏",ES="⌮",TS="⌒",SS="⌓",DS="∝",AS="∝",kS="∷",NS="∝",RS="≾",jS="⊰",CS="𝒫",US="𝓅",HS="Ψ",$S="ψ",VS=" ",BS="𝔔",MS="𝔮",OS="⨌",PS="𝕢",FS="ℚ",IS="⁗",GS="𝒬",_S="𝓆",zS="ℍ",XS="⨖",JS="?",YS="≟",ZS='"',QS='"',KS="⇛",WS="∽̱",tD="Ŕ",sD="ŕ",oD="√",nD="⦳",cD="⟩",rD="⟫",eD="⦒",aD="⦥",lD="⟩",iD="»",uD="⥵",pD="⇥",dD="⤠",fD="⤳",gD="→",mD="↠",hD="⇒",bD="⤞",vD="↪",wD="↬",qD="⥅",yD="⥴",xD="⤖",LD="↣",ED="↝",TD="⤚",SD="⤜",DD="∶",AD="ℚ",kD="⤍",ND="⤏",RD="⤐",jD="❳",CD="}",UD="]",HD="⦌",$D="⦎",VD="⦐",BD="Ř",MD="ř",OD="Ŗ",PD="ŗ",FD="⌉",ID="}",GD="Р",_D="р",zD="⤷",XD="⥩",JD="”",YD="”",ZD="↳",QD="ℜ",KD="ℛ",WD="ℜ",tA="ℝ",sA="ℜ",oA="▭",nA="®",cA="®",rA="∋",eA="⇋",aA="⥯",lA="⥽",iA="⌋",uA="𝔯",pA="ℜ",dA="⥤",fA="⇁",gA="⇀",mA="⥬",hA="Ρ",bA="ρ",vA="ϱ",wA="⟩",qA="⇥",yA="→",xA="→",LA="⇒",EA="⇄",TA="↣",SA="⌉",DA="⟧",AA="⥝",kA="⥕",NA="⇂",RA="⌋",jA="⇁",CA="⇀",UA="⇄",HA="⇌",$A="⇉",VA="↝",BA="↦",MA="⊢",OA="⥛",PA="⋌",FA="⧐",IA="⊳",GA="⊵",_A="⥏",zA="⥜",XA="⥔",JA="↾",YA="⥓",ZA="⇀",QA="˚",KA="≓",WA="⇄",tk="⇌",sk="‏",ok="⎱",nk="⎱",ck="⫮",rk="⟭",ek="⇾",ak="⟧",lk="⦆",ik="𝕣",uk="ℝ",pk="⨮",dk="⨵",fk="⥰",gk=")",mk="⦔",hk="⨒",bk="⇉",vk="⇛",wk="›",qk="𝓇",yk="ℛ",xk="↱",Lk="↱",Ek="]",Tk="’",Sk="’",Dk="⋌",Ak="⋊",kk="▹",Nk="⊵",Rk="▸",jk="⧎",Ck="⧴",Uk="⥨",Hk="℞",$k="Ś",Vk="ś",Bk="‚",Mk="⪸",Ok="Š",Pk="š",Fk="⪼",Ik="≻",Gk="≽",_k="⪰",zk="⪴",Xk="Ş",Jk="ş",Yk="Ŝ",Zk="ŝ",Qk="⪺",Kk="⪶",Wk="⋩",tN="⨓",sN="≿",oN="С",nN="с",cN="⊡",rN="⋅",eN="⩦",aN="⤥",lN="↘",iN="⇘",uN="↘",pN="§",dN=";",fN="⤩",gN="∖",mN="∖",hN="✶",bN="𝔖",vN="𝔰",wN="⌢",qN="♯",yN="Щ",xN="щ",LN="Ш",EN="ш",TN="↓",SN="←",DN="∣",AN="∥",kN="→",NN="↑",RN="­",jN="Σ",CN="σ",UN="ς",HN="ς",$N="∼",VN="⩪",BN="≃",MN="≃",ON="⪞",PN="⪠",FN="⪝",IN="⪟",GN="≆",_N="⨤",zN="⥲",XN="←",JN="∘",YN="∖",ZN="⨳",QN="⧤",KN="∣",WN="⌣",tR="⪪",sR="⪬",oR="⪬︀",nR="Ь",cR="ь",rR="⌿",eR="⧄",aR="/",lR="𝕊",iR="𝕤",uR="♠",pR="♠",dR="∥",fR="⊓",gR="⊓︀",mR="⊔",hR="⊔︀",bR="√",vR="⊏",wR="⊑",qR="⊏",yR="⊑",xR="⊐",LR="⊒",ER="⊐",TR="⊒",SR="□",DR="□",AR="⊓",kR="⊏",NR="⊑",RR="⊐",jR="⊒",CR="⊔",UR="▪",HR="□",$R="▪",VR="→",BR="𝒮",MR="𝓈",OR="∖",PR="⌣",FR="⋆",IR="⋆",GR="☆",_R="★",zR="ϵ",XR="ϕ",JR="¯",YR="⊂",ZR="⋐",QR="⪽",KR="⫅",WR="⊆",tj="⫃",sj="⫁",oj="⫋",nj="⊊",cj="⪿",rj="⥹",ej="⊂",aj="⋐",lj="⊆",ij="⫅",uj="⊆",pj="⊊",dj="⫋",fj="⫇",gj="⫕",mj="⫓",hj="⪸",bj="≻",vj="≽",wj="≻",qj="⪰",yj="≽",xj="≿",Lj="⪰",Ej="⪺",Tj="⪶",Sj="⋩",Dj="≿",Aj="∋",kj="∑",Nj="∑",Rj="♪",jj="¹",Cj="²",Uj="³",Hj="⊃",$j="⋑",Vj="⪾",Bj="⫘",Mj="⫆",Oj="⊇",Pj="⫄",Fj="⊃",Ij="⊇",Gj="⟉",_j="⫗",zj="⥻",Xj="⫂",Jj="⫌",Yj="⊋",Zj="⫀",Qj="⊃",Kj="⋑",Wj="⊇",t0="⫆",s0="⊋",o0="⫌",n0="⫈",c0="⫔",r0="⫖",e0="⤦",a0="↙",l0="⇙",i0="↙",u0="⤪",p0="ß",d0=" ",f0="⌖",g0="Τ",m0="τ",h0="⎴",b0="Ť",v0="ť",w0="Ţ",q0="ţ",y0="Т",x0="т",L0="⃛",E0="⌕",T0="𝔗",S0="𝔱",D0="∴",A0="∴",k0="∴",N0="Θ",R0="θ",j0="ϑ",C0="ϑ",U0="≈",H0="∼",$0="  ",V0=" ",B0=" ",M0="≈",O0="∼",P0="Þ",F0="þ",I0="˜",G0="∼",_0="≃",z0="≅",X0="≈",J0="⨱",Y0="⊠",Z0="×",Q0="⨰",K0="∭",W0="⤨",tC="⌶",sC="⫱",oC="⊤",nC="𝕋",cC="𝕥",rC="⫚",eC="⤩",aC="‴",lC="™",iC="™",uC="▵",pC="▿",dC="◃",fC="⊴",gC="≜",mC="▹",hC="⊵",bC="◬",vC="≜",wC="⨺",qC="⃛",yC="⨹",xC="⧍",LC="⨻",EC="⏢",TC="𝒯",SC="𝓉",DC="Ц",AC="ц",kC="Ћ",NC="ћ",RC="Ŧ",jC="ŧ",CC="≬",UC="↞",HC="↠",$C="Ú",VC="ú",BC="↑",MC="↟",OC="⇑",PC="⥉",FC="Ў",IC="ў",GC="Ŭ",_C="ŭ",zC="Û",XC="û",JC="У",YC="у",ZC="⇅",QC="Ű",KC="ű",WC="⥮",tU="⥾",sU="𝔘",oU="𝔲",nU="Ù",cU="ù",rU="⥣",eU="↿",aU="↾",lU="▀",iU="⌜",uU="⌜",pU="⌏",dU="◸",fU="Ū",gU="ū",mU="¨",hU="_",bU="⏟",vU="⎵",wU="⏝",qU="⋃",yU="⊎",xU="Ų",LU="ų",EU="𝕌",TU="𝕦",SU="⤒",DU="↑",AU="↑",kU="⇑",NU="⇅",RU="↕",jU="↕",CU="⇕",UU="⥮",HU="↿",$U="↾",VU="⊎",BU="↖",MU="↗",OU="υ",PU="ϒ",FU="ϒ",IU="Υ",GU="υ",_U="↥",zU="⊥",XU="⇈",JU="⌝",YU="⌝",ZU="⌎",QU="Ů",KU="ů",WU="◹",tH="𝒰",sH="𝓊",oH="⋰",nH="Ũ",cH="ũ",rH="▵",eH="▴",aH="⇈",lH="Ü",iH="ü",uH="⦧",pH="⦜",dH="ϵ",fH="ϰ",gH="∅",mH="ϕ",hH="ϖ",bH="∝",vH="↕",wH="⇕",qH="ϱ",yH="ς",xH="⊊︀",LH="⫋︀",EH="⊋︀",TH="⫌︀",SH="ϑ",DH="⊲",AH="⊳",kH="⫨",NH="⫫",RH="⫩",jH="В",CH="в",UH="⊢",HH="⊨",$H="⊩",VH="⊫",BH="⫦",MH="⊻",OH="∨",PH="⋁",FH="≚",IH="⋮",GH="|",_H="‖",zH="|",XH="‖",JH="∣",YH="|",ZH="❘",QH="≀",KH=" ",WH="𝔙",t$="𝔳",s$="⊲",o$="⊂⃒",n$="⊃⃒",c$="𝕍",r$="𝕧",e$="∝",a$="⊳",l$="𝒱",i$="𝓋",u$="⫋︀",p$="⊊︀",d$="⫌︀",f$="⊋︀",g$="⊪",m$="⦚",h$="Ŵ",b$="ŵ",v$="⩟",w$="∧",q$="⋀",y$="≙",x$="℘",L$="𝔚",E$="𝔴",T$="𝕎",S$="𝕨",D$="℘",A$="≀",k$="≀",N$="𝒲",R$="𝓌",j$="⋂",C$="◯",U$="⋃",H$="▽",$$="𝔛",V$="𝔵",B$="⟷",M$="⟺",O$="Ξ",P$="ξ",F$="⟵",I$="⟸",G$="⟼",_$="⋻",z$="⨀",X$="𝕏",J$="𝕩",Y$="⨁",Z$="⨂",Q$="⟶",K$="⟹",W$="𝒳",tV="𝓍",sV="⨆",oV="⨄",nV="△",cV="⋁",rV="⋀",eV="Ý",aV="ý",lV="Я",iV="я",uV="Ŷ",pV="ŷ",dV="Ы",fV="ы",gV="¥",mV="𝔜",hV="𝔶",bV="Ї",vV="ї",wV="𝕐",qV="𝕪",yV="𝒴",xV="𝓎",LV="Ю",EV="ю",TV="ÿ",SV="Ÿ",DV="Ź",AV="ź",kV="Ž",NV="ž",RV="З",jV="з",CV="Ż",UV="ż",HV="ℨ",$V="​",VV="Ζ",BV="ζ",MV="𝔷",OV="ℨ",PV="Ж",FV="ж",IV="⇝",GV="𝕫",_V="ℤ",zV="𝒵",XV="𝓏",JV="‍",YV="‌",tt={Aacute:Nt,aacute:Rt,Abreve:jt,abreve:Ct,ac:Ut,acd:Ht,acE:$t,Acirc:Vt,acirc:Bt,acute:Mt,Acy:Ot,acy:Pt,AElig:Ft,aelig:It,af:Gt,Afr:_t,afr:zt,Agrave:Xt,agrave:Jt,alefsym:Yt,aleph:Zt,Alpha:Qt,alpha:Kt,Amacr:Wt,amacr:ts,amalg:ss,amp:os,AMP:ns,andand:cs,And:rs,and:es,andd:as,andslope:ls,andv:is,ang:us,ange:ps,angle:ds,angmsdaa:fs,angmsdab:gs,angmsdac:ms,angmsdad:hs,angmsdae:bs,angmsdaf:vs,angmsdag:ws,angmsdah:qs,angmsd:ys,angrt:xs,angrtvb:Ls,angrtvbd:Es,angsph:Ts,angst:Ss,angzarr:Ds,Aogon:As,aogon:ks,Aopf:Ns,aopf:Rs,apacir:js,ap:Cs,apE:Us,ape:Hs,apid:$s,apos:Vs,ApplyFunction:Bs,approx:Ms,approxeq:Os,Aring:Ps,aring:Fs,Ascr:Is,ascr:Gs,Assign:_s,ast:zs,asymp:Xs,asympeq:Js,Atilde:Ys,atilde:Zs,Auml:Qs,auml:Ks,awconint:Ws,awint:to,backcong:so,backepsilon:oo,backprime:no,backsim:co,backsimeq:ro,Backslash:eo,Barv:ao,barvee:lo,barwed:io,Barwed:uo,barwedge:po,bbrk:fo,bbrktbrk:go,bcong:mo,Bcy:ho,bcy:bo,bdquo:vo,becaus:wo,because:qo,Because:yo,bemptyv:xo,bepsi:Lo,bernou:Eo,Bernoullis:To,Beta:So,beta:Do,beth:Ao,between:ko,Bfr:No,bfr:Ro,bigcap:jo,bigcirc:Co,bigcup:Uo,bigodot:Ho,bigoplus:$o,bigotimes:Vo,bigsqcup:Bo,bigstar:Mo,bigtriangledown:Oo,bigtriangleup:Po,biguplus:Fo,bigvee:Io,bigwedge:Go,bkarow:_o,blacklozenge:zo,blacksquare:Xo,blacktriangle:Jo,blacktriangledown:Yo,blacktriangleleft:Zo,blacktriangleright:Qo,blank:Ko,blk12:Wo,blk14:tn,blk34:sn,block:on,bne:nn,bnequiv:cn,bNot:rn,bnot:en,Bopf:an,bopf:ln,bot:un,bottom:pn,bowtie:dn,boxbox:fn,boxdl:gn,boxdL:mn,boxDl:hn,boxDL:bn,boxdr:vn,boxdR:wn,boxDr:qn,boxDR:yn,boxh:xn,boxH:Ln,boxhd:En,boxHd:Tn,boxhD:Sn,boxHD:Dn,boxhu:An,boxHu:kn,boxhU:Nn,boxHU:Rn,boxminus:jn,boxplus:Cn,boxtimes:Un,boxul:Hn,boxuL:$n,boxUl:Vn,boxUL:Bn,boxur:Mn,boxuR:On,boxUr:Pn,boxUR:Fn,boxv:In,boxV:Gn,boxvh:_n,boxvH:zn,boxVh:Xn,boxVH:Jn,boxvl:Yn,boxvL:Zn,boxVl:Qn,boxVL:Kn,boxvr:Wn,boxvR:tc,boxVr:sc,boxVR:oc,bprime:nc,breve:cc,Breve:rc,brvbar:ec,bscr:ac,Bscr:lc,bsemi:ic,bsim:uc,bsime:pc,bsolb:dc,bsol:fc,bsolhsub:gc,bull:mc,bullet:hc,bump:bc,bumpE:vc,bumpe:wc,Bumpeq:qc,bumpeq:yc,Cacute:xc,cacute:Lc,capand:Ec,capbrcup:Tc,capcap:Sc,cap:Dc,Cap:Ac,capcup:kc,capdot:Nc,CapitalDifferentialD:Rc,caps:jc,caret:Cc,caron:Uc,Cayleys:Hc,ccaps:$c,Ccaron:Vc,ccaron:Bc,Ccedil:Mc,ccedil:Oc,Ccirc:Pc,ccirc:Fc,Cconint:Ic,ccups:Gc,ccupssm:_c,Cdot:zc,cdot:Xc,cedil:Jc,Cedilla:Yc,cemptyv:Zc,cent:Qc,centerdot:Kc,CenterDot:Wc,cfr:tr,Cfr:sr,CHcy:or,chcy:nr,check:cr,checkmark:rr,Chi:er,chi:ar,circ:lr,circeq:ir,circlearrowleft:ur,circlearrowright:pr,circledast:dr,circledcirc:fr,circleddash:gr,CircleDot:mr,circledR:hr,circledS:br,CircleMinus:vr,CirclePlus:wr,CircleTimes:qr,cir:yr,cirE:xr,cire:Lr,cirfnint:Er,cirmid:Tr,cirscir:Sr,ClockwiseContourIntegral:Dr,CloseCurlyDoubleQuote:Ar,CloseCurlyQuote:kr,clubs:Nr,clubsuit:Rr,colon:jr,Colon:Cr,Colone:Ur,colone:Hr,coloneq:$r,comma:Vr,commat:Br,comp:Mr,compfn:Or,complement:Pr,complexes:Fr,cong:Ir,congdot:Gr,Congruent:_r,conint:zr,Conint:Xr,ContourIntegral:Jr,copf:Yr,Copf:Zr,coprod:Qr,Coproduct:Kr,copy:Wr,COPY:te,copysr:se,CounterClockwiseContourIntegral:oe,crarr:ne,cross:ce,Cross:re,Cscr:ee,cscr:ae,csub:le,csube:ie,csup:ue,csupe:pe,ctdot:de,cudarrl:fe,cudarrr:ge,cuepr:me,cuesc:he,cularr:be,cularrp:ve,cupbrcap:we,cupcap:qe,CupCap:ye,cup:xe,Cup:Le,cupcup:Ee,cupdot:Te,cupor:Se,cups:De,curarr:Ae,curarrm:ke,curlyeqprec:Ne,curlyeqsucc:Re,curlyvee:je,curlywedge:Ce,curren:Ue,curvearrowleft:He,curvearrowright:$e,cuvee:Ve,cuwed:Be,cwconint:Me,cwint:Oe,cylcty:Pe,dagger:Fe,Dagger:Ie,daleth:Ge,darr:_e,Darr:ze,dArr:Xe,dash:Je,Dashv:Ye,dashv:Ze,dbkarow:Qe,dblac:Ke,Dcaron:We,dcaron:ta,Dcy:sa,dcy:oa,ddagger:na,ddarr:ca,DD:ra,dd:ea,DDotrahd:aa,ddotseq:la,deg:ia,Del:ua,Delta:pa,delta:da,demptyv:fa,dfisht:ga,Dfr:ma,dfr:ha,dHar:ba,dharl:va,dharr:wa,DiacriticalAcute:qa,DiacriticalDot:ya,DiacriticalDoubleAcute:xa,DiacriticalGrave:La,DiacriticalTilde:Ea,diam:Ta,diamond:Sa,Diamond:Da,diamondsuit:Aa,diams:ka,die:Na,DifferentialD:Ra,digamma:ja,disin:Ca,div:Ua,divide:Ha,divideontimes:$a,divonx:Va,DJcy:Ba,djcy:Ma,dlcorn:Oa,dlcrop:Pa,dollar:Fa,Dopf:Ia,dopf:Ga,Dot:_a,dot:za,DotDot:Xa,doteq:Ja,doteqdot:Ya,DotEqual:Za,dotminus:Qa,dotplus:Ka,dotsquare:Wa,doublebarwedge:tl,DoubleContourIntegral:sl,DoubleDot:ol,DoubleDownArrow:nl,DoubleLeftArrow:cl,DoubleLeftRightArrow:rl,DoubleLeftTee:el,DoubleLongLeftArrow:al,DoubleLongLeftRightArrow:ll,DoubleLongRightArrow:il,DoubleRightArrow:ul,DoubleRightTee:pl,DoubleUpArrow:dl,DoubleUpDownArrow:fl,DoubleVerticalBar:gl,DownArrowBar:ml,downarrow:hl,DownArrow:bl,Downarrow:vl,DownArrowUpArrow:wl,DownBreve:ql,downdownarrows:yl,downharpoonleft:xl,downharpoonright:Ll,DownLeftRightVector:El,DownLeftTeeVector:Tl,DownLeftVectorBar:Sl,DownLeftVector:Dl,DownRightTeeVector:Al,DownRightVectorBar:kl,DownRightVector:Nl,DownTeeArrow:Rl,DownTee:jl,drbkarow:Cl,drcorn:Ul,drcrop:Hl,Dscr:$l,dscr:Vl,DScy:Bl,dscy:Ml,dsol:Ol,Dstrok:Pl,dstrok:Fl,dtdot:Il,dtri:Gl,dtrif:_l,duarr:zl,duhar:Xl,dwangle:Jl,DZcy:Yl,dzcy:Zl,dzigrarr:Ql,Eacute:Kl,eacute:Wl,easter:ti,Ecaron:si,ecaron:oi,Ecirc:ni,ecirc:ci,ecir:ri,ecolon:ei,Ecy:ai,ecy:li,eDDot:ii,Edot:ui,edot:pi,eDot:di,ee:fi,efDot:gi,Efr:mi,efr:hi,eg:bi,Egrave:vi,egrave:wi,egs:qi,egsdot:yi,el:xi,Element:Li,elinters:Ei,ell:Ti,els:Si,elsdot:Di,Emacr:Ai,emacr:ki,empty:Ni,emptyset:Ri,EmptySmallSquare:ji,emptyv:Ci,EmptyVerySmallSquare:Ui,emsp13:Hi,emsp14:$i,emsp:Vi,ENG:Bi,eng:Mi,ensp:Oi,Eogon:Pi,eogon:Fi,Eopf:Ii,eopf:Gi,epar:_i,eparsl:zi,eplus:Xi,epsi:Ji,Epsilon:Yi,epsilon:Zi,epsiv:Qi,eqcirc:Ki,eqcolon:Wi,eqsim:tu,eqslantgtr:su,eqslantless:ou,Equal:nu,equals:cu,EqualTilde:ru,equest:eu,Equilibrium:au,equiv:lu,equivDD:iu,eqvparsl:uu,erarr:pu,erDot:du,escr:fu,Escr:gu,esdot:mu,Esim:hu,esim:bu,Eta:vu,eta:wu,ETH:qu,eth:yu,Euml:xu,euml:Lu,euro:Eu,excl:Tu,exist:Su,Exists:Du,expectation:Au,exponentiale:ku,ExponentialE:Nu,fallingdotseq:Ru,Fcy:ju,fcy:Cu,female:Uu,ffilig:Hu,fflig:$u,ffllig:Vu,Ffr:Bu,ffr:Mu,filig:Ou,FilledSmallSquare:Pu,FilledVerySmallSquare:Fu,fjlig:Iu,flat:Gu,fllig:_u,fltns:zu,fnof:Xu,Fopf:Ju,fopf:Yu,forall:Zu,ForAll:Qu,fork:Ku,forkv:Wu,Fouriertrf:tp,fpartint:sp,frac12:op,frac13:np,frac14:cp,frac15:rp,frac16:ep,frac18:ap,frac23:lp,frac25:ip,frac34:up,frac35:pp,frac38:dp,frac45:fp,frac56:gp,frac58:mp,frac78:hp,frasl:bp,frown:vp,fscr:wp,Fscr:qp,gacute:yp,Gamma:xp,gamma:Lp,Gammad:Ep,gammad:Tp,gap:Sp,Gbreve:Dp,gbreve:Ap,Gcedil:kp,Gcirc:Np,gcirc:Rp,Gcy:jp,gcy:Cp,Gdot:Up,gdot:Hp,ge:$p,gE:Vp,gEl:Bp,gel:Mp,geq:Op,geqq:Pp,geqslant:Fp,gescc:Ip,ges:Gp,gesdot:_p,gesdoto:zp,gesdotol:Xp,gesl:Jp,gesles:Yp,Gfr:Zp,gfr:Qp,gg:Kp,Gg:Wp,ggg:td,gimel:sd,GJcy:od,gjcy:nd,gla:cd,gl:rd,glE:ed,glj:ad,gnap:ld,gnapprox:id,gne:ud,gnE:pd,gneq:dd,gneqq:fd,gnsim:gd,Gopf:md,gopf:hd,grave:bd,GreaterEqual:vd,GreaterEqualLess:wd,GreaterFullEqual:qd,GreaterGreater:yd,GreaterLess:xd,GreaterSlantEqual:Ld,GreaterTilde:Ed,Gscr:Td,gscr:Sd,gsim:Dd,gsime:Ad,gsiml:kd,gtcc:Nd,gtcir:Rd,gt:jd,GT:Cd,Gt:Ud,gtdot:Hd,gtlPar:$d,gtquest:Vd,gtrapprox:Bd,gtrarr:Md,gtrdot:Od,gtreqless:Pd,gtreqqless:Fd,gtrless:Id,gtrsim:Gd,gvertneqq:_d,gvnE:zd,Hacek:Xd,hairsp:Jd,half:Yd,hamilt:Zd,HARDcy:Qd,hardcy:Kd,harrcir:Wd,harr:tf,hArr:sf,harrw:of,Hat:nf,hbar:cf,Hcirc:rf,hcirc:ef,hearts:af,heartsuit:lf,hellip:uf,hercon:pf,hfr:df,Hfr:ff,HilbertSpace:gf,hksearow:mf,hkswarow:hf,hoarr:bf,homtht:vf,hookleftarrow:wf,hookrightarrow:qf,hopf:yf,Hopf:xf,horbar:Lf,HorizontalLine:Ef,hscr:Tf,Hscr:Sf,hslash:Df,Hstrok:Af,hstrok:kf,HumpDownHump:Nf,HumpEqual:Rf,hybull:jf,hyphen:Cf,Iacute:Uf,iacute:Hf,ic:$f,Icirc:Vf,icirc:Bf,Icy:Mf,icy:Of,Idot:Pf,IEcy:Ff,iecy:If,iexcl:Gf,iff:_f,ifr:zf,Ifr:Xf,Igrave:Jf,igrave:Yf,ii:Zf,iiiint:Qf,iiint:Kf,iinfin:Wf,iiota:tg,IJlig:sg,ijlig:og,Imacr:ng,imacr:cg,image:rg,ImaginaryI:eg,imagline:ag,imagpart:lg,imath:ig,Im:ug,imof:pg,imped:dg,Implies:fg,incare:gg,in:"∈",infin:mg,infintie:hg,inodot:bg,intcal:vg,int:wg,Int:qg,integers:yg,Integral:xg,intercal:Lg,Intersection:Eg,intlarhk:Tg,intprod:Sg,InvisibleComma:Dg,InvisibleTimes:Ag,IOcy:kg,iocy:Ng,Iogon:Rg,iogon:jg,Iopf:Cg,iopf:Ug,Iota:Hg,iota:$g,iprod:Vg,iquest:Bg,iscr:Mg,Iscr:Og,isin:Pg,isindot:Fg,isinE:Ig,isins:Gg,isinsv:_g,isinv:zg,it:Xg,Itilde:Jg,itilde:Yg,Iukcy:Zg,iukcy:Qg,Iuml:Kg,iuml:Wg,Jcirc:tm,jcirc:sm,Jcy:om,jcy:nm,Jfr:cm,jfr:rm,jmath:em,Jopf:am,jopf:lm,Jscr:im,jscr:um,Jsercy:pm,jsercy:dm,Jukcy:fm,jukcy:gm,Kappa:mm,kappa:hm,kappav:bm,Kcedil:vm,kcedil:wm,Kcy:qm,kcy:ym,Kfr:xm,kfr:Lm,kgreen:Em,KHcy:Tm,khcy:Sm,KJcy:Dm,kjcy:Am,Kopf:km,kopf:Nm,Kscr:Rm,kscr:jm,lAarr:Cm,Lacute:Um,lacute:Hm,laemptyv:$m,lagran:Vm,Lambda:Bm,lambda:Mm,lang:Om,Lang:Pm,langd:Fm,langle:Im,lap:Gm,Laplacetrf:_m,laquo:zm,larrb:Xm,larrbfs:Jm,larr:Ym,Larr:Zm,lArr:Qm,larrfs:Km,larrhk:Wm,larrlp:th,larrpl:sh,larrsim:oh,larrtl:nh,latail:ch,lAtail:rh,lat:eh,late:ah,lates:lh,lbarr:ih,lBarr:uh,lbbrk:ph,lbrace:dh,lbrack:fh,lbrke:gh,lbrksld:mh,lbrkslu:hh,Lcaron:bh,lcaron:vh,Lcedil:wh,lcedil:qh,lceil:yh,lcub:xh,Lcy:Lh,lcy:Eh,ldca:Th,ldquo:Sh,ldquor:Dh,ldrdhar:Ah,ldrushar:kh,ldsh:Nh,le:Rh,lE:jh,LeftAngleBracket:Ch,LeftArrowBar:Uh,leftarrow:Hh,LeftArrow:$h,Leftarrow:Vh,LeftArrowRightArrow:Bh,leftarrowtail:Mh,LeftCeiling:Oh,LeftDoubleBracket:Ph,LeftDownTeeVector:Fh,LeftDownVectorBar:Ih,LeftDownVector:Gh,LeftFloor:_h,leftharpoondown:zh,leftharpoonup:Xh,leftleftarrows:Jh,leftrightarrow:Yh,LeftRightArrow:Zh,Leftrightarrow:Qh,leftrightarrows:Kh,leftrightharpoons:Wh,leftrightsquigarrow:tb,LeftRightVector:sb,LeftTeeArrow:ob,LeftTee:nb,LeftTeeVector:cb,leftthreetimes:rb,LeftTriangleBar:eb,LeftTriangle:ab,LeftTriangleEqual:lb,LeftUpDownVector:ib,LeftUpTeeVector:ub,LeftUpVectorBar:pb,LeftUpVector:db,LeftVectorBar:fb,LeftVector:gb,lEg:mb,leg:hb,leq:bb,leqq:vb,leqslant:wb,lescc:qb,les:yb,lesdot:xb,lesdoto:Lb,lesdotor:Eb,lesg:Tb,lesges:Sb,lessapprox:Db,lessdot:Ab,lesseqgtr:kb,lesseqqgtr:Nb,LessEqualGreater:Rb,LessFullEqual:jb,LessGreater:Cb,lessgtr:Ub,LessLess:Hb,lesssim:$b,LessSlantEqual:Vb,LessTilde:Bb,lfisht:Mb,lfloor:Ob,Lfr:Pb,lfr:Fb,lg:Ib,lgE:Gb,lHar:_b,lhard:zb,lharu:Xb,lharul:Jb,lhblk:Yb,LJcy:Zb,ljcy:Qb,llarr:Kb,ll:Wb,Ll:tv,llcorner:sv,Lleftarrow:ov,llhard:nv,lltri:cv,Lmidot:rv,lmidot:ev,lmoustache:av,lmoust:lv,lnap:iv,lnapprox:uv,lne:pv,lnE:dv,lneq:fv,lneqq:gv,lnsim:mv,loang:hv,loarr:bv,lobrk:vv,longleftarrow:wv,LongLeftArrow:qv,Longleftarrow:yv,longleftrightarrow:xv,LongLeftRightArrow:Lv,Longleftrightarrow:Ev,longmapsto:Tv,longrightarrow:Sv,LongRightArrow:Dv,Longrightarrow:Av,looparrowleft:kv,looparrowright:Nv,lopar:Rv,Lopf:jv,lopf:Cv,loplus:Uv,lotimes:Hv,lowast:$v,lowbar:Vv,LowerLeftArrow:Bv,LowerRightArrow:Mv,loz:Ov,lozenge:Pv,lozf:Fv,lpar:Iv,lparlt:Gv,lrarr:_v,lrcorner:zv,lrhar:Xv,lrhard:Jv,lrm:Yv,lrtri:Zv,lsaquo:Qv,lscr:Kv,Lscr:Wv,lsh:tw,Lsh:sw,lsim:ow,lsime:nw,lsimg:cw,lsqb:rw,lsquo:ew,lsquor:aw,Lstrok:lw,lstrok:iw,ltcc:uw,ltcir:pw,lt:dw,LT:fw,Lt:gw,ltdot:mw,lthree:hw,ltimes:bw,ltlarr:vw,ltquest:ww,ltri:qw,ltrie:yw,ltrif:xw,ltrPar:Lw,lurdshar:Ew,luruhar:Tw,lvertneqq:Sw,lvnE:Dw,macr:Aw,male:kw,malt:Nw,maltese:Rw,Map:"⤅",map:jw,mapsto:Cw,mapstodown:Uw,mapstoleft:Hw,mapstoup:$w,marker:Vw,mcomma:Bw,Mcy:Mw,mcy:Ow,mdash:Pw,mDDot:Fw,measuredangle:Iw,MediumSpace:Gw,Mellintrf:_w,Mfr:zw,mfr:Xw,mho:Jw,micro:Yw,midast:Zw,midcir:Qw,mid:Kw,middot:Ww,minusb:tq,minus:sq,minusd:oq,minusdu:nq,MinusPlus:cq,mlcp:rq,mldr:eq,mnplus:aq,models:lq,Mopf:iq,mopf:uq,mp:pq,mscr:dq,Mscr:fq,mstpos:gq,Mu:mq,mu:hq,multimap:bq,mumap:vq,nabla:wq,Nacute:qq,nacute:yq,nang:xq,nap:Lq,napE:Eq,napid:Tq,napos:Sq,napprox:Dq,natural:Aq,naturals:kq,natur:Nq,nbsp:Rq,nbump:jq,nbumpe:Cq,ncap:Uq,Ncaron:Hq,ncaron:$q,Ncedil:Vq,ncedil:Bq,ncong:Mq,ncongdot:Oq,ncup:Pq,Ncy:Fq,ncy:Iq,ndash:Gq,nearhk:_q,nearr:zq,neArr:Xq,nearrow:Jq,ne:Yq,nedot:Zq,NegativeMediumSpace:Qq,NegativeThickSpace:Kq,NegativeThinSpace:Wq,NegativeVeryThinSpace:ty,nequiv:sy,nesear:oy,nesim:ny,NestedGreaterGreater:cy,NestedLessLess:ry,NewLine:ey,nexist:ay,nexists:ly,Nfr:iy,nfr:uy,ngE:py,nge:dy,ngeq:fy,ngeqq:gy,ngeqslant:my,nges:hy,nGg:by,ngsim:vy,nGt:wy,ngt:qy,ngtr:yy,nGtv:xy,nharr:Ly,nhArr:Ey,nhpar:Ty,ni:Sy,nis:Dy,nisd:Ay,niv:ky,NJcy:Ny,njcy:Ry,nlarr:jy,nlArr:Cy,nldr:Uy,nlE:Hy,nle:$y,nleftarrow:Vy,nLeftarrow:By,nleftrightarrow:My,nLeftrightarrow:Oy,nleq:Py,nleqq:Fy,nleqslant:Iy,nles:Gy,nless:_y,nLl:zy,nlsim:Xy,nLt:Jy,nlt:Yy,nltri:Zy,nltrie:Qy,nLtv:Ky,nmid:Wy,NoBreak:tx,NonBreakingSpace:sx,nopf:ox,Nopf:nx,Not:cx,not:rx,NotCongruent:ex,NotCupCap:ax,NotDoubleVerticalBar:lx,NotElement:ix,NotEqual:ux,NotEqualTilde:px,NotExists:dx,NotGreater:fx,NotGreaterEqual:gx,NotGreaterFullEqual:mx,NotGreaterGreater:hx,NotGreaterLess:bx,NotGreaterSlantEqual:vx,NotGreaterTilde:wx,NotHumpDownHump:qx,NotHumpEqual:yx,notin:xx,notindot:Lx,notinE:Ex,notinva:Tx,notinvb:Sx,notinvc:Dx,NotLeftTriangleBar:Ax,NotLeftTriangle:kx,NotLeftTriangleEqual:Nx,NotLess:Rx,NotLessEqual:jx,NotLessGreater:Cx,NotLessLess:Ux,NotLessSlantEqual:Hx,NotLessTilde:$x,NotNestedGreaterGreater:Vx,NotNestedLessLess:Bx,notni:Mx,notniva:Ox,notnivb:Px,notnivc:Fx,NotPrecedes:Ix,NotPrecedesEqual:Gx,NotPrecedesSlantEqual:_x,NotReverseElement:zx,NotRightTriangleBar:Xx,NotRightTriangle:Jx,NotRightTriangleEqual:Yx,NotSquareSubset:Zx,NotSquareSubsetEqual:Qx,NotSquareSuperset:Kx,NotSquareSupersetEqual:Wx,NotSubset:tL,NotSubsetEqual:sL,NotSucceeds:oL,NotSucceedsEqual:nL,NotSucceedsSlantEqual:cL,NotSucceedsTilde:rL,NotSuperset:eL,NotSupersetEqual:aL,NotTilde:lL,NotTildeEqual:iL,NotTildeFullEqual:uL,NotTildeTilde:pL,NotVerticalBar:dL,nparallel:fL,npar:gL,nparsl:mL,npart:hL,npolint:bL,npr:vL,nprcue:wL,nprec:qL,npreceq:yL,npre:xL,nrarrc:LL,nrarr:EL,nrArr:TL,nrarrw:SL,nrightarrow:DL,nRightarrow:AL,nrtri:kL,nrtrie:NL,nsc:RL,nsccue:jL,nsce:CL,Nscr:UL,nscr:HL,nshortmid:$L,nshortparallel:VL,nsim:BL,nsime:ML,nsimeq:OL,nsmid:PL,nspar:FL,nsqsube:IL,nsqsupe:GL,nsub:_L,nsubE:zL,nsube:XL,nsubset:JL,nsubseteq:YL,nsubseteqq:ZL,nsucc:QL,nsucceq:KL,nsup:WL,nsupE:tE,nsupe:sE,nsupset:oE,nsupseteq:nE,nsupseteqq:cE,ntgl:rE,Ntilde:eE,ntilde:aE,ntlg:lE,ntriangleleft:iE,ntrianglelefteq:uE,ntriangleright:pE,ntrianglerighteq:dE,Nu:fE,nu:gE,num:mE,numero:hE,numsp:bE,nvap:vE,nvdash:wE,nvDash:qE,nVdash:yE,nVDash:xE,nvge:LE,nvgt:EE,nvHarr:TE,nvinfin:SE,nvlArr:DE,nvle:AE,nvlt:kE,nvltrie:NE,nvrArr:RE,nvrtrie:jE,nvsim:CE,nwarhk:UE,nwarr:HE,nwArr:$E,nwarrow:VE,nwnear:BE,Oacute:ME,oacute:OE,oast:PE,Ocirc:FE,ocirc:IE,ocir:GE,Ocy:_E,ocy:zE,odash:XE,Odblac:JE,odblac:YE,odiv:ZE,odot:QE,odsold:KE,OElig:WE,oelig:tT,ofcir:sT,Ofr:oT,ofr:nT,ogon:cT,Ograve:rT,ograve:eT,ogt:aT,ohbar:lT,ohm:iT,oint:uT,olarr:pT,olcir:dT,olcross:fT,oline:gT,olt:mT,Omacr:hT,omacr:bT,Omega:vT,omega:wT,Omicron:qT,omicron:yT,omid:xT,ominus:LT,Oopf:ET,oopf:TT,opar:ST,OpenCurlyDoubleQuote:DT,OpenCurlyQuote:AT,operp:kT,oplus:NT,orarr:RT,Or:jT,or:CT,ord:UT,order:HT,orderof:$T,ordf:VT,ordm:BT,origof:MT,oror:OT,orslope:PT,orv:FT,oS:IT,Oscr:GT,oscr:_T,Oslash:zT,oslash:XT,osol:JT,Otilde:YT,otilde:ZT,otimesas:QT,Otimes:KT,otimes:WT,Ouml:t1,ouml:s1,ovbar:o1,OverBar:n1,OverBrace:c1,OverBracket:r1,OverParenthesis:e1,para:a1,parallel:l1,par:i1,parsim:u1,parsl:p1,part:d1,PartialD:f1,Pcy:g1,pcy:m1,percnt:h1,period:b1,permil:v1,perp:w1,pertenk:q1,Pfr:y1,pfr:x1,Phi:L1,phi:E1,phiv:T1,phmmat:S1,phone:D1,Pi:A1,pi:k1,pitchfork:N1,piv:R1,planck:j1,planckh:C1,plankv:U1,plusacir:H1,plusb:$1,pluscir:V1,plus:B1,plusdo:M1,plusdu:O1,pluse:P1,PlusMinus:F1,plusmn:I1,plussim:G1,plustwo:_1,pm:z1,Poincareplane:X1,pointint:J1,popf:Y1,Popf:Z1,pound:Q1,prap:K1,Pr:W1,pr:tS,prcue:sS,precapprox:oS,prec:nS,preccurlyeq:cS,Precedes:rS,PrecedesEqual:eS,PrecedesSlantEqual:aS,PrecedesTilde:lS,preceq:iS,precnapprox:uS,precneqq:pS,precnsim:dS,pre:fS,prE:gS,precsim:mS,prime:hS,Prime:bS,primes:vS,prnap:wS,prnE:qS,prnsim:yS,prod:xS,Product:LS,profalar:ES,profline:TS,profsurf:SS,prop:DS,Proportional:AS,Proportion:kS,propto:NS,prsim:RS,prurel:jS,Pscr:CS,pscr:US,Psi:HS,psi:$S,puncsp:VS,Qfr:BS,qfr:MS,qint:OS,qopf:PS,Qopf:FS,qprime:IS,Qscr:GS,qscr:_S,quaternions:zS,quatint:XS,quest:JS,questeq:YS,quot:ZS,QUOT:QS,rAarr:KS,race:WS,Racute:tD,racute:sD,radic:oD,raemptyv:nD,rang:cD,Rang:rD,rangd:eD,range:aD,rangle:lD,raquo:iD,rarrap:uD,rarrb:pD,rarrbfs:dD,rarrc:fD,rarr:gD,Rarr:mD,rArr:hD,rarrfs:bD,rarrhk:vD,rarrlp:wD,rarrpl:qD,rarrsim:yD,Rarrtl:xD,rarrtl:LD,rarrw:ED,ratail:TD,rAtail:SD,ratio:DD,rationals:AD,rbarr:kD,rBarr:ND,RBarr:RD,rbbrk:jD,rbrace:CD,rbrack:UD,rbrke:HD,rbrksld:$D,rbrkslu:VD,Rcaron:BD,rcaron:MD,Rcedil:OD,rcedil:PD,rceil:FD,rcub:ID,Rcy:GD,rcy:_D,rdca:zD,rdldhar:XD,rdquo:JD,rdquor:YD,rdsh:ZD,real:QD,realine:KD,realpart:WD,reals:tA,Re:sA,rect:oA,reg:nA,REG:cA,ReverseElement:rA,ReverseEquilibrium:eA,ReverseUpEquilibrium:aA,rfisht:lA,rfloor:iA,rfr:uA,Rfr:pA,rHar:dA,rhard:fA,rharu:gA,rharul:mA,Rho:hA,rho:bA,rhov:vA,RightAngleBracket:wA,RightArrowBar:qA,rightarrow:yA,RightArrow:xA,Rightarrow:LA,RightArrowLeftArrow:EA,rightarrowtail:TA,RightCeiling:SA,RightDoubleBracket:DA,RightDownTeeVector:AA,RightDownVectorBar:kA,RightDownVector:NA,RightFloor:RA,rightharpoondown:jA,rightharpoonup:CA,rightleftarrows:UA,rightleftharpoons:HA,rightrightarrows:$A,rightsquigarrow:VA,RightTeeArrow:BA,RightTee:MA,RightTeeVector:OA,rightthreetimes:PA,RightTriangleBar:FA,RightTriangle:IA,RightTriangleEqual:GA,RightUpDownVector:_A,RightUpTeeVector:zA,RightUpVectorBar:XA,RightUpVector:JA,RightVectorBar:YA,RightVector:ZA,ring:QA,risingdotseq:KA,rlarr:WA,rlhar:tk,rlm:sk,rmoustache:ok,rmoust:nk,rnmid:ck,roang:rk,roarr:ek,robrk:ak,ropar:lk,ropf:ik,Ropf:uk,roplus:pk,rotimes:dk,RoundImplies:fk,rpar:gk,rpargt:mk,rppolint:hk,rrarr:bk,Rrightarrow:vk,rsaquo:wk,rscr:qk,Rscr:yk,rsh:xk,Rsh:Lk,rsqb:Ek,rsquo:Tk,rsquor:Sk,rthree:Dk,rtimes:Ak,rtri:kk,rtrie:Nk,rtrif:Rk,rtriltri:jk,RuleDelayed:Ck,ruluhar:Uk,rx:Hk,Sacute:$k,sacute:Vk,sbquo:Bk,scap:Mk,Scaron:Ok,scaron:Pk,Sc:Fk,sc:Ik,sccue:Gk,sce:_k,scE:zk,Scedil:Xk,scedil:Jk,Scirc:Yk,scirc:Zk,scnap:Qk,scnE:Kk,scnsim:Wk,scpolint:tN,scsim:sN,Scy:oN,scy:nN,sdotb:cN,sdot:rN,sdote:eN,searhk:aN,searr:lN,seArr:iN,searrow:uN,sect:pN,semi:dN,seswar:fN,setminus:gN,setmn:mN,sext:hN,Sfr:bN,sfr:vN,sfrown:wN,sharp:qN,SHCHcy:yN,shchcy:xN,SHcy:LN,shcy:EN,ShortDownArrow:TN,ShortLeftArrow:SN,shortmid:DN,shortparallel:AN,ShortRightArrow:kN,ShortUpArrow:NN,shy:RN,Sigma:jN,sigma:CN,sigmaf:UN,sigmav:HN,sim:$N,simdot:VN,sime:BN,simeq:MN,simg:ON,simgE:PN,siml:FN,simlE:IN,simne:GN,simplus:_N,simrarr:zN,slarr:XN,SmallCircle:JN,smallsetminus:YN,smashp:ZN,smeparsl:QN,smid:KN,smile:WN,smt:tR,smte:sR,smtes:oR,SOFTcy:nR,softcy:cR,solbar:rR,solb:eR,sol:aR,Sopf:lR,sopf:iR,spades:uR,spadesuit:pR,spar:dR,sqcap:fR,sqcaps:gR,sqcup:mR,sqcups:hR,Sqrt:bR,sqsub:vR,sqsube:wR,sqsubset:qR,sqsubseteq:yR,sqsup:xR,sqsupe:LR,sqsupset:ER,sqsupseteq:TR,square:SR,Square:DR,SquareIntersection:AR,SquareSubset:kR,SquareSubsetEqual:NR,SquareSuperset:RR,SquareSupersetEqual:jR,SquareUnion:CR,squarf:UR,squ:HR,squf:$R,srarr:VR,Sscr:BR,sscr:MR,ssetmn:OR,ssmile:PR,sstarf:FR,Star:IR,star:GR,starf:_R,straightepsilon:zR,straightphi:XR,strns:JR,sub:YR,Sub:ZR,subdot:QR,subE:KR,sube:WR,subedot:tj,submult:sj,subnE:oj,subne:nj,subplus:cj,subrarr:rj,subset:ej,Subset:aj,subseteq:lj,subseteqq:ij,SubsetEqual:uj,subsetneq:pj,subsetneqq:dj,subsim:fj,subsub:gj,subsup:mj,succapprox:hj,succ:bj,succcurlyeq:vj,Succeeds:wj,SucceedsEqual:qj,SucceedsSlantEqual:yj,SucceedsTilde:xj,succeq:Lj,succnapprox:Ej,succneqq:Tj,succnsim:Sj,succsim:Dj,SuchThat:Aj,sum:kj,Sum:Nj,sung:Rj,sup1:jj,sup2:Cj,sup3:Uj,sup:Hj,Sup:$j,supdot:Vj,supdsub:Bj,supE:Mj,supe:Oj,supedot:Pj,Superset:Fj,SupersetEqual:Ij,suphsol:Gj,suphsub:_j,suplarr:zj,supmult:Xj,supnE:Jj,supne:Yj,supplus:Zj,supset:Qj,Supset:Kj,supseteq:Wj,supseteqq:t0,supsetneq:s0,supsetneqq:o0,supsim:n0,supsub:c0,supsup:r0,swarhk:e0,swarr:a0,swArr:l0,swarrow:i0,swnwar:u0,szlig:p0,Tab:d0,target:f0,Tau:g0,tau:m0,tbrk:h0,Tcaron:b0,tcaron:v0,Tcedil:w0,tcedil:q0,Tcy:y0,tcy:x0,tdot:L0,telrec:E0,Tfr:T0,tfr:S0,there4:D0,therefore:A0,Therefore:k0,Theta:N0,theta:R0,thetasym:j0,thetav:C0,thickapprox:U0,thicksim:H0,ThickSpace:$0,ThinSpace:V0,thinsp:B0,thkap:M0,thksim:O0,THORN:P0,thorn:F0,tilde:I0,Tilde:G0,TildeEqual:_0,TildeFullEqual:z0,TildeTilde:X0,timesbar:J0,timesb:Y0,times:Z0,timesd:Q0,tint:K0,toea:W0,topbot:tC,topcir:sC,top:oC,Topf:nC,topf:cC,topfork:rC,tosa:eC,tprime:aC,trade:lC,TRADE:iC,triangle:uC,triangledown:pC,triangleleft:dC,trianglelefteq:fC,triangleq:gC,triangleright:mC,trianglerighteq:hC,tridot:bC,trie:vC,triminus:wC,TripleDot:qC,triplus:yC,trisb:xC,tritime:LC,trpezium:EC,Tscr:TC,tscr:SC,TScy:DC,tscy:AC,TSHcy:kC,tshcy:NC,Tstrok:RC,tstrok:jC,twixt:CC,twoheadleftarrow:UC,twoheadrightarrow:HC,Uacute:$C,uacute:VC,uarr:BC,Uarr:MC,uArr:OC,Uarrocir:PC,Ubrcy:FC,ubrcy:IC,Ubreve:GC,ubreve:_C,Ucirc:zC,ucirc:XC,Ucy:JC,ucy:YC,udarr:ZC,Udblac:QC,udblac:KC,udhar:WC,ufisht:tU,Ufr:sU,ufr:oU,Ugrave:nU,ugrave:cU,uHar:rU,uharl:eU,uharr:aU,uhblk:lU,ulcorn:iU,ulcorner:uU,ulcrop:pU,ultri:dU,Umacr:fU,umacr:gU,uml:mU,UnderBar:hU,UnderBrace:bU,UnderBracket:vU,UnderParenthesis:wU,Union:qU,UnionPlus:yU,Uogon:xU,uogon:LU,Uopf:EU,uopf:TU,UpArrowBar:SU,uparrow:DU,UpArrow:AU,Uparrow:kU,UpArrowDownArrow:NU,updownarrow:RU,UpDownArrow:jU,Updownarrow:CU,UpEquilibrium:UU,upharpoonleft:HU,upharpoonright:$U,uplus:VU,UpperLeftArrow:BU,UpperRightArrow:MU,upsi:OU,Upsi:PU,upsih:FU,Upsilon:IU,upsilon:GU,UpTeeArrow:_U,UpTee:zU,upuparrows:XU,urcorn:JU,urcorner:YU,urcrop:ZU,Uring:QU,uring:KU,urtri:WU,Uscr:tH,uscr:sH,utdot:oH,Utilde:nH,utilde:cH,utri:rH,utrif:eH,uuarr:aH,Uuml:lH,uuml:iH,uwangle:uH,vangrt:pH,varepsilon:dH,varkappa:fH,varnothing:gH,varphi:mH,varpi:hH,varpropto:bH,varr:vH,vArr:wH,varrho:qH,varsigma:yH,varsubsetneq:xH,varsubsetneqq:LH,varsupsetneq:EH,varsupsetneqq:TH,vartheta:SH,vartriangleleft:DH,vartriangleright:AH,vBar:kH,Vbar:NH,vBarv:RH,Vcy:jH,vcy:CH,vdash:UH,vDash:HH,Vdash:$H,VDash:VH,Vdashl:BH,veebar:MH,vee:OH,Vee:PH,veeeq:FH,vellip:IH,verbar:GH,Verbar:_H,vert:zH,Vert:XH,VerticalBar:JH,VerticalLine:YH,VerticalSeparator:ZH,VerticalTilde:QH,VeryThinSpace:KH,Vfr:WH,vfr:t$,vltri:s$,vnsub:o$,vnsup:n$,Vopf:c$,vopf:r$,vprop:e$,vrtri:a$,Vscr:l$,vscr:i$,vsubnE:u$,vsubne:p$,vsupnE:d$,vsupne:f$,Vvdash:g$,vzigzag:m$,Wcirc:h$,wcirc:b$,wedbar:v$,wedge:w$,Wedge:q$,wedgeq:y$,weierp:x$,Wfr:L$,wfr:E$,Wopf:T$,wopf:S$,wp:D$,wr:A$,wreath:k$,Wscr:N$,wscr:R$,xcap:j$,xcirc:C$,xcup:U$,xdtri:H$,Xfr:$$,xfr:V$,xharr:B$,xhArr:M$,Xi:O$,xi:P$,xlarr:F$,xlArr:I$,xmap:G$,xnis:_$,xodot:z$,Xopf:X$,xopf:J$,xoplus:Y$,xotime:Z$,xrarr:Q$,xrArr:K$,Xscr:W$,xscr:tV,xsqcup:sV,xuplus:oV,xutri:nV,xvee:cV,xwedge:rV,Yacute:eV,yacute:aV,YAcy:lV,yacy:iV,Ycirc:uV,ycirc:pV,Ycy:dV,ycy:fV,yen:gV,Yfr:mV,yfr:hV,YIcy:bV,yicy:vV,Yopf:wV,yopf:qV,Yscr:yV,yscr:xV,YUcy:LV,yucy:EV,yuml:TV,Yuml:SV,Zacute:DV,zacute:AV,Zcaron:kV,zcaron:NV,Zcy:RV,zcy:jV,Zdot:CV,zdot:UV,zeetrf:HV,ZeroWidthSpace:$V,Zeta:VV,zeta:BV,zfr:MV,Zfr:OV,ZHcy:PV,zhcy:FV,zigrarr:IV,zopf:GV,Zopf:_V,Zscr:zV,zscr:XV,zwj:JV,zwnj:YV},ZV="Á",QV="á",KV="Â",WV="â",tB="´",sB="Æ",oB="æ",nB="À",cB="à",rB="&",eB="&",aB="Å",lB="å",iB="Ã",uB="ã",pB="Ä",dB="ä",fB="¦",gB="Ç",mB="ç",hB="¸",bB="¢",vB="©",wB="©",qB="¤",yB="°",xB="÷",LB="É",EB="é",TB="Ê",SB="ê",DB="È",AB="è",kB="Ð",NB="ð",RB="Ë",jB="ë",CB="½",UB="¼",HB="¾",$B=">",VB=">",BB="Í",MB="í",OB="Î",PB="î",FB="¡",IB="Ì",GB="ì",_B="¿",zB="Ï",XB="ï",JB="«",YB="<",ZB="<",QB="¯",KB="µ",WB="·",tM=" ",sM="¬",oM="Ñ",nM="ñ",cM="Ó",rM="ó",eM="Ô",aM="ô",lM="Ò",iM="ò",uM="ª",pM="º",dM="Ø",fM="ø",gM="Õ",mM="õ",hM="Ö",bM="ö",vM="¶",wM="±",qM="£",yM='"',xM='"',LM="»",EM="®",TM="®",SM="§",DM="­",AM="¹",kM="²",NM="³",RM="ß",jM="Þ",CM="þ",UM="×",HM="Ú",$M="ú",VM="Û",BM="û",MM="Ù",OM="ù",PM="¨",FM="Ü",IM="ü",GM="Ý",_M="ý",zM="¥",XM="ÿ",JM={Aacute:ZV,aacute:QV,Acirc:KV,acirc:WV,acute:tB,AElig:sB,aelig:oB,Agrave:nB,agrave:cB,amp:rB,AMP:eB,Aring:aB,aring:lB,Atilde:iB,atilde:uB,Auml:pB,auml:dB,brvbar:fB,Ccedil:gB,ccedil:mB,cedil:hB,cent:bB,copy:vB,COPY:wB,curren:qB,deg:yB,divide:xB,Eacute:LB,eacute:EB,Ecirc:TB,ecirc:SB,Egrave:DB,egrave:AB,ETH:kB,eth:NB,Euml:RB,euml:jB,frac12:CB,frac14:UB,frac34:HB,gt:$B,GT:VB,Iacute:BB,iacute:MB,Icirc:OB,icirc:PB,iexcl:FB,Igrave:IB,igrave:GB,iquest:_B,Iuml:zB,iuml:XB,laquo:JB,lt:YB,LT:ZB,macr:QB,micro:KB,middot:WB,nbsp:tM,not:sM,Ntilde:oM,ntilde:nM,Oacute:cM,oacute:rM,Ocirc:eM,ocirc:aM,Ograve:lM,ograve:iM,ordf:uM,ordm:pM,Oslash:dM,oslash:fM,Otilde:gM,otilde:mM,Ouml:hM,ouml:bM,para:vM,plusmn:wM,pound:qM,quot:yM,QUOT:xM,raquo:LM,reg:EM,REG:TM,sect:SM,shy:DM,sup1:AM,sup2:kM,sup3:NM,szlig:RM,THORN:jM,thorn:CM,times:UM,Uacute:HM,uacute:$M,Ucirc:VM,ucirc:BM,Ugrave:MM,ugrave:OM,uml:PM,Uuml:FM,uuml:IM,Yacute:GM,yacute:_M,yen:zM,yuml:XM},YM="&",ZM="'",QM=">",KM="<",WM='"',st={amp:YM,apos:ZM,gt:QM,lt:KM,quot:WM};var O={};const tO={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var sO=S&&S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(O,"__esModule",{value:!0});var _=sO(tO),oO=String.fromCodePoint||function(t){var s="";return t>65535&&(t-=65536,s+=String.fromCharCode(t>>>10&1023|55296),t=56320|t&1023),s+=String.fromCharCode(t),s};function nO(t){return t>=55296&&t<=57343||t>1114111?"�":(t in _.default&&(t=_.default[t]),oO(t))}O.default=nO;var U=S&&S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(L,"__esModule",{value:!0});L.decodeHTML=L.decodeHTMLStrict=L.decodeXML=void 0;var $=U(tt),cO=U(JM),rO=U(st),z=U(O),eO=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;L.decodeXML=ot(rO.default);L.decodeHTMLStrict=ot($.default);function ot(t){var s=nt(t);return function(o){return String(o).replace(eO,s)}}var X=function(t,s){return t<s?1:-1};L.decodeHTML=function(){for(var t=Object.keys(cO.default).sort(X),s=Object.keys($.default).sort(X),o=0,c=0;o<s.length;o++)t[c]===s[o]?(s[o]+=";?",c++):s[o]+=";";var r=new RegExp("&(?:"+s.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),e=nt($.default);function a(l){return l.substr(-1)!==";"&&(l+=";"),e(l)}return function(l){return String(l).replace(r,a)}}();function nt(t){return function(o){if(o.charAt(1)==="#"){var c=o.charAt(2);return c==="X"||c==="x"?z.default(parseInt(o.substr(3),16)):z.default(parseInt(o.substr(2),10))}return t[o.slice(1,-1)]||o}}var b={},ct=S&&S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(b,"__esModule",{value:!0});b.escapeUTF8=b.escape=b.encodeNonAsciiHTML=b.encodeHTML=b.encodeXML=void 0;var aO=ct(st),rt=at(aO.default),et=lt(rt);b.encodeXML=pt(rt);var lO=ct(tt),P=at(lO.default),iO=lt(P);b.encodeHTML=pO(P,iO);b.encodeNonAsciiHTML=pt(P);function at(t){return Object.keys(t).sort().reduce(function(s,o){return s[t[o]]="&"+o+";",s},{})}function lt(t){for(var s=[],o=[],c=0,r=Object.keys(t);c<r.length;c++){var e=r[c];e.length===1?s.push("\\"+e):o.push(e)}s.sort();for(var a=0;a<s.length-1;a++){for(var l=a;l<s.length-1&&s[l].charCodeAt(1)+1===s[l+1].charCodeAt(1);)l+=1;var p=1+l-a;p<3||s.splice(a,p,s[a]+"-"+s[l])}return o.unshift("["+s.join("")+"]"),new RegExp(o.join("|"),"g")}var it=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,uO=String.prototype.codePointAt!=null?function(t){return t.codePointAt(0)}:function(t){return(t.charCodeAt(0)-55296)*1024+t.charCodeAt(1)-56320+65536};function H(t){return"&#x"+(t.length>1?uO(t):t.charCodeAt(0)).toString(16).toUpperCase()+";"}function pO(t,s){return function(o){return o.replace(s,function(c){return t[c]}).replace(it,H)}}var ut=new RegExp(et.source+"|"+it.source,"g");function dO(t){return t.replace(ut,H)}b.escape=dO;function fO(t){return t.replace(et,H)}b.escapeUTF8=fO;function pt(t){return function(s){return s.replace(ut,function(o){return t[o]||H(o)})}}(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.decodeXMLStrict=t.decodeHTML5Strict=t.decodeHTML4Strict=t.decodeHTML5=t.decodeHTML4=t.decodeHTMLStrict=t.decodeHTML=t.decodeXML=t.encodeHTML5=t.encodeHTML4=t.escapeUTF8=t.escape=t.encodeNonAsciiHTML=t.encodeHTML=t.encodeXML=t.encode=t.decodeStrict=t.decode=void 0;var s=L,o=b;function c(p,u){return(!u||u<=0?s.decodeXML:s.decodeHTML)(p)}t.decode=c;function r(p,u){return(!u||u<=0?s.decodeXML:s.decodeHTMLStrict)(p)}t.decodeStrict=r;function e(p,u){return(!u||u<=0?o.encodeXML:o.encodeHTML)(p)}t.encode=e;var a=b;Object.defineProperty(t,"encodeXML",{enumerable:!0,get:function(){return a.encodeXML}}),Object.defineProperty(t,"encodeHTML",{enumerable:!0,get:function(){return a.encodeHTML}}),Object.defineProperty(t,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return a.encodeNonAsciiHTML}}),Object.defineProperty(t,"escape",{enumerable:!0,get:function(){return a.escape}}),Object.defineProperty(t,"escapeUTF8",{enumerable:!0,get:function(){return a.escapeUTF8}}),Object.defineProperty(t,"encodeHTML4",{enumerable:!0,get:function(){return a.encodeHTML}}),Object.defineProperty(t,"encodeHTML5",{enumerable:!0,get:function(){return a.encodeHTML}});var l=L;Object.defineProperty(t,"decodeXML",{enumerable:!0,get:function(){return l.decodeXML}}),Object.defineProperty(t,"decodeHTML",{enumerable:!0,get:function(){return l.decodeHTML}}),Object.defineProperty(t,"decodeHTMLStrict",{enumerable:!0,get:function(){return l.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML4",{enumerable:!0,get:function(){return l.decodeHTML}}),Object.defineProperty(t,"decodeHTML5",{enumerable:!0,get:function(){return l.decodeHTML}}),Object.defineProperty(t,"decodeHTML4Strict",{enumerable:!0,get:function(){return l.decodeHTMLStrict}}),Object.defineProperty(t,"decodeHTML5Strict",{enumerable:!0,get:function(){return l.decodeHTMLStrict}}),Object.defineProperty(t,"decodeXMLStrict",{enumerable:!0,get:function(){return l.decodeXML}})})(W);function gO(t,s){if(!(t instanceof s))throw new TypeError("Cannot call a class as a function")}function mO(t,s){for(var o=0;o<s.length;o++){var c=s[o];c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(t,c.key,c)}}function hO(t,s,o){return s&&mO(t.prototype,s),t}function dt(t,s){var o=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!o){if(Array.isArray(t)||(o=bO(t))||s){o&&(t=o);var c=0,r=function(){};return{s:r,n:function(){return c>=t.length?{done:!0}:{done:!1,value:t[c++]}},e:function(u){throw u},f:r}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
3
3
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var e=!0,a=!1,l;return{s:function(){o=o.call(t)},n:function(){var u=o.next();return e=u.done,u},e:function(u){a=!0,l=u},f:function(){try{!e&&o.return!=null&&o.return()}finally{if(a)throw l}}}}function bO(t,s){if(t){if(typeof t=="string")return J(t,s);var o=Object.prototype.toString.call(t).slice(8,-1);if(o==="Object"&&t.constructor&&(o=t.constructor.name),o==="Map"||o==="Set")return Array.from(t);if(o==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return J(t,s)}}function J(t,s){(s==null||s>t.length)&&(s=t.length);for(var o=0,c=new Array(s);o<s;o++)c[o]=t[o];return c}var vO=W,Y={fg:"#FFF",bg:"#000",newline:!1,escapeXML:!1,stream:!1,colors:wO()};function wO(){var t={0:"#000",1:"#A00",2:"#0A0",3:"#A50",4:"#00A",5:"#A0A",6:"#0AA",7:"#AAA",8:"#555",9:"#F55",10:"#5F5",11:"#FF5",12:"#55F",13:"#F5F",14:"#5FF",15:"#FFF"};return k(0,5).forEach(function(s){k(0,5).forEach(function(o){k(0,5).forEach(function(c){return qO(s,o,c,t)})})}),k(0,23).forEach(function(s){var o=s+232,c=ft(s*10+8);t[o]="#"+c+c+c}),t}function qO(t,s,o,c){var r=16+t*36+s*6+o,e=t>0?t*40+55:0,a=s>0?s*40+55:0,l=o>0?o*40+55:0;c[r]=yO([e,a,l])}function ft(t){for(var s=t.toString(16);s.length<2;)s="0"+s;return s}function yO(t){var s=[],o=dt(t),c;try{for(o.s();!(c=o.n()).done;){var r=c.value;s.push(ft(r))}}catch(e){o.e(e)}finally{o.f()}return"#"+s.join("")}function Z(t,s,o,c){var r;return s==="text"?r=TO(o,c):s==="display"?r=LO(t,o,c):s==="xterm256Foreground"?r=R(t,c.colors[o]):s==="xterm256Background"?r=j(t,c.colors[o]):s==="rgb"&&(r=xO(t,o)),r}function xO(t,s){s=s.substring(2).slice(0,-1);var o=+s.substr(0,2),c=s.substring(5).split(";"),r=c.map(function(e){return("0"+Number(e).toString(16)).substr(-2)}).join("");return N(t,(o===38?"color:#":"background-color:#")+r)}function LO(t,s,o){s=parseInt(s,10);var c={"-1":function(){return"<br/>"},0:function(){return t.length&&gt(t)},1:function(){return T(t,"b")},3:function(){return T(t,"i")},4:function(){return T(t,"u")},8:function(){return N(t,"display:none")},9:function(){return T(t,"strike")},22:function(){return N(t,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return K(t,"i")},24:function(){return K(t,"u")},39:function(){return R(t,o.fg)},49:function(){return j(t,o.bg)},53:function(){return N(t,"text-decoration:overline")}},r;return c[s]?r=c[s]():4<s&&s<7?r=T(t,"blink"):29<s&&s<38?r=R(t,o.colors[s-30]):39<s&&s<48?r=j(t,o.colors[s-40]):89<s&&s<98?r=R(t,o.colors[8+(s-90)]):99<s&&s<108&&(r=j(t,o.colors[8+(s-100)])),r}function gt(t){var s=t.slice(0);return t.length=0,s.reverse().map(function(o){return"</"+o+">"}).join("")}function k(t,s){for(var o=[],c=t;c<=s;c++)o.push(c);return o}function EO(t){return function(s){return(t===null||s.category!==t)&&t!=="all"}}function Q(t){t=parseInt(t,10);var s=null;return t===0?s="all":t===1?s="bold":2<t&&t<5?s="underline":4<t&&t<7?s="blink":t===8?s="hide":t===9?s="strike":29<t&&t<38||t===39||89<t&&t<98?s="foreground-color":(39<t&&t<48||t===49||99<t&&t<108)&&(s="background-color"),s}function TO(t,s){return s.escapeXML?vO.encodeXML(t):t}function T(t,s,o){return o||(o=""),t.push(s),"<".concat(s).concat(o?' style="'.concat(o,'"'):"",">")}function N(t,s){return T(t,"span",s)}function R(t,s){return T(t,"span","color:"+s)}function j(t,s){return T(t,"span","background-color:"+s)}function K(t,s){var o;if(t.slice(-1)[0]===s&&(o=t.pop()),o)return"</"+s+">"}function SO(t,s,o){var c=!1,r=3;function e(){return""}function a(w,q){return o("xterm256Foreground",q),""}function l(w,q){return o("xterm256Background",q),""}function p(w){return s.newline?o("display",-1):o("text",w),""}function u(w,q){c=!0,q.trim().length===0&&(q="0"),q=q.trimRight(";").split(";");var A=dt(q),I;try{for(A.s();!(I=A.n()).done;){var wt=I.value;o("display",wt)}}catch(qt){A.e(qt)}finally{A.f()}return""}function E(w){return o("text",w),""}function f(w){return o("rgb",w),""}var d=[{pattern:/^\x08+/,sub:e},{pattern:/^\x1b\[[012]?K/,sub:e},{pattern:/^\x1b\[\(B/,sub:e},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:f},{pattern:/^\x1b\[38;5;(\d+)m/,sub:a},{pattern:/^\x1b\[48;5;(\d+)m/,sub:l},{pattern:/^\n/,sub:p},{pattern:/^\r+\n/,sub:p},{pattern:/^\r/,sub:p},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:u},{pattern:/^\x1b\[\d?J/,sub:e},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:e},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:e},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:E}];function v(w,q){q>r&&c||(c=!1,t=t.replace(w.pattern,w.sub))}var h=[],y=t,x=y.length;t:for(;x>0;){for(var D=0,F=0,bt=d.length;F<bt;D=++F){var vt=d[D];if(v(vt,D),t.length!==x){x=t.length;continue t}}if(t.length===x)break;h.push(0),x=t.length}return h}function DO(t,s,o){return s!=="text"&&(t=t.filter(EO(Q(o))),t.push({token:s,data:o,category:Q(o)})),t}var AO=function(){function t(s){gO(this,t),s=s||{},s.colors&&(s.colors=Object.assign({},Y.colors,s.colors)),this.options=Object.assign({},Y,s),this.stack=[],this.stickyStack=[]}return hO(t,[{key:"toHtml",value:function(o){var c=this;o=typeof o=="string"?[o]:o;var r=this.stack,e=this.options,a=[];return this.stickyStack.forEach(function(l){var p=Z(r,l.token,l.data,e);p&&a.push(p)}),SO(o.join(""),e,function(l,p){var u=Z(r,l,p,e);u&&a.push(u),e.stream&&(c.stickyStack=DO(c.stickyStack,l,p))}),r.length&&a.push(gt(r)),a.join("")}}]),t}(),kO=AO;const NO=yt(kO);function mt(){const t=Tt();return m.useMemo(()=>new NO(t==="dark"?{fg:"#d6deeb",bg:"#121318",escapeXML:!0}:{fg:"#000000",bg:"#f3f3f3",escapeXML:!0}),[t])}function ht(t){return t.replace(/\u001b\[\d+A/g,"").replace(/\u001b\[\d+K/g,"")}const RO=i.intersection(i.object({type:i.literal("epicshop:test-status-update"),timestamp:i.number()}),i.union([i.object({status:i.literal("pending")}),i.object({status:i.literal("pass")}),i.object({status:i.literal("fail"),error:i.string()})])),jO=i.object({type:i.literal("epicshop:test-step-update"),status:i.literal("pass"),title:i.string(),timestamp:i.number()}),CO=i.union([jO,RO]);function UO({pathname:t,testFile:s}){const o=mt(),c=m.useRef(null),[r,e]=m.useState(null),[a,l]=m.useState([]);m.useEffect(()=>{function f(d){var y;if(d.source!==((y=c.current)==null?void 0:y.contentWindow)||"request"in d.data)return;const v=CO.safeParse(d.data,{path:["messageEvent","data"]});if(!v.success){console.error("Invalid message from test iframe",d.data,v.error);return}const{data:h}=v;h.type==="epicshop:test-status-update"&&(h.status==="pending"&&l([]),e(h)),h.type==="epicshop:test-step-update"&&l(x=>[...x,h])}return window.addEventListener("message",f),()=>{window.removeEventListener("message",f)}},[]);const p={pending:n.jsx(V,{size:14,"aria-label":"Pending"}),pass:n.jsx(g,{name:"CheckSmall","aria-label":"Passed",className:"text-emerald-700"}),fail:n.jsx(g,{name:"Remove","aria-label":"Failed",className:"text-foreground-danger"}),unknown:n.jsx(g,{name:"Question","aria-label":"Unknown",className:"animate-pulse"})}[(r==null?void 0:r.status)??"unknown"],u=a.sort((f,d)=>f.timestamp-d.timestamp),E={pass:n.jsx(g,{name:"CheckSmall","aria-label":"Passed"}),fail:n.jsx(g,{name:"Remove","aria-label":"Failed"}),unknown:n.jsx(g,{name:"Question","aria-label":"Unknown",className:"animate-pulse"})};return n.jsx(n.Fragment,{children:n.jsx(Lt,{className:"w-full",type:"multiple",children:n.jsx(Et,{icon:p,title:s,forceMount:!0,children:n.jsxs("div",{className:"not-prose",children:[n.jsxs("div",{className:"flex flex-col gap-2 p-5 pt-3",children:[n.jsx("ul",{className:"flex flex-col gap-2",children:u.map((f,d)=>n.jsx("li",{children:n.jsxs("div",{className:"flex items-baseline gap-2 text-emerald-700",children:[n.jsxs("span",{children:[d+1,"."]}),n.jsx("span",{children:E[f.status]}),n.jsx("pre",{className:"max-h-48 overflow-y-auto p-4 scrollbar-thin scrollbar-thumb-scrollbar",children:f.title})]})},f.timestamp+f.title))}),(r==null?void 0:r.status)==="fail"?n.jsxs("div",{className:"flex items-baseline gap-2 text-foreground-danger",children:[n.jsxs("span",{children:[u.length+1,"."]}),n.jsx("span",{children:E.fail}),n.jsx("pre",{className:"max-h-48 overflow-y-auto p-4 scrollbar-thin scrollbar-thumb-scrollbar",dangerouslySetInnerHTML:{__html:o.toHtml(ht(r.error))}})]}):null,n.jsx("iframe",{ref:c,title:s,src:t+s,className:"mt-5 min-h-[420px] w-full border bg-white"})]}),n.jsxs("div",{className:"flex border-y",children:[n.jsx("button",{onClick:()=>{var f,d;return(d=(f=c.current)==null?void 0:f.contentWindow)==null?void 0:d.location.reload()},className:"border-r p-3",children:n.jsx(g,{name:"Refresh","aria-label":"Rerun Tests"})}),n.jsx("a",{href:t+s,target:"_blank",rel:"noreferrer",className:"border-r p-3",children:n.jsx(g,{name:"ExternalLink","aria-label":"Open in New Window"})})]})]})})})})}const HO=i.union([i.object({type:i.literal("init"),exitCode:i.number().nullable().optional(),isRunning:i.boolean(),output:i.array(i.object({type:i.union([i.literal("stdout"),i.literal("stderr")]),content:i.string(),timestamp:i.number()}))}),i.object({type:i.union([i.literal("stdout"),i.literal("stderr")]),data:i.string(),timestamp:i.number()}),i.object({type:i.literal("exit"),isRunning:i.literal(!1),code:i.number().nullable()})]),$O=i.array(HO);function VO(t,s){return s(t)}function BO({name:t}){const[s,o]=m.useReducer(VO,{version:0,isRunning:!1,exitCode:void 0,lines:[]}),c=mt(),{version:r,isRunning:e,exitCode:a,lines:l}=s,p=Dt(`/test?${new URLSearchParams({name:t})}&v=${r}`);return m.useEffect(()=>{if(!p)return;const u=JSON.parse(p),E=$O.safeParse(u);if(!E.success){console.error(E.error.flatten());return}for(const f of E.data)switch(f.type){case"exit":{const{isRunning:d,code:v}=f;o(h=>({...h,isRunning:d,exitCode:v}));break}case"init":{const{output:d,exitCode:v,isRunning:h}=f;o(y=>({...y,lines:d,exitCode:v,isRunning:h}));break}case"stderr":case"stdout":{const{type:d,data:v,timestamp:h}=f;o(y=>({...y,lines:[...y.lines,{type:d,content:v,timestamp:h}].sort((x,D)=>x.timestamp-D.timestamp),isRunning:!0}));break}}},[p]),n.jsxs("div",{className:"relative flex h-full w-full flex-col overflow-y-auto",children:[n.jsxs("div",{className:"flex h-12 w-full flex-shrink-0 items-center justify-between border-b",children:[n.jsxs("div",{className:"flex h-full items-center",children:[!e&&n.jsx(MO,{name:t,onRun:()=>{o(u=>({...u,exitCode:void 0,lines:[],version:u.version+1}))}}),e?n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:n.jsx(V,{role:"status","aria-label":"Running Tests"})}),n.jsx(PO,{name:t})]}):null]}),!e&&a!==void 0&&n.jsx("p",{className:"pr-3.5 leading-none",children:a===0?"Tests passed":`Test failed (exit code ${String(a)})`}),!e&&a!==void 0&&n.jsx(OO,{name:t,onClear:()=>{o(u=>({...u,exitCode:void 0,lines:[]}))}})]}),n.jsxs("div",{className:"flex h-full flex-col gap-5 p-5",children:[n.jsx("p",{className:"font-mono text-sm font-medium uppercase",children:"Test Output"}),n.jsx("pre",{className:"shadow-on-scrollbox flex-1 overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar",children:l.map(u=>n.jsx("code",{"data-type":u.type,dangerouslySetInnerHTML:{__html:c.toHtml(ht(u.content))}},u.timestamp))})]})]})}function MO({name:t,onRun:s}){const o=M(),c=B(),r=m.useRef(s);return m.useEffect(()=>{r.current=s},[s]),m.useEffect(()=>{var e,a;(e=o.data)!=null&&e.success&&((a=r.current)==null||a.call(r))},[o.data]),n.jsxs(o.Form,{method:"POST",action:"/test",className:"h-full",children:[c,n.jsx("input",{type:"hidden",name:"name",value:t}),n.jsx(C,{content:o.state==="idle"?"Run Tests":"Running Tests...",children:n.jsx("button",{type:"submit",name:"intent",value:"run",className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:o.state==="idle"?n.jsx(g,{name:"TriangleSmall"}):n.jsx(V,{role:"status"})})})]})}function OO({name:t,onClear:s}){const o=M(),c=B(),r=m.useRef(s);return m.useEffect(()=>{r.current=s},[s]),m.useEffect(()=>{var e,a;(e=o.data)!=null&&e.success&&((a=r.current)==null||a.call(r))},[o.data]),n.jsxs(o.Form,{method:"POST",action:"/test",className:"h-full",children:[c,n.jsx("input",{type:"hidden",name:"name",value:t}),n.jsx(C,{content:o.state==="idle"?"Clear Tests":"Clearing Tests...",children:n.jsx("button",{type:"submit",name:"intent",value:"clear",className:"flex h-full flex-grow items-center justify-center border-l px-3.5",children:o.state==="idle"?n.jsx(g,{name:"Clear"}):n.jsx(g,{name:"Clear",className:"animate-pulse",role:"status"})})})]})}function PO({name:t,onStop:s}){const o=M(),c=B(),r=m.useRef(s);return m.useEffect(()=>{r.current=s},[s]),m.useEffect(()=>{var e,a;(e=o.data)!=null&&e.success&&((a=r.current)==null||a.call(r))},[o.data]),n.jsxs(o.Form,{method:"POST",action:"/test",className:"h-full",children:[c,n.jsx("input",{type:"hidden",name:"name",value:t}),n.jsx(C,{content:o.state==="idle"?"Stop Tests":"Stopping Tests...",children:n.jsx("button",{type:"submit",name:"intent",value:"stop",className:"flex h-full flex-grow items-center justify-center border-r px-3.5",children:o.state==="idle"?n.jsx(g,{name:"Stop"}):n.jsx(g,{name:"Stop",className:"animate-pulse",role:"status"})})})]})}function sP({appInfo:t,problemAppName:s,allApps:o,isUpToDate:c}){return n.jsx(kt,{playgroundAppName:t==null?void 0:t.appName,problemAppName:s,allApps:o,isUpToDate:c,children:n.jsx(FO,{playgroundAppInfo:t})})}function FO({playgroundAppInfo:t}){const[s,o]=m.useState(0);if(!St())return n.jsxs("div",{className:"w-full p-12",children:[n.jsxs("div",{className:"flex w-full flex-col gap-4 text-center",children:[n.jsx("p",{className:"text-2xl font-bold",children:"Access Denied"}),n.jsx("p",{className:"text-lg",children:"You must login or register for the workshop to view and run the tests."})]}),n.jsx("div",{className:"h-16"}),n.jsx("p",{className:"pb-4",children:"Check out this video to see how the test tab works."}),n.jsx(xt,{url:"https://www.epicweb.dev/tips/epic-workshop-test-tab-demo"})]});if(!t)return n.jsx("div",{className:"flex h-full items-center justify-center text-lg",children:n.jsx("p",{children:"No tests here 😢 Sorry."})});if(t.test.type==="script")return n.jsx(BO,{name:t.name});if(t.test.type==="browser"){const{pathname:r}=t.test;return n.jsxs("div",{className:"flex h-full w-full flex-grow flex-col overflow-y-auto",children:[t.test.testFiles.map(e=>n.jsx("div",{children:n.jsx(UO,{pathname:r,testFile:e})},e)),n.jsx("div",{className:"px-3 py-[21px]",children:n.jsxs("button",{onClick:()=>o(e=>e+1),className:"flex items-center gap-2 font-mono text-sm uppercase leading-none",children:[n.jsx(g,{name:"Refresh","aria-hidden":!0})," Rerun All Tests"]})})]},s)}return n.jsx("div",{className:"flex h-full items-center justify-center text-lg",children:n.jsx("p",{children:"No tests here 😢 Sorry."})})}export{kt as P,FO as T,sP as a};
4
- //# sourceMappingURL=tests-DbuyD2cI.js.map
4
+ //# sourceMappingURL=tests-CiM4RPOf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests-CiM4RPOf.js","sources":["../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/__shared/playground-window.tsx","../../../../../node_modules/entities/lib/decode_codepoint.js","../../../../../node_modules/entities/lib/decode.js","../../../../../node_modules/entities/lib/encode.js","../../../../../node_modules/entities/lib/index.js","../../../../../node_modules/ansi-to-html/lib/ansi_to_html.js","../../../app/utils/ansi-text.ts","../../../app/components/in-browser-test-runner.tsx","../../../app/routes/test.tsx","../../../app/routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/__shared/tests.tsx"],"sourcesContent":["import { Icon } from '#app/components/icons'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.js'\nimport { PlaygroundChooser, SetPlayground } from '#app/routes/set-playground'\n\nexport function PlaygroundWindow({\n\tplaygroundAppName,\n\tproblemAppName,\n\tisUpToDate,\n\tallApps,\n\tchildren,\n}: {\n\tplaygroundAppName?: string\n\tproblemAppName?: string\n\tisUpToDate: boolean\n\tallApps: Array<{ name: string; displayName: string }>\n\tchildren: React.ReactNode\n}) {\n\tconst isCorrectApp = playgroundAppName === problemAppName\n\tconst playgroundLinkedUI =\n\t\tisCorrectApp && isUpToDate ? (\n\t\t\t<Icon size=\"xl\" name=\"Linked\" />\n\t\t) : (\n\t\t\t<Icon\n\t\t\t\tsize=\"xl\"\n\t\t\t\tname=\"Unlinked\"\n\t\t\t\tclassName=\"animate-pulse text-foreground-danger\"\n\t\t\t/>\n\t\t)\n\tlet setPlaygroundTooltipText = 'Click to reset Playground.'\n\tif (!isUpToDate) {\n\t\tsetPlaygroundTooltipText =\n\t\t\t'Playground is out of date. Click to reset Playground.'\n\t}\n\tif (!isCorrectApp) {\n\t\tsetPlaygroundTooltipText =\n\t\t\t'Playground is not set to the right app. Click to set Playground.'\n\t}\n\treturn (\n\t\t<div className=\"flex h-full w-full flex-col justify-between\">\n\t\t\t<div className=\"flex h-14 flex-shrink-0 items-center justify-start gap-2 border-b px-3\">\n\t\t\t\t<div className=\"display-alt-up\">\n\t\t\t\t\t{problemAppName ? (\n\t\t\t\t\t\t<SetPlayground\n\t\t\t\t\t\t\tappName={problemAppName}\n\t\t\t\t\t\t\ttooltipText={setPlaygroundTooltipText}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{playgroundLinkedUI}\n\t\t\t\t\t\t</SetPlayground>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<SimpleTooltip content=\"No problem app available for this step\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<Icon name=\"Question\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</SimpleTooltip>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"display-alt-down\">\n\t\t\t\t\t{playgroundAppName ? (\n\t\t\t\t\t\t<SetPlayground\n\t\t\t\t\t\t\tappName={playgroundAppName}\n\t\t\t\t\t\t\treset\n\t\t\t\t\t\t\ttooltipText=\"Reset Playground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex h-7 w-7 items-center justify-center\">\n\t\t\t\t\t\t\t\t<Icon name=\"Refresh\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</SetPlayground>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"h-7 w-7\" />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<PlaygroundChooser\n\t\t\t\t\tallApps={allApps}\n\t\t\t\t\tplaygroundAppName={playgroundAppName}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div className=\"flex h-full flex-1 flex-grow items-center justify-center\">\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `&num;`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"&#x\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `&#xfc;`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar entities = require('entities');\n\nvar defaults = {\n fg: '#FFF',\n bg: '#000',\n newline: false,\n escapeXML: false,\n stream: false,\n colors: getDefaultColors()\n};\n\nfunction getDefaultColors() {\n var colors = {\n 0: '#000',\n 1: '#A00',\n 2: '#0A0',\n 3: '#A50',\n 4: '#00A',\n 5: '#A0A',\n 6: '#0AA',\n 7: '#AAA',\n 8: '#555',\n 9: '#F55',\n 10: '#5F5',\n 11: '#FF5',\n 12: '#55F',\n 13: '#F5F',\n 14: '#5FF',\n 15: '#FFF'\n };\n range(0, 5).forEach(function (red) {\n range(0, 5).forEach(function (green) {\n range(0, 5).forEach(function (blue) {\n return setStyleColor(red, green, blue, colors);\n });\n });\n });\n range(0, 23).forEach(function (gray) {\n var c = gray + 232;\n var l = toHexString(gray * 10 + 8);\n colors[c] = '#' + l + l + l;\n });\n return colors;\n}\n/**\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n * @param {object} colors\n */\n\n\nfunction setStyleColor(red, green, blue, colors) {\n var c = 16 + red * 36 + green * 6 + blue;\n var r = red > 0 ? red * 40 + 55 : 0;\n var g = green > 0 ? green * 40 + 55 : 0;\n var b = blue > 0 ? blue * 40 + 55 : 0;\n colors[c] = toColorHexString([r, g, b]);\n}\n/**\n * Converts from a number like 15 to a hex string like 'F'\n * @param {number} num\n * @returns {string}\n */\n\n\nfunction toHexString(num) {\n var str = num.toString(16);\n\n while (str.length < 2) {\n str = '0' + str;\n }\n\n return str;\n}\n/**\n * Converts from an array of numbers like [15, 15, 15] to a hex string like 'FFF'\n * @param {[red, green, blue]} ref\n * @returns {string}\n */\n\n\nfunction toColorHexString(ref) {\n var results = [];\n\n var _iterator = _createForOfIteratorHelper(ref),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var r = _step.value;\n results.push(toHexString(r));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return '#' + results.join('');\n}\n/**\n * @param {Array} stack\n * @param {string} token\n * @param {*} data\n * @param {object} options\n */\n\n\nfunction generateOutput(stack, token, data, options) {\n var result;\n\n if (token === 'text') {\n result = pushText(data, options);\n } else if (token === 'display') {\n result = handleDisplay(stack, data, options);\n } else if (token === 'xterm256Foreground') {\n result = pushForegroundColor(stack, options.colors[data]);\n } else if (token === 'xterm256Background') {\n result = pushBackgroundColor(stack, options.colors[data]);\n } else if (token === 'rgb') {\n result = handleRgb(stack, data);\n }\n\n return result;\n}\n/**\n * @param {Array} stack\n * @param {string} data\n * @returns {*}\n */\n\n\nfunction handleRgb(stack, data) {\n data = data.substring(2).slice(0, -1);\n var operation = +data.substr(0, 2);\n var color = data.substring(5).split(';');\n var rgb = color.map(function (value) {\n return ('0' + Number(value).toString(16)).substr(-2);\n }).join('');\n return pushStyle(stack, (operation === 38 ? 'color:#' : 'background-color:#') + rgb);\n}\n/**\n * @param {Array} stack\n * @param {number} code\n * @param {object} options\n * @returns {*}\n */\n\n\nfunction handleDisplay(stack, code, options) {\n code = parseInt(code, 10);\n var codeMap = {\n '-1': function _() {\n return '<br/>';\n },\n 0: function _() {\n return stack.length && resetStyles(stack);\n },\n 1: function _() {\n return pushTag(stack, 'b');\n },\n 3: function _() {\n return pushTag(stack, 'i');\n },\n 4: function _() {\n return pushTag(stack, 'u');\n },\n 8: function _() {\n return pushStyle(stack, 'display:none');\n },\n 9: function _() {\n return pushTag(stack, 'strike');\n },\n 22: function _() {\n return pushStyle(stack, 'font-weight:normal;text-decoration:none;font-style:normal');\n },\n 23: function _() {\n return closeTag(stack, 'i');\n },\n 24: function _() {\n return closeTag(stack, 'u');\n },\n 39: function _() {\n return pushForegroundColor(stack, options.fg);\n },\n 49: function _() {\n return pushBackgroundColor(stack, options.bg);\n },\n 53: function _() {\n return pushStyle(stack, 'text-decoration:overline');\n }\n };\n var result;\n\n if (codeMap[code]) {\n result = codeMap[code]();\n } else if (4 < code && code < 7) {\n result = pushTag(stack, 'blink');\n } else if (29 < code && code < 38) {\n result = pushForegroundColor(stack, options.colors[code - 30]);\n } else if (39 < code && code < 48) {\n result = pushBackgroundColor(stack, options.colors[code - 40]);\n } else if (89 < code && code < 98) {\n result = pushForegroundColor(stack, options.colors[8 + (code - 90)]);\n } else if (99 < code && code < 108) {\n result = pushBackgroundColor(stack, options.colors[8 + (code - 100)]);\n }\n\n return result;\n}\n/**\n * Clear all the styles\n * @returns {string}\n */\n\n\nfunction resetStyles(stack) {\n var stackClone = stack.slice(0);\n stack.length = 0;\n return stackClone.reverse().map(function (tag) {\n return '</' + tag + '>';\n }).join('');\n}\n/**\n * Creates an array of numbers ranging from low to high\n * @param {number} low\n * @param {number} high\n * @returns {Array}\n * @example range(3, 7); // creates [3, 4, 5, 6, 7]\n */\n\n\nfunction range(low, high) {\n var results = [];\n\n for (var j = low; j <= high; j++) {\n results.push(j);\n }\n\n return results;\n}\n/**\n * Returns a new function that is true if value is NOT the same category\n * @param {string} category\n * @returns {function}\n */\n\n\nfunction notCategory(category) {\n return function (e) {\n return (category === null || e.category !== category) && category !== 'all';\n };\n}\n/**\n * Converts a code into an ansi token type\n * @param {number} code\n * @returns {string}\n */\n\n\nfunction categoryForCode(code) {\n code = parseInt(code, 10);\n var result = null;\n\n if (code === 0) {\n result = 'all';\n } else if (code === 1) {\n result = 'bold';\n } else if (2 < code && code < 5) {\n result = 'underline';\n } else if (4 < code && code < 7) {\n result = 'blink';\n } else if (code === 8) {\n result = 'hide';\n } else if (code === 9) {\n result = 'strike';\n } else if (29 < code && code < 38 || code === 39 || 89 < code && code < 98) {\n result = 'foreground-color';\n } else if (39 < code && code < 48 || code === 49 || 99 < code && code < 108) {\n result = 'background-color';\n }\n\n return result;\n}\n/**\n * @param {string} text\n * @param {object} options\n * @returns {string}\n */\n\n\nfunction pushText(text, options) {\n if (options.escapeXML) {\n return entities.encodeXML(text);\n }\n\n return text;\n}\n/**\n * @param {Array} stack\n * @param {string} tag\n * @param {string} [style='']\n * @returns {string}\n */\n\n\nfunction pushTag(stack, tag, style) {\n if (!style) {\n style = '';\n }\n\n stack.push(tag);\n return \"<\".concat(tag).concat(style ? \" style=\\\"\".concat(style, \"\\\"\") : '', \">\");\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction pushStyle(stack, style) {\n return pushTag(stack, 'span', style);\n}\n\nfunction pushForegroundColor(stack, color) {\n return pushTag(stack, 'span', 'color:' + color);\n}\n\nfunction pushBackgroundColor(stack, color) {\n return pushTag(stack, 'span', 'background-color:' + color);\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction closeTag(stack, style) {\n var last;\n\n if (stack.slice(-1)[0] === style) {\n last = stack.pop();\n }\n\n if (last) {\n return '</' + style + '>';\n }\n}\n/**\n * @param {string} text\n * @param {object} options\n * @param {function} callback\n * @returns {Array}\n */\n\n\nfunction tokenize(text, options, callback) {\n var ansiMatch = false;\n var ansiHandler = 3;\n\n function remove() {\n return '';\n }\n\n function removeXterm256Foreground(m, g1) {\n callback('xterm256Foreground', g1);\n return '';\n }\n\n function removeXterm256Background(m, g1) {\n callback('xterm256Background', g1);\n return '';\n }\n\n function newline(m) {\n if (options.newline) {\n callback('display', -1);\n } else {\n callback('text', m);\n }\n\n return '';\n }\n\n function ansiMess(m, g1) {\n ansiMatch = true;\n\n if (g1.trim().length === 0) {\n g1 = '0';\n }\n\n g1 = g1.trimRight(';').split(';');\n\n var _iterator2 = _createForOfIteratorHelper(g1),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var g = _step2.value;\n callback('display', g);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return '';\n }\n\n function realText(m) {\n callback('text', m);\n return '';\n }\n\n function rgb(m) {\n callback('rgb', m);\n return '';\n }\n /* eslint no-control-regex:0 */\n\n\n var tokens = [{\n pattern: /^\\x08+/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[012]?K/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[\\(B/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[34]8;2;\\d+;\\d+;\\d+m/,\n sub: rgb\n }, {\n pattern: /^\\x1b\\[38;5;(\\d+)m/,\n sub: removeXterm256Foreground\n }, {\n pattern: /^\\x1b\\[48;5;(\\d+)m/,\n sub: removeXterm256Background\n }, {\n pattern: /^\\n/,\n sub: newline\n }, {\n pattern: /^\\r+\\n/,\n sub: newline\n }, {\n pattern: /^\\r/,\n sub: newline\n }, {\n pattern: /^\\x1b\\[((?:\\d{1,3};?)+|)m/,\n sub: ansiMess\n }, {\n // CSI n J\n // ED - Erase in Display Clears part of the screen.\n // If n is 0 (or missing), clear from cursor to end of screen.\n // If n is 1, clear from cursor to beginning of the screen.\n // If n is 2, clear entire screen (and moves cursor to upper left on DOS ANSI.SYS).\n // If n is 3, clear entire screen and delete all lines saved in the scrollback buffer\n // (this feature was added for xterm and is supported by other terminal applications).\n pattern: /^\\x1b\\[\\d?J/,\n sub: remove\n }, {\n // CSI n ; m f\n // HVP - Horizontal Vertical Position Same as CUP\n pattern: /^\\x1b\\[\\d{0,3};\\d{0,3}f/,\n sub: remove\n }, {\n // catch-all for CSI sequences?\n pattern: /^\\x1b\\[?[\\d;]{0,3}/,\n sub: remove\n }, {\n /**\n * extracts real text - not containing:\n * - `\\x1b' - ESC - escape (Ascii 27)\n * - '\\x08' - BS - backspace (Ascii 8)\n * - `\\n` - Newline - linefeed (LF) (ascii 10)\n * - `\\r` - Windows Carriage Return (CR)\n */\n pattern: /^(([^\\x1b\\x08\\r\\n])+)/,\n sub: realText\n }];\n\n function process(handler, i) {\n if (i > ansiHandler && ansiMatch) {\n return;\n }\n\n ansiMatch = false;\n text = text.replace(handler.pattern, handler.sub);\n }\n\n var results1 = [];\n var _text = text,\n length = _text.length;\n\n outer: while (length > 0) {\n for (var i = 0, o = 0, len = tokens.length; o < len; i = ++o) {\n var handler = tokens[i];\n process(handler, i);\n\n if (text.length !== length) {\n // We matched a token and removed it from the text. We need to\n // start matching *all* tokens against the new text.\n length = text.length;\n continue outer;\n }\n }\n\n if (text.length === length) {\n break;\n }\n\n results1.push(0);\n length = text.length;\n }\n\n return results1;\n}\n/**\n * If streaming, then the stack is \"sticky\"\n *\n * @param {Array} stickyStack\n * @param {string} token\n * @param {*} data\n * @returns {Array}\n */\n\n\nfunction updateStickyStack(stickyStack, token, data) {\n if (token !== 'text') {\n stickyStack = stickyStack.filter(notCategory(categoryForCode(data)));\n stickyStack.push({\n token: token,\n data: data,\n category: categoryForCode(data)\n });\n }\n\n return stickyStack;\n}\n\nvar Filter = /*#__PURE__*/function () {\n /**\n * @param {object} options\n * @param {string=} options.fg The default foreground color used when reset color codes are encountered.\n * @param {string=} options.bg The default background color used when reset color codes are encountered.\n * @param {boolean=} options.newline Convert newline characters to `<br/>`.\n * @param {boolean=} options.escapeXML Generate HTML/XML entities.\n * @param {boolean=} options.stream Save style state across invocations of `toHtml()`.\n * @param {(string[] | {[code: number]: string})=} options.colors Can override specific colors or the entire ANSI palette.\n */\n function Filter(options) {\n _classCallCheck(this, Filter);\n\n options = options || {};\n\n if (options.colors) {\n options.colors = Object.assign({}, defaults.colors, options.colors);\n }\n\n this.options = Object.assign({}, defaults, options);\n this.stack = [];\n this.stickyStack = [];\n }\n /**\n * @param {string | string[]} input\n * @returns {string}\n */\n\n\n _createClass(Filter, [{\n key: \"toHtml\",\n value: function toHtml(input) {\n var _this = this;\n\n input = typeof input === 'string' ? [input] : input;\n var stack = this.stack,\n options = this.options;\n var buf = [];\n this.stickyStack.forEach(function (element) {\n var output = generateOutput(stack, element.token, element.data, options);\n\n if (output) {\n buf.push(output);\n }\n });\n tokenize(input.join(''), options, function (token, data) {\n var output = generateOutput(stack, token, data, options);\n\n if (output) {\n buf.push(output);\n }\n\n if (options.stream) {\n _this.stickyStack = updateStickyStack(_this.stickyStack, token, data);\n }\n });\n\n if (stack.length) {\n buf.push(resetStyles(stack));\n }\n\n return buf.join('');\n }\n }]);\n\n return Filter;\n}();\n\nmodule.exports = Filter;\n//# sourceMappingURL=ansi_to_html.js.map","import AnsiToHTML from 'ansi-to-html'\nimport { useMemo } from 'react'\nimport { useTheme } from '#app/routes/theme/index.js'\n\nexport function useAnsiToHtml() {\n\tconst theme = useTheme()\n\tconst ansi = useMemo(\n\t\t() =>\n\t\t\tnew AnsiToHTML(\n\t\t\t\ttheme === 'dark'\n\t\t\t\t\t? { fg: '#d6deeb', bg: '#121318', escapeXML: true }\n\t\t\t\t\t: { fg: '#000000', bg: '#f3f3f3', escapeXML: true },\n\t\t\t),\n\t\t[theme],\n\t)\n\treturn ansi\n}\n\n// remove this when this is fixed: https://github.com/rburns/ansi-to-html/issues/112\nexport function stripCursorMovements(data: string) {\n\treturn data.replace(/\\u001b\\[\\d+A/g, '').replace(/\\u001b\\[\\d+K/g, '')\n}\n","import * as Accordion from '@radix-ui/react-accordion'\nimport { useEffect, useRef, useState } from 'react'\nimport { z } from 'zod'\nimport AccordionComponent from '#app/components/accordion.tsx'\nimport { stripCursorMovements, useAnsiToHtml } from '#app/utils/ansi-text.js'\nimport { AnimatedBars, Icon } from './icons.tsx'\n\nconst testRunnerStatusDataSchema = z.intersection(\n\tz.object({\n\t\ttype: z.literal('epicshop:test-status-update'),\n\t\ttimestamp: z.number(),\n\t}),\n\tz.union([\n\t\tz.object({ status: z.literal('pending') }),\n\t\tz.object({ status: z.literal('pass') }),\n\t\tz.object({ status: z.literal('fail'), error: z.string() }),\n\t]),\n)\n\nconst testRunnerTestStepDataSchema = z.object({\n\ttype: z.literal('epicshop:test-step-update'),\n\tstatus: z.literal('pass'),\n\ttitle: z.string(),\n\ttimestamp: z.number(),\n})\n\nconst testRunnerDataSchema = z.union([\n\ttestRunnerTestStepDataSchema,\n\ttestRunnerStatusDataSchema,\n])\n\ntype TestRunnerStatusData = z.infer<typeof testRunnerStatusDataSchema>\ntype TestRunnerTestStepData = z.infer<typeof testRunnerTestStepDataSchema>\n\nexport function InBrowserTestRunner({\n\tpathname,\n\ttestFile,\n}: {\n\tpathname: string\n\ttestFile: string\n}) {\n\tconst ansi = useAnsiToHtml()\n\tconst iframeRef = useRef<HTMLIFrameElement>(null)\n\tconst [message, setMessage] = useState<TestRunnerStatusData | null>(null)\n\tconst [testSteps, setTestSteps] = useState<Array<TestRunnerTestStepData>>([])\n\n\tuseEffect(() => {\n\t\tfunction handleMessage(messageEvent: MessageEvent) {\n\t\t\tif (messageEvent.source !== iframeRef.current?.contentWindow) return\n\t\t\tif ('request' in messageEvent.data) return\n\n\t\t\tconst result = testRunnerDataSchema.safeParse(messageEvent.data, {\n\t\t\t\tpath: ['messageEvent', 'data'],\n\t\t\t})\n\t\t\tif (!result.success) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`Invalid message from test iframe`,\n\t\t\t\t\tmessageEvent.data,\n\t\t\t\t\tresult.error,\n\t\t\t\t)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst { data } = result\n\t\t\tif (data.type === 'epicshop:test-status-update') {\n\t\t\t\tif (data.status === 'pending') {\n\t\t\t\t\tsetTestSteps([])\n\t\t\t\t}\n\t\t\t\tsetMessage(data)\n\t\t\t}\n\t\t\tif (data.type === 'epicshop:test-step-update') {\n\t\t\t\tsetTestSteps((steps) => [...steps, data])\n\t\t\t}\n\t\t}\n\t\twindow.addEventListener('message', handleMessage)\n\t\treturn () => {\n\t\t\twindow.removeEventListener('message', handleMessage)\n\t\t}\n\t}, [])\n\n\tconst statusEmoji = {\n\t\tpending: <AnimatedBars size={14} aria-label=\"Pending\" />,\n\t\tpass: (\n\t\t\t<Icon\n\t\t\t\tname=\"CheckSmall\"\n\t\t\t\taria-label=\"Passed\"\n\t\t\t\tclassName=\"text-emerald-700\"\n\t\t\t/>\n\t\t),\n\t\tfail: (\n\t\t\t<Icon\n\t\t\t\tname=\"Remove\"\n\t\t\t\taria-label=\"Failed\"\n\t\t\t\tclassName=\"text-foreground-danger\"\n\t\t\t/>\n\t\t),\n\t\tunknown: (\n\t\t\t<Icon name=\"Question\" aria-label=\"Unknown\" className=\"animate-pulse\" />\n\t\t),\n\t}[message?.status ?? 'unknown']\n\n\tconst sortedTestSteps = testSteps.sort((a, b) => a.timestamp - b.timestamp)\n\tconst testStepStatusEmojis = {\n\t\tpass: <Icon name=\"CheckSmall\" aria-label=\"Passed\" />,\n\t\tfail: <Icon name=\"Remove\" aria-label=\"Failed\" />,\n\t\tunknown: (\n\t\t\t<Icon name=\"Question\" aria-label=\"Unknown\" className=\"animate-pulse\" />\n\t\t),\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Accordion.Root className=\"w-full\" type=\"multiple\">\n\t\t\t\t<AccordionComponent\n\t\t\t\t\ticon={statusEmoji}\n\t\t\t\t\ttitle={testFile}\n\t\t\t\t\tforceMount={true}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"not-prose\">\n\t\t\t\t\t\t<div className=\"flex flex-col gap-2 p-5 pt-3\">\n\t\t\t\t\t\t\t<ul className=\"flex flex-col gap-2\">\n\t\t\t\t\t\t\t\t{sortedTestSteps.map((testStep, index) => (\n\t\t\t\t\t\t\t\t\t// sometimes the steps come in so fast that the timestamp is the same\n\t\t\t\t\t\t\t\t\t<li key={testStep.timestamp + testStep.title}>\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-baseline gap-2 text-emerald-700\">\n\t\t\t\t\t\t\t\t\t\t\t<span>{index + 1}.</span>\n\t\t\t\t\t\t\t\t\t\t\t<span>{testStepStatusEmojis[testStep.status]}</span>\n\t\t\t\t\t\t\t\t\t\t\t<pre className=\"max-h-48 overflow-y-auto p-4 scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t\t\t\t\t\t\t\t{testStep.title}\n\t\t\t\t\t\t\t\t\t\t\t</pre>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t{message?.status === 'fail' ? (\n\t\t\t\t\t\t\t\t<div className=\"flex items-baseline gap-2 text-foreground-danger\">\n\t\t\t\t\t\t\t\t\t<span>{sortedTestSteps.length + 1}.</span>\n\t\t\t\t\t\t\t\t\t<span>{testStepStatusEmojis.fail}</span>\n\t\t\t\t\t\t\t\t\t<pre\n\t\t\t\t\t\t\t\t\t\tclassName=\"max-h-48 overflow-y-auto p-4 scrollbar-thin scrollbar-thumb-scrollbar\"\n\t\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t\t\t\t__html: ansi.toHtml(stripCursorMovements(message.error)),\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t<iframe\n\t\t\t\t\t\t\t\tref={iframeRef}\n\t\t\t\t\t\t\t\ttitle={testFile}\n\t\t\t\t\t\t\t\tsrc={pathname + testFile}\n\t\t\t\t\t\t\t\tclassName=\"mt-5 min-h-[420px] w-full border bg-white\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"flex border-y\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\tiframeRef.current?.contentWindow?.location.reload()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclassName=\"border-r p-3\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"Refresh\" aria-label=\"Rerun Tests\" />\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref={pathname + testFile}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tclassName=\"border-r p-3\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"ExternalLink\" aria-label=\"Open in New Window\" />\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</AccordionComponent>\n\t\t\t</Accordion.Root>\n\t\t</>\n\t)\n}\n","import { getAppByName } from '@epic-web/workshop-utils/apps.server'\nimport { userHasAccessToWorkshop } from '@epic-web/workshop-utils/epic-api.server'\nimport {\n\tclearTestProcessEntry,\n\tgetTestProcessEntry,\n\tisTestRunning,\n\trunAppTests,\n} from '@epic-web/workshop-utils/process-manager.server'\nimport {\n\tunstable_data as data,\n\ttype ActionFunctionArgs,\n\ttype LoaderFunctionArgs,\n} from '@remix-run/node'\nimport { useFetcher } from '@remix-run/react'\nimport { useEffect, useReducer, useRef } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { AnimatedBars, Icon } from '#app/components/icons.tsx'\nimport { SimpleTooltip } from '#app/components/ui/tooltip.tsx'\nimport { stripCursorMovements, useAnsiToHtml } from '#app/utils/ansi-text.js'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { dataWithPE, usePERedirectInput } from '#app/utils/pe.js'\nimport { createToastHeaders } from '#app/utils/toast.server.js'\n\nconst testActionSchema = z.union([\n\tz.object({\n\t\tintent: z.literal('run'),\n\t\tname: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('stop'),\n\t\tname: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('clear'),\n\t\tname: z.string(),\n\t}),\n])\n\nconst testEventSchema = z.union([\n\tz.object({\n\t\ttype: z.literal('init'),\n\t\texitCode: z.number().nullable().optional(),\n\t\tisRunning: z.boolean(),\n\t\toutput: z.array(\n\t\t\tz.object({\n\t\t\t\ttype: z.union([z.literal('stdout'), z.literal('stderr')]),\n\t\t\t\tcontent: z.string(),\n\t\t\t\ttimestamp: z.number(),\n\t\t\t}),\n\t\t),\n\t}),\n\tz.object({\n\t\ttype: z.union([z.literal('stdout'), z.literal('stderr')]),\n\t\tdata: z.string(),\n\t\ttimestamp: z.number(),\n\t}),\n\tz.object({\n\t\ttype: z.literal('exit'),\n\t\tisRunning: z.literal(false),\n\t\tcode: z.number().nullable(),\n\t}),\n])\nconst testEventQueueSchema = z.array(testEventSchema)\n\ntype TestEvent = z.infer<typeof testEventSchema>\ntype TestEventQueue = z.infer<typeof testEventQueueSchema>\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\tconst url = new URL(request.url)\n\tconst name = url.searchParams.get('name')\n\tif (!name) {\n\t\treturn data({ error: 'Missing name' }, { status: 400 })\n\t}\n\tconst app = await getAppByName(name)\n\tif (!app) {\n\t\treturn data({ error: 'App not found' }, { status: 404 })\n\t}\n\tconst processEntry = getTestProcessEntry(app)\n\tif (!processEntry) {\n\t\treturn data({ error: 'App is not running tests' }, { status: 404 })\n\t}\n\treturn eventStream(request.signal, function setup(send) {\n\t\t// have to batch because the client may miss events if we send too many\n\t\t// too rapidly\n\t\tlet queue: TestEventQueue = []\n\t\tfunction sendEvent(event: TestEvent) {\n\t\t\tqueue.push(event)\n\t\t}\n\t\tconst interval = setInterval(() => {\n\t\t\tif (queue.length) {\n\t\t\t\tsend({ data: JSON.stringify(queue) })\n\t\t\t\tqueue = []\n\t\t\t}\n\t\t}, 10)\n\n\t\tconst isRunning = isTestRunning(app)\n\n\t\tsendEvent({\n\t\t\ttype: 'init',\n\t\t\texitCode: processEntry.exitCode,\n\t\t\tisRunning,\n\t\t\toutput: processEntry.output.map((line) => ({\n\t\t\t\ttype: line.type,\n\t\t\t\tcontent: line.content,\n\t\t\t\ttimestamp: line.timestamp,\n\t\t\t})),\n\t\t})\n\n\t\tconst testProcess = processEntry.process\n\t\tif (!testProcess) {\n\t\t\treturn () => {}\n\t\t}\n\n\t\tfunction handleStdOutData(data: Buffer) {\n\t\t\tsendEvent({\n\t\t\t\ttype: 'stdout',\n\t\t\t\tdata: data.toString('utf-8'),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t})\n\t\t}\n\t\tfunction handleStdErrData(data: Buffer) {\n\t\t\tsendEvent({\n\t\t\t\ttype: 'stderr',\n\t\t\t\tdata: data.toString('utf-8'),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t})\n\t\t}\n\t\tfunction handleExit(code: number) {\n\t\t\ttestProcess?.stdout?.off('data', handleStdOutData)\n\t\t\ttestProcess?.stderr?.off('data', handleStdErrData)\n\t\t\ttestProcess?.off('exit', handleExit)\n\t\t\tsendEvent({ type: 'exit', isRunning: false, code })\n\t\t}\n\t\ttestProcess.stdout?.on('data', handleStdOutData)\n\t\ttestProcess.stderr?.on('data', handleStdErrData)\n\t\ttestProcess.on('exit', handleExit)\n\t\treturn function cleanup() {\n\t\t\ttestProcess.stdout?.off('data', handleStdOutData)\n\t\t\ttestProcess.stderr?.off('data', handleStdErrData)\n\t\t\ttestProcess.off('exit', handleExit)\n\t\t\tclearInterval(interval)\n\t\t}\n\t})\n}\n\nexport async function action({ request }: ActionFunctionArgs) {\n\tensureUndeployed()\n\tconst formData = await request.formData()\n\tconst userHasAccess = await userHasAccessToWorkshop({\n\t\trequest,\n\t})\n\tif (!userHasAccess) {\n\t\treturn dataWithPE(\n\t\t\tformData,\n\t\t\t{\n\t\t\t\tsuccess: false,\n\t\t\t\terror:\n\t\t\t\t\t'You do not have access to this workshop. Login or register for the workshop to be able to run the tests.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tstatus: 403,\n\t\t\t\theaders: await createToastHeaders({\n\t\t\t\t\ttitle: 'Access denied',\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t'You do not have access to this workshop. Login or register for the workshop to be able to run the tests.',\n\t\t\t\t}),\n\t\t\t},\n\t\t)\n\t}\n\tconst result = testActionSchema.safeParse({\n\t\tintent: formData.get('intent'),\n\t\tname: formData.get('name'),\n\t})\n\tif (!result.success) {\n\t\treturn dataWithPE(\n\t\t\tformData,\n\t\t\t{ success: false, error: result.error.flatten() },\n\t\t\t{ status: 400 },\n\t\t)\n\t}\n\tconst app = await getAppByName(result.data.name)\n\tif (!app) {\n\t\treturn dataWithPE(\n\t\t\tformData,\n\t\t\t{ success: false, error: 'App not found' },\n\t\t\t{ status: 404 },\n\t\t)\n\t}\n\tswitch (result.data.intent) {\n\t\tcase 'run': {\n\t\t\tvoid runAppTests(app)\n\t\t\treturn dataWithPE(formData, { success: true })\n\t\t}\n\t\tcase 'stop': {\n\t\t\tconst processEntry = getTestProcessEntry(app)\n\t\t\tif (processEntry) {\n\t\t\t\tprocessEntry.process?.kill()\n\t\t\t}\n\t\t\treturn dataWithPE(formData, { success: true })\n\t\t}\n\t\tcase 'clear': {\n\t\t\tclearTestProcessEntry(app)\n\t\t\treturn dataWithPE(formData, { success: true })\n\t\t}\n\t}\n}\n\nfunction simpleReducer<State>(prev: State, getNext: (prev: State) => State) {\n\treturn getNext(prev)\n}\n\nexport function TestOutput({ name }: { name: string }) {\n\ttype State = {\n\t\t/** version is used to trigger an unsubscribe and resubscribe to the event source */\n\t\tversion: number\n\t\tisRunning: boolean\n\t\texitCode: number | null | undefined\n\t\tlines: Array<{\n\t\t\ttype: 'stdout' | 'stderr'\n\t\t\tcontent: string\n\t\t\ttimestamp: number\n\t\t}>\n\t}\n\tconst [state, dispatch] = useReducer(simpleReducer<State>, {\n\t\tversion: 0,\n\t\tisRunning: false,\n\t\texitCode: undefined,\n\t\tlines: [],\n\t})\n\tconst ansi = useAnsiToHtml()\n\tconst { version, isRunning, exitCode, lines } = state\n\tconst lastMessage = useEventSource(\n\t\t`/test?${new URLSearchParams({ name })}&v=${version}`,\n\t)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = testEventQueueSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tfor (const event of result.data) {\n\t\t\tswitch (event.type) {\n\t\t\t\tcase 'exit': {\n\t\t\t\t\tconst { isRunning, code: exitCode } = event\n\t\t\t\t\tdispatch((prev) => ({ ...prev, isRunning, exitCode }))\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'init': {\n\t\t\t\t\tconst { output, exitCode, isRunning } = event\n\t\t\t\t\tdispatch((prev) => ({ ...prev, lines: output, exitCode, isRunning }))\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'stderr':\n\t\t\t\tcase 'stdout': {\n\t\t\t\t\tconst { type, data: content, timestamp } = event\n\t\t\t\t\tdispatch((prev) => ({\n\t\t\t\t\t\t...prev,\n\t\t\t\t\t\tlines: [...prev.lines, { type, content, timestamp }].sort(\n\t\t\t\t\t\t\t(a, b) => a.timestamp - b.timestamp,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tisRunning: true,\n\t\t\t\t\t}))\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, [lastMessage])\n\n\treturn (\n\t\t<div className=\"relative flex h-full w-full flex-col overflow-y-auto\">\n\t\t\t<div className=\"flex h-12 w-full flex-shrink-0 items-center justify-between border-b\">\n\t\t\t\t<div className=\"flex h-full items-center\">\n\t\t\t\t\t{!isRunning && (\n\t\t\t\t\t\t<TestRunner\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tonRun={() => {\n\t\t\t\t\t\t\t\tdispatch((prev) => ({\n\t\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t\texitCode: undefined,\n\t\t\t\t\t\t\t\t\tlines: [],\n\t\t\t\t\t\t\t\t\tversion: prev.version + 1,\n\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{isRunning ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<div className=\"flex h-full flex-grow items-center justify-center border-r px-3.5\">\n\t\t\t\t\t\t\t\t<AnimatedBars role=\"status\" aria-label=\"Running Tests\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<StopTest name={name} />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\n\t\t\t\t{!isRunning && exitCode !== undefined && (\n\t\t\t\t\t<p className=\"pr-3.5 leading-none\">\n\t\t\t\t\t\t{exitCode === 0\n\t\t\t\t\t\t\t? `Tests passed`\n\t\t\t\t\t\t\t: `Test failed (exit code ${String(exitCode)})`}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t\t{!isRunning && exitCode !== undefined && (\n\t\t\t\t\t<ClearTest\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tonClear={() => {\n\t\t\t\t\t\t\tdispatch((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\texitCode: undefined,\n\t\t\t\t\t\t\t\tlines: [],\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className=\"flex h-full flex-col gap-5 p-5\">\n\t\t\t\t<p className=\"font-mono text-sm font-medium uppercase\">Test Output</p>\n\t\t\t\t<pre className=\"shadow-on-scrollbox flex-1 overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar\">\n\t\t\t\t\t{lines.map((line) => (\n\t\t\t\t\t\t<code\n\t\t\t\t\t\t\tkey={line.timestamp}\n\t\t\t\t\t\t\tdata-type={line.type}\n\t\t\t\t\t\t\tdangerouslySetInnerHTML={{\n\t\t\t\t\t\t\t\t__html: ansi.toHtml(stripCursorMovements(line.content)),\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</pre>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport function TestRunner({\n\tname,\n\tonRun,\n}: {\n\tname: string\n\tonRun?: () => void\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\tconst peRedirectInput = usePERedirectInput()\n\tconst latestOnRun = useRef(onRun)\n\tuseEffect(() => {\n\t\tlatestOnRun.current = onRun\n\t}, [onRun])\n\tuseEffect(() => {\n\t\tif (fetcher.data?.success) {\n\t\t\tlatestOnRun.current?.()\n\t\t}\n\t}, [fetcher.data])\n\treturn (\n\t\t<fetcher.Form method=\"POST\" action=\"/test\" className=\"h-full\">\n\t\t\t{peRedirectInput}\n\t\t\t<input type=\"hidden\" name=\"name\" value={name} />\n\t\t\t<SimpleTooltip\n\t\t\t\tcontent={fetcher.state === 'idle' ? 'Run Tests' : 'Running Tests...'}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tname=\"intent\"\n\t\t\t\t\tvalue=\"run\"\n\t\t\t\t\tclassName=\"flex h-full flex-grow items-center justify-center border-r px-3.5\"\n\t\t\t\t>\n\t\t\t\t\t{fetcher.state === 'idle' ? (\n\t\t\t\t\t\t<Icon name=\"TriangleSmall\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<AnimatedBars role=\"status\" />\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</SimpleTooltip>\n\t\t</fetcher.Form>\n\t)\n}\n\nexport function ClearTest({\n\tname,\n\tonClear,\n}: {\n\tname: string\n\tonClear?: () => void\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\tconst peRedirectInput = usePERedirectInput()\n\tconst latestOnClear = useRef(onClear)\n\tuseEffect(() => {\n\t\tlatestOnClear.current = onClear\n\t}, [onClear])\n\tuseEffect(() => {\n\t\tif (fetcher.data?.success) {\n\t\t\tlatestOnClear.current?.()\n\t\t}\n\t}, [fetcher.data])\n\treturn (\n\t\t<fetcher.Form method=\"POST\" action=\"/test\" className=\"h-full\">\n\t\t\t{peRedirectInput}\n\t\t\t<input type=\"hidden\" name=\"name\" value={name} />\n\t\t\t<SimpleTooltip\n\t\t\t\tcontent={fetcher.state === 'idle' ? 'Clear Tests' : 'Clearing Tests...'}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tname=\"intent\"\n\t\t\t\t\tvalue=\"clear\"\n\t\t\t\t\tclassName=\"flex h-full flex-grow items-center justify-center border-l px-3.5\"\n\t\t\t\t>\n\t\t\t\t\t{fetcher.state === 'idle' ? (\n\t\t\t\t\t\t<Icon name=\"Clear\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Icon name=\"Clear\" className=\"animate-pulse\" role=\"status\" />\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</SimpleTooltip>\n\t\t</fetcher.Form>\n\t)\n}\n\nexport function StopTest({\n\tname,\n\tonStop,\n}: {\n\tname: string\n\tonStop?: () => void\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\tconst peRedirectInput = usePERedirectInput()\n\tconst latestOnStop = useRef(onStop)\n\tuseEffect(() => {\n\t\tlatestOnStop.current = onStop\n\t}, [onStop])\n\tuseEffect(() => {\n\t\tif (fetcher.data?.success) {\n\t\t\tlatestOnStop.current?.()\n\t\t}\n\t}, [fetcher.data])\n\treturn (\n\t\t<fetcher.Form method=\"POST\" action=\"/test\" className=\"h-full\">\n\t\t\t{peRedirectInput}\n\t\t\t<input type=\"hidden\" name=\"name\" value={name} />\n\t\t\t<SimpleTooltip\n\t\t\t\tcontent={fetcher.state === 'idle' ? 'Stop Tests' : 'Stopping Tests...'}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\tname=\"intent\"\n\t\t\t\t\tvalue=\"stop\"\n\t\t\t\t\tclassName=\"flex h-full flex-grow items-center justify-center border-r px-3.5\"\n\t\t\t\t>\n\t\t\t\t\t{fetcher.state === 'idle' ? (\n\t\t\t\t\t\t<Icon name=\"Stop\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Icon name=\"Stop\" className=\"animate-pulse\" role=\"status\" />\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</SimpleTooltip>\n\t\t</fetcher.Form>\n\t)\n}\n","import { type PlaygroundApp } from '@epic-web/workshop-utils/apps.server'\nimport { useState } from 'react'\nimport { DeferredEpicVideo } from '#app/components/epic-video.js'\nimport { Icon } from '#app/components/icons'\nimport { InBrowserTestRunner } from '#app/components/in-browser-test-runner'\nimport { useUserHasAccess } from '#app/components/user.js'\nimport { TestOutput } from '#app/routes/test'\nimport { PlaygroundWindow } from './playground-window'\n\nexport function Tests({\n\tappInfo: playgroundAppInfo,\n\tproblemAppName,\n\tallApps,\n\tisUpToDate,\n}: {\n\tappInfo: Pick<PlaygroundApp, 'appName' | 'name' | 'test'> | null\n\tproblemAppName?: string\n\tallApps: Array<{ name: string; displayName: string }>\n\tisUpToDate: boolean\n}) {\n\treturn (\n\t\t<PlaygroundWindow\n\t\t\tplaygroundAppName={playgroundAppInfo?.appName}\n\t\t\tproblemAppName={problemAppName}\n\t\t\tallApps={allApps}\n\t\t\tisUpToDate={isUpToDate}\n\t\t>\n\t\t\t<TestUI playgroundAppInfo={playgroundAppInfo} />\n\t\t</PlaygroundWindow>\n\t)\n}\n\nexport function TestUI({\n\tplaygroundAppInfo,\n}: {\n\tplaygroundAppInfo: Pick<PlaygroundApp, 'name' | 'test'> | null\n}) {\n\tconst [inBrowserTestKey, setInBrowserTestKey] = useState(0)\n\tconst userHasAccess = useUserHasAccess()\n\n\tif (!userHasAccess) {\n\t\treturn (\n\t\t\t<div className=\"w-full p-12\">\n\t\t\t\t<div className=\"flex w-full flex-col gap-4 text-center\">\n\t\t\t\t\t<p className=\"text-2xl font-bold\">Access Denied</p>\n\t\t\t\t\t<p className=\"text-lg\">\n\t\t\t\t\t\tYou must login or register for the workshop to view and run the\n\t\t\t\t\t\ttests.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"h-16\" />\n\t\t\t\t<p className=\"pb-4\">\n\t\t\t\t\tCheck out this video to see how the test tab works.\n\t\t\t\t</p>\n\t\t\t\t<DeferredEpicVideo url=\"https://www.epicweb.dev/tips/epic-workshop-test-tab-demo\" />\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (!playgroundAppInfo) {\n\t\treturn (\n\t\t\t<div className=\"flex h-full items-center justify-center text-lg\">\n\t\t\t\t<p>No tests here 😢 Sorry.</p>\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (playgroundAppInfo.test.type === 'script') {\n\t\treturn <TestOutput name={playgroundAppInfo.name} />\n\t}\n\n\tif (playgroundAppInfo.test.type === 'browser') {\n\t\tconst { pathname } = playgroundAppInfo.test\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName=\"flex h-full w-full flex-grow flex-col overflow-y-auto\"\n\t\t\t\tkey={inBrowserTestKey}\n\t\t\t>\n\t\t\t\t{playgroundAppInfo.test.testFiles.map((testFile) => (\n\t\t\t\t\t<div key={testFile}>\n\t\t\t\t\t\t<InBrowserTestRunner pathname={pathname} testFile={testFile} />\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t\t<div className=\"px-3 py-[21px]\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() => setInBrowserTestKey((c) => c + 1)}\n\t\t\t\t\t\tclassName=\"flex items-center gap-2 font-mono text-sm uppercase leading-none\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon name=\"Refresh\" aria-hidden /> Rerun All Tests\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div className=\"flex h-full items-center justify-center text-lg\">\n\t\t\t<p>No tests here 😢 Sorry.</p>\n\t\t</div>\n\t)\n}\n"],"names":["PlaygroundWindow","playgroundAppName","problemAppName","isUpToDate","allApps","children","isCorrectApp","playgroundLinkedUI","jsx","Icon","setPlaygroundTooltipText","jsxs","SetPlayground","SimpleTooltip","PlaygroundChooser","__importDefault","this","mod","decode_codepoint","decode_json_1","require$$0","fromCodePoint","codePoint","output","decodeCodePoint","decode","entities_json_1","legacy_json_1","require$$1","xml_json_1","require$$2","decode_codepoint_1","require$$3","strictEntityRe","getStrictDecoder","map","replace","getReplacer","str","sorter","a","b","legacy","keys","i","j","re","replacer","secondChar","encode","inverseXML","getInverseObj","xmlReplacer","getInverseReplacer","getASCIIEncoder","inverseHTML","htmlReplacer","getInverse","obj","inverse","name","single","multiple","_i","_a","k","start","end","count","reNonASCII","getCodePoint","c","singleCharReplacer","data","reEscapeChars","escape","escapeUTF8","exports","decode_1","encode_1","level","decodeStrict","encode_2","decode_2","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","_createForOfIteratorHelper","o","allowArrayLike","it","_unsupportedIterableToArray","F","_e","normalCompletion","didErr","err","step","_e2","minLen","_arrayLikeToArray","n","arr","len","arr2","entities","defaults","getDefaultColors","colors","range","red","green","blue","setStyleColor","gray","l","toHexString","r","g","toColorHexString","num","ref","results","_iterator","_step","generateOutput","stack","token","options","result","pushText","handleDisplay","pushForegroundColor","pushBackgroundColor","handleRgb","operation","color","rgb","value","pushStyle","code","codeMap","resetStyles","pushTag","closeTag","stackClone","tag","low","high","notCategory","category","e","categoryForCode","text","style","last","tokenize","callback","ansiMatch","ansiHandler","remove","removeXterm256Foreground","m","g1","removeXterm256Background","newline","ansiMess","_iterator2","_step2","realText","tokens","process","handler","results1","_text","length","outer","updateStickyStack","stickyStack","Filter","input","_this","buf","element","ansi_to_html","useAnsiToHtml","theme","useTheme","useMemo","AnsiToHTML","stripCursorMovements","testRunnerStatusDataSchema","z","testRunnerTestStepDataSchema","testRunnerDataSchema","InBrowserTestRunner","pathname","testFile","ansi","iframeRef","useRef","message","setMessage","useState","testSteps","setTestSteps","useEffect","handleMessage","messageEvent","steps","statusEmoji","AnimatedBars","sortedTestSteps","testStepStatusEmojis","Fragment","Accordion.Root","AccordionComponent","testStep","index","_b","testEventSchema","union","object","type","literal","exitCode","number","nullable","optional","isRunning","boolean","array","content","string","timestamp","testEventQueueSchema","simpleReducer","prev","getNext","TestOutput","state","dispatch","useReducer","version","lines","lastMessage","useEventSource","URLSearchParams","parsed","JSON","parse","safeParse","success","console","error","flatten","event","sort","className","TestRunner","onRun","role","StopTest","String","ClearTest","onClear","line","dangerouslySetInnerHTML","__html","toHtml","fetcher","useFetcher","peRedirectInput","usePERedirectInput","latestOnRun","current","Form","method","action","latestOnClear","onStop","latestOnStop","Tests","playgroundAppInfo","TestUI","inBrowserTestKey","setInBrowserTestKey","useUserHasAccess","DeferredEpicVideo"],"mappings":"wjBAIO,SAASA,GAAiB,CAChC,kBAAAC,EACA,eAAAC,EACA,WAAAC,EACA,QAAAC,EACA,SAAAC,CACD,EAMG,CACF,MAAMC,EAAeL,IAAsBC,EACrCK,EACLD,GAAgBH,EACfK,EAAA,IAACC,GAAK,KAAK,KAAK,KAAK,QAAA,CAAS,EAE9BD,EAAA,IAACC,EAAA,CACA,KAAK,KACL,KAAK,WACL,UAAU,sCAAA,CAAA,EAGb,IAAIC,EAA2B,6BAC/B,OAAKP,IAEHO,EAAA,yDAEGJ,IAEHI,EAAA,oEAGDC,EAAA,KAAC,MAAI,CAAA,UAAU,8CACd,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,yEACd,SAAA,CAACH,EAAA,IAAA,MAAA,CAAI,UAAU,iBACb,SACAN,EAAAM,EAAA,IAACI,EAAA,CACA,QAASV,EACT,YAAaQ,EAEZ,SAAAH,CAAA,CAAA,EAGFC,EAAAA,IAACK,EAAc,CAAA,QAAQ,yCACtB,SAAAL,EAAA,IAAC,MACA,CAAA,SAAAA,EAAA,IAACC,EAAK,CAAA,KAAK,UAAW,CAAA,CACvB,CAAA,CACD,CAAA,EAEF,EACCD,EAAA,IAAA,MAAA,CAAI,UAAU,mBACb,SACAP,EAAAO,EAAA,IAACI,EAAA,CACA,QAASX,EACT,MAAK,GACL,YAAY,mBAEZ,SAAAO,EAAAA,IAAC,OAAI,UAAU,2CACd,eAACC,EAAK,CAAA,KAAK,UAAU,CACtB,CAAA,CAAA,CAAA,EAGDD,EAAAA,IAAC,MAAI,CAAA,UAAU,UAAU,CAE3B,CAAA,EACAA,EAAA,IAACM,GAAA,CACA,QAAAV,EACA,kBAAAH,CAAA,CACD,CAAA,EACD,EACCO,EAAAA,IAAA,MAAA,CAAI,UAAU,2DACb,SAAAH,CACF,CAAA,CACD,CAAA,CAAA,CAEF;ki+BChFA,IAAIU,GAAmBC,GAAQA,EAAK,iBAAoB,SAAUC,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,EACxD,EACA,OAAO,eAAeC,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5D,IAAIC,EAAgBJ,GAAgBK,EAA6B,EAE7DC,GAEJ,OAAO,eACH,SAAUC,EAAW,CACjB,IAAIC,EAAS,GACb,OAAID,EAAY,QACZA,GAAa,MACbC,GAAU,OAAO,aAAeD,IAAc,GAAM,KAAS,KAAM,EACnEA,EAAY,MAAUA,EAAY,MAEtCC,GAAU,OAAO,aAAaD,CAAS,EAChCC,CACf,EACA,SAASC,GAAgBF,EAAW,CAChC,OAAKA,GAAa,OAAUA,GAAa,OAAWA,EAAY,QACrD,KAEPA,KAAaH,EAAc,UAC3BG,EAAYH,EAAc,QAAQG,CAAS,GAExCD,GAAcC,CAAS,EAClC,CACAJ,EAAA,QAAkBM,GC5BlB,IAAIT,EAAmBC,GAAQA,EAAK,iBAAoB,SAAUC,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,EACxD,EACA,OAAO,eAAeQ,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,WAA6CA,EAAA,6BAAuB,OACpE,IAAIC,EAAkBX,EAAgBK,EAA+B,EACjEO,GAAgBZ,EAAgBa,EAA6B,EAC7DC,GAAad,EAAgBe,EAA0B,EACvDC,EAAqBhB,EAAgBiB,CAA6B,EAClEC,GAAiB,4CACrBR,EAAA,UAAoBS,GAAiBL,GAAW,OAAO,EACvDJ,EAAA,iBAA2BS,GAAiBR,EAAgB,OAAO,EACnE,SAASQ,GAAiBC,EAAK,CAC3B,IAAIC,EAAUC,GAAYF,CAAG,EAC7B,OAAO,SAAUG,EAAK,CAAE,OAAO,OAAOA,CAAG,EAAE,QAAQL,GAAgBG,CAAO,EAC9E,CACA,IAAIG,EAAS,SAAUC,EAAGC,EAAG,CAAE,OAAQD,EAAIC,EAAI,EAAI,IACjChB,EAAA,WAAI,UAAY,CAG9B,QAFIiB,EAAS,OAAO,KAAKf,GAAc,OAAO,EAAE,KAAKY,CAAM,EACvDI,EAAO,OAAO,KAAKjB,EAAgB,OAAO,EAAE,KAAKa,CAAM,EAClDK,EAAI,EAAGC,EAAI,EAAGD,EAAID,EAAK,OAAQC,IAChCF,EAAOG,CAAC,IAAMF,EAAKC,CAAC,GACpBD,EAAKC,CAAC,GAAK,KACXC,KAGAF,EAAKC,CAAC,GAAK,IAGnB,IAAIE,EAAK,IAAI,OAAO,OAASH,EAAK,KAAK,GAAG,EAAI,gCAAiC,GAAG,EAC9EP,EAAUC,GAAYX,EAAgB,OAAO,EACjD,SAASqB,EAAST,EAAK,CACnB,OAAIA,EAAI,OAAO,EAAE,IAAM,MACnBA,GAAO,KACJF,EAAQE,CAAG,CACrB,CAED,OAAO,SAAUA,EAAK,CAAE,OAAO,OAAOA,CAAG,EAAE,QAAQQ,EAAIC,CAAQ,EACnE,IACA,SAASV,GAAYF,EAAK,CACtB,OAAO,SAAiBG,EAAK,CACzB,GAAIA,EAAI,OAAO,CAAC,IAAM,IAAK,CACvB,IAAIU,EAAaV,EAAI,OAAO,CAAC,EAC7B,OAAIU,IAAe,KAAOA,IAAe,IAC9BjB,EAAmB,QAAQ,SAASO,EAAI,OAAO,CAAC,EAAG,EAAE,CAAC,EAE1DP,EAAmB,QAAQ,SAASO,EAAI,OAAO,CAAC,EAAG,EAAE,CAAC,CAChE,CAED,OAAOH,EAAIG,EAAI,MAAM,EAAG,EAAE,CAAC,GAAKA,CACxC,CACA,UCnDIvB,GAAmBC,GAAQA,EAAK,iBAAoB,SAAUC,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,EACxD,EACA,OAAO,eAAegC,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAC1CA,EAAA,WAAiBA,EAAA,OAA6BA,EAAA,mBAAqBA,EAAA,WAAoBA,EAAA,UAAG,OAC5G,IAAIpB,GAAad,GAAgBK,EAA0B,EACvD8B,GAAaC,GAActB,GAAW,OAAO,EAC7CuB,GAAcC,GAAmBH,EAAU,EAQ/CD,EAAA,UAAoBK,GAAgBJ,EAAU,EAC9C,IAAIxB,GAAkBX,GAAgBa,EAA+B,EACjE2B,EAAcJ,GAAczB,GAAgB,OAAO,EACnD8B,GAAeH,GAAmBE,CAAW,EAWjDN,EAAA,WAAqBQ,GAAWF,EAAaC,EAAY,EAQzDP,EAAA,mBAA6BK,GAAgBC,CAAW,EACxD,SAASJ,GAAcO,EAAK,CACxB,OAAO,OAAO,KAAKA,CAAG,EACjB,KAAM,EACN,OAAO,SAAUC,EAASC,EAAM,CACjC,OAAAD,EAAQD,EAAIE,CAAI,CAAC,EAAI,IAAMA,EAAO,IAC3BD,CACV,EAAE,CAAE,CAAA,CACT,CACA,SAASN,GAAmBM,EAAS,CAGjC,QAFIE,EAAS,CAAA,EACTC,EAAW,CAAA,EACNC,EAAK,EAAGC,EAAK,OAAO,KAAKL,CAAO,EAAGI,EAAKC,EAAG,OAAQD,IAAM,CAC9D,IAAIE,EAAID,EAAGD,CAAE,EACTE,EAAE,SAAW,EAEbJ,EAAO,KAAK,KAAOI,CAAC,EAIpBH,EAAS,KAAKG,CAAC,CAEtB,CAEDJ,EAAO,KAAI,EACX,QAASK,EAAQ,EAAGA,EAAQL,EAAO,OAAS,EAAGK,IAAS,CAGpD,QADIC,EAAMD,EACHC,EAAMN,EAAO,OAAS,GACzBA,EAAOM,CAAG,EAAE,WAAW,CAAC,EAAI,IAAMN,EAAOM,EAAM,CAAC,EAAE,WAAW,CAAC,GAC9DA,GAAO,EAEX,IAAIC,EAAQ,EAAID,EAAMD,EAElBE,EAAQ,GAEZP,EAAO,OAAOK,EAAOE,EAAOP,EAAOK,CAAK,EAAI,IAAML,EAAOM,CAAG,CAAC,CAChE,CACD,OAAAL,EAAS,QAAQ,IAAMD,EAAO,KAAK,EAAE,EAAI,GAAG,EACrC,IAAI,OAAOC,EAAS,KAAK,GAAG,EAAG,GAAG,CAC7C,CAEA,IAAIO,GAAa,0IACbC,GAEJ,OAAO,UAAU,aAAe,KAExB,SAAUhC,EAAK,CAAE,OAAOA,EAAI,YAAY,CAAC,CAAI,EAE7C,SAAUiC,EAAG,CACT,OAAQA,EAAE,WAAW,CAAC,EAAI,OAAU,KAChCA,EAAE,WAAW,CAAC,EACd,MACA,KAChB,EACA,SAASC,EAAmBD,EAAG,CAC3B,MAAO,OAASA,EAAE,OAAS,EAAID,GAAaC,CAAC,EAAIA,EAAE,WAAW,CAAC,GAC1D,SAAS,EAAE,EACX,YAAW,EAAK,GACzB,CACA,SAASd,GAAWE,EAASb,EAAI,CAC7B,OAAO,SAAU2B,EAAM,CACnB,OAAOA,EACF,QAAQ3B,EAAI,SAAUc,EAAM,CAAE,OAAOD,EAAQC,CAAI,EAAI,EACrD,QAAQS,GAAYG,CAAkB,CACnD,CACA,CACA,IAAIE,GAAgB,IAAI,OAAOtB,GAAY,OAAS,IAAMiB,GAAW,OAAQ,GAAG,EAUhF,SAASM,GAAOF,EAAM,CAClB,OAAOA,EAAK,QAAQC,GAAeF,CAAkB,CACzD,CACcvB,EAAA,OAAG0B,GASjB,SAASC,GAAWH,EAAM,CACtB,OAAOA,EAAK,QAAQrB,GAAaoB,CAAkB,CACvD,CACkBvB,EAAA,WAAG2B,GACrB,SAAStB,GAAgBI,EAAK,CAC1B,OAAO,SAAUe,EAAM,CACnB,OAAOA,EAAK,QAAQC,GAAe,SAAUH,EAAG,CAAE,OAAOb,EAAIa,CAAC,GAAKC,EAAmBD,CAAC,CAAI,CAAA,CACnG,CACA,cCtIA,OAAO,eAAcM,EAAU,aAAc,CAAE,MAAO,EAAI,CAAE,EAC5DA,EAAA,gBAA0BA,oBAA4BA,EAA4B,kBAAAA,EAAA,YAAsBA,cAAsBA,EAA2B,iBAAAA,EAAA,WAAqBA,YAAoBA,EAAsB,YAAAA,EAAA,YAAsBA,aAAqBA,EAAiB,OAAAA,EAAA,mBAA6BA,aAAqBA,EAAoB,UAAAA,EAAA,OAAiBA,eAAuBA,EAAiB,OAAA,OACnZ,IAAIC,EAAW1D,EACX2D,EAAWnD,EAQf,SAASH,EAAOgD,EAAMO,EAAO,CACzB,OAAQ,CAACA,GAASA,GAAS,EAAIF,EAAS,UAAYA,EAAS,YAAYL,CAAI,CAChF,CACDI,EAAA,OAAiBpD,EAQjB,SAASwD,EAAaR,EAAMO,EAAO,CAC/B,OAAQ,CAACA,GAASA,GAAS,EAAIF,EAAS,UAAYA,EAAS,kBAAkBL,CAAI,CACtF,CACDI,EAAA,aAAuBI,EAQvB,SAAShC,EAAOwB,EAAMO,EAAO,CACzB,OAAQ,CAACA,GAASA,GAAS,EAAID,EAAS,UAAYA,EAAS,YAAYN,CAAI,CAChF,CACDI,EAAA,OAAiB5B,EACjB,IAAIiC,EAAWtD,EACf,OAAO,eAAeiD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,SAAU,CAAI,CAAA,EACjH,OAAO,eAAeL,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,UAAW,CAAI,CAAA,EACnH,OAAO,eAAeL,EAAS,qBAAsB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,kBAAmB,CAAI,CAAA,EACnI,OAAO,eAAeL,EAAS,SAAU,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,MAAO,CAAI,CAAA,EAC3G,OAAO,eAAeL,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,UAAW,CAAI,CAAA,EAEnH,OAAO,eAAeL,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,UAAW,CAAI,CAAA,EACpH,OAAO,eAAeL,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOK,EAAS,UAAW,CAAI,CAAA,EACpH,IAAIC,EAAW/D,EACf,OAAO,eAAeyD,EAAS,YAAa,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,SAAU,CAAI,CAAA,EACjH,OAAO,eAAeN,EAAS,aAAc,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,UAAW,CAAI,CAAA,EACnH,OAAO,eAAeN,EAAS,mBAAoB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,gBAAiB,CAAI,CAAA,EAE/H,OAAO,eAAeN,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,UAAW,CAAI,CAAA,EACpH,OAAO,eAAeN,EAAS,cAAe,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,UAAW,CAAI,CAAA,EACpH,OAAO,eAAeN,EAAS,oBAAqB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,gBAAiB,CAAI,CAAA,EAChI,OAAO,eAAeN,EAAS,oBAAqB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,gBAAiB,CAAI,CAAA,EAChI,OAAO,eAAeN,EAAS,kBAAmB,CAAE,WAAY,GAAM,IAAK,UAAY,CAAE,OAAOM,EAAS,SAAU,CAAI,CAAA,OCtDvH,SAASC,GAAgBC,EAAUC,EAAa,CAAE,GAAI,EAAED,aAAoBC,GAAgB,MAAM,IAAI,UAAU,mCAAmC,CAAM,CAEzJ,SAASC,GAAkBC,EAAQC,EAAO,CAAE,QAAS7C,EAAI,EAAGA,EAAI6C,EAAM,OAAQ7C,IAAK,CAAE,IAAI8C,EAAaD,EAAM7C,CAAC,EAAG8C,EAAW,WAAaA,EAAW,YAAc,GAAOA,EAAW,aAAe,GAAU,UAAWA,IAAYA,EAAW,SAAW,IAAM,OAAO,eAAeF,EAAQE,EAAW,IAAKA,CAAU,EAAM,CAE7T,SAASC,GAAaL,EAAaM,EAAYC,EAAa,CAAE,OAAID,GAAYL,GAAkBD,EAAY,UAAWM,CAAU,EAAwEN,CAAc,CAEvN,SAASQ,GAA2BC,EAAGC,EAAgB,CAAE,IAAIC,EAAK,OAAO,OAAW,KAAeF,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAAG,GAAI,CAACE,EAAI,CAAE,GAAI,MAAM,QAAQF,CAAC,IAAME,EAAKC,GAA4BH,CAAC,IAAMC,EAAqD,CAAMC,IAAIF,EAAIE,GAAI,IAAIrD,EAAI,EAAOuD,EAAI,UAAa,CAAE,EAAE,MAAO,CAAE,EAAGA,EAAG,EAAG,UAAa,CAAE,OAAIvD,GAAKmD,EAAE,OAAe,CAAE,KAAM,EAAM,EAAS,CAAE,KAAM,GAAO,MAAOA,EAAEnD,GAAG,CAAC,CAAG,EAAI,EAAG,SAAWwD,EAAI,CAAE,MAAMA,CAAG,EAAI,EAAGD,CAAG,CAAG,CAAC,MAAM,IAAI,UAAU;AAAA,mFAAuI,CAAE,CAAG,IAAIE,EAAmB,GAAMC,EAAS,GAAOC,EAAK,MAAO,CAAE,EAAG,UAAa,CAAEN,EAAKA,EAAG,KAAKF,CAAC,CAAE,EAAI,EAAG,UAAa,CAAE,IAAIS,EAAOP,EAAG,KAAM,EAAE,OAAAI,EAAmBG,EAAK,KAAaA,CAAO,EAAE,EAAG,SAAWC,EAAK,CAAEH,EAAS,GAAMC,EAAME,CAAI,EAAI,EAAG,UAAa,CAAE,GAAI,CAAM,CAACJ,GAAoBJ,EAAG,QAAa,MAAMA,EAAG,OAAW,CAAG,QAAA,CAAW,GAAIK,EAAQ,MAAMC,CAAI,CAAI,CAAA,CAAK,CAE5+B,SAASL,GAA4BH,EAAGW,EAAQ,CAAE,GAAKX,EAAW,IAAI,OAAOA,GAAM,SAAU,OAAOY,EAAkBZ,EAAGW,CAAM,EAAG,IAAIE,EAAI,OAAO,UAAU,SAAS,KAAKb,CAAC,EAAE,MAAM,EAAG,EAAE,EAAgE,GAAzDa,IAAM,UAAYb,EAAE,cAAaa,EAAIb,EAAE,YAAY,MAAUa,IAAM,OAASA,IAAM,MAAO,OAAO,MAAM,KAAKb,CAAC,EAAG,GAAIa,IAAM,aAAe,2CAA2C,KAAKA,CAAC,EAAG,OAAOD,EAAkBZ,EAAGW,CAAM,EAAI,CAEha,SAASC,EAAkBE,EAAKC,EAAK,EAAMA,GAAO,MAAQA,EAAMD,EAAI,UAAQC,EAAMD,EAAI,QAAQ,QAASjE,EAAI,EAAGmE,EAAO,IAAI,MAAMD,CAAG,EAAGlE,EAAIkE,EAAKlE,IAAOmE,EAAKnE,CAAC,EAAIiE,EAAIjE,CAAC,EAAK,OAAOmE,CAAO,CAEvL,IAAIC,GAAW5F,EAEX6F,EAAW,CACb,GAAI,OACJ,GAAI,OACJ,QAAS,GACT,UAAW,GACX,OAAQ,GACR,OAAQC,GAAkB,CAC5B,EAEA,SAASA,IAAmB,CAC1B,IAAIC,EAAS,CACX,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,GAAI,MACR,EACE,OAAAC,EAAM,EAAG,CAAC,EAAE,QAAQ,SAAUC,EAAK,CACjCD,EAAM,EAAG,CAAC,EAAE,QAAQ,SAAUE,EAAO,CACnCF,EAAM,EAAG,CAAC,EAAE,QAAQ,SAAUG,EAAM,CAClC,OAAOC,GAAcH,EAAKC,EAAOC,EAAMJ,CAAM,CACrD,CAAO,CACP,CAAK,CACL,CAAG,EACDC,EAAM,EAAG,EAAE,EAAE,QAAQ,SAAUK,EAAM,CACnC,IAAIlD,EAAIkD,EAAO,IACXC,EAAIC,GAAYF,EAAO,GAAK,CAAC,EACjCN,EAAO5C,CAAC,EAAI,IAAMmD,EAAIA,EAAIA,CAC9B,CAAG,EACMP,CACT,CASA,SAASK,GAAcH,EAAKC,EAAOC,EAAMJ,EAAQ,CAC/C,IAAI5C,EAAI,GAAK8C,EAAM,GAAKC,EAAQ,EAAIC,EAChCK,EAAIP,EAAM,EAAIA,EAAM,GAAK,GAAK,EAC9BQ,EAAIP,EAAQ,EAAIA,EAAQ,GAAK,GAAK,EAClC7E,EAAI8E,EAAO,EAAIA,EAAO,GAAK,GAAK,EACpCJ,EAAO5C,CAAC,EAAIuD,GAAiB,CAACF,EAAGC,EAAGpF,CAAC,CAAC,CACxC,CAQA,SAASkF,GAAYI,EAAK,CAGxB,QAFIzF,EAAMyF,EAAI,SAAS,EAAE,EAElBzF,EAAI,OAAS,GAClBA,EAAM,IAAMA,EAGd,OAAOA,CACT,CAQA,SAASwF,GAAiBE,EAAK,CAC7B,IAAIC,EAAU,CAAA,EAEVC,EAAYpC,GAA2BkC,CAAG,EAC1CG,EAEJ,GAAI,CACF,IAAKD,EAAU,EAAC,EAAI,EAAEC,EAAQD,EAAU,EAAG,GAAE,MAAO,CAClD,IAAI,EAAIC,EAAM,MACdF,EAAQ,KAAKN,GAAY,CAAC,CAAC,CAC5B,CACF,OAAQpB,EAAK,CACZ2B,EAAU,EAAE3B,CAAG,CACnB,QAAY,CACR2B,EAAU,EAAC,CACZ,CAED,MAAO,IAAMD,EAAQ,KAAK,EAAE,CAC9B,CASA,SAASG,EAAeC,EAAOC,EAAO7D,EAAM8D,EAAS,CACnD,IAAIC,EAEJ,OAAIF,IAAU,OACZE,EAASC,GAAShE,EAAM8D,CAAO,EACtBD,IAAU,UACnBE,EAASE,GAAcL,EAAO5D,EAAM8D,CAAO,EAClCD,IAAU,qBACnBE,EAASG,EAAoBN,EAAOE,EAAQ,OAAO9D,CAAI,CAAC,EAC/C6D,IAAU,qBACnBE,EAASI,EAAoBP,EAAOE,EAAQ,OAAO9D,CAAI,CAAC,EAC/C6D,IAAU,QACnBE,EAASK,GAAUR,EAAO5D,CAAI,GAGzB+D,CACT,CAQA,SAASK,GAAUR,EAAO5D,EAAM,CAC9BA,EAAOA,EAAK,UAAU,CAAC,EAAE,MAAM,EAAG,EAAE,EACpC,IAAIqE,EAAY,CAACrE,EAAK,OAAO,EAAG,CAAC,EAC7BsE,EAAQtE,EAAK,UAAU,CAAC,EAAE,MAAM,GAAG,EACnCuE,EAAMD,EAAM,IAAI,SAAUE,EAAO,CACnC,OAAQ,IAAM,OAAOA,CAAK,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CACvD,CAAG,EAAE,KAAK,EAAE,EACV,OAAOC,EAAUb,GAAQS,IAAc,GAAK,UAAY,sBAAwBE,CAAG,CACrF,CASA,SAASN,GAAcL,EAAOc,EAAMZ,EAAS,CAC3CY,EAAO,SAASA,EAAM,EAAE,EACxB,IAAIC,EAAU,CACZ,KAAM,UAAa,CACjB,MAAO,OACR,EACD,EAAG,UAAa,CACd,OAAOf,EAAM,QAAUgB,GAAYhB,CAAK,CACzC,EACD,EAAG,UAAa,CACd,OAAOiB,EAAQjB,EAAO,GAAG,CAC1B,EACD,EAAG,UAAa,CACd,OAAOiB,EAAQjB,EAAO,GAAG,CAC1B,EACD,EAAG,UAAa,CACd,OAAOiB,EAAQjB,EAAO,GAAG,CAC1B,EACD,EAAG,UAAa,CACd,OAAOa,EAAUb,EAAO,cAAc,CACvC,EACD,EAAG,UAAa,CACd,OAAOiB,EAAQjB,EAAO,QAAQ,CAC/B,EACD,GAAI,UAAa,CACf,OAAOa,EAAUb,EAAO,2DAA2D,CACpF,EACD,GAAI,UAAa,CACf,OAAOkB,EAASlB,EAAO,GAAG,CAC3B,EACD,GAAI,UAAa,CACf,OAAOkB,EAASlB,EAAO,GAAG,CAC3B,EACD,GAAI,UAAa,CACf,OAAOM,EAAoBN,EAAOE,EAAQ,EAAE,CAC7C,EACD,GAAI,UAAa,CACf,OAAOK,EAAoBP,EAAOE,EAAQ,EAAE,CAC7C,EACD,GAAI,UAAa,CACf,OAAOW,EAAUb,EAAO,0BAA0B,CACnD,CACL,EACMG,EAEJ,OAAIY,EAAQD,CAAI,EACdX,EAASY,EAAQD,CAAI,IACZ,EAAIA,GAAQA,EAAO,EAC5BX,EAASc,EAAQjB,EAAO,OAAO,EACtB,GAAKc,GAAQA,EAAO,GAC7BX,EAASG,EAAoBN,EAAOE,EAAQ,OAAOY,EAAO,EAAE,CAAC,EACpD,GAAKA,GAAQA,EAAO,GAC7BX,EAASI,EAAoBP,EAAOE,EAAQ,OAAOY,EAAO,EAAE,CAAC,EACpD,GAAKA,GAAQA,EAAO,GAC7BX,EAASG,EAAoBN,EAAOE,EAAQ,OAAO,GAAKY,EAAO,GAAG,CAAC,EAC1D,GAAKA,GAAQA,EAAO,MAC7BX,EAASI,EAAoBP,EAAOE,EAAQ,OAAO,GAAKY,EAAO,IAAI,CAAC,GAG/DX,CACT,CAOA,SAASa,GAAYhB,EAAO,CAC1B,IAAImB,EAAanB,EAAM,MAAM,CAAC,EAC9B,OAAAA,EAAM,OAAS,EACRmB,EAAW,QAAO,EAAG,IAAI,SAAUC,EAAK,CAC7C,MAAO,KAAOA,EAAM,GACxB,CAAG,EAAE,KAAK,EAAE,CACZ,CAUA,SAASrC,EAAMsC,EAAKC,EAAM,CAGxB,QAFI1B,EAAU,CAAA,EAELpF,EAAI6G,EAAK7G,GAAK8G,EAAM9G,IAC3BoF,EAAQ,KAAKpF,CAAC,EAGhB,OAAOoF,CACT,CAQA,SAAS2B,GAAYC,EAAU,CAC7B,OAAO,SAAUC,EAAG,CAClB,OAAQD,IAAa,MAAQC,EAAE,WAAaD,IAAaA,IAAa,KAC1E,CACA,CAQA,SAASE,EAAgBZ,EAAM,CAC7BA,EAAO,SAASA,EAAM,EAAE,EACxB,IAAIX,EAAS,KAEb,OAAIW,IAAS,EACXX,EAAS,MACAW,IAAS,EAClBX,EAAS,OACA,EAAIW,GAAQA,EAAO,EAC5BX,EAAS,YACA,EAAIW,GAAQA,EAAO,EAC5BX,EAAS,QACAW,IAAS,EAClBX,EAAS,OACAW,IAAS,EAClBX,EAAS,SACA,GAAKW,GAAQA,EAAO,IAAMA,IAAS,IAAM,GAAKA,GAAQA,EAAO,GACtEX,EAAS,oBACA,GAAKW,GAAQA,EAAO,IAAMA,IAAS,IAAM,GAAKA,GAAQA,EAAO,OACtEX,EAAS,oBAGJA,CACT,CAQA,SAASC,GAASuB,EAAMzB,EAAS,CAC/B,OAAIA,EAAQ,UACHvB,GAAS,UAAUgD,CAAI,EAGzBA,CACT,CASA,SAASV,EAAQjB,EAAOoB,EAAKQ,EAAO,CAClC,OAAKA,IACHA,EAAQ,IAGV5B,EAAM,KAAKoB,CAAG,EACP,IAAI,OAAOA,CAAG,EAAE,OAAOQ,EAAQ,WAAY,OAAOA,EAAO,GAAI,EAAI,GAAI,GAAG,CACjF,CAQA,SAASf,EAAUb,EAAO4B,EAAO,CAC/B,OAAOX,EAAQjB,EAAO,OAAQ4B,CAAK,CACrC,CAEA,SAAStB,EAAoBN,EAAOU,EAAO,CACzC,OAAOO,EAAQjB,EAAO,OAAQ,SAAWU,CAAK,CAChD,CAEA,SAASH,EAAoBP,EAAOU,EAAO,CACzC,OAAOO,EAAQjB,EAAO,OAAQ,oBAAsBU,CAAK,CAC3D,CAQA,SAASQ,EAASlB,EAAO4B,EAAO,CAC9B,IAAIC,EAMJ,GAJI7B,EAAM,MAAM,EAAE,EAAE,CAAC,IAAM4B,IACzBC,EAAO7B,EAAM,OAGX6B,EACF,MAAO,KAAOD,EAAQ,GAE1B,CASA,SAASE,GAASH,EAAMzB,EAAS6B,EAAU,CACzC,IAAIC,EAAY,GACZC,EAAc,EAElB,SAASC,GAAS,CAChB,MAAO,EACR,CAED,SAASC,EAAyBC,EAAGC,EAAI,CACvC,OAAAN,EAAS,qBAAsBM,CAAE,EAC1B,EACR,CAED,SAASC,EAAyBF,EAAGC,EAAI,CACvC,OAAAN,EAAS,qBAAsBM,CAAE,EAC1B,EACR,CAED,SAASE,EAAQH,EAAG,CAClB,OAAIlC,EAAQ,QACV6B,EAAS,UAAW,EAAE,EAEtBA,EAAS,OAAQK,CAAC,EAGb,EACR,CAED,SAASI,EAASJ,EAAGC,EAAI,CACvBL,EAAY,GAERK,EAAG,OAAO,SAAW,IACvBA,EAAK,KAGPA,EAAKA,EAAG,UAAU,GAAG,EAAE,MAAM,GAAG,EAEhC,IAAII,EAAahF,GAA2B4E,CAAE,EAC1CK,EAEJ,GAAI,CACF,IAAKD,EAAW,EAAC,EAAI,EAAEC,EAASD,EAAW,EAAG,GAAE,MAAO,CACrD,IAAIjD,GAAIkD,EAAO,MACfX,EAAS,UAAWvC,EAAC,CACtB,CACF,OAAQtB,GAAK,CACZuE,EAAW,EAAEvE,EAAG,CACtB,QAAc,CACRuE,EAAW,EAAC,CACb,CAED,MAAO,EACR,CAED,SAASE,EAASP,EAAG,CACnB,OAAAL,EAAS,OAAQK,CAAC,EACX,EACR,CAED,SAASzB,EAAIyB,EAAG,CACd,OAAAL,EAAS,MAAOK,CAAC,EACV,EACR,CAID,IAAIQ,EAAS,CAAC,CACZ,QAAS,SACT,IAAKV,CACT,EAAK,CACD,QAAS,iBACT,IAAKA,CACT,EAAK,CACD,QAAS,aACT,IAAKA,CACT,EAAK,CACD,QAAS,8BACT,IAAKvB,CACT,EAAK,CACD,QAAS,qBACT,IAAKwB,CACT,EAAK,CACD,QAAS,qBACT,IAAKG,CACT,EAAK,CACD,QAAS,MACT,IAAKC,CACT,EAAK,CACD,QAAS,SACT,IAAKA,CACT,EAAK,CACD,QAAS,MACT,IAAKA,CACT,EAAK,CACD,QAAS,4BACT,IAAKC,CACT,EAAK,CAQD,QAAS,cACT,IAAKN,CACT,EAAK,CAGD,QAAS,0BACT,IAAKA,CACT,EAAK,CAED,QAAS,qBACT,IAAKA,CACT,EAAK,CAQD,QAAS,wBACT,IAAKS,CACT,CAAG,EAED,SAASE,EAAQC,EAASvI,EAAG,CACvBA,EAAI0H,GAAeD,IAIvBA,EAAY,GACZL,EAAOA,EAAK,QAAQmB,EAAQ,QAASA,EAAQ,GAAG,EACjD,CAED,IAAIC,EAAW,CAAA,EACXC,EAAQrB,EACRsB,EAASD,EAAM,OAEnBE,EAAO,KAAOD,EAAS,GAAG,CACxB,QAAS1I,EAAI,EAAGmD,EAAI,EAAGe,GAAMmE,EAAO,OAAQlF,EAAIe,GAAKlE,EAAI,EAAEmD,EAAG,CAC5D,IAAIoF,GAAUF,EAAOrI,CAAC,EAGtB,GAFAsI,EAAQC,GAASvI,CAAC,EAEdoH,EAAK,SAAWsB,EAAQ,CAG1BA,EAAStB,EAAK,OACd,SAASuB,CACV,CACF,CAED,GAAIvB,EAAK,SAAWsB,EAClB,MAGFF,EAAS,KAAK,CAAC,EACfE,EAAStB,EAAK,MACf,CAED,OAAOoB,CACT,CAWA,SAASI,GAAkBC,EAAanD,EAAO7D,EAAM,CACnD,OAAI6D,IAAU,SACZmD,EAAcA,EAAY,OAAO7B,GAAYG,EAAgBtF,CAAI,CAAC,CAAC,EACnEgH,EAAY,KAAK,CACf,MAAOnD,EACP,KAAM7D,EACN,SAAUsF,EAAgBtF,CAAI,CACpC,CAAK,GAGIgH,CACT,CAEA,IAAIC,GAAsB,UAAY,CAUpC,SAASA,EAAOnD,EAAS,CACvBnD,GAAgB,KAAMsG,CAAM,EAE5BnD,EAAUA,GAAW,GAEjBA,EAAQ,SACVA,EAAQ,OAAS,OAAO,OAAO,CAAA,EAAItB,EAAS,OAAQsB,EAAQ,MAAM,GAGpE,KAAK,QAAU,OAAO,OAAO,CAAA,EAAItB,EAAUsB,CAAO,EAClD,KAAK,MAAQ,GACb,KAAK,YAAc,EACpB,CAOD,OAAA5C,GAAa+F,EAAQ,CAAC,CACpB,IAAK,SACL,MAAO,SAAgBC,EAAO,CAC5B,IAAIC,EAAQ,KAEZD,EAAQ,OAAOA,GAAU,SAAW,CAACA,CAAK,EAAIA,EAC9C,IAAItD,EAAQ,KAAK,MACbE,EAAU,KAAK,QACfsD,EAAM,CAAA,EACV,YAAK,YAAY,QAAQ,SAAUC,EAAS,CAC1C,IAAIvK,EAAS6G,EAAeC,EAAOyD,EAAQ,MAAOA,EAAQ,KAAMvD,CAAO,EAEnEhH,GACFsK,EAAI,KAAKtK,CAAM,CAEzB,CAAO,EACD4I,GAASwB,EAAM,KAAK,EAAE,EAAGpD,EAAS,SAAUD,EAAO7D,EAAM,CACvD,IAAIlD,EAAS6G,EAAeC,EAAOC,EAAO7D,EAAM8D,CAAO,EAEnDhH,GACFsK,EAAI,KAAKtK,CAAM,EAGbgH,EAAQ,SACVqD,EAAM,YAAcJ,GAAkBI,EAAM,YAAatD,EAAO7D,CAAI,EAE9E,CAAO,EAEG4D,EAAM,QACRwD,EAAI,KAAKxC,GAAYhB,CAAK,CAAC,EAGtBwD,EAAI,KAAK,EAAE,CACnB,CACF,CAAA,CAAC,EAEKH,CACT,IAEAK,GAAiBL,mBC/mBV,SAASM,IAAgB,CAC/B,MAAMC,EAAQC,KAUP,OATMC,EAAA,QACZ,IACC,IAAIC,GACHH,IAAU,OACP,CAAE,GAAI,UAAW,GAAI,UAAW,UAAW,EAAK,EAChD,CAAE,GAAI,UAAW,GAAI,UAAW,UAAW,EAAK,CACpD,EACD,CAACA,CAAK,CAAA,CAGR,CAGO,SAASI,GAAqB5H,EAAc,CAClD,OAAOA,EAAK,QAAQ,gBAAiB,EAAE,EAAE,QAAQ,gBAAiB,EAAE,CACrE,CCdA,MAAM6H,GAA6BC,EAAE,aACpCA,EAAE,OAAO,CACR,KAAMA,EAAE,QAAQ,6BAA6B,EAC7C,UAAWA,EAAE,OAAO,CAAA,CACpB,EACDA,EAAE,MAAM,CACPA,EAAE,OAAO,CAAE,OAAQA,EAAE,QAAQ,SAAS,EAAG,EACzCA,EAAE,OAAO,CAAE,OAAQA,EAAE,QAAQ,MAAM,EAAG,EACtCA,EAAE,OAAO,CAAE,OAAQA,EAAE,QAAQ,MAAM,EAAG,MAAOA,EAAE,OAAO,CAAA,CAAG,CAAA,CACzD,CACF,EAEMC,GAA+BD,EAAE,OAAO,CAC7C,KAAMA,EAAE,QAAQ,2BAA2B,EAC3C,OAAQA,EAAE,QAAQ,MAAM,EACxB,MAAOA,EAAE,OAAO,EAChB,UAAWA,EAAE,OAAO,CACrB,CAAC,EAEKE,GAAuBF,EAAE,MAAM,CACpCC,GACAF,EACD,CAAC,EAKM,SAASI,GAAoB,CACnC,SAAAC,EACA,SAAAC,CACD,EAGG,CACF,MAAMC,EAAOb,KACPc,EAAYC,SAA0B,IAAI,EAC1C,CAACC,EAASC,CAAU,EAAIC,WAAsC,IAAI,EAClE,CAACC,EAAWC,CAAY,EAAIF,EAAA,SAAwC,CAAE,CAAA,EAE5EG,EAAAA,UAAU,IAAM,CACf,SAASC,EAAcC,EAA4B,OAE9C,GADAA,EAAa,WAAWvJ,EAAA8I,EAAU,UAAV,YAAA9I,EAAmB,gBAC3C,YAAauJ,EAAa,KAAM,OAEpC,MAAM/E,EAASiE,GAAqB,UAAUc,EAAa,KAAM,CAChE,KAAM,CAAC,eAAgB,MAAM,CAAA,CAC7B,EACG,GAAA,CAAC/E,EAAO,QAAS,CACZ,QAAA,MACP,mCACA+E,EAAa,KACb/E,EAAO,KAAA,EAER,MACD,CACM,KAAA,CAAE,KAAA/D,CAAS,EAAA+D,EACb/D,EAAK,OAAS,gCACbA,EAAK,SAAW,WACnB2I,EAAa,CAAE,CAAA,EAEhBH,EAAWxI,CAAI,GAEZA,EAAK,OAAS,6BACjB2I,EAAcI,GAAU,CAAC,GAAGA,EAAO/I,CAAI,CAAC,CAE1C,CACO,cAAA,iBAAiB,UAAW6I,CAAa,EACzC,IAAM,CACL,OAAA,oBAAoB,UAAWA,CAAa,CAAA,CAErD,EAAG,CAAE,CAAA,EAEL,MAAMG,EAAc,CACnB,QAAUjN,EAAA,IAAAkN,EAAA,CAAa,KAAM,GAAI,aAAW,UAAU,EACtD,KACClN,EAAA,IAACC,EAAA,CACA,KAAK,aACL,aAAW,SACX,UAAU,kBAAA,CACX,EAED,KACCD,EAAA,IAACC,EAAA,CACA,KAAK,SACL,aAAW,SACX,UAAU,wBAAA,CACX,EAED,cACEA,EAAK,CAAA,KAAK,WAAW,aAAW,UAAU,UAAU,gBAAgB,CAAA,GAErEuM,GAAA,YAAAA,EAAS,SAAU,SAAS,EAExBW,EAAkBR,EAAU,KAAK,CAAC3K,EAAGC,IAAMD,EAAE,UAAYC,EAAE,SAAS,EACpEmL,EAAuB,CAC5B,KAAOpN,EAAA,IAAAC,EAAA,CAAK,KAAK,aAAa,aAAW,SAAS,EAClD,KAAOD,EAAA,IAAAC,EAAA,CAAK,KAAK,SAAS,aAAW,SAAS,EAC9C,cACEA,EAAK,CAAA,KAAK,WAAW,aAAW,UAAU,UAAU,gBAAgB,CAAA,EAKtE,OAAAD,MAAAqN,EAAAA,SAAA,CACC,eAACC,GAAA,CAAe,UAAU,SAAS,KAAK,WACvC,SAAAtN,EAAA,IAACuN,GAAA,CACA,KAAMN,EACN,MAAOb,EACP,WAAY,GAEZ,SAAAjM,EAAA,KAAC,MAAI,CAAA,UAAU,YACd,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,+BACd,SAAA,CAAAH,MAAC,MAAG,UAAU,sBACZ,SAAgBmN,EAAA,IAAI,CAACK,EAAUC,IAE9BzN,MAAA,KAAA,CACA,SAACG,EAAAA,KAAA,MAAA,CAAI,UAAU,6CACd,SAAA,CAAAA,OAAC,OAAM,CAAA,SAAA,CAAQsN,EAAA,EAAE,GAAA,EAAC,EACjBzN,EAAA,IAAA,OAAA,CAAM,SAAqBoN,EAAAI,EAAS,MAAM,EAAE,EAC5CxN,EAAA,IAAA,MAAA,CAAI,UAAU,wEACb,WAAS,MACX,CAAA,CAAA,CACD,CAPQ,EAAAwN,EAAS,UAAYA,EAAS,KAQvC,CACA,EACF,GACChB,GAAA,YAAAA,EAAS,UAAW,OACnBrM,EAAA,KAAA,MAAA,CAAI,UAAU,mDACd,SAAA,CAAAA,OAAC,OAAM,CAAA,SAAA,CAAAgN,EAAgB,OAAS,EAAE,GAAA,EAAC,EACnCnN,EAAAA,IAAC,OAAM,CAAA,SAAAoN,EAAqB,IAAK,CAAA,EACjCpN,EAAA,IAAC,MAAA,CACA,UAAU,wEACV,wBAAyB,CACxB,OAAQqM,EAAK,OAAOR,GAAqBW,EAAQ,KAAK,CAAC,CACxD,CAAA,CACD,CAAA,CAAA,CACD,EACG,KACJxM,EAAA,IAAC,SAAA,CACA,IAAKsM,EACL,MAAOF,EACP,IAAKD,EAAWC,EAChB,UAAU,2CAAA,CACX,CAAA,EACD,EACAjM,EAAAA,KAAC,MAAI,CAAA,UAAU,gBACd,SAAA,CAAAH,EAAA,IAAC,SAAA,CACA,QAAS,IACR,SAAA,OAAA0N,GAAAlK,EAAA8I,EAAU,UAAV,YAAA9I,EAAmB,gBAAnB,YAAAkK,EAAkC,SAAS,UAE5C,UAAU,eAEV,SAAC1N,EAAA,IAAAC,EAAA,CAAK,KAAK,UAAU,aAAW,cAAc,CAAA,CAC/C,EACAD,EAAA,IAAC,IAAA,CACA,KAAMmM,EAAWC,EACjB,OAAO,SACP,IAAI,aACJ,UAAU,eAEV,SAACpM,EAAA,IAAAC,EAAA,CAAK,KAAK,eAAe,aAAW,qBAAqB,CAAA,CAC3D,CAAA,EACD,CAAA,EACD,CAAA,CAAA,CAEF,CAAA,CACD,CAAA,CAEF,CCvIA,MAAM0N,GAAkB5B,EAAE6B,MAAM,CAC/B7B,EAAE8B,OAAO,CACRC,KAAM/B,EAAEgC,QAAQ,MAAM,EACtBC,SAAUjC,EAAEkC,OAAS,EAAAC,SAAA,EAAWC,SAAS,EACzCC,UAAWrC,EAAEsC,QAAQ,EACrBtN,OAAQgL,EAAEuC,MACTvC,EAAE8B,OAAO,CACRC,KAAM/B,EAAE6B,MAAM,CAAC7B,EAAEgC,QAAQ,QAAQ,EAAGhC,EAAEgC,QAAQ,QAAQ,CAAC,CAAC,EACxDQ,QAASxC,EAAEyC,OAAO,EAClBC,UAAW1C,EAAEkC,OAAO,CACrB,CAAC,CACF,CACD,CAAC,EACDlC,EAAE8B,OAAO,CACRC,KAAM/B,EAAE6B,MAAM,CAAC7B,EAAEgC,QAAQ,QAAQ,EAAGhC,EAAEgC,QAAQ,QAAQ,CAAC,CAAC,EACxD9J,KAAM8H,EAAEyC,OAAO,EACfC,UAAW1C,EAAEkC,OAAO,CACrB,CAAC,EACDlC,EAAE8B,OAAO,CACRC,KAAM/B,EAAEgC,QAAQ,MAAM,EACtBK,UAAWrC,EAAEgC,QAAQ,EAAK,EAC1BpF,KAAMoD,EAAEkC,OAAO,EAAEC,SAAS,CAC3B,CAAC,CAAA,CACD,EACKQ,GAAuB3C,EAAEuC,MAAMX,EAAe,EAkJpD,SAASgB,GAAqBC,EAAaC,EAAiC,CAC3E,OAAOA,EAAQD,CAAI,CACpB,CAEgB,SAAAE,GAAW,CAAE1L,KAAAA,CAAK,EAAqB,CAYtD,KAAM,CAAC2L,EAAOC,CAAQ,EAAIC,EAAAA,WAAWN,GAAsB,CAC1DO,QAAS,EACTd,UAAW,GACXJ,SAAU,OACVmB,MAAO,CAAA,CACR,CAAC,EACK9C,EAAOb,KACP,CAAE0D,QAAAA,EAASd,UAAAA,EAAWJ,SAAAA,EAAUmB,MAAAA,CAAU,EAAAJ,EAC1CK,EAAcC,GACnB,SAAS,IAAIC,gBAAgB,CAAElM,KAAAA,CAAM,CAAA,CAAC,MAAM8L,CAAO,EACpD,EACArC,OAAAA,EAAAA,UAAU,IAAM,CACf,GAAI,CAACuC,EAAa,OAEZ,MAAAG,EAASC,KAAKC,MAAML,CAAW,EAC/BpH,EAAS0G,GAAqBgB,UAAUH,CAAM,EAChD,GAAA,CAACvH,EAAO2H,QAAS,CACpBC,QAAQC,MAAM7H,EAAO6H,MAAMC,QAAS,CAAA,EACpC,MACD,CACW,UAAAC,KAAS/H,EAAO/D,KAC1B,OAAQ8L,EAAMjC,KAAM,CACnB,IAAK,OAAQ,CACZ,KAAM,CAAEM,UAAAA,EAAWzF,KAAMqF,CAAa,EAAA+B,EAC7Bf,EAACJ,IAAU,CAAE,GAAGA,EAAMR,UAAAA,EAAWJ,SAAAA,CAAW,EAAA,EACrD,KACD,CACA,IAAK,OAAQ,CACZ,KAAM,CAAEjN,OAAAA,EAAQiN,SAAAA,EAAUI,UAAAA,CAAc,EAAA2B,EAC/Bf,EAACJ,IAAU,CAAE,GAAGA,EAAMO,MAAOpO,EAAQiN,SAAAA,EAAUI,UAAAA,CAAY,EAAA,EACpE,KACD,CACA,IAAK,SACL,IAAK,SAAU,CACd,KAAM,CAAEN,KAAAA,EAAM7J,KAAMsK,EAASE,UAAAA,CAAc,EAAAsB,EAC3Cf,EAAUJ,IAAU,CACnB,GAAGA,EACHO,MAAO,CAAC,GAAGP,EAAKO,MAAO,CAAErB,KAAAA,EAAMS,QAAAA,EAASE,UAAAA,CAAU,CAAC,EAAEuB,KACpD,CAAChO,EAAGC,IAAMD,EAAEyM,UAAYxM,EAAEwM,SAC3B,EACAL,UAAW,EACV,EAAA,EACF,KACD,CACD,CAEF,EAAG,CAACgB,CAAW,CAAC,EAGfjP,EAAAA,KAAC,MAAI,CAAA8P,UAAU,uDACdpQ,SAAA,CAACM,EAAA,KAAA,MAAA,CAAI8P,UAAU,uEACdpQ,SAAA,CAACM,EAAA,KAAA,MAAA,CAAI8P,UAAU,2BACbpQ,SAAA,CAAA,CAACuO,GACDpO,EAAAA,IAACkQ,GAAA,CACA9M,KAAAA,EACA+M,MAAOA,IAAM,CACZnB,EAAUJ,IAAU,CACnB,GAAGA,EACHZ,SAAU,OACVmB,MAAO,CAAC,EACRD,QAASN,EAAKM,QAAU,CACvB,EAAA,CACH,EACD,EAEAd,EAECjO,EAAA,KAAAkN,WAAA,CAAAxN,SAAA,CAACG,EAAA,IAAA,MAAA,CAAIiQ,UAAU,oEACdpQ,SAAAG,EAAA,IAACkN,GAAakD,KAAK,SAAS,aAAW,gBAAgB,CACxD,CAAA,EACApQ,EAAA,IAACqQ,IAASjN,KAAAA,CAAY,CAAA,CAAA,CACvB,CAAA,EACG,IAAA,CACL,CAAA,EAEC,CAACgL,GAAaJ,IAAa,cAC1B,IAAE,CAAAiC,UAAU,sBACXpQ,SAAAmO,IAAa,EACX,eACA,0BAA0BsC,OAAOtC,CAAQ,CAAC,GAC9C,CAAA,EAEA,CAACI,GAAaJ,IAAa,QAC3BhO,EAAA,IAACuQ,GAAA,CACAnN,KAAAA,EACAoN,QAASA,IAAM,CACdxB,EAAUJ,IAAU,CACnB,GAAGA,EACHZ,SAAU,OACVmB,MAAO,CAAA,CACN,EAAA,CACH,CAAA,CACD,CAAA,CAEF,CAAA,EACAhP,EAAA,KAAC,MAAI,CAAA8P,UAAU,iCACdpQ,SAAA,CAACG,EAAA,IAAA,IAAA,CAAEiQ,UAAU,0CAA0CpQ,SAAW,aAAA,CAAA,QACjE,MAAI,CAAAoQ,UAAU,wFACbpQ,SAAMsP,EAAAxN,IAAK8O,GACXzQ,EAAAA,IAAC,OAAA,CAEA,YAAWyQ,EAAK3C,KAChB4C,wBAAyB,CACxBC,OAAQtE,EAAKuE,OAAO/E,GAAqB4E,EAAKlC,OAAO,CAAC,CACvD,CAAA,EAJKkC,EAAKhC,SAKX,CACA,CACF,CAAA,CAAA,CACD,CAAA,CAAA,CACD,CAAA,CAEF,CAEO,SAASyB,GAAW,CAC1B9M,KAAAA,EACA+M,MAAAA,CACD,EAGG,CACF,MAAMU,EAAUC,IACVC,EAAkBC,IAClBC,EAAc1E,SAAO4D,CAAK,EAChCtD,OAAAA,EAAAA,UAAU,IAAM,CACfoE,EAAYC,QAAUf,CACvB,EAAG,CAACA,CAAK,CAAC,EACVtD,EAAAA,UAAU,IAAM,UACXgE,EAAAA,EAAQ5M,OAAR4M,MAAAA,EAAclB,WACjBsB,EAAAA,EAAYC,UAAZD,MAAAA,EAAAA,KAAAA,GAEF,EAAG,CAACJ,EAAQ5M,IAAI,CAAC,EAEhB9D,EAAA,KAAC0Q,EAAQM,KAAR,CAAaC,OAAO,OAAOC,OAAO,QAAQpB,UAAU,SACnDpQ,SAAA,CAAAkR,QACA,QAAM,CAAAjD,KAAK,SAAS1K,KAAK,OAAOqF,MAAOrF,CAAM,CAAA,EAC9CpD,EAAA,IAACK,EAAA,CACAkO,QAASsC,EAAQ9B,QAAU,OAAS,YAAc,mBAElDlP,SAAAG,EAAA,IAAC,SAAA,CACA8N,KAAK,SACL1K,KAAK,SACLqF,MAAM,MACNwH,UAAU,oEAETpQ,SAAAgR,EAAQ9B,QAAU,OACjB/O,EAAAA,IAAAC,EAAA,CAAKmD,KAAK,eAAA,CAAgB,EAE3BpD,EAAA,IAACkN,EAAa,CAAAkD,KAAK,SAAS,EAE9B,CAAA,CACD,CAAA,CACD,CAAA,CAEF,CAEO,SAASG,GAAU,CACzBnN,KAAAA,EACAoN,QAAAA,CACD,EAGG,CACF,MAAMK,EAAUC,IACVC,EAAkBC,IAClBM,EAAgB/E,SAAOiE,CAAO,EACpC3D,OAAAA,EAAAA,UAAU,IAAM,CACfyE,EAAcJ,QAAUV,CACzB,EAAG,CAACA,CAAO,CAAC,EACZ3D,EAAAA,UAAU,IAAM,UACXgE,EAAAA,EAAQ5M,OAAR4M,MAAAA,EAAclB,WACjB2B,EAAAA,EAAcJ,UAAdI,MAAAA,EAAAA,KAAAA,GAEF,EAAG,CAACT,EAAQ5M,IAAI,CAAC,EAEhB9D,EAAA,KAAC0Q,EAAQM,KAAR,CAAaC,OAAO,OAAOC,OAAO,QAAQpB,UAAU,SACnDpQ,SAAA,CAAAkR,QACA,QAAM,CAAAjD,KAAK,SAAS1K,KAAK,OAAOqF,MAAOrF,CAAM,CAAA,EAC9CpD,EAAA,IAACK,EAAA,CACAkO,QAASsC,EAAQ9B,QAAU,OAAS,cAAgB,oBAEpDlP,SAAAG,EAAA,IAAC,SAAA,CACA8N,KAAK,SACL1K,KAAK,SACLqF,MAAM,QACNwH,UAAU,oEAETpQ,SAAQgR,EAAA9B,QAAU,OAClB/O,EAAAA,IAACC,GAAKmD,KAAK,OAAA,CAAQ,EAEnBpD,EAAA,IAACC,GAAKmD,KAAK,QAAQ6M,UAAU,gBAAgBG,KAAK,SAAS,EAE7D,CAAA,CACD,CAAA,CACD,CAAA,CAEF,CAEO,SAASC,GAAS,CACxBjN,KAAAA,EACAmO,OAAAA,CACD,EAGG,CACF,MAAMV,EAAUC,IACVC,EAAkBC,IAClBQ,EAAejF,SAAOgF,CAAM,EAClC1E,OAAAA,EAAAA,UAAU,IAAM,CACf2E,EAAaN,QAAUK,CACxB,EAAG,CAACA,CAAM,CAAC,EACX1E,EAAAA,UAAU,IAAM,UACXgE,EAAAA,EAAQ5M,OAAR4M,MAAAA,EAAclB,WACjB6B,EAAAA,EAAaN,UAAbM,MAAAA,EAAAA,KAAAA,GAEF,EAAG,CAACX,EAAQ5M,IAAI,CAAC,EAEhB9D,EAAA,KAAC0Q,EAAQM,KAAR,CAAaC,OAAO,OAAOC,OAAO,QAAQpB,UAAU,SACnDpQ,SAAA,CAAAkR,QACA,QAAM,CAAAjD,KAAK,SAAS1K,KAAK,OAAOqF,MAAOrF,CAAM,CAAA,EAC9CpD,EAAA,IAACK,EAAA,CACAkO,QAASsC,EAAQ9B,QAAU,OAAS,aAAe,oBAEnDlP,SAAAG,EAAA,IAAC,SAAA,CACA8N,KAAK,SACL1K,KAAK,SACLqF,MAAM,OACNwH,UAAU,oEAETpQ,SAAQgR,EAAA9B,QAAU,OAClB/O,EAAAA,IAACC,GAAKmD,KAAK,MAAA,CAAO,EAElBpD,EAAA,IAACC,GAAKmD,KAAK,OAAO6M,UAAU,gBAAgBG,KAAK,SAAS,EAE5D,CAAA,CACD,CAAA,CACD,CAAA,CAEF,CCtcO,SAASqB,GAAM,CACrB,QAASC,EACT,eAAAhS,EACA,QAAAE,EACA,WAAAD,CACD,EAKG,CAED,OAAAK,EAAA,IAACR,GAAA,CACA,kBAAmBkS,GAAA,YAAAA,EAAmB,QACtC,eAAAhS,EACA,QAAAE,EACA,WAAAD,EAEA,SAAAK,EAAA,IAAC2R,IAAO,kBAAAD,CAAsC,CAAA,CAAA,CAAA,CAGjD,CAEO,SAASC,GAAO,CACtB,kBAAAD,CACD,EAEG,CACF,KAAM,CAACE,EAAkBC,CAAmB,EAAInF,WAAS,CAAC,EAG1D,GAAI,CAFkBoF,KAIpB,OAAA3R,EAAA,KAAC,MAAI,CAAA,UAAU,cACd,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,yCACd,SAAA,CAACH,EAAA,IAAA,IAAA,CAAE,UAAU,qBAAqB,SAAa,gBAAA,EAC9CA,EAAA,IAAA,IAAA,CAAE,UAAU,UAAU,SAGvB,yEAAA,CAAA,EACD,EACAA,EAAAA,IAAC,MAAI,CAAA,UAAU,MAAO,CAAA,EACrBA,EAAA,IAAA,IAAA,CAAE,UAAU,OAAO,SAEpB,sDAAA,EACAA,EAAAA,IAAC+R,GAAkB,CAAA,IAAI,0DAA2D,CAAA,CACnF,CAAA,CAAA,EAIF,GAAI,CAACL,EACJ,aACE,MAAI,CAAA,UAAU,kDACd,SAAC1R,MAAA,IAAA,CAAE,kCAAuB,CAAA,CAC3B,CAAA,EAIE,GAAA0R,EAAkB,KAAK,OAAS,SACnC,OAAQ1R,EAAAA,IAAA8O,GAAA,CAAW,KAAM4C,EAAkB,IAAM,CAAA,EAG9C,GAAAA,EAAkB,KAAK,OAAS,UAAW,CACxC,KAAA,CAAE,SAAAvF,CAAS,EAAIuF,EAAkB,KAEtC,OAAAvR,EAAA,KAAC,MAAA,CACA,UAAU,wDAGT,SAAA,CAAAuR,EAAkB,KAAK,UAAU,IAAKtF,GACtCpM,EAAA,IAAC,MACA,CAAA,SAAAA,EAAA,IAACkM,GAAoB,CAAA,SAAAC,EAAoB,SAAAC,CAAoB,CAAA,CAAA,EADpDA,CAEV,CACA,EACDpM,EAAAA,IAAC,MAAI,CAAA,UAAU,iBACd,SAAAG,EAAA,KAAC,SAAA,CACA,QAAS,IAAM0R,EAAqB9N,GAAMA,EAAI,CAAC,EAC/C,UAAU,mEAEV,SAAA,CAAA/D,EAAA,IAACC,EAAK,CAAA,KAAK,UAAU,cAAW,GAAC,EAAE,kBAAA,CAAA,CAAA,EAErC,CAAA,CAAA,EAdK2R,CAAA,CAiBR,CAEA,aACE,MAAI,CAAA,UAAU,kDACd,SAAC5R,MAAA,IAAA,CAAE,kCAAuB,CAAA,CAC3B,CAAA,CAEF","x_google_ignoreList":[1,2,3,4,5]}