3 ig@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$tj|}t||d}|j|f|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'?/tmp/pip-build-88gy_88q/pip/pip/_vendor/html5lib/html5parser.pyr!s  r!divcKs,tj|}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 rr parseFragment)r"r*r#rr$r%r&r'r'r(r+1s  r+csGfdddt}|S)NcseZdZfddZdS)z-method_decorator_metaclass..DecoratedcsBx0|jD]$\}}t|tjr&|}|||<q Wtj||||S)N)items isinstancetypes FunctionTypetype__new__)meta classnamebases classDict attributeName attribute)functionr'r(r1Ls   z5method_decorator_metaclass..Decorated.__new__N)__name__ __module__ __qualname__r1r')r8r'r( DecoratedKsr<)r0)r8r<r')r8r(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|_|dkrtjd}||_g_fddt|jD_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|]\}}|j|qSr')tree).0namecls)selfr'r( ysz'HTMLParser.__init__..)strictr rr>errors getPhasesr,phases)rBr>rDrdebugr')rBr(__init__]s   zHTMLParser.__init__r)c Ksh||_||_||_tj|fd|i||_|jy |jWn$tk rb|j|jYnXdS)Nparser) innerHTMLModer* scriptingr HTMLTokenizer tokenizerresetmainLoopr)rBstream innerHTMLr*rLr$r'r'r(_parse|s zHTMLParser._parsecCs|jjd|_g|_g|_d|_|jr|jj|_ |j t krL|j j |j _ n0|j tkrd|j j|j _ n|j dkr||j j|j _ n|jd|_|jj|jnd|_ |jd|_d|_d|_d|_dS)NFz no quirks plaintext beforeHtmlinitialT)r>rO firstStartTagrElog compatModerKr*lowerrRrrN rcdataStatestater rawtextStateplaintextStaterGphaseinsertHtmlElementresetInsertionMode lastPhasebeforeRCDataPhase framesetOK)rBr'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@)rBr'r'r(documentEncodings zHTMLParser.documentEncodingcCsJ|jdkr6|jtdkr6d|jko4|jdjtdkS|j|jftkSdS)Nzannotation-xmlmathmlencoding text/htmlapplication/xhtml+xml)rjrk)r@ namespacer attributes translaterr)rBelementr'r'r(isHTMLIntegrationPoints   z!HTMLParser.isHTMLIntegrationPointcCs|j|jftkS)N)rlr@r)rBror'r'r(isMathMLTextIntegrationPointsz'HTMLParser.isMathMLTextIntegrationPointcCsxtd}td}td}td}td}td}td}x|jD]}d} |} x| dk r| } |jjrv|jjdnd} | r| jnd} | r| jnd} | d }||kr|j| d | jd id} qTt|jjd ksj| |jj ksj|j | r||kr|d t ddgksj|||fksj| t dkrN| dkrN||krN|d dksj|j | rr||||fkrr|j}n |jd}||kr|j| } qT||kr|j| } qT||kr|j| } qT||kr|j| } qT||kr|j| } qT||krT|j| } qTW||krB| drB| d rB|jdd | d iqBWd}g}x8|rr|j|j|jj}|r<|j|ks openElementsrlr@ parseErrorgetlendefaultNamespacerq frozensetrrpr_rGprocessCharactersprocessSpaceCharactersprocessStartTag processEndTagprocessCommentprocessDoctypeappend processEOFAssertionError)rBCharactersTokenSpaceCharactersToken StartTagToken EndTagToken CommentToken DoctypeTokenParseErrorTokentoken prev_token new_token currentNodecurrentNodeNamespacecurrentNodeNamer0r_ reprocessrGr'r'r(rPsp                   zHTMLParser.mainLoopcOs |j|ddf|||jjS)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> getDocument)rBrQargsr$r'r'r(r!szHTMLParser.parsecOs|j|df|||jjS)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> getFragment)rBrQrr$r'r'r(r+szHTMLParser.parseFragmentXXX-undefined-errorcCs@|dkr i}|jj|jjj||f|jrrr@rRrrlrrGr_)rBlastnewModesnodenodeName new_phaser'r'r(raPsB   zHTMLParser.resetInsertionModecCsR|dks t|jj||dkr.|jj|j_n |jj|j_|j|_|j d|_dS)NRAWTEXTRCDATAtext)rr) rr> insertElementrNr]r\r[r_ originalPhaserG)rBr contentTyper'r'r(parseRCDataRawtext|s   zHTMLParser.parseRCDataRawtext)NFTF)Fr)F)rN)r9r:r;__doc__rIrSrOpropertyrgrprqrPr!r+rrrrrrarr'r'r'r(r Vs"  "  C ,r csdd}dd}Gdddt|||Gddd}Gd d d }Gd d d }Gd dd}Gddd}Gddd}GfdddGddd} Gfddd} GfdddGfddd} Gfddd} Gfdd d } Gfd!d"d"}Gfd#d$d$}Gfd%d&d&}Gd'd(d(}Gfd)d*d*}Gd+d,d,}Gfd-d.d.}Gfd/d0d0}Gd1d2d2}Gd3d4d4}||||||| | | | | ||||||||||d5S)6Ncs$ddtjDfdd}|S)z4Logger that records which phase processes each tokencSsi|]\}}||qSr'r')r?keyvaluer'r'r(rCsz*getPhases..log..csjjdrt|dkr|d}d|di}|dtkrH|d|d<|jjj|jjjj|jj j j|j jj|f|f||S|f||SdS)Nprocessrr0r@) r9 startswithrrrJrXrrNr\r_ __class__)rBrr$rinfo)r8 type_namesr'r(wrappeds   z'getPhases..log..wrapped)rr,)r8rr')r8rr(rXszgetPhases..logcSs|r t|StSdS)N)r=r0) use_metaclassmetaclass_funcr'r'r( getMetaclassszgetPhases..getMetaclassc@s\eZdZdZdZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ dS)zgetPhases..PhasezNBase class for helper object that implements each phase of processing rJr>__startTagCache __endTagCachecSs||_||_i|_i|_dS)N)rJr>_Phase__startTagCache_Phase__endTagCache)rBrJr>r'r'r(rIsz!getPhases..Phase.__init__cSstdS)N)NotImplementedError)rBr'r'r(rsz#getPhases..Phase.processEOFcSs|jj||jjddS)Nrr)r> insertCommentr)rBrr'r'r(rsz'getPhases..Phase.processCommentcSs|jjddS)Nzunexpected-doctype)rJr)rBrr'r'r(rsz'getPhases..Phase.processDoctypecSs|jj|ddS)Nry)r> insertText)rBrr'r'r(rsz*getPhases..Phase.processCharacterscSs|jj|ddS)Nry)r>r)rBrr'r'r(rsz/getPhases..Phase.processSpaceCharacterscSsn|d}||jkr|j|}nH|j|}|j|<x2t|jt|jdkrd|jjtt|jq4W||S)Nr@g?)rstartTagHandlerrpopnextiter)rBrr@funcr'r'r(rs  z(getPhases..Phase.processStartTagcSsl|jj r"|ddkr"|jjdx<|djD],\}}||jjdjkr0||jjdj|<q0Wd|j_dS)Nr@rz non-html-rootryrF)rJrWrr,r>rrm)rBrattrrr'r'r( startTagHtmls  z%getPhases..Phase.startTagHtmlcSsn|d}||jkr|j|}nH|j|}|j|<x2t|jt|jdkrd|jjtt|jq4W||S)Nr@g?)r endTagHandlerrrrr)rBrr@rr'r'r(rs  z&getPhases..Phase.processEndTagN)rJr>rr)r9r:r;r __slots__rIrrrrrrrrr'r'r'r(Phases rc@sReZdZeZddZddZddZddZd d Z d d Z d dZ ddZ dS)zgetPhases..InitialPhasecSsdS)Nr')rBrr'r'r(rsz6getPhases..InitialPhase.processSpaceCharacterscSs|jj||jjdS)N)r>rdocument)rBrr'r'r(rsz.getPhases..InitialPhase.processCommentc8Ss|d}|d}|d}|d}|dks@|dk s@|dk rL|dkrL|jjd|dkrXd}|jj||dkrv|jt}| s|ddks|jdJs|dKks|jdLr|dks|r|jdDkrdE|j_n*|jdMs|jdNr|dk rdH|j_|jj dI|j_ dS)ONr@publicIdsystemIdcorrectrzabout:legacy-compatzunknown-doctype*+//silmaril//dtd html pro v0r11 19970101//4-//advasoft ltd//dtd html 3.0 aswedit + extensions//*-//as//dtd html 3.0 aswedit + extensions//-//ietf//dtd html 2.0 level 1//-//ietf//dtd html 2.0 level 2//&-//ietf//dtd html 2.0 strict level 1//&-//ietf//dtd html 2.0 strict level 2//-//ietf//dtd html 2.0 strict//-//ietf//dtd html 2.0//-//ietf//dtd html 2.1e//-//ietf//dtd html 3.0//-//ietf//dtd html 3.2 final//-//ietf//dtd html 3.2//-//ietf//dtd html 3//-//ietf//dtd html level 0//-//ietf//dtd html level 1//-//ietf//dtd html level 2//-//ietf//dtd html level 3//"-//ietf//dtd html strict level 0//"-//ietf//dtd html strict level 1//"-//ietf//dtd html strict level 2//"-//ietf//dtd html strict level 3//-//ietf//dtd html strict//-//ietf//dtd html//(-//metrius//dtd metrius presentational//5-//microsoft//dtd internet explorer 2.0 html strict//.-//microsoft//dtd internet explorer 2.0 html//0-//microsoft//dtd internet explorer 2.0 tables//5-//microsoft//dtd internet explorer 3.0 html strict//.-//microsoft//dtd internet explorer 3.0 html//0-//microsoft//dtd internet explorer 3.0 tables//#-//netscape comm. corp.//dtd html//*-//netscape comm. corp.//dtd strict html//*-//o'reilly and associates//dtd html 2.0//3-//o'reilly and associates//dtd html extended 1.0//;-//o'reilly and associates//dtd html extended relaxed 1.0//N-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//E-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//$-//spyglass//dtd html 2.0 extended//+-//sq//dtd html 2.0 hotmetal + extensions//--//sun microsystems corp.//dtd hotjava html//4-//sun microsystems corp.//dtd hotjava strict html//-//w3c//dtd html 3 1995-03-24//-//w3c//dtd html 3.2 draft//-//w3c//dtd html 3.2 final//-//w3c//dtd html 3.2//-//w3c//dtd html 3.2s draft//-//w3c//dtd html 4.0 frameset//#-//w3c//dtd html 4.0 transitional//(-//w3c//dtd html experimental 19960712//&-//w3c//dtd html experimental 970421//-//w3c//dtd w3 html//-//w3o//dtd w3 html 3.0//#-//webtechs//dtd mozilla html 2.0//-//webtechs//dtd mozilla html//$-//w3o//dtd w3 html strict 3.0//en//"-/w3c/dtd html 4.0 transitional/en -//w3c//dtd html 4.01 frameset//$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtdquirks -//w3c//dtd xhtml 1.0 frameset//$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrU)7rrrrrrrrrrrrrrrrrrrrrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%)r&r'r)r(r))r+r,)r(r)) rJrr> insertDoctypernrrrZrYrGr_)rBrr@rrrr'r'r(rs      z.getPhases..InitialPhase.processDoctypecSsd|j_|jjd|j_dS)Nr*rU)rJrYrGr_)rBr'r'r( anythingElseZsz,getPhases..InitialPhase.anythingElsecSs|jjd|j|S)Nzexpected-doctype-but-got-chars)rJrr.)rBrr'r'r(r^s z1getPhases..InitialPhase.processCharacterscSs"|jjdd|di|j|S)Nz"expected-doctype-but-got-start-tagr@)rJrr.)rBrr'r'r(rcsz/getPhases..InitialPhase.processStartTagcSs"|jjdd|di|j|S)Nz expected-doctype-but-got-end-tagr@)rJrr.)rBrr'r'r(risz-getPhases..InitialPhase.processEndTagcSs|jjd|jdS)Nzexpected-doctype-but-got-eofT)rJrr.)rBr'r'r(ros z*getPhases..InitialPhase.processEOFN) r9r:r;tuplerrrrr.rrrrr'r'r'r( InitialPhases_r0c@sJeZdZeZddZddZddZddZd d Z d d Z d dZ dS)z"getPhases..BeforeHtmlPhasecSs&|jjtdd|jjd|j_dS)Nrrtr)r> insertRootimpliedTagTokenrJrGr_)rBr'r'r(r`xsz4getPhases..BeforeHtmlPhase.insertHtmlElementcSs |jdS)NT)r`)rBr'r'r(r}sz-getPhases..BeforeHtmlPhase.processEOFcSs|jj||jjdS)N)r>rr)rBrr'r'r(rsz1getPhases..BeforeHtmlPhase.processCommentcSsdS)Nr')rBrr'r'r(rsz9getPhases..BeforeHtmlPhase.processSpaceCharacterscSs |j|S)N)r`)rBrr'r'r(rsz4getPhases..BeforeHtmlPhase.processCharacterscSs |ddkrd|j_|j|S)Nr@rT)rJrWr`)rBrr'r'r(rs z2getPhases..BeforeHtmlPhase.processStartTagcSs4|ddkr$|jjdd|din |j|SdS)Nr@rrrbrzunexpected-end-tag-before-html)rrrr3)rJrr`)rBrr'r'r(rs  z0getPhases..BeforeHtmlPhase.processEndTagN) r9r:r;r/rr`rrrrrrr'r'r'r(BeforeHtmlPhasetsr4c@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e jdefde fgZe e_e jde fgZe e_dS)z"getPhases..BeforeHeadPhasecSs|jtdddS)NrrtT) startTagHeadr2)rBr'r'r(rsz-getPhases..BeforeHeadPhase.processEOFcSsdS)Nr')rBrr'r'r(rsz9getPhases..BeforeHeadPhase.processSpaceCharacterscSs|jtdd|S)Nrrt)r5r2)rBrr'r'r(rsz4getPhases..BeforeHeadPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz/getPhases..BeforeHeadPhase.startTagHtmlcSs0|jj||jjd|j_|jjd|j_dS)NrinHeadr)r>rr headPointerrJrGr_)rBrr'r'r(r5s z/getPhases..BeforeHeadPhase.startTagHeadcSs|jtdd|S)Nrrt)r5r2)rBrr'r'r( startTagOthersz0getPhases..BeforeHeadPhase.startTagOthercSs|jtdd|S)Nrrt)r5r2)rBrr'r'r(endTagImplyHeadsz2getPhases..BeforeHeadPhase.endTagImplyHeadcSs|jjdd|didS)Nzend-tag-after-implied-rootr@)rJr)rBrr'r'r( endTagOthersz.getPhases..BeforeHeadPhase.endTagOtherrrrr3N)rrrr3)r9r:r;r/rrrrrr5r8r9r:r MethodDispatcherrdefaultrr'r'r'r(BeforeHeadPhases   r=c @seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZejdefd e fd/e fd#e fd$efd0e fd*e fd+efgZee_ejd+efd1efgZee_d.S)2zgetPhases..InHeadPhasecSs |jdS)NT)r.)rBr'r'r(rsz)getPhases..InHeadPhase.processEOFcSs |j|S)N)r.)rBrr'r'r(rsz0getPhases..InHeadPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz+getPhases..InHeadPhase.startTagHtmlcSs|jjddS)Nz!two-heads-are-not-better-than-one)rJr)rBrr'r'r(r5sz+getPhases..InHeadPhase.startTagHeadcSs$|jj||jjjd|d<dS)NTr)r>rrr)rBrr'r'r(startTagBaseLinkCommands  z6getPhases..InHeadPhase.startTagBaseLinkCommandcSs|jj||jjjd|d<|d}|jjjjddkrd|krZ|jjjj|dnVd|krd|kr|dj d krt j |dj d }t j |}|j}|jjjj|dS) NTrryr tentativecharsetcontentz http-equivz content-typezutf-8)r>rrrrJrNrQrfchangeEncodingrZr EncodingBytesencodeContentAttrParserr!)rBrrmryrJcodecr'r'r( startTagMetas   z+getPhases..InHeadPhase.startTagMetacSs|jj|ddS)Nr)rJr)rBrr'r'r( startTagTitlesz,getPhases..InHeadPhase.startTagTitlecSs|jj|ddS)Nr)rJr)rBrr'r'r(startTagNoFramesStylesz4getPhases..InHeadPhase.startTagNoFramesStylecSs8|jjr|jj|dn|jj||jjd|j_dS)NrinHeadNoscript)rJrLrr>rrGr_)rBrr'r'r(startTagNoscripts z/getPhases..InHeadPhase.startTagNoscriptcSs<|jj||jjj|jj_|jj|j_|jjd|j_dS)Nr) r>rrJrNscriptDataStater\r_rrG)rBrr'r'r(startTagScripts  z-getPhases..InHeadPhase.startTagScriptcSs |j|S)N)r.)rBrr'r'r(r8sz,getPhases..InHeadPhase.startTagOthercSs:|jjjj}|jdks&td|j|jjd|j_dS)NrzExpected head got %s afterHead)rJr>rrr@rrGr_)rBrrr'r'r( endTagHead sz)getPhases..InHeadPhase.endTagHeadcSs |j|S)N)r.)rBrr'r'r(endTagHtmlBodyBrsz/getPhases..InHeadPhase.endTagHtmlBodyBrcSs|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r:sz*getPhases..InHeadPhase.endTagOthercSs|jtddS)Nr)rOr2)rBr'r'r(r.sz+getPhases..InHeadPhase.anythingElsertitlenoframesstylenoscriptscriptbasebasefontbgsoundcommandlinkr2rr3rN)rRrS)rVrWrXrYrZ)r3rr)r9r:r;r/rrrrr5r>rGrHrIrKrMr8rOrPr:r.r r;rr<rr'r'r'r( InHeadPhases>  r[c@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZejde fd$e fd%e fgZe e_ejd!e fd"efgZee_d#S)&z&getPhases..InHeadNoscriptPhasecSs|jjd|jdS)Nzeof-in-head-noscriptT)rJrr.)rBr'r'r(r/s z1getPhases..InHeadNoscriptPhase.processEOFcSs|jjdj|S)Nr6)rJrGr)rBrr'r'r(r4sz5getPhases..InHeadNoscriptPhase.processCommentcSs|jjd|j|S)Nzchar-in-head-noscript)rJrr.)rBrr'r'r(r7s z8getPhases..InHeadNoscriptPhase.processCharacterscSs|jjdj|S)Nr6)rJrGr)rBrr'r'r(r<sz=getPhases..InHeadNoscriptPhase.processSpaceCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r?sz3getPhases..InHeadNoscriptPhase.startTagHtmlcSs|jjdj|S)Nr6)rJrGr)rBrr'r'r(r>Bsz>getPhases..InHeadNoscriptPhase.startTagBaseLinkCommandcSs|jjdd|didS)Nzunexpected-start-tagr@)rJr)rBrr'r'r(startTagHeadNoscriptEsz;getPhases..InHeadNoscriptPhase.startTagHeadNoscriptcSs"|jjdd|di|j|S)Nzunexpected-inhead-noscript-tagr@)rJrr.)rBrr'r'r(r8Hsz4getPhases..InHeadNoscriptPhase.startTagOthercSs:|jjjj}|jdks&td|j|jjd|j_dS)NrTzExpected noscript got %sr6)rJr>rrr@rrGr_)rBrrr'r'r(endTagNoscriptMsz5getPhases..InHeadNoscriptPhase.endTagNoscriptcSs"|jjdd|di|j|S)Nzunexpected-inhead-noscript-tagr@)rJrr.)rBrr'r'r(endTagBrRsz/getPhases..InHeadNoscriptPhase.endTagBrcSs|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r:Wsz2getPhases..InHeadNoscriptPhase.endTagOthercSs|jtddS)NrT)r]r2)rBr'r'r(r.Zsz3getPhases..InHeadNoscriptPhase.anythingElserrWrXrZr2rRrSrrTr3N)rWrXrZr2rRrS)rrT)r9r:r;r/rrrrrrr>r\r8r]r^r:r.r r;rr<rr'r'r'r(InHeadNoscriptPhase,s,  r_c @seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZejdefdefde fd&e fd#e fgZe e_ejd'e fgZee_d%S)(z!getPhases..AfterHeadPhasecSs |jdS)NT)r.)rBr'r'r(rnsz,getPhases..AfterHeadPhase.processEOFcSs |j|S)N)r.)rBrr'r'r(rrsz3getPhases..AfterHeadPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rvsz.getPhases..AfterHeadPhase.startTagHtmlcSs(d|j_|jj||jjd|j_dS)NFr)rJrdr>rrGr_)rBrr'r'r( startTagBodyys z.getPhases..AfterHeadPhase.startTagBodycSs |jj||jjd|j_dS)Nr)r>rrJrGr_)rBrr'r'r(startTagFrameset~s z2getPhases..AfterHeadPhase.startTagFramesetcSst|jjdd|di|jjj|jj|jjdj|x4|jjdddD]}|jdkrN|jjj |PqNWdS)Nz#unexpected-start-tag-out-of-my-headr@r6rrr) rJrr>rrr7rGrr@remove)rBrrr'r'r(startTagFromHeads z2getPhases..AfterHeadPhase.startTagFromHeadcSs|jjdd|didS)Nzunexpected-start-tagr@)rJr)rBrr'r'r(r5sz.getPhases..AfterHeadPhase.startTagHeadcSs |j|S)N)r.)rBrr'r'r(r8sz/getPhases..AfterHeadPhase.startTagOthercSs |j|S)N)r.)rBrr'r'r(rPsz2getPhases..AfterHeadPhase.endTagHtmlBodyBrcSs|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r:sz-getPhases..AfterHeadPhase.endTagOthercSs.|jjtdd|jjd|j_d|j_dS)NrrtrT)r>rr2rJrGr_rd)rBr'r'r(r.sz.getPhases..AfterHeadPhase.anythingElserrrrVrWrXrZr2rRrUrSrQrr3N) rVrWrXrZr2rRrUrSrQ)rrr3)r9r:r;r/rrrrr`rarcr5r8rPr:r.r r;rr<rr'r'r'r(AfterHeadPhaseks0   rdc,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`daZ3dbdcZ4dddeZ5dfdgZ6e7j8dhj9fde fdre fdse fdefe:efdefdefdefdefdefdefdefdefdefdefdefdefdefdefdefdefde fde!fde"fde#fde$fde&fde'fde%fde(fde)fde*fg!Z;e+e;_S)zgetPhases..InBodyPhasercst|j|||j|_dS)N)superrIprocessSpaceCharactersNonPrer)rBrr$) InBodyPhaserr'r(rIsz'getPhases..InBodyPhase.__init__cSs$|j|jko"|j|jko"|j|jkS)N)r@rlrm)rBnode1node2r'r'r(isMatchingFormattingElements  z:getPhases..InBodyPhase.isMatchingFormattingElementcSs|jj||jjd}g}x<|jjdddD]&}|tkr@Pq0|j||r0|j|q0Wt|dksjtt|dkr|jjj |d|jjj|dS)Nrrrr) r>rractiveFormattingElementsr rjrrrrb)rBrromatchingElementsrr'r'r(addFormattingElements    z3getPhases..InBodyPhase.addFormattingElementc Ss@td}x2|jjdddD]}|j|kr|jjdPqWdS)Ndddtlir&rrrrrrrrrz expected-closing-tag-but-got-eof) rorprqr&rrrrrrrrr)rr>rr@rJr)rBallowed_elementsrr'r'r(rs  z)getPhases..InBodyPhase.processEOFcSsh|d}|j|_|jdrJ|jjdjdkrJ|jjd j rJ|dd}|rd|jj|jj|dS) Nry rprelistingtextarear)rtrurvr) rfrrr>rr@ hasContent#reconstructActiveFormattingElementsr)rBrryr'r'r(!processSpaceCharactersDropNewlines   z@getPhases..InBodyPhase.processSpaceCharactersDropNewlinecSsT|ddkrdS|jj|jj|d|jjrPtdd|dDrPd|j_dS)NrycSsg|] }|tkqSr')r )r?charr'r'r( szDgetPhases..InBodyPhase.processCharacters..F)r>rxrrJrdany)rBrr'r'r(rs  z0getPhases..InBodyPhase.processCharacterscSs|jj|jj|ddS)Nry)r>rxr)rBrr'r'r(rfs z;getPhases..InBodyPhase.processSpaceCharactersNonPrecSs|jjdj|S)Nr6)rJrGr)rBrr'r'r(startTagProcessInHeadsz4getPhases..InBodyPhase.startTagProcessInHeadcSs|jjdddit|jjdks4|jjdjdkrB|jjstnFd|j_x<|dj D],\}}||jjdj krX||jjdj |<qXWdS)Nzunexpected-start-tagr@rrFry) rJrrr>rr@rRrrdr,rm)rBrrrr'r'r(r`sz+getPhases..InBodyPhase.startTagBodycSs|jjdddit|jjdks4|jjdjdkrB|jjstnt|jjsLnj|jjdj rv|jjdj j |jjdx"|jjdjdkr|jjj qxW|jj ||jj d|j_dS) Nzunexpected-start-tagr@rrrrrr)rJrrr>rr@rRrrdparent removeChildrrrGr_)rBrr'r'r(ras" z/getPhases..InBodyPhase.startTagFramesetcSs.|jjdddr|jtd|jj|dS)Nr&button)variant)r>elementInScopeendTagPr2r)rBrr'r'r(startTagClosePsz-getPhases..InBodyPhase.startTagClosePcSs>|jjdddr|jtd|jj|d|j_|j|_dS)Nr&r)rF) r>rrr2rrJrdryr)rBrr'r'r(startTagPreListings  z1getPhases..InBodyPhase.startTagPreListingcSsZ|jjr|jjdddin:|jjdddr:|jtd|jj||jjd|j_dS) Nzunexpected-start-tagr@formr&r)rrr) r> formPointerrJrrrr2rr)rBrr'r'r( startTagForms  z+getPhases..InBodyPhase.startTagFormcSsd|j_dgddgddgd}||d}xLt|jjD]<}|j|kr^|jjjt|jdP|j t kr8|jd kr8Pq8W|jj d d d r|jjjtd d|jj |dS)NFrqrpro)rqrpror@ruaddressr)r&r)r)rr)r&) rJrdreversedr>rr@r_rr2 nameTuplerrr)rBr stopNamesMap stopNamesrr'r'r(startTagListItem&s"      z/getPhases..InBodyPhase.startTagListItemcSs>|jjdddr|jtd|jj||jjj|jj_dS)Nr&r)r) r>rrr2rrJrNr^r\)rBrr'r'r(startTagPlaintext<s z0getPhases..InBodyPhase.startTagPlaintextcSsb|jjdddr|jtd|jjdjtkrR|jjdd|di|jjj |jj |dS)Nr&r)rrzunexpected-start-tagr@r) r>rrr2rr@rrJrrr)rBrr'r'r(startTagHeadingBs  z.getPhases..InBodyPhase.startTagHeadingcSs~|jjd}|rf|jjdddd|jtd||jjkrL|jjj|||jjkrf|jjj||jj |j |dS)Naz$unexpected-start-tag-implies-end-tag) startNameendName) r>!elementInActiveFormattingElementsrJrendTagFormattingr2rrbrlrxrn)rBr afeAElementr'r'r( startTagAJs     z(getPhases..InBodyPhase.startTagAcSs|jj|j|dS)N)r>rxrn)rBrr'r'r(startTagFormattingWs z1getPhases..InBodyPhase.startTagFormattingcSsP|jj|jjdrB|jjdddd|jtd|jj|j|dS)Nnobrz$unexpected-start-tag-implies-end-tag)rr)r>rxrrJrrr2rn)rBrr'r'r( startTagNobr[s    z+getPhases..InBodyPhase.startTagNobrcSsT|jjdr2|jjdddd|jtd|S|jj|jj|d|j_dS)Nrz$unexpected-start-tag-implies-end-tag)rrF) r>rrJrrr2rxrrd)rBrr'r'r(startTagButtones    z-getPhases..InBodyPhase.startTagButtoncSs0|jj|jj||jjjtd|j_dS)NF)r>rxrrlrr rJrd)rBrr'r'r(startTagAppletMarqueeObjectps  z:getPhases..InBodyPhase.startTagAppletMarqueeObjectcSsB|jjdddr|jtd|jjd|j_|jj|ddS)Nr&r)rFr)r>rrr2rxrJrdr)rBrr'r'r( startTagXmpvs  z*getPhases..InBodyPhase.startTagXmpcSsR|jjdkr*|jjdddr*|jtd|jj|d|j_|jjd|j_ dS)Nr*r&r)rFr) rJrYr>rrr2rrdrGr_)rBrr'r'r( startTagTable}s   z,getPhases..InBodyPhase.startTagTablecSs6|jj|jj||jjjd|d<d|j_dS)NTrF)r>rxrrrrJrd)rBrr'r'r(startTagVoidFormattings    z5getPhases..InBodyPhase.startTagVoidFormattingcSs@|jj}|j|d|dkr<|ddjtdkr<||j_dS)Nr0ryhidden)rJrdrrnr)rBrrdr'r'r( startTagInputs   z,getPhases..InBodyPhase.startTagInputcSs$|jj||jjjd|d<dS)NTr)r>rrr)rBrr'r'r(startTagParamSources  z2getPhases..InBodyPhase.startTagParamSourcecSsJ|jjdddr|jtd|jj||jjjd|d<d|j_dS)Nr&r)rTrF) r>rrr2rrrrJrd)rBrr'r'r( startTagHrs   z)getPhases..InBodyPhase.startTagHrcSs6|jjdddd|jtdd|d|dddS) Nzunexpected-start-tag-treated-asimageimg) originalNamenewNamertryr)rmr)rJrrr2)rBrr'r'r( startTagImages   z,getPhases..InBodyPhase.startTagImagecSs|jjdddi|jjrdSi}d|dkr>|dd|d<|jtdd|d|jtd d|jtd dd |dkr|dd }nd }|jtd |d|dj}d|kr|d=d |kr|d =d|d<|jtdd||dd|j td |jtd d|j tddS)Nzdeprecated-tagr@isindexactionryrrt)rmhrlabelpromptz3This is a searchable index. Enter search keywords: rr)r0ryinputr)rmr) rJrr>rrr2rrcopyr)rBr form_attrsrrmr'r'r(startTagIsIndexs6      z.getPhases..InBodyPhase.startTagIsIndexcSs0|jj||jjj|jj_|j|_d|j_dS)NF) r>rrJrNr[r\ryrrd)rBrr'r'r(startTagTextareas z/getPhases..InBodyPhase.startTagTextareacSsd|j_|j|dS)NF)rJrdstartTagRawtext)rBrr'r'r(startTagIFramesz-getPhases..InBodyPhase.startTagIFramecSs"|jjr|j|n |j|dS)N)rJrLrr8)rBrr'r'r(rKs z/getPhases..InBodyPhase.startTagNoscriptcSs|jj|ddS)z8iframe, noembed noframes, noscript(if scripting enabled)rN)rJr)rBrr'r'r(rsz.getPhases..InBodyPhase.startTagRawtextcSs@|jjdjdkr$|jjjtd|jj|jjj|dS)Nroptionr) r>rr@rJr_rr2rxr)rBrr'r'r( startTagOpts z*getPhases..InBodyPhase.startTagOptcSs|jj|jj|d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfkrx|jjd|j_n|jjd |j_dS) NFrrrrrrinSelectInTabler)r>rxrrJrdr_rG)rBrr'r'r(startTagSelects      z-getPhases..InBodyPhase.startTagSelectcSsB|jjdr2|jj|jjdjdkr2|jj|jj|dS)Nrubyrr)r>rgenerateImpliedEndTagsrr@rJrr)rBrr'r'r( startTagRpRts    z+getPhases..InBodyPhase.startTagRpRtcSsZ|jj|jj||jj|td|d<|jj||drV|jjjd|d<dS)NrhrlrTr) r>rxrJrrrrrr)rBrr'r'r( startTagMaths      z+getPhases..InBodyPhase.startTagMathcSsZ|jj|jj||jj|td|d<|jj||drV|jjjd|d<dS)Nr}rlrTr) r>rxrJrrrrrr)rBrr'r'r( startTagSvgs      z*getPhases..InBodyPhase.startTagSvgcSs|jjdd|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@N)rJr)rBrr'r'r(startTagMisplacedsz0getPhases..InBodyPhase.startTagMisplacedcSs|jj|jj|dS)N)r>rxr)rBrr'r'r(r8s z,getPhases..InBodyPhase.startTagOthercSs|jjdddsD|jtdd|jjdddi|jtddnX|jjd|jjd j dkrt|jjdddi|jjj }x|j dkr|jjj }qWdS) Nr&r)rrtzunexpected-end-tagr@rurr) r>rrr2rJrrrrr@r)rBrrr'r'r(rs   z&getPhases..InBodyPhase.endTagPcSs|jjds|jjdS|jjdjdkrlx>|jjddD]*}|jtdkr>|jjdd|jdPq>W|jjd|j_dS)Nrrrorprqoptgrouprr&rprtrrrrrrrz$expected-one-end-tag-but-got-another)gotName expectedName afterBodyr)rorprqrrr&rrrrrrrrrr) r>rrJrrr@rrGr_)rBrrr'r'r( endTagBody)s  z)getPhases..InBodyPhase.endTagBodycSs"|jjdr|jtd|SdS)Nr)r>rrr2)rBrr'r'r( endTagHtml;s z)getPhases..InBodyPhase.endTagHtmlcSs|ddkr|j|_|jj|d}|r2|jj|jjdj|dkr^|jjdd|di|r|jjj }x|j|dkr|jjj }qpWdS)Nr@rtrzend-tag-too-earlyr) rfrr>rrrr@rJrr)rBrinScoperr'r'r( endTagBlockAs   z*getPhases..InBodyPhase.endTagBlockcSsx|jj}d|j_|dks&|jj| r:|jjdddin:|jj|jjd|krf|jjdddi|jjj|dS)Nzunexpected-end-tagr@rrzend-tag-too-early-ignoredr)r>rrrJrrrrb)rBrrr'r'r( endTagFormOs   z)getPhases..InBodyPhase.endTagFormcSs|ddkrd}nd}|jj|d|dsB|jjdd|dinj|jj|dd|jjd j|dkr|jjdd|di|jjj}x|j|dkr|jjj}qWdS) Nr@rqlist)rzunexpected-end-tag)excluderzend-tag-too-earlyr)r>rrJrrrr@r)rBrrrr'r'r(endTagListItem\s  z-getPhases..InBodyPhase.endTagListItemcSsx$tD]}|jj|r|jjPqW|jjdj|dkrR|jjdd|dixBtD]:}|jj|rX|jjj}x|jtkr|jjj}qvWPqXWdS)Nrr@zend-tag-too-earlyr) rr>rrrr@rJrr)rBritemr'r'r( endTagHeadingms       z,getPhases..InBodyPhase.endTagHeadingcSs"d}x|dkr|d7}|jj|d}| sL||jjkrZ|jj|j rZ|j|dS||jjkr|jjdd|di|jjj |dS|jj|js|jjdd|didS||jjdkr|jjdd|di|jjj |}d}x,|jj|dD]}|j t kr|}PqW|dkrb|jjj }x||krN|jjj }q4W|jjj |dS|jj|d}|jjj |}|} } d} |jjj | } x| d krh| d7} | d8} |jj| } | |jjkr|jjj | q| |krP| |kr |jjj | d}| j} | |jj|jjj | <| |jj|jjj | <| } | jrV| jj| | j| | } qW| jr~| jj| |jtdkr|jj\}}|j| |n |j| |j} |j| |j| |jjj ||jjj|| |jjj ||jjj|jjj |d| qWdS)z)The much-feared adoption agency algorithmrrr@Nzadoption-agency-1.2zadoption-agency-4.4zadoption-agency-1.3rkrrrrrr)rrrrr)r>rrrr@r:rJrrlrbindexrrr cloneNoderr appendChildrgetTableMisnestedNodePosition insertBeforereparentChildreninsert)rBrouterLoopCounterformattingElementafeIndex furthestBlockrocommonAncestorbookmarklastNoderinnerLoopCounterrclonerrr'r'r(r|s                    z/getPhases..InBodyPhase.endTagFormattingcSs|jj|dr|jj|jjdj|dkrF|jjdd|di|jj|dr|jjj}x|j|dkr|jjj}qdW|jjdS)Nr@rzend-tag-too-earlyr) r>rrrr@rJrrclearActiveFormattingElements)rBrror'r'r(endTagAppletMarqueeObjects  z8getPhases..InBodyPhase.endTagAppletMarqueeObjectcSs@|jjdddd|jj|jjtdd|jjjdS)Nzunexpected-end-tag-treated-asr3z br element)rrrt)rJrr>rxrr2rr)rBrr'r'r(r^+s   z'getPhases..InBodyPhase.endTagBrcSsx|jjdddD]}|j|dkr~|jj|dd|jjdj|dkrd|jjdd|dix|jjj|krxqfWPq|jtkr|jjdd|diPqWdS)Nrr@)rzunexpected-end-tagrr) r>rr@rrJrrrr)rBrrr'r'r(r:2s z*getPhases..InBodyPhase.endTagOtherrrVrWrXrYrZr2rUrSrQrrrarticleaside blockquotecenterdetailsdirr)dlfieldset figcaptionfigurefooterheaderhgroupmainmenunavolr&sectionsummaryulrtrurrqrorprTrbbigcodeemfontissmallstrikestrongtturrappletmarqueeobjectxmprarear3embedrkeygenwbrparamsourcetrackrrrrrviframerTnoembedrRrrrrrmathr}rcolrframerrrrrrrdialog)r) rVrWrXrYrZr2rUrSrQ)rrrrrrrr)rrrrrrrrrrrr&rrr)rtru)rqrorp) rrrrrrrrrrrr)rrr)rr3r rr r )r r r)rrR)rr)rr) rrrrrrrrrrr)rrrrrrrrrr)rrrrrrrrurrrrrtrrr)rorprq)rrrrrrrrrrrrrr)rrr)?r9r:r;rrIrjrnrryrrfr~r`rarrrrrrrrrrrrrrrrrrrrrrKrrrrrrrr8rrrrrrrrrr^r:r r;rrrr<r __classcell__r')rgr)rr(rgs             $   rgc@s`eZdZeZddZddZddZddZd d Z e j gZ ee _ e j d efgZe e_ d S) zgetPhases..TextPhasecSs|jj|ddS)Nry)r>r)rBrr'r'r(rsz.getPhases..TextPhase.processCharacterscSs8|jjdd|jjdji|jjj|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr@rTr)rJrr>rr@rrr_)rBr'r'r(rs   z'getPhases..TextPhase.processEOFcSsdstd|ddS)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder@)r)rBrr'r'r(r8sz*getPhases..TextPhase.startTagOthercSs*|jjj}|jdkst|jj|j_dS)NrU)r>rrr@rrJrr_)rBrrr'r'r( endTagScripts z)getPhases..TextPhase.endTagScriptcSs|jjj|jj|j_dS)N)r>rrrJrr_)rBrr'r'r(r:s z(getPhases..TextPhase.endTagOtherrUN)r9r:r;r/rrrr8rr:r r;rr<rr'r'r'r( TextPhases  rc s eZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zejd%jfd&e fd'e fd(e fd6e fd7efd/efd8efd2efd3efg Zee_ejd/efd9efgZee_d5S):zgetPhases..InTablePhasecSs(x"|jjdjdkr"|jjjqWdS)Nrrrr)rr)r>rr@r)rBr'r'r(clearStackToTableContextsz8getPhases..InTablePhase.clearStackToTableContextcSs0|jjdjdkr |jjdn |jjs,tdS)Nrrz eof-in-tabler)r>rr@rJrrRr)rBr'r'r(rsz*getPhases..InTablePhase.processEOFcSs4|jj}|jjd|j_||jj_|jjj|dS)N inTableText)rJr_rGrr)rBrrr'r'r(rs z6getPhases..InTablePhase.processSpaceCharacterscSs4|jj}|jjd|j_||jj_|jjj|dS)Nr)rJr_rGrr)rBrrr'r'r(rs z1getPhases..InTablePhase.processCharacterscSs&d|j_|jjdj|d|j_dS)NTrF)r>insertFromTablerJrGr)rBrr'r'r(rsz*getPhases..InTablePhase.insertTextcSs6|j|jjjt|jj||jjd|j_dS)Nr) rr>rlrr rrJrGr_)rBrr'r'r(startTagCaptions z/getPhases..InTablePhase.startTagCaptioncSs(|j|jj||jjd|j_dS)Nr)rr>rrJrGr_)rBrr'r'r(startTagColgroups z0getPhases..InTablePhase.startTagColgroupcSs|jtdd|S)Nrrt)rr2)rBrr'r'r( startTagColsz+getPhases..InTablePhase.startTagColcSs(|j|jj||jjd|j_dS)Nr)rr>rrJrGr_)rBrr'r'r(startTagRowGroups z0getPhases..InTablePhase.startTagRowGroupcSs|jtdd|S)Nrrt)rr2)rBrr'r'r(startTagImplyTbodysz2getPhases..InTablePhase.startTagImplyTbodycSs6|jjdddd|jjjtd|jjs2|SdS)Nz$unexpected-start-tag-implies-end-tagr)rr)rJrr_rr2rR)rBrr'r'r(rs  z-getPhases..InTablePhase.startTagTablecSs|jjdj|S)Nr6)rJrGr)rBrr'r'r(startTagStyleScriptsz3getPhases..InTablePhase.startTagStyleScriptcSsVd|dkrH|ddjtdkrH|jjd|jj||jjjn |j|dS)Nr0ryrz unexpected-hidden-input-in-table) rnrrJrr>rrrr8)rBrr'r'r(rs    z-getPhases..InTablePhase.startTagInputcSsD|jjd|jjdkr@|jj||jjd|j_|jjjdS)Nzunexpected-form-in-tablerr)rJrr>rrrr)rBrr'r'r(rs    z,getPhases..InTablePhase.startTagFormcSs<|jjdd|did|j_|jjdj|d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor@TrF)rJrr>rrGr)rBrr'r'r(r8sz-getPhases..InTablePhase.startTagOthercSs|jjdddr|jj|jjdjdkrJ|jjdd|jjdjdx"|jjdjdkrl|jjjqLW|jjj|jjn|jj st |jjdS) Nr)rrzend-tag-too-early-named)rrrrr) r>rrrr@rJrrrarRr)rBrr'r'r( endTagTables    z+getPhases..InTablePhase.endTagTablecSs|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r( endTagIgnoresz,getPhases..InTablePhase.endTagIgnorecSs<|jjdd|did|j_|jjdj|d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor@TrF)rJrr>rrGr)rBrr'r'r(r:sz+getPhases..InTablePhase.endTagOtherrrrrrrrrrrrrSrUrrrN)rrr)rrr)rSrU) rrrrrrrrrrr)r9r:r;r/rrrrrrrrrrrrr rrr8r!r"r:r r;rrr<rr')rr'r( InTablePhasesH    r#csZeZdZdZfddZddZddZd d Zd d Zd dZ ddZ ddZ Z S)z#getPhases..InTableTextPhasercharacterTokenscs"t|j||d|_g|_dS)N)rerIrr$)rBrr$)InTableTextPhaserr'r(rI6sz,getPhases..InTableTextPhase.__init__cSsddjdd|jD}tdd|DrJtd|d}|jjdj|n|rZ|jj|g|_dS)NrcSsg|] }|dqS)ryr')r?rr'r'r(r|<szGgetPhases..InTableTextPhase.flushCharacters..cSsg|] }|tkqSr')r )r?rr'r'r(r|=srr)r0ryr)joinr$r}rrJrGrr>)rBryrr'r'r(flushCharacters;s z3getPhases..InTableTextPhase.flushCharacterscSs|j|j|j_|S)N)r'rrJr_)rBrr'r'r(rDs z2getPhases..InTableTextPhase.processCommentcSs|j|j|j_dS)NT)r'rrJr_)rBr'r'r(rIs z.getPhases..InTableTextPhase.processEOFcSs |ddkrdS|jj|dS)Nryrz)r$r)rBrr'r'r(rNs z5getPhases..InTableTextPhase.processCharacterscSs|jj|dS)N)r$r)rBrr'r'r(rSsz:getPhases..InTableTextPhase.processSpaceCharacterscSs|j|j|j_|S)N)r'rrJr_)rBrr'r'r(rXs z3getPhases..InTableTextPhase.processStartTagcSs|j|j|j_|S)N)r'rrJr_)rBrr'r'r(r]s z1getPhases..InTableTextPhase.processEndTag)rr$) r9r:r;rrIr'rrrrrrrr')r%)rr(r%3s r%c seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ejdjfd efgZe e_ejde fde fd!e fgZe e_dS)"z!getPhases..InCaptionPhasecSs|jjddd S)Nrr)r)r>r)rBr'r'r(ignoreEndTagCaptionfsz5getPhases..InCaptionPhase.ignoreEndTagCaptioncSs|jjdjdS)Nr)rJrGr)rBr'r'r(risz,getPhases..InCaptionPhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rlsz3getPhases..InCaptionPhase.processCharacterscSs0|jj|j}|jjjtd|s,|SdS)Nr)rJrr(r_rr2)rBr ignoreEndTagr'r'r(startTagTableElementos  z6getPhases..InCaptionPhase.startTagTableElementcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r8wsz/getPhases..InCaptionPhase.startTagOthercSs|js|jj|jjdjdkrB|jjdd|jjdjdx"|jjdjdkrd|jjjqDW|jjj|jj|jj d|j_ n|jj st |jjdS) Nrrz$expected-one-end-tag-but-got-another)rrrrrr) r(r>rrr@rJrrrrGr_rRr)rBrr'r'r( endTagCaptionzs    z/getPhases..InCaptionPhase.endTagCaptioncSs0|jj|j}|jjjtd|s,|SdS)Nr)rJrr(r_rr2)rBrr)r'r'r(r!s  z-getPhases..InCaptionPhase.endTagTablecSs|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r"sz.getPhases..InCaptionPhase.endTagIgnorecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r:sz-getPhases..InCaptionPhase.endTagOtherrrrrrrrrrrrrN) rrrrrrrrr) rrrrrrrrrr)r9r:r;r/rr(rrr*r8r+r!r"r:r r;rrr<rr')rr'r(InCaptionPhasebs*  r,cseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e jdjfdefgZe e_e jde fde fgZe e_dS)z%getPhases..InColumnGroupPhasecSs|jjdjdkS)Nrrr)r>rr@)rBr'r'r(ignoreEndTagColgroupsz:getPhases..InColumnGroupPhase.ignoreEndTagColgroupcSsD|jjdjdkr"|jjstdS|j}|jtd|s@dSdS)NrrrTr) r>rr@rJrRrr-endTagColgroupr2)rBr)r'r'r(rs z0getPhases..InColumnGroupPhase.processEOFcSs"|j}|jtd|s|SdS)Nr)r-r.r2)rBrr)r'r'r(rsz7getPhases..InColumnGroupPhase.processCharacterscSs$|jj||jjjd|d<dS)NTr)r>rrr)rBrr'r'r(rs  z1getPhases..InColumnGroupPhase.startTagColcSs"|j}|jtd|s|SdS)Nr)r-r.r2)rBrr)r'r'r(r8sz3getPhases..InColumnGroupPhase.startTagOthercSs@|jr |jjst|jjn|jjj|jjd|j_ dS)Nr) r-rJrRrrr>rrrGr_)rBrr'r'r(r.s    z4getPhases..InColumnGroupPhase.endTagColgroupcSs|jjdddidS)Nz no-end-tagr@r)rJr)rBrr'r'r( endTagColsz/getPhases..InColumnGroupPhase.endTagColcSs"|j}|jtd|s|SdS)Nr)r-r.r2)rBrr)r'r'r(r:sz1getPhases..InColumnGroupPhase.endTagOtherrrrN)r9r:r;r/rr-rrrr8r.r/r:r r;rrr<rr')rr'r(InColumnGroupPhases"    r0c seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZejdjfde fd&e fd'e fgZe e_ejd(e fd#efd)efgZee_d%S)*z#getPhases..InTableBodyPhasecSsFx"|jjdjdkr"|jjjqW|jjdjdkrB|jjsBtdS) Nrrrrrr)rrrrr)r>rr@rrJrRr)rBr'r'r(clearStackToTableBodyContexts z@getPhases..InTableBodyPhase.clearStackToTableBodyContextcSs|jjdjdS)Nr)rJrGr)rBr'r'r(rsz.getPhases..InTableBodyPhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz:getPhases..InTableBodyPhase.processSpaceCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz5getPhases..InTableBodyPhase.processCharacterscSs(|j|jj||jjd|j_dS)Nr)r1r>rrJrGr_)rBrr'r'r( startTagTrs z.getPhases..InTableBodyPhase.startTagTrcSs*|jjdd|di|jtdd|S)Nzunexpected-cell-in-table-bodyr@rrt)rJrr2r2)rBrr'r'r(startTagTableCellsz5getPhases..InTableBodyPhase.startTagTableCellcSsn|jjddds0|jjddds0|jjdddrT|j|jt|jjdj|S|jjs`t |jj dS)Nrr)rrrrr) r>rr1endTagTableRowGroupr2rr@rJrRrr)rBrr'r'r(startTagTableOther s z6getPhases..InTableBodyPhase.startTagTableOthercSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r8sz1getPhases..InTableBodyPhase.startTagOthercSsT|jj|dddr:|j|jjj|jjd|j_n|jjdd|didS)Nr@r)rrz unexpected-end-tag-in-table-body) r>rr1rrrJrGr_r)rBrr'r'r(r4s  z7getPhases..InTableBodyPhase.endTagTableRowGroupcSsn|jjddds0|jjddds0|jjdddrT|j|jt|jjdj|S|jjs`t |jj dS)Nrr)rrrrr) r>rr1r4r2rr@rJrRrr)rBrr'r'r(r!%s z/getPhases..InTableBodyPhase.endTagTablecSs|jjdd|didS)Nz unexpected-end-tag-in-table-bodyr@)rJr)rBrr'r'r(r"2sz0getPhases..InTableBodyPhase.endTagIgnorecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r:6sz/getPhases..InTableBodyPhase.endTagOtherrrrrrrrrrrrrN)rr)rrrrrr)rrr)rrrrrrrr)r9r:r;r/rr1rrrr2r3r5r8r4r!r"r:r r;rrr<rr')rr'r(InTableBodyPhases4     r6c seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZejdjfd(e fd)e fgZe e_ejd$e fd%efd*efd+efgZee_d'S),zgetPhases..InRowPhasecSsDx>|jjdjdkr>|jjdd|jjdji|jjjqWdS) Nrrrz'unexpected-implied-end-tag-in-table-rowr@r)rrr)r>rr@rJrr)rBr'r'r(clearStackToTableRowContextOsz9getPhases..InRowPhase.clearStackToTableRowContextcSs|jjddd S)Nrr)r)r>r)rBr'r'r(ignoreEndTagTrUsz,getPhases..InRowPhase.ignoreEndTagTrcSs|jjdjdS)Nr)rJrGr)rBr'r'r(rYsz(getPhases..InRowPhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r\sz4getPhases..InRowPhase.processSpaceCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r_sz/getPhases..InRowPhase.processCharacterscSs6|j|jj||jjd|j_|jjjtdS)Nr) r7r>rrJrGr_rlrr )rBrr'r'r(r3bs z/getPhases..InRowPhase.startTagTableCellcSs"|j}|jtd|s|SdS)Nr)r8endTagTrr2)rBrr)r'r'r(r5hsz0getPhases..InRowPhase.startTagTableOthercSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r8osz+getPhases..InRowPhase.startTagOthercSsH|js.|j|jjj|jjd|j_n|jjs:t |jj dS)Nr) r8r7r>rrrJrGr_rRrr)rBrr'r'r(r9rs   z&getPhases..InRowPhase.endTagTrcSs"|j}|jtd|s|SdS)Nr)r8r9r2)rBrr)r'r'r(r!|sz)getPhases..InRowPhase.endTagTablecSs4|jj|dddr&|jtd|S|jjdS)Nr@r)rr)r>rr9r2rJr)rBrr'r'r(r4sz1getPhases..InRowPhase.endTagTableRowGroupcSs|jjdd|didS)Nzunexpected-end-tag-in-table-rowr@)rJr)rBrr'r'r(r"sz*getPhases..InRowPhase.endTagIgnorecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r:sz)getPhases..InRowPhase.endTagOtherrrrrrrrrrrrrN)rr)rrrrrrr)rrr)rrrrrrr)r9r:r;r/rr7r8rrrr3r5r8r9r!r4r"r:r r;rrr<rr')rr'r( InRowPhaseJs6   r:c seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ejdjfd efgZe e_ejd!e fd"e fd#e fgZe e_dS)$zgetPhases..InCellPhasecSsB|jjdddr |jtdn|jjdddr>|jtddS)Nrr)rr)r>rendTagTableCellr2)rBr'r'r( closeCellsz(getPhases..InCellPhase.closeCellcSs|jjdjdS)Nr)rJrGr)rBr'r'r(rsz)getPhases..InCellPhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rsz0getPhases..InCellPhase.processCharacterscSsF|jjddds |jjdddr,|j|S|jjs8t|jjdS)Nrr)rr)r>rr<rJrRrr)rBrr'r'r(r5s  z1getPhases..InCellPhase.startTagTableOthercSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r8sz,getPhases..InCellPhase.startTagOthercSs|jj|dddr|jj|d|jjdj|dkrt|jjdd|dix.|jjj}|j|dkrRPqRWn |jjj|jj|jj d|j_ n|jjdd|didS) Nr@r)rrzunexpected-cell-end-tagrzunexpected-end-tagr) r>rrrr@rJrrrrGr_)rBrrr'r'r(r;s   z.getPhases..InCellPhase.endTagTableCellcSs|jjdd|didS)Nzunexpected-end-tagr@)rJr)rBrr'r'r(r"sz+getPhases..InCellPhase.endTagIgnorecSs.|jj|dddr |j|S|jjdS)Nr@r)r)r>rr<rJr)rBrr'r'r( endTagImplysz*getPhases..InCellPhase.endTagImplycSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r:sz*getPhases..InCellPhase.endTagOtherrrrrrrrrrrrrN) rrrrrrrrr)rr)rrrrr)rrrrr)r9r:r;r/rr<rrr5r8r;r"r=r:r r;rrr<rr')rr'r( InCellPhases(   r>cseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZejdjfdefdefde fd"e fd e fgZe e_ejde fdefdefgZee_d!S)#z getPhases..InSelectPhasecSs0|jjdjdkr |jjdn |jjs,tdS)Nrrz eof-in-selectr)r>rr@rJrrRr)rBr'r'r(rsz+getPhases..InSelectPhase.processEOFcSs$|ddkrdS|jj|ddS)Nryrz)r>r)rBrr'r'r(rs z2getPhases..InSelectPhase.processCharacterscSs.|jjdjdkr|jjj|jj|dS)Nrrr)r>rr@rr)rBrr'r'r(startTagOptions z/getPhases..InSelectPhase.startTagOptioncSsL|jjdjdkr|jjj|jjdjdkr<|jjj|jj|dS)Nrrrrr)r>rr@rr)rBrr'r'r(startTagOptgroup s   z1getPhases..InSelectPhase.startTagOptgroupcSs|jjd|jtddS)Nzunexpected-select-in-selectr)rJr endTagSelectr2)rBrr'r'r(r s z/getPhases..InSelectPhase.startTagSelectcSs>|jjd|jjdddr.|jtd|S|jjs:tdS)Nzunexpected-input-in-selectr)r)rJrr>rrAr2rRr)rBrr'r'r(r s  z.getPhases..InSelectPhase.startTagInputcSs|jjdj|S)Nr6)rJrGr)rBrr'r'r(rM sz/getPhases..InSelectPhase.startTagScriptcSs|jjdd|didS)Nzunexpected-start-tag-in-selectr@)rJr)rBrr'r'r(r8 sz.getPhases..InSelectPhase.startTagOthercSs6|jjdjdkr |jjjn|jjdddidS)Nrrzunexpected-end-tag-in-selectr@r)r>rr@rrJr)rBrr'r'r( endTagOption sz-getPhases..InSelectPhase.endTagOptioncSsf|jjdjdkr0|jjdjdkr0|jjj|jjd jdkrP|jjjn|jjdddidS) Nrrrrzunexpected-end-tag-in-selectr@rr)r>rr@rrJr)rBrr'r'r(endTagOptgroup% s z/getPhases..InSelectPhase.endTagOptgroupcSs^|jjdddrD|jjj}x|jdkr6|jjj}qW|jjn|jjsPt|jj dS)Nr)r) r>rrrr@rJrarRrr)rBrrr'r'r(rA2 s    z-getPhases..InSelectPhase.endTagSelectcSs|jjdd|didS)Nzunexpected-end-tag-in-selectr@)rJr)rBrr'r'r(r:= sz,getPhases..InSelectPhase.endTagOtherrrrrrr rvrUN)rr rv)r9r:r;r/rrrr?r@rrrMr8rBrDrAr:r r;rrr<rr')rr'r( InSelectPhases4    rEc @sneZdZeZddZddZddZddZd d Z d d Z e j defgZ ee _e j de fgZe e_dS)z'getPhases..InSelectInTablePhasecSs|jjdjdS)Nr)rJrGr)rBr'r'r(rU sz2getPhases..InSelectInTablePhase.processEOFcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(rX sz9getPhases..InSelectInTablePhase.processCharacterscSs(|jjdd|di|jtd|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler@r)rJrr:r2)rBrr'r'r(r[ sz5getPhases..InSelectInTablePhase.startTagTablecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r8` sz5getPhases..InSelectInTablePhase.startTagOthercSs@|jjdd|di|jj|dddr<|jtd|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler@r)rr)rJrr>rr:r2)rBrr'r'r(r!c sz3getPhases..InSelectInTablePhase.endTagTablecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r:i sz3getPhases..InSelectInTablePhase.endTagOtherrrrrrrrrN)rrrrrrrr)rrrrrrrr)r9r:r;r/rrrrr8r!r:r r;rr<rr'r'r'r(InSelectInTablePhaseR s  rFc-seZdZeZeddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,Zd-d.Zfd/d0Zd1d2Z d3d4Z d5S)6z(getPhases..InForeignContentPhaserrrrr3rrror)rrprr h1h2h3h4h5h6rrrrrqrurr2rrr&rtrrrspanrrsubsuprrrrvarc%Ssnddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%$}|d&|krj||d&|d&<dS)'NaltGlyph altGlyphDef altGlyphItem animateColor animateMotionanimateTransformclipPathfeBlend feColorMatrixfeComponentTransfer feCompositefeConvolveMatrixfeDiffuseLightingfeDisplacementMapfeDistantLightfeFloodfeFuncAfeFuncBfeFuncGfeFuncRfeGaussianBlurfeImagefeMerge feMergeNode feMorphologyfeOffset fePointLightfeSpecularLighting feSpotLightfeTile feTurbulence foreignObjectglyphReflinearGradientradialGradienttextPath)$altglyph altglyphdef altglyphitem animatecolor animatemotionanimatetransformclippathfeblend fecolormatrixfecomponenttransfer fecompositefeconvolvematrixfediffuselightingfedisplacementmapfedistantlightfefloodfefuncafefuncbfefuncgfefuncrfegaussianblurfeimagefemerge femergenode femorphologyfeoffset fepointlightfespecularlighting fespotlightfetile feturbulence foreignobjectglyphreflineargradientradialgradienttextpathr@r')rBr replacementsr'r'r(adjustSVGTagNames sL z:getPhases..InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n&|jjr szMgetPhases..InForeignContentPhase.processCharacters..F)rJrdr}r)rBr)rr'r(r s   z:getPhases..InForeignContentPhase.processCharacterscSs2|jjd}|d|jks@|ddkrt|djdddh@r|jjdd|dixR|jjdj|jjkr|jj |jjd r|jj |jjd r|jjj qXW|S|jt d kr|jj |n$|jt d kr|j||jj||jj||j|d <|jj||d r.|jjj d |d<dS)Nrr@rrycolorfacesizez*unexpected-html-element-in-foreign-contentrhr}rlrTrrrrr)r>rbreakoutElementssetkeysrJrrlrrprqrrrrrrr)rBrrr'r'r(r s.          z8getPhases..InForeignContentPhase.processStartTagcSst|jjd}|jjd}|jjt|dkrF|jjdd|dix|jjt|dkr|jj|jj dkr|jjj |jjj |j_x |jjj |kr|jjst qWd}P|d8}|jj|}|j|jjkrqHqH|jjj|}PqHW|S)Nrr@zunexpected-end-tagrr)rr>rr@rnrrJrr_rGr'rrrrlrr)rBr nodeIndexrrr'r'r(r s(   z6getPhases..InForeignContentPhase.processEndTagN) r9r:r;r/rrrrrrrr')rr'r(InForeignContentPhasex s      ) rc@sveZdZeZddZddZddZddZd d Z d d Z d dZ e j defgZe e_e j de fgZe e_dS)z!getPhases..AfterBodyPhasecSsdS)Nr')rBr'r'r(r sz,getPhases..AfterBodyPhase.processEOFcSs|jj||jjddS)Nr)r>rr)rBrr'r'r(r sz0getPhases..AfterBodyPhase.processCommentcSs |jjd|jjd|j_|S)Nzunexpected-char-after-bodyr)rJrrGr_)rBrr'r'r(r s z3getPhases..AfterBodyPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r sz.getPhases..AfterBodyPhase.startTagHtmlcSs*|jjdd|di|jjd|j_|S)Nzunexpected-start-tag-after-bodyr@r)rJrrGr_)rBrr'r'r(r8 sz/getPhases..AfterBodyPhase.startTagOthercSs*|jjr|jjdn|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rJrRrrGr_)rBr@r'r'r(r sz,getPhases..AfterBodyPhase.endTagHtmlcSs*|jjdd|di|jjd|j_|S)Nzunexpected-end-tag-after-bodyr@r)rJrrGr_)rBrr'r'r(r: sz-getPhases..AfterBodyPhase.endTagOtherrN)r9r:r;r/rrrrrr8rr:r r;rr<rr'r'r'r(AfterBodyPhase s rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e jdjfdefdefde fgZe e_e jde fgZe e_dS)z"getPhases..InFramesetPhasecSs0|jjdjdkr |jjdn |jjs,tdS)Nrrzeof-in-framesetr)r>rr@rJrrRr)rBr'r'r(r sz-getPhases..InFramesetPhase.processEOFcSs|jjddS)Nzunexpected-char-in-frameset)rJr)rBrr'r'r(r" sz4getPhases..InFramesetPhase.processCharacterscSs|jj|dS)N)r>r)rBrr'r'r(ra% sz3getPhases..InFramesetPhase.startTagFramesetcSs|jj||jjjdS)N)r>rrr)rBrr'r'r( startTagFrame( s z0getPhases..InFramesetPhase.startTagFramecSs|jjdj|S)Nr)rJrGr)rBrr'r'r(startTagNoframes, sz3getPhases..InFramesetPhase.startTagNoframescSs|jjdd|didS)Nz unexpected-start-tag-in-framesetr@)rJr)rBrr'r'r(r8/ sz0getPhases..InFramesetPhase.startTagOthercSs\|jjdjdkr |jjdn |jjj|jj rX|jjdjdkrX|jjd|j_dS)Nrrz)unexpected-frameset-in-frameset-innerhtmlr afterFramesetrr) r>rr@rJrrrRrGr_)rBrr'r'r(endTagFrameset3 s   z1getPhases..InFramesetPhase.endTagFramesetcSs|jjdd|didS)Nzunexpected-end-tag-in-framesetr@)rJr)rBrr'r'r(r:? sz.getPhases..InFramesetPhase.endTagOtherrrrrRN)r9r:r;r/rrrrarrr8rr:r r;rrr<rr')rr'r(InFramesetPhase s$   rcsveZdZeZddZddZddZddZd d Z d d Z e j d j fdefgZee_e j d e fgZe e_dS)z%getPhases..AfterFramesetPhasecSsdS)Nr')rBr'r'r(rT sz0getPhases..AfterFramesetPhase.processEOFcSs|jjddS)Nzunexpected-char-after-frameset)rJr)rBrr'r'r(rX sz7getPhases..AfterFramesetPhase.processCharacterscSs|jjdj|S)Nr6)rJrGr)rBrr'r'r(r[ sz6getPhases..AfterFramesetPhase.startTagNoframescSs|jjdd|didS)Nz#unexpected-start-tag-after-framesetr@)rJr)rBrr'r'r(r8^ sz3getPhases..AfterFramesetPhase.startTagOthercSs|jjd|j_dS)NafterAfterFrameset)rJrGr_)rBrr'r'r(rb sz0getPhases..AfterFramesetPhase.endTagHtmlcSs|jjdd|didS)Nz!unexpected-end-tag-after-framesetr@)rJr)rBrr'r'r(r:e sz1getPhases..AfterFramesetPhase.endTagOtherrrRN)r9r:r;r/rrrrr8rr:r r;rrr<rr')rr'r(AfterFramesetPhaseP s  rc@s`eZdZeZddZddZddZddZd d Z d d Z d dZ e j de fgZe e_dS)z&getPhases..AfterAfterBodyPhasecSsdS)Nr')rBr'r'r(rw sz1getPhases..AfterAfterBodyPhase.processEOFcSs|jj||jjdS)N)r>rr)rBrr'r'r(rz sz5getPhases..AfterAfterBodyPhase.processCommentcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r} sz=getPhases..AfterAfterBodyPhase.processSpaceCharacterscSs |jjd|jjd|j_|S)Nzexpected-eof-but-got-charr)rJrrGr_)rBrr'r'r(r s z8getPhases..AfterAfterBodyPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r sz3getPhases..AfterAfterBodyPhase.startTagHtmlcSs*|jjdd|di|jjd|j_|S)Nzexpected-eof-but-got-start-tagr@r)rJrrGr_)rBrr'r'r(r8 sz4getPhases..AfterAfterBodyPhase.startTagOthercSs*|jjdd|di|jjd|j_|S)Nzexpected-eof-but-got-end-tagr@r)rJrrGr_)rBrr'r'r(r sz4getPhases..AfterAfterBodyPhase.processEndTagrN)r9r:r;r/rrrrrrr8rr r;rr<r'r'r'r(AfterAfterBodyPhaset s rc@sneZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e jde fde fgZe e_dS)z*getPhases..AfterAfterFramesetPhasecSsdS)Nr')rBr'r'r(r sz5getPhases..AfterAfterFramesetPhase.processEOFcSs|jj||jjdS)N)r>rr)rBrr'r'r(r sz9getPhases..AfterAfterFramesetPhase.processCommentcSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r szAgetPhases..AfterAfterFramesetPhase.processSpaceCharacterscSs|jjddS)Nzexpected-eof-but-got-char)rJr)rBrr'r'r(r sz.AfterAfterFramesetPhase.processCharacterscSs|jjdj|S)Nr)rJrGr)rBrr'r'r(r sz7getPhases..AfterAfterFramesetPhase.startTagHtmlcSs|jjdj|S)Nr6)rJrGr)rBrr'r'r(startTagNoFrames sz;getPhases..AfterAfterFramesetPhase.startTagNoFramescSs|jjdd|didS)Nzexpected-eof-but-got-start-tagr@)rJr)rBrr'r'r(r8 sz8getPhases..AfterAfterFramesetPhase.startTagOthercSs|jjdd|didS)Nzexpected-eof-but-got-end-tagr@)rJr)rBrr'r'r(r sz8getPhases..AfterAfterFramesetPhase.processEndTagrrRN)r9r:r;r/rrrrrrrr8rr r;rr<r'r'r'r(AfterAfterFramesetPhase s r)rVrUrr6rJrNrrrrrrrrrrrr~rrrrr)r)rHrXrr0r4r=r[r_rdrr#r,r0r6r:r>rErFrrrrrrr')rgr%rr(rFspH%-f?BY!/F@bYLc&r.8$%&rFcsFt|dt@}|rBt|dfdd|djD|d<dS)Nryc3s"|]\}}j|||fVqdS)N)r)r?kv)rr'r(r sz$adjust_attributes..)rr0r,)rrneeds_adjustmentr')rr(r srruFcCs|dkr i}t||||dS)N)r0r@ryr)r)r@r0rmrr'r'r(r2 s r2c@seZdZdZdS)rxzError in parsed documentN)r9r:r;rr'r'r'r(rx srx)rT)r)rT)ruNF), __future__rrrpip._vendor.sixrrr.rrr r Ztreebuilders.baser r constantsr rrrrrrrrrrrrrrrrr!r+r=rr memoizerFrr2 Exceptionrxr'r'r'r(sJ     H   8`