a Ra@sddlmZmZmZddlmZmZddlZddlm Z ddlm Z ddlm Z ddl m Z dd lmZdd lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z d d dZ!d!ddZ"ddZ#Gddde$Z%ej&ddZ'ddZ(d"ddZ)Gddde*Z+dS)#)absolute_importdivisionunicode_literals)with_metaclassviewkeysN) _inputstream) _tokenizer) treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElements cdataElementsrcdataElements tokenTypes tagTokenTypes namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesE_ReparseExceptionetreeTcKs(t|}t||d}|j|fi|S)aParse an HTML document as a string or file-like object into a tree :arg doc: the document to parse as a string or file-like object :arg treebuilder: the treebuilder to use when parsing :arg namespaceHTMLElements: whether or not to namespace HTML elements :returns: parsed tree Example: >>> from html5lib.html5parser import parse >>> parse('

This is a doc

') namespaceHTMLElements)r getTreeBuilder HTMLParserparse)doc treebuilderrkwargstbpr(Q/opt/alt/python39/lib/python3.9/site-packages/pip/_vendor/html5lib/html5parser.pyr"s  r"divcKs,t|}t||d}|j|fd|i|S)a#Parse an HTML fragment as a string or file-like object into a tree :arg doc: the fragment to parse as a string or file-like object :arg container: the container context to parse the fragment in :arg treebuilder: the treebuilder to use when parsing :arg namespaceHTMLElements: whether or not to namespace HTML elements :returns: parsed tree Example: >>> from html5lib.html5libparser import parseFragment >>> parseFragment('this is a fragment') r container)r r r! parseFragment)r#r+r$rr%r&r'r(r(r)r,1s  r,csGfdddt}|S)NcseZdZfddZdS)z-method_decorator_metaclass..Decoratedcs>|D]$\}}t|tjr$|}|||<qt||||SN)items isinstancetypes FunctionTypetype__new__)metaZ classnamebasesZ classDictZ attributeNameZ attributefunctionr(r)r3Ls   z5method_decorator_metaclass..Decorated.__new__N)__name__ __module__ __qualname__r3r(r6r(r) DecoratedKsr;)r2)r7r;r(r6r)method_decorator_metaclassJsr<c@seZdZdZd'ddZd(dd Zd d Zed d ZddZ ddZ ddZ ddZ ddZ d)ddZddZddZdd Zd!d"Zd#d$Zd%d&ZdS)*r!z]HTML parser Generates a tree structure from a stream of (possibly malformed) HTML. NFTcsH|_|durtd}||_g_fddt|D_dS)a :arg tree: a treebuilder class controlling the type of tree that will be returned. Built in treebuilders can be accessed through html5lib.treebuilders.getTreeBuilder(treeType) :arg strict: raise an exception when a parse error is encountered :arg namespaceHTMLElements: whether or not to namespace HTML elements :arg debug: whether or not to enable debug mode which logs things Example: >>> from html5lib.html5parser import HTMLParser >>> parser = HTMLParser() # generates parser with etree builder >>> parser = HTMLParser('lxml', strict=True) # generates parser with lxml builder which is strict Nrcsi|]\}}||jqSr()tree).0nameclsselfr(r) yz'HTMLParser.__init__..)strictr r r=errors getPhasesr.phases)rBr=rErdebugr(rAr)__init__]s    zHTMLParser.__init__r*cKsf||_||_||_tj|fd|i||_|z |Wn"ty`||Yn0dS)Nparser) innerHTMLModer+ scriptingr Z HTMLTokenizer tokenizerresetmainLoopr)rBstream innerHTMLr+rMr%r(r(r)_parse|s  zHTMLParser._parsecCs|jd|_g|_g|_d|_|jr|j|_ |j t vrL|j j |j _ n0|j tvrd|j j|j _ n|j dkr||j j|j _ n|jd|_|j|nd|_ |jd|_d|_d|_d|_dS)NFz no quirks plaintext beforeHtmlinitialT)r=rO firstStartTagrFlog compatModerLr+lowerrRrrN rcdataStatestater rawtextStateplaintextStaterHphaseinsertHtmlElementresetInsertionModeZ lastPhaseZbeforeRCDataPhase framesetOKrAr(r(r)rOs*         zHTMLParser.resetcCst|dsdS|jjjdjS)zName of the character encoding that was used to decode the input stream, or :obj:`None` if that is not determined yet rNNr)hasattrrNrQ charEncodingr?rAr(r(r)documentEncodings zHTMLParser.documentEncodingcCsJ|jdkr6|jtdkr6d|jvo4|jdtdvS|j|jftvSdS)Nannotation-xmlmathmlencoding)z text/htmlzapplication/xhtml+xml)r? namespacer attributes translaterrrBelementr(r(r)isHTMLIntegrationPoints    z!HTMLParser.isHTMLIntegrationPointcCs|j|jftvSr-)rir?rrlr(r(r)isMathMLTextIntegrationPointsz'HTMLParser.isMathMLTextIntegrationPointcCsftd}td}td}td}td}td}td}|jD]}d} |} | dur| } |jjrn|jjdnd} | r|| jnd} | r| jnd} | d }||kr|| d | d id} qLt|jjd ksb| |jj ksb| | r||kr|d t ddgvsb|||fvsb| t dkrF| dkrF||krF|d dksb| | rj||||fvrj|j}n |jd}||kr|| } qL||kr|| } qL||kr|| } qL||kr|| } qL||kr|| } qL||krL|| } qL||kr>| dr>| ds>|dd | d iq>d}g}|rb||j|j}|r,|j|vs,Jq,dS)N CharactersZSpaceCharactersStartTagEndTagCommentZDoctype ParseErrorr2datadatavarsrr?ZmglyphZ malignmarkrgrfsvginForeignContent selfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)rrNr= openElementsrir? parseErrorgetlendefaultNamespacero frozensetrrnr_rHprocessCharactersprocessSpaceCharactersprocessStartTag processEndTagprocessCommentprocessDoctypeappend processEOF)rBZCharactersTokenZSpaceCharactersTokenZ StartTagTokenZ EndTagTokenZ CommentTokenZ DoctypeTokenZParseErrorTokentokenZ prev_token new_token currentNodeZcurrentNodeNamespaceZcurrentNodeNamer2r_Z reprocessrHr(r(r)rPs                        zHTMLParser.mainLoopcOs&|j|ddg|Ri||jS)aParse a HTML document into a well-formed tree :arg stream: a file-like object or string containing the HTML to be parsed The optional encoding parameter must be a string that indicates the encoding. If specified, that encoding will be used, regardless of any BOM or later declaration (such as in a meta element). :arg scripting: treat noscript elements as if JavaScript was turned on :returns: parsed tree Example: >>> from html5lib.html5parser import HTMLParser >>> parser = HTMLParser() >>> parser.parse('

This is a doc

') FN)rSr=Z getDocumentrBrQargsr%r(r(r)r"szHTMLParser.parsecOs$|j|dg|Ri||jS)aZParse a HTML fragment into a well-formed tree fragment :arg container: name of the element we're setting the innerHTML property if set to None, default to 'div' :arg stream: a file-like object or string containing the HTML to be parsed The optional encoding parameter must be a string that indicates the encoding. If specified, that encoding will be used, regardless of any BOM or later declaration (such as in a meta element) :arg scripting: treat noscript elements as if JavaScript was turned on :returns: parsed tree Example: >>> from html5lib.html5libparser import HTMLParser >>> parser = HTMLParser() >>> parser.parseFragment('this is a fragment') T)rSr=Z getFragmentrr(r(r)r,szHTMLParser.parseFragmentXXX-undefined-errorcCs@|dur i}|j|jj||f|jrkeyvaluer(r(r)rCrDz*getPhases..log..csjdrt|dkr|d}d|di}|dtvrH|d|d<|jj|jjjj|jj j j|j jj|f|g|Ri|S|g|Ri|SdS)NZprocessrr2r?) r8 startswithrrrKrXrrNr\r_ __class__)rBrr%rinfor7Z type_namesr(r)wrappeds   z'getPhases..log..wrapped)rr.)r7rr(rr)rXszgetPhases..logcSs|r t|StSdSr-)r<r2)Z use_metaclassZmetaclass_funcr(r(r) getMetaclassszgetPhases..getMetaclassc@s\eZdZdZdZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS)zgetPhases..PhasezNBase class for helper object that implements each phase of processing )rKr=Z__startTagCacheZ __endTagCachecSs||_||_i|_i|_dSr-)rKr=_Phase__startTagCache_Phase__endTagCache)rBrKr=r(r(r)rJsz!getPhases..Phase.__init__cSstdSr-)NotImplementedErrorrAr(r(r)rsz#getPhases..Phase.processEOFcSs|j||jjddS)Nrur= insertCommentr|rr(r(r)rsz'getPhases..Phase.processCommentcSs|jddS)Nzunexpected-doctyperKr}rr(r(r)rsz'getPhases..Phase.processDoctypecSs|j|ddSNrvr= insertTextrr(r(r)rsz*getPhases..Phase.processCharacterscSs|j|ddSrrrr(r(r)rsz/getPhases..Phase.processSpaceCharacterscSsj|d}||jvr|j|}nD|j|}|j|<t|jt|jdkrb|jtt|jq2||SNr?g?)rstartTagHandlerrpopnextiterrBrr?funcr(r(r)rs  z(getPhases..Phase.processStartTagcSsf|jjs |ddkr |jd|dD],\}}||jjdjvr,||jjdj|<q,d|j_dS)Nr?rz non-html-rootrvrF)rKrWr}r.r=r|rjrBrattrrr(r(r) startTagHtmls  z%getPhases..Phase.startTagHtmlcSsj|d}||jvr|j|}nD|j|}|j|<t|jt|jdkrb|jtt|jq2||Sr)r endTagHandlerrrrrrr(r(r)rs  z&getPhases..Phase.processEndTagN)r8r9r:r __slots__rJrrrrrrrrr(r(r(r)Phases rc@sReZdZeZddZddZddZddZd d Z d d Z d dZ ddZ dS)zgetPhases..InitialPhasecSsdSr-r(rr(r(r)rsz6getPhases..InitialPhase.processSpaceCharacterscSs|j||jjdSr-r=rZdocumentrr(r(r)rsz.getPhases..InitialPhase.processCommentcSs|d}|d}|d}|d}|dks@|dus@|durL|dkrL|jd|durXd}|j||dkrv|t}|r|ddks|d s|d vs|d r|dus|r|d krd |j_n$|ds|d r|durd|j_|jj d|j_ dS)Nr?publicIdsystemIdcorrectrzabout:legacy-compatzunknown-doctype)7z*+//silmaril//dtd html pro v0r11 19970101//z4-//advasoft ltd//dtd html 3.0 aswedit + extensions//z*-//as//dtd html 3.0 aswedit + extensions//z-//ietf//dtd html 2.0 level 1//z-//ietf//dtd html 2.0 level 2//z&-//ietf//dtd html 2.0 strict level 1//z&-//ietf//dtd html 2.0 strict level 2//z-//ietf//dtd html 2.0 strict//z-//ietf//dtd html 2.0//z-//ietf//dtd html 2.1e//z-//ietf//dtd html 3.0//z-//ietf//dtd html 3.2 final//z-//ietf//dtd html 3.2//z-//ietf//dtd html 3//z-//ietf//dtd html level 0//z-//ietf//dtd html level 1//z-//ietf//dtd html level 2//z-//ietf//dtd html level 3//z"-//ietf//dtd html strict level 0//z"-//ietf//dtd html strict level 1//z"-//ietf//dtd html strict level 2//z"-//ietf//dtd html strict level 3//z-//ietf//dtd html strict//z-//ietf//dtd html//z(-//metrius//dtd metrius presentational//z5-//microsoft//dtd internet explorer 2.0 html strict//z.-//microsoft//dtd internet explorer 2.0 html//z0-//microsoft//dtd internet explorer 2.0 tables//z5-//microsoft//dtd internet explorer 3.0 html strict//z.-//microsoft//dtd internet explorer 3.0 html//z0-//microsoft//dtd internet explorer 3.0 tables//z#-//netscape comm. corp.//dtd html//z*-//netscape comm. corp.//dtd strict html//z*-//o'reilly and associates//dtd html 2.0//z3-//o'reilly and associates//dtd html extended 1.0//z;-//o'reilly and associates//dtd html extended relaxed 1.0//zN-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//zE-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//z$-//spyglass//dtd html 2.0 extended//z+-//sq//dtd html 2.0 hotmetal + extensions//z--//sun microsystems corp.//dtd hotjava html//z4-//sun microsystems corp.//dtd hotjava strict html//z-//w3c//dtd html 3 1995-03-24//z-//w3c//dtd html 3.2 draft//z-//w3c//dtd html 3.2 final//z-//w3c//dtd html 3.2//z-//w3c//dtd html 3.2s draft//z-//w3c//dtd html 4.0 frameset//z#-//w3c//dtd html 4.0 transitional//z(-//w3c//dtd html experimental 19960712//z&-//w3c//dtd html experimental 970421//z-//w3c//dtd w3 html//z-//w3o//dtd w3 html 3.0//z#-//webtechs//dtd mozilla html 2.0//z-//webtechs//dtd mozilla html//)z$-//w3o//dtd w3 html strict 3.0//en//z"-/w3c/dtd html 4.0 transitional/enr)z -//w3c//dtd html 4.01 frameset//z$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtdquirks)z -//w3c//dtd xhtml 1.0 frameset//z$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrU) rKr}r=Z insertDoctyperkrrrZrYrHr_)rBrr?rrrr(r(r)rsX   9<?@@ A z.getPhases..InitialPhase.processDoctypecSsd|j_|jjd|j_dS)NrrU)rKrYrHr_rAr(r(r) anythingElseZsz,getPhases..InitialPhase.anythingElsecSs|jd||S)Nzexpected-doctype-but-got-charsrKr}rrr(r(r)r^s z1getPhases..InitialPhase.processCharacterscSs"|jdd|di||S)Nz"expected-doctype-but-got-start-tagr?rrr(r(r)rcs  z/getPhases..InitialPhase.processStartTagcSs"|jdd|di||S)Nz expected-doctype-but-got-end-tagr?rrr(r(r)ris  z-getPhases..InitialPhase.processEndTagcSs|jd|dS)Nzexpected-doctype-but-got-eofTrrAr(r(r)ros z*getPhases..InitialPhase.processEOFN) r8r9r:tuplerrrrrrrrrr(r(r(r) InitialPhases_rc@sJeZdZeZddZddZddZddZd d Z d d Z d dZ dS)z"getPhases..BeforeHtmlPhasecSs&|jtdd|jjd|j_dS)Nrrqr)r=Z insertRootimpliedTagTokenrKrHr_rAr(r(r)r`xsz4getPhases..BeforeHtmlPhase.insertHtmlElementcSs |dSNTr`rAr(r(r)r}sz-getPhases..BeforeHtmlPhase.processEOFcSs|j||jjdSr-rrr(r(r)rsz1getPhases..BeforeHtmlPhase.processCommentcSsdSr-r(rr(r(r)rsz9getPhases..BeforeHtmlPhase.processSpaceCharacterscSs ||Sr-rrr(r(r)rsz4getPhases..BeforeHtmlPhase.processCharacterscSs |ddkrd|j_||S)Nr?rT)rKrWr`rr(r(r)rs z2getPhases..BeforeHtmlPhase.processStartTagcSs4|ddvr$|jdd|din ||SdS)Nr?rrrbrzunexpected-end-tag-before-html)rKr}r`rr(r(r)rs   z0getPhases..BeforeHtmlPhase.processEndTagN) r8r9r:rrr`rrrrrrr(r(r(r)BeforeHtmlPhasetsrc@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e defde fgZe e_e de fgZe e_dS)z"getPhases..BeforeHeadPhasecSs|tdddS)NrrqT startTagHeadrrAr(r(r)rsz-getPhases..BeforeHeadPhase.processEOFcSsdSr-r(rr(r(r)rsz9getPhases..BeforeHeadPhase.processSpaceCharacterscSs|tdd|SNrrqrrr(r(r)rsz4getPhases..BeforeHeadPhase.processCharacterscSs|jjd|SNrrKrHrrr(r(r)rsz/getPhases..BeforeHeadPhase.startTagHtmlcSs0|j||jjd|j_|jjd|j_dS)NruinHead)r=rr| headPointerrKrHr_rr(r(r)rs z/getPhases..BeforeHeadPhase.startTagHeadcSs|tdd|Srrrr(r(r) startTagOthersz0getPhases..BeforeHeadPhase.startTagOthercSs|tdd|Srrrr(r(r)endTagImplyHeadsz2getPhases..BeforeHeadPhase.endTagImplyHeadcSs|jdd|didS)Nzend-tag-after-implied-rootr?rrr(r(r) endTagOthers z.getPhases..BeforeHeadPhase.endTagOtherrrrN)r8r9r:rrrrrrrrrrr MethodDispatcherrdefaultrr(r(r(r)BeforeHeadPhases$rc @seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZedefd e fd!e fd"e fd#efd$e fd%e fd&efgZee_ed&efd'efgZee_d(S))zgetPhases..InHeadPhasecSs |dSrrrAr(r(r)rsz)getPhases..InHeadPhase.processEOFcSs ||Sr-rrr(r(r)rsz0getPhases..InHeadPhase.processCharacterscSs|jjd|Srrrr(r(r)rsz+getPhases..InHeadPhase.startTagHtmlcSs|jddS)Nz!two-heads-are-not-better-than-onerrr(r(r)rsz+getPhases..InHeadPhase.startTagHeadcSs$|j||jjd|d<dSNTr{r=rr|rrr(r(r)startTagBaseLinkCommands  z6getPhases..InHeadPhase.startTagBaseLinkCommandcSs|j||jjd|d<|d}|jjjjddkrd|vrZ|jjj|dnVd|vrd|vr|d d krt |d d }t |}|}|jjj|dS) NTr{rvrZ tentativecharsetZcontentz http-equivz content-typezutf-8)r=rr|rrKrNrQrdZchangeEncodingrZrZ EncodingBytesencodeZContentAttrParserr")rBrrjrvrKcodecr(r(r) startTagMetas    z+getPhases..InHeadPhase.startTagMetacSs|j|ddS)NrrKrrr(r(r) startTagTitlesz,getPhases..InHeadPhase.startTagTitlecSs|j|ddS)Nrrrr(r(r)startTagNoFramesStylesz4getPhases..InHeadPhase.startTagNoFramesStylecSs8|jjr|j|dn|j||jjd|j_dS)NrinHeadNoscript)rKrMrr=rrHr_rr(r(r)startTagNoscripts z/getPhases..InHeadPhase.startTagNoscriptcSs<|j||jjj|jj_|jj|j_|jjd|j_dS)Nr) r=rrKrNZscriptDataStater\r_rrHrr(r(r)startTagScripts  z-getPhases..InHeadPhase.startTagScriptcSs ||Sr-rrr(r(r)rsz,getPhases..InHeadPhase.startTagOthercSs:|jjj}|jdks&Jd|j|jjd|j_dS)NrzExpected head got %s afterHeadrKr=r|rr?rHr_rBrrr(r(r) endTagHead sz)getPhases..InHeadPhase.endTagHeadcSs ||Sr-rrr(r(r)endTagHtmlBodyBrsz/getPhases..InHeadPhase.endTagHtmlBodyBrcSs|jdd|didSNunexpected-end-tagr?rrr(r(r)rsz*getPhases..InHeadPhase.endTagOthercSs|tddS)Nr)rrrAr(r(r)rsz+getPhases..InHeadPhase.anythingElsertitle)noframesstylenoscriptscript)basebasefontbgsoundcommandlinkr4r)rrrN)r8r9r:rrrrrrrrrrrrrrrrrr rrrrr(r(r(r) InHeadPhasesD rc@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZede fde fde fgZe e_ede fdefgZee_dS)z&getPhases..InHeadNoscriptPhasecSs|jd|dS)Nzeof-in-head-noscriptTrrAr(r(r)r/s z1getPhases..InHeadNoscriptPhase.processEOFcSs|jjd|SNr)rKrHrrr(r(r)r4sz5getPhases..InHeadNoscriptPhase.processCommentcSs|jd||S)Nzchar-in-head-noscriptrrr(r(r)r7s z8getPhases..InHeadNoscriptPhase.processCharacterscSs|jjd|SrrKrHrrr(r(r)r<sz=getPhases..InHeadNoscriptPhase.processSpaceCharacterscSs|jjd|Srrrr(r(r)r?sz3getPhases..InHeadNoscriptPhase.startTagHtmlcSs|jjd|Srrrr(r(r)rBsz>getPhases..InHeadNoscriptPhase.startTagBaseLinkCommandcSs|jdd|didSNunexpected-start-tagr?rrr(r(r)startTagHeadNoscriptEsz;getPhases..InHeadNoscriptPhase.startTagHeadNoscriptcSs"|jdd|di||SNzunexpected-inhead-noscript-tagr?rrr(r(r)rHsz4getPhases..InHeadNoscriptPhase.startTagOthercSs:|jjj}|jdks&Jd|j|jjd|j_dS)Nr zExpected noscript got %srrrr(r(r)endTagNoscriptMsz5getPhases..InHeadNoscriptPhase.endTagNoscriptcSs"|jdd|di||Srrrr(r(r)endTagBrRsz/getPhases..InHeadNoscriptPhase.endTagBrcSs|jdd|didSrrrr(r(r)rWsz2getPhases..InHeadNoscriptPhase.endTagOthercSs|tddS)Nr )rrrAr(r(r)rZsz3getPhases..InHeadNoscriptPhase.anythingElser)r r rr4rr)rr r rN)r8r9r:rrrrrrrrrrrrrrr rrrrr(r(r(r)InHeadNoscriptPhase,s0rc@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZedefdefde fde fde fgZe e_ede fgZee_dS)z!getPhases..AfterHeadPhasecSs |dSrrrAr(r(r)rnsz,getPhases..AfterHeadPhase.processEOFcSs ||Sr-rrr(r(r)rrsz3getPhases..AfterHeadPhase.processCharacterscSs|jjd|Srrrr(r(r)rvsz.getPhases..AfterHeadPhase.startTagHtmlcSs(d|j_|j||jjd|j_dS)NFr)rKrbr=rrHr_rr(r(r) startTagBodyys z.getPhases..AfterHeadPhase.startTagBodycSs |j||jjd|j_dS)Nr)r=rrKrHr_rr(r(r)startTagFrameset~s z2getPhases..AfterHeadPhase.startTagFramesetcSsr|jdd|di|jj|jj|jjd||jjdddD] }|jdkrL|jj |qnqLdS)Nz#unexpected-start-tag-out-of-my-headr?rrur) rKr}r=r|rrrHrr?removerr(r(r)startTagFromHeads  z2getPhases..AfterHeadPhase.startTagFromHeadcSs|jdd|didSrrrr(r(r)rsz.getPhases..AfterHeadPhase.startTagHeadcSs ||Sr-rrr(r(r)rsz/getPhases..AfterHeadPhase.startTagOthercSs ||Sr-rrr(r(r)rsz2getPhases..AfterHeadPhase.endTagHtmlBodyBrcSs|jdd|didSrrrr(r(r)rsz-getPhases..AfterHeadPhase.endTagOthercSs.|jtdd|jjd|j_d|j_dS)NrrqrT)r=rrrKrHr_rbrAr(r(r)rsz.getPhases..AfterHeadPhase.anythingElserrr) r r r rr4rr rrr)rrrN)r8r9r:rrrrrrrrrrrrrr rrrrr(r(r(r)AfterHeadPhaseks4  rc$seZdZdZfddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2d`daZ3dbdcZ4dddeZ5dfdgZ6e78dhj9fdie fdje fdke fdlefe:efdmefdnefdoefdpefdqefdrefdsefdtefduefdvefdwefdxefdyefdzefd{efd|efd}e fd~e!fde"fde#fde$fde&fde'fde%fde(fde)fde*fg!Z;e+e;_S)zgetPhases..InBodyPhase)rcs"t|j|i||j|_dSr-)superrJprocessSpaceCharactersNonPrerrBrr%) InBodyPhaserr(r)rJsz'getPhases..InBodyPhase.__init__cSs$|j|jko"|j|jko"|j|jkSr-)r?rirj)rBZnode1Znode2r(r(r)isMatchingFormattingElements    z:getPhases..InBodyPhase.isMatchingFormattingElementcSs|j||jjd}g}|jjdddD](}|tur@qXq.|||r.||q.t|dkshJt|dkr|jj|d|jj|dS)Nru) r=rr|activeFormattingElementsr r#rrr)rBrrmZmatchingElementsrr(r(r)addFormattingElements     z3getPhases..InBodyPhase.addFormattingElementcSs>td}|jjdddD]}|j|vr|jdq:qdS)N) dddtlir'rrrrrrrrruz expected-closing-tag-but-got-eof)rr=r|r?rKr})rBZallowed_elementsrr(r(r)rs   z)getPhases..InBodyPhase.processEOFcSsf|d}|j|_|drH|jjdjdvrH|jjdsH|dd}|rb|j|j|dS)Nrv ru)prelistingtextarear) r rrr=r|r?Z hasContent#reconstructActiveFormattingElementsr)rBrrvr(r(r)!processSpaceCharactersDropNewlines   z@getPhases..InBodyPhase.processSpaceCharactersDropNewlinecSsT|ddkrdS|j|j|d|jjrPtdd|dDrPd|j_dS)NrvcSsg|] }|tvqSr(r r>charr(r(r) szDgetPhases..InBodyPhase.processCharacters..F)r=r.rrKrbanyrr(r(r)rs  z0getPhases..InBodyPhase.processCharacterscSs|j|j|ddSr)r=r.rrr(r(r)r s z;getPhases..InBodyPhase.processSpaceCharactersNonPrecSs|jjd|Srrrr(r(r)startTagProcessInHeadsz4getPhases..InBodyPhase.startTagProcessInHeadcSs|jdddit|jjdks4|jjdjdkrB|jjsJnBd|j_|dD],\}}||jjdj vrV||jjdj |<qVdS)Nrr?rrFrv) rKr}rr=r|r?rRrbr.rjrr(r(r)rsz+getPhases..InBodyPhase.startTagBodycSs|jdddit|jjdks4|jjdjdkrB|jjsJnp|jjsLnf|jjdjrv|jjdj |jjd|jjdjdkr|jj qv|j ||jj d|j_ dS) Nrr?rrrrurr)rKr}rr=r|r?rRrbparent removeChildrrrHr_rr(r(r)rs" z/getPhases..InBodyPhase.startTagFramesetcSs.|jjdddr|td|j|dSNr'buttonvariant)r=elementInScopeendTagPrrrr(r(r)startTagClosePsz-getPhases..InBodyPhase.startTagClosePcSs>|jjdddr|td|j|d|j_|j|_dS)Nr'r:r;F) r=r=r>rrrKrbr/rrr(r(r)startTagPreListings  z1getPhases..InBodyPhase.startTagPreListingcSsZ|jjr|jdddin:|jjdddr:|td|j||jjd|j_dS)Nrr?formr'r:r;ru) r= formPointerrKr}r=r>rrr|rr(r(r) startTagForms  z+getPhases..InBodyPhase.startTagFormcSsd|j_dgddgddgd}||d}t|jjD]@}|j|vr^|jjt|jdqx|j t vr6|jdvr6qxq6|jj d d d r|jjtd d|j |dS) NFr)r(r')r)r(r'r?rr)addressr*r'r'r:r;) rKrbreversedr=r|r?r_rr nameTuplerr=r)rBrZ stopNamesMapZ stopNamesrr(r(r)startTagListItem&s*    z/getPhases..InBodyPhase.startTagListItemcSs>|jjdddr|td|j||jjj|jj_dSr9) r=r=r>rrrKrNr^r\rr(r(r)startTagPlaintext<s z0getPhases..InBodyPhase.startTagPlaintextcSsb|jjdddr|td|jjdjtvrR|jdd|di|jj |j |dS)Nr'r:r;rurr?) r=r=r>rr|r?rrKr}rrrr(r(r)startTagHeadingBs  z.getPhases..InBodyPhase.startTagHeadingcSs~|jd}|rf|jdddd|td||jjvrL|jj|||jjvrf|jj||j | |dS)Na$unexpected-start-tag-implies-end-tagZ startNameZendName) r=!elementInActiveFormattingElementsrKr}endTagFormattingrr|rr%r.r&)rBrZ afeAElementr(r(r) startTagAJs    z(getPhases..InBodyPhase.startTagAcSs|j||dSr-)r=r.r&rr(r(r)startTagFormattingWs z1getPhases..InBodyPhase.startTagFormattingcSsP|j|jdrB|jdddd|td|j||dS)NnobrrKrL)r=r.r=rKr}rrr&rr(r(r) startTagNobr[s   z+getPhases..InBodyPhase.startTagNobrcSsT|jdr2|jdddd|td|S|j|j|d|j_dS)Nr:rKrLF) r=r=rKr}rrr.rrbrr(r(r)startTagButtones   z-getPhases..InBodyPhase.startTagButtoncSs0|j|j||jjtd|j_dSNF)r=r.rr%rr rKrbrr(r(r)startTagAppletMarqueeObjectps  z:getPhases..InBodyPhase.startTagAppletMarqueeObjectcSsB|jjdddr|td|jd|j_|j|ddS)Nr'r:r;Fr)r=r=r>rr.rKrbrrr(r(r) startTagXmpvs  z*getPhases..InBodyPhase.startTagXmpcSsR|jjdkr*|jjdddr*|td|j|d|j_|jjd|j_ dS)Nrr'r:r;Fr) rKrYr=r=rrrrbrHr_rr(r(r) startTagTable}s   z,getPhases..InBodyPhase.startTagTablecSs6|j|j||jjd|d<d|j_dS)NTr{F)r=r.rr|rrKrbrr(r(r)startTagVoidFormattings    z5getPhases..InBodyPhase.startTagVoidFormattingcSs@|jj}||d|dvr<|ddtdkr<||j_dS)Nr2rvhidden)rKrbrXrkr)rBrrbr(r(r) startTagInputs   z,getPhases..InBodyPhase.startTagInputcSs$|j||jjd|d<dSrrrr(r(r)startTagParamSources  z2getPhases..InBodyPhase.startTagParamSourcecSsJ|jjdddr|td|j||jjd|d<d|j_dS)Nr'r:r;Tr{F) r=r=r>rrr|rrKrbrr(r(r) startTagHrs   z)getPhases..InBodyPhase.startTagHrcSs6|jdddd|tdd|d|dddS) Nzunexpected-start-tag-treated-asimageimgZ originalNameZnewNamerqrvrzrjrz)rKr}rrrr(r(r) startTagImages z,getPhases..InBodyPhase.startTagImagecSs|jdddi|jjrdSi}d|dvr>|dd|d<|tdd|d|td d|td dd |dvr|dd }nd }|td |d|d}d|vr|d=d |vr|d =d|d<|tdd||dd| td |td d| tddS)Nzdeprecated-tagr?isindexactionrvrArq)rjhrZlabelpromptz3This is a searchable index. Enter search keywords: rpr2rvinputrzr`) rKr}r=rBrrrrcopyr)rBrZ form_attrsrerjr(r(r)startTagIsIndexs<      z.getPhases..InBodyPhase.startTagIsIndexcSs0|j||jjj|jj_|j|_d|j_dSrT) r=rrKrNr[r\r/rrbrr(r(r)startTagTextareas z/getPhases..InBodyPhase.startTagTextareacSsd|j_||dSrT)rKrbstartTagRawtextrr(r(r)startTagIFramesz-getPhases..InBodyPhase.startTagIFramecSs"|jjr||n ||dSr-)rKrMrkrrr(r(r)rs z/getPhases..InBodyPhase.startTagNoscriptcSs|j|ddS)z8iframe, noembed noframes, noscript(if scripting enabled)rNrrr(r(r)rksz.getPhases..InBodyPhase.startTagRawtextcSs@|jjdjdkr$|jjtd|j|jj|dSNruoption) r=r|r?rKr_rrr.rrr(r(r) startTagOpts z*getPhases..InBodyPhase.startTagOptcSs|j|j|d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfvrx|jjd|j_n|jjd |j_dS) NFrrrrrrinSelectInTabler)r=r.rrKrbr_rHrr(r(r)startTagSelects       z-getPhases..InBodyPhase.startTagSelectcSsB|jdr2|j|jjdjdkr2|j|j|dS)Nrubyru)r=r=generateImpliedEndTagsr|r?rKr}rrr(r(r) startTagRpRts    z+getPhases..InBodyPhase.startTagRpRtcSsZ|j|j||j|td|d<|j||drV|jjd|d<dS)NrgrirzTr{) r=r.rKrrrrr|rrr(r(r) startTagMaths      z+getPhases..InBodyPhase.startTagMathcSsZ|j|j||j|td|d<|j||drV|jjd|d<dS)NrxrirzTr{) r=r.rKrrrrr|rrr(r(r) startTagSvgs      z*getPhases..InBodyPhase.startTagSvgcSs|jdd|didS)a5 Elements that should be children of other elements that have a different insertion mode; here they are ignored "caption", "col", "colgroup", "frame", "frameset", "head", "option", "optgroup", "tbody", "td", "tfoot", "th", "thead", "tr", "noscript" zunexpected-start-tag-ignoredr?Nrrr(r(r)startTagMisplacedsz0getPhases..InBodyPhase.startTagMisplacedcSs|j|j|dSr-)r=r.rrr(r(r)rs z,getPhases..InBodyPhase.startTagOthercSs|jjdddsD|tdd|jdddi|tddnT|jd|jjdj dkrt|jdddi|jj }|j dkr|jj }qdS) Nr'r:r;rqrr?rrru) r=r=r?rrKr}r>rsr|r?rrr(r(r)r>s   z&getPhases..InBodyPhase.endTagPcSs~|jds|jdS|jjdjdkrj|jjddD],}|jtdvr<|jdd|jdqjq<|jjd|j_dS)Nrru)r'r(r)optgrouprnr'rprtrrrrrrrr$expected-one-end-tag-but-got-anotherZgotNameZ expectedName afterBody) r=r=rKr}r|r?rrHr_rr(r(r) endTagBody)s   z)getPhases..InBodyPhase.endTagBodycSs"|jdr|td|SdS)Nr)r=r=rrrr(r(r) endTagHtml;s z)getPhases..InBodyPhase.endTagHtmlcSs|ddkr|j|_|j|d}|r2|j|jjdj|dkr^|jdd|di|r|jj }|j|dkr|jj }qndS)Nr?r+ruend-tag-too-early) r rr=r=rsr|r?rKr}r)rBrZinScoperr(r(r) endTagBlockAs   z*getPhases..InBodyPhase.endTagBlockcSsv|jj}d|j_|dus$|j|s8|jdddin:|j|jjd|krd|jdddi|jj|dS)Nrr?rAruzend-tag-too-early-ignored)r=rBr=rKr}rsr|rrr(r(r) endTagFormOs z)getPhases..InBodyPhase.endTagFormcSs|ddkrd}nd}|jj|d|dsB|jdd|dinf|jj|dd|jjdj|dkr|jdd|di|jj}|j|dkr|jj}qdS) Nr?r)listr;rZexcluderur)r=r=rKr}rsr|r?r)rBrr<rr(r(r)endTagListItem\s   z-getPhases..InBodyPhase.endTagListItemcSstD]}|j|r|jq$q|jjdj|dkrP|jdd|ditD]8}|j|rT|jj}|jtvr|jj}qpqqTdS)Nrur?r) rr=r=rsr|r?rKr}r)rBritemr(r(r) endTagHeadingms     z,getPhases..InBodyPhase.endTagHeadingcSsd}|dkr |d7}|j|d}|rD||jjvrR|j|jsR||dS||jjvr|jdd|di|jj |dS|j|js|jdd|didS||jjdkr|jd d|di|jj |}d}|jj|dD]}|j t vr|}qq|durR|jj }||kr@|jj }q&|jj |dS|jj|d}|jj |}|} } d} |jj | } | d krX| d7} | d8} |jj| } | |jjvr|jj | q| |krސqX| |kr|jj | d}| } | |jj|jj | <| |jj|jj | <| } | jrF| j| | | | } q| jrl| j| |jtd vr|j\}}|| |n || |} || || |jj ||jj|| |jj ||jj|jj |d| qdS) z)The much-feared adoption agency algorithmrrr?Nzadoption-agency-1.2zadoption-agency-4.4ruzadoption-agency-1.3r$rrrrr)r=rMr|r=r?rrKr}r%rindexrFrrZ cloneNoder7r8Z appendChildrZgetTableMisnestedNodePosition insertBeforeZreparentChildreninsert)rBrZouterLoopCounterZformattingElementZafeIndexZ furthestBlockrmZcommonAncestorZbookmarkZlastNoderZinnerLoopCounterrZcloner7rr(r(r)rN|s                      z/getPhases..InBodyPhase.endTagFormattingcSs|j|dr|j|jjdj|dkrF|jdd|di|j|dr|jj}|j|dkr~|jj}qb|jdS)Nr?rur) r=r=rsr|r?rKr}rclearActiveFormattingElements)rBrrmr(r(r)endTagAppletMarqueeObjects  z8getPhases..InBodyPhase.endTagAppletMarqueeObjectcSs@|jdddd|j|jtdd|jjdS)Nzunexpected-end-tag-treated-asrz br elementr_rq)rKr}r=r.rrr|rrr(r(r)r+s  z'getPhases..InBodyPhase.endTagBrcSs|jjdddD]}|j|dkrz|jj|dd|jjdj|dkrb|jdd|di|jj|krtqbqq|jtvr|jdd|diqqdS)Nrur?rr) r=r|r?rsrKr}rrFrrr(r(r)r2s z*getPhases..InBodyPhase.endTagOtherr) r r r rrr4r rrrr)rDarticleaside blockquotecenterdetailsdirr*dlfieldset figcaptionfigurefooterheaderhgroupmainmenunavolr'sectionsummaryul)r+r,rA)r)r'r(rTrJ) bbigcodeemfontissmallstrikestrongtturQr:)ZappletZmarqueeobjectZxmpr)Zarearembedr^keygenZwbr)ZparamsourceZtrackrgrdr]rbr-Ziframer )Znoembedrr)rzr{)rnryZmathrx) rcolrframerrrrrrr)rDrrrr:rrZdialogrr*rrrrrrrr,rrrrr+rrrr')r'r(r))rJrrrrrrrQrrrrrrr)?r8r9r:rrJr#r&rr/rr r6rrr?r@rCrGrHrIrOrPrRrSrUrVrWrXrZr[r\rarirjrlrrkrorqrtrurvrwrr>rrrrrrrNrrrr rrrrrr __classcell__r()r"rrr)r"s             $ -r"c@s`eZdZeZddZddZddZddZd d Z e gZ ee _ e d efgZe e_ d S) zgetPhases..TextPhasecSs|j|ddSrrrr(r(r)rsz.getPhases..TextPhase.processCharacterscSs8|jdd|jjdji|jj|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr?ruT)rKr}r=r|r?rrr_rAr(r(r)rs   z'getPhases..TextPhase.processEOFcSsdsJd|ddS)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder?r(rr(r(r)rsz*getPhases..TextPhase.startTagOthercSs*|jj}|jdksJ|jj|j_dS)Nr )r=r|rr?rKrr_rr(r(r) endTagScripts z)getPhases..TextPhase.endTagScriptcSs|jj|jj|j_dSr-)r=r|rrKrr_rr(r(r)rs z(getPhases..TextPhase.endTagOtherr N)r8r9r:rrrrrrrr rrrrr(r(r(r) TextPhases rc s eZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zed%jfd&e fd'e fd(e fd)e fd*efd+efd,efd-efd.efg Zee_ed+efd/efgZee_d0S)1zgetPhases..InTablePhasecSs$|jjdjdvr |jjqdS)Nru)rr)r=r|r?rrAr(r(r)clearStackToTableContextsz8getPhases..InTablePhase.clearStackToTableContextcSs0|jjdjdkr |jdn |jjs,JdS)Nrurz eof-in-tabler=r|r?rKr}rRrAr(r(r)rsz*getPhases..InTablePhase.processEOFcSs4|jj}|jjd|j_||jj_|jj|dSN inTableText)rKr_rHrrrBrrr(r(r)rs z6getPhases..InTablePhase.processSpaceCharacterscSs4|jj}|jjd|j_||jj_|jj|dSr)rKr_rHrrrr(r(r)rs z1getPhases..InTablePhase.processCharacterscSs&d|j_|jjd|d|j_dS)NTrF)r=insertFromTablerKrHrrr(r(r)rsz*getPhases..InTablePhase.insertTextcSs6||jjt|j||jjd|j_dS)Nr) rr=r%rr rrKrHr_rr(r(r)startTagCaptions z/getPhases..InTablePhase.startTagCaptioncSs(||j||jjd|j_dS)Nrrr=rrKrHr_rr(r(r)startTagColgroups z0getPhases..InTablePhase.startTagColgroupcSs|tdd|S)Nrrq)rrrr(r(r) startTagColsz+getPhases..InTablePhase.startTagColcSs(||j||jjd|j_dSNrrrr(r(r)startTagRowGroups z0getPhases..InTablePhase.startTagRowGroupcSs|tdd|S)Nrrq)rrrr(r(r)startTagImplyTbodysz2getPhases..InTablePhase.startTagImplyTbodycSs6|jdddd|jjtd|jjs2|SdS)NrKrrL)rKr}r_rrrRrr(r(r)rWs z-getPhases..InTablePhase.startTagTablecSs|jjd|Srrrr(r(r)startTagStyleScriptsz3getPhases..InTablePhase.startTagStyleScriptcSsVd|dvrH|ddtdkrH|jd|j||jjn ||dS)Nr2rvrYz unexpected-hidden-input-in-table) rkrrKr}r=rr|rrrr(r(r)rZs   z-getPhases..InTablePhase.startTagInputcSsD|jd|jjdur@|j||jjd|j_|jjdS)Nzunexpected-form-in-tableru)rKr}r=rBrr|rrr(r(r)rCs    z,getPhases..InTablePhase.startTagFormcSs<|jdd|did|j_|jjd|d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor?TrF)rKr}r=rrHrrr(r(r)rsz-getPhases..InTablePhase.startTagOthercSs|jjdddr|j|jjdjdkrJ|jdd|jjdjd|jjdjdkrj|jjqJ|jj|jn|jj sJ|jdS)Nrr;ruzend-tag-too-early-namedr}) r=r=rsr|r?rKr}rrarRrr(r(r) endTagTables     z+getPhases..InTablePhase.endTagTablecSs|jdd|didSrrrr(r(r) endTagIgnoresz,getPhases..InTablePhase.endTagIgnorecSs<|jdd|did|j_|jjd|d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor?TrF)rKr}r=rrHrrr(r(r)rsz+getPhases..InTablePhase.endTagOtherrrrrrrr)rrrr)rr rgrA) rrrrrrrrrrrN)r8r9r:rrrrrrrrrrrrrWrrZrCrrrrr rrrrrr(rr(r) InTablePhasesN   rcsZeZdZdZfddZddZddZdd Zd d Zd d Z ddZ ddZ Z S)z#getPhases..InTableTextPhase)rcharacterTokenscs&t|j|i|d|_g|_dSr-)rrJrrr!)InTableTextPhaserr(r)rJ6sz,getPhases..InTableTextPhase.__init__cSsdddd|jD}tdd|DrJtd|d}|jjd|n|rZ|j|g|_dS)NrcSsg|] }|dqS)rvr(r>rr(r(r)r4<rDzGgetPhases..InTableTextPhase.flushCharacters..cSsg|] }|tvqSr(r1rr(r(r)r4=rDrprfr)joinrr5rrKrHrr=)rBrvrr(r(r)flushCharacters;s z3getPhases..InTableTextPhase.flushCharacterscSs||j|j_|Sr-rrrKr_rr(r(r)rDs z2getPhases..InTableTextPhase.processCommentcSs||j|j_dSrrrAr(r(r)rIs z.getPhases..InTableTextPhase.processEOFcSs |ddkrdS|j|dSNrvr0rrrr(r(r)rNs z5getPhases..InTableTextPhase.processCharacterscSs|j|dSr-rrr(r(r)rSsz:getPhases..InTableTextPhase.processSpaceCharacterscSs||j|j_|Sr-rrr(r(r)rXs z3getPhases..InTableTextPhase.processStartTagcSs||j|j_|Sr-rrr(r(r)r]s z1getPhases..InTableTextPhase.processEndTag) r8r9r:rrJrrrrrrrrr()rrr)r3s rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ edjfdefgZe e_ede fde fde fgZe e_dS)z!getPhases..InCaptionPhasecSs|jjddd S)Nrrr;r=r=rAr(r(r)ignoreEndTagCaptionfsz5getPhases..InCaptionPhase.ignoreEndTagCaptioncSs|jjddSrrKrHrrAr(r(r)risz,getPhases..InCaptionPhase.processEOFcSs|jjd|SrrKrHrrr(r(r)rlsz3getPhases..InCaptionPhase.processCharacterscSs0|j|}|jjtd|s,|SdSNrrKr}rr_rrrBr ignoreEndTagr(r(r)startTagTableElementos  z6getPhases..InCaptionPhase.startTagTableElementcSs|jjd|Srrrr(r(r)rwsz/getPhases..InCaptionPhase.startTagOthercSs|s|j|jjdjdkrB|jdd|jjdjd|jjdjdkrb|jjqB|jj|j|jj d|j_ n|jj sJ|jdS)Nrurr|r}r) rr=rsr|r?rKr}rrrHr_rRrr(r(r) endTagCaptionzs     z/getPhases..InCaptionPhase.endTagCaptioncSs0|j|}|jjtd|s,|SdSrrrr(r(r)rs  z-getPhases..InCaptionPhase.endTagTablecSs|jdd|didSrrrr(r(r)rsz.getPhases..InCaptionPhase.endTagIgnorecSs|jjd|SrrKrHrrr(r(r)rsz-getPhases..InCaptionPhase.endTagOtherr rrrrrrrrrrr) rrrrrrrrrrN)r8r9r:rrrrrrrrrrrr rrrrrr(rr(r)InCaptionPhasebs2rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e djfdefgZe e_e de fde fgZe e_dS)z%getPhases..InColumnGroupPhasecSs|jjdjdkS)Nrur)r=r|r?rAr(r(r)ignoreEndTagColgroupsz:getPhases..InColumnGroupPhase.ignoreEndTagColgroupcSsD|jjdjdkr"|jjsJdS|}|td|s@dSdS)NrurrT)r=r|r?rKrRrendTagColgroupr)rBrr(r(r)rs z0getPhases..InColumnGroupPhase.processEOFcSs"|}|td|s|SdSNrrrrrr(r(r)rsz7getPhases..InColumnGroupPhase.processCharacterscSs$|j||jjd|d<dSrrrr(r(r)rs  z1getPhases..InColumnGroupPhase.startTagColcSs"|}|td|s|SdSrrrr(r(r)rsz3getPhases..InColumnGroupPhase.startTagOthercSs@|r |jjsJ|jn|jj|jjd|j_dSNr) rrKrRr}r=r|rrHr_rr(r(r)rs    z4getPhases..InColumnGroupPhase.endTagColgroupcSs|jdddidS)Nz no-end-tagr?rrrr(r(r) endTagColsz/getPhases..InColumnGroupPhase.endTagColcSs"|}|td|s|SdSrrrr(r(r)rsz1getPhases..InColumnGroupPhase.endTagOtherrrrN)r8r9r:rrrrrrrrrrr rrrrrr(rr(r)InColumnGroupPhases&  rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZedjfde fde fde fgZe e_ede fdefdefgZee_d S)!z#getPhases..InTableBodyPhasecSsB|jjdjdvr |jjq|jjdjdkr>|jjs>JdS)Nru)rrrrr)r=r|r?rrKrRrAr(r(r)clearStackToTableBodyContextsz@getPhases..InTableBodyPhase.clearStackToTableBodyContextcSs|jjddSrrrAr(r(r)rsz.getPhases..InTableBodyPhase.processEOFcSs|jjd|Srrrr(r(r)rsz:getPhases..InTableBodyPhase.processSpaceCharacterscSs|jjd|Srrrr(r(r)rsz5getPhases..InTableBodyPhase.processCharacterscSs(||j||jjd|j_dS)Nr)rr=rrKrHr_rr(r(r) startTagTrs z.getPhases..InTableBodyPhase.startTagTrcSs*|jdd|di|tdd|S)Nzunexpected-cell-in-table-bodyr?rrq)rKr}rrrr(r(r)startTagTableCells  z5getPhases..InTableBodyPhase.startTagTableCellcSsn|jjddds0|jjddds0|jjdddrT||t|jjdj|S|jjs`J|j dSNrrr;rrru r=r=rendTagTableRowGrouprr|r?rKrRr}rr(r(r)startTagTableOther s z6getPhases..InTableBodyPhase.startTagTableOthercSs|jjd|Srrrr(r(r)rsz1getPhases..InTableBodyPhase.startTagOthercSsT|jj|dddr:||jj|jjd|j_n|jdd|didS)Nr?rr;r unexpected-end-tag-in-table-body) r=r=rr|rrKrHr_r}rr(r(r)rs  z7getPhases..InTableBodyPhase.endTagTableRowGroupcSsn|jjddds0|jjddds0|jjdddrT||t|jjdj|S|jjs`J|j dSrrrr(r(r)r%s z/getPhases..InTableBodyPhase.endTagTablecSs|jdd|didS)Nrr?rrr(r(r)r2s z0getPhases..InTableBodyPhase.endTagIgnorecSs|jjd|Srrrr(r(r)r6sz/getPhases..InTableBodyPhase.endTagOtherrrrr)rrrrrrrr)rrrrrrrrN)r8r9r:rrrrrrrrrrrrrrr rrrrrr(rr(r)InTableBodyPhases<   rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZedjfde fde fgZe e_ede fdefd efd!efgZee_d"S)#zgetPhases..InRowPhasecSs@|jjdjdvr<|jdd|jjdji|jjqdS)Nru)rrz'unexpected-implied-end-tag-in-table-rowr?)r=r|r?rKr}rrAr(r(r)clearStackToTableRowContextOs z9getPhases..InRowPhase.clearStackToTableRowContextcSs|jjddd S)Nrrr;rrAr(r(r)ignoreEndTagTrUsz,getPhases..InRowPhase.ignoreEndTagTrcSs|jjddSrrrAr(r(r)rYsz(getPhases..InRowPhase.processEOFcSs|jjd|Srrrr(r(r)r\sz4getPhases..InRowPhase.processSpaceCharacterscSs|jjd|Srrrr(r(r)r_sz/getPhases..InRowPhase.processCharacterscSs6||j||jjd|j_|jjtdS)Nr) rr=rrKrHr_r%rr rr(r(r)rbs z/getPhases..InRowPhase.startTagTableCellcSs"|}|td|s|SdSNrrendTagTrrrr(r(r)rhsz0getPhases..InRowPhase.startTagTableOthercSs|jjd|Srrrr(r(r)rosz+getPhases..InRowPhase.startTagOthercSsH|s.||jj|jjd|j_n|jjs:J|j dSr) rrr=r|rrKrHr_rRr}rr(r(r)rrs   z&getPhases..InRowPhase.endTagTrcSs"|}|td|s|SdSrrrr(r(r)r|sz)getPhases..InRowPhase.endTagTablecSs4|jj|dddr&|td|S|jdS)Nr?rr;r)r=r=rrrKr}rr(r(r)rsz1getPhases..InRowPhase.endTagTableRowGroupcSs|jdd|didS)Nzunexpected-end-tag-in-table-rowr?rrr(r(r)rs z*getPhases..InRowPhase.endTagIgnorecSs|jjd|Srrrr(r(r)rsz)getPhases..InRowPhase.endTagOtherrr)rrrrrrrrrr)rrrrrrrN)r8r9r:rrrrrrrrrrrrrrrr rrrrrr(rr(r) InRowPhaseJs> rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ edjfdefgZe e_ede fde fde fgZe e_dS)zgetPhases..InCellPhasecSsB|jjdddr |tdn|jjdddr>|tddSNrrr;r)r=r=endTagTableCellrrAr(r(r) closeCellsz(getPhases..InCellPhase.closeCellcSs|jjddSrrrAr(r(r)rsz)getPhases..InCellPhase.processEOFcSs|jjd|Srrrr(r(r)rsz0getPhases..InCellPhase.processCharacterscSsF|jjddds |jjdddr,||S|jjs8J|jdSr)r=r=rrKrRr}rr(r(r)rs z1getPhases..InCellPhase.startTagTableOthercSs|jjd|Srrrr(r(r)rsz,getPhases..InCellPhase.startTagOthercSs|jj|dddr|j|d|jjdj|dkrp|jdd|di|jj}|j|dkrPq|qPn |jj|j|jj d|j_ n|jdd|didS)Nr?rr;ruzunexpected-cell-end-tagrr) r=r=rsr|r?rKr}rrrHr_rr(r(r)rs    z.getPhases..InCellPhase.endTagTableCellcSs|jdd|didSrrrr(r(r)rsz+getPhases..InCellPhase.endTagIgnorecSs.|jj|dddr ||S|jdS)Nr?rr;)r=r=rrKr}rr(r(r) endTagImplysz*getPhases..InCellPhase.endTagImplycSs|jjd|Srrrr(r(r)rsz*getPhases..InCellPhase.endTagOtherrrr)rrrrrrN)r8r9r:rrrrrrrrrrrr rrrrrr(rr(r) InCellPhases. rc seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZedjfdefdefde fde fde fgZe e_ede fdefdefgZee_dS) z getPhases..InSelectPhasecSs0|jjdjdkr |jdn |jjs,JdS)Nrurz eof-in-selectrrAr(r(r)rsz+getPhases..InSelectPhase.processEOFcSs$|ddkrdS|j|ddSrrrr(r(r)rs z2getPhases..InSelectPhase.processCharacterscSs.|jjdjdkr|jj|j|dSrmr=r|r?rrrr(r(r)startTagOptions z/getPhases..InSelectPhase.startTagOptioncSsL|jjdjdkr|jj|jjdjdkr<|jj|j|dS)Nrurnryrrr(r(r)startTagOptgroup s   z1getPhases..InSelectPhase.startTagOptgroupcSs|jd|tddS)Nzunexpected-select-in-selectr)rKr} endTagSelectrrr(r(r)rq s z/getPhases..InSelectPhase.startTagSelectcSs>|jd|jjdddr.|td|S|jjs:JdS)Nzunexpected-input-in-selectrr;)rKr}r=r=rrrRrr(r(r)rZ s  z.getPhases..InSelectPhase.startTagInputcSs|jjd|Srrrr(r(r)r sz/getPhases..InSelectPhase.startTagScriptcSs|jdd|didS)Nzunexpected-start-tag-in-selectr?rrr(r(r)r s z.getPhases..InSelectPhase.startTagOthercSs6|jjdjdkr |jjn|jdddidS)Nrurnunexpected-end-tag-in-selectr?r=r|r?rrKr}rr(r(r) endTagOption s z-getPhases..InSelectPhase.endTagOptioncSsf|jjdjdkr0|jjdjdkr0|jj|jjdjdkrP|jjn|jdddidS)Nrurnryrr?rrr(r(r)endTagOptgroup% s z/getPhases..InSelectPhase.endTagOptgroupcSsZ|jjdddr@|jj}|jdkr4|jj}q|jn|jjsLJ|jdS)Nrr;) r=r=r|rr?rKrarRr}rr(r(r)r2 s    z-getPhases..InSelectPhase.endTagSelectcSs|jdd|didS)Nrr?rrr(r(r)r= s z,getPhases..InSelectPhase.endTagOtherrrnryr)rgrr-r N)r8r9r:rrrrrrrqrZrrrrrrr rrrrrr(rr(r) InSelectPhases8  rc@sneZdZeZddZddZddZddZd d Z d d Z e d efgZ ee _e d e fgZe e_dS)z'getPhases..InSelectInTablePhasecSs|jjddSNrrrAr(r(r)rU sz2getPhases..InSelectInTablePhase.processEOFcSs|jjd|Srrrr(r(r)rX sz9getPhases..InSelectInTablePhase.processCharacterscSs(|jdd|di|td|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler?r)rKr}rrrr(r(r)rW[ sz5getPhases..InSelectInTablePhase.startTagTablecSs|jjd|Srrrr(r(r)r` sz5getPhases..InSelectInTablePhase.startTagOthercSs@|jdd|di|jj|dddr<|td|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler?rr;r)rKr}r=r=rrrr(r(r)rc sz3getPhases..InSelectInTablePhase.endTagTablecSs|jjd|Srrrr(r(r)ri sz3getPhases..InSelectInTablePhase.endTagOther)rrrrrrrrN)r8r9r:rrrrrWrrrr rrrrr(r(r(r)InSelectInTablePhaseR s&r csBeZdZeZegdZddZfddZddZ dd Z d S) z(getPhases..InForeignContentPhase),rrrrrrrr'r*rr(rrZh1Zh2Zh3Zh4Zh5Zh6rrdrr^r)r,rr4rQrr'r+rrrrspanrrsubZsuprrrrvarc%Ssnddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%$}|d&|vrj||d&|d&<dS)'NZaltGlyphZ altGlyphDefZ altGlyphItemZ animateColorZ animateMotionZanimateTransformZclipPathZfeBlendZ feColorMatrixZfeComponentTransferZ feCompositeZfeConvolveMatrixZfeDiffuseLightingZfeDisplacementMapZfeDistantLightZfeFloodZfeFuncAZfeFuncBZfeFuncGZfeFuncRZfeGaussianBlurZfeImageZfeMergeZ feMergeNodeZ feMorphologyZfeOffsetZ fePointLightZfeSpecularLightingZ feSpotLightZfeTileZ feTurbulenceZ foreignObjectZglyphRefZlinearGradientZradialGradientZtextPath)$ZaltglyphZ altglyphdefZ altglyphitemZ animatecolorZ animatemotionZanimatetransformZclippathZfeblendZ fecolormatrixZfecomponenttransferZ fecompositeZfeconvolvematrixZfediffuselightingZfedisplacementmapZfedistantlightZfefloodZfefuncaZfefuncbZfefuncgZfefuncrZfegaussianblurZfeimageZfemergeZ femergenodeZ femorphologyZfeoffsetZ fepointlightZfespecularlightingZ fespotlightZfetileZ feturbulenceZ foreignobjectZglyphrefZlineargradientZradialgradientZtextpathr?r()rBr replacementsr(r(r)adjustSVGTagNames sN% z:getPhases..InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n&|jjr rDzMgetPhases..InForeignContentPhase.processCharacters..F)rKrbr5rrrr(r)r s  z:getPhases..InForeignContentPhase.processCharacterscSs(|jjd}|d|jvs>|ddkrt|dhd@r|jdd|di|jjdj|jjkr|j |jjds|j |jjds|jj qT|S|jt dkr|j |n$|jt dkr|||j||j||j|d <|j||d r$|jj d |d <dS) Nrur?rrv>ZfaceZcolorsizez*unexpected-html-element-in-foreign-contentrgrxrirzTr{)r=r|breakoutElementssetkeysrKr}rirrnrorrrrrrr)rBrrr(r(r)r s:           z8getPhases..InForeignContentPhase.processStartTagcSst|jjd}|jjd}|jt|dkrF|jdd|di|jt|dkr|jj|jj dkr|jj |jjj |j_|jj |kr|jjsJqd}q|d8}|jj|}|j |jjkrqFqF|jj|}qqF|S)Nrrur?rr)rr=r|r?rkrrKr}r_rHrrrrirr)rBrZ nodeIndexrrr(r(r)r s&   z6getPhases..InForeignContentPhase.processEndTagN) r8r9r:rrrrrrrrr(rr(r)InForeignContentPhasex s  ) rc@sveZdZeZddZddZddZddZd d Z d d Z d dZ e defgZe e_e de fgZe e_dS)z!getPhases..AfterBodyPhasecSsdSr-r(rAr(r(r)r sz,getPhases..AfterBodyPhase.processEOFcSs|j||jjddS)Nrrrr(r(r)r sz0getPhases..AfterBodyPhase.processCommentcSs |jd|jjd|j_|S)Nzunexpected-char-after-bodyrrKr}rHr_rr(r(r)r s z3getPhases..AfterBodyPhase.processCharacterscSs|jjd|Srrrr(r(r)r sz.getPhases..AfterBodyPhase.startTagHtmlcSs*|jdd|di|jjd|j_|S)Nzunexpected-start-tag-after-bodyr?rrrr(r(r)r s  z/getPhases..AfterBodyPhase.startTagOthercSs*|jjr|jdn|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rKrRr}rHr_)rBr?r(r(r)r sz,getPhases..AfterBodyPhase.endTagHtmlcSs*|jdd|di|jjd|j_|S)Nzunexpected-end-tag-after-bodyr?rrrr(r(r)r s  z-getPhases..AfterBodyPhase.endTagOtherrN)r8r9r:rrrrrrrrrr rrrrr(r(r(r)AfterBodyPhase srcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e djfdefdefde fgZe e_e de fgZe e_dS)z"getPhases..InFramesetPhasecSs0|jjdjdkr |jdn |jjs,JdS)Nrurzeof-in-framesetrrAr(r(r)r sz-getPhases..InFramesetPhase.processEOFcSs|jddS)Nzunexpected-char-in-framesetrrr(r(r)r" sz4getPhases..InFramesetPhase.processCharacterscSs|j|dSr-)r=rrr(r(r)r% sz3getPhases..InFramesetPhase.startTagFramesetcSs|j||jjdSr-rrr(r(r) startTagFrame( s z0getPhases..InFramesetPhase.startTagFramecSs|jjd|Srrrr(r(r)startTagNoframes, sz3getPhases..InFramesetPhase.startTagNoframescSs|jdd|didS)Nz unexpected-start-tag-in-framesetr?rrr(r(r)r/ s z0getPhases..InFramesetPhase.startTagOthercSsZ|jjdjdkr |jdn |jj|jjsV|jjdjdkrV|jjd|j_dS)Nrurz)unexpected-frameset-in-frameset-innerhtmlr afterFrameset) r=r|r?rKr}rrRrHr_rr(r(r)endTagFrameset3 s z1getPhases..InFramesetPhase.endTagFramesetcSs|jdd|didS)Nzunexpected-end-tag-in-framesetr?rrr(r(r)r? s z.getPhases..InFramesetPhase.endTagOtherrrrrN)r8r9r:rrrrrrrrrrr rrrrrr(rr(r)InFramesetPhase s( rcsveZdZeZddZddZddZddZd d Z d d Z e d j fdefgZee_e d e fgZe e_dS)z%getPhases..AfterFramesetPhasecSsdSr-r(rAr(r(r)rT sz0getPhases..AfterFramesetPhase.processEOFcSs|jddS)Nzunexpected-char-after-framesetrrr(r(r)rX sz7getPhases..AfterFramesetPhase.processCharacterscSs|jjd|Srrrr(r(r)r[ sz6getPhases..AfterFramesetPhase.startTagNoframescSs|jdd|didS)Nz#unexpected-start-tag-after-framesetr?rrr(r(r)r^ s z3getPhases..AfterFramesetPhase.startTagOthercSs|jjd|j_dS)NafterAfterFrameset)rKrHr_rr(r(r)rb sz0getPhases..AfterFramesetPhase.endTagHtmlcSs|jdd|didS)Nz!unexpected-end-tag-after-framesetr?rrr(r(r)re s z1getPhases..AfterFramesetPhase.endTagOtherrrN)r8r9r:rrrrrrrrr rrrrrr(rr(r)AfterFramesetPhaseP s rc@s`eZdZeZddZddZddZddZd d Z d d Z d dZ e de fgZe e_dS)z&getPhases..AfterAfterBodyPhasecSsdSr-r(rAr(r(r)rw sz1getPhases..AfterAfterBodyPhase.processEOFcSs|j||jjdSr-rrr(r(r)rz sz5getPhases..AfterAfterBodyPhase.processCommentcSs|jjd|Srrrr(r(r)r} sz=getPhases..AfterAfterBodyPhase.processSpaceCharacterscSs |jd|jjd|j_|S)Nexpected-eof-but-got-charrrrr(r(r)r s z8getPhases..AfterAfterBodyPhase.processCharacterscSs|jjd|Srrrr(r(r)r sz3getPhases..AfterAfterBodyPhase.startTagHtmlcSs*|jdd|di|jjd|j_|S)Nexpected-eof-but-got-start-tagr?rrrr(r(r)r s  z4getPhases..AfterAfterBodyPhase.startTagOthercSs*|jdd|di|jjd|j_|S)Nexpected-eof-but-got-end-tagr?rrrr(r(r)r s  z4getPhases..AfterAfterBodyPhase.processEndTagrN)r8r9r:rrrrrrrrrr rrrr(r(r(r)AfterAfterBodyPhaset sr"c@sneZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e de fde fgZe e_dS)z*getPhases..AfterAfterFramesetPhasecSsdSr-r(rAr(r(r)r sz5getPhases..AfterAfterFramesetPhase.processEOFcSs|j||jjdSr-rrr(r(r)r sz9getPhases..AfterAfterFramesetPhase.processCommentcSs|jjd|Srrrr(r(r)r szAgetPhases..AfterAfterFramesetPhase.processSpaceCharacterscSs|jddS)Nrrrr(r(r)r sz.AfterAfterFramesetPhase.processCharacterscSs|jjd|Srrrr(r(r)r sz7getPhases..AfterAfterFramesetPhase.startTagHtmlcSs|jjd|Srrrr(r(r)startTagNoFrames sz;getPhases..AfterAfterFramesetPhase.startTagNoFramescSs|jdd|didS)Nr r?rrr(r(r)r s z8getPhases..AfterAfterFramesetPhase.startTagOthercSs|jdd|didS)Nr!r?rrr(r(r)r s z8getPhases..AfterAfterFramesetPhase.processEndTagrrN)r8r9r:rrrrrrrr#rrr rrrr(r(r(r)AfterAfterFramesetPhase sr$)rVrUrrrrrrrrrrrrrrrpryr~rrrr)r)rIrXrrrrrrrrrrrrrrrr rrrrr"r$r()r"rrr)rGsrH%-f?BY!/F@bYLc&r.8$%&rGcsFt|dt@}|rBt|dfdd|dD|d<dS)Nrvc3s"|]\}}|||fVqdSr-)r~)r>kvr r(r)r sz$adjust_attributes..)rr2r.)rr Zneeds_adjustmentr(r'r)r s  rrrFcCs|dur i}t||||dS)N)r2r?rvrz)r)r?r2rjrzr(r(r)r s  rc@seZdZdZdS)rtzError in parsed documentN)r8r9r:rr(r(r(r)rt srt)rT)r*rT)rrNF),Z __future__rrrZpip._vendor.sixrrr0rrr r Ztreebuilders.baser r Z constantsr rrrrrrrrrrrrrrrrr"r,r<rr!ZmemoizerGrr Exceptionrtr(r(r(r)sN     H   8 _