U .e@sddlmZmZmZddlmZmZddlZddlm Z ddl m Z ddl m Z ddl m Z dd lmZdd l mZdd lmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"d!ddZ#d"ddZ$ddZ%Gddde&Z'ej(ddZ)ddZ*d#ddZ+Gdd d e,Z-dS)$)absolute_importdivisionunicode_literals)with_metaclassviewkeysN) OrderedDict) _inputstream) _tokenizer) treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElements cdataElementsrcdataElements tokenTypes tagTokenTypes namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesE_ReparseExceptionetreeTcKs$t|}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 treebuilderr kwargstbpr)D/usr/lib/python3.8/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%r r&r'r(r)r)r*r-2s  r-csGfdddt}|S)NcseZdZfddZdS)z-method_decorator_metaclass..Decoratedcs>|D]$\}}t|tjr$|}|||<qt||||SN)items isinstancetypes FunctionTypetype__new__)metaZ classnamebasesZ classDictZ attributeNameZ attributefunctionr)r*r4Ms   z5method_decorator_metaclass..Decorated.__new__N)__name__ __module__ __qualname__r4r)r7r)r* DecoratedLsr<)r3)r8r<r)r7r*method_decorator_metaclassKsr=c@seZdZdZd+ddZd,dd Zd d Zed d ZddZ ddZ ddZ ddZ ddZ ddZd-ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*ZdS).r"z]HTML parser Generates a tree structure from a stream of (possibly malformed) HTML. NFTcsL|_|dkrtd}||_g_tfddt|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 Nrcs g|]\}}||jfqSr))tree).0nameclsselfr)r* zsz'HTMLParser.__init__..) strictr r!r>errorsdict getPhasesr/phases)rCr>rEr debugr)rBr*__init__^s    zHTMLParser.__init__r+cKsh||_||_||_tj|fd|i||_|z |Wn$tk rb||YnXdS)Nparser) innerHTMLModer, scriptingr Z HTMLTokenizer tokenizerresetmainLoopr)rCstream innerHTMLr,rNr&r)r)r*_parse}s zHTMLParser._parsecCs|jd|_g|_g|_d|_|jr|j|_ |j t krL|j j |j _ n0|j tkrd|j j|j _ n|j dkr||j j|j _ n|jd|_|j|nd|_ |jd|_d|_d|_d|_dS)NFz no quirks plaintext beforeHtmlinitialT)r>rP firstStartTagrFlog compatModerMr,lowerrSrrO rcdataStatestater rawtextStateplaintextStaterIphaseinsertHtmlElementresetInsertionModeZ lastPhaseZbeforeRCDataPhase framesetOKrBr)r)r*rPs*         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 rONr)hasattrrOrR charEncodingr@rBr)r)r*documentEncodings zHTMLParser.documentEncodingcCsJ|jdkr6|jtdkr6d|jko4|jdtdkS|j|jftkSdS)Nannotation-xmlmathmlencoding)z text/htmlzapplication/xhtml+xml)r@ namespacer attributes translaterrrCelementr)r)r*isHTMLIntegrationPoints    z!HTMLParser.isHTMLIntegrationPointcCs|j|jftkSr.)rjr@rrmr)r)r*isMathMLTextIntegrationPointsz'HTMLParser.isMathMLTextIntegrationPointcCshtd}td}td}td}td}td}td}|D]}d} |} | dk r| } |jjrp|jjdnd} | r~| jnd} | r| jnd} | d }||kr|| d | d id} qNt|jjd ksd| |jj ksd| | r||kr |d t ddgksd|||fksd| t dkrH| dkrH||krH|d dksd| | rl||||fkrl|j}n |jd}||kr|| } qN||kr|| } qN||kr|| } qN||kr|| } qN||kr|| } qN||krN|| } qN||kr@| dr@| ds@|dd | d iq@d}g}|rd||j|j}|r.|j|ks.tq.dS)N CharactersZSpaceCharactersStartTagEndTagCommentZDoctype ParseErrorr3datadatavarsrr@ZmglyphZ malignmarkrhrgsvginForeignContent selfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)rnormalizedTokensr> openElementsrjr@ parseErrorgetlendefaultNamespacerp frozensetrror`rIprocessCharactersprocessSpaceCharactersprocessStartTag processEndTagprocessCommentprocessDoctypeappend processEOFAssertionError)rCZCharactersTokenZSpaceCharactersTokenZ StartTagTokenZ EndTagTokenZ CommentTokenZ DoctypeTokenZParseErrorTokentokenZ prev_token new_token currentNodeZcurrentNodeNamespaceZcurrentNodeNamer3r`Z reprocessrIr)r)r*rQs                       zHTMLParser.mainLoopccs|jD]}||VqdSr.)rOnormalizeTokenrCrr)r)r*r}s zHTMLParser.normalizedTokenscOs |j|ddf|||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)rTr>Z getDocumentrCrRargsr&r)r)r*r# szHTMLParser.parsecOs|j|df|||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)rTr>Z getFragmentrr)r)r*r-$szHTMLParser.parseFragmentXXX-undefined-errorcCs@|dkr i}|j|jj||f|jrr~r@rSrrjrrIr`)rCZlastZnewModesnodeZnodeNameZ new_phaser)r)r*rb`sD   zHTMLParser.resetInsertionModecCsR|dks t|j||dkr.|jj|j_n |jj|j_|j|_|j d|_dS)N)RAWTEXTRCDATArtext) rr> insertElementrOr^r]r\r` originalPhaserI)rCrZ contentTyper)r)r*parseRCDataRawtexts   zHTMLParser.parseRCDataRawtext)NFTF)Fr+F)rN)r9r:r;__doc__rKrTrPpropertyrfrorprQr}r#r-rrrrrrrbrr)r)r)r*r"Ws(  "  C  ,r"cs"dd}dd}Gdddt|||Gddd}Gd d d }Gfd d d }Gfd dd}Gfddd}Gfddd}Gfddd} Gfddd} Gfddd} Gfddd} Gfddd} Gfddd}Gfdd d }Gfd!d"d"}Gfd#d$d$}Gfd%d&d&}Gfd'd(d(}Gfd)d*d*}Gfd+d,d,}Gfd-d.d.}Gfd/d0d0}Gfd1d2d2}Gfd3d4d4}||||||| | | | | ||||||||||||d5S)6Ncs(tddtDfdd}|S)z4Logger that records which phase processes each tokencss|]\}}||fVqdSr.r))r?keyvaluer)r)r* sz)getPhases..log..csjdrt|dkr|d}zd|di}WnYnX|dtkr\|d|d<|jj|jjjj|jj j j|j jj|f|f||S|f||SdS)NZprocessrr3r@) r9 startswithrrrLrYrrOr]r` __class__)rCrr&rinfor8Z type_namesr)r*wrappeds    z'getPhases..log..wrapped)rGrr/)r8rr)rr*rYs zgetPhases..logcSs|r t|StSdSr.)r=r3)Z use_metaclassZmetaclass_funcr)r)r* getMetaclassszgetPhases..getMetaclassc@sXeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ dS)zgetPhases..PhasezNBase class for helper object that implements each phase of processing cSs||_||_dSr.)rLr>rCrLr>r)r)r*rKsz!getPhases..Phase.__init__cSstdSr.)NotImplementedErrorrBr)r)r*rsz#getPhases..Phase.processEOFcSs|j||jjddS)Nrvr> insertCommentr~rr)r)r*rsz'getPhases..Phase.processCommentcSs|jddS)Nzunexpected-doctyperLrrr)r)r*rsz'getPhases..Phase.processDoctypecSs|j|ddSNrwr> insertTextrr)r)r*rsz*getPhases..Phase.processCharacterscSs|j|ddSrrrr)r)r*rsz/getPhases..Phase.processSpaceCharacterscSs|j|d|SNr@)startTagHandlerrr)r)r*rsz(getPhases..Phase.processStartTagcSsf|jjs |ddkr |jd|dD],\}}||jjdjkr,||jjdj|<q,d|j_dS)Nr@rz non-html-rootrwrF)rLrXrr/r>r~rkrCrattrrr)r)r* startTagHtmls  z%getPhases..Phase.startTagHtmlcSs|j|d|Sr) endTagHandlerrr)r)r*rsz&getPhases..Phase.processEndTagN) r9r:r;rrKrrrrrrrrr)r)r)r*Phases rc@sLeZdZddZddZddZddZd d Zd d Zd 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@|dk s@|dk rL|dkrL|jd|dkrXd}|j||dkrv|t}|r|ddks|d s|d ks|d r|dks|r|d krd |j_n$|ds|d r|dk rd|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 quirksrV) rLrr>Z insertDoctyperlrrr[rZrIr`)rCrr@rrrr)r)r*rsX   9<?@@ A z.getPhases..InitialPhase.processDoctypecSsd|j_|jjd|j_dS)NrrV)rLrZrIr`rBr)r)r* anythingElseMsz,getPhases..InitialPhase.anythingElsecSs|jd||S)Nzexpected-doctype-but-got-charsrLrrrr)r)r*rQs z1getPhases..InitialPhase.processCharacterscSs"|jdd|di||S)Nz"expected-doctype-but-got-start-tagr@rrr)r)r*rVs  z/getPhases..InitialPhase.processStartTagcSs"|jdd|di||S)Nz expected-doctype-but-got-end-tagr@rrr)r)r*r\s  z-getPhases..InitialPhase.processEndTagcSs|jd|dS)Nzexpected-doctype-but-got-eofTrrBr)r)r*rbs z*getPhases..InitialPhase.processEOFN) r9r:r;rrrrrrrrr)r)r)r* InitialPhases_rc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)z"getPhases..BeforeHtmlPhasecSs&|jtdd|jjd|j_dS)Nrrrr)r>Z insertRootimpliedTagTokenrLrIr`rBr)r)r*raisz4getPhases..BeforeHtmlPhase.insertHtmlElementcSs |dSNTrarBr)r)r*rnsz-getPhases..BeforeHtmlPhase.processEOFcSs|j||jjdSr.rrr)r)r*rrsz1getPhases..BeforeHtmlPhase.processCommentcSsdSr.r)rr)r)r*rusz9getPhases..BeforeHtmlPhase.processSpaceCharacterscSs ||Sr.rrr)r)r*rxsz4getPhases..BeforeHtmlPhase.processCharacterscSs |ddkrd|j_||S)Nr@rT)rLrXrarr)r)r*r|s z2getPhases..BeforeHtmlPhase.processStartTagcSs4|ddkr$|jdd|din ||SdS)Nr@rrrbrzunexpected-end-tag-before-html)rLrrarr)r)r*rs   z0getPhases..BeforeHtmlPhase.processEndTagN) r9r:r;rarrrrrrr)r)r)r*BeforeHtmlPhasegsrcsXeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z"getPhases..BeforeHeadPhasecsV|||td|jfd|jfg|_|j|j_td|jfg|_ |j |j _dS)Nrrr) rKr MethodDispatcherr startTagHeadr startTagOtherdefaultendTagImplyHeadr endTagOtherrrr)r*rKs z+getPhases..BeforeHeadPhase.__init__cSs|tdddS)NrrrTrrrBr)r)r*rsz-getPhases..BeforeHeadPhase.processEOFcSsdSr.r)rr)r)r*rsz9getPhases..BeforeHeadPhase.processSpaceCharacterscSs|tdd|SNrrrrrr)r)r*rsz4getPhases..BeforeHeadPhase.processCharacterscSs|jjd|SNrrLrIrrr)r)r*rsz/getPhases..BeforeHeadPhase.startTagHtmlcSs0|j||jjd|j_|jjd|j_dS)NrvinHead)r>rr~ headPointerrLrIr`rr)r)r*rs z/getPhases..BeforeHeadPhase.startTagHeadcSs|tdd|Srrrr)r)r*rsz0getPhases..BeforeHeadPhase.startTagOthercSs|tdd|Srrrr)r)r*rsz2getPhases..BeforeHeadPhase.endTagImplyHeadcSs|jdd|didS)Nzend-tag-after-implied-rootr@rrr)r)r*rs z.getPhases..BeforeHeadPhase.endTagOtherN) r9r:r;rKrrrrrrrrr)rr)r*BeforeHeadPhases rcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!S)"zgetPhases..InHeadPhasec s|||td|jfd|jfd|jfd|jfd|jfd|jfd|j fd|j fg|_ |j |j _ td|jfd |jfg|_|j|j_ dS) Nrtitle)noframesstylenoscriptscript)basebasefontbgsoundcommandlinkr5r)rrr)rKr rr startTagTitlestartTagNoFramesStylestartTagNoscriptstartTagScriptstartTagBaseLinkCommand startTagMetarrrr endTagHeadendTagHtmlBodyBrrrrrr)r*rKs& z'getPhases..InHeadPhase.__init__cSs |dSrrrBr)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~poprr)r)r*rs  z6getPhases..InHeadPhase.startTagBaseLinkCommandcSs|j||jjd|d<|d}|jjjjddkrd|krZ|jjj|dnVd|krd|kr|d d krt |d d }t |}|}|jjj|dS) NTr|rwrZ tentativecharsetZcontentz http-equivz content-typezutf-8)r>rr~rrLrOrRreZchangeEncodingr[r Z EncodingBytesencodeZContentAttrParserr#)rCrrkrwrLcodecr)r)r*rs    z+getPhases..InHeadPhase.startTagMetacSs|j|ddS)NrrLrrr)r)r*rsz,getPhases..InHeadPhase.startTagTitlecSs|j|ddS)Nrr rr)r)r*rsz4getPhases..InHeadPhase.startTagNoFramesStylecSs8|jjr|j|dn|j||jjd|j_dS)NrinHeadNoscript)rLrNrr>rrIr`rr)r)r*rs z/getPhases..InHeadPhase.startTagNoscriptcSs<|j||jjj|jj_|jj|j_|jjd|j_dS)Nr) r>rrLrOZscriptDataStater]r`rrIrr)r)r*rs  z-getPhases..InHeadPhase.startTagScriptcSs ||Sr.rrr)r)r*r sz,getPhases..InHeadPhase.startTagOthercSs:|jjj}|jdks&td|j|jjd|j_dS)NrzExpected head got %s afterHeadrLr>r~rr@rrIr`rCrrr)r)r*rsz)getPhases..InHeadPhase.endTagHeadcSs ||Sr.rrr)r)r*rsz/getPhases..InHeadPhase.endTagHtmlBodyBrcSs|jdd|didSNunexpected-end-tagr@rrr)r)r*rsz*getPhases..InHeadPhase.endTagOthercSs|tddS)Nr)rrrBr)r)r*rsz+getPhases..InHeadPhase.anythingElseN)r9r:r;rKrrrrrrrrrrrrrrrr)rr)r* InHeadPhases  rcsxeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)z&getPhases..InHeadNoscriptPhasecsf|||td|jfd|jfd|jfg|_|j|j_td|j fd|j fg|_ |j |j _dS)Nr)rrrr5rr)rrrr) rKr rrrstartTagHeadNoscriptrrrendTagNoscriptendTagBrrrrrr)r*rK s z/getPhases..InHeadNoscriptPhase.__init__cSs|jd|dS)Nzeof-in-head-noscriptTrrBr)r)r*r0s z1getPhases..InHeadNoscriptPhase.processEOFcSs|jjd|SNr)rLrIrrr)r)r*r5sz5getPhases..InHeadNoscriptPhase.processCommentcSs|jd||S)Nzchar-in-head-noscriptrrr)r)r*r8s z8getPhases..InHeadNoscriptPhase.processCharacterscSs|jjd|SrrLrIrrr)r)r*r=sz=getPhases..InHeadNoscriptPhase.processSpaceCharacterscSs|jjd|Srrrr)r)r*r@sz3getPhases..InHeadNoscriptPhase.startTagHtmlcSs|jjd|Srrrr)r)r*rCsz>getPhases..InHeadNoscriptPhase.startTagBaseLinkCommandcSs|jdd|didSNunexpected-start-tagr@rrr)r)r*rFsz;getPhases..InHeadNoscriptPhase.startTagHeadNoscriptcSs"|jdd|di||SNzunexpected-inhead-noscript-tagr@rrr)r)r*rIsz4getPhases..InHeadNoscriptPhase.startTagOthercSs:|jjj}|jdks&td|j|jjd|j_dS)NrzExpected noscript got %srr r r)r)r*rNsz5getPhases..InHeadNoscriptPhase.endTagNoscriptcSs"|jdd|di||Srrrr)r)r*rSsz/getPhases..InHeadNoscriptPhase.endTagBrcSs|jdd|didSrrrr)r)r*rXsz2getPhases..InHeadNoscriptPhase.endTagOthercSs|tddS)Nr)rrrBr)r)r*r[sz3getPhases..InHeadNoscriptPhase.anythingElseN)r9r:r;rKrrrrrrrrrrrrr)rr)r*InHeadNoscriptPhases rcspeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)z!getPhases..AfterHeadPhasecsn|||td|jfd|jfd|jfd|jfd|jfg|_|j |j_ td|j fg|_ |j |j _ dS)Nrrr) rrrrr5rrrrr)rrr)rKr rr startTagBodystartTagFramesetstartTagFromHeadrrrrrrrrrr)r*rK`s  z*getPhases..AfterHeadPhase.__init__cSs |dSrrrBr)r)r*rqsz,getPhases..AfterHeadPhase.processEOFcSs ||Sr.rrr)r)r*rusz3getPhases..AfterHeadPhase.processCharacterscSs|jjd|Srrrr)r)r*rysz.getPhases..AfterHeadPhase.startTagHtmlcSs(d|j_|j||jjd|j_dS)NFr)rLrcr>rrIr`rr)r)r*r|s z.getPhases..AfterHeadPhase.startTagBodycSs |j||jjd|j_dS)Nr)r>rrLrIr`rr)r)r*rs z2getPhases..AfterHeadPhase.startTagFramesetcSsr|jdd|di|jj|jj|jjd||jjdddD] }|jdkrL|jj |qnqLdS)Nz#unexpected-start-tag-out-of-my-headr@rrvr) rLrr>r~rrrIrr@remover r)r)r*rs  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)NrrrrT)r>rrrLrIr`rcrBr)r)r*rsz.getPhases..AfterHeadPhase.anythingElseN)r9r:r;rKrrrrrrrrrrrr)rr)r*AfterHeadPhase_s  rcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*dQdRZ+dSdTZ,dUdVZ-dWdXZ.dYdZZ/d[d\Z0d]d^Z1d_d`Z2dadbZ3dcddZ4dedfZ5dgS)hzgetPhases..InBodyPhasec$s||||j|_td|jfd|jfd|jfd|jfd|j ft |j fd|j fd|j fd|jfd |jfd |jfd |jfd |jfd |jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|j fd|j!fd|j"fd|j#fd|j$fd|j%fd |j&fg!|_'|j(|j'_)td|j*fd|j+fd!|j,fd|j-fd"|j.fd#|j/ft |j0fd$|j1fd|j2fd%|j3fg |_4|j5|j4_)dS)&Nr) rrrrrr5rrrrr)addressarticleaside blockquotecenterdetailsdirr+dlfieldset figcaptionfigurefooterheaderhgroupmainmenunavolr(sectionsummaryul)prelistingform)lidddtrUa) bbigcodeemfontissmallstrikestrongttunobrbutton)ZappletZmarqueeobjectZxmpr)ZarearembedimgkeygenZwbr)ZparamsourceZtrackinputhrimageisindextextareaZiframer)Znoembedrr)rprt)optionoptgroupZmathry) rcolrframerrrrrrr)rr r!r"rHr#r$Zdialogr%r+r&r'r(r)r*r+r,r5r-r.r/r0r4r1r2r3r()r8r9r7)r:r;r<r=r>r?r@rGrArBrCrDrErFr)6rKprocessSpaceCharactersNonPrerr rrstartTagProcessInHeadrrstartTagClosePrstartTagHeadingstartTagPreListing startTagFormstartTagListItemstartTagPlaintext startTagAstartTagFormatting startTagNobrstartTagButtonstartTagAppletMarqueeObject startTagXmp startTagTablestartTagVoidFormattingstartTagParamSource startTagInput startTagHr startTagImagestartTagIsIndexstartTagTextareastartTagIFramerstartTagRawtextstartTagSelect startTagRpRt startTagOpt startTagMath startTagSvgstartTagMisplacedrrr endTagBody endTagHtml endTagBlock endTagFormendTagPendTagListItem endTagHeadingendTagFormattingendTagAppletMarqueeObjectrrrrrr)r*rKs- z'getPhases..InBodyPhase.__init__cSs$|j|jko"|j|jko"|j|jkSr.)r@rjrk)rCZnode1Znode2r)r)r*isMatchingFormattingElements    z:getPhases..InBodyPhase.isMatchingFormattingElementcSs|j||jjd}g}|jjdddD](}|tkr@qXq.|||r.||q.t|dkshtt|dkr|jj |d|jj|dS)Nrv) r>rr~activeFormattingElementsr rrrrr)rCrrnZmatchingElementsrr)r)r*addFormattingElements     z3getPhases..InBodyPhase.addFormattingElementcSs>td}|jjdddD]}|j|kr|jdq:qdS)N) r8r9r7r(rrrrrrrrrvz expected-closing-tag-but-got-eof)rr>r~r@rLr)rCZallowed_elementsrr)r)r*rs   z)getPhases..InBodyPhase.processEOFcSsf|d}|j|_|drH|jjdjdkrH|jjdsH|dd}|rb|j|j|dS)Nrw rv)r4r5rRr) rYrrr>r~r@Z hasContent#reconstructActiveFormattingElementsr)rCrrwr)r)r*!processSpaceCharactersDropNewline s   z@getPhases..InBodyPhase.processSpaceCharactersDropNewlinecSsT|ddkrdS|j|j|d|jjrPtdd|dDrPd|j_dS)NrwcSsg|] }|tkqSr)rr?charr)r)r*rD"szDgetPhases..InBodyPhase.processCharacters..F)r>rrrLrcanyrr)r)r*rs  z0getPhases..InBodyPhase.processCharacterscSs|j|j|ddSr)r>rrrr)r)r*rY&s z;getPhases..InBodyPhase.processSpaceCharactersNonPrecSs|jjd|Srrrr)r)r*rZ*sz4getPhases..InBodyPhase.startTagProcessInHeadcSs|jdddit|jjdks4|jjdjdkrB|jjstnBd|j_|d D],\}}||jjdj krV||jjdj |<qVdS)Nrr@rrFrw) rLrrr>r~r@rSrrcr/rkrr)r)r*r-sz+getPhases..InBodyPhase.startTagBodycSs|jdddit|jjdks4|jjdjdkrB|jjstnp|jjsLnf|jjdj rv|jjdj |jjd|jjdjdkr|jj qv|j ||jj d|j_dS) Nrr@rrrrvrr)rLrrr>r~r@rSrrcparent removeChildrrrIr`rr)r)r*r8s" z/getPhases..InBodyPhase.startTagFramesetcSs.|jjdddr|td|j|dSNr(rHvariant)r>elementInScoper{rrrr)r)r*r[Fsz-getPhases..InBodyPhase.startTagClosePcSs>|jjdddr|td|j|d|j_|j|_dS)Nr(rHrF) r>rr{rrrLrcrrrr)r)r*r]Ks  z1getPhases..InBodyPhase.startTagPreListingcSsZ|jjr|jdddin:|jjdddr:|td|j||jjd|j_dS)Nrr@r6r(rHrrv) r> formPointerrLrrr{rrr~rr)r)r*r^Rs  z+getPhases..InBodyPhase.startTagFormcSsd|j_dgddgddgd}||d}t|jjD]@}|j|kr^|jjt|jdqx|j t kr6|jdkr6qxq6|jj d d d r|jjtd d|j |dS) NFr7r9r8)r7r9r8r@rs)rr+r(r(rHr) rLrcreversedr>r~r@r`rr nameTuplerrr)rCrZ stopNamesMapZ stopNamesrr)r)r*r_[s*    z/getPhases..InBodyPhase.startTagListItemcSs>|jjdddr|td|j||jjj|jj_dSr) r>rr{rrrLrOr_r]rr)r)r*r`qs z0getPhases..InBodyPhase.startTagPlaintextcSsb|jjdddr|td|jjdjtkrR|jdd|di|jj |j |dS)Nr(rHrrvrr@) r>rr{rr~r@rrLrrrrr)r)r*r\ws  z.getPhases..InBodyPhase.startTagHeadingcSs~|jd}|rf|jdddd|td||jjkrL|jj|||jjkrf|jj||j | |dS)Nr:$unexpected-start-tag-implies-end-tagZ startNameZendName) r>!elementInActiveFormattingElementsrLrr~rr~rrrr)rCrZ afeAElementr)r)r*ras    z(getPhases..InBodyPhase.startTagAcSs|j||dSr.)r>rrrr)r)r*rbs z1getPhases..InBodyPhase.startTagFormattingcSsP|j|jdrB|jdddd|td|j||dS)NrGrr)r>rrrLrrrrrr)r)r*rcs   z+getPhases..InBodyPhase.startTagNobrcSsT|jdr2|jdddd|td|S|j|j|d|j_dS)NrHrrF) r>rrLrrrrrrcrr)r)r*rds   z-getPhases..InBodyPhase.startTagButtoncSs0|j|j||jjtd|j_dSNF)r>rrrrr rLrcrr)r)r*res  z:getPhases..InBodyPhase.startTagAppletMarqueeObjectcSsB|jjdddr|td|jd|j_|j|ddS)Nr(rHrFr)r>rr{rrrLrcrrr)r)r*rfs  z*getPhases..InBodyPhase.startTagXmpcSsR|jjdkr*|jjdddr*|td|j|d|j_|jjd|j_ dS)Nrr(rHrFr) rLrZr>rrrrrcrIr`rr)r)r*rgs   z,getPhases..InBodyPhase.startTagTablecSs6|j|j||jjd|d<d|j_dS)NTr|F)r>rrr~rrLrcrr)r)r*rhs    z5getPhases..InBodyPhase.startTagVoidFormattingcSs@|jj}||d|dkr<|ddtdkr<||j_dS)Nr3rwhidden)rLrcrhrlr)rCrrcr)r)r*rjs   z,getPhases..InBodyPhase.startTagInputcSs$|j||jjd|d<dSrrrr)r)r*ris  z2getPhases..InBodyPhase.startTagParamSourcecSsJ|jjdddr|td|j||jjd|d<d|j_dS)Nr(rHrTr|F) r>rr{rrr~rrLrcrr)r)r*rks   z)getPhases..InBodyPhase.startTagHrcSs6|jdddd|tdd|d|dddS) Nzunexpected-start-tag-treated-asrPrKZ originalNameZnewNamerrrwr{rkr{)rLrrrrr)r)r*rls z,getPhases..InBodyPhase.startTagImagecSs|jdddi|jjrdSi}d|dkr>|dd|d<|tdd|d|td d|td dd |dkr|dd }nd }|td |d|d}d|kr|d=d |kr|d =d|d<|tdd||dd| td |td d| tddS)Nzdeprecated-tagr@rQactionrwr6rr)rkrOZlabelpromptz3This is a searchable index. Enter search keywords: rqr3rwrNr{r) rLrr>rrrrrcopyr)rCrZ form_attrsrrkr)r)r*rms<      z.getPhases..InBodyPhase.startTagIsIndexcSs0|j||jjj|jj_|j|_d|j_dSr) r>rrLrOr\r]rrrcrr)r)r*rns z/getPhases..InBodyPhase.startTagTextareacSsd|j_||dSr)rLrcrprr)r)r*rosz-getPhases..InBodyPhase.startTagIFramecSs"|jjr||n ||dSr.)rLrNrprrr)r)r*rs z/getPhases..InBodyPhase.startTagNoscriptcSs|j|ddS)z8iframe, noembed noframes, noscript(if scripting enabled)rNr rr)r)r*rp sz.getPhases..InBodyPhase.startTagRawtextcSs@|jjdjdkr$|jjtd|j|jj|dSNrvrU) r>r~r@rLr`rrrrrr)r)r*rss z*getPhases..InBodyPhase.startTagOptcSs|j|j|d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfkrx|jjd|j_n|jjd |j_dS) NFrrrrrrinSelectInTabler)r>rrrLrcr`rIrr)r)r*rqs       z-getPhases..InBodyPhase.startTagSelectcSsB|jdr2|j|jjdjdkr2|j|j|dS)Nrubyrv)r>rgenerateImpliedEndTagsr~r@rLrrrr)r)r*rr%s    z+getPhases..InBodyPhase.startTagRpRtcSsZ|j|j||j|td|d<|j||drV|jjd|d<dS)Nrhrjr{Tr|) r>rrLrrrrr~rrr)r)r*rt,s      z+getPhases..InBodyPhase.startTagMathcSsZ|j|j||j|td|d<|j||drV|jjd|d<dS)Nryrjr{Tr|) r>rrLrrrrr~rrr)r)r*ru8s      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*rvDsz0getPhases..InBodyPhase.startTagMisplacedcSs|j|j|dSr.)r>rrrr)r)r*rMs z,getPhases..InBodyPhase.startTagOthercSs|jjdddsD|tdd|jdddi|tddnT|jd|jjdj dkrt|jdddi|jj }|j dkr|jj }qdS) Nr(rHrrrrr@rsrv) r>rr[rrLrr{rr~r@rr r)r)r*r{Qs   z&getPhases..InBodyPhase.endTagPcSs~|jds|jdS|jjdjdkrj|jjddD],}|jtdkr<|jdd|jdqjq<|jjd|j_dS)Nrrv)r8r9r7rVrUr(rSrTrrrrrrrr$expected-one-end-tag-but-got-anotherZgotNameZ expectedName afterBody) r>rrLrr~r@rrIr`r r)r)r*rw^s   z)getPhases..InBodyPhase.endTagBodycSs"|jdr|td|SdS)Nr)r>rrwrrr)r)r*rxps z)getPhases..InBodyPhase.endTagHtmlcSs|ddkr|j|_|j|d}|r2|j|jjdj|dkr^|jdd|di|r|jj }|j|dkr|jj }qndS)Nr@r4rvend-tag-too-early) rYrr>rrr~r@rLrr)rCrZinScoperr)r)r*ryvs   z*getPhases..InBodyPhase.endTagBlockcSsv|jj}d|j_|dks$|j|s8|jdddin:|j|jjd|krd|jdddi|jj|dS)Nrr@r6rvzend-tag-too-early-ignored)r>rrrLrrr~rr r)r)r*rzs z)getPhases..InBodyPhase.endTagFormcSs|ddkrd}nd}|jj|d|dsB|jdd|dinf|jj|dd|jjdj|dkr|jdd|di|jj}|j|dkr|jj}qdS) Nr@r7listrrexcludervr)r>rrLrrr~r@r)rCrrrr)r)r*r|s   z-getPhases..InBodyPhase.endTagListItemcSstD]}|j|r|jq$q|jjdj|dkrP|jdd|ditD]8}|j|rT|jj}|jtkr|jj}qpqqTdS)Nrvr@r) rr>rrr~r@rLrr)rCritemr)r)r*r}s     z,getPhases..InBodyPhase.endTagHeadingcSsd}|dkr |d7}|j|d}|rD||jjkrR|j|jsR||dS||jjkr|jdd|di|jj |dS|j|js|jdd|didS||jjdkr|jd d|di|jj |}d}|jj|dD]}|j t kr|}qq|dkrR|jj }||kr@|jj }q&|jj |dS|jj|d}|jj |}|} } d} |jj | } | d krX| d7} | d8} |jj| } | |jjkr|jj | q| |krސqX| |kr|jj | d}| } | |jj|jj | <| |jj|jj | <| } | jrF| j| | | | } q| jrl| j| |jtd kr|j\}}|| |n || |} || || |jj ||jj|| |jj ||jj|jj |d| qdS) z)The much-feared adoption agency algorithmrrr@Nzadoption-agency-1.2zadoption-agency-4.4rvzadoption-agency-1.3rrrrrr)r>rr~rr@rrLrrrindexrrrZ cloneNoderrZ appendChildrZgetTableMisnestedNodePosition insertBeforeZreparentChildreninsert)rCrZouterLoopCounterZformattingElementZafeIndexZ furthestBlockrnZcommonAncestorZbookmarkZlastNoderZinnerLoopCounterrZclonerrr)r)r*r~s                      z/getPhases..InBodyPhase.endTagFormattingcSs|j|dr|j|jjdj|dkrF|jdd|di|j|dr|jj}|j|dkr~|jj}qb|jdS)Nr@rvr) r>rrr~r@rLrrclearActiveFormattingElements)rCrrnr)r)r*rTs  z8getPhases..InBodyPhase.endTagAppletMarqueeObjectcSs@|jdddd|j|jtdd|jjdS)Nzunexpected-end-tag-treated-asrz br elementrrr)rLrr>rrrr~rrr)r)r*r`s  z'getPhases..InBodyPhase.endTagBrcSs|jjdddD]}|j|dkrz|jj|dd|jjdj|dkrb|jdd|di|jj|krtqbqq|jtkr|jdd|diqqdS)Nrvr@rr) r>r~r@rrLrrrrr r)r)r*rgs z*getPhases..InBodyPhase.endTagOtherN)6r9r:r;rKrrrrrrYrZrrr[r]r^r_r`r\rarbrcrdrerfrgrhrjrirkrlrmrnrorrprsrqrrrtrurvrr{rwrxryrzr|r}r~rrrr)rr)r* InBodyPhasesh G             $ rcs@eZdZfddZddZddZddZd d Zd d Zd S)zgetPhases..TextPhasecsF|||tg|_|j|j_td|jfg|_|j|j_dSNr) rKr rrrr endTagScriptrrrrr)r*rKvs  z%getPhases..TextPhase.__init__cSs|j|ddSrrrr)r)r*r~sz.getPhases..TextPhase.processCharacterscSs8|jdd|jjdji|jj|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr@rvT)rLrr>r~r@rrr`rBr)r)r*rs   z'getPhases..TextPhase.processEOFcSsdstd|ddS)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder@)rrr)r)r*rsz*getPhases..TextPhase.startTagOthercSs*|jj}|jdkst|jj|j_dSr)r>r~rr@rrLrr`r r)r)r*rs z)getPhases..TextPhase.endTagScriptcSs|jj|jj|j_dSr.)r>r~rrLrr`rr)r)r*rs z(getPhases..TextPhase.endTagOtherN) r9r:r;rKrrrrrr)rr)r* TextPhaseus  rcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)(zgetPhases..InTablePhasec s|||td|jfd|jfd|jfd|jfd|jfd|jfd|j fd|j fd |j fd |j fg |_ |j|j _td|jfd |jfg|_|j|j_dS) NrrrrWrrr)rrrr)rrrNr6) rrrWrrrrrrrr)rKr rrstartTagCaptionstartTagColgroup startTagColstartTagRowGroupstartTagImplyTbodyrgstartTagStyleScriptrjr^rrr endTagTable endTagIgnorerrrrr)r*rKs* z(getPhases..InTablePhase.__init__cSs$|jjdjdkr |jjqdS)Nrv)rr)r>r~r@rrBr)r)r*clearStackToTableContextsz8getPhases..InTablePhase.clearStackToTableContextcSs0|jjdjdkr |jdn |jjs,tdS)Nrvrz eof-in-tabler>r~r@rLrrSrrBr)r)r*rsz*getPhases..InTablePhase.processEOFcSs4|jj}|jjd|j_||jj_|jj|dSN inTableText)rLr`rIrrrCrrr)r)r*rs z6getPhases..InTablePhase.processSpaceCharacterscSs4|jj}|jjd|j_||jj_|jj|dSr)rLr`rIrrrr)r)r*rs z1getPhases..InTablePhase.processCharacterscSs&d|j_|jjd|d|j_dS)NTrF)r>insertFromTablerLrIrrr)r)r*rsz*getPhases..InTablePhase.insertTextcSs6||jjt|j||jjd|j_dS)Nr) rr>rrr rrLrIr`rr)r)r*rs z/getPhases..InTablePhase.startTagCaptioncSs(||j||jjd|j_dS)Nrrr>rrLrIr`rr)r)r*rs z0getPhases..InTablePhase.startTagColgroupcSs|tdd|S)Nrrr)rrrr)r)r*rsz+getPhases..InTablePhase.startTagColcSs(||j||jjd|j_dSNrrrr)r)r*rs z0getPhases..InTablePhase.startTagRowGroupcSs|tdd|S)Nrrr)rrrr)r)r*rsz2getPhases..InTablePhase.startTagImplyTbodycSs6|jdddd|jjtd|jjs2|SdS)Nrrr)rLrr`rrrSrr)r)r*rgs z-getPhases..InTablePhase.startTagTablecSs|jjd|Srrrr)r)r*rsz3getPhases..InTablePhase.startTagStyleScriptcSsVd|dkrH|ddtdkrH|jd|j||jjn ||dS)Nr3rwrz unexpected-hidden-input-in-table) rlrrLrr>rr~rrrr)r)r*rjs   z-getPhases..InTablePhase.startTagInputcSsD|jd|jjdkr@|j||jjd|j_|jjdS)Nzunexpected-form-in-tablerv)rLrr>rrr~rrr)r)r*r^s    z,getPhases..InTablePhase.startTagFormcSs<|jdd|did|j_|jjd|d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor@TrF)rLrr>rrIrrr)r)r*rsz-getPhases..InTablePhase.startTagOthercSs|jjdddr|j|jjdjdkrJ|jdd|jjdjd|jjdjdkrj|jjqJ|jj|jn|jj st |jdS)Nrrrvzend-tag-too-early-namedr) r>rrr~r@rLrrrbrSrrr)r)r*r s     z+getPhases..InTablePhase.endTagTablecSs|jdd|didSrrrr)r)r*rsz,getPhases..InTablePhase.endTagIgnorecSs<|jdd|did|j_|jjd|d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor@TrF)rLrr>rrIrrr)r)r*r sz+getPhases..InTablePhase.endTagOtherN)r9r:r;rKrrrrrrrrrrrgrrjr^rrrrr)rr)r* InTablePhases&   rcsPeZdZfddZddZddZddZd d Zd d Zd dZ ddZ dS)z#getPhases..InTableTextPhasecs|||d|_g|_dSr.)rKrcharacterTokensrrr)r*rK(sz,getPhases..InTableTextPhase.__init__cSsdddd|jD}tdd|DrJtd|d}|jjd|n|rZ|j|g|_dS)NrcSsg|] }|dqS)rwr)r?rr)r)r*rD.szGgetPhases..InTableTextPhase.flushCharacters..cSsg|] }|tkqSr)rrr)r)r*rD/srqrr)joinrrrrLrIrr>)rCrwrr)r)r*flushCharacters-s z3getPhases..InTableTextPhase.flushCharacterscSs||j|j_|Sr.rrrLr`rr)r)r*r6s z2getPhases..InTableTextPhase.processCommentcSs||j|j_dSrrrBr)r)r*r;s z.getPhases..InTableTextPhase.processEOFcSs |ddkrdS|j|dSNrwrrrrr)r)r*r@s z5getPhases..InTableTextPhase.processCharacterscSs|j|dSr.rrr)r)r*rEsz:getPhases..InTableTextPhase.processSpaceCharacterscSs||j|j_|Sr.rrr)r)r*rJs z3getPhases..InTableTextPhase.processStartTagcSs||j|j_|Sr.rrr)r)r*rOs z1getPhases..InTableTextPhase.processEndTagN) r9r:r;rKrrrrrrrr)rr)r*InTableTextPhase's  rcs`eZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)z!getPhases..InCaptionPhasecsf|||td|jfd|jfg|_|j|j_td|jfd|j fd|j fg|_ |j |j _dS)Nr rrWrrrrrrrrr) rrWrrrrrrrr) rKr rrstartTagTableElementrrr endTagCaptionrrrrrrr)r*rKVs  z*getPhases..InCaptionPhase.__init__cSs|jjddd S)Nrrrr>rrBr)r)r*ignoreEndTagCaptionhsz5getPhases..InCaptionPhase.ignoreEndTagCaptioncSs|jjddSrrLrIrrBr)r)r*rksz,getPhases..InCaptionPhase.processEOFcSs|jjd|SrrLrIrrr)r)r*rnsz3getPhases..InCaptionPhase.processCharacterscSs0|j|}|jjtd|s,|SdSNrrLrrr`rrrCr ignoreEndTagr)r)r*rqs  z6getPhases..InCaptionPhase.startTagTableElementcSs|jjd|Srrrr)r)r*rysz/getPhases..InCaptionPhase.startTagOthercSs|s|j|jjdjdkrB|jdd|jjdjd|jjdjdkrb|jjqB|jj|j|jj d|j_ n|jj st |jdS)Nrvrrrr) rr>rr~r@rLrrrrIr`rSrrr)r)r*r|s     z/getPhases..InCaptionPhase.endTagCaptioncSs0|j|}|jjtd|s,|SdSrrrr)r)r*rs  z-getPhases..InCaptionPhase.endTagTablecSs|jdd|didSrrrr)r)r*rsz.getPhases..InCaptionPhase.endTagIgnorecSs|jjd|SrrLrIrrr)r)r*rsz-getPhases..InCaptionPhase.endTagOtherN) r9r:r;rKrrrrrrrrrr)rr)r*InCaptionPhaseTs rcsXeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z%getPhases..InColumnGroupPhasecs^|||td|jfd|jfg|_|j|j_td|jfd|j fg|_ |j |j _dS)NrrWr) rKr rrrrrrendTagColgroup endTagColrrrrr)r*rKs z.getPhases..InColumnGroupPhase.__init__cSs|jjdjdkS)Nrvr)r>r~r@rBr)r)r*ignoreEndTagColgroupsz:getPhases..InColumnGroupPhase.ignoreEndTagColgroupcSsD|jjdjdkr"|jjstdS|}|td|s@dSdS)NrvrrT) r>r~r@rLrSrrrr)rCrr)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 |jjst|jn|jj|jjd|j_ dSNr) rrLrSrrr>r~rrIr`rr)r)r*rs    z4getPhases..InColumnGroupPhase.endTagColgroupcSs|jdddidS)Nz no-end-tagr@rWrrr)r)r*rsz/getPhases..InColumnGroupPhase.endTagColcSs"|}|td|s|SdSrrrr)r)r*rsz1getPhases..InColumnGroupPhase.endTagOtherN) r9r:r;rKrrrrrrrrr)rr)r*InColumnGroupPhases   rcsxeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)z#getPhases..InTableBodyPhasecsv|||td|jfd|jfd|jfd|jfg|_|j|j_ td|j fd|j fd|j fg|_ |j|j _ dS)Nrrrr)rrWrrrrrr)rrrWrrrrr)rKr rr startTagTrstartTagTableCellstartTagTableOtherrrrendTagTableRowGrouprrrrrrr)r*rKs$ z,getPhases..InTableBodyPhase.__init__cSsB|jjdjdkr |jjq|jjdjdkr>|jjs>tdS)Nrv)rrrrr)r>r~r@rrLrSrrBr)r)r*clearStackToTableBodyContextsz@getPhases..InTableBodyPhase.clearStackToTableBodyContextcSs|jjddSrrrBr)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>rrLrIr`rr)r)r*rs z.getPhases..InTableBodyPhase.startTagTrcSs*|jdd|di|tdd|S)Nzunexpected-cell-in-table-bodyr@rrr)rLrrrrr)r)r*r s  z5getPhases..InTableBodyPhase.startTagTableCellcSsn|jjddds0|jjddds0|jjdddrT||t|jjdj|S|jjs`t |j dSNrrrrrrv r>rrrrr~r@rLrSrrrr)r)r*rs z6getPhases..InTableBodyPhase.startTagTableOthercSs|jjd|Srrrr)r)r*rsz1getPhases..InTableBodyPhase.startTagOthercSsT|jj|dddr:||jj|jjd|j_n|jdd|didS)Nr@rrr unexpected-end-tag-in-table-body) r>rrr~rrLrIr`rrr)r)r*r"s  z7getPhases..InTableBodyPhase.endTagTableRowGroupcSsn|jjddds0|jjddds0|jjdddrT||t|jjdj|S|jjs`t |j dSrrrr)r)r*r+s z/getPhases..InTableBodyPhase.endTagTablecSs|jdd|didS)Nrr@rrr)r)r*r8s z0getPhases..InTableBodyPhase.endTagIgnorecSs|jjd|Srrrr)r)r*r<sz/getPhases..InTableBodyPhase.endTagOtherN)r9r:r;rKrrrrrrrrrrrrr)rr)r*InTableBodyPhases    rcseZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)zgetPhases..InRowPhasecsv|||td|jfd|jfd|jfg|_|j|j_td|j fd|j fd|j fd|j fg|_ |j|j _dS)Nrr)rrWrrrrrrrr)rrrWrrrr)rKr rrrrrrrendTagTrrrrrrrrr)r*rKAs$ z&getPhases..InRowPhase.__init__cSs@|jjdjdkr<|jdd|jjdji|jjqdS)Nrv)rrz'unexpected-implied-end-tag-in-table-rowr@)r>r~r@rLrrrBr)r)r*clearStackToTableRowContextUs z9getPhases..InRowPhase.clearStackToTableRowContextcSs|jjddd S)NrrrrrBr)r)r*ignoreEndTagTr[sz,getPhases..InRowPhase.ignoreEndTagTrcSs|jjddSrrrBr)r)r*r_sz(getPhases..InRowPhase.processEOFcSs|jjd|Srrrr)r)r*rbsz4getPhases..InRowPhase.processSpaceCharacterscSs|jjd|Srrrr)r)r*resz/getPhases..InRowPhase.processCharacterscSs6||j||jjd|j_|jjtdS)Nr) rr>rrLrIr`rrr rr)r)r*rhs z/getPhases..InRowPhase.startTagTableCellcSs"|}|td|s|SdSNrrrrrr)r)r*rnsz0getPhases..InRowPhase.startTagTableOthercSs|jjd|Srrrr)r)r*rusz+getPhases..InRowPhase.startTagOthercSsH|s.||jj|jjd|j_n|jjs:t |j dSr) rrr>r~rrLrIr`rSrrrr)r)r*rxs   z&getPhases..InRowPhase.endTagTrcSs"|}|td|s|SdSrrrr)r)r*rsz)getPhases..InRowPhase.endTagTablecSs4|jj|dddr&|td|S|jdS)Nr@rrr)r>rrrrLrrr)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.endTagOtherN)r9r:r;rKrrrrrrrrrrrrrr)rr)r* InRowPhase?s  rcs`eZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)zgetPhases..InCellPhasecsf|||td|jfd|jfg|_|j|j_td|jfd|j fd|j fg|_ |j |j _dS)Nrrr)rrrWrrr) rKr rrrrrrendTagTableCellr endTagImplyrrrrr)r*rKs z'getPhases..InCellPhase.__init__cSsB|jjdddr |tdn|jjdddr>|tddSNrrrr)r>rrrrBr)r)r* closeCellsz(getPhases..InCellPhase.closeCellcSs|jjddSrrrBr)r)r*rsz)getPhases..InCellPhase.processEOFcSs|jjd|Srrrr)r)r*rsz0getPhases..InCellPhase.processCharacterscSsF|jjddds |jjdddr,||S|jjs8t|jdSr)r>rrrLrSrrrr)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@rrrvzunexpected-cell-end-tagrr) r>rrr~r@rLrrrrIr`r r)r)r*rs    z.getPhases..InCellPhase.endTagTableCellcSs|jdd|didSrrrr)r)r*rsz+getPhases..InCellPhase.endTagIgnorecSs.|jj|dddr ||S|jdS)Nr@rr)r>rrrLrrr)r)r*rsz*getPhases..InCellPhase.endTagImplycSs|jjd|Srrrr)r)r*rsz*getPhases..InCellPhase.endTagOtherN) r9r:r;rKrrrrrrrrrr)rr)r* InCellPhases  rcsxeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS)z getPhases..InSelectPhasec s|||td|jfd|jfd|jfd|jfd|jfd|jfg|_ |j |j _ td|j fd|j fd|jfg|_|j|j_ dS)NrrUrVr)rNrLrRr)rKr rrstartTagOptionstartTagOptgrouprqrjrrrr endTagOptionendTagOptgroup endTagSelectrrrrr)r*rKs  z)getPhases..InSelectPhase.__init__cSs0|jjdjdkr |jdn |jjs,tdS)Nrvrz eof-in-selectrrBr)r)r*rsz+getPhases..InSelectPhase.processEOFcSs$|ddkrdS|j|ddSrrrr)r)r*r s z2getPhases..InSelectPhase.processCharacterscSs.|jjdjdkr|jj|j|dSrr>r~r@rrrr)r)r*r s z/getPhases..InSelectPhase.startTagOptioncSsL|jjdjdkr|jj|jjdjdkr<|jj|j|dS)NrvrUrVrrr)r)r*r s   z1getPhases..InSelectPhase.startTagOptgroupcSs|jd|tddS)Nzunexpected-select-in-selectr)rLrrrrr)r)r*rq s z/getPhases..InSelectPhase.startTagSelectcSs>|jd|jjdddr.|td|S|jjs:tdS)Nzunexpected-input-in-selectrr)rLrr>rrrrSrrr)r)r*rj 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)NrvrUunexpected-end-tag-in-selectr@r>r~r@rrLrrr)r)r*r% s z-getPhases..InSelectPhase.endTagOptioncSsf|jjdjdkr0|jjdjdkr0|jj|jjdjdkrP|jjn|jdddidS)NrvrUrVrr@rrr)r)r*r, s z/getPhases..InSelectPhase.endTagOptgroupcSsZ|jjdddr@|jj}|jdkr4|jj}q|jn|jjsLt|j dS)Nrr) r>rr~rr@rLrbrSrrr r)r)r*r9 s    z-getPhases..InSelectPhase.endTagSelectcSs|jdd|didS)Nrr@rrr)r)r*rD s z,getPhases..InSelectPhase.endTagOtherN)r9r:r;rKrrrrrqrjrrrrrrr)rr)r* InSelectPhases   rcsHeZdZfddZddZddZddZd d Zd d Zd dZ dS)z'getPhases..InSelectInTablePhasecsN|||td|jfg|_|j|j_td|jfg|_|j |j_dS)N)rrrrrrrr) rKr rrgrrrrrrrrr)r*rKI s z0getPhases..InSelectInTablePhase.__init__cSs|jjddSNrrrBr)r)r*rX sz2getPhases..InSelectInTablePhase.processEOFcSs|jjd|Srrrr)r)r*r[ sz9getPhases..InSelectInTablePhase.processCharacterscSs(|jdd|di|td|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler@r)rLrrrrr)r)r*rg^ sz5getPhases..InSelectInTablePhase.startTagTablecSs|jjd|Srrrr)r)r*rc sz5getPhases..InSelectInTablePhase.startTagOthercSs@|jdd|di|jj|dddr<|td|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler@rrr)rLrr>rrrrr)r)r*rf sz3getPhases..InSelectInTablePhase.endTagTablecSs|jjd|Srrrr)r)r*rl sz3getPhases..InSelectInTablePhase.endTagOtherN) r9r:r;rKrrrgrrrr)rr)r*InSelectInTablePhaseH s rc-seZdZeddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,Zfd-d.Zd/d0Zfd1d2Zd3d4Zd5d6Z d7S)8z(getPhases..InForeignContentPhaser;r<r"rrr#r=r8r+r&r9r>rJZh1Zh2Zh3Zh4Zh5Zh6rrOr@rKr7r5r.r5rGr0r(r4rrArBspanrDrCsubZsuprrErFr3varcs|||dSr.)rKrrr)r*rKy sz1getPhases..InForeignContentPhase.__init__c%Ssnddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%$}|d&|krj||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))rCr replacementsr)r)r*adjustSVGTagNames| sN% z:getPhases..InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n&|jjr.InForeignContentPhase.processCharacters..F)rLrcrrrrr)r*r s  z:getPhases..InForeignContentPhase.processCharacterscSs.|jjd}|d|jksD|ddkrt|dtdddg@r|jdd|di|jjdj|jjkr|j |jjds|j |jjds|jj qZ|S|jt d kr|j |n$|jt d kr|||j||j||j|d <|j||d r*|jj d |d<dS)Nrvr@r?rwZcolorZfacesizez*unexpected-html-element-in-foreign-contentrhryrjr{Tr|)r>r~breakoutElementssetkeysrLrrjrrorprrrr rrr)rCrrr)r)r*r s:           z8getPhases..InForeignContentPhase.processStartTagcSst|jjd}|jjd}|jt|dkrF|jdd|di|jt|dkr|jj|jj dkr|jj |jjj |j_|jj |kr|jjst qd}q|d8}|jj|}|j|jjkrqFqF|jj|}qqF|S)Nrrvr@rr)rr>r~r@rlrrLrr`rIrrrrrjrr)rCrZ nodeIndexrrr)r)r*r s&   z6getPhases..InForeignContentPhase.processEndTagN) r9r:r;rr rKr rrrr)rr)r*InForeignContentPhaseo s\  ) rcsPeZdZfddZddZddZddZd d Zd d Zd dZ ddZ dS)z!getPhases..AfterBodyPhasecsN|||td|jfg|_|j|j_td|jfg|_|j |j_dSNr) rKr rrrrrrxrrrrr)r*rK s z*getPhases..AfterBodyPhase.__init__cSsdSr.r)rBr)r)r*r sz,getPhases..AfterBodyPhase.processEOFcSs|j||jjddS)Nrrrr)r)r*r sz0getPhases..AfterBodyPhase.processCommentcSs |jd|jjd|j_|S)Nzunexpected-char-after-bodyrrLrrIr`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)rLrSrrIr`)rCr@r)r)r*rx sz,getPhases..AfterBodyPhase.endTagHtmlcSs*|jdd|di|jjd|j_|S)Nzunexpected-end-tag-after-bodyr@rrrr)r)r*r s  z-getPhases..AfterBodyPhase.endTagOtherN) r9r:r;rKrrrrrrxrr)rr)r*AfterBodyPhase s rcsXeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z"getPhases..InFramesetPhasecsf|||td|jfd|jfd|jfd|jfg|_|j|j_ td|j fg|_ |j |j _ dS)NrrrXr) rKr rrr startTagFramestartTagNoframesrrrendTagFramesetrrrrr)r*rK s z+getPhases..InFramesetPhase.__init__cSs0|jjdjdkr |jdn |jjs,tdS)Nrvrzeof-in-framesetrrBr)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*r/ s z0getPhases..InFramesetPhase.startTagFramecSs|jjd|Srrrr)r)r*r3 sz3getPhases..InFramesetPhase.startTagNoframescSs|jdd|didS)Nz unexpected-start-tag-in-framesetr@rrr)r)r*r6 s z0getPhases..InFramesetPhase.startTagOthercSsZ|jjdjdkr |jdn |jj|jjsV|jjdjdkrV|jjd|j_dS)Nrvrz)unexpected-frameset-in-frameset-innerhtmlr afterFrameset) r>r~r@rLrrrSrIr`rr)r)r*r: s z1getPhases..InFramesetPhase.endTagFramesetcSs|jdd|didS)Nzunexpected-end-tag-in-framesetr@rrr)r)r*rF s z.getPhases..InFramesetPhase.endTagOtherN) r9r:r;rKrrrrrrrrr)rr)r*InFramesetPhase s  rcsHeZdZfddZddZddZddZd d Zd d Zd dZ dS)z%getPhases..AfterFramesetPhasecsV|||td|jfd|jfg|_|j|j_td|jfg|_ |j |j _dSNrr) rKr rrrrrrrxrrrrr)r*rKL s z.getPhases..AfterFramesetPhase.__init__cSsdSr.r)rBr)r)r*rZ sz0getPhases..AfterFramesetPhase.processEOFcSs|jddS)Nzunexpected-char-after-framesetrrr)r)r*r^ sz7getPhases..AfterFramesetPhase.processCharacterscSs|jjd|Srrrr)r)r*ra sz6getPhases..AfterFramesetPhase.startTagNoframescSs|jdd|didS)Nz#unexpected-start-tag-after-framesetr@rrr)r)r*rd s z3getPhases..AfterFramesetPhase.startTagOthercSs|jjd|j_dS)NafterAfterFrameset)rLrIr`rr)r)r*rxh sz0getPhases..AfterFramesetPhase.endTagHtmlcSs|jdd|didS)Nz!unexpected-end-tag-after-framesetr@rrr)r)r*rk s z1getPhases..AfterFramesetPhase.endTagOtherN) r9r:r;rKrrrrrxrr)rr)r*AfterFramesetPhaseJ s rcsPeZdZfddZddZddZddZd d Zd d Zd dZ ddZ dS)z&getPhases..AfterAfterBodyPhasecs0|||td|jfg|_|j|j_dSr)rKr rrrrrrrr)r*rKp s z/getPhases..AfterAfterBodyPhase.__init__cSsdSr.r)rBr)r)r*rx sz1getPhases..AfterAfterBodyPhase.processEOFcSs|j||jjdSr.rrr)r)r*r{ 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.processEndTagN) r9r:r;rKrrrrrrrr)rr)r*AfterAfterBodyPhaseo s rcsXeZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z*getPhases..AfterAfterFramesetPhasecs8|||td|jfd|jfg|_|j|j_dSr)rKr rrstartTagNoFramesrrrrrr)r*rK s z3getPhases..AfterAfterFramesetPhase.__init__cSsdSr.r)rBr)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*r  sz;getPhases..AfterAfterFramesetPhase.startTagNoFramescSs|jdd|didS)Nrr@rrr)r)r*r s z8getPhases..AfterAfterFramesetPhase.startTagOthercSs|jdd|didS)Nrr@rrr)r)r*r s z8getPhases..AfterAfterFramesetPhase.processEndTagN) r9r:r;rKrrrrrr rrr)rr)r*AfterAfterFramesetPhase s r!)rWrVrrr r rrrrrrrrrrrrzrrrrr)r)rJrYrrrrrrrrrrrrrrrrrrrrrrrr!r)rr*rHsr)#.g@CX!-GBbYLd's/9%&&rHcs>t|dt@}|r:tfdd|dD|d<dS)Nrwc3s"|]\}}|||fVqdSr.)r)r?kvr r)r*r sz$adjust_attributes..)rrr/)rr Zneeds_adjustmentr)r$r*r s   rrsFcCs|dkr i}t||||dS)N)r3r@rwr{)r)r@r3rkr{r)r)r*r s  rc@seZdZdZdS)ruzError in parsed documentN)r9r:r;rr)r)r)r*ru sru)rT)r+rT)rsNF).Z __future__rrrZpip._vendor.sixrrr1 collectionsrrr r r Ztreebuilders.baser r Z constantsrrrrrrrrrrrrrrrrrr#r-r=rIr"ZmemoizerHrr Exceptionrur)r)r)r*sP      H   G K