From 4c2f06d775c722da6cd50ad6cb0d378d58ce336f Mon Sep 17 00:00:00 2001 From: code0xff Date: Sun, 13 Sep 2026 10:34:09 +0900 Subject: [PATCH 1/8] feat(viewer): send a message to the active terminal from a form On iPadOS xterm's hidden input field drops and repeats characters an IME composes, so Korean typed straight into a pane comes out broken. A plain textarea composes it correctly; the form sends the finished text to the active pane and presses Return. The text goes in as a bracketed paste when the program has asked for one, so a multi-line message is not submitted line by line, and escapes are stripped so an embedded paste terminator cannot end it early. The Return follows a moment later: sent in the same burst, a prompt that tells pasting from typing by timing can take it as part of the paste. The dialog is portalled out of the terminal panel, which otherwise pulls focus back into its pane on any resize, including the soft keyboard opening for the field. Drafts are kept per pane until sent or cleared. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01K9Y6nr4J3kMp6GVQNUd9Ry --- docs/web-viewer.md | 4 +- .../{Html-BpM7k0bP.js => Html-_axzcfhH.js} | 2 +- ...tor-BMYK-6I_.js => HtmlEditor-QcA2kVvi.js} | 2 +- ...kdown-D3nK80PY.js => Markdown-BHTmnn8K.js} | 8 +- ...minal-CMf2gck5.js => Terminal-DeM66FtV.js} | 24 ++-- viewer-ui/dist/assets/index-BTtUeQSu.css | 2 + .../{index-CIXKTHt7.js => index-BqB7jeNo.js} | 4 +- viewer-ui/dist/assets/index-lOhfH3AI.css | 2 - viewer-ui/dist/index.html | 4 +- .../terminal/ComposeDialog.test.tsx | 88 ++++++++++++ .../src/components/terminal/ComposeDialog.tsx | 136 ++++++++++++++++++ .../src/components/terminal/PanelToolbar.tsx | 15 +- .../src/components/terminal/TermKeyBar.tsx | 14 ++ .../src/components/terminal/Terminal.tsx | 31 +++- .../src/hooks/terminal/useCompose.test.tsx | 117 +++++++++++++++ viewer-ui/src/hooks/terminal/useCompose.ts | 75 ++++++++++ viewer-ui/src/lib/composeInput.test.ts | 37 +++++ viewer-ui/src/lib/composeInput.ts | 30 ++++ 18 files changed, 568 insertions(+), 27 deletions(-) rename viewer-ui/dist/assets/{Html-BpM7k0bP.js => Html-_axzcfhH.js} (70%) rename viewer-ui/dist/assets/{HtmlEditor-BMYK-6I_.js => HtmlEditor-QcA2kVvi.js} (99%) rename viewer-ui/dist/assets/{Markdown-D3nK80PY.js => Markdown-BHTmnn8K.js} (99%) rename viewer-ui/dist/assets/{Terminal-CMf2gck5.js => Terminal-DeM66FtV.js} (73%) create mode 100644 viewer-ui/dist/assets/index-BTtUeQSu.css rename viewer-ui/dist/assets/{index-CIXKTHt7.js => index-BqB7jeNo.js} (99%) delete mode 100644 viewer-ui/dist/assets/index-lOhfH3AI.css create mode 100644 viewer-ui/src/components/terminal/ComposeDialog.test.tsx create mode 100644 viewer-ui/src/components/terminal/ComposeDialog.tsx create mode 100644 viewer-ui/src/hooks/terminal/useCompose.test.tsx create mode 100644 viewer-ui/src/hooks/terminal/useCompose.ts create mode 100644 viewer-ui/src/lib/composeInput.test.ts create mode 100644 viewer-ui/src/lib/composeInput.ts diff --git a/docs/web-viewer.md b/docs/web-viewer.md index 40b64626..1eff27d1 100644 --- a/docs/web-viewer.md +++ b/docs/web-viewer.md @@ -18,10 +18,12 @@ Drag the sidebar and upper-panel dividers to resize them; double-click a divider From `md` width up, the project tabs run across the header or down the page's left edge; the header button just right of the accent swatch moves them, and the TUI's `[layout] tabs = "left"` is the same idea for a terminal. On the left the `nightcrow` title heads the column and the tabs hang under it, one project per row, with the same labels, drag-to-reorder and close control as the row. Like the pane view mode, the choice is this browser's own — a screen with rows to spare is not the screen with columns to spare — and it is stored in the browser, not in `viewer.json`. Below `md` there is no strip either way; the header's project menu takes its place. -The terminal toolbar can add a pane, show panes as a grid or tabs, maximize the terminal panel, claim sizing for this screen, and show the on-screen key bar. A project has up to 8 panes. Pane order and zoom are shared while the session runs; they are not restored after the session ends. A PTY has one size, so the client that most recently claims sizing determines the grid rendered by every client. +The terminal toolbar can add a pane, show panes as a grid or tabs, maximize the terminal panel, claim sizing for this screen, show the on-screen key bar, and open a message form for the active pane. A project has up to 8 panes. Pane order and zoom are shared while the session runs; they are not restored after the session ends. A PTY has one size, so the client that most recently claims sizing determines the grid rendered by every client. On phones and other narrow layouts, the bottom navigation switches among `Repo`, `Content`, and `Terminal`. Touch-dragging a terminal scrolls it; the key bar supplies Escape, Tab, arrows, and control keys when a soft keyboard cannot. A soft keyboard opening does not resize the panes: the PTY keeps its grid and the pane shows the bottom of it, so a full-screen program is not made to repaint from the top every time the keyboard comes and goes. Layout changes made while the keyboard is up are applied once it closes. Its `Ctrl` button is a latch for the next typed character. The keyboard-bar preference is stored in the browser, so it can be changed from the terminal toolbar. The shortcut leader key is stored in the browser too, and can be rebound or switched off from the shortcut sheet. +The message form (the pencil in the terminal toolbar and at the end of the key bar) exists because xterm's hidden input field drops and repeats characters from an IME on iPadOS, which makes Korean typed straight into a pane unreliable; an ordinary text field composes it correctly. Send writes the message into the active pane and presses Return, so it runs at once; Cmd/Ctrl+Return does the same from the keyboard, and Return alone adds a line. When the program has turned on bracketed paste, a multi-line message goes in as one paste rather than one command per line. Clear empties the field. A draft is kept per pane for the life of the page, so closing the form does not lose it. The TUI has no such form: it reads keys from the host terminal, whose IME already composes. + Terminal programs may write to the clipboard through OSC 52; the text reaches the browser device viewing the pane. A program requesting clipboard contents is not answered. If the browser requires a user gesture to write, the viewer shows a Copy action. ## Access and security diff --git a/viewer-ui/dist/assets/Html-BpM7k0bP.js b/viewer-ui/dist/assets/Html-_axzcfhH.js similarity index 70% rename from viewer-ui/dist/assets/Html-BpM7k0bP.js rename to viewer-ui/dist/assets/Html-_axzcfhH.js index cea77dd1..74f653c7 100644 --- a/viewer-ui/dist/assets/Html-BpM7k0bP.js +++ b/viewer-ui/dist/assets/Html-_axzcfhH.js @@ -1 +1 @@ -import{D as e}from"./index-CIXKTHt7.js";var t=e();function n({src:e}){return(0,t.jsx)(`iframe`,{title:`HTML preview`,sandbox:`allow-scripts`,src:e,className:`h-full w-full border-0 bg-white`})}export{n as HtmlView}; \ No newline at end of file +import{O as e}from"./index-BqB7jeNo.js";var t=e();function n({src:e}){return(0,t.jsx)(`iframe`,{title:`HTML preview`,sandbox:`allow-scripts`,src:e,className:`h-full w-full border-0 bg-white`})}export{n as HtmlView}; \ No newline at end of file diff --git a/viewer-ui/dist/assets/HtmlEditor-BMYK-6I_.js b/viewer-ui/dist/assets/HtmlEditor-QcA2kVvi.js similarity index 99% rename from viewer-ui/dist/assets/HtmlEditor-BMYK-6I_.js rename to viewer-ui/dist/assets/HtmlEditor-QcA2kVvi.js index 04ac7877..00154633 100644 --- a/viewer-ui/dist/assets/HtmlEditor-BMYK-6I_.js +++ b/viewer-ui/dist/assets/HtmlEditor-QcA2kVvi.js @@ -1 +1 @@ -import{A as e,D as t,j as n}from"./index-CIXKTHt7.js";var r=n(),i=[8364,0,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,0,381,0,0,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,0,382,376];function a(e){return e===0||e>=55296&&e<=57343||e>1114111}function o(e){return a(e)?65533:e>=128&&e<=159&&i[e-128]||e}function s(e){return a(e)?65533:e}var c=(()=>{let e=new Uint8Array(127),t=0;for(let n=33;n<=126;n++)n!==34&&n!==36&&n!==92&&(e[n]=t++);return e})();function l(e,t,n,r,i,a){let o=e.length,s=a*90,l=0,u=()=>{let t=c[e.charCodeAt(l++)];return t=a&&(t=t*91-s+c[e.charCodeAt(l++)]);let n=p[t];if(n<0){let e=m[t],n=e+h[t];for(;e%#%&}*%}(%}9%}/%})%}*%}*%}?&}&%}3%}&*#%})%#%#)}#&#-#+*%E%%'%'#%}#*V##&##I}#&&##%&%#&&Qf%%))w/0+&%#(#.%-''''++++7}>%4'',##1,#%#&%##&#'##&#*#9)%&%}#*}%,#+P(%A&%#'&##wSD',9E00#y#@}(+}&%&>~!#~!X}#*}(&&}(&}(,%}%&#+&}#&}I%#%}%)#(},'%#*}4%%#%}(''}#/##(##),%-##%%)#&}(.}&%#&}%%}*&#%},&&}&%}#%*'#%})%}D&}&%}-&}6&#&}-,%}#%})-(~+`~,=?~I9'9%~!,#%})%})%}@%}?%}(~!?~#<~#pP~#BG~#=1#%K+~#?#~%;)~#A~#mF1~#A'~'X%'~#lR~#N~'N~#r~#m#-~#i'?%#'%~#B%##%,%#~#_%#0%~#]732~,w~2+#:&#%&'0%&>%}#>##F+)#%&&#(+_}4&}-%}(&}@&}O7Fdf0@+/v4}&WU##&/0#&'('B#%}.%}'+#%}#%%&#&%#%##+#&#)#6#'#.},%}c%},%#%##%&#&%#&~#>'*-.%##%##%}#%%}%'~#)D1}#%*&~#_%%'(~#S2%'.}#~#=##*'*-%}&'%'##&&~'E%.#&~#M4}%%##&'%#~#O1##%&#'+~#~#UA%-%##&~!C%~!-.9:~!1~!-^2/:a~!y,D*J#-5)/4~%23,~#G~!L1~!0X3`~!2+~!!0-~&E~!W~!o,>Y&]~%cZx_&~#O*9#A#'#+I'%#)~!0B*-5A+-((F&*M#)(-7-5+'-3a5Vi~!Y~!?+[)%3),ERHm~!+:D,VG.+)?fB%%*(%)'(#&80%1'8`K8?`+'Z#&O&'H5#*9)A%%5&3))0%39+.*7#()&&*=4@**L)<'_&*+..;(#*+)./&0#3)%')-8(4ixD(&.}%,('aI:,)%,k2231T)I'#/-W7,/'Q#.'Y24+h')37w+vu9i[~>g5uI~=RvdwEg;v/g;uk!!TTSx]@RT!U!#!@VBRUU!'UTe-d0c`e&gSdicedFcrdTaqb.kYcAohdYd@a3e+d}dMdtd.aJ#bqcK`dle/e.e'dwdPdodddjbEb}ogd^ofdpduc6j?l%d{drdqc)d7bacOdQ%T#Y)X.sR[yH>6Vyv3[xwLu>vo'!*.[yBacahoj>6Rew3[xqdZa#!a&#^(X-[yG>6Vyu3[xvg3sEr|g.u/Ri9db0T#^(Xa)!-[y;>6Vylg4wKs{JwNZt3@3r=c4Z([xlg;wKt!cpq's@v7A'*a(a+!-a#[y<3Dt?3Dt'>6Vym3[xmg9rxsNJwLZt4~?r?db1T#`-!(Xa,!0[yS>6Vz%NuQs.g4wKtnJwNZtS@3r>c4Z([y%g;wKtrdga8!a(!#&T*Y-Xa#!a06Vz43[y3JwNZtf@3s!Ju}!%Dti:pm3c_%X#tjB5pkd6q!r]u?voC'*-a.a2!0a&a+[yI3DtI3Ds~3DtH>6Vyw3[xx;:s#~<5pKJwNZtE@3r~d`a)!a2T#a.(!+U.X1[yT3Dt`3Dtv>6Vz&3[y&g9rxwzcxstPu.6Vz23[y1g3sEr}wkg{NuQRg{ci(U#5@b`~,cg#U(2WnH5wugcRh7dX#T(Y,a'Ta!!a,[yZ<]mj>6Vz,3[y+Pv#5ReZKu+=,%!H}7ABwkaS?Rh:BcW(X#<]mrj:ubv/ARekdg%!(!a.*Ta(Y.X1!#sP>Rl*Dt6[y>>6Vyo3Wf*jOvuumvuRgRJuq*!:96Re}3[xy~<5s%JwJZt1~Gs)c;&!#2sJkNuXvzq7rxu,Re8dka4!a8(aEZ+a@Y.X1Xa)[yd=Bs(3DtP>6Vz53[y4cX#X&Re:avRe9~<5s&JwJZtQ~Gs*i^rzvdRg+Jv{%!2sbB@bX}kdga,!Za?&^*T1/!a'Dt+[y6>6Vyf3Wf%g/u;s4hGu6?Rh-JvZ,!c%#&RoX54Rivj7uyvf8RgTKvZB%*!2sGh[y93Wf)coZ(T,6VyifluvRgC@95@B@bX~/hFu34cC#T,k/unq8w8Q5RkUklwQuzunq8w8Q5Rk8d/rJu?v8w9)-&!a0a;a&aIWejg3sEr/h1s23E~5c:Z&bX};kKv?w&unuVu5Rjc;>bs)#~@:Rh.=ay6Vyt3[xuNuPRi&NuPwpi#RoWh?vf8Ri%Jv]!%Ri:KvxD!.'2WeAjZu`q9rxu,Re7woeAg-unLq(qA_/*2Wg_g3u5q^9:4E}/jTrxrzv=Wkkd~0UX#^^Xa-a1a5T&a=U1a'*aEa]!a*aPaA-adok[y54Rn>;:p3~Dp5g9rpsFNvZqjg3uJp4~<5p0Pw;5qlJwNZt*@3p1Pw:5p/Ou!5p2JvG'!6Vye=Rl!9ARiq5E}Qg=ucRkBE|oJrJ_@Wk~@Wk{JrJ_@Wk|@WkyJrJ_@Wk}@WkzJvO_[y2g-vMRmiKuYC!)&>Ri;>Ri<@3RkNc](X#@9Rk=g5vuRmhKvDB!+'=]meg3u4Rmgd)#Y'Vz3CARmfd`a+!%T'!+#Ta1Ta6TaM-sTDt9[yA9sYd'%Y#s[[xpj:ueunaXRgEjRq,v-vuqdd2'`#6Rev<32@5>:2vyRgNj8w)v86Vyj3[xkg6ruwjcqsrPw;5r*Ku]D'Zt-@3r(~?r.i[vwv]dU1a--U#`a4(g/vsRhPOu!5RhLj:rmu9Wo!~@:wdh@g/vsRiTjXuvvNr}:RhBj^v(pyw8unRn]dz1UYa'a+^Y(!aETZalaRY.Ta?a4[yDJw1!#qLsW>6Vyrfzq-pLflpwRe|Js>%!Dt@3Dt&Jvy_[xs~HrnjMuwpsw'RecKu+D#'!t<~Grl~?rjg5u-x,gwp{ah!-(~@:Rg~Ou!5Rh'jXuvvNr}:Rh#cW#X/c;&!#2sLi[v7u7RgpJv)(!iLrxu,Re6j7v@s@5Se[e7d`aW!Za(a`T.a#!a3!&aDa-!9)Dt_=6s+3[x~~DR|h~DS6avhGun5RkZj3w)v-]mkKunB!&*]kb97R|icQ#%T'p-Rf8Rf=ct#%'(*!,p,Rf4p+Rf6Rf:Rf3Ds}KvGB)_6Vyk2sM=6Vyp;:pE~DrY~<5pBJwNZt8@3pCh=rt3rWPw:5pAJup_[xoNuPpF9c!#'45pD5ARn)d8#X'X*3@rU72s]h>v<RoUWeL>:Cbb|?JwPZtVg6ruRmzJvD'!6Vz(g/vmRh~Jvy_[y(g9voRgyx*cy(#2>Ri2B9b]~9kIw9u7rluJu3Rg]dI#a%UY'@=p%CAx.gQZ&RhwwygtRm{x5g_Z'+ABqR9Woa=Bp&dV#^*Xa'!&@o{g4v]Rk;Jv{!%Rk[wkkiA5RkiwwfUB=x,fUuqC&*!>RfTg8v0RfV~ARfSd;rJsAuAv9wR'ae+/aO!a@aza/a#[yQ@Wg!2Wemg3sEr0JvB_g>uvReWg2v+Re=KupB_+[y!2AbY~-~Hr2AJwD!(h<~El>h<~El?Kun@+_:9b`}Kg-v/Ri3g;vtwyk_9]k_d=&T#*U.6qh@Ab`|K9:H|CJv[!&3Dtex'fDwC%!Rf[9WlMd[(^X,!a%Z06Vz!@WgBg=v~Rgvg,QRe@awd,#Y+jTv|Q~EfWj]uNr|~FRfXdy#Y&^Ua%!aO.!(a)Ua;=!a@aKap!a-,a!Ta]a[rSa]p?[y82sK=Bq~;:p:~<5p8Pw:5p7d'#Y'Wf(;RnRi[u4w&RgJJvG'!6Vyh=)!&6Ri154s,KuGB_%@r68r:dJ|t`#X(9b6a3b%!/aKa/)!arwve^VyJ;:pR~DpTg3uJpS~<5pOPw;5qmPw:5pNOu!5pQJvG'!6Vyx=wkh'?Rh,x8gyt`w5D!&),(SgyccRgztJ@3pPB5p#d'(Y#<]mmifubw&RgoJvE&!82s^JvF&!8Rf,ADb]~;x=h'rNu]vK!,%'*0RnORh)4Rh*AqQg-vaRnNg;wHwkh'ba~4cE#Ta*x3gctyw@'!+%RnFRnD<4Rn@hFvK5RnCxWg[#`&a0Ua()`1Rm75Rg[c]%X#qi8Rg^NvdRj>BwzgZauwji7Rm6A4wgg]d1#&(*,.0a#Rm;RmRm?Rm@RmARmBe%#^^^Xaea?aC/b+(,!a+a#!a/!>a&Ta6Vy~g6urRf.x,hPrNav!%'RnqRo%Ro#Nu;q[Pw;5r+JwNZtM@3r)d'#Y'Weh;xChL#`&RnmRnoKu}>%(!Rne~Bs-;2wjcussJv+'!aYSO}6@B<5?ba~8LrNvj!.%*ROwungw~ng~:9;Ri^>wtnig;wHRnixDh@|(UZ.x1h@|)!#:2@=be}]?cl{{U#:5Abb}Jds#^YaF!a*b4a#a3aPa>&Tb!bH!*a_!Eau?/a&RjY<]gj>6Vz*;:pe~DrZg,QRj1JwNZtX@wihspcJvZ&!VyX9WmOJu|!|N2WmHJvh&!]ht~Bpbcn&T(!#RmQRmKCARhnKup=!)&Wf+:RhqNuPpf9c!#'45pd5AwghpARn(Ls@w!%,)!RmP@Wfe.a6!a:aO`aJDtL[y`@Wg#>6Vz12@wzoYRoZNuPRi!NuPRhzg=ucRi,@=b`{Yg=ucRi-ACJvB!&Sh[ebSh]ebi`wUuFRm4Jw2_[y0JvB!.>bU{0j9udv:Bb_{TJv`!&g/r|snj6v(us5d,#Y(56H}[978H}]Jw5!&g1rushJvB!+j;v{u5?zDhd}6}bj;v{u5?zDhe}6}ce*#`(^^^a[aea!=!a6a*aoXb1a.!aAbL!b>,b'aL!aV@Wf|2Wlg3[y/JwNZt^@3piPw:5pgJunZou3@rsJva&!Vy_gg5u-rqJvy'!@9RkQcH(T#=>Ri~@Ri}@2@@=aybb}XjWv0Q~EfEj3vLv;5@d##Y+jTv|vV~EfFj]uNpn~FRfGdgaK!Z2&!a8a-Tb({E!acTbM*!a(DtY[yYd'%Y#sl[y*hHvh>Re5x2c{Z}.j4uCvcawRiMd+#X+_x&d!},<5RkX;2Hzw@x,gavfB-!{CcF&T#Roe;RodwWbBg5urRgaKvHC*_6Vz+<4opieuew&Rmq@d]&Y)X,T#X0Rh}Ro5CE{A9b]{@;5x#eO{:g;urRi+KrNA!%(Ro3>Ro79;Ri_Ku@>{;&!x%gX|{KunA_+g5QRj/g3u5Rj#g>uERj%wio/xRhS&!,!#^1U}wba{8>>@=be}qC@:D5ba{7Ku+A&!}x?ba}t>>@=be}se(aA^^^Uat!b0#{pa+awUazbGa#aLb9bgaWac'a5TbS=Br!d1#`%scp_Jvl!#rT>Re0JvX&!VyN=H{Fcm#U&:pY=ReaJv2&!]h0=]nUJvG'!6Vy|=!|l=w^e1bp#&Re2Re3BDx7gH#T|f5H|eKuZ>!%(:qNAH{]Jv6!+3B2B9=b^{X<5x]z/@awRoTd+#Y(az]hFhCrm4d,#Y+jTv|Q~EfMj]uNr|~FRfOdCa!Xa9_X#@>@=be{#KuY>!+&4Ezyi[ugv&RjIdea+T)#UXa&T-T&a!Rh9auRmW=]kLg5vuRn+g3u4Rn-Ow6ARn,hHus5xNk?#UX(U~)/g8v0RkD~AwkkF?Ri.OuNBwkkA?Ri/d|a2`a*^UYa.!aBTZaTa'Xa;!(!2!-a#b2[yC>6Vyq3[xr2Wi?g1rusVh%s?DtF~<5rbJs;%!DtBfswKtCj[uvuSsEu3RgVx3o:u+wN'*Zt;@3rd~Grh~?rfg8w)Lq)qE&-a%!>bI|`jWv0vV~EfCjTv|vV~Ef@j]uNpn~FRfBcK#T']gWNu7x,k7q4ai(0!hHv8waiL2b`{QJv*_Ouv2qgjZa&!*UaA=2Wls3cH#T(@Ri|b~'#23s9h<~El.d'#Y&Dtxi^rzvdRl#d*#U%(o|B2s`hJwSaxRmDKv4B&!1:Rmdd5#`'Vx}to~Hq{x'f1v3(!BA5ba|bJv_&!Wfug1v]ReIdO+U/Y#&G}-8wze=Rh{g1v]ReHg/uQRf/by#)ibQwERl/cH#T(@Ri{cNu+vlax-!(#a0qa9aY?C9:9au@9Cb]}9cl#U*5;5KqRlR=c>Z,k#u3vWs@u2]krvgwyk^9]k^Jv3_@WfbAARkhJw2_[x|JvB_wkoIRoKwkoJRoLd'(Y#<]gm=<9Awwn;;Rn=c:Z'ARn<=Rn8Jw0!&>Rn:>Rn6cY#a7+!a&=978H{Dd_#{2^Y%_+qbbb{6g3sERhsbU{?dfa.,`a(XaRn7Jw0!&>Rn5>Rn9Lunw?&a2!,5ReGJwPZtK<7Rh+h<~El,Pv#5ReR@awwxjCg,ulRjDJv6&!]j!z?aQeeg>w=Shx'h-u(!%Ro.w~h.zPdNZ(X,Ya![x{;9ReY;wkgxRiF:x?ap#Y&RmUgA9:=b^}zKuh=a''!3awRk3c*'!#aHRk6c+Z&Rk5Rk4Jv)&!awRjSawd9*`#0?C2@EzMj8uuq@_+=ayb^|W~ARkEOuN]k@7dhzV^X/X&a-#zRzSb`zXcJzTT#2WkVKvDBzW!%FzY9;5bbzWjQrquJu3Jw3%!b`zU=ayb^zQd:#X(T-a!6Vyywxh}=b]{Jg=u1RiAdGp~qHtzv!w(wA+a+a;!,')~<5qeGzq9F{W=c##%s5au:5aU3CBE|;d4#X(D!a&6Vygx(b;#(=]ed?C2F{NaU@@=I|1OuNBc1Z+jTqIsBv=Wlc~Cw`fl2WlZ~AcTa%!Z+jTqIsBv=Wlb~Cw`fh2WlYk+uNqJsBv=WlSg,u3dca3#UXaMYa)TaB-=cM|7T#cB{/T#=ayaL.bo6!a#CbTa'T#Re{2Wlh2@G{yg6t~Ro_NvdRfticuRQRllJv3&!x&c|zs@Jw3!%RflwpfkRlpKuL;%(!Re<@G|C2GzdhIvuBwgjAg-u0RjAKQB%!(GzZ@G|5NuuRl7d='T+Y#Vy[gJvA!)@wma=]m1ifuaw&RmnLs@vT'!|/+[y,g:v>ReTJw1!#qX=x!eC{bLu+wT&)ZtZauq_~Graci&U#F|89:r_Lupvq!.)&2RlG8RfaC=x!eF{_h?rpWlmd&'!#X|&]k::xJey#`'T|+RlyARl9b[z[>RfZ:RlL:RfRwlg/ARl;9;RlxKv,A/!%7s69<74=BA5ba{-8Bde#`aRfk=ayb^}4~Ad1#`*@@=aybb{w2@>==KqRlT=c>Z,k#u3vWs@u2]kqReD2@G{42@G{5~DpM~<5rc=Bx6i>{RT#RnI@zCx]y]z:2Jv[!zr5Awyk]9]k]dD(Y+X#6Vz.g=wKtgwhaCwgmTWj2Lu,w%_+/[y-B;b^xeg3u3Rj-2@bX{*KrJRkdJwMZtc3Dtd@BcG#T'9bWxg2@2Fznd*#Y+;2x'c}wRn%:A5B;bZ~%KvhCa!a2!x>k7#Uxb@b{#xaRk7Jw0!)>wwhlShl}6>wwhmShm}6CJvB!.x'hhvj{!!5Bwkhhbaz}x'hivjz~!5Bwkhibaz|xEhTrNu,v-vpD!a%&/)a3a.,%Ro2t[CE{)@3re9b]{%wjo09:rgc:Z&Ro6=Ro89;Ri`dSaL'UYzxZb)7Rka3xRhT&!,!#^1U}vbaz{>>@=be}yC@:D5bazzKu+A&!}{?ba}y>>@=be}wxBh[t`u~vJvr!%a!a()a,a0a4RoC=]o;Ju(!%RoGRhdwjh`=]oAg>w#Ro?g5vuRo=NvdRl|Ku]C.!&;RoEJvB!%RoORoMBx'h[v+_?w~h`}~5?w~hd~!xKh]oiptu-utv.vp!#%&a30a@a'a+(a/aOp(o~p!RoDJu(!%RoHRhewjha=]oBNvdRl}g>w#Ro@g5vuRo>c[#X']ox7gL#TzuwjirRipcon;>z=h-MSh.Mwqczx'a7vj&!>Re4@=ResJt__NuPRi*NuPRi)j]uNr|~FRfzKrJ>_+@Wfy@Wf]2WocKrJRn1~?rOc:Z&Rn2=w=Rh=g3w*wwgGRgGcW(X#;Sg}M2Gzk@Jv`!&awRl=wsfGIz`dKZ*T'Y-:RhR7RhQg5u-p`j6v(us5d,#Y+~Awkia?RicOuNBwkibba}Ld6p~tyu_vbAa'a+!a/'a3aEa8a!>Sh,ebJv{!&Sh@ebSaReb9;SgwebNuPRi(NvdRl)NuPRi'hHu^(!a.3wkhZba~(x,h^u(A!&(SoCMRhb5Bz=h[eb?w~hb~6x,h_u(A!&(SoDMRhc5Bz=h]eb?w~hc~6e)aA1T#T,^^^c-bMb&blcPaP(a/!0!bA=b5c@a(!bfbrc#2afwmhARnjwchORnp2Wlf3DtsNvdRl-2@wpa<]m0bx(#:awRk2@Jw3!%RfhwpfgRlnKQB%!(G{V@G|'NuuRl6d='T+Y#VyUgw*wgj@g-u0Rj@Lu+wT&)ZtUauq]~GrGci&U#F|39:rELrNvj!.%*RhCwunfw~nf~:9;Ri]>wtnhg;wHRnhx3hDs@v~!/+'@Wfr@9RkSNu&Rlo=@<5GzoKs0@_+@Wl+@awRkmJuh!-3d(}pY#qWJvj!%Rm(:Jw3!%Rm,Rm*de&!1U-U#`)Re;@G|.@9Ri82@wjfvRlq=@<5GzpLvOvr!).&2RlF8Rf`C=x!eE{.Jw3_g2QRlkhLrpWlPde(!#U{s,UXa*Ta'[y'g:v>ReS;x0PZ&RnlRnn~HrKJw1}f!=x!eB|2w]aP(#Xa&a*Ta.Ua2a7=]iOd'#Y&Ro&WnWg;u.RiDg6vjRiBNvdRlzhNvj]nYJuW_2Wm3x)kFze{9d])!a.!,Y01!#&aC!a3RndC=ox~BrC@2b^{pg,rlse7x'ksuq!%Rm.E{xidw(wBRmGx9o+)X#wwo-So-}69:Rl4@xSf@a#XZ'X)X,Ta(/ARl8b[xc>RfY:RlI:RfQwlg.ARl:9;Rlwdn'#^XafaQa1X1TaHTa)@b[{zcZ#X'7RkwWg@Ou4ARn&x)kG#{,g7u/RkGdH'U#Y*Vz'Wm&CARm|bx#(A]gUbUzJj9Q~=d,#Y(56H}l978H{U7d,0#U*2>ABb_xZ978BbU{e~AJQ{g!978BbU{hxMh?ad{oUYZ.x1h?{l!#:2>@=be}F?JvS!&BG{d7BG}(Bde#`a1X,Ya@!a'P~=wxf@2bZ}I56B2@@=aybb}08@55B9;5bb}Rfg=ayb^}&OuNBKuLA!)a!P~=x#fD{f2@>==23ExY5@Dah89b^~689Jv)!~2b[~1Lv'w(%*!a#bX|aPrmawRe]keu7uhv-q6rxu,q`xTo]/a5aU!bNaDXbi!b-!ao!bRhG<7@C5vIbs)#?C2F|9jPv0w.vISh-MKvUaz(.!9ABbb|[5;5unwfh;9:4E|YjQsBt|vjx'hYq3!(?C2F|J:2kJv~vYrquJu3x4ib#T)2@SmZM?C2F|Bj:rmu9@xPhI(a*a#U#`a3-5Abb|L~@:RhK9:4E|0@52B5G|#C::aY?C2F|-:2!a)-g>>0<=9}function g(e){return(e|m)-p.LOWER_A>>>0<=5}function _(e){return(e|m)-p.LOWER_A>>>0<=25}function v(e){return e===p.EQUALS||_(e)||h(e)}var y;(function(e){e[e.EntityStart=0]=`EntityStart`,e[e.NumericStart=1]=`NumericStart`,e[e.NumericDecimal=2]=`NumericDecimal`,e[e.NumericHex=3]=`NumericHex`,e[e.NamedEntity=4]=`NamedEntity`})(y||={});var b;(function(e){e[e.Legacy=0]=`Legacy`,e[e.Strict=1]=`Strict`,e[e.Attribute=2]=`Attribute`})(b||={});var x=class{decodeTree;emitCodePoint;errors;state=y.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=b.Strict;runConsumed=0;constructor(e,t,n){this.decodeTree=e,this.emitCodePoint=t,this.errors=n}startEntity(e){this.decodeMode=e,this.state=y.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(e,t){switch(this.state){case y.EntityStart:return e.charCodeAt(t)===p.NUM?(this.state=y.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1)):(this.state=y.NamedEntity,this.stateNamedEntity(e,t));case y.NumericStart:return this.stateNumericStart(e,t);case y.NumericDecimal:return this.stateNumericDecimal(e,t);case y.NumericHex:return this.stateNumericHex(e,t);default:return this.stateNamedEntity(e,t)}}stateNumericStart(e,t){return t>=e.length?-1:(e.charCodeAt(t)|m)===p.LOWER_X?(this.state=y.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1)):(this.state=y.NumericDecimal,this.stateNumericDecimal(e,t))}stateNumericHex(e,t){let n=e.length,{result:r}=this,{consumed:i}=this;for(;t>>0>9)return this.result=r,this.consumed=i,this.emitNumericEntity(n+p.ZERO,2);r=r*10+n,i+=1,t+=1}return this.result=r,this.consumed=i,-1}emitNumericEntity(e,t){if(this.consumed<=t)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(e===p.SEMI)this.consumed+=1;else if(this.decodeMode===b.Strict)return 0;return this.emitCodePoint((this.decodeTree===d?s:o)(this.result),this.consumed),this.errors&&(e!==p.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}flushAndEmitLegacyOrReject(e,t,n,r){return this.consumed=e,this.excess=t,this.result===0||this.decodeMode===b.Attribute&&(r===0||t>1||v(n))?0:this.emitNotTerminatedNamedEntity()}stateNamedEntity(e,t){let{decodeTree:n}=this,r=e.length,i=this.decodeMode===b.Strict,{treeIndex:a}=this,{excess:o}=this,{consumed:s}=this,c=n[a];for(;t>7;if(u===0){if(i!==l)return this.flushAndEmitLegacyOrReject(s,o,i,0);a+=1}else{let e=i-l;if(e>>>0>=u)return this.flushAndEmitLegacyOrReject(s,o,i,0);let t=n[a+1+e];if(t===0)return this.flushAndEmitLegacyOrReject(s,o,i,0);a=a+u+t&65535}if(c=n[a],t+=1,o+=1,t>=r)break}if(t>=r)break;if((c&(f.VALUE_LENGTH|f.FLAG13))===f.FLAG13){let i=(c&f.BRANCH_LENGTH)>>7,{runConsumed:l}=this;if(l===0){let n=e.charCodeAt(t);if(n!==(c&f.JUMP_TABLE))return this.flushAndEmitLegacyOrReject(s,o,n,0);t+=1,o+=1,l=1}for(;l=r)return this.treeIndex=a,this.excess=o,this.consumed=s,this.runConsumed=l,-1;let i=l-1,c=n[a+1+(i>>1)]>>((i&1)<<3)&255,u=e.charCodeAt(t);if(u!==c)return this.runConsumed=0,this.flushAndEmitLegacyOrReject(s,o,u,0);t+=1,o+=1,l+=1}this.runConsumed=0,a+=1+(i>>1),c=n[a];continue}let l=c>>>14,u=e.charCodeAt(t);if(l!==0){if(!i&&(c&f.FLAG13)===0&&(this.result=a,s+=o-1,o=1),u===p.SEMI)return this.emitNamedEntityData(a,l,s+o);if(l===1)return this.flushAndEmitLegacyOrReject(s,o,u,l)}let d=S(n,c,a+(l||1),u);if(d<0)return this.flushAndEmitLegacyOrReject(s,o,u,l);a=d,c=n[a],t+=1,o+=1}return!i&&c>>>14&&(c&f.FLAG13)===0&&(this.result=a,s+=o-1,o=1),this.treeIndex=a,this.excess=o,this.consumed=s,-1}emitNotTerminatedNamedEntity(){let{result:e,decodeTree:t}=this,n=t[e]>>>14;return this.emitNamedEntityData(e,n,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,t,n){let{decodeTree:r}=this;return this.emitCodePoint(t===1?r[e]&f.VALUE_MASK:r[e+1],n),t===3&&this.emitCodePoint(r[e+2],n),n}end(){switch(this.state){case y.NamedEntity:return this.result!==0&&(this.decodeMode!==b.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case y.NumericDecimal:return this.emitNumericEntity(0,2);case y.NumericHex:return this.emitNumericEntity(0,3);case y.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;default:return 0}}};function S(e,t,n,r){let i=(t&f.BRANCH_LENGTH)>>7,a=t&f.JUMP_TABLE;if(a){if(i===0)return r===a?n:-1;let t=r-a;if(t>>>0>=i)return-1;let o=e[n+t];return o===0?-1:n+i+o-1&65535}if(i===0)return-1;let o=i+1>>1,s=n+o+i;for(let t=0;t>1)]>>((t&1)<<3)&255;if(i===r)return s+e[n+o+t]&65535;if(i>r)return-1}return-1}function C(e){return e===34?`"`:e===38?`&`:e===39?`'`:e===60?`<`:e===62?`>`:` `}function w(e,t){if(e.lastIndex=0,!e.test(t))return t;let n=``,r=0;do{let i=e.lastIndex-1;r!==i&&(n+=t.substring(r,i));let a=t.charCodeAt(i);n+=C(a),r=i+1}while(e.test(t));return n+t.substring(r)}var ee=/[&<>\u{A0}]/gu;function te(e){return w(ee,e)}function T(e){return te(e)}function ne(e){return e.replace(/\s+/g,` `).trim()}function re(e,t){let n=new Map,r=new Set;for(let{id:e,text:i}of t)n.has(e)?r.add(e):n.set(e,i);return e.map(e=>{if(e.locked!==null)return e;if(r.has(e.id))return{...e,locked:`MARKER_CLASH`};let t=n.get(e.id);return t===void 0||ne(t)!==e.sourceText?{...e,locked:`SCRIPT_GENERATED`}:e})}var E=class extends Error{code;params;constructor(e,t,n){super(n),this.code=e,this.params=t}};function D(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i=n.map(t=>{let n=r.get(t.id);if(!n)throw new E(`unknownId`,{id:t.id},`unknown block id: ${t.id}`);if(n.locked!==null)throw new E(`locked`,{id:n.id,reason:n.locked},`locked block: id=${n.id} (${n.locked})`);if(e.slice(n.innerStart,n.innerEnd)!==n.sourceInner)throw new E(`stale`,{id:n.id},`stale block: id=${n.id}`);return{block:n,value:n.rcdata?T(t.newInnerHtml):t.newInnerHtml}}),a=new Set;for(let{block:e}of i){if(a.has(e.id))throw new E(`duplicate`,{id:e.id},`duplicate patch: id=${e.id}`);a.add(e.id)}let o=[...i].sort((e,t)=>t.block.innerStart-e.block.innerStart),s=e;for(let{block:e,value:t}of o)s=s.slice(0,e.innerStart)+t+s.slice(e.innerEnd);return s}var ie=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),O;(function(e){e[e.EOF=-1]=`EOF`,e[e.NULL=0]=`NULL`,e[e.TABULATION=9]=`TABULATION`,e[e.CARRIAGE_RETURN=13]=`CARRIAGE_RETURN`,e[e.LINE_FEED=10]=`LINE_FEED`,e[e.FORM_FEED=12]=`FORM_FEED`,e[e.SPACE=32]=`SPACE`,e[e.EXCLAMATION_MARK=33]=`EXCLAMATION_MARK`,e[e.QUOTATION_MARK=34]=`QUOTATION_MARK`,e[e.AMPERSAND=38]=`AMPERSAND`,e[e.APOSTROPHE=39]=`APOSTROPHE`,e[e.HYPHEN_MINUS=45]=`HYPHEN_MINUS`,e[e.SOLIDUS=47]=`SOLIDUS`,e[e.DIGIT_0=48]=`DIGIT_0`,e[e.DIGIT_9=57]=`DIGIT_9`,e[e.SEMICOLON=59]=`SEMICOLON`,e[e.LESS_THAN_SIGN=60]=`LESS_THAN_SIGN`,e[e.EQUALS_SIGN=61]=`EQUALS_SIGN`,e[e.GREATER_THAN_SIGN=62]=`GREATER_THAN_SIGN`,e[e.QUESTION_MARK=63]=`QUESTION_MARK`,e[e.LATIN_CAPITAL_A=65]=`LATIN_CAPITAL_A`,e[e.LATIN_CAPITAL_Z=90]=`LATIN_CAPITAL_Z`,e[e.RIGHT_SQUARE_BRACKET=93]=`RIGHT_SQUARE_BRACKET`,e[e.GRAVE_ACCENT=96]=`GRAVE_ACCENT`,e[e.LATIN_SMALL_A=97]=`LATIN_SMALL_A`,e[e.LATIN_SMALL_Z=122]=`LATIN_SMALL_Z`})(O||={});var k={DASH_DASH:`--`,CDATA_START:`[CDATA[`,DOCTYPE:`doctype`,SCRIPT:`script`,PUBLIC:`public`,SYSTEM:`system`};function A(e){return e>=55296&&e<=57343}function ae(e){return e>=56320&&e<=57343}function oe(e,t){return(e-55296)*1024+9216+t}function se(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function ce(e){return e>=64976&&e<=65007||ie.has(e)}var j;(function(e){e.controlCharacterInInputStream=`control-character-in-input-stream`,e.noncharacterInInputStream=`noncharacter-in-input-stream`,e.surrogateInInputStream=`surrogate-in-input-stream`,e.nonVoidHtmlElementStartTagWithTrailingSolidus=`non-void-html-element-start-tag-with-trailing-solidus`,e.endTagWithAttributes=`end-tag-with-attributes`,e.endTagWithTrailingSolidus=`end-tag-with-trailing-solidus`,e.unexpectedSolidusInTag=`unexpected-solidus-in-tag`,e.unexpectedNullCharacter=`unexpected-null-character`,e.unexpectedQuestionMarkInsteadOfTagName=`unexpected-question-mark-instead-of-tag-name`,e.invalidFirstCharacterOfTagName=`invalid-first-character-of-tag-name`,e.unexpectedEqualsSignBeforeAttributeName=`unexpected-equals-sign-before-attribute-name`,e.missingEndTagName=`missing-end-tag-name`,e.unexpectedCharacterInAttributeName=`unexpected-character-in-attribute-name`,e.unknownNamedCharacterReference=`unknown-named-character-reference`,e.missingSemicolonAfterCharacterReference=`missing-semicolon-after-character-reference`,e.unexpectedCharacterAfterDoctypeSystemIdentifier=`unexpected-character-after-doctype-system-identifier`,e.unexpectedCharacterInUnquotedAttributeValue=`unexpected-character-in-unquoted-attribute-value`,e.eofBeforeTagName=`eof-before-tag-name`,e.eofInTag=`eof-in-tag`,e.missingAttributeValue=`missing-attribute-value`,e.missingWhitespaceBetweenAttributes=`missing-whitespace-between-attributes`,e.missingWhitespaceAfterDoctypePublicKeyword=`missing-whitespace-after-doctype-public-keyword`,e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers=`missing-whitespace-between-doctype-public-and-system-identifiers`,e.missingWhitespaceAfterDoctypeSystemKeyword=`missing-whitespace-after-doctype-system-keyword`,e.missingQuoteBeforeDoctypePublicIdentifier=`missing-quote-before-doctype-public-identifier`,e.missingQuoteBeforeDoctypeSystemIdentifier=`missing-quote-before-doctype-system-identifier`,e.missingDoctypePublicIdentifier=`missing-doctype-public-identifier`,e.missingDoctypeSystemIdentifier=`missing-doctype-system-identifier`,e.abruptDoctypePublicIdentifier=`abrupt-doctype-public-identifier`,e.abruptDoctypeSystemIdentifier=`abrupt-doctype-system-identifier`,e.cdataInHtmlContent=`cdata-in-html-content`,e.incorrectlyOpenedComment=`incorrectly-opened-comment`,e.eofInScriptHtmlCommentLikeText=`eof-in-script-html-comment-like-text`,e.eofInDoctype=`eof-in-doctype`,e.nestedComment=`nested-comment`,e.abruptClosingOfEmptyComment=`abrupt-closing-of-empty-comment`,e.eofInComment=`eof-in-comment`,e.incorrectlyClosedComment=`incorrectly-closed-comment`,e.eofInCdata=`eof-in-cdata`,e.absenceOfDigitsInNumericCharacterReference=`absence-of-digits-in-numeric-character-reference`,e.nullCharacterReference=`null-character-reference`,e.surrogateCharacterReference=`surrogate-character-reference`,e.characterReferenceOutsideUnicodeRange=`character-reference-outside-unicode-range`,e.controlCharacterReference=`control-character-reference`,e.noncharacterCharacterReference=`noncharacter-character-reference`,e.missingWhitespaceBeforeDoctypeName=`missing-whitespace-before-doctype-name`,e.missingDoctypeName=`missing-doctype-name`,e.invalidCharacterSequenceAfterDoctypeName=`invalid-character-sequence-after-doctype-name`,e.duplicateAttribute=`duplicate-attribute`,e.nonConformingDoctype=`non-conforming-doctype`,e.missingDoctype=`missing-doctype`,e.misplacedDoctype=`misplaced-doctype`,e.endTagWithoutMatchingOpenElement=`end-tag-without-matching-open-element`,e.closingOfElementWithOpenChildElements=`closing-of-element-with-open-child-elements`,e.disallowedContentInNoscriptInHead=`disallowed-content-in-noscript-in-head`,e.openElementsLeftAfterEof=`open-elements-left-after-eof`,e.abandonedHeadElementChild=`abandoned-head-element-child`,e.misplacedStartTagForHeadElement=`misplaced-start-tag-for-head-element`,e.nestedNoscriptInHead=`nested-noscript-in-head`,e.eofInElementThatCanContainOnlyText=`eof-in-element-that-can-contain-only-text`})(j||={});var le=65536,ue=class{constructor(e){this.handler=e,this.html=``,this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=!1,this.lastChunkWritten=!1,this.endOfChunkHit=!1,this.bufferWaterline=le,this.isEol=!1,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1}get col(){return this.pos-this.lineStartPos+Number(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(e,t){let{line:n,col:r,offset:i}=this,a=r+t,o=i+t;return{code:e,startLine:n,endLine:n,startCol:a,endCol:a,startOffset:o,endOffset:o}}_err(e){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(e,0)))}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos}_processSurrogate(e){if(this.pos!==this.html.length-1){let t=this.html.charCodeAt(this.pos+1);if(ae(t))return this.pos++,this._addGap(),oe(e,t)}else if(!this.lastChunkWritten)return this.endOfChunkHit=!0,O.EOF;return this._err(j.surrogateInInputStream),e}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0)}write(e,t){this.html.length>0?this.html+=e:this.html=e,this.endOfChunkHit=!1,this.lastChunkWritten=t}insertHtmlAtCurrentPos(e){this.html=this.html.substring(0,this.pos+1)+e+this.html.substring(this.pos+1),this.endOfChunkHit=!1}startsWith(e,t){if(this.pos+e.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,!1;if(t)return this.html.startsWith(e,this.pos);for(let t=0;t=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,O.EOF;let n=this.html.charCodeAt(t);return n===O.CARRIAGE_RETURN?O.LINE_FEED:n}advance(){if(this.pos++,this.isEol&&(this.isEol=!1,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,O.EOF;let e=this.html.charCodeAt(this.pos);return e===O.CARRIAGE_RETURN?(this.isEol=!0,this.skipNextNewLine=!0,O.LINE_FEED):e===O.LINE_FEED&&(this.isEol=!0,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=!1,this._addGap(),this.advance()):(this.skipNextNewLine=!1,A(e)&&(e=this._processSurrogate(e)),this.handler.onParseError===null||e>31&&e<127||e===O.LINE_FEED||e===O.CARRIAGE_RETURN||e>159&&e<64976||this._checkForProblematicCharacters(e),e)}_checkForProblematicCharacters(e){se(e)?this._err(j.controlCharacterInInputStream):ce(e)&&this._err(j.noncharacterInInputStream)}retreat(e){for(this.pos-=e;this.pos=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null}var N;(function(e){e.HTML=`http://www.w3.org/1999/xhtml`,e.MATHML=`http://www.w3.org/1998/Math/MathML`,e.SVG=`http://www.w3.org/2000/svg`,e.XLINK=`http://www.w3.org/1999/xlink`,e.XML=`http://www.w3.org/XML/1998/namespace`,e.XMLNS=`http://www.w3.org/2000/xmlns/`})(N||={});var P;(function(e){e.TYPE=`type`,e.ACTION=`action`,e.ENCODING=`encoding`,e.PROMPT=`prompt`,e.NAME=`name`,e.COLOR=`color`,e.FACE=`face`,e.SIZE=`size`})(P||={});var F;(function(e){e.NO_QUIRKS=`no-quirks`,e.QUIRKS=`quirks`,e.LIMITED_QUIRKS=`limited-quirks`})(F||={});var I;(function(e){e.A=`a`,e.ADDRESS=`address`,e.ANNOTATION_XML=`annotation-xml`,e.APPLET=`applet`,e.AREA=`area`,e.ARTICLE=`article`,e.ASIDE=`aside`,e.B=`b`,e.BASE=`base`,e.BASEFONT=`basefont`,e.BGSOUND=`bgsound`,e.BIG=`big`,e.BLOCKQUOTE=`blockquote`,e.BODY=`body`,e.BR=`br`,e.BUTTON=`button`,e.CAPTION=`caption`,e.CENTER=`center`,e.CODE=`code`,e.COL=`col`,e.COLGROUP=`colgroup`,e.DD=`dd`,e.DESC=`desc`,e.DETAILS=`details`,e.DIALOG=`dialog`,e.DIR=`dir`,e.DIV=`div`,e.DL=`dl`,e.DT=`dt`,e.EM=`em`,e.EMBED=`embed`,e.FIELDSET=`fieldset`,e.FIGCAPTION=`figcaption`,e.FIGURE=`figure`,e.FONT=`font`,e.FOOTER=`footer`,e.FOREIGN_OBJECT=`foreignObject`,e.FORM=`form`,e.FRAME=`frame`,e.FRAMESET=`frameset`,e.H1=`h1`,e.H2=`h2`,e.H3=`h3`,e.H4=`h4`,e.H5=`h5`,e.H6=`h6`,e.HEAD=`head`,e.HEADER=`header`,e.HGROUP=`hgroup`,e.HR=`hr`,e.HTML=`html`,e.I=`i`,e.IMG=`img`,e.IMAGE=`image`,e.INPUT=`input`,e.IFRAME=`iframe`,e.KEYGEN=`keygen`,e.LABEL=`label`,e.LI=`li`,e.LINK=`link`,e.LISTING=`listing`,e.MAIN=`main`,e.MALIGNMARK=`malignmark`,e.MARQUEE=`marquee`,e.MATH=`math`,e.MENU=`menu`,e.META=`meta`,e.MGLYPH=`mglyph`,e.MI=`mi`,e.MO=`mo`,e.MN=`mn`,e.MS=`ms`,e.MTEXT=`mtext`,e.NAV=`nav`,e.NOBR=`nobr`,e.NOFRAMES=`noframes`,e.NOEMBED=`noembed`,e.NOSCRIPT=`noscript`,e.OBJECT=`object`,e.OL=`ol`,e.OPTGROUP=`optgroup`,e.OPTION=`option`,e.P=`p`,e.PARAM=`param`,e.PLAINTEXT=`plaintext`,e.PRE=`pre`,e.RB=`rb`,e.RP=`rp`,e.RT=`rt`,e.RTC=`rtc`,e.RUBY=`ruby`,e.S=`s`,e.SCRIPT=`script`,e.SEARCH=`search`,e.SECTION=`section`,e.SELECT=`select`,e.SOURCE=`source`,e.SMALL=`small`,e.SPAN=`span`,e.STRIKE=`strike`,e.STRONG=`strong`,e.STYLE=`style`,e.SUB=`sub`,e.SUMMARY=`summary`,e.SUP=`sup`,e.TABLE=`table`,e.TBODY=`tbody`,e.TEMPLATE=`template`,e.TEXTAREA=`textarea`,e.TFOOT=`tfoot`,e.TD=`td`,e.TH=`th`,e.THEAD=`thead`,e.TITLE=`title`,e.TR=`tr`,e.TRACK=`track`,e.TT=`tt`,e.U=`u`,e.UL=`ul`,e.SVG=`svg`,e.VAR=`var`,e.WBR=`wbr`,e.XMP=`xmp`})(I||={});var L;(function(e){e[e.UNKNOWN=0]=`UNKNOWN`,e[e.A=1]=`A`,e[e.ADDRESS=2]=`ADDRESS`,e[e.ANNOTATION_XML=3]=`ANNOTATION_XML`,e[e.APPLET=4]=`APPLET`,e[e.AREA=5]=`AREA`,e[e.ARTICLE=6]=`ARTICLE`,e[e.ASIDE=7]=`ASIDE`,e[e.B=8]=`B`,e[e.BASE=9]=`BASE`,e[e.BASEFONT=10]=`BASEFONT`,e[e.BGSOUND=11]=`BGSOUND`,e[e.BIG=12]=`BIG`,e[e.BLOCKQUOTE=13]=`BLOCKQUOTE`,e[e.BODY=14]=`BODY`,e[e.BR=15]=`BR`,e[e.BUTTON=16]=`BUTTON`,e[e.CAPTION=17]=`CAPTION`,e[e.CENTER=18]=`CENTER`,e[e.CODE=19]=`CODE`,e[e.COL=20]=`COL`,e[e.COLGROUP=21]=`COLGROUP`,e[e.DD=22]=`DD`,e[e.DESC=23]=`DESC`,e[e.DETAILS=24]=`DETAILS`,e[e.DIALOG=25]=`DIALOG`,e[e.DIR=26]=`DIR`,e[e.DIV=27]=`DIV`,e[e.DL=28]=`DL`,e[e.DT=29]=`DT`,e[e.EM=30]=`EM`,e[e.EMBED=31]=`EMBED`,e[e.FIELDSET=32]=`FIELDSET`,e[e.FIGCAPTION=33]=`FIGCAPTION`,e[e.FIGURE=34]=`FIGURE`,e[e.FONT=35]=`FONT`,e[e.FOOTER=36]=`FOOTER`,e[e.FOREIGN_OBJECT=37]=`FOREIGN_OBJECT`,e[e.FORM=38]=`FORM`,e[e.FRAME=39]=`FRAME`,e[e.FRAMESET=40]=`FRAMESET`,e[e.H1=41]=`H1`,e[e.H2=42]=`H2`,e[e.H3=43]=`H3`,e[e.H4=44]=`H4`,e[e.H5=45]=`H5`,e[e.H6=46]=`H6`,e[e.HEAD=47]=`HEAD`,e[e.HEADER=48]=`HEADER`,e[e.HGROUP=49]=`HGROUP`,e[e.HR=50]=`HR`,e[e.HTML=51]=`HTML`,e[e.I=52]=`I`,e[e.IMG=53]=`IMG`,e[e.IMAGE=54]=`IMAGE`,e[e.INPUT=55]=`INPUT`,e[e.IFRAME=56]=`IFRAME`,e[e.KEYGEN=57]=`KEYGEN`,e[e.LABEL=58]=`LABEL`,e[e.LI=59]=`LI`,e[e.LINK=60]=`LINK`,e[e.LISTING=61]=`LISTING`,e[e.MAIN=62]=`MAIN`,e[e.MALIGNMARK=63]=`MALIGNMARK`,e[e.MARQUEE=64]=`MARQUEE`,e[e.MATH=65]=`MATH`,e[e.MENU=66]=`MENU`,e[e.META=67]=`META`,e[e.MGLYPH=68]=`MGLYPH`,e[e.MI=69]=`MI`,e[e.MO=70]=`MO`,e[e.MN=71]=`MN`,e[e.MS=72]=`MS`,e[e.MTEXT=73]=`MTEXT`,e[e.NAV=74]=`NAV`,e[e.NOBR=75]=`NOBR`,e[e.NOFRAMES=76]=`NOFRAMES`,e[e.NOEMBED=77]=`NOEMBED`,e[e.NOSCRIPT=78]=`NOSCRIPT`,e[e.OBJECT=79]=`OBJECT`,e[e.OL=80]=`OL`,e[e.OPTGROUP=81]=`OPTGROUP`,e[e.OPTION=82]=`OPTION`,e[e.P=83]=`P`,e[e.PARAM=84]=`PARAM`,e[e.PLAINTEXT=85]=`PLAINTEXT`,e[e.PRE=86]=`PRE`,e[e.RB=87]=`RB`,e[e.RP=88]=`RP`,e[e.RT=89]=`RT`,e[e.RTC=90]=`RTC`,e[e.RUBY=91]=`RUBY`,e[e.S=92]=`S`,e[e.SCRIPT=93]=`SCRIPT`,e[e.SEARCH=94]=`SEARCH`,e[e.SECTION=95]=`SECTION`,e[e.SELECT=96]=`SELECT`,e[e.SOURCE=97]=`SOURCE`,e[e.SMALL=98]=`SMALL`,e[e.SPAN=99]=`SPAN`,e[e.STRIKE=100]=`STRIKE`,e[e.STRONG=101]=`STRONG`,e[e.STYLE=102]=`STYLE`,e[e.SUB=103]=`SUB`,e[e.SUMMARY=104]=`SUMMARY`,e[e.SUP=105]=`SUP`,e[e.TABLE=106]=`TABLE`,e[e.TBODY=107]=`TBODY`,e[e.TEMPLATE=108]=`TEMPLATE`,e[e.TEXTAREA=109]=`TEXTAREA`,e[e.TFOOT=110]=`TFOOT`,e[e.TD=111]=`TD`,e[e.TH=112]=`TH`,e[e.THEAD=113]=`THEAD`,e[e.TITLE=114]=`TITLE`,e[e.TR=115]=`TR`,e[e.TRACK=116]=`TRACK`,e[e.TT=117]=`TT`,e[e.U=118]=`U`,e[e.UL=119]=`UL`,e[e.SVG=120]=`SVG`,e[e.VAR=121]=`VAR`,e[e.WBR=122]=`WBR`,e[e.XMP=123]=`XMP`})(L||={});var fe=new Map([[I.A,L.A],[I.ADDRESS,L.ADDRESS],[I.ANNOTATION_XML,L.ANNOTATION_XML],[I.APPLET,L.APPLET],[I.AREA,L.AREA],[I.ARTICLE,L.ARTICLE],[I.ASIDE,L.ASIDE],[I.B,L.B],[I.BASE,L.BASE],[I.BASEFONT,L.BASEFONT],[I.BGSOUND,L.BGSOUND],[I.BIG,L.BIG],[I.BLOCKQUOTE,L.BLOCKQUOTE],[I.BODY,L.BODY],[I.BR,L.BR],[I.BUTTON,L.BUTTON],[I.CAPTION,L.CAPTION],[I.CENTER,L.CENTER],[I.CODE,L.CODE],[I.COL,L.COL],[I.COLGROUP,L.COLGROUP],[I.DD,L.DD],[I.DESC,L.DESC],[I.DETAILS,L.DETAILS],[I.DIALOG,L.DIALOG],[I.DIR,L.DIR],[I.DIV,L.DIV],[I.DL,L.DL],[I.DT,L.DT],[I.EM,L.EM],[I.EMBED,L.EMBED],[I.FIELDSET,L.FIELDSET],[I.FIGCAPTION,L.FIGCAPTION],[I.FIGURE,L.FIGURE],[I.FONT,L.FONT],[I.FOOTER,L.FOOTER],[I.FOREIGN_OBJECT,L.FOREIGN_OBJECT],[I.FORM,L.FORM],[I.FRAME,L.FRAME],[I.FRAMESET,L.FRAMESET],[I.H1,L.H1],[I.H2,L.H2],[I.H3,L.H3],[I.H4,L.H4],[I.H5,L.H5],[I.H6,L.H6],[I.HEAD,L.HEAD],[I.HEADER,L.HEADER],[I.HGROUP,L.HGROUP],[I.HR,L.HR],[I.HTML,L.HTML],[I.I,L.I],[I.IMG,L.IMG],[I.IMAGE,L.IMAGE],[I.INPUT,L.INPUT],[I.IFRAME,L.IFRAME],[I.KEYGEN,L.KEYGEN],[I.LABEL,L.LABEL],[I.LI,L.LI],[I.LINK,L.LINK],[I.LISTING,L.LISTING],[I.MAIN,L.MAIN],[I.MALIGNMARK,L.MALIGNMARK],[I.MARQUEE,L.MARQUEE],[I.MATH,L.MATH],[I.MENU,L.MENU],[I.META,L.META],[I.MGLYPH,L.MGLYPH],[I.MI,L.MI],[I.MO,L.MO],[I.MN,L.MN],[I.MS,L.MS],[I.MTEXT,L.MTEXT],[I.NAV,L.NAV],[I.NOBR,L.NOBR],[I.NOFRAMES,L.NOFRAMES],[I.NOEMBED,L.NOEMBED],[I.NOSCRIPT,L.NOSCRIPT],[I.OBJECT,L.OBJECT],[I.OL,L.OL],[I.OPTGROUP,L.OPTGROUP],[I.OPTION,L.OPTION],[I.P,L.P],[I.PARAM,L.PARAM],[I.PLAINTEXT,L.PLAINTEXT],[I.PRE,L.PRE],[I.RB,L.RB],[I.RP,L.RP],[I.RT,L.RT],[I.RTC,L.RTC],[I.RUBY,L.RUBY],[I.S,L.S],[I.SCRIPT,L.SCRIPT],[I.SEARCH,L.SEARCH],[I.SECTION,L.SECTION],[I.SELECT,L.SELECT],[I.SOURCE,L.SOURCE],[I.SMALL,L.SMALL],[I.SPAN,L.SPAN],[I.STRIKE,L.STRIKE],[I.STRONG,L.STRONG],[I.STYLE,L.STYLE],[I.SUB,L.SUB],[I.SUMMARY,L.SUMMARY],[I.SUP,L.SUP],[I.TABLE,L.TABLE],[I.TBODY,L.TBODY],[I.TEMPLATE,L.TEMPLATE],[I.TEXTAREA,L.TEXTAREA],[I.TFOOT,L.TFOOT],[I.TD,L.TD],[I.TH,L.TH],[I.THEAD,L.THEAD],[I.TITLE,L.TITLE],[I.TR,L.TR],[I.TRACK,L.TRACK],[I.TT,L.TT],[I.U,L.U],[I.UL,L.UL],[I.SVG,L.SVG],[I.VAR,L.VAR],[I.WBR,L.WBR],[I.XMP,L.XMP]]);function pe(e){return fe.get(e)??L.UNKNOWN}var R=L,me={[N.HTML]:new Set([R.ADDRESS,R.APPLET,R.AREA,R.ARTICLE,R.ASIDE,R.BASE,R.BASEFONT,R.BGSOUND,R.BLOCKQUOTE,R.BODY,R.BR,R.BUTTON,R.CAPTION,R.CENTER,R.COL,R.COLGROUP,R.DD,R.DETAILS,R.DIR,R.DIV,R.DL,R.DT,R.EMBED,R.FIELDSET,R.FIGCAPTION,R.FIGURE,R.FOOTER,R.FORM,R.FRAME,R.FRAMESET,R.H1,R.H2,R.H3,R.H4,R.H5,R.H6,R.HEAD,R.HEADER,R.HGROUP,R.HR,R.HTML,R.IFRAME,R.IMG,R.INPUT,R.LI,R.LINK,R.LISTING,R.MAIN,R.MARQUEE,R.MENU,R.META,R.NAV,R.NOEMBED,R.NOFRAMES,R.NOSCRIPT,R.OBJECT,R.OL,R.P,R.PARAM,R.PLAINTEXT,R.PRE,R.SCRIPT,R.SECTION,R.SELECT,R.SOURCE,R.STYLE,R.SUMMARY,R.TABLE,R.TBODY,R.TD,R.TEMPLATE,R.TEXTAREA,R.TFOOT,R.TH,R.THEAD,R.TITLE,R.TR,R.TRACK,R.UL,R.WBR,R.XMP]),[N.MATHML]:new Set([R.MI,R.MO,R.MN,R.MS,R.MTEXT,R.ANNOTATION_XML]),[N.SVG]:new Set([R.TITLE,R.FOREIGN_OBJECT,R.DESC]),[N.XLINK]:new Set,[N.XML]:new Set,[N.XMLNS]:new Set},he=new Set([R.H1,R.H2,R.H3,R.H4,R.H5,R.H6]);I.STYLE,I.SCRIPT,I.XMP,I.IFRAME,I.NOEMBED,I.NOFRAMES,I.PLAINTEXT;var z;(function(e){e[e.DATA=0]=`DATA`,e[e.RCDATA=1]=`RCDATA`,e[e.RAWTEXT=2]=`RAWTEXT`,e[e.SCRIPT_DATA=3]=`SCRIPT_DATA`,e[e.PLAINTEXT=4]=`PLAINTEXT`,e[e.TAG_OPEN=5]=`TAG_OPEN`,e[e.END_TAG_OPEN=6]=`END_TAG_OPEN`,e[e.TAG_NAME=7]=`TAG_NAME`,e[e.RCDATA_LESS_THAN_SIGN=8]=`RCDATA_LESS_THAN_SIGN`,e[e.RCDATA_END_TAG_OPEN=9]=`RCDATA_END_TAG_OPEN`,e[e.RCDATA_END_TAG_NAME=10]=`RCDATA_END_TAG_NAME`,e[e.RAWTEXT_LESS_THAN_SIGN=11]=`RAWTEXT_LESS_THAN_SIGN`,e[e.RAWTEXT_END_TAG_OPEN=12]=`RAWTEXT_END_TAG_OPEN`,e[e.RAWTEXT_END_TAG_NAME=13]=`RAWTEXT_END_TAG_NAME`,e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]=`SCRIPT_DATA_LESS_THAN_SIGN`,e[e.SCRIPT_DATA_END_TAG_OPEN=15]=`SCRIPT_DATA_END_TAG_OPEN`,e[e.SCRIPT_DATA_END_TAG_NAME=16]=`SCRIPT_DATA_END_TAG_NAME`,e[e.SCRIPT_DATA_ESCAPE_START=17]=`SCRIPT_DATA_ESCAPE_START`,e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]=`SCRIPT_DATA_ESCAPE_START_DASH`,e[e.SCRIPT_DATA_ESCAPED=19]=`SCRIPT_DATA_ESCAPED`,e[e.SCRIPT_DATA_ESCAPED_DASH=20]=`SCRIPT_DATA_ESCAPED_DASH`,e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]=`SCRIPT_DATA_ESCAPED_DASH_DASH`,e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]=`SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN`,e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]=`SCRIPT_DATA_ESCAPED_END_TAG_OPEN`,e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]=`SCRIPT_DATA_ESCAPED_END_TAG_NAME`,e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]=`SCRIPT_DATA_DOUBLE_ESCAPE_START`,e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]=`SCRIPT_DATA_DOUBLE_ESCAPED`,e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]=`SCRIPT_DATA_DOUBLE_ESCAPED_DASH`,e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]=`SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH`,e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]=`SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN`,e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]=`SCRIPT_DATA_DOUBLE_ESCAPE_END`,e[e.BEFORE_ATTRIBUTE_NAME=31]=`BEFORE_ATTRIBUTE_NAME`,e[e.ATTRIBUTE_NAME=32]=`ATTRIBUTE_NAME`,e[e.AFTER_ATTRIBUTE_NAME=33]=`AFTER_ATTRIBUTE_NAME`,e[e.BEFORE_ATTRIBUTE_VALUE=34]=`BEFORE_ATTRIBUTE_VALUE`,e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]=`ATTRIBUTE_VALUE_DOUBLE_QUOTED`,e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]=`ATTRIBUTE_VALUE_SINGLE_QUOTED`,e[e.ATTRIBUTE_VALUE_UNQUOTED=37]=`ATTRIBUTE_VALUE_UNQUOTED`,e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]=`AFTER_ATTRIBUTE_VALUE_QUOTED`,e[e.SELF_CLOSING_START_TAG=39]=`SELF_CLOSING_START_TAG`,e[e.BOGUS_COMMENT=40]=`BOGUS_COMMENT`,e[e.MARKUP_DECLARATION_OPEN=41]=`MARKUP_DECLARATION_OPEN`,e[e.COMMENT_START=42]=`COMMENT_START`,e[e.COMMENT_START_DASH=43]=`COMMENT_START_DASH`,e[e.COMMENT=44]=`COMMENT`,e[e.COMMENT_LESS_THAN_SIGN=45]=`COMMENT_LESS_THAN_SIGN`,e[e.COMMENT_LESS_THAN_SIGN_BANG=46]=`COMMENT_LESS_THAN_SIGN_BANG`,e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]=`COMMENT_LESS_THAN_SIGN_BANG_DASH`,e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]=`COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH`,e[e.COMMENT_END_DASH=49]=`COMMENT_END_DASH`,e[e.COMMENT_END=50]=`COMMENT_END`,e[e.COMMENT_END_BANG=51]=`COMMENT_END_BANG`,e[e.DOCTYPE=52]=`DOCTYPE`,e[e.BEFORE_DOCTYPE_NAME=53]=`BEFORE_DOCTYPE_NAME`,e[e.DOCTYPE_NAME=54]=`DOCTYPE_NAME`,e[e.AFTER_DOCTYPE_NAME=55]=`AFTER_DOCTYPE_NAME`,e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]=`AFTER_DOCTYPE_PUBLIC_KEYWORD`,e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]=`BEFORE_DOCTYPE_PUBLIC_IDENTIFIER`,e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]=`DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED`,e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]=`DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED`,e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]=`AFTER_DOCTYPE_PUBLIC_IDENTIFIER`,e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]=`BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS`,e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]=`AFTER_DOCTYPE_SYSTEM_KEYWORD`,e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]=`BEFORE_DOCTYPE_SYSTEM_IDENTIFIER`,e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]=`DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED`,e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]=`DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED`,e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]=`AFTER_DOCTYPE_SYSTEM_IDENTIFIER`,e[e.BOGUS_DOCTYPE=67]=`BOGUS_DOCTYPE`,e[e.CDATA_SECTION=68]=`CDATA_SECTION`,e[e.CDATA_SECTION_BRACKET=69]=`CDATA_SECTION_BRACKET`,e[e.CDATA_SECTION_END=70]=`CDATA_SECTION_END`,e[e.CHARACTER_REFERENCE=71]=`CHARACTER_REFERENCE`,e[e.AMBIGUOUS_AMPERSAND=72]=`AMBIGUOUS_AMPERSAND`})(z||={});var B={DATA:z.DATA,RCDATA:z.RCDATA,RAWTEXT:z.RAWTEXT,SCRIPT_DATA:z.SCRIPT_DATA,PLAINTEXT:z.PLAINTEXT,CDATA_SECTION:z.CDATA_SECTION};function ge(e){return e>=O.DIGIT_0&&e<=O.DIGIT_9}function V(e){return e>=O.LATIN_CAPITAL_A&&e<=O.LATIN_CAPITAL_Z}function _e(e){return e>=O.LATIN_SMALL_A&&e<=O.LATIN_SMALL_Z}function H(e){return _e(e)||V(e)}function ve(e){return H(e)||ge(e)}function ye(e){return e+32}function be(e){return e===O.SPACE||e===O.LINE_FEED||e===O.TABULATION||e===O.FORM_FEED}function xe(e){return be(e)||e===O.SOLIDUS||e===O.GREATER_THAN_SIGN}function Se(e){return e===O.NULL?j.nullCharacterReference:e>1114111?j.characterReferenceOutsideUnicodeRange:A(e)?j.surrogateCharacterReference:ce(e)?j.noncharacterCharacterReference:se(e)||e===O.CARRIAGE_RETURN?j.controlCharacterReference:null}var Ce=class{constructor(e,t){this.options=e,this.handler=t,this.paused=!1,this.inLoop=!1,this.inForeignNode=!1,this.lastStartTagName=``,this.active=!1,this.state=z.DATA,this.returnState=z.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:``,value:``},this.preprocessor=new ue(t),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new x(u,(e,t)=>{this.preprocessor.pos=this.entityStartPos+t-1,this._flushCodePointConsumedAsCharacterReference(e)},t.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(j.missingSemicolonAfterCharacterReference,1)},absenceOfDigitsInNumericCharacterReference:e=>{this._err(j.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+e)},validateNumericCharacterReference:e=>{let t=Se(e);t&&this._err(t,1)}}:void 0)}_err(e,t=0){var n,r;(r=(n=this.handler).onParseError)==null||r.call(n,this.preprocessor.getError(e,t))}getCurrentLocation(e){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-e,startOffset:this.preprocessor.offset-e,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=!0;this.active&&!this.paused;){this.consumedAfterSnapshot=0;let e=this._consume();this._ensureHibernation()||this._callState(e)}this.inLoop=!1}}pause(){this.paused=!0}resume(e){if(!this.paused)throw Error(`Parser was already resumed`);this.paused=!1,!this.inLoop&&(this._runParsingLoop(),this.paused||e?.())}write(e,t,n){this.active=!0,this.preprocessor.write(e,t),this._runParsingLoop(),this.paused||n?.()}insertHtmlAtCurrentPos(e){this.active=!0,this.preprocessor.insertHtmlAtCurrentPos(e),this._runParsingLoop()}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=!1,!0):!1}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(e){this.consumedAfterSnapshot+=e;for(let t=0;t0&&this._err(j.endTagWithAttributes),e.selfClosing&&this._err(j.endTagWithTrailingSolidus),this.handler.onEndTag(e)),this.preprocessor.dropParsedChunk()}emitCurrentComment(e){this.prepareToken(e),this.handler.onComment(e),this.preprocessor.dropParsedChunk()}emitCurrentDoctype(e){this.prepareToken(e),this.handler.onDoctype(e),this.preprocessor.dropParsedChunk()}_emitCurrentCharacterToken(e){if(this.currentCharacterToken){switch(e&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=e.startLine,this.currentCharacterToken.location.endCol=e.startCol,this.currentCharacterToken.location.endOffset=e.startOffset),this.currentCharacterToken.type){case M.CHARACTER:this.handler.onCharacter(this.currentCharacterToken);break;case M.NULL_CHARACTER:this.handler.onNullCharacter(this.currentCharacterToken);break;case M.WHITESPACE_CHARACTER:this.handler.onWhitespaceCharacter(this.currentCharacterToken)}this.currentCharacterToken=null}}_emitEOFToken(){let e=this.getCurrentLocation(0);e&&(e.endLine=e.startLine,e.endCol=e.startCol,e.endOffset=e.startOffset),this._emitCurrentCharacterToken(e),this.handler.onEof({type:M.EOF,location:e}),this.active=!1}_appendCharToCurrentCharacterToken(e,t){if(this.currentCharacterToken){if(this.currentCharacterToken.type===e){this.currentCharacterToken.chars+=t;return}this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk()}this._createCharacterToken(e,t)}_emitCodePoint(e){let t=be(e)?M.WHITESPACE_CHARACTER:e===O.NULL?M.NULL_CHARACTER:M.CHARACTER;this._appendCharToCurrentCharacterToken(t,e<65536?String.fromCharCode(e):String.fromCodePoint(e))}_emitChars(e){this._appendCharToCurrentCharacterToken(M.CHARACTER,e)}_startCharacterReference(){this.returnState=this.state,this.state=z.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?b.Attribute:b.Legacy)}_isCharacterReferenceInAttribute(){return this.returnState===z.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===z.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(e){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(e):this._emitCodePoint(e)}_callState(e){switch(this.state){case z.DATA:this._stateData(e);break;case z.RCDATA:this._stateRcdata(e);break;case z.RAWTEXT:this._stateRawtext(e);break;case z.SCRIPT_DATA:this._stateScriptData(e);break;case z.PLAINTEXT:this._statePlaintext(e);break;case z.TAG_OPEN:this._stateTagOpen(e);break;case z.END_TAG_OPEN:this._stateEndTagOpen(e);break;case z.TAG_NAME:this._stateTagName(e);break;case z.RCDATA_LESS_THAN_SIGN:this._stateRcdataLessThanSign(e);break;case z.RCDATA_END_TAG_OPEN:this._stateRcdataEndTagOpen(e);break;case z.RCDATA_END_TAG_NAME:this._stateRcdataEndTagName(e);break;case z.RAWTEXT_LESS_THAN_SIGN:this._stateRawtextLessThanSign(e);break;case z.RAWTEXT_END_TAG_OPEN:this._stateRawtextEndTagOpen(e);break;case z.RAWTEXT_END_TAG_NAME:this._stateRawtextEndTagName(e);break;case z.SCRIPT_DATA_LESS_THAN_SIGN:this._stateScriptDataLessThanSign(e);break;case z.SCRIPT_DATA_END_TAG_OPEN:this._stateScriptDataEndTagOpen(e);break;case z.SCRIPT_DATA_END_TAG_NAME:this._stateScriptDataEndTagName(e);break;case z.SCRIPT_DATA_ESCAPE_START:this._stateScriptDataEscapeStart(e);break;case z.SCRIPT_DATA_ESCAPE_START_DASH:this._stateScriptDataEscapeStartDash(e);break;case z.SCRIPT_DATA_ESCAPED:this._stateScriptDataEscaped(e);break;case z.SCRIPT_DATA_ESCAPED_DASH:this._stateScriptDataEscapedDash(e);break;case z.SCRIPT_DATA_ESCAPED_DASH_DASH:this._stateScriptDataEscapedDashDash(e);break;case z.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:this._stateScriptDataEscapedLessThanSign(e);break;case z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:this._stateScriptDataEscapedEndTagOpen(e);break;case z.SCRIPT_DATA_ESCAPED_END_TAG_NAME:this._stateScriptDataEscapedEndTagName(e);break;case z.SCRIPT_DATA_DOUBLE_ESCAPE_START:this._stateScriptDataDoubleEscapeStart(e);break;case z.SCRIPT_DATA_DOUBLE_ESCAPED:this._stateScriptDataDoubleEscaped(e);break;case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:this._stateScriptDataDoubleEscapedDash(e);break;case z.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:this._stateScriptDataDoubleEscapedDashDash(e);break;case z.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:this._stateScriptDataDoubleEscapedLessThanSign(e);break;case z.SCRIPT_DATA_DOUBLE_ESCAPE_END:this._stateScriptDataDoubleEscapeEnd(e);break;case z.BEFORE_ATTRIBUTE_NAME:this._stateBeforeAttributeName(e);break;case z.ATTRIBUTE_NAME:this._stateAttributeName(e);break;case z.AFTER_ATTRIBUTE_NAME:this._stateAfterAttributeName(e);break;case z.BEFORE_ATTRIBUTE_VALUE:this._stateBeforeAttributeValue(e);break;case z.ATTRIBUTE_VALUE_DOUBLE_QUOTED:this._stateAttributeValueDoubleQuoted(e);break;case z.ATTRIBUTE_VALUE_SINGLE_QUOTED:this._stateAttributeValueSingleQuoted(e);break;case z.ATTRIBUTE_VALUE_UNQUOTED:this._stateAttributeValueUnquoted(e);break;case z.AFTER_ATTRIBUTE_VALUE_QUOTED:this._stateAfterAttributeValueQuoted(e);break;case z.SELF_CLOSING_START_TAG:this._stateSelfClosingStartTag(e);break;case z.BOGUS_COMMENT:this._stateBogusComment(e);break;case z.MARKUP_DECLARATION_OPEN:this._stateMarkupDeclarationOpen(e);break;case z.COMMENT_START:this._stateCommentStart(e);break;case z.COMMENT_START_DASH:this._stateCommentStartDash(e);break;case z.COMMENT:this._stateComment(e);break;case z.COMMENT_LESS_THAN_SIGN:this._stateCommentLessThanSign(e);break;case z.COMMENT_LESS_THAN_SIGN_BANG:this._stateCommentLessThanSignBang(e);break;case z.COMMENT_LESS_THAN_SIGN_BANG_DASH:this._stateCommentLessThanSignBangDash(e);break;case z.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:this._stateCommentLessThanSignBangDashDash(e);break;case z.COMMENT_END_DASH:this._stateCommentEndDash(e);break;case z.COMMENT_END:this._stateCommentEnd(e);break;case z.COMMENT_END_BANG:this._stateCommentEndBang(e);break;case z.DOCTYPE:this._stateDoctype(e);break;case z.BEFORE_DOCTYPE_NAME:this._stateBeforeDoctypeName(e);break;case z.DOCTYPE_NAME:this._stateDoctypeName(e);break;case z.AFTER_DOCTYPE_NAME:this._stateAfterDoctypeName(e);break;case z.AFTER_DOCTYPE_PUBLIC_KEYWORD:this._stateAfterDoctypePublicKeyword(e);break;case z.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:this._stateBeforeDoctypePublicIdentifier(e);break;case z.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:this._stateDoctypePublicIdentifierDoubleQuoted(e);break;case z.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:this._stateDoctypePublicIdentifierSingleQuoted(e);break;case z.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:this._stateAfterDoctypePublicIdentifier(e);break;case z.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:this._stateBetweenDoctypePublicAndSystemIdentifiers(e);break;case z.AFTER_DOCTYPE_SYSTEM_KEYWORD:this._stateAfterDoctypeSystemKeyword(e);break;case z.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:this._stateBeforeDoctypeSystemIdentifier(e);break;case z.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:this._stateDoctypeSystemIdentifierDoubleQuoted(e);break;case z.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:this._stateDoctypeSystemIdentifierSingleQuoted(e);break;case z.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:this._stateAfterDoctypeSystemIdentifier(e);break;case z.BOGUS_DOCTYPE:this._stateBogusDoctype(e);break;case z.CDATA_SECTION:this._stateCdataSection(e);break;case z.CDATA_SECTION_BRACKET:this._stateCdataSectionBracket(e);break;case z.CDATA_SECTION_END:this._stateCdataSectionEnd(e);break;case z.CHARACTER_REFERENCE:this._stateCharacterReference();break;case z.AMBIGUOUS_AMPERSAND:this._stateAmbiguousAmpersand(e);break;default:throw Error(`Unknown state`)}}_stateData(e){switch(e){case O.LESS_THAN_SIGN:this.state=z.TAG_OPEN;break;case O.AMPERSAND:this._startCharacterReference();break;case O.NULL:this._err(j.unexpectedNullCharacter),this._emitCodePoint(e);break;case O.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_stateRcdata(e){switch(e){case O.AMPERSAND:this._startCharacterReference();break;case O.LESS_THAN_SIGN:this.state=z.RCDATA_LESS_THAN_SIGN;break;case O.NULL:this._err(j.unexpectedNullCharacter),this._emitChars(`�`);break;case O.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_stateRawtext(e){switch(e){case O.LESS_THAN_SIGN:this.state=z.RAWTEXT_LESS_THAN_SIGN;break;case O.NULL:this._err(j.unexpectedNullCharacter),this._emitChars(`�`);break;case O.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_stateScriptData(e){switch(e){case O.LESS_THAN_SIGN:this.state=z.SCRIPT_DATA_LESS_THAN_SIGN;break;case O.NULL:this._err(j.unexpectedNullCharacter),this._emitChars(`�`);break;case O.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_statePlaintext(e){switch(e){case O.NULL:this._err(j.unexpectedNullCharacter),this._emitChars(`�`);break;case O.EOF:this._emitEOFToken();break;default:this._emitCodePoint(e)}}_stateTagOpen(e){if(H(e))this._createStartTagToken(),this.state=z.TAG_NAME,this._stateTagName(e);else switch(e){case O.EXCLAMATION_MARK:this.state=z.MARKUP_DECLARATION_OPEN;break;case O.SOLIDUS:this.state=z.END_TAG_OPEN;break;case O.QUESTION_MARK:this._err(j.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=z.BOGUS_COMMENT,this._stateBogusComment(e);break;case O.EOF:this._err(j.eofBeforeTagName),this._emitChars(`<`),this._emitEOFToken();break;default:this._err(j.invalidFirstCharacterOfTagName),this._emitChars(`<`),this.state=z.DATA,this._stateData(e)}}_stateEndTagOpen(e){if(H(e))this._createEndTagToken(),this.state=z.TAG_NAME,this._stateTagName(e);else switch(e){case O.GREATER_THAN_SIGN:this._err(j.missingEndTagName),this.state=z.DATA;break;case O.EOF:this._err(j.eofBeforeTagName),this._emitChars(``);break;case O.NULL:this._err(j.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_ESCAPED,this._emitChars(`�`);break;case O.EOF:this._err(j.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break;default:this.state=z.SCRIPT_DATA_ESCAPED,this._emitCodePoint(e)}}_stateScriptDataEscapedLessThanSign(e){e===O.SOLIDUS?this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:H(e)?(this._emitChars(`<`),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(e)):(this._emitChars(`<`),this.state=z.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(e))}_stateScriptDataEscapedEndTagOpen(e){H(e)?(this.state=z.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(e)):(this._emitChars(``);break;case O.NULL:this._err(j.unexpectedNullCharacter),this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(`�`);break;case O.EOF:this._err(j.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break;default:this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(e)}}_stateScriptDataDoubleEscapedLessThanSign(e){e===O.SOLIDUS?(this.state=z.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars(`/`)):(this.state=z.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(e))}_stateScriptDataDoubleEscapeEnd(e){if(this.preprocessor.startsWith(k.SCRIPT,!1)&&xe(this.preprocessor.peek(k.SCRIPT.length))){this._emitCodePoint(e);for(let e=0;e0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(e,!0)}replace(e,t){let n=this._indexOf(e);this.items[n]=t,n===this.stackTop&&(this.current=t)}insertAfter(e,t,n){let r=this._indexOf(e)+1;this.items.splice(r,0,t),this.tagIDs.splice(r,0,n),this.stackTop++,r===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,r===this.stackTop)}popUntilTagNamePopped(e){let t=this.stackTop+1;do t=this.tagIDs.lastIndexOf(e,t-1);while(t>0&&this.treeAdapter.getNamespaceURI(this.items[t])!==N.HTML);this.shortenToLength(Math.max(t,0))}shortenToLength(e){for(;this.stackTop>=e;){let t=this.current;this.tmplCount>0&&this._isInTemplate()&&--this.tmplCount,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,this.stackTop=0;n--)if(e.has(this.tagIDs[n])&&this.treeAdapter.getNamespaceURI(this.items[n])===t)return n;return-1}clearBackTo(e,t){let n=this._indexOfTagNames(e,t);this.shortenToLength(n+1)}clearBackToTableContext(){this.clearBackTo(Ne,N.HTML)}clearBackToTableBodyContext(){this.clearBackTo(Me,N.HTML)}clearBackToTableRowContext(){this.clearBackTo(je,N.HTML)}remove(e){let t=this._indexOf(e);t>=0&&(t===this.stackTop?this.pop():(this.items.splice(t,1),this.tagIDs.splice(t,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(e,!1)))}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===L.BODY?this.items[1]:null}contains(e){return this._indexOf(e)>-1}getCommonAncestor(e){let t=this._indexOf(e)-1;return t>=0?this.items[t]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===L.HTML}hasInDynamicScope(e,t){for(let n=this.stackTop;n>=0;n--){let r=this.tagIDs[n];switch(this.treeAdapter.getNamespaceURI(this.items[n])){case N.HTML:if(r===e)return!0;if(t.has(r))return!1;break;case N.SVG:if(Ae.has(r))return!1;break;case N.MATHML:if(ke.has(r))return!1}}return!0}hasInScope(e){return this.hasInDynamicScope(e,Ee)}hasInListItemScope(e){return this.hasInDynamicScope(e,De)}hasInButtonScope(e){return this.hasInDynamicScope(e,Oe)}hasNumberedHeaderInScope(){for(let e=this.stackTop;e>=0;e--){let t=this.tagIDs[e];switch(this.treeAdapter.getNamespaceURI(this.items[e])){case N.HTML:if(he.has(t))return!0;if(Ee.has(t))return!1;break;case N.SVG:if(Ae.has(t))return!1;break;case N.MATHML:if(ke.has(t))return!1}}return!0}hasInTableScope(e){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===N.HTML)switch(this.tagIDs[t]){case e:return!0;case L.TABLE:case L.HTML:return!1}return!0}hasTableBodyContextInTableScope(){for(let e=this.stackTop;e>=0;e--)if(this.treeAdapter.getNamespaceURI(this.items[e])===N.HTML)switch(this.tagIDs[e]){case L.TBODY:case L.THEAD:case L.TFOOT:return!0;case L.TABLE:case L.HTML:return!1}return!0}hasInSelectScope(e){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===N.HTML)switch(this.tagIDs[t]){case e:return!0;case L.OPTION:case L.OPTGROUP:break;default:return!1}return!0}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&we.has(this.currentTagId);)this.pop()}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&Te.has(this.currentTagId);)this.pop()}generateImpliedEndTagsWithExclusion(e){for(;this.currentTagId!==void 0&&this.currentTagId!==e&&Te.has(this.currentTagId);)this.pop()}},Ie=3,U;(function(e){e[e.Marker=0]=`Marker`,e[e.Element=1]=`Element`})(U||={});var Le={type:U.Marker},Re=class{constructor(e){this.treeAdapter=e,this.entries=[],this.bookmark=null}_getNoahArkConditionCandidates(e,t){let n=[],r=t.length,i=this.treeAdapter.getTagName(e),a=this.treeAdapter.getNamespaceURI(e);for(let e=0;e[e.name,e.value])),i=0;for(let e=0;er.get(e.name)===e.value)&&(i+=1,i>=Ie&&this.entries.splice(t.idx,1))}}insertMarker(){this.entries.unshift(Le)}pushElement(e,t){this._ensureNoahArkCondition(e),this.entries.unshift({type:U.Element,element:e,token:t})}insertElementAfterBookmark(e,t){let n=this.entries.indexOf(this.bookmark);this.entries.splice(n,0,{type:U.Element,element:e,token:t})}removeEntry(e){let t=this.entries.indexOf(e);t!==-1&&this.entries.splice(t,1)}clearToLastMarker(){let e=this.entries.indexOf(Le);e===-1?this.entries.length=0:this.entries.splice(0,e+1)}getElementEntryInScopeWithTagName(e){let t=this.entries.find(t=>t.type===U.Marker||this.treeAdapter.getTagName(t.element)===e);return t&&t.type===U.Element?t:null}getElementEntry(e){return this.entries.find(t=>t.type===U.Element&&t.element===e)}},W={createDocument(){return{nodeName:`#document`,mode:F.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return{nodeName:`#document-fragment`,childNodes:[]}},createElement(e,t,n){return{nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return{nodeName:`#comment`,data:e,parentNode:null}},createTextNode(e){return{nodeName:`#text`,value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e},insertBefore(e,t,n){let r=e.childNodes.indexOf(n);e.childNodes.splice(r,0,t),t.parentNode=e},setTemplateContent(e,t){e.content=t},getTemplateContent(e){return e.content},setDocumentType(e,t,n,r){let i=e.childNodes.find(e=>e.nodeName===`#documentType`);if(i)i.name=t,i.publicId=n,i.systemId=r;else{let i={nodeName:`#documentType`,name:t,publicId:n,systemId:r,parentNode:null};W.appendChild(e,i)}},setDocumentMode(e,t){e.mode=t},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){let t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null}},insertText(e,t){if(e.childNodes.length>0){let n=e.childNodes[e.childNodes.length-1];if(W.isTextNode(n)){n.value+=t;return}}W.appendChild(e,W.createTextNode(t))},insertTextBefore(e,t,n){let r=e.childNodes[e.childNodes.indexOf(n)-1];r&&W.isTextNode(r)?r.value+=t:W.insertBefore(e,W.createTextNode(t),n)},adoptAttributes(e,t){let n=new Set(e.attrs.map(e=>e.name));for(let r=0;re.startsWith(t))}function Je(e){return e.name===ze&&e.publicId===null&&(e.systemId===null||e.systemId===Be)}function Ye(e){if(e.name!==ze)return F.QUIRKS;let{systemId:t}=e;if(t&&t.toLowerCase()===Ve)return F.QUIRKS;let{publicId:n}=e;if(n!==null){if(n=n.toLowerCase(),We.has(n))return F.QUIRKS;let e=t===null?Ue:He;if(qe(n,e))return F.QUIRKS;if(e=t===null?Ge:Ke,qe(n,e))return F.LIMITED_QUIRKS}return F.NO_QUIRKS}var Xe={TEXT_HTML:`text/html`,APPLICATION_XML:`application/xhtml+xml`},Ze=`definitionurl`,Qe=`definitionURL`,$e=new Map(`attributeName.attributeType.baseFrequency.baseProfile.calcMode.clipPathUnits.diffuseConstant.edgeMode.filterUnits.glyphRef.gradientTransform.gradientUnits.kernelMatrix.kernelUnitLength.keyPoints.keySplines.keyTimes.lengthAdjust.limitingConeAngle.markerHeight.markerUnits.markerWidth.maskContentUnits.maskUnits.numOctaves.pathLength.patternContentUnits.patternTransform.patternUnits.pointsAtX.pointsAtY.pointsAtZ.preserveAlpha.preserveAspectRatio.primitiveUnits.refX.refY.repeatCount.repeatDur.requiredExtensions.requiredFeatures.specularConstant.specularExponent.spreadMethod.startOffset.stdDeviation.stitchTiles.surfaceScale.systemLanguage.tableValues.targetX.targetY.textLength.viewBox.viewTarget.xChannelSelector.yChannelSelector.zoomAndPan`.split(`.`).map(e=>[e.toLowerCase(),e])),et=new Map([[`xlink:actuate`,{prefix:`xlink`,name:`actuate`,namespace:N.XLINK}],[`xlink:arcrole`,{prefix:`xlink`,name:`arcrole`,namespace:N.XLINK}],[`xlink:href`,{prefix:`xlink`,name:`href`,namespace:N.XLINK}],[`xlink:role`,{prefix:`xlink`,name:`role`,namespace:N.XLINK}],[`xlink:show`,{prefix:`xlink`,name:`show`,namespace:N.XLINK}],[`xlink:title`,{prefix:`xlink`,name:`title`,namespace:N.XLINK}],[`xlink:type`,{prefix:`xlink`,name:`type`,namespace:N.XLINK}],[`xml:lang`,{prefix:`xml`,name:`lang`,namespace:N.XML}],[`xml:space`,{prefix:`xml`,name:`space`,namespace:N.XML}],[`xmlns`,{prefix:``,name:`xmlns`,namespace:N.XMLNS}],[`xmlns:xlink`,{prefix:`xmlns`,name:`xlink`,namespace:N.XMLNS}]]),tt=new Map(`altGlyph.altGlyphDef.altGlyphItem.animateColor.animateMotion.animateTransform.clipPath.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feDistantLight.feFlood.feFuncA.feFuncB.feFuncG.feFuncR.feGaussianBlur.feImage.feMerge.feMergeNode.feMorphology.feOffset.fePointLight.feSpecularLighting.feSpotLight.feTile.feTurbulence.foreignObject.glyphRef.linearGradient.radialGradient.textPath`.split(`.`).map(e=>[e.toLowerCase(),e])),nt=new Set([L.B,L.BIG,L.BLOCKQUOTE,L.BODY,L.BR,L.CENTER,L.CODE,L.DD,L.DIV,L.DL,L.DT,L.EM,L.EMBED,L.H1,L.H2,L.H3,L.H4,L.H5,L.H6,L.HEAD,L.HR,L.I,L.IMG,L.LI,L.LISTING,L.MENU,L.META,L.NOBR,L.OL,L.P,L.PRE,L.RUBY,L.S,L.SMALL,L.SPAN,L.STRONG,L.STRIKE,L.SUB,L.SUP,L.TABLE,L.TT,L.U,L.UL,L.VAR]);function rt(e){let t=e.tagID;return t===L.FONT&&e.attrs.some(({name:e})=>e===P.COLOR||e===P.SIZE||e===P.FACE)||nt.has(t)}function it(e){for(let t=0;t0&&this._setContextModes(e,t)}onItemPop(e,t){var n,r;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(e,this.currentToken),(r=(n=this.treeAdapter).onItemPop)==null||r.call(n,e,this.openElements.current),t){let e,t;this.openElements.stackTop===0&&this.fragmentContext?(e=this.fragmentContext,t=this.fragmentContextID):{current:e,currentTagId:t}=this.openElements,this._setContextModes(e,t)}}_setContextModes(e,t){let n=e===this.document||e&&this.treeAdapter.getNamespaceURI(e)===N.HTML;this.currentNotInHTML=!n,this.tokenizer.inForeignNode=!n&&e!==void 0&&t!==void 0&&!this._isIntegrationPoint(t,e)}_switchToTextParsing(e,t){this._insertElement(e,N.HTML),this.tokenizer.state=t,this.originalInsertionMode=this.insertionMode,this.insertionMode=G.TEXT}switchToPlaintextParsing(){this.insertionMode=G.TEXT,this.originalInsertionMode=G.IN_BODY,this.tokenizer.state=B.PLAINTEXT}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let e=this.fragmentContext;for(;e;){if(this.treeAdapter.getTagName(e)===I.FORM){this.formElement=e;break}e=this.treeAdapter.getParentNode(e)}}_initTokenizerForFragmentParsing(){if(this.fragmentContext&&this.treeAdapter.getNamespaceURI(this.fragmentContext)===N.HTML)switch(this.fragmentContextID){case L.TITLE:case L.TEXTAREA:this.tokenizer.state=B.RCDATA;break;case L.STYLE:case L.XMP:case L.IFRAME:case L.NOEMBED:case L.NOFRAMES:case L.NOSCRIPT:this.tokenizer.state=B.RAWTEXT;break;case L.SCRIPT:this.tokenizer.state=B.SCRIPT_DATA;break;case L.PLAINTEXT:this.tokenizer.state=B.PLAINTEXT}}_setDocumentType(e){let t=e.name||``,n=e.publicId||``,r=e.systemId||``;if(this.treeAdapter.setDocumentType(this.document,t,n,r),e.location){let t=this.treeAdapter.getChildNodes(this.document).find(e=>this.treeAdapter.isDocumentTypeNode(e));t&&this.treeAdapter.setNodeSourceCodeLocation(t,e.location)}}_attachElementToTree(e,t){if(this.options.sourceCodeLocationInfo){let n=t&&{...t,startTag:t};this.treeAdapter.setNodeSourceCodeLocation(e,n)}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(e);else{let t=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(t??this.document,e)}}_appendElement(e,t){let n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n,e.location)}_insertElement(e,t){let n=this.treeAdapter.createElement(e.tagName,t,e.attrs);this._attachElementToTree(n,e.location),this.openElements.push(n,e.tagID)}_insertFakeElement(e,t){let n=this.treeAdapter.createElement(e,N.HTML,[]);this._attachElementToTree(n,null),this.openElements.push(n,t)}_insertTemplate(e){let t=this.treeAdapter.createElement(e.tagName,N.HTML,e.attrs),n=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(t,n),this._attachElementToTree(t,e.location),this.openElements.push(t,e.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,null)}_insertFakeRootElement(){let e=this.treeAdapter.createElement(I.HTML,N.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(e,null),this.treeAdapter.appendChild(this.openElements.current,e),this.openElements.push(e,L.HTML)}_appendCommentNode(e,t){let n=this.treeAdapter.createCommentNode(e.data);this.treeAdapter.appendChild(t,n),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(n,e.location)}_insertCharacters(e){let t,n;if(this._shouldFosterParentOnInsertion()?({parent:t,beforeElement:n}=this._findFosterParentingLocation(),n?this.treeAdapter.insertTextBefore(t,e.chars,n):this.treeAdapter.insertText(t,e.chars)):(t=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(t,e.chars)),!e.location)return;let r=this.treeAdapter.getChildNodes(t),i=r[(n?r.lastIndexOf(n):r.length)-1];if(this.treeAdapter.getNodeSourceCodeLocation(i)){let{endLine:t,endCol:n,endOffset:r}=e.location;this.treeAdapter.updateNodeSourceCodeLocation(i,{endLine:t,endCol:n,endOffset:r})}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(i,e.location)}_adoptNodes(e,t){for(let n=this.treeAdapter.getFirstChild(e);n;n=this.treeAdapter.getFirstChild(e))this.treeAdapter.detachNode(n),this.treeAdapter.appendChild(t,n)}_setEndLocation(e,t){if(this.treeAdapter.getNodeSourceCodeLocation(e)&&t.location){let n=t.location,r=this.treeAdapter.getTagName(e),i=t.type===M.END_TAG&&r===t.tagName?{endTag:{...n},endLine:n.endLine,endCol:n.endCol,endOffset:n.endOffset}:{endLine:n.startLine,endCol:n.startCol,endOffset:n.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(e,i)}}shouldProcessStartTagTokenInForeignContent(e){if(!this.currentNotInHTML)return!1;let t,n;return this.openElements.stackTop===0&&this.fragmentContext?(t=this.fragmentContext,n=this.fragmentContextID):{current:t,currentTagId:n}=this.openElements,e.tagID===L.SVG&&this.treeAdapter.getTagName(t)===I.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(t)===N.MATHML?!1:this.tokenizer.inForeignNode||(e.tagID===L.MGLYPH||e.tagID===L.MALIGNMARK)&&n!==void 0&&!this._isIntegrationPoint(n,t,N.HTML)}_processToken(e){switch(e.type){case M.CHARACTER:this.onCharacter(e);break;case M.NULL_CHARACTER:this.onNullCharacter(e);break;case M.COMMENT:this.onComment(e);break;case M.DOCTYPE:this.onDoctype(e);break;case M.START_TAG:this._processStartTag(e);break;case M.END_TAG:this.onEndTag(e);break;case M.EOF:this.onEof(e);break;case M.WHITESPACE_CHARACTER:this.onWhitespaceCharacter(e)}}_isIntegrationPoint(e,t,n){return ut(e,this.treeAdapter.getNamespaceURI(t),this.treeAdapter.getAttrList(t),n)}_reconstructActiveFormattingElements(){let e=this.activeFormattingElements.entries.length;if(e){let t=this.activeFormattingElements.entries.findIndex(e=>e.type===U.Marker||this.openElements.contains(e.element)),n=t===-1?e-1:t-1;for(let e=n;e>=0;e--){let t=this.activeFormattingElements.entries[e];this._insertElement(t.token,this.treeAdapter.getNamespaceURI(t.element)),t.element=this.openElements.current}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=G.IN_ROW}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(L.P),this.openElements.popUntilTagNamePopped(L.P)}_resetInsertionMode(){for(let e=this.openElements.stackTop;e>=0;e--)switch(e===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[e]){case L.TR:this.insertionMode=G.IN_ROW;return;case L.TBODY:case L.THEAD:case L.TFOOT:this.insertionMode=G.IN_TABLE_BODY;return;case L.CAPTION:this.insertionMode=G.IN_CAPTION;return;case L.COLGROUP:this.insertionMode=G.IN_COLUMN_GROUP;return;case L.TABLE:this.insertionMode=G.IN_TABLE;return;case L.BODY:this.insertionMode=G.IN_BODY;return;case L.FRAMESET:this.insertionMode=G.IN_FRAMESET;return;case L.SELECT:this._resetInsertionModeForSelect(e);return;case L.TEMPLATE:this.insertionMode=this.tmplInsertionModeStack[0];return;case L.HTML:this.insertionMode=this.headElement?G.AFTER_HEAD:G.BEFORE_HEAD;return;case L.TD:case L.TH:if(e>0){this.insertionMode=G.IN_CELL;return}break;case L.HEAD:if(e>0){this.insertionMode=G.IN_HEAD;return}}this.insertionMode=G.IN_BODY}_resetInsertionModeForSelect(e){if(e>0)for(let t=e-1;t>0;t--){let e=this.openElements.tagIDs[t];if(e===L.TEMPLATE)break;if(e===L.TABLE){this.insertionMode=G.IN_SELECT_IN_TABLE;return}}this.insertionMode=G.IN_SELECT}_isElementCausesFosterParenting(e){return ht.has(e)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let e=this.openElements.stackTop;e>=0;e--){let t=this.openElements.items[e];switch(this.openElements.tagIDs[e]){case L.TEMPLATE:if(this.treeAdapter.getNamespaceURI(t)===N.HTML)return{parent:this.treeAdapter.getTemplateContent(t),beforeElement:null};break;case L.TABLE:{let n=this.treeAdapter.getParentNode(t);return n?{parent:n,beforeElement:t}:{parent:this.openElements.items[e-1],beforeElement:null}}}}return{parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(e){let t=this._findFosterParentingLocation();t.beforeElement?this.treeAdapter.insertBefore(t.parent,e,t.beforeElement):this.treeAdapter.appendChild(t.parent,e)}_isSpecialElement(e,t){return me[this.treeAdapter.getNamespaceURI(e)].has(t)}onCharacter(e){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){kr(this,e);return}switch(this.insertionMode){case G.INITIAL:K(this,e);break;case G.BEFORE_HTML:q(this,e);break;case G.BEFORE_HEAD:Pt(this,e);break;case G.IN_HEAD:It(this,e);break;case G.IN_HEAD_NO_SCRIPT:X(this,e);break;case G.AFTER_HEAD:Vt(this,e);break;case G.IN_BODY:case G.IN_CAPTION:case G.IN_CELL:case G.IN_TEMPLATE:Wt(this,e);break;case G.TEXT:case G.IN_SELECT:case G.IN_SELECT_IN_TABLE:this._insertCharacters(e);break;case G.IN_TABLE:case G.IN_TABLE_BODY:case G.IN_ROW:zn(this,e);break;case G.IN_TABLE_TEXT:Zn(this,e);break;case G.IN_COLUMN_GROUP:ir(this,e);break;case G.AFTER_BODY:br(this,e);break;case G.AFTER_AFTER_BODY:Er(this,e)}}onNullCharacter(e){if(this.skipNextNewLine=!1,this.tokenizer.inForeignNode){Or(this,e);return}switch(this.insertionMode){case G.INITIAL:K(this,e);break;case G.BEFORE_HTML:q(this,e);break;case G.BEFORE_HEAD:Pt(this,e);break;case G.IN_HEAD:It(this,e);break;case G.IN_HEAD_NO_SCRIPT:X(this,e);break;case G.AFTER_HEAD:Vt(this,e);break;case G.TEXT:this._insertCharacters(e);break;case G.IN_TABLE:case G.IN_TABLE_BODY:case G.IN_ROW:zn(this,e);break;case G.IN_COLUMN_GROUP:ir(this,e);break;case G.AFTER_BODY:br(this,e);break;case G.AFTER_AFTER_BODY:Er(this,e)}}onComment(e){if(this.skipNextNewLine=!1,this.currentNotInHTML){Tt(this,e);return}switch(this.insertionMode){case G.INITIAL:case G.BEFORE_HTML:case G.BEFORE_HEAD:case G.IN_HEAD:case G.IN_HEAD_NO_SCRIPT:case G.AFTER_HEAD:case G.IN_BODY:case G.IN_TABLE:case G.IN_CAPTION:case G.IN_COLUMN_GROUP:case G.IN_TABLE_BODY:case G.IN_ROW:case G.IN_CELL:case G.IN_SELECT:case G.IN_SELECT_IN_TABLE:case G.IN_TEMPLATE:case G.IN_FRAMESET:case G.AFTER_FRAMESET:Tt(this,e);break;case G.IN_TABLE_TEXT:Qn(this,e);break;case G.AFTER_BODY:Et(this,e);break;case G.AFTER_AFTER_BODY:case G.AFTER_AFTER_FRAMESET:Dt(this,e)}}onDoctype(e){switch(this.skipNextNewLine=!1,this.insertionMode){case G.INITIAL:kt(this,e);break;case G.BEFORE_HEAD:case G.IN_HEAD:case G.IN_HEAD_NO_SCRIPT:case G.AFTER_HEAD:this._err(e,j.misplacedDoctype);break;case G.IN_TABLE_TEXT:Qn(this,e)}}onStartTag(e){this.skipNextNewLine=!1,this.currentToken=e,this._processStartTag(e),e.selfClosing&&!e.ackSelfClosing&&this._err(e,j.nonVoidHtmlElementStartTagWithTrailingSolidus)}_processStartTag(e){this.shouldProcessStartTagTokenInForeignContent(e)?jr(this,e):this._startTagOutsideForeignContent(e)}_startTagOutsideForeignContent(e){switch(this.insertionMode){case G.INITIAL:K(this,e);break;case G.BEFORE_HTML:At(this,e);break;case G.BEFORE_HEAD:Mt(this,e);break;case G.IN_HEAD:J(this,e);break;case G.IN_HEAD_NO_SCRIPT:Lt(this,e);break;case G.AFTER_HEAD:zt(this,e);break;case G.IN_BODY:Z(this,e);break;case G.IN_TABLE:Q(this,e);break;case G.IN_TABLE_TEXT:Qn(this,e);break;case G.IN_CAPTION:er(this,e);break;case G.IN_COLUMN_GROUP:nr(this,e);break;case G.IN_TABLE_BODY:ar(this,e);break;case G.IN_ROW:sr(this,e);break;case G.IN_CELL:lr(this,e);break;case G.IN_SELECT:dr(this,e);break;case G.IN_SELECT_IN_TABLE:pr(this,e);break;case G.IN_TEMPLATE:hr(this,e);break;case G.AFTER_BODY:vr(this,e);break;case G.IN_FRAMESET:xr(this,e);break;case G.AFTER_FRAMESET:Cr(this,e);break;case G.AFTER_AFTER_BODY:Tr(this,e);break;case G.AFTER_AFTER_FRAMESET:Dr(this,e)}}onEndTag(e){this.skipNextNewLine=!1,this.currentToken=e,this.currentNotInHTML?Mr(this,e):this._endTagOutsideForeignContent(e)}_endTagOutsideForeignContent(e){switch(this.insertionMode){case G.INITIAL:K(this,e);break;case G.BEFORE_HTML:jt(this,e);break;case G.BEFORE_HEAD:Nt(this,e);break;case G.IN_HEAD:Ft(this,e);break;case G.IN_HEAD_NO_SCRIPT:Rt(this,e);break;case G.AFTER_HEAD:Bt(this,e);break;case G.IN_BODY:Fn(this,e);break;case G.TEXT:Ln(this,e);break;case G.IN_TABLE:Jn(this,e);break;case G.IN_TABLE_TEXT:Qn(this,e);break;case G.IN_CAPTION:tr(this,e);break;case G.IN_COLUMN_GROUP:rr(this,e);break;case G.IN_TABLE_BODY:or(this,e);break;case G.IN_ROW:cr(this,e);break;case G.IN_CELL:ur(this,e);break;case G.IN_SELECT:fr(this,e);break;case G.IN_SELECT_IN_TABLE:mr(this,e);break;case G.IN_TEMPLATE:gr(this,e);break;case G.AFTER_BODY:yr(this,e);break;case G.IN_FRAMESET:Sr(this,e);break;case G.AFTER_FRAMESET:wr(this,e);break;case G.AFTER_AFTER_BODY:Er(this,e)}}onEof(e){switch(this.insertionMode){case G.INITIAL:K(this,e);break;case G.BEFORE_HTML:q(this,e);break;case G.BEFORE_HEAD:Pt(this,e);break;case G.IN_HEAD:It(this,e);break;case G.IN_HEAD_NO_SCRIPT:X(this,e);break;case G.AFTER_HEAD:Vt(this,e);break;case G.IN_BODY:case G.IN_TABLE:case G.IN_CAPTION:case G.IN_COLUMN_GROUP:case G.IN_TABLE_BODY:case G.IN_ROW:case G.IN_CELL:case G.IN_SELECT:case G.IN_SELECT_IN_TABLE:In(this,e);break;case G.TEXT:Rn(this,e);break;case G.IN_TABLE_TEXT:Qn(this,e);break;case G.IN_TEMPLATE:_r(this,e);break;case G.AFTER_BODY:case G.IN_FRAMESET:case G.AFTER_FRAMESET:case G.AFTER_AFTER_BODY:case G.AFTER_AFTER_FRAMESET:Ot(this,e)}}onWhitespaceCharacter(e){if(this.skipNextNewLine&&(this.skipNextNewLine=!1,e.chars.charCodeAt(0)===O.LINE_FEED)){if(e.chars.length===1)return;e.chars=e.chars.substr(1)}if(this.tokenizer.inForeignNode){this._insertCharacters(e);return}switch(this.insertionMode){case G.IN_HEAD:case G.IN_HEAD_NO_SCRIPT:case G.AFTER_HEAD:case G.TEXT:case G.IN_COLUMN_GROUP:case G.IN_SELECT:case G.IN_SELECT_IN_TABLE:case G.IN_FRAMESET:case G.AFTER_FRAMESET:this._insertCharacters(e);break;case G.IN_BODY:case G.IN_CAPTION:case G.IN_CELL:case G.IN_TEMPLATE:case G.AFTER_BODY:case G.AFTER_AFTER_BODY:case G.AFTER_AFTER_FRAMESET:Ut(this,e);break;case G.IN_TABLE:case G.IN_TABLE_BODY:case G.IN_ROW:zn(this,e);break;case G.IN_TABLE_TEXT:Xn(this,e)}}};function vt(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagID)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Pn(e,t),n}function yt(e,t){let n=null,r=e.openElements.stackTop;for(;r>=0;r--){let i=e.openElements.items[r];if(i===t.element)break;e._isSpecialElement(i,e.openElements.tagIDs[r])&&(n=i)}return n||(e.openElements.shortenToLength(Math.max(r,0)),e.activeFormattingElements.removeEntry(t)),n}function bt(e,t,n){let r=t,i=e.openElements.getCommonAncestor(t);for(let a=0,o=i;o!==n;a++,o=i){i=e.openElements.getCommonAncestor(o);let n=e.activeFormattingElements.getElementEntry(o),s=n&&a>=pt;!n||s?(s&&e.activeFormattingElements.removeEntry(n),e.openElements.remove(o)):(o=xt(e,n),r===t&&(e.activeFormattingElements.bookmark=n),e.treeAdapter.detachNode(r),e.treeAdapter.appendChild(o,r),r=o)}return r}function xt(e,t){let n=e.treeAdapter.getNamespaceURI(t.element),r=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,r),t.element=r,r}function St(e,t,n){let r=pe(e.treeAdapter.getTagName(t));if(e._isElementCausesFosterParenting(r))e._fosterParentElement(n);else{let i=e.treeAdapter.getNamespaceURI(t);r===L.TEMPLATE&&i===N.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n)}}function Ct(e,t,n){let r=e.treeAdapter.getNamespaceURI(n.element),{token:i}=n,a=e.treeAdapter.createElement(i.tagName,r,i.attrs);e._adoptNodes(t,a),e.treeAdapter.appendChild(t,a),e.activeFormattingElements.insertElementAfterBookmark(a,i),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,a,i.tagID)}function wt(e,t){for(let n=0;n=n;r--)e._setEndLocation(e.openElements.items[r],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){let n=e.openElements.items[0],r=e.treeAdapter.getNodeSourceCodeLocation(n);if(r&&!r.endTag&&(e._setEndLocation(n,t),e.openElements.stackTop>=1)){let n=e.openElements.items[1],r=e.treeAdapter.getNodeSourceCodeLocation(n);r&&!r.endTag&&e._setEndLocation(n,t)}}}}function kt(e,t){e._setDocumentType(t);let n=t.forceQuirks?F.QUIRKS:Ye(t);Je(t)||e._err(t,j.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=G.BEFORE_HTML}function K(e,t){e._err(t,j.missingDoctype,!0),e.treeAdapter.setDocumentMode(e.document,F.QUIRKS),e.insertionMode=G.BEFORE_HTML,e._processToken(t)}function At(e,t){t.tagID===L.HTML?(e._insertElement(t,N.HTML),e.insertionMode=G.BEFORE_HEAD):q(e,t)}function jt(e,t){let n=t.tagID;(n===L.HTML||n===L.HEAD||n===L.BODY||n===L.BR)&&q(e,t)}function q(e,t){e._insertFakeRootElement(),e.insertionMode=G.BEFORE_HEAD,e._processToken(t)}function Mt(e,t){switch(t.tagID){case L.HTML:Z(e,t);break;case L.HEAD:e._insertElement(t,N.HTML),e.headElement=e.openElements.current,e.insertionMode=G.IN_HEAD;break;default:Pt(e,t)}}function Nt(e,t){let n=t.tagID;n===L.HEAD||n===L.BODY||n===L.HTML||n===L.BR?Pt(e,t):e._err(t,j.endTagWithoutMatchingOpenElement)}function Pt(e,t){e._insertFakeElement(I.HEAD,L.HEAD),e.headElement=e.openElements.current,e.insertionMode=G.IN_HEAD,e._processToken(t)}function J(e,t){switch(t.tagID){case L.HTML:Z(e,t);break;case L.BASE:case L.BASEFONT:case L.BGSOUND:case L.LINK:case L.META:e._appendElement(t,N.HTML),t.ackSelfClosing=!0;break;case L.TITLE:e._switchToTextParsing(t,B.RCDATA);break;case L.NOSCRIPT:e.options.scriptingEnabled?e._switchToTextParsing(t,B.RAWTEXT):(e._insertElement(t,N.HTML),e.insertionMode=G.IN_HEAD_NO_SCRIPT);break;case L.NOFRAMES:case L.STYLE:e._switchToTextParsing(t,B.RAWTEXT);break;case L.SCRIPT:e._switchToTextParsing(t,B.SCRIPT_DATA);break;case L.TEMPLATE:e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=!1,e.insertionMode=G.IN_TEMPLATE,e.tmplInsertionModeStack.unshift(G.IN_TEMPLATE);break;case L.HEAD:e._err(t,j.misplacedStartTagForHeadElement);break;default:It(e,t)}}function Ft(e,t){switch(t.tagID){case L.HEAD:e.openElements.pop(),e.insertionMode=G.AFTER_HEAD;break;case L.BODY:case L.BR:case L.HTML:It(e,t);break;case L.TEMPLATE:Y(e,t);break;default:e._err(t,j.endTagWithoutMatchingOpenElement)}}function Y(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==L.TEMPLATE&&e._err(t,j.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(L.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,j.endTagWithoutMatchingOpenElement)}function It(e,t){e.openElements.pop(),e.insertionMode=G.AFTER_HEAD,e._processToken(t)}function Lt(e,t){switch(t.tagID){case L.HTML:Z(e,t);break;case L.BASEFONT:case L.BGSOUND:case L.HEAD:case L.LINK:case L.META:case L.NOFRAMES:case L.STYLE:J(e,t);break;case L.NOSCRIPT:e._err(t,j.nestedNoscriptInHead);break;default:X(e,t)}}function Rt(e,t){switch(t.tagID){case L.NOSCRIPT:e.openElements.pop(),e.insertionMode=G.IN_HEAD;break;case L.BR:X(e,t);break;default:e._err(t,j.endTagWithoutMatchingOpenElement)}}function X(e,t){let n=t.type===M.EOF?j.openElementsLeftAfterEof:j.disallowedContentInNoscriptInHead;e._err(t,n),e.openElements.pop(),e.insertionMode=G.IN_HEAD,e._processToken(t)}function zt(e,t){switch(t.tagID){case L.HTML:Z(e,t);break;case L.BODY:e._insertElement(t,N.HTML),e.framesetOk=!1,e.insertionMode=G.IN_BODY;break;case L.FRAMESET:e._insertElement(t,N.HTML),e.insertionMode=G.IN_FRAMESET;break;case L.BASE:case L.BASEFONT:case L.BGSOUND:case L.LINK:case L.META:case L.NOFRAMES:case L.SCRIPT:case L.STYLE:case L.TEMPLATE:case L.TITLE:e._err(t,j.abandonedHeadElementChild),e.openElements.push(e.headElement,L.HEAD),J(e,t),e.openElements.remove(e.headElement);break;case L.HEAD:e._err(t,j.misplacedStartTagForHeadElement);break;default:Vt(e,t)}}function Bt(e,t){switch(t.tagID){case L.BODY:case L.HTML:case L.BR:Vt(e,t);break;case L.TEMPLATE:Y(e,t);break;default:e._err(t,j.endTagWithoutMatchingOpenElement)}}function Vt(e,t){e._insertFakeElement(I.BODY,L.BODY),e.insertionMode=G.IN_BODY,Ht(e,t)}function Ht(e,t){switch(t.type){case M.CHARACTER:Wt(e,t);break;case M.WHITESPACE_CHARACTER:Ut(e,t);break;case M.COMMENT:Tt(e,t);break;case M.START_TAG:Z(e,t);break;case M.END_TAG:Fn(e,t);break;case M.EOF:In(e,t)}}function Ut(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t)}function Wt(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=!1}function Gt(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs)}function Kt(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e.openElements.tmplCount===0&&(e.framesetOk=!1,e.treeAdapter.adoptAttributes(n,t.attrs))}function qt(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,N.HTML),e.insertionMode=G.IN_FRAMESET)}function Jt(e,t){e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e._insertElement(t,N.HTML)}function Yt(e,t){e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&he.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,N.HTML)}function Xt(e,t){e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e._insertElement(t,N.HTML),e.skipNextNewLine=!0,e.framesetOk=!1}function Zt(e,t){let n=e.openElements.tmplCount>0;(!e.formElement||n)&&(e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e._insertElement(t,N.HTML),n||(e.formElement=e.openElements.current))}function Qt(e,t){e.framesetOk=!1;let n=t.tagID;for(let t=e.openElements.stackTop;t>=0;t--){let r=e.openElements.tagIDs[t];if(n===L.LI&&r===L.LI||(n===L.DD||n===L.DT)&&(r===L.DD||r===L.DT)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r);break}if(r!==L.ADDRESS&&r!==L.DIV&&r!==L.P&&e._isSpecialElement(e.openElements.items[t],r))break}e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e._insertElement(t,N.HTML)}function $t(e,t){e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e._insertElement(t,N.HTML),e.tokenizer.state=B.PLAINTEXT}function en(e,t){e.openElements.hasInScope(L.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(L.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,N.HTML),e.framesetOk=!1}function tn(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(I.A);n&&(wt(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,N.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function nn(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,N.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function rn(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(L.NOBR)&&(wt(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,N.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t)}function an(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,N.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=!1}function on(e,t){e.treeAdapter.getDocumentMode(e.document)!==F.QUIRKS&&e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e._insertElement(t,N.HTML),e.framesetOk=!1,e.insertionMode=G.IN_TABLE}function sn(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,N.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function cn(e){let t=de(e,P.TYPE);return t!=null&&t.toLowerCase()===dt}function ln(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,N.HTML),cn(t)||(e.framesetOk=!1),t.ackSelfClosing=!0}function un(e,t){e._appendElement(t,N.HTML),t.ackSelfClosing=!0}function dn(e,t){e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e._appendElement(t,N.HTML),e.framesetOk=!1,t.ackSelfClosing=!0}function fn(e,t){t.tagName=I.IMG,t.tagID=L.IMG,sn(e,t)}function pn(e,t){e._insertElement(t,N.HTML),e.skipNextNewLine=!0,e.tokenizer.state=B.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=!1,e.insertionMode=G.TEXT}function mn(e,t){e.openElements.hasInButtonScope(L.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=!1,e._switchToTextParsing(t,B.RAWTEXT)}function hn(e,t){e.framesetOk=!1,e._switchToTextParsing(t,B.RAWTEXT)}function gn(e,t){e._switchToTextParsing(t,B.RAWTEXT)}function _n(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,N.HTML),e.framesetOk=!1,e.insertionMode=e.insertionMode===G.IN_TABLE||e.insertionMode===G.IN_CAPTION||e.insertionMode===G.IN_TABLE_BODY||e.insertionMode===G.IN_ROW||e.insertionMode===G.IN_CELL?G.IN_SELECT_IN_TABLE:G.IN_SELECT}function vn(e,t){e.openElements.currentTagId===L.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,N.HTML)}function yn(e,t){e.openElements.hasInScope(L.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,N.HTML)}function bn(e,t){e.openElements.hasInScope(L.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(L.RTC),e._insertElement(t,N.HTML)}function xn(e,t){e._reconstructActiveFormattingElements(),it(t),ot(t),t.selfClosing?e._appendElement(t,N.MATHML):e._insertElement(t,N.MATHML),t.ackSelfClosing=!0}function Sn(e,t){e._reconstructActiveFormattingElements(),at(t),ot(t),t.selfClosing?e._appendElement(t,N.SVG):e._insertElement(t,N.SVG),t.ackSelfClosing=!0}function Cn(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,N.HTML)}function Z(e,t){switch(t.tagID){case L.I:case L.S:case L.B:case L.U:case L.EM:case L.TT:case L.BIG:case L.CODE:case L.FONT:case L.SMALL:case L.STRIKE:case L.STRONG:nn(e,t);break;case L.A:tn(e,t);break;case L.H1:case L.H2:case L.H3:case L.H4:case L.H5:case L.H6:Yt(e,t);break;case L.P:case L.DL:case L.OL:case L.UL:case L.DIV:case L.DIR:case L.NAV:case L.MAIN:case L.MENU:case L.ASIDE:case L.CENTER:case L.FIGURE:case L.FOOTER:case L.HEADER:case L.HGROUP:case L.DIALOG:case L.DETAILS:case L.ADDRESS:case L.ARTICLE:case L.SEARCH:case L.SECTION:case L.SUMMARY:case L.FIELDSET:case L.BLOCKQUOTE:case L.FIGCAPTION:Jt(e,t);break;case L.LI:case L.DD:case L.DT:Qt(e,t);break;case L.BR:case L.IMG:case L.WBR:case L.AREA:case L.EMBED:case L.KEYGEN:sn(e,t);break;case L.HR:dn(e,t);break;case L.RB:case L.RTC:yn(e,t);break;case L.RT:case L.RP:bn(e,t);break;case L.PRE:case L.LISTING:Xt(e,t);break;case L.XMP:mn(e,t);break;case L.SVG:Sn(e,t);break;case L.HTML:Gt(e,t);break;case L.BASE:case L.LINK:case L.META:case L.STYLE:case L.TITLE:case L.SCRIPT:case L.BGSOUND:case L.BASEFONT:case L.TEMPLATE:J(e,t);break;case L.BODY:Kt(e,t);break;case L.FORM:Zt(e,t);break;case L.NOBR:rn(e,t);break;case L.MATH:xn(e,t);break;case L.TABLE:on(e,t);break;case L.INPUT:ln(e,t);break;case L.PARAM:case L.TRACK:case L.SOURCE:un(e,t);break;case L.IMAGE:fn(e,t);break;case L.BUTTON:en(e,t);break;case L.APPLET:case L.OBJECT:case L.MARQUEE:an(e,t);break;case L.IFRAME:hn(e,t);break;case L.SELECT:_n(e,t);break;case L.OPTION:case L.OPTGROUP:vn(e,t);break;case L.NOEMBED:case L.NOFRAMES:gn(e,t);break;case L.FRAMESET:qt(e,t);break;case L.TEXTAREA:pn(e,t);break;case L.NOSCRIPT:e.options.scriptingEnabled?gn(e,t):Cn(e,t);break;case L.PLAINTEXT:$t(e,t);break;case L.COL:case L.TH:case L.TD:case L.TR:case L.HEAD:case L.FRAME:case L.TBODY:case L.TFOOT:case L.THEAD:case L.CAPTION:case L.COLGROUP:break;default:Cn(e,t)}}function wn(e,t){if(e.openElements.hasInScope(L.BODY)&&(e.insertionMode=G.AFTER_BODY,e.options.sourceCodeLocationInfo)){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e._setEndLocation(n,t)}}function Tn(e,t){e.openElements.hasInScope(L.BODY)&&(e.insertionMode=G.AFTER_BODY,yr(e,t))}function En(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n))}function Dn(e){let t=e.openElements.tmplCount>0,{formElement:n}=e;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(L.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(L.FORM):n&&e.openElements.remove(n))}function On(e){e.openElements.hasInButtonScope(L.P)||e._insertFakeElement(I.P,L.P),e._closePElement()}function kn(e){e.openElements.hasInListItemScope(L.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(L.LI),e.openElements.popUntilTagNamePopped(L.LI))}function An(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n))}function jn(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped())}function Mn(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker())}function Nn(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(I.BR,L.BR),e.openElements.pop(),e.framesetOk=!1}function Pn(e,t){let n=t.tagName,r=t.tagID;for(let t=e.openElements.stackTop;t>0;t--){let i=e.openElements.items[t],a=e.openElements.tagIDs[t];if(r===a&&(r!==L.UNKNOWN||e.treeAdapter.getTagName(i)===n)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.stackTop>=t&&e.openElements.shortenToLength(t);break}if(e._isSpecialElement(i,a))break}}function Fn(e,t){switch(t.tagID){case L.A:case L.B:case L.I:case L.S:case L.U:case L.EM:case L.TT:case L.BIG:case L.CODE:case L.FONT:case L.NOBR:case L.SMALL:case L.STRIKE:case L.STRONG:wt(e,t);break;case L.P:On(e);break;case L.DL:case L.UL:case L.OL:case L.DIR:case L.DIV:case L.NAV:case L.PRE:case L.MAIN:case L.MENU:case L.ASIDE:case L.BUTTON:case L.CENTER:case L.FIGURE:case L.FOOTER:case L.HEADER:case L.HGROUP:case L.DIALOG:case L.ADDRESS:case L.ARTICLE:case L.DETAILS:case L.SEARCH:case L.SECTION:case L.SUMMARY:case L.LISTING:case L.FIELDSET:case L.BLOCKQUOTE:case L.FIGCAPTION:En(e,t);break;case L.LI:kn(e);break;case L.DD:case L.DT:An(e,t);break;case L.H1:case L.H2:case L.H3:case L.H4:case L.H5:case L.H6:jn(e);break;case L.BR:Nn(e);break;case L.BODY:wn(e,t);break;case L.HTML:Tn(e,t);break;case L.FORM:Dn(e);break;case L.APPLET:case L.OBJECT:case L.MARQUEE:Mn(e,t);break;case L.TEMPLATE:Y(e,t);break;default:Pn(e,t)}}function In(e,t){e.tmplInsertionModeStack.length>0?_r(e,t):Ot(e,t)}function Ln(e,t){var n;t.tagID===L.SCRIPT&&((n=e.scriptHandler)==null||n.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode}function Rn(e,t){e._err(t,j.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t)}function zn(e,t){if(e.openElements.currentTagId!==void 0&&ht.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=!1,e.originalInsertionMode=e.insertionMode,e.insertionMode=G.IN_TABLE_TEXT,t.type){case M.CHARACTER:Zn(e,t);break;case M.WHITESPACE_CHARACTER:Xn(e,t)}else Yn(e,t)}function Bn(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,N.HTML),e.insertionMode=G.IN_CAPTION}function Vn(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,N.HTML),e.insertionMode=G.IN_COLUMN_GROUP}function Hn(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(I.COLGROUP,L.COLGROUP),e.insertionMode=G.IN_COLUMN_GROUP,nr(e,t)}function Un(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,N.HTML),e.insertionMode=G.IN_TABLE_BODY}function Wn(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(I.TBODY,L.TBODY),e.insertionMode=G.IN_TABLE_BODY,ar(e,t)}function Gn(e,t){e.openElements.hasInTableScope(L.TABLE)&&(e.openElements.popUntilTagNamePopped(L.TABLE),e._resetInsertionMode(),e._processStartTag(t))}function Kn(e,t){cn(t)?e._appendElement(t,N.HTML):Yn(e,t),t.ackSelfClosing=!0}function qn(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,N.HTML),e.formElement=e.openElements.current,e.openElements.pop())}function Q(e,t){switch(t.tagID){case L.TD:case L.TH:case L.TR:Wn(e,t);break;case L.STYLE:case L.SCRIPT:case L.TEMPLATE:J(e,t);break;case L.COL:Hn(e,t);break;case L.FORM:qn(e,t);break;case L.TABLE:Gn(e,t);break;case L.TBODY:case L.TFOOT:case L.THEAD:Un(e,t);break;case L.INPUT:Kn(e,t);break;case L.CAPTION:Bn(e,t);break;case L.COLGROUP:Vn(e,t);break;default:Yn(e,t)}}function Jn(e,t){switch(t.tagID){case L.TABLE:e.openElements.hasInTableScope(L.TABLE)&&(e.openElements.popUntilTagNamePopped(L.TABLE),e._resetInsertionMode());break;case L.TEMPLATE:Y(e,t);break;case L.BODY:case L.CAPTION:case L.COL:case L.COLGROUP:case L.HTML:case L.TBODY:case L.TD:case L.TFOOT:case L.TH:case L.THEAD:case L.TR:break;default:Yn(e,t)}}function Yn(e,t){let n=e.fosterParentingEnabled;e.fosterParentingEnabled=!0,Ht(e,t),e.fosterParentingEnabled=n}function Xn(e,t){e.pendingCharacterTokens.push(t)}function Zn(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=!0}function Qn(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n0&&e.openElements.currentTagId===L.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===L.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===L.OPTGROUP&&e.openElements.pop();break;case L.OPTION:e.openElements.currentTagId===L.OPTION&&e.openElements.pop();break;case L.SELECT:e.openElements.hasInSelectScope(L.SELECT)&&(e.openElements.popUntilTagNamePopped(L.SELECT),e._resetInsertionMode());break;case L.TEMPLATE:Y(e,t)}}function pr(e,t){let n=t.tagID;n===L.CAPTION||n===L.TABLE||n===L.TBODY||n===L.TFOOT||n===L.THEAD||n===L.TR||n===L.TD||n===L.TH?(e.openElements.popUntilTagNamePopped(L.SELECT),e._resetInsertionMode(),e._processStartTag(t)):dr(e,t)}function mr(e,t){let n=t.tagID;n===L.CAPTION||n===L.TABLE||n===L.TBODY||n===L.TFOOT||n===L.THEAD||n===L.TR||n===L.TD||n===L.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(L.SELECT),e._resetInsertionMode(),e.onEndTag(t)):fr(e,t)}function hr(e,t){switch(t.tagID){case L.BASE:case L.BASEFONT:case L.BGSOUND:case L.LINK:case L.META:case L.NOFRAMES:case L.SCRIPT:case L.STYLE:case L.TEMPLATE:case L.TITLE:J(e,t);break;case L.CAPTION:case L.COLGROUP:case L.TBODY:case L.TFOOT:case L.THEAD:e.tmplInsertionModeStack[0]=G.IN_TABLE,e.insertionMode=G.IN_TABLE,Q(e,t);break;case L.COL:e.tmplInsertionModeStack[0]=G.IN_COLUMN_GROUP,e.insertionMode=G.IN_COLUMN_GROUP,nr(e,t);break;case L.TR:e.tmplInsertionModeStack[0]=G.IN_TABLE_BODY,e.insertionMode=G.IN_TABLE_BODY,ar(e,t);break;case L.TD:case L.TH:e.tmplInsertionModeStack[0]=G.IN_ROW,e.insertionMode=G.IN_ROW,sr(e,t);break;default:e.tmplInsertionModeStack[0]=G.IN_BODY,e.insertionMode=G.IN_BODY,Z(e,t)}}function gr(e,t){t.tagID===L.TEMPLATE&&Y(e,t)}function _r(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(L.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):Ot(e,t)}function vr(e,t){t.tagID===L.HTML?Z(e,t):br(e,t)}function yr(e,t){if(t.tagID===L.HTML){if(e.fragmentContext||(e.insertionMode=G.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===L.HTML){e._setEndLocation(e.openElements.items[0],t);let n=e.openElements.items[1];n&&!e.treeAdapter.getNodeSourceCodeLocation(n)?.endTag&&e._setEndLocation(n,t)}}else br(e,t)}function br(e,t){e.insertionMode=G.IN_BODY,Ht(e,t)}function xr(e,t){switch(t.tagID){case L.HTML:Z(e,t);break;case L.FRAMESET:e._insertElement(t,N.HTML);break;case L.FRAME:e._appendElement(t,N.HTML),t.ackSelfClosing=!0;break;case L.NOFRAMES:J(e,t)}}function Sr(e,t){t.tagID===L.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==L.FRAMESET&&(e.insertionMode=G.AFTER_FRAMESET))}function Cr(e,t){switch(t.tagID){case L.HTML:Z(e,t);break;case L.NOFRAMES:J(e,t)}}function wr(e,t){t.tagID===L.HTML&&(e.insertionMode=G.AFTER_AFTER_FRAMESET)}function Tr(e,t){t.tagID===L.HTML?Z(e,t):Er(e,t)}function Er(e,t){e.insertionMode=G.IN_BODY,Ht(e,t)}function Dr(e,t){switch(t.tagID){case L.HTML:Z(e,t);break;case L.NOFRAMES:J(e,t)}}function Or(e,t){t.chars=`�`,e._insertCharacters(t)}function kr(e,t){e._insertCharacters(t),e.framesetOk=!1}function Ar(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==N.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop()}function jr(e,t){if(rt(t))Ar(e),e._startTagOutsideForeignContent(t);else{let n=e._getAdjustedCurrentElement(),r=e.treeAdapter.getNamespaceURI(n);r===N.MATHML?it(t):r===N.SVG&&(st(t),at(t)),ot(t),t.selfClosing?e._appendElement(t,r):e._insertElement(t,r),t.ackSelfClosing=!0}}function Mr(e,t){if(t.tagID===L.P||t.tagID===L.BR){Ar(e),e._endTagOutsideForeignContent(t);return}for(let n=e.openElements.stackTop;n>0;n--){let r=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(r)===N.HTML){e._endTagOutsideForeignContent(t);break}let i=e.treeAdapter.getTagName(r);if(i.toLowerCase()===t.tagName){t.tagName=i,e.openElements.shortenToLength(n);break}}}I.AREA,I.BASE,I.BASEFONT,I.BGSOUND,I.BR,I.COL,I.EMBED,I.FRAME,I.HR,I.IMG,I.INPUT,I.KEYGEN,I.LINK,I.META,I.PARAM,I.SOURCE,I.TRACK,I.WBR;function Nr(e,t){return _t.parse(e,t)}var Pr=new Set(`b.strong.span.br.small.i.em.a.code.u.sup.sub.mark.s.del.ins.abbr.cite.q.kbd.samp.var.time.wbr.bdi.bdo.ruby.rt.rp.font.strike.big.tt`.split(`.`)),Fr=new Set([`script`,`style`,`textarea`]),Ir=new Set([`title`]),Lr=[`code`,`codebox`];function Rr(e){return Pr.has(e)}function zr(e){if(!e)return!1;let t=e.split(/\s+/);return Lr.some(e=>t.includes(e))}function Br(e){return`tagName`in e}function Vr(e){return`childNodes`in e?e.childNodes:[]}function Hr(e,t){return e.attrs.find(e=>e.name===t)?.value}function Ur(e){return Vr(e).some(e=>e.nodeName===`#text`&&`value`in e&&e.value.trim().length>0)}function Wr(e){return e.nodeName===`#text`?`value`in e?e.value:``:Br(e)&&Fr.has(e.tagName)?``:Vr(e).map(Wr).join(``)}function Gr(e){return zr(Hr(e,`class`))?`CODE_BLOCK`:null}function Kr(e){let t=Nr(e,{sourceCodeLocationInfo:!0}),n=[],r=0,i=(t,a)=>{if(Br(t)&&Fr.has(t.tagName))return;let o=Vr(t).filter(Br),s=Br(t)?a??Gr(t):a;if(Br(t)){let i=t.sourceCodeLocation,a=i?.startTag,c=i?.endTag,l=o.some(e=>!Rr(e.tagName));if(a&&!l&&Wr(t).trim().length>0){let o=a.endOffset,l=c?c.startOffset:i?.endOffset??o;n.push({id:r++,tag:t.tagName,innerStart:o,innerEnd:l,sourceInner:e.slice(o,l),sourceText:ne(Wr(t)),rcdata:Ir.has(t.tagName),locked:c?s:`AMBIGUOUS`});return}if(a&&c&&o.length===0){let i=a.endOffset,o=c.startOffset,l=e.slice(i,o);if(l.trim().length===0){let e=Ir.has(t.tagName)?null:`EMPTY_IN_SOURCE`;n.push({id:r++,tag:t.tagName,innerStart:i,innerEnd:o,sourceInner:l,sourceText:``,rcdata:Ir.has(t.tagName),locked:s??e});return}}}let c=!Ur(t);for(let e of o)(!Rr(e.tagName)||c)&&i(e,s)};return i(t,null),n}var qr=`data-ne-id`,Jr=`data-ne-locked`,Yr=`data-ne-dark`,Xr=`data-ne-revealed`,Zr=class extends Error{};function Qr(e,t){return t.map(t=>{let n=t.innerStart-1;if(e[n]!==`>`)throw new Zr(`cannot find the end of the opening tag: id=${t.id} <${t.tag}>`);return{start:n,end:n,text:` ${qr}="${t.id}"`}})}function $r(e){let t=/]*>/i.exec(e)??/]*>/i.exec(e);return t?t.index+t[0].length:0}function ei(e,t=``){return` - + +
diff --git a/viewer-ui/src/components/terminal/ComposeDialog.test.tsx b/viewer-ui/src/components/terminal/ComposeDialog.test.tsx new file mode 100644 index 00000000..e73a2fc5 --- /dev/null +++ b/viewer-ui/src/components/terminal/ComposeDialog.test.tsx @@ -0,0 +1,88 @@ +// @vitest-environment happy-dom + +import { cleanup, fireEvent, render, screen } from "@testing-library/react"; +import { afterEach, describe, expect, it, vi } from "vitest"; +import { useState } from "react"; +import { ComposeDialog } from "./ComposeDialog"; + +afterEach(cleanup); + +function mount(initial = "", sendResult = true) { + const onSend = vi.fn(() => sendResult); + const onClose = vi.fn(); + function Host() { + const [draft, setDraft] = useState(initial); + return ( + + ); + } + // Mounted inside a panel, as it is in the app, so the portal is what is tested. + render( +
+ +
, + ); + const field = screen.getByRole("textbox", { name: "message" }) as HTMLTextAreaElement; + return { field, onSend, onClose }; +} + +describe("ComposeDialog", () => { + it("send_is_disabled_until_there_is_something_to_send", () => { + const { field } = mount(); + const send = screen.getByRole("button", { name: /send/i }) as HTMLButtonElement; + expect(send.disabled).toBe(true); + fireEvent.change(field, { target: { value: " " } }); + expect(send.disabled).toBe(true); + fireEvent.change(field, { target: { value: "hi" } }); + expect(send.disabled).toBe(false); + }); + + it("clear_empties_the_field", () => { + const { field } = mount("some text"); + fireEvent.click(screen.getByRole("button", { name: "Clear" })); + expect(field.value).toBe(""); + }); + + it("return_alone_does_not_send", () => { + const { field, onSend } = mount("hi"); + fireEvent.keyDown(field, { key: "Enter" }); + expect(onSend).not.toHaveBeenCalled(); + }); + + it("cmd_or_ctrl_return_sends", () => { + const { field, onSend } = mount("hi"); + fireEvent.keyDown(field, { key: "Enter", metaKey: true }); + fireEvent.keyDown(field, { key: "Enter", ctrlKey: true }); + expect(onSend).toHaveBeenCalledTimes(2); + }); + + it("return_that_confirms_an_ime_composition_is_left_to_the_ime", () => { + const { field, onSend } = mount("한"); + fireEvent.keyDown(field, { key: "Enter", metaKey: true, isComposing: true }); + expect(onSend).not.toHaveBeenCalled(); + }); + + it("a_failed_send_says_nothing_went_out", () => { + mount("hi", false); + fireEvent.click(screen.getByRole("button", { name: /send/i })); + expect(screen.getByRole("alert").textContent).toMatch(/nothing was sent/); + }); + + it("escape_closes_the_dialog", () => { + const { onClose } = mount(); + fireEvent.keyDown(document, { key: "Escape" }); + expect(onClose).toHaveBeenCalled(); + }); + + it("the_dialog_is_rendered_outside_the_terminal_panel", () => { + const { field } = mount(); + expect(field.closest("[data-terminal-panel]")).toBeNull(); + expect(document.activeElement).toBe(field); + }); +}); diff --git a/viewer-ui/src/components/terminal/ComposeDialog.tsx b/viewer-ui/src/components/terminal/ComposeDialog.tsx new file mode 100644 index 00000000..c9798ef5 --- /dev/null +++ b/viewer-ui/src/components/terminal/ComposeDialog.tsx @@ -0,0 +1,136 @@ +import { useEffect, useRef, useState } from "react"; +import { createPortal } from "react-dom"; +import { XIcon } from "../icons/actions"; +import { isSendable } from "../../lib/composeInput"; + +const TITLE_ID = "nc-compose-title"; + +/** + * The form `useCompose` sends from. + * + * Portalled to the body, not rendered in the panel: the panel takes the + * keyboard back into its pane whenever focus is inside it (`focusIsTakeable`), + * and a resize — the soft keyboard opening for this very field — would pull it + * out of the textarea mid-word. + * + * Return is a new line; Cmd/Ctrl+Return sends. A key that ends an IME + * composition is left to the IME, or confirming a syllable would send it. + */ +export function ComposeDialog({ + label, + draft, + onChange, + onSend, + onClose, +}: { + /** Which pane this goes to, said in the title. */ + label: string; + draft: string; + onChange: (text: string) => void; + onSend: () => boolean; + onClose: () => void; +}) { + const fieldRef = useRef(null); + const [failed, setFailed] = useState(false); + const sendable = isSendable(draft); + + useEffect(() => { + const field = fieldRef.current; + field?.focus(); + // At the end, so a kept draft is continued rather than typed over. + field?.setSelectionRange(field.value.length, field.value.length); + }, []); + + useEffect(() => { + const onKey = (event: KeyboardEvent) => { + if (event.key === "Escape" && !event.isComposing) onClose(); + }; + document.addEventListener("keydown", onKey); + return () => document.removeEventListener("keydown", onKey); + }, [onClose]); + + const send = () => { + if (sendable) setFailed(!onSend()); + }; + + const clear = () => { + onChange(""); + setFailed(false); + fieldRef.current?.focus(); + }; + + return createPortal( +
+
e.stopPropagation()} + > +
+ + Send to {label} + + +
+