
    Xh                    (   d dl mZmZmZ d dlmZ d dlZddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddZ ddZ!d Z" G d de#      Z$ejJ                  d        Z&d Z'	 	 ddZ( G d de)      Z*y)    )absolute_importdivisionunicode_literals)viewkeysN   )_inputstream)
_tokenizer)treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElementscdataElementsrcdataElements
tokenTypestagTokenTypes
namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesE_ReparseExceptionc                 l    t        j                  |      }t        ||      } |j                  | fi |S )a  Parse 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('<html><body><p>This is a doc</p></body></html>')
    <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

    namespaceHTMLElements)r
   getTreeBuilder
HTMLParserparse)doctreebuilderr   kwargstbps         W/var/www/html/myenv/lib/python3.12/site-packages/bleach/_vendor/html5lib/html5parser.pyr"   r"      s7    $ 
	$	$[	1B2-BCA1773!&!!    c                 p    t        j                  |      }t        ||      } |j                  | fd|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('<b>this is a fragment</b>')
    <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

    r   	container)r
   r    r!   parseFragment)r#   r+   r$   r   r%   r&   r'   s          r(   r,   r,   1   s<    ( 
	$	$[	1B2-BCA1??3>)>v>>r)   c                 *      G  fddt               }|S )Nc                       e Zd Z fdZy)-method_decorator_metaclass.<locals>.Decoratedc                     |j                         D ],  \  }}t        |t        j                        r |      }|||<   . t        j                  | |||      S N)items
isinstancetypesFunctionTypetype__new__)meta	classnamebases	classDictattributeName	attributefunctions         r(   r7   z5method_decorator_metaclass.<locals>.Decorated.__new__L   sY    ,5OO,= 5(yi););< ( 3I+4	-(	5
 <<i	BBr)   N)__name__
__module____qualname__r7   )r>   s   r(   	Decoratedr/   K   s	    	Cr)   rB   )r6   )r>   rB   s   ` r(   method_decorator_metaclassrC   J   s    CD C r)   c                       e Zd ZdZddZddZd Zed        Zd Z	d Z
d	 Zd
 Zd ZddZd Zd Zd Zd Zd Zd Zy)r!   z]HTML parser

    Generates a tree structure from a stream of (possibly malformed) HTML.

    Nc           	          || _         |t        j                  d      } ||      | _        g | _        t        |      j                         D ci c]  \  }}| || | j                         c}}| _        yc c}}w )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

        Netree)strictr
   r    treeerrors	getPhasesr2   phases)selfrH   rG   r   debugnameclss          r(   __init__zHTMLParser.__init__]   ss    * <..w7D./	 !'--/1idCtStyy11 1 1s   A7c                    || _         || _        || _        t        j                  |fd| i|| _        | j                          	 | j                          y # t        $ r# | j                          | j                          Y y w xY w)Nparser)	innerHTMLModer+   	scriptingr	   HTMLTokenizer	tokenizerresetmainLoopr   )rL   stream	innerHTMLr+   rT   r%   s         r(   _parsezHTMLParser._parse|   sl    &""#11&PPP

	MMO  	JJLMMO	s   A )B Bc                    | j                   j                          d| _        g | _        g | _        d| _        | j                  r| j                  j                         | _	        | j                  t        v r&| j                  j                  | j                  _        nn| j                  t        v r&| j                  j                  | j                  _        n6| j                  dk(  r&| j                  j                   | j                  _        n	 | j"                  d   | _        | j$                  j'                          | j)                          nd| _	        | j"                  d   | _        d | _        d | _        d| _        y )NFz	no quirks	plaintext
beforeHtmlinitialT)rH   rW   firstStartTagrI   log
compatModerS   r+   lowerrZ   r   rV   rcdataStatestater   rawtextStateplaintextStaterK   phaseinsertHtmlElementresetInsertionMode	lastPhasebeforeRCDataPhase
framesetOKrL   s    r(   rW   zHTMLParser.reset   s   		"%!^^113DN~~.'+~~'A'A$>1'+~~'B'B$;.'+~~'D'D$ \2DJJJ((*##%"DNY/DJ!%r)   c                 v    t        | d      sy| j                  j                  j                  d   j                  S )zName of the character encoding that was used to decode the input stream, or
        :obj:`None` if that is not determined yet

        rV   Nr   )hasattrrV   rY   charEncodingrN   rn   s    r(   documentEncodingzHTMLParser.documentEncoding   s2     t[)~~$$11!4999r)   c                     |j                   dk(  rJ|j                  t        d   k(  r4d|j                  v xr$ |j                  d   j	                  t
              dv S |j                  |j                   ft        v S )Nannotation-xmlmathmlencoding)z	text/htmlzapplication/xhtml+xml)rN   	namespacer   
attributes	translater   r   rL   elements     r(   isHTMLIntegrationPointz!HTMLParser.isHTMLIntegrationPoint   s{    LL,,!!Z%99'"4"44 ;&&z2<<(*:;<
 %%w||48TTTr)   c                 >    |j                   |j                  ft        v S r1   )rw   rN   r   rz   s     r(   isMathMLTextIntegrationPointz'HTMLParser.isMathMLTextIntegrationPoint   s    !!7<<04VVVr)   c                 L   t         d   }t         d   }t         d   }t         d   }t         d   }t         d   }t         d   }| j                  D ]  }d }	|}
|
|
}	| j                  j                  r| j                  j                  d   nd }|r|j                  nd }|r|j
                  nd }|
d	   }||k(  r)| j                  |
d
   |
j                  di              d }
nDt        | j                  j                        dk(  s}|| j                  j                  k(  sd| j                  |      r||k(  r|d   t        ddg      vs<|||fv s6|t        d   k(  r|dk(  r||k(  r|d   dk(  s| j                  |      r||||fv r| j                  }n| j                  d   }||k(  r|j!                  |
      }
nr||k(  r|j#                  |
      }
n[||k(  r|j%                  |
      }
nD||k(  r|j'                  |
      }
n-||k(  r|j)                  |
      }
n||k(  r|j+                  |
      }
|
|k(  s|	d   s|	d   r| j                  dd|	d   i        d}g }|rK|j-                  | j                         | j                  j/                         }|r| j                  |vsJ |rJy y )N
CharactersSpaceCharactersStartTagEndTagCommentDoctype
ParseErrorr6   datadatavarsr   rN   mglyph
malignmarkru   rt   svginForeignContentselfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r   rV   rH   openElementsrw   rN   
parseErrorgetlendefaultNamespacer~   	frozensetr   r|   rh   rK   processCharactersprocessSpaceCharactersprocessStartTagprocessEndTagprocessCommentprocessDoctypeappend
processEOF)rL   CharactersTokenSpaceCharactersTokenStartTagTokenEndTagTokenCommentTokenDoctypeTokenParseErrorTokentoken
prev_token	new_tokencurrentNodecurrentNodeNamespacecurrentNodeNamer6   rh   	reprocessrK   s                     r(   rX   zHTMLParser.mainLoop   s   $\2)*;<":. *!),!),$\2^^ /	>EJI'&
<@II<R<Rdii44R8X\@K{'<'<QU$6A+"2"2t (?*OOIf$5y}}ZQS7TU $IDII223q8,		0J0JJ::;G=0 =	8\:R0SS?4H"II-H1EE(,<<.v%/44[A-BV!WW $

 $,> ?.$)$;$;I$F	!55$)$@$@$K	.$)$9$9)$D	,$)$7$7	$B	-$)$8$8$C	-$)$8$8$C	O 'R %*]*C"#<= H!'F); <>]/	>d 	MM$**%

--/Izz///	 r)   c                 f     | j                   |ddg|i | | j                  j                         S )a  Parse 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('<html><body><p>This is a doc</p></body></html>')
        <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

        FN)r[   rH   getDocumentrL   rY   argsr%   s       r(   r"   zHTMLParser.parse  s3    , 	FE49$9&9yy$$&&r)   c                 d     | j                   |dg|i | | j                  j                         S )aZ  Parse 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('<b>this is a fragment</b>')
        <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

        T)r[   rH   getFragmentr   s       r(   r,   zHTMLParser.parseFragment  s1    2 	FD24262yy$$&&r)   c                     |i }| j                   j                  | j                  j                  j	                         ||f       | j
                  rt        t        |   |z        y r1   )rI   r   rV   rY   positionrG   r   r   )rL   	errorcoder   s      r(   r   zHTMLParser.parseError;  sY    HDNN11::<iRS;;Qy\H455 r)   c                 $    t        |t               y r1   )adjust_attributesr   rL   r   s     r(   r   z!HTMLParser.adjustMathMLAttributesC  s    %!78r)   c                 $    t        |t               y r1   )r   r   r   s     r(   r   zHTMLParser.adjustSVGAttributesF  s    %!45r)   c                 $    t        |t               y r1   )r   adjustForeignAttributesMapr   s     r(   r   z"HTMLParser.adjustForeignAttributesI  s    %!;<r)   c                 8    | j                   j                          y r1   )rR   rh   r   s     r(   reparseTokenNormalzHTMLParser.reparseTokenNormalL  s    r)   c                    d}ddddddddddd	d	d
dd}| j                   j                  d d d   D ]  }|j                  }d }|| j                   j                  d   k(  r| j                  sJ d}| j                  }|dv r| j                  sJ |s$|j                  | j                   j
                  k7  r||v r| j                  ||      } || _        y |s| j                  d	   } || _        y  | _        y )NFinSelectinCellinRowinTableBody	inCaptioninColumnGroupinTableinBody
inFrameset
beforeHead)selecttdthtrtbodytheadtfootcaptioncolgrouptableheadbodyframesethtmlr   r   T)r   r   r   r   )rH   r   rN   rZ   rw   r   rK   rh   )rL   lastnewModesnodenodeName	new_phases         r(   rj   zHTMLParser.resetInsertionModeP  s     """"'$ 
  II**4R40 	DyyHItyy--a00~~%~>> AA~~%~DNNdii.H.HH8# KK(:;	
 
	  KK1	
-	, 
r)   c                 0   |dv sJ | j                   j                  |       |dk(  r&| j                  j                  | j                  _        n%| j                  j
                  | j                  _        | j                  | _        | j                  d   | _        y )N)RAWTEXTRCDATAr   text)	rH   insertElementrV   rf   re   rd   rh   originalPhaserK   )rL   r   contentTypes      r(   parseRCDataRawtextzHTMLParser.parseRCDataRawtext|  ss    3333		&)##'>>#>#>DNN #'>>#=#=DNN !ZZ[[(
r)   )NFTF)FdivF)zXXX-undefined-errorN)r?   r@   rA   __doc__rP   r[   rW   propertyrr   r|   r~   rX   r"   r,   r   r   r   r   r   rj   r    r)   r(   r!   r!   V   sl    1> D : :UWA0F'2'8696=*X)r)   r!   c                    d }d } G d d || |             G d d      } G d d	      } G d
 d      } G d d      } G d d      } G d d      } G fdd       G d d      }	 G fdd      }
 G fdd       G fdd      } G fdd      } G fdd      } G fd d!      } G fd"d#      } G fd$d%      } G d& d'      } G fd(d)      } G d* d+      } G fd,d-      } G fd.d/      } G d0 d1      } G d2 d3      }i d4|d5|d6|d7|d8|d9|d:d;|	d<|
d=d>|d?|d@|dA|dB|dC|dD|||||||dES )FNc                 r     t        j                         D ci c]  \  }}||
 c}} fd}|S c c}}w )z4Logger that records which phase processes each tokenc                    j                   j                  d      rt        |      dkD  r|d   }d|d      i}|d   t        v r|d   |d<   | j                  j
                  j                  | j                  j                  j                  j                   | j                  j                  j                  j                   | j                  j                   j                   |f        | g|i |S  | g|i |S )Nprocessr   r6   rN   )r?   
startswithr   r   rR   ra   r   rV   re   rh   	__class__)rL   r   r%   r   infor>   
type_namess        r(   wrappedz'getPhases.<locals>.log.<locals>.wrapped  s      ++I63t9q=Q
5= 9:=M1#(=DL&&(=(=(C(C(L(L(,(9(9(C(C(L(L(,(?(?(0(9(9(,	(. /
  6t6v666t6v66r)   )r   r2   )r>   keyvaluer   r   s   `   @r(   ra   zgetPhases.<locals>.log  s6    3=3C3C3EFZS%eSjF
	7 # Gs   3c                 (    | rt        |      S t        S r1   )rC   r6   )use_metaclassmetaclass_funcs     r(   getMetaclasszgetPhases.<locals>.getMetaclass  s    -n==Kr)   c                   J    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)getPhases.<locals>.PhasezNBase class for helper object that implements each phase of processing
        )rR   rH   __startTagCache__endTagCachec                 <    || _         || _        i | _        i | _        y r1   )rR   rH   _Phase__startTagCache_Phase__endTagCache)rL   rR   rH   s      r(   rP   z!getPhases.<locals>.Phase.__init__  s      DKDI#%D !#Dr)   c                     t         r1   )NotImplementedErrorrn   s    r(   r   z#getPhases.<locals>.Phase.processEOF  s    %%r)   c                 j    | j                   j                  || j                   j                  d          y )Nr   rH   insertCommentr   r   s     r(   r   z'getPhases.<locals>.Phase.processComment  s'     II##E499+A+A"+EFr)   c                 :    | j                   j                  d       y )Nzunexpected-doctyperR   r   r   s     r(   r   z'getPhases.<locals>.Phase.processDoctype  s    KK""#78r)   c                 @    | j                   j                  |d          y Nr   rH   
insertTextr   s     r(   r   z*getPhases.<locals>.Phase.processCharacters      II  v/r)   c                 @    | j                   j                  |d          y r  r  r   s     r(   r   z/getPhases.<locals>.Phase.processSpaceCharacters  r  r)   c                    |d   }|| j                   v r| j                   |   }n| j                  |   x}| j                   |<   t        | j                         t        | j                        dz  kD  rf| j                   j                  t	        t        | j                                      t        | j                         t        | j                        dz  kD  rf ||      S NrN   g?)r   startTagHandlerr   popnextiterrL   r   rN   funcs       r(   r   z(getPhases.<locals>.Phase.processStartTag  s     =D t+++++D1484H4H4NNt++D1$../#d6J6J2Kc2QQ((,,T$t7K7K2L-MN $../#d6J6J2Kc2QQ ;r)   c                 f   | j                   j                  s#|d   dk(  r| j                   j                  d       |d   j                         D ]Q  \  }}|| j                  j
                  d   j                  vs,|| j                  j
                  d   j                  |<   S d| j                   _        y )NrN   r   znon-html-rootr   r   F)rR   r`   r   r2   rH   r   rx   rL   r   attrr   s       r(   startTagHtmlz%getPhases.<locals>.Phase.startTagHtml  s    ;;,,v&1H&&7  %V}224 Getyy55a8CCCAFDII**1-88>G ).DKK%r)   c                    |d   }|| j                   v r| j                   |   }n| j                  |   x}| j                   |<   t        | j                         t        | j                        dz  kD  rf| j                   j                  t	        t        | j                                      t        | j                         t        | j                        dz  kD  rf ||      S r  )r   endTagHandlerr   r  r  r  r  s       r(   r   z&getPhases.<locals>.Phase.processEndTag  s     =D t)))))$/262D2DT2JJt))$/$,,-D4F4F0G#0MM&&**4T5G5G0H+IJ $,,-D4F4F0G#0MM ;r)   N)r?   r@   rA   r   	__slots__rP   r   r   r   r   r   r   r  r   r   r)   r(   Phaser     s:    	J		$	&	G
	9	0	0	"	.	r)   r  )	metaclassc                   J    e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zy	)
getPhases.<locals>.InitialPhasec                      y r1   r   r   s     r(   r   z6getPhases.<locals>.InitialPhase.processSpaceCharacters      r)   c                 d    | j                   j                  || j                   j                         y r1   rH   r  documentr   s     r(   r   z.getPhases.<locals>.InitialPhase.processComment       II##E499+=+=>r)   c                 \   |d   }|d   }|d   }|d   }|dk7  s	|| |dk7  r| j                   j                  d       |d}| j                  j                  |       |dk7  r|j	                  t
              }|rE|d   dk7  s=|j                  d	      s,|d
v s(|j                  d      r||r%|j                         dk(  rd| j                   _        n5|j                  d      s|j                  d      r|d| j                   _        | j                   j                  d   | j                   _
        y )NrN   publicIdsystemIdcorrectr   zabout:legacy-compatzunknown-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.dtdquirks)z -//w3c//dtd xhtml 1.0 frameset//z$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksr^   )rR   r   rH   insertDoctypery   r   r   rc   rb   rK   rh   )rL   r   rN   r$  r%  r&  s         r(   r   z.getPhases.<locals>.InitialPhase.processDoctype  sQ   =DZ(HZ(HI&G("6(X9N-N&&'89II##E*2~#--.>?uV}6''6<7=p  !) ) ''AB $!15q!q)1&%%=> %%?@ &)9& $ 2 2< @DKKr)   c                 v    d| j                   _        | j                   j                  d   | j                   _        y )Nr(  r^   )rR   rb   rK   rh   rn   s    r(   anythingElsez,getPhases.<locals>.InitialPhase.anythingElseZ  s)    %-DKK" $ 2 2< @DKKr)   c                 \    | j                   j                  d       | j                          |S )Nzexpected-doctype-but-got-charsrR   r   r+  r   s     r(   r   z1getPhases.<locals>.InitialPhase.processCharacters^  s&    KK""#CDLr)   c                 h    | j                   j                  dd|d   i       | j                          |S )Nz"expected-doctype-but-got-start-tagrN   r-  r   s     r(   r   z/getPhases.<locals>.InitialPhase.processStartTagc  s4    KK""#G$*E&M#:<Lr)   c                 h    | j                   j                  dd|d   i       | j                          |S )Nz expected-doctype-but-got-end-tagrN   r-  r   s     r(   r   z-getPhases.<locals>.InitialPhase.processEndTagi  s4    KK""#E$*E&M#:<Lr)   c                 Z    | j                   j                  d       | j                          y)Nzexpected-doctype-but-got-eofTr-  rn   s    r(   r   z*getPhases.<locals>.InitialPhase.processEOFo  s$    KK""#ABr)   N)r?   r@   rA   tupler  r   r   r   r+  r   r   r   r   r   r)   r(   InitialPhaser    s5    G			?]	A~	A	
			r)   r2  c                   D    e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zy)	"getPhases.<locals>.BeforeHtmlPhasec                     | j                   j                  t        dd             | j                  j                  d   | j                  _        y )Nr   r   r   )rH   
insertRootimpliedTagTokenrR   rK   rh   rn   s    r(   ri   z4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementx  s6    II  !DE $ 2 2< @DKKr)   c                 $    | j                          yNTri   rn   s    r(   r   z-getPhases.<locals>.BeforeHtmlPhase.processEOF}  s    ""$r)   c                 d    | j                   j                  || j                   j                         y r1   r   r   s     r(   r   z1getPhases.<locals>.BeforeHtmlPhase.processComment  r"  r)   c                      y r1   r   r   s     r(   r   z9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharacters  r  r)   c                 &    | j                          |S r1   r:  r   s     r(   r   z4getPhases.<locals>.BeforeHtmlPhase.processCharacters  s    ""$Lr)   c                 X    |d   dk(  rd| j                   _        | j                          |S )NrN   r   T)rR   r`   ri   r   s     r(   r   z2getPhases.<locals>.BeforeHtmlPhase.processStartTag  s+    V}&,0)""$Lr)   c                 x    |d   dvr"| j                   j                  dd|d   i       y | j                          |S )NrN   r   r   r   brzunexpected-end-tag-before-html)rR   r   ri   r   s     r(   r   z0getPhases.<locals>.BeforeHtmlPhase.processEndTag  sD    V}$BB&&'G(.f'>@ &&(r)   N)r?   r@   rA   r1  r  ri   r   r   r   r   r   r   r   r)   r(   BeforeHtmlPhaser4  t  s-    G		A
		?				r)   rB  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Z ej                  d	efd
e	fg      Ze
e_         ej                  defg      Zee_        y)"getPhases.<locals>.BeforeHeadPhasec                 :    | j                  t        dd             y)Nr   r   TstartTagHeadr7  rn   s    r(   r   z-getPhases.<locals>.BeforeHeadPhase.processEOF  s    ofjABr)   c                      y r1   r   r   s     r(   r   z9getPhases.<locals>.BeforeHeadPhase.processSpaceCharacters  r  r)   c                 <    | j                  t        dd             |S Nr   r   rF  r   s     r(   r   z4getPhases.<locals>.BeforeHeadPhase.processCharacters      ofjABLr)   c                 R    | j                   j                  d   j                  |      S Nr   rR   rK   r   r   s     r(   r  z/getPhases.<locals>.BeforeHeadPhase.startTagHtml  "    ;;%%h/??FFr)   c                     | j                   j                  |       | j                   j                  d   | j                   _        | j                  j
                  d   | j                  _        y )Nr   inHead)rH   r   r   headPointerrR   rK   rh   r   s     r(   rG  z/getPhases.<locals>.BeforeHeadPhase.startTagHead  sJ    II##E*$(II$:$:2$>DII! $ 2 28 <DKKr)   c                 <    | j                  t        dd             |S rJ  rF  r   s     r(   startTagOtherz0getPhases.<locals>.BeforeHeadPhase.startTagOther  rK  r)   c                 <    | j                  t        dd             |S rJ  rF  r   s     r(   endTagImplyHeadz2getPhases.<locals>.BeforeHeadPhase.endTagImplyHead  rK  r)   c                 F    | j                   j                  dd|d   i       y )Nzend-tag-after-implied-rootrN   r  r   s     r(   endTagOtherz.getPhases.<locals>.BeforeHeadPhase.endTagOther  s#    KK""#?$*E&M#:<r)   r   r   r@  N)r?   r@   rA   r1  r  r   r   r   r  rG  rT  rV  rX  r   MethodDispatcherr  defaultr  r   r)   r(   BeforeHeadPhaserD    s    G					G	=
			< 2&11\"\"3
  #0///+_=1
  !,r)   r[  c                      e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Z ej*                  defdefdefdefdefde	fde
fdefg      Zee_         ej*                  defdefg      Zee_        y)getPhases.<locals>.InHeadPhasec                 $    | j                          yr9  r+  rn   s    r(   r   z)getPhases.<locals>.InHeadPhase.processEOF      r)   c                 &    | j                          |S r1   r_  r   s     r(   r   z0getPhases.<locals>.InHeadPhase.processCharacters      Lr)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   r  z+getPhases.<locals>.InHeadPhase.startTagHtml  rO  r)   c                 :    | j                   j                  d       y )Nz!two-heads-are-not-better-than-oner  r   s     r(   rG  z+getPhases.<locals>.InHeadPhase.startTagHead  s    KK""#FGr)   c                     | j                   j                  |       | j                   j                  j                          d|d<   y NTr   rH   r   r   r  r   s     r(   startTagBaseLinkCommandz6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommand  5    II##E*II""&&(/3E+,r)   c                    | j                   j                  |       | j                   j                  j                          d|d<   |d   }| j                  j
                  j                  j                  d   dk(  rd|v r3| j                  j
                  j                  j                  |d          y d|v rd|v r|d   j                         d	k(  r|t        j                  |d   j                  d
            }t        j                  |      }|j                         }| j                  j
                  j                  j                  |       y y y y y )NTr   r   r   	tentativecharsetcontentz
http-equivzcontent-typezutf-8)rH   r   r   r  rR   rV   rY   rq   changeEncodingrc   r   EncodingBytesencodeContentAttrParserr"   )rL   r   rx   r   rR   codecs         r(   startTagMetaz+getPhases.<locals>.InHeadPhase.startTagMeta  s$   II##E*II""&&(/3E+,vJ{{$$++88;{J
*KK))00??
9@UV:-"j0 .446.H
 (55j6K6R6RSZ6[\D);;DAF"LLNEKK))00??F I 1 . Kr)   c                 <    | j                   j                  |d       y )Nr   rR   r   r   s     r(   startTagTitlez,getPhases.<locals>.InHeadPhase.startTagTitle  s    KK**5(;r)   c                 <    | j                   j                  |d       y )Nr   ru  r   s     r(   startTagNoFramesStylez4getPhases.<locals>.InHeadPhase.startTagNoFramesStyle      KK**5)<r)   c                     | j                   j                  r| j                   j                  |d       y | j                  j	                  |       | j                   j
                  d   | j                   _        y )Nr   inHeadNoscript)rR   rT   r   rH   r   rK   rh   r   s     r(   startTagNoscriptz/getPhases.<locals>.InHeadPhase.startTagNoscript  sQ    {{$$..ui@		''.$(KK$6$67G$H!r)   c                 F   | j                   j                  |       | j                  j                  j                  | j                  j                  _        | j                  j                  | j                  _        | j                  j                  d   | j                  _        y )Nr   )	rH   r   rR   rV   scriptDataStatere   rh   r   rK   r   s     r(   startTagScriptz-getPhases.<locals>.InHeadPhase.startTagScript   sg    II##E**.++*?*?*O*ODKK!!'(,(9(9DKK% $ 2 26 :DKKr)   c                 &    | j                          |S r1   r_  r   s     r(   rT  z,getPhases.<locals>.InHeadPhase.startTagOther  rb  r)   c                     | j                   j                  j                  j                         }|j                  dk(  sJ d|j                  z         | j                   j
                  d   | j                   _        y )Nr   zExpected head got %s	afterHeadrR   rH   r   r  rN   rK   rh   rL   r   r   s      r(   
endTagHeadz)getPhases.<locals>.InHeadPhase.endTagHead
  s\    ;;##00446D99&J(>(JJ& $ 2 2; ?DKKr)   c                 &    | j                          |S r1   r_  r   s     r(   endTagHtmlBodyBrz/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBr  rb  r)   c                 F    | j                   j                  dd|d   i       y Nunexpected-end-tagrN   r  r   s     r(   rX  z*getPhases.<locals>.InHeadPhase.endTagOther       KK""#7&%-9PQr)   c                 8    | j                  t        d             y )Nr   )r  r7  rn   s    r(   r+  z+getPhases.<locals>.InHeadPhase.anythingElse  s    OOOF34r)   r   title)noframesstylenoscriptscript)basebasefontbgsoundcommandlinkr8   r   )rA  r   r   N)r?   r@   rA   r1  r  r   r   r  rG  rh  rs  rv  rx  r|  r  rT  r  r  rX  r+  r   rY  r  rZ  r  r   r)   r(   InHeadPhaser]    s    G				G	H	4
	G*	<	=	I	;		@
		R	5 2&11\"m$"$9:)*~&?$&\"\"
3
 
 #0///Z #%561
  !,r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Z ej$                  de	fde
fdefg      Zee_         ej$                  defdefg      Zee_        y)&getPhases.<locals>.InHeadNoscriptPhasec                 Z    | j                   j                  d       | j                          y)Nzeof-in-head-noscriptTr-  rn   s    r(   r   z1getPhases.<locals>.InHeadNoscriptPhase.processEOF/  s$    KK""#9:r)   c                 R    | j                   j                  d   j                  |      S NrQ  )rR   rK   r   r   s     r(   r   z5getPhases.<locals>.InHeadNoscriptPhase.processComment4  s"    ;;%%h/>>uEEr)   c                 \    | j                   j                  d       | j                          |S )Nzchar-in-head-noscriptr-  r   s     r(   r   z8getPhases.<locals>.InHeadNoscriptPhase.processCharacters7  s&    KK""#:;Lr)   c                 R    | j                   j                  d   j                  |      S r  rR   rK   r   r   s     r(   r   z=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharacters<  "    ;;%%h/FFuMMr)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   r  z3getPhases.<locals>.InHeadNoscriptPhase.startTagHtml?  rO  r)   c                 R    | j                   j                  d   j                  |      S r  rN  r   s     r(   rh  z>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandB  rO  r)   c                 F    | j                   j                  dd|d   i       y Nunexpected-start-tagrN   r  r   s     r(   startTagHeadNoscriptz;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptE       KK""#9FE&M;RSr)   c                 h    | j                   j                  dd|d   i       | j                          |S Nzunexpected-inhead-noscript-tagrN   r-  r   s     r(   rT  z4getPhases.<locals>.InHeadNoscriptPhase.startTagOtherH  2    KK""#CfeTZmE\]Lr)   c                     | j                   j                  j                  j                         }|j                  dk(  sJ d|j                  z         | j                   j
                  d   | j                   _        y )Nr  zExpected noscript got %srQ  r  r  s      r(   endTagNoscriptz5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptM  s\    ;;##00446D99
*R,F,RR* $ 2 28 <DKKr)   c                 h    | j                   j                  dd|d   i       | j                          |S r  r-  r   s     r(   endTagBrz/getPhases.<locals>.InHeadNoscriptPhase.endTagBrR  r  r)   c                 F    | j                   j                  dd|d   i       y r  r  r   s     r(   rX  z2getPhases.<locals>.InHeadNoscriptPhase.endTagOtherW  r  r)   c                 8    | j                  t        d             y )Nr  )r  r7  rn   s    r(   r+  z3getPhases.<locals>.InHeadNoscriptPhase.anythingElseZ  s    
 ;<r)   r   )r  r  r  r8   r  r  )r   r  r  rA  N)r?   r@   rA   r1  r  r   r   r   r   r  rh  r  rT  r  r  rX  r+  r   rY  r  rZ  r  r   r)   r(   InHeadNoscriptPhaser  ,  s    G		
	F	
	N	G	G	T	
	=
	
	R	= 2&11\"IKbc!#783
 
 #0///(81
  !,r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Z ej"                  defdefde	fde
fdefg      Zee_         ej"                  defg      Zee_        y)!getPhases.<locals>.AfterHeadPhasec                 $    | j                          yr9  r_  rn   s    r(   r   z,getPhases.<locals>.AfterHeadPhase.processEOFn  r`  r)   c                 &    | j                          |S r1   r_  r   s     r(   r   z3getPhases.<locals>.AfterHeadPhase.processCharactersr  rb  r)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   r  z.getPhases.<locals>.AfterHeadPhase.startTagHtmlv  rO  r)   c                     d| j                   _        | j                  j                  |       | j                   j                  d   | j                   _        y )NFr   )rR   rm   rH   r   rK   rh   r   s     r(   startTagBodyz.getPhases.<locals>.AfterHeadPhase.startTagBodyy  s;    %*DKK"II##E* $ 2 28 <DKKr)   c                     | j                   j                  |       | j                  j                  d   | j                  _        y )Nr   )rH   r   rR   rK   rh   r   s     r(   startTagFramesetz2getPhases.<locals>.AfterHeadPhase.startTagFrameset~  s/    II##E* $ 2 2< @DKKr)   c                    | j                   j                  dd|d   i       | j                  j                  j	                  | j                  j
                         | j                   j                  d   j                  |       | j                  j                  d d d   D ]8  }|j                  dk(  s| j                  j                  j                  |        y  y )Nz#unexpected-start-tag-out-of-my-headrN   rQ  r   r   )
rR   r   rH   r   r   rR  rK   r   rN   remover  s      r(   startTagFromHeadz2getPhases.<locals>.AfterHeadPhase.startTagFromHead  s    KK""#H$*E&M#:<II""))$))*?*?@KKx(88?		..tt4 99&II**11$7r)   c                 F    | j                   j                  dd|d   i       y r  r  r   s     r(   rG  z.getPhases.<locals>.AfterHeadPhase.startTagHead  r  r)   c                 &    | j                          |S r1   r_  r   s     r(   rT  z/getPhases.<locals>.AfterHeadPhase.startTagOther  rb  r)   c                 &    | j                          |S r1   r_  r   s     r(   r  z2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBr  rb  r)   c                 F    | j                   j                  dd|d   i       y r  r  r   s     r(   rX  z-getPhases.<locals>.AfterHeadPhase.endTagOther  r  r)   c                     | j                   j                  t        dd             | j                  j                  d   | j                  _        d| j                  _        y )Nr   r   r   T)rH   r   r7  rR   rK   rh   rm   rn   s    r(   r+  z.getPhases.<locals>.AfterHeadPhase.anythingElse  sB    II##OFJ$GH $ 2 28 <DKK%)DKK"r)   r   r   r   )	r  r  r  r  r8   r  r  r  r  r   )r   r   rA  N)r?   r@   rA   r1  r  r   r   r  r  r  r  rG  rT  r  rX  r+  r   rY  r  rZ  r  r   r)   r(   AfterHeadPhaser  k  s    G				G	=
	A		T			R	*
 2&11\"\")*  \"3
  #0///2H2B2D 1E F +r)   r  c                       e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6 e7jp                  g d5W jr                  fd6efd7efd8efd9efe:efd:efd;efd<efd=efd>efd?efd@efdAefdBefdCefdDefdEefdFefdGefdHefdIefdJe fdKe!fdLe"fdMe#fdNe$fdOe&fdPe'fdQe%fdRe(fdSe)fdTe*f      Z;e+e;_<         e7jp                  d7e-fd5e.fdUe/fd;e0fdVe,fdWe1fe:e2fdXe3fdBe4fdYe5fg
      Z=e6e=_<         xZ>S )ZgetPhases.<locals>.InBodyPhase)r   c                 F    t        |   |i | | j                  | _        y r1   )superrP   processSpaceCharactersNonPrer   )rL   r   r%   InBodyPhaser   s      r(   rP   z'getPhases.<locals>.InBodyPhase.__init__  s%    +t-t>v>*.*K*KD'r)   c                     |j                   |j                   k(  xr4 |j                  |j                  k(  xr |j                  |j                  k(  S r1   )rN   rw   rx   )rL   node1node2s      r(   isMatchingFormattingElementz:getPhases.<locals>.InBodyPhase.isMatchingFormattingElement  sE    JJ%**, 9OOu69$$(8(88:r)   c                    | j                   j                  |       | j                   j                  d   }g }| j                   j                  d d d   D ]0  }|t        u r n&| j                  ||      s |j                  |       2 t        |      dk  sJ t        |      dk(  r(| j                   j                  j                  |d          | j                   j                  j                  |       y )Nr      )	rH   r   r   activeFormattingElementsr   r  r   r   r  )rL   r   r{   matchingElementsr   s        r(   addFormattingElementz3getPhases.<locals>.InBodyPhase.addFormattingElement  s    II##E*ii,,R0G!		::4R4@ 26>55dGD$++D1	2 '(A---#$)		2299:J2:NOII..55g>r)   c                     t        d      }| j                  j                  d d d   D ]-  }|j                  |vs| j                  j                  d        y  y )N)dddtlir'   r   r   r   r   r   r   r   r   r   z expected-closing-tag-but-got-eof)r   rH   r   rN   rR   r   )rL   allowed_elementsr   s      r(   r   z)getPhases.<locals>.InBodyPhase.processEOF  sY    ( *2  3 		..tt4 99$44KK**+MNr)   c                 d   |d   }| j                   | _        |j                  d      rQ| j                  j                  d   j
                  dv r,| j                  j                  d   j                         s|dd  }|r6| j                  j                          | j                  j                  |       y y )Nr   
r   )prelistingtextarear   )	r  r   r   rH   r   rN   
hasContent#reconstructActiveFormattingElementsr  )rL   r   r   s      r(   !processSpaceCharactersDropNewlinez@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewline  s     =D*.*K*KD'%		&&r*//3QQ		..r2==?ABx		==?		$$T* r)   c                 &   |d   dk(  ry | j                   j                          | j                   j                  |d          | j                  j                  r5t        |d   D cg c]
  }|t        v c}      rd| j                  _        y y y c c}w )Nr    F)rH   r  r  rR   rm   anyr   )rL   r   chars      r(   r   z0getPhases.<locals>.InBodyPhase.processCharacters  s    V}(II99;II  v/&&!&v0 0 0 1).&1 '0s   $Bc                 t    | j                   j                          | j                   j                  |d          y r  )rH   r  r  r   s     r(   r  z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPre  s(    II99;II  v/r)   c                 R    | j                   j                  d   j                  |      S r  rN  r   s     r(   startTagProcessInHeadz4getPhases.<locals>.InBodyPhase.startTagProcessInHead  rO  r)   c                    | j                   j                  dddi       t        | j                  j                        dk(  s&| j                  j                  d   j
                  dk7  r| j                   j                  sJ y d| j                   _        |d   j                         D ]Q  \  }}|| j                  j                  d   j                  vs,|| j                  j                  d   j                  |<   S y )Nr  rN   r   r   Fr   )
rR   r   r   rH   r   rN   rZ   rm   r2   rx   r  s       r(   r  z+getPhases.<locals>.InBodyPhase.startTagBody  s    KK""#9FF;KLDII**+q0II**1-22f<{{,,,,).&#(=#6#6#8 KKD%499#9#9!#<#G#GGEJ		..q1<<TBKr)   c                 p   | j                   j                  dddi       t        | j                  j                        dk(  s&| j                  j                  d   j
                  dk7  r| j                   j                  sJ y | j                   j                  sy | j                  j                  d   j                  rI| j                  j                  d   j                  j                  | j                  j                  d          | j                  j                  d   j
                  dk7  rK| j                  j                  j                          | j                  j                  d   j
                  dk7  rK| j                  j                  |       | j                   j                  d   | j                   _        y )	Nr  rN   r   r   r   r   r   r   )rR   r   r   rH   r   rN   rZ   rm   parentremoveChildr  r   rK   rh   r   s     r(   r  z/getPhases.<locals>.InBodyPhase.startTagFrameset  s=   KK""#9FJ;OPDII**+q0DII4J4J14M4R4RV\4\{{,,,,[[++99))!,33II**1-44@@AWAWXYAZ[ii,,R055?II**..0 ii,,R055?		''.$(KK$6$6|$D!r)   c                     | j                   j                  dd      r| j                  t        d             | j                   j	                  |       y Nr'   buttonvariant)rH   elementInScopeendTagPr7  r   r   s     r(   startTagClosePz-getPhases.<locals>.InBodyPhase.startTagCloseP  s<    yy''X'>_S12II##E*r)   c                     | j                   j                  dd      r| j                  t        d             | j                   j	                  |       d| j
                  _        | j                  | _        y )Nr'   r  r  F)	rH   r  r  r7  r   rR   rm   r  r   r   s     r(   startTagPreListingz1getPhases.<locals>.InBodyPhase.startTagPreListing  sV    yy''X'>_S12II##E*%*DKK"*.*P*PD'r)   c                 b   | j                   j                  r| j                  j                  dddi       y | j                   j	                  dd      r| j                  t        d             | j                   j                  |       | j                   j                  d   | j                   _        y )Nr  rN   formr'   r  r  r   )	rH   formPointerrR   r   r  r  r7  r   r   r   s     r(   startTagFormz+getPhases.<locals>.InBodyPhase.startTagForm  s~    yy$$&&'=?OP99++C+BLL!56		''.(,		(>(>r(B		%r)   c                 :   d| j                   _        dgddgddgd}||d      }t        | j                  j                        D ]n  }|j
                  |v r;| j                   j                  j                  t        |j
                  d              n%|j                  t        v s_|j
                  dvsn n | j                  j                  d	d
      r/| j                   j                  j                  t        d	d             | j                  j                  |       y )NFr  r  r  )r  r  r  rN   r   )addressr   r'   r'   r  r  )rR   rm   reversedrH   r   rN   rh   r   r7  	nameTupler   r  r   )rL   r   stopNamesMap	stopNamesr   s        r(   startTagListItemz/getPhases.<locals>.InBodyPhase.startTagListItem&  s    %*DKK"#'&#',#',0L %U6]3I !7!78 99	)KK%%33'		8<>NNo5		)@@ yy''X'>!!//#C24 II##E*r)   c                    | j                   j                  dd      r| j                  t        d             | j                   j	                  |       | j
                  j                  j                  | j
                  j                  _        y r  )	rH   r  r  r7  r   rR   rV   rg   re   r   s     r(   startTagPlaintextz0getPhases.<locals>.InBodyPhase.startTagPlaintext<  s^    yy''X'>_S12II##E**.++*?*?*N*NDKK!!'r)   c                    | j                   j                  dd      r| j                  t        d             | j                   j                  d   j
                  t        v rE| j                  j                  dd|d   i       | j                   j                  j                          | j                   j                  |       y )Nr'   r  r  r   r  rN   )rH   r  r  r7  r   rN   r   rR   r   r  r   r   s     r(   startTagHeadingz.getPhases.<locals>.InBodyPhase.startTagHeadingB  s    yy''X'>_S12yy%%b)../A&&'=f?VW		&&**,II##E*r)   c                    | j                   j                  d      }|r| j                  j                  dddd       | j	                  t        d             || j                   j                  v r%| j                   j                  j                  |       || j                   j                  v r%| j                   j                  j                  |       | j                   j                          | j                  |       y )Na$unexpected-start-tag-implies-end-tag	startNameendName)rH   !elementInActiveFormattingElementsrR   r   endTagFormattingr7  r   r  r  r  r  )rL   r   afeAElements      r(   	startTagAz(getPhases.<locals>.InBodyPhase.startTagAJ  s    ))EEcJK&&'M58S'IK%%oc&:;$))"8"88II**11+>$))"D"DDII66==kJII99;%%e,r)   c                 Z    | j                   j                          | j                  |       y r1   )rH   r  r  r   s     r(   startTagFormattingz1getPhases.<locals>.InBodyPhase.startTagFormattingW  s     II99;%%e,r)   c                 6   | j                   j                          | j                   j                  d      rS| j                  j	                  dddd       | j                  t        d             | j                   j                          | j                  |       y )Nnobrr  r  )rH   r  r  rR   r   r   r7  r  r   s     r(   startTagNobrz+getPhases.<locals>.InBodyPhase.startTagNobr[  ss    II99;yy''/&&'M5;'OQ""?6#:;		==?%%e,r)   c                 <   | j                   j                  d      r;| j                  j                  dddd       | j	                  t        d             |S | j                   j                          | j                   j                  |       d| j                  _        y )Nr  r  r  F)	rH   r  rR   r   r   r7  r  r   rm   r   s     r(   startTagButtonz-getPhases.<locals>.InBodyPhase.startTagButtone  sx    yy''1&&'M5=('SU""?8#<=		==?		''.).&r)   c                     | j                   j                          | j                   j                  |       | j                   j                  j	                  t
               d| j                  _        y NF)rH   r  r   r  r   r   rR   rm   r   s     r(   startTagAppletMarqueeObjectz:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectp  sH    II99;II##E*II..55f=%*DKK"r)   c                     | j                   j                  dd      r| j                  t        d             | j                   j	                          d| j
                  _        | j
                  j                  |d       y )Nr'   r  r  Fr   )rH   r  r  r7  r  rR   rm   r   r   s     r(   startTagXmpz*getPhases.<locals>.InBodyPhase.startTagXmpv  sZ    yy''X'>_S12II99;%*DKK"KK**5)<r)   c                 L   | j                   j                  dk7  r7| j                  j                  dd      r| j	                  t        d             | j                  j                  |       d| j                   _        | j                   j                  d   | j                   _	        y )Nr(  r'   r  r  Fr   )
rR   rb   rH   r  r   r7  r   rm   rK   rh   r   s     r(   startTagTablez,getPhases.<locals>.InBodyPhase.startTagTable}  sw    {{%%199++C+B&&s';<II##E*%*DKK" $ 2 29 =DKKr)   c                     | j                   j                          | j                   j                  |       | j                   j                  j	                          d|d<   d| j
                  _        y )NTr   F)rH   r  r   r   r  rR   rm   r   s     r(   startTagVoidFormattingz5getPhases.<locals>.InBodyPhase.startTagVoidFormatting  sQ    II99;II##E*II""&&(/3E+,%*DKK"r)   c                     | j                   j                  }| j                  |       d|d   v r1|d   d   j                  t              dk(  r|| j                   _        y y y )Nr6   r   hidden)rR   rm   r  ry   r   )rL   r   rm   s      r(   startTagInputz,getPhases.<locals>.InBodyPhase.startTagInput  s_    //J''.%-'&M&)334DEQ)3& R (r)   c                     | j                   j                  |       | j                   j                  j                          d|d<   y rf  rg  r   s     r(   startTagParamSourcez2getPhases.<locals>.InBodyPhase.startTagParamSource  ri  r)   c                    | j                   j                  dd      r| j                  t        d             | j                   j	                  |       | j                   j
                  j                          d|d<   d| j                  _        y )Nr'   r  r  Tr   F)	rH   r  r  r7  r   r   r  rR   rm   r   s     r(   
startTagHrz)getPhases.<locals>.InBodyPhase.startTagHr  si    yy''X'>_S12II##E*II""&&(/3E+,%*DKK"r)   c           	          | j                   j                  dddd       | j                  t        dd|d   |d                y )	Nzunexpected-start-tag-treated-asimageimgoriginalNamenewNamer   r   r   rx   r   )rR   r   r   r7  r   s     r(   startTagImagez,getPhases.<locals>.InBodyPhase.startTagImage  sJ    KK""#D4;#NP  
<A&M=B==Q"S Tr)   c           	         | j                   j                  dddi       | j                  j                  ry i }d|d   v r|d   d   |d<   | j	                  t        dd|             | j	                  t        d	d             | j	                  t        d
d             d|d   v r	|d   d   }nd}| j                  t        d   |d       |d   j                         }d|v r|d= d|v r|d= d|d<   | j	                  t        dd||d                | j                  t        d
             | j	                  t        d	d             | j                  t        d             y )Nzdeprecated-tagrN   isindexactionr   r  r   )rx   hrlabelpromptz3This is a searchable index. Enter search keywords: r   r6   r   inputr   r+  )
rR   r   rH   r  r   r7  r   r   copyr   )rL   r   
form_attrsr2  rx   s        r(   startTagIsIndexz.getPhases.<locals>.InBodyPhase.startTagIsIndex  sr   KK""#3fi5HIyy$$J5=(',V}X'>
8$  <F"H I  z!BC  *!EF5=(vx0N""#L16BDv++-J:%x(:%x(!*Jv  *<F=B==Q"S T w78  z!BCv67r)   c                     | j                   j                  |       | j                  j                  j                  | j                  j                  _        | j                  | _        d| j                  _        y r  )	rH   r   rR   rV   rd   re   r  r   rm   r   s     r(   startTagTextareaz/getPhases.<locals>.InBodyPhase.startTagTextarea  sP    II##E**.++*?*?*K*KDKK!!'*.*P*PD'%*DKK"r)   c                 H    d| j                   _        | j                  |       y r  )rR   rm   startTagRawtextr   s     r(   startTagIFramez-getPhases.<locals>.InBodyPhase.startTagIFrame  s    %*DKK"  'r)   c                 v    | j                   j                  r| j                  |       y | j                  |       y r1   )rR   rT   r;  rT  r   s     r(   r|  z/getPhases.<locals>.InBodyPhase.startTagNoscript  s+    {{$$$$U+""5)r)   c                 <    | j                   j                  |d       y)z8iframe, noembed noframes, noscript(if scripting enabled)r   Nru  r   s     r(   r;  z.getPhases.<locals>.InBodyPhase.startTagRawtext  ry  r)   c                 *   | j                   j                  d   j                  dk(  r.| j                  j                  j                  t        d             | j                   j                          | j                  j                   j                  |       y Nr   option)	rH   r   rN   rR   rh   r   r7  r  r   r   s     r(   startTagOptz*getPhases.<locals>.InBodyPhase.startTagOpt  sd    yy%%b)..(:!!//0IJII99;KK**51r)   c                    | j                   j                          | j                   j                  |       d| j                  _        | j                  j
                  | j                  j                  d   | j                  j                  d   | j                  j                  d   | j                  j                  d   | j                  j                  d   | j                  j                  d   fv r)| j                  j                  d   | j                  _        y | j                  j                  d	   | j                  _        y )
NFr   r   r   r   r   r   inSelectInTabler   )rH   r  r   rR   rm   rh   rK   r   s     r(   startTagSelectz-getPhases.<locals>.InBodyPhase.startTagSelect  s    II99;II##E*%*DKK"{{  T[[%7%7	%B%)[[%7%7%D%)[[%7%7%H%)[[%7%7%F%)[[%7%7%@%)[[%7%7%A%C C %)KK$6$67H$I!$(KK$6$6z$B!r)   c                 $   | j                   j                  d      rZ| j                   j                          | j                   j                  d   j                  dk7  r| j
                  j                          | j                   j                  |       y )Nrubyr   )rH   r  generateImpliedEndTagsr   rN   rR   r   r   r   s     r(   startTagRpRtz+getPhases.<locals>.InBodyPhase.startTagRpRt  sc    yy''/		00299))"-22f<KK**,II##E*r)   c                 P   | j                   j                          | j                  j                  |       | j                  j	                  |       t
        d   |d<   | j                   j                  |       |d   r*| j                   j                  j                          d|d<   y y )Nru   rw   r   Tr   )	rH   r  rR   r   r   r   r   r   r  r   s     r(   startTagMathz+getPhases.<locals>.InBodyPhase.startTagMath  s    II99;KK..u5KK//6!+H!5E+II##E* ]#		&&**,37/0 $r)   c                 P   | j                   j                          | j                  j                  |       | j                  j	                  |       t
        d   |d<   | j                   j                  |       |d   r*| j                   j                  j                          d|d<   y y )Nr   rw   r   Tr   )	rH   r  rR   r   r   r   r   r   r  r   s     r(   startTagSvgz*getPhases.<locals>.InBodyPhase.startTagSvg  s    II99;KK++E2KK//6!+E!2E+II##E* ]#		&&**,37/0 $r)   c                 F    | j                   j                  dd|d   i       y)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"
            zunexpected-start-tag-ignoredrN   Nr  r   s     r(   startTagMisplacedz0getPhases.<locals>.InBodyPhase.startTagMisplaced  s#     KK""#AFERXMCZ[r)   c                 n    | j                   j                          | j                   j                  |       y r1   )rH   r  r   r   s     r(   rT  z,getPhases.<locals>.InBodyPhase.startTagOther  s$    II99;II##E*r)   c                 v   | j                   j                  dd      sU| j                  t        dd             | j                  j                  dddi       | j                  t        dd             y | j                   j                  d       | j                   j                  d   j                  dk7  r| j                  j                  dddi       | j                   j                  j                         }|j                  dk7  r5| j                   j                  j                         }|j                  dk7  r4y y )	Nr'   r  r  r   r  rN   r   r   )rH   r  r  r7  rR   r   r  rH  r   rN   r  r  s      r(   r  z&getPhases.<locals>.InBodyPhase.endTagP  s    99++C+B##OC$DE&&';fc]K_S(;<		00599))"-22c9KK**+?&#Oyy--113ii3&9911557D ii3&r)   c                    | j                   j                  d      s| j                  j                          y | j                   j                  d   j
                  dk7  r`| j                   j                  dd  D ]D  }|j
                  t        d      vs| j                  j                  dd|j
                  d        n | j                  j                  d   | j                  _        y )Nr   r      )r  r  r  optgrouprA  r'   rprtr   r   r   r   r   r   r   r   $expected-one-end-tag-but-got-anothergotNameexpectedName	afterBody)	rH   r  rR   r   r   rN   r   rK   rh   r  s      r(   
endTagBodyz)getPhases.<locals>.InBodyPhase.endTagBody)  s    99++F3&&(''+00F: II22126 
Dyy	 3; )< < ..B(.		JL 
 !% 2 2; ?DKKr)   c                 r    | j                   j                  d      r| j                  t        d             |S y )Nr   )rH   r  r\  r7  r   s     r(   
endTagHtmlz)getPhases.<locals>.InBodyPhase.endTagHtml;  s/    yy''/ 78 0r)   c                     |d   dk(  r| j                   | _        | j                  j                  |d         }|r| j                  j	                          | j                  j
                  d   j                  |d   k7  r!| j                  j                  dd|d   i       |ro| j                  j
                  j                         }|j                  |d   k7  r8| j                  j
                  j                         }|j                  |d   k7  r7y y y )NrN   r  r   end-tag-too-early)
r  r   rH   r  rH  r   rN   rR   r   r  )rL   r   inScoper   s       r(   endTagBlockz*getPhases.<locals>.InBodyPhase.endTagBlockA  s    V}%.2.O.O+ii..uV}=G		002yy%%b)..%-?&&':VU6]<STyy--113ii5=09911557D ii5=0 r)   c                    | j                   j                  }d | j                   _        || j                   j                  |      s| j                  j	                  dddi       y | j                   j                          | j                   j                  d   |k7  r| j                  j	                  dddi       | j                   j                  j                  |       y )Nr  rN   r  r   zend-tag-too-early-ignored)rH   r  r  rR   r   rH  r   r  r  s      r(   
endTagFormz)getPhases.<locals>.InBodyPhase.endTagFormO  s    99((D$(DII!|499#;#;D#A&&';(.'79 		00299))"-5KK**+F,2F+;=		&&--d3r)   c                 P   |d   dk(  rd}nd }| j                   j                  |d   |      s"| j                  j                  dd|d   i       y | j                   j	                  |d          | j                   j
                  d   j                  |d   k7  r!| j                  j                  dd|d   i       | j                   j
                  j                         }|j                  |d   k7  r8| j                   j
                  j                         }|j                  |d   k7  r7y y )	NrN   r  listr  r  excluder   r`  )rH   r  rR   r   rH  r   rN   r  )rL   r   r  r   s       r(   endTagListItemz-getPhases.<locals>.InBodyPhase.endTagListItem\  s    V}$ 99++E&M7+K&&';feFm=TU		00v0G99))"-22eFmCKK**+v/1 yy--113ii5=09911557D ii5=0r)   c                 F   t         D ]9  }| j                  j                  |      s| j                  j                           n | j                  j                  d   j
                  |d   k7  r!| j                  j                  dd|d   i       t         D ]  }| j                  j                  |      s| j                  j                  j                         }|j
                  t         vr7| j                  j                  j                         }|j
                  t         vr7 y  y )Nr   rN   r`  )	r   rH   r  rH  r   rN   rR   r   r  )rL   r   items      r(   endTagHeadingz,getPhases.<locals>.InBodyPhase.endTagHeadingm  s    ' 99++D1II446 yy%%b)..%-?&&':VU6]<ST' 99++D19911557D))?:#yy5599; ))?:r)   c                 
   d}|dk  rs|dz  }| j                   j                  |d         }|r=|| j                   j                  v r7| j                   j                  |j                        s| j                  |       y|| j                   j                  vrG| j                  j                  dd|d   i       | j                   j                  j                  |       y| j                   j                  |j                        s"| j                  j                  dd|d   i       y|| j                   j                  d   k7  r!| j                  j                  d	d|d   i       | j                   j                  j                  |      }d}| j                   j                  |d D ]  }|j                  t        v s|} n |y| j                   j                  j                         }||k7  r*| j                   j                  j                         }||k7  r*| j                   j                  j                  |       y| j                   j                  |dz
     }| j                   j                  j                  |      }|x}	}
d}| j                   j                  j                  |
      }|d
k  r_|dz  }|dz  }| j                   j                  |   }
|
| j                   j                  vr&| j                   j                  j                  |
       g|
|k(  rn|	|k(  r(| j                   j                  j                  |
      dz   }|
j                         }|| j                   j                  | j                   j                  j                  |
      <   || j                   j                  | j                   j                  j                  |
      <   |}
|	j                  r|	j                  j!                  |	       |
j#                  |	       |
}	|d
k  r_|	j                  r|	j                  j!                  |	       |j                  t%        d      v r0| j                   j'                         \  }}|j)                  |	|       n|j#                  |	       |j                         }|j+                  |       |j#                  |       | j                   j                  j                  |       | j                   j                  j-                  ||       | j                   j                  j                  |       | j                   j                  j-                  | j                   j                  j                  |      dz   |       |dk  rryy)z)The much-feared adoption agency algorithmr      r   rN   Nzadoption-agency-1.2zadoption-agency-4.4r   zadoption-agency-1.3r  r   r   r   r   r   )rH   r
  r   r  rN   rX  rR   r   r  r  indexr  r   r  	cloneNoder  r  appendChildr   getTableMisnestedNodePositioninsertBeforereparentChildreninsert)rL   r   outerLoopCounterformattingElementafeIndexfurthestBlockr{   commonAncestorbookmarklastNoder   innerLoopCounterrp  cloner  rt  s                   r(   r  z/getPhases.<locals>.InBodyPhase.endTagFormatting|  s     ! #Q& !A%  %)II$O$O&M%#!)&$))*@*@@112C2H2HI $$U+ 'dii.D.DDKK**+@65QW=BYZII66==>OP 112C2H2HIKK**+@65QW=BYZ )DII,B,B2,FF../DvuU[}F]^  9911778IJ $#yy55hi@ G((O;(/ !("ii4488:G!%66"&))"8"8"<"<"> "%66II66==gF "&!7!71!E  99==CCDUV #0/4#$ 		..44T:&*$)$QJE9911%8D499#E#EE		..55d; 00=0#'99#E#E#K#KD#QTU#U NN,E KP II66		::@@FH ?D II**		..44T:< D   33H=$$X.#H9 '*D ??OO//9!&&)4^*__+/99+R+R+T(FL'',?"..x8 *335 ..u5 ))%0 		2299:KL		2299(EJ 		&&--.?@		&&--II**00?!CULo #Q&r)   c                 T   | j                   j                  |d         r| j                   j                          | j                   j                  d   j                  |d   k7  r!| j
                  j                  dd|d   i       | j                   j                  |d         r| j                   j                  j                         }|j                  |d   k7  r7| j                   j                  j                         }|j                  |d   k7  r7| j                   j                          y y )NrN   r   r`  )	rH   r  rH  r   rN   rR   r   r  clearActiveFormattingElements)rL   r   r{   s      r(   endTagAppletMarqueeObjectz8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObject  s    yy''f6		002yy%%b)..%-?&&':VU6]<STyy''f6))00446lleFm3"ii4488:G lleFm3		779	 7r)   c                    | j                   j                  dddd       | j                  j                          | j                  j	                  t        dd             | j                  j                  j                          y )Nzunexpected-end-tag-treated-asrA  z
br elementr(  r   )rR   r   rH   r  r   r7  r   r  r   s     r(   r  z'getPhases.<locals>.InBodyPhase.endTagBr+  s_    KK""#B48\#RTII99;II##OD*$EFII""&&(r)   c                 L   | j                   j                  d d d   D ]  }|j                  |d   k(  r| j                   j                  |d          | j                   j                  d   j                  |d   k7  r!| j                  j                  dd|d   i       | j                   j                  j                         |k7  r)	 | j                   j                  j                         |k7  r) y |j                  t        v s| j                  j                  dd|d   i        y  y )Nr   rN   rg  r  )	rH   r   rN   rH  rR   r   r  r  r   r  s      r(   rX  z*getPhases.<locals>.InBodyPhase.endTagOther2  s    		..tt4 99f-II44U6]4Kyy--b166%-G../CfeTZmE\]))00446$> ))00446$>~~8../CfeTZmE\]r)   r   )	r  r  r  r  r  r8   r  r  r  r   r   )r  articleaside
blockquotecenterdetailsdirr   dlfieldset
figcaptionfigurefooterheaderhgroupmainmenunavolr'   sectionsummaryul)r  r  r  )r  r  r  r]   r  )bbigcodeemfontissmallstrikestrongttur  r  )appletmarqueeobjectxmpr   )arearA  embedr'  keygenwbr)paramsourcetrackr4  r0  r&  r.  r  iframer  )noembedr  r   )rU  rV  )rA  rT  mathr   )r   colr   framer   r   r   r   r   r   r   )r  r  r  r  r  r  r  dialogr  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'   )r  r  r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  rA  )?r?   r@   rA   r  rP   r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r$  r,  r7  r9  r<  r|  r;  rB  rE  rI  rK  rM  rO  rT  r  r\  r^  rb  rd  ri  rl  r  r  r  rX  r   rY  r  r   r  rZ  r  __classcell__)r   r  r  s   @r(   r  r    s    0		L
	:	?"		+
	/	0	G		K	E	+
	Q	C	+,	O	+	-	-	-		/	+	=	>	+	4	4
	+	T	8>	+	(	*	=	2	C	+
	8
	8	\	+	8	@$		8	4	8"	a	LF
	:	)	 2&11 ,3
U''(,3
*"$,3

 \",3
 )*,3
* 	,3
 o.,3
  !34,3
 \",3
  !12,3
  +,!,3
" )#,3
$#$68%,3
( \"),3
* ~&+,3
, -.IJ-,3
. K /,3
0 m$1,3
2 =#%3,3
6 *+>?7,3
8 m$9,3
: :;,3
< m$=,3
> (?,3
@ )*A,3
B ~&C,3
D )*E,3
F %o6G,3
H ~&I,3
J <(K,3
L $[1M,3
N |$O,3
P k"Q,3
R&(S,3
 ,Z #0///Z Z * ,78 Z 'N0m,-.>@,.GH81
   !,r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	 e
j                  g       Zee_         e
j                  defg      Ze	e_        y)getPhases.<locals>.TextPhasec                 @    | j                   j                  |d          y r  r  r   s     r(   r   z.getPhases.<locals>.TextPhase.processCharacters  r  r)   c                    | j                   j                  dd| j                  j                  d   j                  i       | j                  j                  j                          | j                   j                  | j                   _        y)Nz&expected-named-closing-tag-but-got-eofrN   r   T)rR   r   rH   r   rN   r  r   rh   rn   s    r(   r   z'getPhases.<locals>.TextPhase.processEOF  sd    KK""#K$*DII,B,B2,F,K,K#LNII""&&( $ 9 9DKKr)   c                     J d|d   z         )Nz4Tried to process start tag %s in RCDATA/RAWTEXT moderN   r   r   s     r(   rT  z*getPhases.<locals>.TextPhase.startTagOther  s    `PSXY_S```5r)   c                     | j                   j                  j                         }|j                  dk(  sJ | j                  j
                  | j                  _        y )Nr  )rH   r   r  rN   rR   r   rh   r  s      r(   endTagScriptz)getPhases.<locals>.TextPhase.endTagScript  sB    99))--/D99((( $ 9 9DKKr)   c                     | j                   j                  j                          | j                  j                  | j                  _        y r1   )rH   r   r  rR   r   rh   r   s     r(   rX  z(getPhases.<locals>.TextPhase.endTagOther  s.    II""&&( $ 9 9DKKr)   r  N)r?   r@   rA   r1  r  r   r   rT  r  rX  r   rY  r  rZ  r  r   r)   r(   	TextPhaser    sf    G		0		a	:	: 2&11"5"////|$1& ' +r)   r  c                   J   e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z ej0                  dW  j2                  fde
fdefdefdefdefdefdefdefdefg
      Zee_         ej0                  defdefg      Zee_        y)getPhases.<locals>.InTablePhasec                     | j                   j                  d   j                  dvrK| j                   j                  j                          | j                   j                  d   j                  dvrJy y )Nr   )r   r   )rH   r   rN   r  rn   s    r(   clearStackToTableContextz8getPhases.<locals>.InTablePhase.clearStackToTableContext  sX    ))((,119JJ 		&&**, ))((,119JJr)   c                     | j                   j                  d   j                  dk7  r| j                  j	                  d       y | j                  j
                  sJ y )Nr   r   zeof-in-tablerH   r   rN   rR   r   rZ   rn   s    r(   r   z*getPhases.<locals>.InTablePhase.processEOF  sD    yy%%b)..&8&&~6{{,,,,r)   c                     | j                   j                  }| j                   j                  d   | j                   _        || j                   j                  _        | j                   j                  j	                  |       y NinTableText)rR   rh   rK   r   r   rL   r   r   s      r(   r   z6getPhases.<locals>.InTablePhase.processSpaceCharacters  sV     KK--M $ 2 2= ADKK.;DKK+KK44U;r)   c                     | j                   j                  }| j                   j                  d   | j                   _        || j                   j                  _        | j                   j                  j	                  |       y r  )rR   rh   rK   r   r   r  s      r(   r   z1getPhases.<locals>.InTablePhase.processCharacters  sV     KK--M $ 2 2= ADKK.;DKK+KK//6r)   c                     d| j                   _        | j                  j                  d   j	                  |       d| j                   _        y )NTr   F)rH   insertFromTablerR   rK   r   r   s     r(   r  z*getPhases.<locals>.InTablePhase.insertText  s9     )-DII%KKx(::5A(-DII%r)   c                     | j                          | j                  j                  j                  t               | j                  j                  |       | j                  j                  d   | j                  _        y )Nr   )	r  rH   r  r   r   r   rR   rK   rh   r   s     r(   startTagCaptionz/getPhases.<locals>.InTablePhase.startTagCaption  sS    ))+II..55f=II##E* $ 2 2; ?DKKr)   c                     | j                          | j                  j                  |       | j                  j                  d   | j                  _        y )Nr   r  rH   r   rR   rK   rh   r   s     r(   startTagColgroupz0getPhases.<locals>.InTablePhase.startTagColgroup  s;    ))+II##E* $ 2 2? CDKKr)   c                 <    | j                  t        dd             |S )Nr   r   )r  r7  r   s     r(   startTagColz+getPhases.<locals>.InTablePhase.startTagCol  s    !!/*j"IJLr)   c                     | j                          | j                  j                  |       | j                  j                  d   | j                  _        y Nr   r  r   s     r(   startTagRowGroupz0getPhases.<locals>.InTablePhase.startTagRowGroup  s;    ))+II##E* $ 2 2= ADKKr)   c                 <    | j                  t        dd             |S )Nr   r   )r  r7  r   s     r(   startTagImplyTbodyz2getPhases.<locals>.InTablePhase.startTagImplyTbody  s    !!/':"FGLr)   c                     | j                   j                  dddd       | j                   j                  j                  t	        d             | j                   j
                  s|S y )Nr  r   r  )rR   r   rh   r   r7  rZ   r   s     r(   r  z-getPhases.<locals>.InTablePhase.startTagTable  sT    KK""#I18W#MOKK++OG,DE;;(( )r)   c                 R    | j                   j                  d   j                  |      S r  rN  r   s     r(   startTagStyleScriptz3getPhases.<locals>.InTablePhase.startTagStyleScript  rO  r)   c                 &   d|d   v ry|d   d   j                  t              dk(  r[| j                  j                  d       | j                  j                  |       | j                  j                  j                          y | j                  |       y )Nr6   r   r  z unexpected-hidden-input-in-table)	ry   r   rR   r   rH   r   r   r  rT  r   s     r(   r   z-getPhases.<locals>.InTablePhase.startTagInput  st    %-'&M&)334DEQ&&'IJ		''.		&&**,""5)r)   c                 6   | j                   j                  d       | j                  j                  h| j                  j	                  |       | j                  j
                  d   | j                  _        | j                  j
                  j                          y y )Nzunexpected-form-in-tabler   )rR   r   rH   r  r   r   r  r   s     r(   r  z,getPhases.<locals>.InTablePhase.startTagForm  sm    KK""#=>yy$$,		''.(,		(>(>r(B		%		&&**, -r)   c                     | j                   j                  dd|d   i       d| j                  _        | j                   j                  d   j                  |       d| j                  _        y )Nz)unexpected-start-tag-implies-table-voodoorN   Tr   F)rR   r   rH   r  rK   r   r   s     r(   rT  z-getPhases.<locals>.InTablePhase.startTagOther  sY    KK""#NQWY^_eYfPgh(,DII%KKx(88?(-DII%r)   c                    | j                   j                  dd      r0| j                   j                          | j                   j                  d   j                  dk7  r@| j
                  j                  dd| j                   j                  d   j                  d       | j                   j                  d   j                  dk7  rK| j                   j                  j                          | j                   j                  d   j                  dk7  rK| j                   j                  j                          | j
                  j                          y | j
                  j                  sJ | j
                  j                          y )Nr   r  r   zend-tag-too-early-namedrX  )
rH   r  rH  r   rN   rR   r   r  rj   rZ   r   s     r(   endTagTablez+getPhases.<locals>.InTablePhase.endTagTable  s   yy'''A		00299))"-22g=KK**+D7><@II<R<RSU<V<[<[,]^ ii,,R055@II**..0 ii,,R055@		&&**,..0 {{,,,,&&(r)   c                 F    | j                   j                  dd|d   i       y r  r  r   s     r(   endTagIgnorez,getPhases.<locals>.InTablePhase.endTagIgnore  r  r)   c                     | j                   j                  dd|d   i       d| j                  _        | j                   j                  d   j                  |       d| j                  _        y )Nz'unexpected-end-tag-implies-table-voodoorN   Tr   F)rR   r   rH   r  rK   r   r   s     r(   rX  z+getPhases.<locals>.InTablePhase.endTagOther  sX    KK""#LvW\]cWdNef(,DII%KKx(66u=(-DII%r)   r   r   r   r  r   r   r   )r   r   r   r   )r  r  r4  r  )r   r   r  r   r   r   r   r   r   r   r   N)r?   r@   rA   r1  r  r  r   r   r   r  r  r  r  r  r  r  r  r   r  rT  r  r  rX  r   rY  r  r  rZ  r  r  s   r(   InTablePhaser    s   G		-	-	<	7	.	@	D
		B
			G	*	-	.	) 	R	. 2&11U''(()*K (*:;!34m$ "56m$\"3
  #0///k",-9;1
 
 !,r)   r  c                   P     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Z xZS )
#getPhases.<locals>.InTableTextPhase)r   characterTokensc                 @    t        |   |i | d | _        g | _        y r1   )r  rP   r   r  )rL   r   r%   InTableTextPhaser   s      r(   rP   z,getPhases.<locals>.InTableTextPhase.__init__6  s(    "D2DCFC!%D#%D r)   c                 n   dj                  | j                  D cg c]  }|d   	 c}      }t        |D cg c]
  }|t        v c}      r<t        d   |d}| j
                  j                  d   j                  |       g | _        y |r| j                  j                  |       g | _        y c c}w c c}w )Nr'  r   r   r3  r   )	joinr  r  r   r   rR   rK   r  rH   )rL   rk  r   r   s       r(   flushCharactersz3getPhases.<locals>.InTableTextPhase.flushCharacters;  s    77T5I5IJTDLJKDDADD/AB!+L!94H""9-88? $&D  		$$T*#%D  KAs
   B-B2c                 \    | j                          | j                  | j                  _        |S r1   r  r   rR   rh   r   s     r(   r   z2getPhases.<locals>.InTableTextPhase.processCommentD  %      " $ 2 2DKKLr)   c                 Z    | j                          | j                  | j                  _        yr9  r  rn   s    r(   r   z.getPhases.<locals>.InTableTextPhase.processEOFI  s#      " $ 2 2DKKr)   c                 L    |d   dk(  ry | j                   j                  |       y Nr   r  r  r   r   s     r(   r   z5getPhases.<locals>.InTableTextPhase.processCharactersN  s%    V}(  ''.r)   c                 :    | j                   j                  |       y r1   r  r   s     r(   r   z:getPhases.<locals>.InTableTextPhase.processSpaceCharactersS  s      ''.r)   c                 \    | j                          | j                  | j                  _        |S r1   r  r   s     r(   r   z3getPhases.<locals>.InTableTextPhase.processStartTagX  r  r)   c                 \    | j                          | j                  | j                  _        |S r1   r  r   s     r(   r   z1getPhases.<locals>.InTableTextPhase.processEndTag]  r  r)   )r?   r@   rA   r  rP   r  r   r   r   r   r   r   r  )r   r  s   @r(   r  r  3  s0    8		&
	&	
	
	/
	/
	
	r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Z ej                  d
W  j                   fdefg      Ze	e_         ej                  de
fdefdefg      Zee_        y)!getPhases.<locals>.InCaptionPhasec                 >    | j                   j                  dd       S )Nr   r   r  rH   r  rn   s    r(   ignoreEndTagCaptionz5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptionf  s    yy//	7/KKKr)   c                 R    | j                   j                  d   j                          y rM  rR   rK   r   rn   s    r(   r   z,getPhases.<locals>.InCaptionPhase.processEOFi      KKx(335r)   c                 R    | j                   j                  d   j                  |      S rM  rR   rK   r   r   s     r(   r   z3getPhases.<locals>.InCaptionPhase.processCharactersl  "    ;;%%h/AA%HHr)   c                     | j                   j                          | j                         }| j                   j                  j	                  t        d             |s|S y Nr   rR   r   r  rh   r   r7  rL   r   ignoreEndTags      r(   startTagTableElementz6getPhases.<locals>.InCaptionPhase.startTagTableElemento  sJ    KK""$335LKK++OI,FG  r)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   rT  z/getPhases.<locals>.InCaptionPhase.startTagOtherw  rO  r)   c                 :   | j                         sX| j                  j                          | j                  j                  d   j                  dk7  r@| j
                  j                  dd| j                  j                  d   j                  d       | j                  j                  d   j                  dk7  rK| j                  j                  j                          | j                  j                  d   j                  dk7  rK| j                  j                  j                          | j                  j                          | j
                  j                  d   | j
                  _
        y | j
                  j                  sJ | j
                  j                          y )Nr   r   rW  rX  r   )r  rH   rH  r   rN   rR   r   r  r  rK   rh   rZ   r   s     r(   endTagCaptionz/getPhases.<locals>.InCaptionPhase.endTagCaptionz  s-   ++-		00299))"-22i?KK**+Q7@<@II<R<RSU<V<[<[,]^ ii,,R055BII**..0 ii,,R055B		&&**,		779$(KK$6$6y$A! {{,,,,&&(r)   c                     | j                   j                          | j                         }| j                   j                  j	                  t        d             |s|S y r  r  r  s      r(   r  z-getPhases.<locals>.InCaptionPhase.endTagTable  sJ    KK""$335LKK++OI,FG  r)   c                 F    | j                   j                  dd|d   i       y r  r  r   s     r(   r  z.getPhases.<locals>.InCaptionPhase.endTagIgnore  r  r)   c                 R    | j                   j                  d   j                  |      S rM  rR   rK   r   r   s     r(   rX  z-getPhases.<locals>.InCaptionPhase.endTagOther  "    ;;%%h/==eDDr)   r   	r   r  r   r   r   r   r   r   r   r   r   )
r   r  r   r   r   r   r   r   r   r   N)r?   r@   rA   r1  r  r  r   r   r	  rT  r  r  r  rX  r   rY  r  r  rZ  r  r  s   r(   InCaptionPhaser  b  s    G		L	6	I		G	)$		R	E 2&11U''(243
 
 #0///&k"*,1
  !,r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Z ej                  d	W  j                  fd
efg      Ze	e_         ej                  de
fd
efg      Zee_        y)%getPhases.<locals>.InColumnGroupPhasec                 N    | j                   j                  d   j                  dk(  S )Nr   r   )rH   r   rN   rn   s    r(   ignoreEndTagColgroupz:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroup  s"    99))"-22f<<r)   c                     | j                   j                  d   j                  dk(  r| j                  j                  sJ y | j                         }| j                  t        d             |syy )Nr   r   r   T)rH   r   rN   rR   rZ   r  endTagColgroupr7  )rL   r  s     r(   r   z0getPhases.<locals>.InColumnGroupPhase.processEOF  sa    yy%%b)..&8{{,,,,#88:##OJ$?@# $r)   c                 `    | j                         }| j                  t        d             |s|S y Nr   r  r  r7  r  s      r(   r   z7getPhases.<locals>.InColumnGroupPhase.processCharacters  0    446L
 ;<  r)   c                     | j                   j                  |       | j                   j                  j                          d|d<   y rf  rg  r   s     r(   r  z1getPhases.<locals>.InColumnGroupPhase.startTagCol  ri  r)   c                 `    | j                         }| j                  t        d             |s|S y r  r  r  s      r(   rT  z3getPhases.<locals>.InColumnGroupPhase.startTagOther  r  r)   c                 "   | j                         r3| j                  j                  sJ | j                  j                          y | j                  j
                  j                          | j                  j                  d   | j                  _        y Nr   )	r  rR   rZ   r   rH   r   r  rK   rh   r   s     r(   r  z4getPhases.<locals>.InColumnGroupPhase.endTagColgroup  sb    ((*{{,,,,&&(		&&**,$(KK$6$6y$A!r)   c                 @    | j                   j                  dddi       y )Nz
no-end-tagrN   r  r  r   s     r(   	endTagColz/getPhases.<locals>.InColumnGroupPhase.endTagCol  s    KK""<&%Ar)   c                 `    | j                         }| j                  t        d             |s|S y r  r  r  s      r(   rX  z1getPhases.<locals>.InColumnGroupPhase.endTagOther  r  r)   r   r  r   N)r?   r@   rA   r1  r  r  r   r   r  rT  r  r#  rX  r   rY  r  r  rZ  r  r  s   r(   InColumnGroupPhaser    s    G		=	 		4
		B	B	 2&11U''(K 3
  #0///(I1
  !,r)   r%  c                      e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Z ej$                  dW  j&                  fde	fde
fdefg      Zee_         ej$                  defdefdefg      Zee_        y)#getPhases.<locals>.InTableBodyPhasec                 `   | j                   j                  d   j                  dvrJ| j                   j                  j                          | j                   j                  d   j                  dvrJ| j                   j                  d   j                  dk(  r| j                  j
                  sJ y y )Nr   )r   r   r   r   r   )rH   r   rN   r  rR   rZ   rn   s    r(   clearStackToTableBodyContextz@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContext  s    ))((,11 :K K 		&&**,	 ))((,11 :K K
 yy%%b)..&8{{,,,, 9r)   c                 R    | j                   j                  d   j                          y r!  r  rn   s    r(   r   z.getPhases.<locals>.InTableBodyPhase.processEOF      KKy)446r)   c                 R    | j                   j                  d   j                  |      S r!  r  r   s     r(   r   z:getPhases.<locals>.InTableBodyPhase.processSpaceCharacters  "    ;;%%i0GGNNr)   c                 R    | j                   j                  d   j                  |      S r!  r  r   s     r(   r   z5getPhases.<locals>.InTableBodyPhase.processCharacters  "    ;;%%i0BB5IIr)   c                     | j                          | j                  j                  |       | j                  j                  d   | j                  _        y )Nr   )r)  rH   r   rR   rK   rh   r   s     r(   
startTagTrz.getPhases.<locals>.InTableBodyPhase.startTagTr   s;    --/II##E* $ 2 27 ;DKKr)   c                 ~    | j                   j                  dd|d   i       | j                  t        dd             |S )Nzunexpected-cell-in-table-bodyrN   r   r   )rR   r   r1  r7  r   s     r(   startTagTableCellz5getPhases.<locals>.InTableBodyPhase.startTagTableCell  s;    KK""#B$*E&M#:<OOOD*=>Lr)   c                    | j                   j                  dd      s:| j                   j                  dd      s| j                   j                  dd      rM| j                          | j                  t	        | j                   j
                  d   j                               |S | j                  j                  sJ | j                  j                          y Nr   r   r  r   r   r   
rH   r  r)  endTagTableRowGroupr7  r   rN   rR   rZ   r   r   s     r(   startTagTableOtherz6getPhases.<locals>.InTableBodyPhase.startTagTableOther  s    		(('(B		(('(BII,,Wg,F113((#DII$:$:2$>$C$CDF {{,,,,&&(r)   c                 R    | j                   j                  d   j                  |      S r!  rN  r   s     r(   rT  z1getPhases.<locals>.InTableBodyPhase.startTagOther  "    ;;%%i0@@GGr)   c                 @   | j                   j                  |d   d      r]| j                          | j                   j                  j	                          | j
                  j                  d   | j
                  _        y | j
                  j                  dd|d   i       y )NrN   r   r  r    unexpected-end-tag-in-table-body)	rH   r  r)  r   r  rR   rK   rh   r   r   s     r(   r7  z7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroup  s|    yy''fw'G113		&&**,$(KK$6$6y$A!&&'I(.f'>@r)   c                    | j                   j                  dd      s:| j                   j                  dd      s| j                   j                  dd      rM| j                          | j                  t	        | j                   j
                  d   j                               |S | j                  j                  sJ | j                  j                          y r5  r6  r   s     r(   r  z/getPhases.<locals>.InTableBodyPhase.endTagTable%  s    		(('(B		(('(BII,,Wg,F113((#DII$:$:2$>$C$CDF {{,,,,&&(r)   c                 F    | j                   j                  dd|d   i       y )Nr<  rN   r  r   s     r(   r  z0getPhases.<locals>.InTableBodyPhase.endTagIgnore2  #    KK""#E$*E&M#:<r)   c                 R    | j                   j                  d   j                  |      S r!  r  r   s     r(   rX  z/getPhases.<locals>.InTableBodyPhase.endTagOther6  "    ;;%%i0>>uEEr)   r   r   r   r   )r   r  r   r   r   r   r  r   )r   r   r  r   r   r   r   r   N)r?   r@   rA   r1  r  r)  r   r   r   r1  r3  r8  rT  r7  r  r  rX  r   rY  r  r  rZ  r  r  s   r(   InTableBodyPhaser'    s    G		-	7	O	J	<
		)	H	@	)	<	F 2&11U''(:,-F!	3
  #0///(*=>k"!#1
  !,r)   rC  c                      e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Z ej&                  dW  j(                  fde
fdefg      Zee_         ej&                  defdefdefdefg      Zee_        y)getPhases.<locals>.InRowPhasec                 b   | j                   j                  d   j                  dvr| j                  j	                  dd| j                   j                  d   j                  i       | j                   j                  j                          | j                   j                  d   j                  dvry y )Nr   )r   r   z'unexpected-implied-end-tag-in-table-rowrN   )rH   r   rN   rR   r   r  rn   s    r(   clearStackToTableRowContextz9getPhases.<locals>.InRowPhase.clearStackToTableRowContextO  s    ))((,11G&&'P(.		0F0Fr0J0O0O'PR		&&**, ))((,11Gr)   c                 >    | j                   j                  dd       S )Nr   r   r  r  rn   s    r(   ignoreEndTagTrz,getPhases.<locals>.InRowPhase.ignoreEndTagTrU  s    yy//g/FFFr)   c                 R    | j                   j                  d   j                          y r!  r  rn   s    r(   r   z(getPhases.<locals>.InRowPhase.processEOFY  r+  r)   c                 R    | j                   j                  d   j                  |      S r!  r  r   s     r(   r   z4getPhases.<locals>.InRowPhase.processSpaceCharacters\  r-  r)   c                 R    | j                   j                  d   j                  |      S r!  r  r   s     r(   r   z/getPhases.<locals>.InRowPhase.processCharacters_  r/  r)   c                     | j                          | j                  j                  |       | j                  j                  d   | j                  _        | j                  j                  j                  t               y )Nr   )	rG  rH   r   rR   rK   rh   r  r   r   r   s     r(   r3  z/getPhases.<locals>.InRowPhase.startTagTableCellb  sS    ,,.II##E* $ 2 28 <DKKII..55f=r)   c                 `    | j                         }| j                  t        d             |s|S y Nr   rI  endTagTrr7  r  s      r(   r8  z0getPhases.<locals>.InRowPhase.startTagTableOtherh  s.    ..0LMM/$/0  r)   c                 R    | j                   j                  d   j                  |      S r!  rN  r   s     r(   rT  z+getPhases.<locals>.InRowPhase.startTagOthero  r:  r)   c                 B   | j                         s]| j                          | j                  j                  j	                          | j
                  j                  d   | j
                  _        y | j
                  j                  sJ | j
                  j                          y r  )
rI  rG  rH   r   r  rR   rK   rh   rZ   r   r   s     r(   rQ  z&getPhases.<locals>.InRowPhase.endTagTrr  sp    &&(002		&&**,$(KK$6$6}$E! {{,,,,&&(r)   c                 `    | j                         }| j                  t        d             |s|S y rO  rP  r  s      r(   r  z)getPhases.<locals>.InRowPhase.endTagTable|  s0    ..0LMM/$/0    r)   c                     | j                   j                  |d   d      r| j                  t        d             |S | j                  j                          y )NrN   r   r  r   )rH   r  rQ  r7  rR   r   r   s     r(   r7  z1getPhases.<locals>.InRowPhase.endTagTableRowGroup  sC    yy''fw'God34&&(r)   c                 F    | j                   j                  dd|d   i       y )Nzunexpected-end-tag-in-table-rowrN   r  r   s     r(   r  z*getPhases.<locals>.InRowPhase.endTagIgnore  s#    KK""#D$*E&M#:<r)   c                 R    | j                   j                  d   j                  |      S r!  r  r   s     r(   rX  z)getPhases.<locals>.InRowPhase.endTagOther  rA  r)   r   rB  )r   r  r   r   r   r   r   r   r   r  )r   r   r  r   r   r   r   N)r?   r@   rA   r1  r  rG  rI  r   r   r   r3  r8  rT  rQ  r  r7  r  rX  r   rY  r  r  rZ  r  r  s   r(   
InRowPhaserE  J  s    G		-	G	7	O	J	>		H	)		)	<	F 2&11U''(,-')3
  #0///8k"(*=>G	1
  !,r)   rX  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Z ej                  d
W  j                   fdefg      Ze	e_         ej                  de
fdefdefg      Zee_        y)getPhases.<locals>.InCellPhasec                     | j                   j                  dd      r| j                  t        d             y | j                   j                  dd      r| j                  t        d             y y Nr   r   r  r   )rH   r  endTagTableCellr7  rn   s    r(   	closeCellz(getPhases.<locals>.InCellPhase.closeCell  s\    yy''g'>$$_T%:;))$)@$$_T%:; Ar)   c                 R    | j                   j                  d   j                          y rM  r  rn   s    r(   r   z)getPhases.<locals>.InCellPhase.processEOF  r   r)   c                 R    | j                   j                  d   j                  |      S rM  r  r   s     r(   r   z0getPhases.<locals>.InCellPhase.processCharacters  r  r)   c                     | j                   j                  dd      s| j                   j                  dd      r| j                          |S | j                  j                  sJ | j                  j                          y r\  )rH   r  r^  rR   rZ   r   r   s     r(   r8  z1getPhases.<locals>.InCellPhase.startTagTableOther  sd    		((w(?II,,T7,C  {{,,,,&&(r)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   rT  z,getPhases.<locals>.InCellPhase.startTagOther  rO  r)   c                    | j                   j                  |d   d      r| j                   j                  |d          | j                   j                  d   j                  |d   k7  rZ| j
                  j                  dd|d   i       	 | j                   j                  j                         }|j                  |d   k(  rn%8| j                   j                  j                          | j                   j                          | j
                  j                  d   | j
                  _
        y | j
                  j                  dd|d   i       y )NrN   r   r  r   zunexpected-cell-end-tagr   r  )rH   r  rH  r   rN   rR   r   r  r  rK   rh   r  s      r(   r]  z.getPhases.<locals>.InCellPhase.endTagTableCell  s
   yy''fw'G		00v?99))"-22eFmCKK**+D,2E&M+BD#yy5599;99f5! 
 II**..0		779$(KK$6$6w$?!&&';feFm=TUr)   c                 F    | j                   j                  dd|d   i       y r  r  r   s     r(   r  z+getPhases.<locals>.InCellPhase.endTagIgnore  r  r)   c                     | j                   j                  |d   d      r| j                          |S | j                  j	                          y )NrN   r   r  )rH   r  r^  rR   r   r   s     r(   endTagImplyz*getPhases.<locals>.InCellPhase.endTagImply  s>    yy''fw'G  &&(r)   c                 R    | j                   j                  d   j                  |      S rM  r  r   s     r(   rX  z*getPhases.<locals>.InCellPhase.endTagOther  r  r)   r   r  rB  )r   r   r  r   r   ro  N)r?   r@   rA   r1  r  r^  r   r   r8  rT  r]  r  rf  rX  r   rY  r  r  rZ  r  r  s   r(   InCellPhaserZ    s    G		<	6	I	)	G	V"	R	)	E 2&11U''(023
 
 #0///?+;\J7E1
 
 !,r)   rh  c            	          e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Z ej$                  dW  j&                  fdefdefde	fde
fdefg      Zee_         ej$                  defdefdefg      Zee_        y) getPhases.<locals>.InSelectPhasec                     | j                   j                  d   j                  dk7  r| j                  j	                  d       y | j                  j
                  sJ y )Nr   r   zeof-in-selectr  rn   s    r(   r   z+getPhases.<locals>.InSelectPhase.processEOF  sD    yy%%b)..&8&&7{{,,,,r)   c                 R    |d   dk(  ry | j                   j                  |d          y r  r  r   s     r(   r   z2getPhases.<locals>.InSelectPhase.processCharacters  s'    V}(II  v/r)   c                     | j                   j                  d   j                  dk(  r$| j                   j                  j                          | j                   j	                  |       y r@  rH   r   rN   r  r   r   s     r(   startTagOptionz/getPhases.<locals>.InSelectPhase.startTagOption  sG    yy%%b)..(:		&&**,II##E*r)   c                 b   | j                   j                  d   j                  dk(  r$| j                   j                  j                          | j                   j                  d   j                  dk(  r$| j                   j                  j                          | j                   j	                  |       y )Nr   rA  rT  rn  r   s     r(   startTagOptgroupz1getPhases.<locals>.InSelectPhase.startTagOptgroup	  sz    yy%%b)..(:		&&**,yy%%b)..*<		&&**,II##E*r)   c                 n    | j                   j                  d       | j                  t        d             y )Nzunexpected-select-in-selectr   )rR   r   endTagSelectr7  r   s     r(   rE  z/getPhases.<locals>.InSelectPhase.startTagSelect	  s(    KK""#@Aoh78r)   c                     | j                   j                  d       | j                  j                  dd      r| j	                  t        d             |S | j                   j                  sJ y )Nzunexpected-input-in-selectr   r  )rR   r   rH   r  rs  r7  rZ   r   s     r(   r   z.getPhases.<locals>.InSelectPhase.startTagInput	  sW    KK""#?@yy''('C!!/(";<{{,,,,r)   c                 R    | j                   j                  d   j                  |      S r  rN  r   s     r(   r  z/getPhases.<locals>.InSelectPhase.startTagScript	  rO  r)   c                 F    | j                   j                  dd|d   i       y )Nzunexpected-start-tag-in-selectrN   r  r   s     r(   rT  z.getPhases.<locals>.InSelectPhase.startTagOther	  #    KK""#C$*E&M#:<r)   c                     | j                   j                  d   j                  dk(  r%| j                   j                  j                          y | j                  j                  dddi       y )Nr   rA  unexpected-end-tag-in-selectrN   rH   r   rN   r  rR   r   r   s     r(   endTagOptionz-getPhases.<locals>.InSelectPhase.endTagOption	  sR    yy%%b)..(:		&&**,&&'E(.'9;r)   c                    | j                   j                  d   j                  dk(  rJ| j                   j                  d   j                  dk(  r$| j                   j                  j                          | j                   j                  d   j                  dk(  r%| j                   j                  j                          y | j                  j                  dddi       y )Nr   rA  rT  ry  rN   rz  r   s     r(   endTagOptgroupz/getPhases.<locals>.InSelectPhase.endTagOptgroup%	  s    		&&r*//8;II**2.33zA		&&**,yy%%b)..*<		&&**, &&'E(.
';=r)   c                    | j                   j                  dd      r| j                   j                  j                         }|j                  dk7  r4| j                   j                  j                         }|j                  dk7  r4| j
                  j                          y | j
                  j                  sJ | j
                  j                          y )Nr   r  )	rH   r  r   r  rN   rR   rj   rZ   r   r  s      r(   rs  z-getPhases.<locals>.InSelectPhase.endTagSelect2	  s    yy''('Cyy--113ii8+9911557D ii8+..0 {{,,,,&&(r)   c                 F    | j                   j                  dd|d   i       y )Nry  rN   r  r   s     r(   rX  z,getPhases.<locals>.InSelectPhase.endTagOther=	  #    KK""#A$*E&M#:<r)   r   rA  rT  r   )r4  r  r  r  N)r?   r@   rA   r1  r  r   r   ro  rq  rE  r   r  rT  r{  r~  rs  rX  r   rY  r  r  rZ  r  r  s   r(   InSelectPhaserj    s    G		-	0
	+	+	9	-	G	<	;	=		)	< 2&11U''(~&)*~&,m<~&3
  #0///|$(|$1
 
 !,r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
 ej                  defg      Zee_         ej                  de	fg      Ze
e_        y)	'getPhases.<locals>.InSelectInTablePhasec                 R    | j                   j                  d   j                          y Nr   r  rn   s    r(   r   z2getPhases.<locals>.InSelectInTablePhase.processEOFU	  s    KKz*557r)   c                 R    | j                   j                  d   j                  |      S r  r  r   s     r(   r   z9getPhases.<locals>.InSelectInTablePhase.processCharactersX	  s"    ;;%%j1CCEJJr)   c                 |    | j                   j                  dd|d   i       | j                  t        d             |S )Nz5unexpected-table-element-start-tag-in-select-in-tablerN   r   )rR   r   rX  r7  r   s     r(   r  z5getPhases.<locals>.InSelectInTablePhase.startTagTable[	  s<    KK""#Z]cejkqer\st_X67Lr)   c                 R    | j                   j                  d   j                  |      S r  rN  r   s     r(   rT  z5getPhases.<locals>.InSelectInTablePhase.startTagOther`	  s"    ;;%%j1AA%HHr)   c                     | j                   j                  dd|d   i       | j                  j                  |d   d      r| j	                  t        d             |S y )Nz3unexpected-table-element-end-tag-in-select-in-tablerN   r   r  r   )rR   r   rH   r  rX  r7  r   s     r(   r  z3getPhases.<locals>.InSelectInTablePhase.endTagTablec	  s]    KK""#X[achiocpZqryy''fw'G  !:; Hr)   c                 R    | j                   j                  d   j                  |      S r  r  r   s     r(   rX  z3getPhases.<locals>.InSelectInTablePhase.endTagOtheri	  s"    ;;%%j1??FFr)   )r   r   r   r   r   r   r   r   N)r?   r@   rA   r1  r  r   r   r  rT  r  rX  r   rY  r  rZ  r  r   r)   r(   InSelectInTablePhaser  R	  s    G		8	K	
	I		G 2&11N3
  #0///N1
  !,r)   r  c                   L    e Zd Z e       Z eg d      Zd Z fdZd Z	d Z
y)(getPhases.<locals>.InForeignContentPhase),r  r  r  r   rA  r  r  r  r   r  r  r  r  h1h2h3h4h5h6r   r0  r  r'  r  r  r  r8   r  r  r'   r  rG  r  r  spanr  r  subsupr   r  r  r  varc                    i ddddddddd	d
dddddddddddddddddddddd d!d"i d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdG}|dH   |v r||dH      |dH<   y y )INaltglyphaltGlyphaltglyphdefaltGlyphDefaltglyphitemaltGlyphItemanimatecoloranimateColoranimatemotionanimateMotionanimatetransformanimateTransformclippathclipPathfeblendfeBlendfecolormatrixfeColorMatrixfecomponenttransferfeComponentTransferfecompositefeCompositefeconvolvematrixfeConvolveMatrixfediffuselightingfeDiffuseLightingfedisplacementmapfeDisplacementMapfedistantlightfeDistantLightfefloodfeFloodfefuncafeFuncAfefuncbfeFuncBfefuncgfeFuncGfefuncrfeFuncRfegaussianblurfeGaussianBlurfeimagefeImagefemergefeMergefemergenodefeMergeNodefemorphologyfeMorphologyfeoffsetfeOffsetfepointlightfePointLightfespecularlightingfeSpecularLightingfespotlightfeSpotLightfetilefeTilefeturbulencefeTurbulenceforeignobjectforeignObjectglyphrefglyphReflineargradientlinearGradientradialGradienttextPath)radialgradienttextpathrN   r   )rL   r   replacementss      r(   adjustSVGTagNamesz:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNames	  s   #4J
 #4)=#4*N#4 +N#4 ,_	#4
 /0B#4 '
#4 &y#4 ,_#4 23H#4 *=#4 /0B#4 01D#4 01D#4 -.>#4 &y#4  &y!#4" &y##4$ &y%#4& &y'#4( -.>)#4* &y+#4, &y-#4. *=/#40 +N1#42 '
3#44 +N5#46 12F7#48 *=9#4: %h;#4< +N=#4> ,_?#4@ '
A#4B -.>C#4D /?(2G#4LJ V}, ,U6] ;f -r)   c                     |d   dk(  rd|d<   n<| j                   j                  r&t        d |d   D              rd| j                   _        j                  | |       y )Nr   r  u   �c              3   ,   K   | ]  }|t         v  y wr1   )r   ).0r  s     r(   	<genexpr>zMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>	  s     Ldd/1Ls   F)rR   rm   r  r   )rL   r   r  s     r(   r   z:getPhases.<locals>.InForeignContentPhase.processCharacters	  sS    V}( (f++((LeFmLL).&##D%0r)   c                    | j                   j                  d   }|d   | j                  v s+|d   dk(  rt        |d   j	                               h dz  r| j
                  j                  dd|d   i       | j                   j                  d   j                  | j                   j                  k7  r'| j
                  j                  | j                   j                  d         s| j
                  j                  | j                   j                  d         s| j                   j                  j                          | j                   j                  d   j                  | j                   j                  k7  re| j
                  j                  | j                   j                  d         s3| j
                  j                  | j                   j                  d         s|S |j                  t        d   k(  r| j
                  j                  |       nB|j                  t        d   k(  r,| j                  |       | j
                  j                  |       | j
                  j!                  |       |j                  |d	<   | j                   j#                  |       |d
   r*| j                   j                  j                          d|d<   y y )Nr   rN   r  r   >   facesizecolorz*unexpected-html-element-in-foreign-contentru   r   rw   r   Tr   )rH   r   breakoutElementssetkeysrR   r   rw   r   r|   r~   r  r   r   r  r   r   r   )rL   r   r   s      r(   r   z8getPhases.<locals>.InForeignContentPhase.processStartTag	  s&   ))004Kf!6!66v&(U6]'')*-FF&&'S(.f'>@yy--b1;;yy112;;==dii>T>TUW>XY;;CCDIIDZDZ[]D^_II**..0	 yy--b1;;yy112;;==dii>T>TUW>XY;;CCDIIDZDZ[]D^_ ((Jx,@@KK66u= **j.??**51KK33E:33E:%0%:%:k"		''.'II**..07;E34 (r)   c                    t        | j                  j                        dz
  }| j                  j                  d   }|j                  j	                  t
              |d   k7  r!| j                  j                  dd|d   i       	 |j                  j	                  t
              |d   k(  r| j                  j                  | j                  j                  d   k(  rS| j                  j                  j                          | j                  j                  j                  | j                  _        | j                  j                  j                         |k7  r@| j                  j                  sJ | j                  j                  j                         |k7  r@d }	 |S |dz  }| j                  j                  |   }|j                  | j                  j                  k7  rX| j                  j                  j                  |      }	 |S )Nr   r   rN   r  r  )r   rH   r   rN   ry   r   rR   r   rh   rK   r  r   r  rw   r   r   )rL   r   	nodeIndexr   r   s        r(   r   z6getPhases.<locals>.InForeignContentPhase.processEndTag	  s   DII223a7I99))"-Dyy""#34fE&&';feFm=TU99&&'78E&MI{{((DKK,>,>},MM))99;,0KK,=,=,K,K)))00446$>#yy5555 ))00446$> $I  Q	yy--i8>>TYY%?%?? $ 1 1 ? ? FIr)   N)r?   r@   rA   r1  r  r   r  r  r   r   r   r  s   r(   InForeignContentPhaser  x	  s1    G	$ &G H'	<R	1	<6	r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Z ej                  defg      Ze	e_         ej                  de
fg      Zee_        y	)
!getPhases.<locals>.AfterBodyPhasec                      y r1   r   rn   s    r(   r   z,getPhases.<locals>.AfterBodyPhase.processEOF	      r)   c                 j    | j                   j                  || j                   j                  d          y )Nr   r   r   s     r(   r   z0getPhases.<locals>.AfterBodyPhase.processComment	  s'     II##E499+A+A!+DEr)   c                     | j                   j                  d       | j                   j                  d   | j                   _        |S )Nzunexpected-char-after-bodyr   rR   r   rK   rh   r   s     r(   r   z3getPhases.<locals>.AfterBodyPhase.processCharacters	  s5    KK""#?@ $ 2 28 <DKKLr)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   r  z.getPhases.<locals>.AfterBodyPhase.startTagHtml	  rO  r)   c                     | j                   j                  dd|d   i       | j                   j                  d   | j                   _        |S )Nzunexpected-start-tag-after-bodyrN   r   r  r   s     r(   rT  z/getPhases.<locals>.AfterBodyPhase.startTagOther	  sC    KK""#D$*E&M#:< $ 2 28 <DKKLr)   c                     | j                   j                  r| j                   j                  d       y | j                   j                  d   | j                   _        y )Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rR   rZ   r   rK   rh   )rL   rN   s     r(   r^  z,getPhases.<locals>.AfterBodyPhase.endTagHtml
  s>    {{$$&&'PQ$(KK$6$67G$H!r)   c                     | j                   j                  dd|d   i       | j                   j                  d   | j                   _        |S )Nzunexpected-end-tag-after-bodyrN   r   r  r   s     r(   rX  z-getPhases.<locals>.AfterBodyPhase.endTagOther

  sC    KK""#B$*E&M#:< $ 2 28 <DKKLr)   r   N)r?   r@   rA   r1  r  r   r   r   r  rT  r^  rX  r   rY  r  rZ  r  r   r)   r(   AfterBodyPhaser  	  s|    G			F
	
	G		I	 2&11\"3
  #0///&*1E0FG +r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Z ej                  d	W  j                  fd
efdefde	fg      Ze
e_         ej                  d
efg      Zee_        y)"getPhases.<locals>.InFramesetPhasec                     | j                   j                  d   j                  dk7  r| j                  j	                  d       y | j                  j
                  sJ y )Nr   r   zeof-in-framesetr  rn   s    r(   r   z-getPhases.<locals>.InFramesetPhase.processEOF
  sE    yy%%b)..&8&&'89{{,,,,r)   c                 :    | j                   j                  d       y )Nzunexpected-char-in-framesetr  r   s     r(   r   z4getPhases.<locals>.InFramesetPhase.processCharacters"
  s    KK""#@Ar)   c                 :    | j                   j                  |       y r1   )rH   r   r   s     r(   r  z3getPhases.<locals>.InFramesetPhase.startTagFrameset%
  s    II##E*r)   c                     | j                   j                  |       | j                   j                  j                          y r1   rg  r   s     r(   startTagFramez0getPhases.<locals>.InFramesetPhase.startTagFrame(
  s*    II##E*II""&&(r)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   startTagNoframesz3getPhases.<locals>.InFramesetPhase.startTagNoframes,
  rO  r)   c                 F    | j                   j                  dd|d   i       y )Nz unexpected-start-tag-in-framesetrN   r  r   s     r(   rT  z0getPhases.<locals>.InFramesetPhase.startTagOther/
  r?  r)   c                    | j                   j                  d   j                  dk(  r| j                  j	                  d       n$| j                   j                  j                          | j                  j                  sP| j                   j                  d   j                  dk7  r)| j                  j                  d   | j                  _        y y y )Nr   r   z)unexpected-frameset-in-frameset-innerhtmlr   afterFrameset)	rH   r   rN   rR   r   r  rZ   rK   rh   r   s     r(   endTagFramesetz1getPhases.<locals>.InFramesetPhase.endTagFrameset3
  s    yy%%b)..&8&&'RS		&&**,KK))II**2.33zA %)KK$6$6$G! B *r)   c                 F    | j                   j                  dd|d   i       y )Nzunexpected-end-tag-in-framesetrN   r  r   s     r(   rX  z.getPhases.<locals>.InFramesetPhase.endTagOther?
  rw  r)   r   r   r  r  N)r?   r@   rA   r1  r  r   r   r  r  r  rT  r  rX  r   rY  r  r  rZ  r  r  s   r(   InFramesetPhaser   
  s    G		-	B	+	)	G	<
	H	< 2&11U''()*m$)*	3
  #0///(1
  !,r)   r  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
 ej                  dW  j                  fdefg      Zee_         ej                  de	fg      Ze
e_        y	)
%getPhases.<locals>.AfterFramesetPhasec                      y r1   r   rn   s    r(   r   z0getPhases.<locals>.AfterFramesetPhase.processEOFT
  r  r)   c                 :    | j                   j                  d       y )Nzunexpected-char-after-framesetr  r   s     r(   r   z7getPhases.<locals>.AfterFramesetPhase.processCharactersX
  s    KK""#CDr)   c                 R    | j                   j                  d   j                  |      S r  rN  r   s     r(   r  z6getPhases.<locals>.AfterFramesetPhase.startTagNoframes[
  rO  r)   c                 F    | j                   j                  dd|d   i       y )Nz#unexpected-start-tag-after-framesetrN   r  r   s     r(   rT  z3getPhases.<locals>.AfterFramesetPhase.startTagOther^
  s#    KK""#H$*E&M#:<r)   c                 T    | j                   j                  d   | j                   _        y )NafterAfterFrameset)rR   rK   rh   r   s     r(   r^  z0getPhases.<locals>.AfterFramesetPhase.endTagHtmlb
  s     $ 2 23G HDKKr)   c                 F    | j                   j                  dd|d   i       y )Nz!unexpected-end-tag-after-framesetrN   r  r   s     r(   rX  z1getPhases.<locals>.AfterFramesetPhase.endTagOthere
  s#    KK""#F$*E&M#:<r)   r   r  N)r?   r@   rA   r1  r  r   r   r  rT  r^  rX  r   rY  r  r  rZ  r  r  s   r(   AfterFramesetPhaser  P
  s    G			E	G	<	I	< 2&11U''()*3
  #0///Z 1
  !,r)   r  c                   |    e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Z ej                  de	fg      Ze
e_        y	)
&getPhases.<locals>.AfterAfterBodyPhasec                      y r1   r   rn   s    r(   r   z1getPhases.<locals>.AfterAfterBodyPhase.processEOFw
  r  r)   c                 d    | j                   j                  || j                   j                         y r1   r   r   s     r(   r   z5getPhases.<locals>.AfterAfterBodyPhase.processCommentz
  r"  r)   c                 R    | j                   j                  d   j                  |      S rM  r  r   s     r(   r   z=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharacters}
  r  r)   c                     | j                   j                  d       | j                   j                  d   | j                   _        |S )Nexpected-eof-but-got-charr   r  r   s     r(   r   z8getPhases.<locals>.AfterAfterBodyPhase.processCharacters
  s5    KK""#>? $ 2 28 <DKKLr)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   r  z3getPhases.<locals>.AfterAfterBodyPhase.startTagHtml
  rO  r)   c                     | j                   j                  dd|d   i       | j                   j                  d   | j                   _        |S )Nexpected-eof-but-got-start-tagrN   r   r  r   s     r(   rT  z4getPhases.<locals>.AfterAfterBodyPhase.startTagOther
  sC    KK""#C$*E&M#:< $ 2 28 <DKKLr)   c                     | j                   j                  dd|d   i       | j                   j                  d   | j                   _        |S )Nexpected-eof-but-got-end-tagrN   r   r  r   s     r(   r   z4getPhases.<locals>.AfterAfterBodyPhase.processEndTag
  sC    KK""#A$*E&M#:< $ 2 28 <DKKLr)   r   N)r?   r@   rA   r1  r  r   r   r   r   r  rT  r   r   rY  r  rZ  r   r)   r(   AfterAfterBodyPhaser  t
  sY    G			?	N	
	G		 2&11\"3
  #0r)   r$  c                       e Zd Z e       Zd Zd Zd Zd Zd Z	d Z
d Zd Z ej                  d	e	fd
e
fg      Zee_        y)*getPhases.<locals>.AfterAfterFramesetPhasec                      y r1   r   rn   s    r(   r   z5getPhases.<locals>.AfterAfterFramesetPhase.processEOF
  r  r)   c                 d    | j                   j                  || j                   j                         y r1   r   r   s     r(   r   z9getPhases.<locals>.AfterAfterFramesetPhase.processComment
  r"  r)   c                 R    | j                   j                  d   j                  |      S rM  r  r   s     r(   r   zAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharacters
  r  r)   c                 :    | j                   j                  d       y )Nr  r  r   s     r(   r   z<getPhases.<locals>.AfterAfterFramesetPhase.processCharacters
  s    KK""#>?r)   c                 R    | j                   j                  d   j                  |      S rM  rN  r   s     r(   r  z7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtml
  rO  r)   c                 R    | j                   j                  d   j                  |      S r  rN  r   s     r(   startTagNoFramesz;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFrames
  rO  r)   c                 F    | j                   j                  dd|d   i       y )Nr!  rN   r  r   s     r(   rT  z8getPhases.<locals>.AfterAfterFramesetPhase.startTagOther
  rw  r)   c                 F    | j                   j                  dd|d   i       y )Nr#  rN   r  r   s     r(   r   z8getPhases.<locals>.AfterAfterFramesetPhase.processEndTag
  r  r)   r   r  N)r?   r@   rA   r1  r  r   r   r   r   r  r-  rT  r   r   rY  r  rZ  r   r)   r(   AfterAfterFramesetPhaser&  
  si    G			?	N	@	G	G	<	< 2&11\")*3
  #0r)   r0  r_   r^   r   rQ  r{  r  r   r   r   r  r   r   r   r   r   r   rD  )r   r[  r   r
  r  r  r   )rM   ra   r   r2  rB  r[  r  r  r  r  r  r  r%  rC  rX  rh  r  r  r  r  r  r  r$  r0  r  r  r  s                           @@@r(   rJ   rJ     sT   *F,uc2 FP@u @D#% #J+,% +,Zd,e d,L=,e =,~@, @,DR,e R,h,E ,BO,u O,b-5 -^D, D,L>,U >,@`,5 `,DW,U W,rJ,e J,Xa, a,F$,u $,Lp pd,, ,,\6,% 6,p",U ",H#0e #0J!0% !0J<o 	o 	+	
 	- 	^ 	+ 		 	< 	' 	^ 	+ 	' 	 	+  	M!" 	/#$ 2#%+-5/ r)   c                     t        | d         t              z  }|r2 t        | d         fd| d   j                         D              | d<   y y )Nr   c              3   L   K   | ]  \  }}j                  ||      |f  y wr1   )r   )r  kvr  s      r(   r  z$adjust_attributes.<locals>.<genexpr>
  s1      ,O041 .:-=-=a-CQ,G ,Os   !$)r   r6   r2   )r   r  needs_adjustments    ` r(   r   r   
  sZ    f.,1GG+U6]+ ,O8=f8K8K8M,O Of r)   c                 &    |i }t         |   | ||dS )N)r6   rN   r   r   )r   )rN   r6   rx   r   s       r(   r7  r7  
  s&    
t$dJ&( (r)   c                       e Zd ZdZy)r   zError in parsed documentN)r?   r@   rA   r   r   r)   r(   r   r   
  s    "r)   r   )rF   T)r   rF   T)r   NF)+
__future__r   r   r   bleach.six_shimr   r4   r'  r   r	   r
   treebuilders.baser   r   	constantsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r,   rC   r  r!   memoizerJ   r   r7  	Exceptionr   r   r)   r(   <module>r>     s    B B $     % 
 
 
 
 
".?2	s) s)l	 J% J%ZJO 59 %(	 	r)   