403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc
3

�N�a���@sddlmZmZmZddlmZmZddlZddlm	Z	ddlm
Z
ddlmZddlm
Z
dd	lmZdd
lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z d d
d�Z!d!dd�Z"dd�Z#Gdd�de$�Z%ej&dd��Z'dd�Z(d"dd�Z)Gdd�de*�Z+dS)#�)�absolute_import�division�unicode_literals)�with_metaclass�viewkeysN�)�_inputstream)�
_tokenizer)�treebuilders)�Marker)�_utils)�spaceCharacters�asciiUpper2Lower�specialElements�headingElements�
cdataElements�rcdataElements�
tokenTypes�
tagTokenTypes�
namespaces�htmlIntegrationPointElements�"mathmlTextIntegrationPointElements�adjustForeignAttributes�adjustMathMLAttributes�adjustSVGAttributes�E�_ReparseException�etreeTcKs$tj|�}t||d�}|j|f|�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�p�r'�!/usr/lib/python3.6/html5parser.pyr!s
r!�divcKs,tj|�}t||d�}|j|fd|i|��S)a#Parse an HTML fragment as a string or file-like object into a tree

    :arg doc: the fragment to parse as a string or file-like object

    :arg container: the container context to parse the fragment in

    :arg treebuilder: the treebuilder to use when parsing

    :arg namespaceHTMLElements: whether or not to namespace HTML elements

    :returns: parsed tree

    Example:

    >>> from html5lib.html5libparser import parseFragment
    >>> parseFragment('<b>this is a fragment</b>')
    <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

    )r�	container)r
rr �
parseFragment)r"r*r#rr$r%r&r'r'r(r+1s
r+csG�fdd�dt�}|S)NcseZdZ�fdd�ZdS)z-method_decorator_metaclass.<locals>.DecoratedcsBx0|j�D]$\}}t|tj�r&�|�}|||<q
Wtj||||�S)N)�items�
isinstance�types�FunctionType�type�__new__)�metaZ	classname�basesZ	classDictZ
attributeNameZ	attribute)�functionr'r(r1Ls
z5method_decorator_metaclass.<locals>.Decorated.__new__N)�__name__�
__module__�__qualname__r1r')r4r'r(�	DecoratedKsr8)r0)r4r8r')r4r(�method_decorator_metaclassJsr9c@s�eZdZdZd'dd�Zd(dd	�Zd
d�Zedd
��Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
d)dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�ZdS)*r z]HTML parser

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

    NFTcsH|�_|dkrtjd�}||��_g�_�fdd�t|�j�D��_dS)a�
        :arg tree: a treebuilder class controlling the type of tree that will be
            returned. Built in treebuilders can be accessed through
            html5lib.treebuilders.getTreeBuilder(treeType)

        :arg strict: raise an exception when a parse error is encountered

        :arg namespaceHTMLElements: whether or not to namespace HTML elements

        :arg debug: whether or not to enable debug mode which logs things

        Example:

        >>> from html5lib.html5parser import HTMLParser
        >>> parser = HTMLParser()                     # generates parser with etree builder
        >>> parser = HTMLParser('lxml', strict=True)  # generates parser with lxml builder which is strict

        Nrcsi|]\}}|��j�|�qSr')�tree)�.0�name�cls)�selfr'r(�
<dictcomp>ysz'HTMLParser.__init__.<locals>.<dictcomp>)�strictr
rr:�errors�	getPhasesr,�phases)r>r:r@r�debugr')r>r(�__init__]s


zHTMLParser.__init__r)cKsh||_||_||_tj|fd|i|��|_|j�y|j�Wn$tk
rb|j�|j�YnXdS)N�parser)	�
innerHTMLModer*�	scriptingr	Z
HTMLTokenizer�	tokenizer�reset�mainLoopr)r>�stream�	innerHTMLr*rHr$r'r'r(�_parse|szHTMLParser._parsecCs�|jj�d|_g|_g|_d|_|jr�|jj�|_	|j	t
krL|jj|j_
n0|j	tkrd|jj|j_
n|j	dkr||jj|j_
n|jd|_|jj�|j�nd|_	|jd|_d|_d|_d|_dS)NFz	no quirks�	plaintext�
beforeHtml�initialT)r:rJ�
firstStartTagrA�log�
compatModerGr*�lowerrMrrI�rcdataState�stater�rawtextState�plaintextStaterC�phase�insertHtmlElement�resetInsertionModeZ	lastPhaseZbeforeRCDataPhase�
framesetOK)r>r'r'r(rJ�s*





zHTMLParser.resetcCst|d�sdS|jjjdjS)z�Name of the character encoding that was used to decode the input stream, or
        :obj:`None` if that is not determined yet

        rINr)�hasattrrIrL�charEncodingr<)r>r'r'r(�documentEncoding�s
zHTMLParser.documentEncodingcCsJ|jdkr6|jtdkr6d|jko4|jdjt�dkS|j|jftkSdS)Nzannotation-xml�mathml�encoding�	text/html�application/xhtml+xml)rcrd)r<�	namespacer�
attributes�	translaterr)r>�elementr'r'r(�isHTMLIntegrationPoint�s


z!HTMLParser.isHTMLIntegrationPointcCs|j|jftkS)N)rer<r)r>rhr'r'r(�isMathMLTextIntegrationPoint�sz'HTMLParser.isMathMLTextIntegrationPointcCsxtd}td}td}td}td}td}td}�x�|jD�]�}d}	|}
�x�|
dk	�r�|
}	|jjrv|jjdnd}|r�|jnd}|r�|jnd}
|
d	}||kr�|j|
d
|
jdi��d}
qTt|jj�dk�sj||jj	k�sj|j
|��r||k�r|d
tddg�k�sj|||fk�sj|tdk�rN|
dk�rN||k�rN|d
dk�sj|j
|��rr||||fk�rr|j}n
|jd}||k�r�|j|
�}
qT||k�r�|j|
�}
qT||k�r�|j|
�}
qT||k�r�|j|
�}
qT||k�r�|j|
�}
qT||krT|j|
�}
qTW||krB|	drB|	drB|jdd
|	d
i�qBWd}g}x8|�rr|j|j�|jj�}|�r<|j|k�s<t��q<WdS)N�
CharactersZSpaceCharacters�StartTag�EndTag�CommentZDoctype�
ParseErrorrr0�data�datavarsrr<ZmglyphZ
malignmarkrazannotation-xml�svg�inForeignContent�selfClosing�selfClosingAcknowledgedz&non-void-element-with-trailing-solidusT���)rrIr:�openElementsrer<�
parseError�get�len�defaultNamespacerj�	frozensetrrirZrC�processCharacters�processSpaceCharacters�processStartTag�
processEndTag�processComment�processDoctype�append�
processEOF�AssertionError)r>ZCharactersTokenZSpaceCharactersTokenZ
StartTagTokenZEndTagTokenZCommentTokenZDoctypeTokenZParseErrorToken�tokenZ
prev_token�	new_token�currentNodeZcurrentNodeNamespaceZcurrentNodeNamer0rZZ	reprocessrCr'r'r(rK�sp










zHTMLParser.mainLoopcOs |j|ddf|�|�|jj�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)rNr:ZgetDocument)r>rL�argsr$r'r'r(r!szHTMLParser.parsecOs|j|df|�|�|jj�S)aZParse a HTML fragment into a well-formed tree fragment

        :arg container: name of the element we're setting the innerHTML
            property if set to None, default to 'div'

        :arg stream: a file-like object or string containing the HTML to be parsed

            The optional encoding parameter must be a string that indicates
            the encoding.  If specified, that encoding will be used,
            regardless of any BOM or later declaration (such as in a meta
            element)

        :arg scripting: treat noscript elements as if JavaScript was turned on

        :returns: parsed tree

        Example:

        >>> from html5lib.html5libparser import HTMLParser
        >>> parser = HTMLParser()
        >>> parser.parseFragment('<b>this is a fragment</b>')
        <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

        T)rNr:ZgetFragment)r>rLr�r$r'r'r(r+szHTMLParser.parseFragment�XXX-undefined-errorcCs@|dkri}|jj|jjj�||f�|jr<tt||��dS)N)rAr�rIrLZpositionr@ror)r>�	errorcoderqr'r'r(rx;s
zHTMLParser.parseErrorcCst|t�dS)N)�adjust_attributesr)r>r�r'r'r(rCsz!HTMLParser.adjustMathMLAttributescCst|t�dS)N)r�r)r>r�r'r'r(rFszHTMLParser.adjustSVGAttributescCst|t�dS)N)r��adjustForeignAttributesMap)r>r�r'r'r(rIsz"HTMLParser.adjustForeignAttributescCs|jj�dS)N)rFrZ)r>r�r'r'r(�reparseTokenNormalLszHTMLParser.reparseTokenNormalcCs�d}ddddddddddd	d	d
dd�}x�|jjddd�D]�}|j}d}||jjdkrl|jsbt�d}|j}|dkr~|js~t�|r�|j|jjkr�q:||kr�|j||}Pq:|r:|jd	}Pq:W||_dS)NF�inSelect�inCell�inRow�inTableBody�	inCaption�
inColumnGroup�inTable�inBody�
inFrameset�
beforeHead)�select�td�th�tr�tbody�thead�tfoot�caption�colgroup�table�head�body�frameset�htmlrrTr�r�r�r�rv)r�r�r�r�)	r:rwr<rMr�rer{rCrZ)r>ZlastZnewModes�nodeZnodeNameZ	new_phaser'r'r(r\PsB


zHTMLParser.resetInsertionModecCsR|dkst�|jj|�|dkr.|jj|j_n|jj|j_|j|_|j	d|_dS)N�RAWTEXT�RCDATA�text)r�r�)
r�r:�
insertElementrIrXrWrVrZ�
originalPhaserC)r>r�ZcontentTyper'r'r(�parseRCDataRawtext|szHTMLParser.parseRCDataRawtext)NFTF)Fr)F)r�N)r5r6r7�__doc__rErNrJ�propertyr`rirjrKr!r+rxrrrr�r\r�r'r'r'r(r Vs"

"

C
,r csdd�}dd�}Gdd�dt|||����Gdd�d��}Gd	d
�d
��}Gdd�d��}Gd
d�d��}Gdd�d��}Gdd�d��}G��fdd�d���Gdd�d��}	G�fdd�d��}
G�fdd�d���G�fdd�d��}G�fdd�d��}G�fdd �d ��}
G�fd!d"�d"��}G�fd#d$�d$��}G�fd%d&�d&��}Gd'd(�d(��}G�fd)d*�d*��}Gd+d,�d,��}G�fd-d.�d.��}G�fd/d0�d0��}Gd1d2�d2��}Gd3d4�d4��}||||||�|	|
�|||
||||||||||d5�S)6Ncs$dd�tj�D����fdd�}|S)z4Logger that records which phase processes each tokencSsi|]\}}||�qSr'r')r;�key�valuer'r'r(r?�sz*getPhases.<locals>.log.<locals>.<dictcomp>cs��jjd�r�t|�dkr�|d}d�|di}|dtkrH|d|d<|jjj|jjjj|jj	j
j|j
j�j|f��|f|�|�S�|f|�|�SdS)NZprocessrr0r<)r5�
startswithrzrrFrSr�rIrWrZ�	__class__)r>r�r$r��info)r4�
type_namesr'r(�wrapped�s
z'getPhases.<locals>.log.<locals>.wrapped)rr,)r4r�r')r4r�r(rS�szgetPhases.<locals>.logcSs|rt|�StSdS)N)r9r0)Z
use_metaclassZmetaclass_funcr'r'r(�getMetaclass�szgetPhases.<locals>.getMetaclassc@s\eZdZdZdZdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dS)zgetPhases.<locals>.PhasezNBase class for helper object that implements each phase of processing
        rFr:�__startTagCache�
__endTagCachecSs||_||_i|_i|_dS)N)rFr:�_Phase__startTagCache�_Phase__endTagCache)r>rFr:r'r'r(rE�sz!getPhases.<locals>.Phase.__init__cSst�dS)N)�NotImplementedError)r>r'r'r(r��sz#getPhases.<locals>.Phase.processEOFcSs|jj||jjd�dS)Nrrv)r:�
insertCommentrw)r>r�r'r'r(r��sz'getPhases.<locals>.Phase.processCommentcSs|jjd�dS)Nzunexpected-doctype)rFrx)r>r�r'r'r(r��sz'getPhases.<locals>.Phase.processDoctypecSs|jj|d�dS)Nrp)r:�
insertText)r>r�r'r'r(r}�sz*getPhases.<locals>.Phase.processCharacterscSs|jj|d�dS)Nrp)r:r�)r>r�r'r'r(r~�sz/getPhases.<locals>.Phase.processSpaceCharacterscSsn|d}||jkr|j|}nH|j|}|j|<x2t|j�t|j�dkrd|jjtt|j���q4W||�S)Nr<g�������?)r��startTagHandlerrz�pop�next�iter)r>r�r<�funcr'r'r(r�s
z(getPhases.<locals>.Phase.processStartTagcSsl|jjr"|ddkr"|jjd�x<|dj�D],\}}||jjdjkr0||jjdj|<q0Wd|j_dS)Nr<r�z
non-html-rootrprF)rFrRrxr,r:rwrf)r>r��attrr�r'r'r(�startTagHtml�sz%getPhases.<locals>.Phase.startTagHtmlcSsn|d}||jkr|j|}nH|j|}|j|<x2t|j�t|j�dkrd|jjtt|j���q4W||�S)Nr<g�������?)r��
endTagHandlerrzr�r�r�)r>r�r<r�r'r'r(r��s
z&getPhases.<locals>.Phase.processEndTagN)rFr:r�r�)r5r6r7r��	__slots__rEr�r�r�r}r~rr�r�r'r'r'r(�Phase�s
r�c@sReZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)zgetPhases.<locals>.InitialPhasecSsdS)Nr')r>r�r'r'r(r~�sz6getPhases.<locals>.InitialPhase.processSpaceCharacterscSs|jj||jj�dS)N)r:r��document)r>r�r'r'r(r��sz.getPhases.<locals>.InitialPhase.processCommentc8Ss|d}|d}|d}|d}|dks@|dk	s@|dk	rL|dkrL|jjd�|dkrXd}|jj|�|dkrv|jt�}|�s�|ddk�s�|jdJ��s�|dKk�s�|jdL��r�|dk�s�|�r�|j�dDk�r�dE|j_n*|jdM��s�|jdN��r|dk	�rdH|j_|jj	dI|j_
dS)ONr<�publicId�systemId�correctr�zabout:legacy-compatzunknown-doctype��*+//silmaril//dtd html pro v0r11 19970101//�4-//advasoft ltd//dtd html 3.0 aswedit + extensions//�*-//as//dtd html 3.0 aswedit + extensions//�-//ietf//dtd html 2.0 level 1//�-//ietf//dtd html 2.0 level 2//�&-//ietf//dtd html 2.0 strict level 1//�&-//ietf//dtd html 2.0 strict level 2//�-//ietf//dtd html 2.0 strict//�-//ietf//dtd html 2.0//�-//ietf//dtd html 2.1e//�-//ietf//dtd html 3.0//�-//ietf//dtd html 3.2 final//�-//ietf//dtd html 3.2//�-//ietf//dtd html 3//�-//ietf//dtd html level 0//�-//ietf//dtd html level 1//�-//ietf//dtd html level 2//�-//ietf//dtd html level 3//�"-//ietf//dtd html strict level 0//�"-//ietf//dtd html strict level 1//�"-//ietf//dtd html strict level 2//�"-//ietf//dtd html strict level 3//�-//ietf//dtd html strict//�-//ietf//dtd html//�(-//metrius//dtd metrius presentational//�5-//microsoft//dtd internet explorer 2.0 html strict//�.-//microsoft//dtd internet explorer 2.0 html//�0-//microsoft//dtd internet explorer 2.0 tables//�5-//microsoft//dtd internet explorer 3.0 html strict//�.-//microsoft//dtd internet explorer 3.0 html//�0-//microsoft//dtd internet explorer 3.0 tables//�#-//netscape comm. corp.//dtd html//�*-//netscape comm. corp.//dtd strict html//�*-//o'reilly and associates//dtd html 2.0//�3-//o'reilly and associates//dtd html extended 1.0//�;-//o'reilly and associates//dtd html extended relaxed 1.0//�N-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//�E-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//�$-//spyglass//dtd html 2.0 extended//�+-//sq//dtd html 2.0 hotmetal + extensions//�--//sun microsystems corp.//dtd hotjava html//�4-//sun microsystems corp.//dtd hotjava strict html//�-//w3c//dtd html 3 1995-03-24//�-//w3c//dtd html 3.2 draft//�-//w3c//dtd html 3.2 final//�-//w3c//dtd html 3.2//�-//w3c//dtd html 3.2s draft//�-//w3c//dtd html 4.0 frameset//�#-//w3c//dtd html 4.0 transitional//�(-//w3c//dtd html experimental 19960712//�&-//w3c//dtd html experimental 970421//�-//w3c//dtd w3 html//�-//w3o//dtd w3 html 3.0//�#-//webtechs//dtd mozilla html 2.0//�-//webtechs//dtd mozilla html//�$-//w3o//dtd w3 html strict 3.0//en//�"-/w3c/dtd html 4.0 transitional/en� -//w3c//dtd html 4.01 frameset//�$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd�quirks� -//w3c//dtd xhtml 1.0 frameset//�$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrP)7r�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�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr)rrr�)rr)r
r)rr)rFrxr:Z
insertDoctypergrr�rUrTrCrZ)r>r�r<r�r�r�r'r'r(r��s�



z.getPhases.<locals>.InitialPhase.processDoctypecSsd|j_|jjd|j_dS)Nr	rP)rFrTrCrZ)r>r'r'r(�anythingElseZsz,getPhases.<locals>.InitialPhase.anythingElsecSs|jjd�|j�|S)Nzexpected-doctype-but-got-chars)rFrxr)r>r�r'r'r(r}^sz1getPhases.<locals>.InitialPhase.processCharacterscSs"|jjdd|di�|j�|S)Nz"expected-doctype-but-got-start-tagr<)rFrxr)r>r�r'r'r(rcsz/getPhases.<locals>.InitialPhase.processStartTagcSs"|jjdd|di�|j�|S)Nz expected-doctype-but-got-end-tagr<)rFrxr)r>r�r'r'r(r�isz-getPhases.<locals>.InitialPhase.processEndTagcSs|jjd�|j�dS)Nzexpected-doctype-but-got-eofT)rFrxr)r>r'r'r(r�osz*getPhases.<locals>.InitialPhase.processEOFN)
r5r6r7�tupler�r~r�r�rr}rr�r�r'r'r'r(�InitialPhase�s_rc@sJeZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�ZdS)z"getPhases.<locals>.BeforeHtmlPhasecSs&|jjtdd��|jjd|j_dS)Nr�rlr�)r:Z
insertRoot�impliedTagTokenrFrCrZ)r>r'r'r(r[xsz4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementcSs|j�dS)NT)r[)r>r'r'r(r�}sz-getPhases.<locals>.BeforeHtmlPhase.processEOFcSs|jj||jj�dS)N)r:r�r�)r>r�r'r'r(r��sz1getPhases.<locals>.BeforeHtmlPhase.processCommentcSsdS)Nr')r>r�r'r'r(r~�sz9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharacterscSs|j�|S)N)r[)r>r�r'r'r(r}�sz4getPhases.<locals>.BeforeHtmlPhase.processCharacterscSs |ddkrd|j_|j�|S)Nr<r�T)rFrRr[)r>r�r'r'r(r�sz2getPhases.<locals>.BeforeHtmlPhase.processStartTagcSs4|ddkr$|jjdd|di�n|j�|SdS)Nr<r�r�r��brzunexpected-end-tag-before-html)r�r�r�r)rFrxr[)r>r�r'r'r(r��s
z0getPhases.<locals>.BeforeHtmlPhase.processEndTagN)r5r6r7r
r�r[r�r�r~r}rr�r'r'r'r(�BeforeHtmlPhasetsrc@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
jdefde	fg�Ze
e_e
jdefg�Zee_dS)z"getPhases.<locals>.BeforeHeadPhasecSs|jtdd��dS)Nr�rlT)�startTagHeadr)r>r'r'r(r��sz-getPhases.<locals>.BeforeHeadPhase.processEOFcSsdS)Nr')r>r�r'r'r(r~�sz9getPhases.<locals>.BeforeHeadPhase.processSpaceCharacterscSs|jtdd��|S)Nr�rl)rr)r>r�r'r'r(r}�sz4getPhases.<locals>.BeforeHeadPhase.processCharacterscSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r��sz/getPhases.<locals>.BeforeHeadPhase.startTagHtmlcSs0|jj|�|jjd|j_|jjd|j_dS)Nr�inHeadrv)r:r�rw�headPointerrFrCrZ)r>r�r'r'r(r�sz/getPhases.<locals>.BeforeHeadPhase.startTagHeadcSs|jtdd��|S)Nr�rl)rr)r>r�r'r'r(�
startTagOther�sz0getPhases.<locals>.BeforeHeadPhase.startTagOthercSs|jtdd��|S)Nr�rl)rr)r>r�r'r'r(�endTagImplyHead�sz2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadcSs|jjdd|di�dS)Nzend-tag-after-implied-rootr<)rFrx)r>r�r'r'r(�endTagOther�sz.getPhases.<locals>.BeforeHeadPhase.endTagOtherr�r�r�rN)r�r�r�r)r5r6r7r
r�r�r~r}r�rrrrr�MethodDispatcherr��defaultr�r'r'r'r(�BeforeHeadPhase�s rc@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zejdefd efd/efd#e
fd$efd0e	fd*e
fd+efg�Zee_ejd+efd1efg�Zee_d.S)2zgetPhases.<locals>.InHeadPhasecSs|j�dS)NT)r)r>r'r'r(r��sz)getPhases.<locals>.InHeadPhase.processEOFcSs|j�|S)N)r)r>r�r'r'r(r}�sz0getPhases.<locals>.InHeadPhase.processCharacterscSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r��sz+getPhases.<locals>.InHeadPhase.startTagHtmlcSs|jjd�dS)Nz!two-heads-are-not-better-than-one)rFrx)r>r�r'r'r(r�sz+getPhases.<locals>.InHeadPhase.startTagHeadcSs$|jj|�|jjj�d|d<dS)NTru)r:r�rwr�)r>r�r'r'r(�startTagBaseLinkCommand�sz6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommandcSs�|jj|�|jjj�d|d<|d}|jjjjddkr�d|krZ|jjjj|d�nVd|kr�d|kr�|dj	�d	kr�t
j|djd
��}t
j
|�}|j�}|jjjj|�dS)NTrurprZ	tentative�charsetZcontentz
http-equivzcontent-typezutf-8)r:r�rwr�rFrIrLr_ZchangeEncodingrUrZ
EncodingBytes�encodeZContentAttrParserr!)r>r�rfrprF�codecr'r'r(�startTagMeta�s
z+getPhases.<locals>.InHeadPhase.startTagMetacSs|jj|d�dS)Nr�)rFr�)r>r�r'r'r(�
startTagTitle�sz,getPhases.<locals>.InHeadPhase.startTagTitlecSs|jj|d�dS)Nr�)rFr�)r>r�r'r'r(�startTagNoFramesStyle�sz4getPhases.<locals>.InHeadPhase.startTagNoFramesStylecSs8|jjr|jj|d�n|jj|�|jjd|j_dS)Nr��inHeadNoscript)rFrHr�r:r�rCrZ)r>r�r'r'r(�startTagNoscript�sz/getPhases.<locals>.InHeadPhase.startTagNoscriptcSs<|jj|�|jjj|jj_|jj|j_|jjd|j_dS)Nr�)	r:r�rFrIZscriptDataStaterWrZr�rC)r>r�r'r'r(�startTagScriptsz-getPhases.<locals>.InHeadPhase.startTagScriptcSs|j�|S)N)r)r>r�r'r'r(rsz,getPhases.<locals>.InHeadPhase.startTagOthercSs:|jjjj�}|jdks&td|j��|jjd|j_dS)Nr�zExpected head got %s�	afterHead)rFr:rwr�r<r�rCrZ)r>r�r�r'r'r(�
endTagHead
sz)getPhases.<locals>.InHeadPhase.endTagHeadcSs|j�|S)N)r)r>r�r'r'r(�endTagHtmlBodyBrsz/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrcSs|jjdd|di�dS)Nzunexpected-end-tagr<)rFrx)r>r�r'r'r(rsz*getPhases.<locals>.InHeadPhase.endTagOthercSs|jtd��dS)Nr�)r&r)r>r'r'r(rsz+getPhases.<locals>.InHeadPhase.anythingElser��title�noframes�style�noscript�script�base�basefont�bgsound�command�linkr2r�rr�N)r)r*)r-r.r/r0r1)rr�r�)r5r6r7r
r�r�r}r�rrrr r!r#r$rr&r'rrrrr�rr�r'r'r'r(�InHeadPhase�s>r2c@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejde	fd$e
fd%efg�Zee_ejd!e
fd"efg�Zee_d#S)&z&getPhases.<locals>.InHeadNoscriptPhasecSs|jjd�|j�dS)Nzeof-in-head-noscriptT)rFrxr)r>r'r'r(r�/sz1getPhases.<locals>.InHeadNoscriptPhase.processEOFcSs|jjdj|�S)Nr)rFrCr�)r>r�r'r'r(r�4sz5getPhases.<locals>.InHeadNoscriptPhase.processCommentcSs|jjd�|j�|S)Nzchar-in-head-noscript)rFrxr)r>r�r'r'r(r}7sz8getPhases.<locals>.InHeadNoscriptPhase.processCharacterscSs|jjdj|�S)Nr)rFrCr~)r>r�r'r'r(r~<sz=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharacterscSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r�?sz3getPhases.<locals>.InHeadNoscriptPhase.startTagHtmlcSs|jjdj|�S)Nr)rFrCr)r>r�r'r'r(rBsz>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandcSs|jjdd|di�dS)Nzunexpected-start-tagr<)rFrx)r>r�r'r'r(�startTagHeadNoscriptEsz;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptcSs"|jjdd|di�|j�|S)Nzunexpected-inhead-noscript-tagr<)rFrxr)r>r�r'r'r(rHsz4getPhases.<locals>.InHeadNoscriptPhase.startTagOthercSs:|jjjj�}|jdks&td|j��|jjd|j_dS)Nr+zExpected noscript got %sr)rFr:rwr�r<r�rCrZ)r>r�r�r'r'r(�endTagNoscriptMsz5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptcSs"|jjdd|di�|j�|S)Nzunexpected-inhead-noscript-tagr<)rFrxr)r>r�r'r'r(�endTagBrRsz/getPhases.<locals>.InHeadNoscriptPhase.endTagBrcSs|jjdd|di�dS)Nzunexpected-end-tagr<)rFrx)r>r�r'r'r(rWsz2getPhases.<locals>.InHeadNoscriptPhase.endTagOthercSs|jtd��dS)Nr+)r4r)r>r'r'r(rZsz3getPhases.<locals>.InHeadNoscriptPhase.anythingElser�r.r/r1r2r)r*r�r+rN)r.r/r1r2r)r*)r�r+)r5r6r7r
r�r�r�r}r~r�rr3rr4r5rrrrr�rr�r'r'r'r(�InHeadNoscriptPhase,s,r6c
@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zejdefdefde	fd&e
fd#efg�Zee_ejd'e
fg�Zee_d%S)(z!getPhases.<locals>.AfterHeadPhasecSs|j�dS)NT)r)r>r'r'r(r�nsz,getPhases.<locals>.AfterHeadPhase.processEOFcSs|j�|S)N)r)r>r�r'r'r(r}rsz3getPhases.<locals>.AfterHeadPhase.processCharacterscSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r�vsz.getPhases.<locals>.AfterHeadPhase.startTagHtmlcSs(d|j_|jj|�|jjd|j_dS)NFr�)rFr]r:r�rCrZ)r>r�r'r'r(�startTagBodyysz.getPhases.<locals>.AfterHeadPhase.startTagBodycSs |jj|�|jjd|j_dS)Nr�)r:r�rFrCrZ)r>r�r'r'r(�startTagFrameset~sz2getPhases.<locals>.AfterHeadPhase.startTagFramesetcSst|jjdd|di�|jjj|jj�|jjdj|�x4|jjddd�D]}|jdkrN|jjj	|�PqNWdS)Nz#unexpected-start-tag-out-of-my-headr<rrr�rv)
rFrxr:rwr�rrCrr<�remove)r>r�r�r'r'r(�startTagFromHead�s
z2getPhases.<locals>.AfterHeadPhase.startTagFromHeadcSs|jjdd|di�dS)Nzunexpected-start-tagr<)rFrx)r>r�r'r'r(r�sz.getPhases.<locals>.AfterHeadPhase.startTagHeadcSs|j�|S)N)r)r>r�r'r'r(r�sz/getPhases.<locals>.AfterHeadPhase.startTagOthercSs|j�|S)N)r)r>r�r'r'r(r'�sz2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrcSs|jjdd|di�dS)Nzunexpected-end-tagr<)rFrx)r>r�r'r'r(r�sz-getPhases.<locals>.AfterHeadPhase.endTagOthercSs.|jjtdd��|jjd|j_d|j_dS)Nr�rlr�T)r:r�rrFrCrZr])r>r'r'r(r�sz.getPhases.<locals>.AfterHeadPhase.anythingElser�r�r�r-r.r/r1r2r)r,r*r(r�rN)	r-r.r/r1r2r)r,r*r()r�r�r)r5r6r7r
r�r�r}r�r7r8r:rrr'rrrrr�rr�r'r'r'r(�AfterHeadPhaseks0

r;c,s�eZdZd�Z��fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2d`da�Z3dbdc�Z4ddde�Z5dfdg�Z6e7j8dh�j9fd�efdrefdse
fd�efe:efd�efd�efd�efd�efd�efd�efd�efd�efd�efd�efd�efd�efd�efd�efd�efd�efd�e fd�e!fd�e"fd�e#fd�e$fd�e&fd�e'fd�e%fd�e(fd�e)fd�e*fg!�Z;e+e;_<e7j8dre-fdhe.fd�e/fd�e0fd�e,fd�e1fe:e2fd�e3fd�e4fd�e5fg
�Z=e6e=_<�Z>S)�zgetPhases.<locals>.InBodyPhaser~cst�|�j||�|j|_dS)N)�superrE�processSpaceCharactersNonPrer~)r>r�r$)�InBodyPhaser�r'r(rE�sz'getPhases.<locals>.InBodyPhase.__init__cSs$|j|jko"|j|jko"|j|jkS)N)r<rerf)r>Znode1Znode2r'r'r(�isMatchingFormattingElement�sz:getPhases.<locals>.InBodyPhase.isMatchingFormattingElementcSs�|jj|�|jjd}g}x<|jjddd�D]&}|tkr@Pq0|j||�r0|j|�q0Wt|�dksjt�t|�dkr�|jjj	|d�|jjj|�dS)Nr�rvrvrv)
r:r�rw�activeFormattingElementsrr?r�rzr�r9)r>r�rhZmatchingElementsr�r'r'r(�addFormattingElement�sz3getPhases.<locals>.InBodyPhase.addFormattingElementc
Ss@td�}x2|jjddd�D]}|j|kr|jjd�PqWdS)N�dd�dt�lir&r�r�r�r�r�r�r�r�rz expected-closing-tag-but-got-eof)rCrDrEr&r�r�r�r�r�r�r�r�rv)r|r:rwr<rFrx)r>Zallowed_elementsr�r'r'r(r��s
z)getPhases.<locals>.InBodyPhase.processEOFcSsh|d}|j|_|jd�rJ|jjdjdkrJ|jjd	j�rJ|dd�}|rd|jj�|jj|�dS)
Nrp�
r�pre�listing�textarearv)rGrHrIrv)	r=r~r�r:rwr<Z
hasContent�#reconstructActiveFormattingElementsr�)r>r�rpr'r'r(�!processSpaceCharactersDropNewline�s

z@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewlinecSsT|ddkrdS|jj�|jj|d�|jjrPtdd�|dD��rPd|j_dS)Nrp�cSsg|]}|tk�qSr')r
)r;�charr'r'r(�
<listcomp>�szDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)r:rJr�rFr]�any)r>r�r'r'r(r}�s
z0getPhases.<locals>.InBodyPhase.processCharacterscSs|jj�|jj|d�dS)Nrp)r:rJr�)r>r�r'r'r(r=�s
z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPrecSs|jjdj|�S)Nr)rFrCr)r>r�r'r'r(�startTagProcessInHead�sz4getPhases.<locals>.InBodyPhase.startTagProcessInHeadcSs�|jjdddi�t|jj�dks4|jjdjdkrB|jjs�t�nFd|j_x<|dj	�D],\}}||jjdj
krX||jjdj
|<qXWdS)Nzunexpected-start-tagr<r�rFrp)rFrxrzr:rwr<rMr�r]r,rf)r>r�r�r�r'r'r(r7�sz+getPhases.<locals>.InBodyPhase.startTagBodycSs�|jjdddi�t|jj�dks4|jjdjdkrB|jjs�t�nt|jjsLnj|jjdj	rv|jjdj	j
|jjd�x"|jjdjdkr�|jjj�qxW|jj|�|jj
d|j_dS)	Nzunexpected-start-tagr<r�rr�r�r�rv)rFrxrzr:rwr<rMr�r]�parent�removeChildr�r�rCrZ)r>r�r'r'r(r8s"z/getPhases.<locals>.InBodyPhase.startTagFramesetcSs.|jjddd�r|jtd��|jj|�dS)Nr&�button)�variant)r:�elementInScope�endTagPrr�)r>r�r'r'r(�startTagClosePsz-getPhases.<locals>.InBodyPhase.startTagClosePcSs>|jjddd�r|jtd��|jj|�d|j_|j|_dS)Nr&rS)rTF)	r:rUrVrr�rFr]rKr~)r>r�r'r'r(�startTagPreListings
z1getPhases.<locals>.InBodyPhase.startTagPreListingcSsZ|jjr|jjdddi�n:|jjddd�r:|jtd��|jj|�|jjd|j_dS)	Nzunexpected-start-tagr<�formr&rS)rTrrv)	r:�formPointerrFrxrUrVrr�rw)r>r�r'r'r(�startTagFormsz+getPhases.<locals>.InBodyPhase.startTagFormcSs�d|j_dgddgddgd�}||d}xLt|jj�D]<}|j|kr^|jjjt|jd��P|j	t
kr8|jd
kr8Pq8W|jjd
dd�r�|jjjtd
d��|jj|�dS)NFrErDrC)rErDrCr<rm�addressr)r&rS)rT)r\r)r&)
rFr]�reversedr:rwr<rZr�r�	nameTuplerrUr�)r>r�ZstopNamesMapZ	stopNamesr�r'r'r(�startTagListItem&s"


z/getPhases.<locals>.InBodyPhase.startTagListItemcSs>|jjddd�r|jtd��|jj|�|jjj|jj_dS)Nr&rS)rT)	r:rUrVrr�rFrIrYrW)r>r�r'r'r(�startTagPlaintext<sz0getPhases.<locals>.InBodyPhase.startTagPlaintextcSsb|jjddd�r|jtd��|jjdjtkrR|jjdd|di�|jjj	�|jj
|�dS)Nr&rS)rTrzunexpected-start-tagr<rv)r:rUrVrrwr<rrFrxr�r�)r>r�r'r'r(�startTagHeadingBsz.getPhases.<locals>.InBodyPhase.startTagHeadingcSs~|jjd�}|rf|jjdddd��|jtd��||jjkrL|jjj|�||jjkrf|jjj|�|jj	�|j
|�dS)N�az$unexpected-start-tag-implies-end-tag)�	startName�endName)r:�!elementInActiveFormattingElementsrFrx�endTagFormattingrrwr9rArJrB)r>r�ZafeAElementr'r'r(�	startTagAJs
z(getPhases.<locals>.InBodyPhase.startTagAcSs|jj�|j|�dS)N)r:rJrB)r>r�r'r'r(�startTagFormattingWs
z1getPhases.<locals>.InBodyPhase.startTagFormattingcSsP|jj�|jjd�rB|jjdddd��|jtd��|jj�|j|�dS)N�nobrz$unexpected-start-tag-implies-end-tag)rcrd)r:rJrUrFrxr�rrB)r>r�r'r'r(�startTagNobr[s

z+getPhases.<locals>.InBodyPhase.startTagNobrcSsT|jjd�r2|jjdddd��|jtd��|S|jj�|jj|�d|j_dS)NrSz$unexpected-start-tag-implies-end-tag)rcrdF)	r:rUrFrxr�rrJr�r])r>r�r'r'r(�startTagButtones
z-getPhases.<locals>.InBodyPhase.startTagButtoncSs0|jj�|jj|�|jjjt�d|j_dS)NF)r:rJr�rAr�rrFr])r>r�r'r'r(�startTagAppletMarqueeObjectps
z:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectcSsB|jjddd�r|jtd��|jj�d|j_|jj|d�dS)Nr&rS)rTFr�)r:rUrVrrJrFr]r�)r>r�r'r'r(�startTagXmpvs

z*getPhases.<locals>.InBodyPhase.startTagXmpcSsR|jjdkr*|jjddd�r*|jtd��|jj|�d|j_|jjd|j_	dS)Nr	r&rS)rTFr�)
rFrTr:rUr�rr�r]rCrZ)r>r�r'r'r(�
startTagTable}sz,getPhases.<locals>.InBodyPhase.startTagTablecSs6|jj�|jj|�|jjj�d|d<d|j_dS)NTruF)r:rJr�rwr�rFr])r>r�r'r'r(�startTagVoidFormatting�s

z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingcSs@|jj}|j|�d|dkr<|ddjt�dkr<||j_dS)Nr0rp�hidden)rFr]rorgr)r>r�r]r'r'r(�
startTagInput�s

z,getPhases.<locals>.InBodyPhase.startTagInputcSs$|jj|�|jjj�d|d<dS)NTru)r:r�rwr�)r>r�r'r'r(�startTagParamSource�sz2getPhases.<locals>.InBodyPhase.startTagParamSourcecSsJ|jjddd�r|jtd��|jj|�|jjj�d|d<d|j_dS)Nr&rS)rTTruF)	r:rUrVrr�rwr�rFr])r>r�r'r'r(�
startTagHr�sz)getPhases.<locals>.InBodyPhase.startTagHrcSs6|jjdddd��|jtdd|d|dd��dS)	Nzunexpected-start-tag-treated-as�image�img)�originalName�newNamerlrprt)rfrt)rFrxrr)r>r�r'r'r(�
startTagImage�s

z,getPhases.<locals>.InBodyPhase.startTagImagecSs|jjdddi�|jjrdSi}d|dkr>|dd|d<|jtdd|d��|jtd	d��|jtd
d��d|dkr�|dd}nd}|jtd
|d��|dj�}d|kr�|d=d|kr�|d=d|d<|jtdd||dd��|j	td
��|jtd	d��|j	td��dS)Nzdeprecated-tagr<�isindex�actionrprYrl)rf�hrZlabel�promptz3This is a searchable index. Enter search keywords: rk)r0rp�inputrt)rfrt)
rFrxr:rZrrr}r�copyr�)r>r�Z
form_attrsr|rfr'r'r(�startTagIsIndex�s6


z.getPhases.<locals>.InBodyPhase.startTagIsIndexcSs0|jj|�|jjj|jj_|j|_d|j_dS)NF)	r:r�rFrIrVrWrKr~r])r>r�r'r'r(�startTagTextarea�sz/getPhases.<locals>.InBodyPhase.startTagTextareacSsd|j_|j|�dS)NF)rFr]�startTagRawtext)r>r�r'r'r(�startTagIFrame�sz-getPhases.<locals>.InBodyPhase.startTagIFramecSs"|jjr|j|�n
|j|�dS)N)rFrHr�r)r>r�r'r'r(r#�sz/getPhases.<locals>.InBodyPhase.startTagNoscriptcSs|jj|d�dS)z8iframe, noembed noframes, noscript(if scripting enabled)r�N)rFr�)r>r�r'r'r(r��sz.getPhases.<locals>.InBodyPhase.startTagRawtextcSs@|jjdjdkr$|jjjtd��|jj�|jjj|�dS)Nr�optionrv)	r:rwr<rFrZr�rrJr�)r>r�r'r'r(�startTagOpt�s
z*getPhases.<locals>.InBodyPhase.startTagOptcSs�|jj�|jj|�d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfkrx|jjd|j_n|jjd	|j_dS)
NFr�r�r�r�r�r��inSelectInTabler�)r:rJr�rFr]rZrC)r>r�r'r'r(�startTagSelect�s




z-getPhases.<locals>.InBodyPhase.startTagSelectcSsB|jjd�r2|jj�|jjdjdkr2|jj�|jj|�dS)N�rubyrrv)r:rU�generateImpliedEndTagsrwr<rFrxr�)r>r�r'r'r(�startTagRpRt�s


z+getPhases.<locals>.InBodyPhase.startTagRpRtcSsZ|jj�|jj|�|jj|�td|d<|jj|�|drV|jjj�d|d<dS)NrarertTru)	r:rJrFrrrr�rwr�)r>r�r'r'r(�startTagMath�s
z+getPhases.<locals>.InBodyPhase.startTagMathcSsZ|jj�|jj|�|jj|�td|d<|jj|�|drV|jjj�d|d<dS)NrrrertTru)	r:rJrFrrrr�rwr�)r>r�r'r'r(�startTagSvgs
z*getPhases.<locals>.InBodyPhase.startTagSvgcSs|jjdd|di�dS)a5 Elements that should be children of other elements that have a
            different insertion mode; here they are ignored
            "caption", "col", "colgroup", "frame", "frameset", "head",
            "option", "optgroup", "tbody", "td", "tfoot", "th", "thead",
            "tr", "noscript"
            zunexpected-start-tag-ignoredr<N)rFrx)r>r�r'r'r(�startTagMisplacedsz0getPhases.<locals>.InBodyPhase.startTagMisplacedcSs|jj�|jj|�dS)N)r:rJr�)r>r�r'r'r(rs
z,getPhases.<locals>.InBodyPhase.startTagOthercSs�|jjddd�sD|jtdd��|jjdddi�|jtdd��nX|jjd�|jjd	j	dkrt|jjdddi�|jjj
�}x|j	dkr�|jjj
�}q�WdS)
Nr&rS)rTrlzunexpected-end-tagr<rmrrv)r:rUrWrrFrxrVr�rwr<r�)r>r�r�r'r'r(rVsz&getPhases.<locals>.InBodyPhase.endTagPcSs�|jjd�s|jj�dS|jjdjdkrlx>|jjdd�D]*}|jtd�kr>|jjdd|jd��Pq>W|jjd|j_dS)Nr�r�rCrDrE�optgroupr�r&�rp�rtr�r�r�r�r�r�r�z$expected-one-end-tag-but-got-another)�gotName�expectedName�	afterBodyrv)rCrDrEr�r�r&r�r�r�r�r�r�r�r�r�r�)	r:rUrFrxrwr<r|rCrZ)r>r�r�r'r'r(�
endTagBody)s
z)getPhases.<locals>.InBodyPhase.endTagBodycSs"|jjd�r|jtd��|SdS)Nr�)r:rUr�r)r>r�r'r'r(�
endTagHtml;sz)getPhases.<locals>.InBodyPhase.endTagHtmlcSs�|ddkr|j|_|jj|d�}|r2|jj�|jjdj|dkr^|jjdd|di�|r�|jjj	�}x|j|dkr�|jjj	�}qpWdS)Nr<rGrzend-tag-too-earlyrv)
r=r~r:rUr�rwr<rFrxr�)r>r�ZinScoper�r'r'r(�endTagBlockAs
z*getPhases.<locals>.InBodyPhase.endTagBlockcSsx|jj}d|j_|dks&|jj|�r:|jjdddi�n:|jj�|jjd|krf|jjdddi�|jjj|�dS)Nzunexpected-end-tagr<rYrzend-tag-too-early-ignoredrv)r:rZrUrFrxr�rwr9)r>r�r�r'r'r(�
endTagFormOs

z)getPhases.<locals>.InBodyPhase.endTagFormcSs�|ddkrd}nd}|jj|d|d�sB|jjdd|di�nj|jj|dd�|jjd	j|dkr�|jjdd|di�|jjj�}x|j|dkr�|jjj�}q�WdS)
Nr<rE�list)rTzunexpected-end-tag)�excluderzend-tag-too-earlyrv)r:rUrFrxr�rwr<r�)r>r�rTr�r'r'r(�endTagListItem\sz-getPhases.<locals>.InBodyPhase.endTagListItemcSs�x$tD]}|jj|�r|jj�PqW|jjdj|dkrR|jjdd|di�xBtD]:}|jj|�rX|jjj�}x|jtkr�|jjj�}qvWPqXWdS)Nrr<zend-tag-too-earlyrv)	rr:rUr�rwr<rFrxr�)r>r��itemr'r'r(�
endTagHeadingms


z,getPhases.<locals>.InBodyPhase.endTagHeadingcSs"d}�x|dk�r|d7}|jj|d�}|sL||jjkrZ|jj|j�rZ|j|�dS||jjkr�|jjdd|di�|jjj	|�dS|jj|j�s�|jjdd|di�dS||jjdkr�|jjdd|di�|jjj
|�}d}x,|jj|d�D]}|jtk�r|}P�qW|dk�rb|jjj
�}x||k�rN|jjj
�}�q4W|jjj	|�dS|jj|d}|jjj
|�}|}	}
d}|jjj
|
�}x�|d	k�rh|d7}|d8}|jj|}
|
|jjk�r�|jjj	|
��q�|
|k�r�P|	|k�r
|jjj
|
�d}|
j�}
|
|jj|jjj
|
�<|
|jj|jjj
|
�<|
}
|	j�rV|	jj|	�|
j|	�|
}	�q�W|	j�r~|	jj|	�|jtd�k�r�|jj�\}}|j|	|�n
|j|	�|j�}
|j|
�|j|
�|jjj	|�|jjj||
�|jjj	|�|jjj|jjj
|�d|
�qWdS)z)The much-feared adoption agency algorithmr�rr<Nzadoption-agency-1.2zadoption-agency-4.4zadoption-agency-1.3r@r�r�r�r�r�rv)r�r�r�r�r�)r:rerwrUr<rrFrxrAr9�indexr^rr�Z	cloneNoderQrRZappendChildr|ZgetTableMisnestedNodePosition�insertBeforeZreparentChildren�insert)r>r�ZouterLoopCounterZformattingElementZafeIndexZ
furthestBlockrhZcommonAncestorZbookmarkZlastNoder�ZinnerLoopCounterr�ZclonerQr�r'r'r(rf|s�











z/getPhases.<locals>.InBodyPhase.endTagFormattingcSs�|jj|d�r|jj�|jjdj|dkrF|jjdd|di�|jj|d�r�|jjj�}x|j|dkr�|jjj�}qdW|jj�dS)Nr<rzend-tag-too-earlyrv)	r:rUr�rwr<rFrxr��clearActiveFormattingElements)r>r�rhr'r'r(�endTagAppletMarqueeObjects
z8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObjectcSs@|jjdddd��|jj�|jjtdd��|jjj�dS)Nzunexpected-end-tag-treated-asrz
br element)rvrwrl)rFrxr:rJr�rrwr�)r>r�r'r'r(r5+s

z'getPhases.<locals>.InBodyPhase.endTagBrcSs�x�|jjddd�D]�}|j|dkr~|jj|dd�|jjdj|dkrd|jjdd|di�x|jjj�|krxqfWPq|jtkr|jjdd|di�PqWdS)Nrr<)r�zunexpected-end-tagrvrv)	r:rwr<r�rFrxr�r^r)r>r�r�r'r'r(r2s
z*getPhases.<locals>.InBodyPhase.endTagOtherr�r-r.r/r0r1r2r,r*r(r�r�r\�article�aside�
blockquote�center�details�dirr)�dl�fieldset�
figcaption�figure�footer�header�hgroup�main�menu�nav�olr&�section�summary�ulrGrHrYrErCrDrOrb�b�big�code�em�font�i�s�small�strike�strong�tt�urirS�applet�marquee�objectZxmpr��arear�embedru�keygen�wbr�param�source�trackr}r{rtryrIZiframer+�noembedr)r�r�r�r�r�Zmathrrr��colr��framer�r�r�r�r�r�r��dialog)r~)	r-r.r/r0r1r2r,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�)rGrH)rErCrD)r�r�r�r�r�r�r�r�r�r�r�r�)r�r�r�)r�rr�rur�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�rSr�r�r�r�r)r�r�r�r�r�r�r�rHr�r�r�r�rGr�r�r�)rCrDrE)rbr�r�r�r�r�r�rir�r�r�r�r�r�)r�r�r�)?r5r6r7r�rEr?rBr�rKr}r=rPr7r8rWrXr[r_r`rargrhrjrkrlrmrnrorqrrrsrxrr�r�r#r�r�r�r�r�r�r�rrVr�r�r�r�r�r�rfr�r5rrrr�rr�rr��
__classcell__r')r>r�)r�r(r>�s�

	

	

$r>c@s`eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	e
jg�Zee_
e
jdefg�Ze	e_
dS)
zgetPhases.<locals>.TextPhasecSs|jj|d�dS)Nrp)r:r�)r>r�r'r'r(r}�sz.getPhases.<locals>.TextPhase.processCharacterscSs8|jjdd|jjdji�|jjj�|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr<rTrv)rFrxr:rwr<r�r�rZ)r>r'r'r(r��s
z'getPhases.<locals>.TextPhase.processEOFcSsdstd|d��dS)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moder<)r�)r>r�r'r'r(r�sz*getPhases.<locals>.TextPhase.startTagOthercSs*|jjj�}|jdkst�|jj|j_dS)Nr,)r:rwr�r<r�rFr�rZ)r>r�r�r'r'r(�endTagScript�sz)getPhases.<locals>.TextPhase.endTagScriptcSs|jjj�|jj|j_dS)N)r:rwr�rFr�rZ)r>r�r'r'r(r�sz(getPhases.<locals>.TextPhase.endTagOtherr,N)r5r6r7r
r�r}r�rr�rrrr�rr�r'r'r'r(�	TextPhase�s
r�c
seZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zejd%�jfd&e
fd'efd(efd6e
fd7efd/efd8efd2efd3efg
�Zee_ejd/efd9efg�Zee_d5S):zgetPhases.<locals>.InTablePhasecSs(x"|jjdjdkr"|jjj�qWdS)Nrr�r�rv)r�r�)r:rwr<r�)r>r'r'r(�clearStackToTableContext�sz8getPhases.<locals>.InTablePhase.clearStackToTableContextcSs0|jjdjdkr |jjd�n|jjs,t�dS)Nrr�zeof-in-tablerv)r:rwr<rFrxrMr�)r>r'r'r(r��sz*getPhases.<locals>.InTablePhase.processEOFcSs4|jj}|jjd|j_||jj_|jjj|�dS)N�inTableText)rFrZrCr�r~)r>r�r�r'r'r(r~�s
z6getPhases.<locals>.InTablePhase.processSpaceCharacterscSs4|jj}|jjd|j_||jj_|jjj|�dS)Nr�)rFrZrCr�r})r>r�r�r'r'r(r}�s
z1getPhases.<locals>.InTablePhase.processCharacterscSs&d|j_|jjdj|�d|j_dS)NTr�F)r:�insertFromTablerFrCr})r>r�r'r'r(r��sz*getPhases.<locals>.InTablePhase.insertTextcSs6|j�|jjjt�|jj|�|jjd|j_dS)Nr�)	r�r:rAr�rr�rFrCrZ)r>r�r'r'r(�startTagCaption�sz/getPhases.<locals>.InTablePhase.startTagCaptioncSs(|j�|jj|�|jjd|j_dS)Nr�)r�r:r�rFrCrZ)r>r�r'r'r(�startTagColgroup�sz0getPhases.<locals>.InTablePhase.startTagColgroupcSs|jtdd��|S)Nr�rl)r�r)r>r�r'r'r(�startTagCol�sz+getPhases.<locals>.InTablePhase.startTagColcSs(|j�|jj|�|jjd|j_dS)Nr�)r�r:r�rFrCrZ)r>r�r'r'r(�startTagRowGroup�sz0getPhases.<locals>.InTablePhase.startTagRowGroupcSs|jtdd��|S)Nr�rl)r�r)r>r�r'r'r(�startTagImplyTbody�sz2getPhases.<locals>.InTablePhase.startTagImplyTbodycSs6|jjdddd��|jjjtd��|jjs2|SdS)Nz$unexpected-start-tag-implies-end-tagr�)rcrd)rFrxrZr�rrM)r>r�r'r'r(rn�s
z-getPhases.<locals>.InTablePhase.startTagTablecSs|jjdj|�S)Nr)rFrCr)r>r�r'r'r(�startTagStyleScript�sz3getPhases.<locals>.InTablePhase.startTagStyleScriptcSsVd|dkrH|ddjt�dkrH|jjd�|jj|�|jjj�n
|j|�dS)Nr0rprpz unexpected-hidden-input-in-table)	rgrrFrxr:r�rwr�r)r>r�r'r'r(rq�sz-getPhases.<locals>.InTablePhase.startTagInputcSsD|jjd�|jjdkr@|jj|�|jjd|j_|jjj�dS)Nzunexpected-form-in-tablerrv)rFrxr:rZr�rwr�)r>r�r'r'r(r[�s
z,getPhases.<locals>.InTablePhase.startTagFormcSs<|jjdd|di�d|j_|jjdj|�d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor<Tr�F)rFrxr:r�rCr)r>r�r'r'r(r�sz-getPhases.<locals>.InTablePhase.startTagOthercSs�|jjddd�r�|jj�|jjdjdkrJ|jjdd|jjdjd��x"|jjdjdkrl|jjj�qLW|jjj�|jj�n|jj	s�t
�|jj�dS)	Nr�)rTrzend-tag-too-early-named)r�r�rvrvrv)r:rUr�rwr<rFrxr�r\rMr�)r>r�r'r'r(�endTagTables
z+getPhases.<locals>.InTablePhase.endTagTablecSs|jjdd|di�dS)Nzunexpected-end-tagr<)rFrx)r>r�r'r'r(�endTagIgnoresz,getPhases.<locals>.InTablePhase.endTagIgnorecSs<|jjdd|di�d|j_|jjdj|�d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor<Tr�F)rFrxr:r�rCr�)r>r�r'r'r(rsz+getPhases.<locals>.InTablePhase.endTagOtherr�r�r�r�r�r�r�r�r�r�r�r*r,r}rYr�N)r�r�r�)r�r�r�)r*r,)r�r�r�r�r�r�r�r�r�r�r�)r5r6r7r
r�r�r�r~r}r�r�r�r�r�r�rnr�rqr[rr�r�rrrr�r�rr�r')r�r'r(�InTablePhase�sH	
r�csZeZdZdZ��fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Z�ZS)z#getPhases.<locals>.InTableTextPhaser��characterTokenscs"t�|�j||�d|_g|_dS)N)r<rEr�r�)r>r�r$)�InTableTextPhaser�r'r(rE6sz,getPhases.<locals>.InTableTextPhase.__init__cSsddjdd�|jD��}tdd�|D��rJtd|d�}|jjdj|�n|rZ|jj|�g|_dS)Nr�cSsg|]}|d�qS)rpr')r;r�r'r'r(rN<szGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>cSsg|]}|tk�qSr')r
)r;r�r'r'r(rN=srk)r0rpr�)�joinr�rOrrFrCr�r:)r>rpr�r'r'r(�flushCharacters;sz3getPhases.<locals>.InTableTextPhase.flushCharacterscSs|j�|j|j_|S)N)r�r�rFrZ)r>r�r'r'r(r�Ds
z2getPhases.<locals>.InTableTextPhase.processCommentcSs|j�|j|j_dS)NT)r�r�rFrZ)r>r'r'r(r�Is
z.getPhases.<locals>.InTableTextPhase.processEOFcSs |ddkrdS|jj|�dS)NrprL)r�r�)r>r�r'r'r(r}Nsz5getPhases.<locals>.InTableTextPhase.processCharacterscSs|jj|�dS)N)r�r�)r>r�r'r'r(r~Ssz:getPhases.<locals>.InTableTextPhase.processSpaceCharacterscSs|j�|j|j_|S)N)r�r�rFrZ)r>r�r'r'r(rXs
z3getPhases.<locals>.InTableTextPhase.processStartTagcSs|j�|j|j_|S)N)r�r�rFrZ)r>r�r'r'r(r�]s
z1getPhases.<locals>.InTableTextPhase.processEndTag)r�r�)
r5r6r7r�rEr�r�r�r}r~rr�r�r')r�)r�r(r�3s	r�c
s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
ejd�jfd efg�Ze	e_ejde
fdefd!efg�Ze
e_dS)"z!getPhases.<locals>.InCaptionPhasecSs|jjddd�S)Nr�r�)rT)r:rU)r>r'r'r(�ignoreEndTagCaptionfsz5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptioncSs|jjdj�dS)Nr�)rFrCr�)r>r'r'r(r�isz,getPhases.<locals>.InCaptionPhase.processEOFcSs|jjdj|�S)Nr�)rFrCr})r>r�r'r'r(r}lsz3getPhases.<locals>.InCaptionPhase.processCharacterscSs0|jj�|j�}|jjjtd��|s,|SdS)Nr�)rFrxr�rZr�r)r>r��ignoreEndTagr'r'r(�startTagTableElementos

z6getPhases.<locals>.InCaptionPhase.startTagTableElementcSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(rwsz/getPhases.<locals>.InCaptionPhase.startTagOthercSs�|j�s�|jj�|jjdjdkrB|jjdd|jjdjd��x"|jjdjdkrd|jjj�qDW|jjj�|jj�|jj	d|j_
n|jjs�t�|jj�dS)	Nrr�z$expected-one-end-tag-but-got-another)r�r�r�rvrvrv)
r�r:r�rwr<rFrxr�r�rCrZrMr�)r>r�r'r'r(�
endTagCaptionzs

z/getPhases.<locals>.InCaptionPhase.endTagCaptioncSs0|jj�|j�}|jjjtd��|s,|SdS)Nr�)rFrxr�rZr�r)r>r�r�r'r'r(r��s

z-getPhases.<locals>.InCaptionPhase.endTagTablecSs|jjdd|di�dS)Nzunexpected-end-tagr<)rFrx)r>r�r'r'r(r��sz.getPhases.<locals>.InCaptionPhase.endTagIgnorecSs|jjdj|�S)Nr�)rFrCr�)r>r�r'r'r(r�sz-getPhases.<locals>.InCaptionPhase.endTagOtherr�r�r�r�r�r�r�r�r�r�r�r�N)	r�r�r�r�r�r�r�r�r�)
r�r�r�r�r�r�r�r�r�r�)r5r6r7r
r�r�r�r}r�rr�r�r�rrrr�r�rr�r')r�r'r(�InCaptionPhasebs*r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
jd�jfdefg�Ze	e_e
jde
fdefg�Zee_dS)z%getPhases.<locals>.InColumnGroupPhasecSs|jjdjdkS)Nrr�rv)r:rwr<)r>r'r'r(�ignoreEndTagColgroup�sz:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroupcSsD|jjdjdkr"|jjst�dS|j�}|jtd��|s@dSdS)Nrr�r�Trv)	r:rwr<rFrMr�r��endTagColgroupr)r>r�r'r'r(r��sz0getPhases.<locals>.InColumnGroupPhase.processEOFcSs"|j�}|jtd��|s|SdS)Nr�)r�r�r)r>r�r�r'r'r(r}�sz7getPhases.<locals>.InColumnGroupPhase.processCharacterscSs$|jj|�|jjj�d|d<dS)NTru)r:r�rwr�)r>r�r'r'r(r��sz1getPhases.<locals>.InColumnGroupPhase.startTagColcSs"|j�}|jtd��|s|SdS)Nr�)r�r�r)r>r�r�r'r'r(r�sz3getPhases.<locals>.InColumnGroupPhase.startTagOthercSs@|j�r |jjst�|jj�n|jjj�|jjd|j_	dS)Nr�)
r�rFrMr�rxr:rwr�rCrZ)r>r�r'r'r(r��s
z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupcSs|jjdddi�dS)Nz
no-end-tagr<r�)rFrx)r>r�r'r'r(�	endTagCol�sz/getPhases.<locals>.InColumnGroupPhase.endTagColcSs"|j�}|jtd��|s|SdS)Nr�)r�r�r)r>r�r�r'r'r(r�sz1getPhases.<locals>.InColumnGroupPhase.endTagOtherr�r�r�N)r5r6r7r
r�r�r�r}r�rr�r�rrrr�r�rr�r')r�r'r(�InColumnGroupPhase�s"
	r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejd�jfde	fd&e
fd'efg�Zee_ejd(e
fd#efd)efg�Zee_d%S)*z#getPhases.<locals>.InTableBodyPhasecSsFx"|jjdjdkr"|jjj�qW|jjdjdkrB|jjsBt�dS)	Nrr�r�r�r�rv)r�r�r�r�rv)r:rwr<r�rFrMr�)r>r'r'r(�clearStackToTableBodyContext�s
z@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextcSs|jjdj�dS)Nr�)rFrCr�)r>r'r'r(r��sz.getPhases.<locals>.InTableBodyPhase.processEOFcSs|jjdj|�S)Nr�)rFrCr~)r>r�r'r'r(r~�sz:getPhases.<locals>.InTableBodyPhase.processSpaceCharacterscSs|jjdj|�S)Nr�)rFrCr})r>r�r'r'r(r}�sz5getPhases.<locals>.InTableBodyPhase.processCharacterscSs(|j�|jj|�|jjd|j_dS)Nr�)r�r:r�rFrCrZ)r>r�r'r'r(�
startTagTrsz.getPhases.<locals>.InTableBodyPhase.startTagTrcSs*|jjdd|di�|jtdd��|S)Nzunexpected-cell-in-table-bodyr<r�rl)rFrxr�r)r>r�r'r'r(�startTagTableCellsz5getPhases.<locals>.InTableBodyPhase.startTagTableCellcSsn|jjddd�s0|jjddd�s0|jjddd�rT|j�|jt|jjdj��|S|jjs`t	�|jj
�dS)Nr�r�)rTr�r�rrv)r:rUr��endTagTableRowGrouprrwr<rFrMr�rx)r>r�r'r'r(�startTagTableOthersz6getPhases.<locals>.InTableBodyPhase.startTagTableOthercSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(rsz1getPhases.<locals>.InTableBodyPhase.startTagOthercSsT|jj|ddd�r:|j�|jjj�|jjd|j_n|jjdd|di�dS)Nr<r�)rTr�z unexpected-end-tag-in-table-body)	r:rUr�rwr�rFrCrZrx)r>r�r'r'r(r�sz7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroupcSsn|jjddd�s0|jjddd�s0|jjddd�rT|j�|jt|jjdj��|S|jjs`t	�|jj
�dS)Nr�r�)rTr�r�rrv)r:rUr�r�rrwr<rFrMr�rx)r>r�r'r'r(r�%sz/getPhases.<locals>.InTableBodyPhase.endTagTablecSs|jjdd|di�dS)Nz unexpected-end-tag-in-table-bodyr<)rFrx)r>r�r'r'r(r�2sz0getPhases.<locals>.InTableBodyPhase.endTagIgnorecSs|jjdj|�S)Nr�)rFrCr�)r>r�r'r'r(r6sz/getPhases.<locals>.InTableBodyPhase.endTagOtherr�r�r�r�r�r�r�r�r�r�r�r�N)r�r�)r�r�r�r�r�r�)r�r�r�)r�r�r�r�r�r�r�r�)r5r6r7r
r�r�r�r~r}r�r�r�rr�r�r�rrrr�r�rr�r')r�r'r(�InTableBodyPhase�s4
	

r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zejd�jfd(e
fd)efg�Zee_ejd$e
fd%efd*efd+efg�Zee_d'S),zgetPhases.<locals>.InRowPhasecSsDx>|jjdjdkr>|jjdd|jjdji�|jjj�qWdS)	Nrr�r�z'unexpected-implied-end-tag-in-table-rowr<rv)r�r�rv)r:rwr<rFrxr�)r>r'r'r(�clearStackToTableRowContextOsz9getPhases.<locals>.InRowPhase.clearStackToTableRowContextcSs|jjddd�S)Nr�r�)rT)r:rU)r>r'r'r(�ignoreEndTagTrUsz,getPhases.<locals>.InRowPhase.ignoreEndTagTrcSs|jjdj�dS)Nr�)rFrCr�)r>r'r'r(r�Ysz(getPhases.<locals>.InRowPhase.processEOFcSs|jjdj|�S)Nr�)rFrCr~)r>r�r'r'r(r~\sz4getPhases.<locals>.InRowPhase.processSpaceCharacterscSs|jjdj|�S)Nr�)rFrCr})r>r�r'r'r(r}_sz/getPhases.<locals>.InRowPhase.processCharacterscSs6|j�|jj|�|jjd|j_|jjjt�dS)Nr�)	r�r:r�rFrCrZrAr�r)r>r�r'r'r(r�bsz/getPhases.<locals>.InRowPhase.startTagTableCellcSs"|j�}|jtd��|s|SdS)Nr�)r��endTagTrr)r>r�r�r'r'r(r�hsz0getPhases.<locals>.InRowPhase.startTagTableOthercSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(rosz+getPhases.<locals>.InRowPhase.startTagOthercSsH|j�s.|j�|jjj�|jjd|j_n|jjs:t	�|jj
�dS)Nr�)r�r�r:rwr�rFrCrZrMr�rx)r>r�r'r'r(r�rsz&getPhases.<locals>.InRowPhase.endTagTrcSs"|j�}|jtd��|s|SdS)Nr�)r�r�r)r>r�r�r'r'r(r�|sz)getPhases.<locals>.InRowPhase.endTagTablecSs4|jj|ddd�r&|jtd��|S|jj�dS)Nr<r�)rTr�)r:rUr�rrFrx)r>r�r'r'r(r��sz1getPhases.<locals>.InRowPhase.endTagTableRowGroupcSs|jjdd|di�dS)Nzunexpected-end-tag-in-table-rowr<)rFrx)r>r�r'r'r(r��sz*getPhases.<locals>.InRowPhase.endTagIgnorecSs|jjdj|�S)Nr�)rFrCr�)r>r�r'r'r(r�sz)getPhases.<locals>.InRowPhase.endTagOtherr�r�r�r�r�r�r�r�r�r�r�r�N)r�r�)r�r�r�r�r�r�r�)r�r�r�)r�r�r�r�r�r�r�)r5r6r7r
r�r�r�r�r~r}r�r�rr�r�r�r�rrrr�r�rr�r')r�r'r(�
InRowPhaseJs6

r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
ejd�jfd efg�Ze	e_ejd!e
fd"efd#efg�Ze
e_dS)$zgetPhases.<locals>.InCellPhasecSsB|jjddd�r |jtd��n|jjddd�r>|jtd��dS)Nr�r�)rTr�)r:rU�endTagTableCellr)r>r'r'r(�	closeCell�sz(getPhases.<locals>.InCellPhase.closeCellcSs|jjdj�dS)Nr�)rFrCr�)r>r'r'r(r��sz)getPhases.<locals>.InCellPhase.processEOFcSs|jjdj|�S)Nr�)rFrCr})r>r�r'r'r(r}�sz0getPhases.<locals>.InCellPhase.processCharacterscSsF|jjddd�s |jjddd�r,|j�|S|jjs8t�|jj�dS)Nr�r�)rTr�)r:rUr�rFrMr�rx)r>r�r'r'r(r��sz1getPhases.<locals>.InCellPhase.startTagTableOthercSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r�sz,getPhases.<locals>.InCellPhase.startTagOthercSs�|jj|ddd�r�|jj|d�|jjdj|dkrt|jjdd|di�x.|jjj�}|j|dkrRPqRWn|jjj�|jj�|jj	d|j_
n|jjdd|di�dS)	Nr<r�)rTrzunexpected-cell-end-tagr�zunexpected-end-tagrv)r:rUr�rwr<rFrxr�r�rCrZ)r>r�r�r'r'r(r��s
z.getPhases.<locals>.InCellPhase.endTagTableCellcSs|jjdd|di�dS)Nzunexpected-end-tagr<)rFrx)r>r�r'r'r(r��sz+getPhases.<locals>.InCellPhase.endTagIgnorecSs.|jj|ddd�r |j�|S|jj�dS)Nr<r�)rT)r:rUr�rFrx)r>r�r'r'r(�endTagImply�sz*getPhases.<locals>.InCellPhase.endTagImplycSs|jjdj|�S)Nr�)rFrCr�)r>r�r'r'r(r�sz*getPhases.<locals>.InCellPhase.endTagOtherr�r�r�r�r�r�r�r�r�r�r�r�N)	r�r�r�r�r�r�r�r�r�)r�r�)r�r�r�r�r�)r�r�r�r�r�)r5r6r7r
r�r�r�r}r�rr�r�r�rrrr�r�rr�r')r�r'r(�InCellPhase�s(
r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejd�jfdefdefde	fd"e
fd efg�Zee_ejde
fdefdefg�Zee_d!S)#z getPhases.<locals>.InSelectPhasecSs0|jjdjdkr |jjd�n|jjs,t�dS)Nrr�z
eof-in-selectrv)r:rwr<rFrxrMr�)r>r'r'r(r��sz+getPhases.<locals>.InSelectPhase.processEOFcSs$|ddkrdS|jj|d�dS)NrprL)r:r�)r>r�r'r'r(r}�sz2getPhases.<locals>.InSelectPhase.processCharacterscSs.|jjdjdkr|jjj�|jj|�dS)Nrr�rv)r:rwr<r�r�)r>r�r'r'r(�startTagOption�sz/getPhases.<locals>.InSelectPhase.startTagOptioncSsL|jjdjdkr|jjj�|jjdjdkr<|jjj�|jj|�dS)Nrr�r�rvrv)r:rwr<r�r�)r>r�r'r'r(�startTagOptgroup	s
z1getPhases.<locals>.InSelectPhase.startTagOptgroupcSs|jjd�|jtd��dS)Nzunexpected-select-in-selectr�)rFrx�endTagSelectr)r>r�r'r'r(r�	sz/getPhases.<locals>.InSelectPhase.startTagSelectcSs>|jjd�|jjddd�r.|jtd��|S|jjs:t�dS)Nzunexpected-input-in-selectr�)rT)rFrxr:rUr�rrMr�)r>r�r'r'r(rq	s
z.getPhases.<locals>.InSelectPhase.startTagInputcSs|jjdj|�S)Nr)rFrCr)r>r�r'r'r(r$	sz/getPhases.<locals>.InSelectPhase.startTagScriptcSs|jjdd|di�dS)Nzunexpected-start-tag-in-selectr<)rFrx)r>r�r'r'r(r	sz.getPhases.<locals>.InSelectPhase.startTagOthercSs6|jjdjdkr |jjj�n|jjdddi�dS)Nrr�zunexpected-end-tag-in-selectr<rv)r:rwr<r�rFrx)r>r�r'r'r(�endTagOption	sz-getPhases.<locals>.InSelectPhase.endTagOptioncSsf|jjdjdkr0|jjdjdkr0|jjj�|jjd	jdkrP|jjj�n|jjdddi�dS)
Nrr�r�r�zunexpected-end-tag-in-selectr<rv���rv)r:rwr<r�rFrx)r>r�r'r'r(�endTagOptgroup%	sz/getPhases.<locals>.InSelectPhase.endTagOptgroupcSs^|jjddd�rD|jjj�}x|jdkr6|jjj�}qW|jj�n|jjsPt�|jj	�dS)Nr�)rT)
r:rUrwr�r<rFr\rMr�rx)r>r�r�r'r'r(r�2	sz-getPhases.<locals>.InSelectPhase.endTagSelectcSs|jjdd|di�dS)Nzunexpected-end-tag-in-selectr<)rFrx)r>r�r'r'r(r=	sz,getPhases.<locals>.InSelectPhase.endTagOtherr�r�r�r�r}r�rIr,N)r}r�rI)r5r6r7r
r�r�r}r�r�r�rqr$rr�rr�rrrr�r�rr�r')r�r'r(�
InSelectPhase�s4
rc	@sneZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
ejdefg�Z
ee
_ejde	fg�Ze
e_dS)z'getPhases.<locals>.InSelectInTablePhasecSs|jjdj�dS)Nr�)rFrCr�)r>r'r'r(r�U	sz2getPhases.<locals>.InSelectInTablePhase.processEOFcSs|jjdj|�S)Nr�)rFrCr})r>r�r'r'r(r}X	sz9getPhases.<locals>.InSelectInTablePhase.processCharacterscSs(|jjdd|di�|jtd��|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler<r�)rFrxrr)r>r�r'r'r(rn[	sz5getPhases.<locals>.InSelectInTablePhase.startTagTablecSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r`	sz5getPhases.<locals>.InSelectInTablePhase.startTagOthercSs@|jjdd|di�|jj|ddd�r<|jtd��|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler<r�)rTr�)rFrxr:rUrr)r>r�r'r'r(r�c	sz3getPhases.<locals>.InSelectInTablePhase.endTagTablecSs|jjdj|�S)Nr�)rFrCr�)r>r�r'r'r(ri	sz3getPhases.<locals>.InSelectInTablePhase.endTagOtherr�r�r�r�r�r�r�r�N)r�r�r�r�r�r�r�r�)r�r�r�r�r�r�r�r�)r5r6r7r
r�r�r}rnrr�rrrr�rr�r'r'r'r(�InSelectInTablePhaseR	s

rc-s�eZdZe�Zeddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,�Zd-d.�Z�fd/d0�Zd1d2�Z	d3d4�Z
d5S)6z(getPhases.<locals>.InForeignContentPhaser�r�r�r�rr�r�rCr)r�rDr�r�Zh1Zh2Zh3Zh4Zh5Zh6r�r{r�rurErHr�r2rir�r&rGr�r�r��spanr�r��sub�supr�r�r�r��varc%Ssnddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%�$}|d&|krj||d&|d&<dS)'NZaltGlyphZaltGlyphDefZaltGlyphItemZanimateColorZ
animateMotionZanimateTransformZclipPathZfeBlendZ
feColorMatrixZfeComponentTransferZfeCompositeZfeConvolveMatrixZfeDiffuseLightingZfeDisplacementMapZfeDistantLightZfeFloodZfeFuncAZfeFuncBZfeFuncGZfeFuncRZfeGaussianBlurZfeImageZfeMergeZfeMergeNodeZfeMorphologyZfeOffsetZfePointLightZfeSpecularLightingZfeSpotLightZfeTileZfeTurbulenceZ
foreignObjectZglyphRefZlinearGradientZradialGradientZtextPath)$ZaltglyphZaltglyphdefZaltglyphitemZanimatecolorZ
animatemotionZanimatetransformZclippathZfeblendZ
fecolormatrixZfecomponenttransferZfecompositeZfeconvolvematrixZfediffuselightingZfedisplacementmapZfedistantlightZfefloodZfefuncaZfefuncbZfefuncgZfefuncrZfegaussianblurZfeimageZfemergeZfemergenodeZfemorphologyZfeoffsetZfepointlightZfespecularlightingZfespotlightZfetileZfeturbulenceZ
foreignobjectZglyphrefZlineargradientZradialgradientZtextpathr<r')r>r��replacementsr'r'r(�adjustSVGTagNames�	sLz:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n&|jjr<tdd�|dD��r<d|j_�j||�dS)NrprLu�css|]}|tkVqdS)N)r
)r;rMr'r'r(�	<genexpr>�	szMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rFr]rOr})r>r�)r�r'r(r}�	s
z:getPhases.<locals>.InForeignContentPhase.processCharacterscSs2|jjd}|d|jks@|ddkr�t|dj��dddh@r�|jjdd|di�xR|jjdj|jjkr�|jj	|jjd�r�|jj
|jjd�r�|jjj�qXW|S|jtd	kr�|jj
|�n$|jtd
kr�|j|�|jj|�|jj|�|j|d<|jj|�|d�r.|jjj�d
|d<dS)Nrr<r�rpZcolorZface�sizez*unexpected-html-element-in-foreign-contentrarrrertTrurvrvrvrv)r:rw�breakoutElements�set�keysrFrxrer{rirjr�rrrrrr�)r>r�r�r'r'r(r�	s.



z8getPhases.<locals>.InForeignContentPhase.processStartTagcSs�t|jj�d}|jjd}|jjt�|dkrF|jjdd|di�x�|jjt�|dkr�|jj|jj	dkr�|jjj
�|jjj|j_x |jjj�|kr�|jjs�t
�q�Wd}P|d8}|jj|}|j|jjkr�qHqH|jjj|�}PqHW|S)Nrr<zunexpected-end-tagr�rv)rzr:rwr<rgrrFrxrZrCr�r�r�r�rer{r�)r>r�Z	nodeIndexr�r�r'r'r(r��	s(z6getPhases.<locals>.InForeignContentPhase.processEndTagN)r5r6r7r
r�r|rrr}rr�r')r�r'r(�InForeignContentPhasex	s


)rc@sveZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zej
defg�Ze	e_ej
de
fg�Zee_dS)z!getPhases.<locals>.AfterBodyPhasecSsdS)Nr')r>r'r'r(r��	sz,getPhases.<locals>.AfterBodyPhase.processEOFcSs|jj||jjd�dS)Nr)r:r�rw)r>r�r'r'r(r��	sz0getPhases.<locals>.AfterBodyPhase.processCommentcSs |jjd�|jjd|j_|S)Nzunexpected-char-after-bodyr�)rFrxrCrZ)r>r�r'r'r(r}�	sz3getPhases.<locals>.AfterBodyPhase.processCharacterscSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r��	sz.getPhases.<locals>.AfterBodyPhase.startTagHtmlcSs*|jjdd|di�|jjd|j_|S)Nzunexpected-start-tag-after-bodyr<r�)rFrxrCrZ)r>r�r'r'r(r�	sz/getPhases.<locals>.AfterBodyPhase.startTagOthercSs*|jjr|jjd�n|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtml�afterAfterBody)rFrMrxrCrZ)r>r<r'r'r(r�
sz,getPhases.<locals>.AfterBodyPhase.endTagHtmlcSs*|jjdd|di�|jjd|j_|S)Nzunexpected-end-tag-after-bodyr<r�)rFrxrCrZ)r>r�r'r'r(r

sz-getPhases.<locals>.AfterBodyPhase.endTagOtherr�N)r5r6r7r
r�r�r�r}r�rr�rrrr�rr�r'r'r'r(�AfterBodyPhase�	srcs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
jd�jfdefdefde	fg�Ze
e_e
jdefg�Zee_dS)z"getPhases.<locals>.InFramesetPhasecSs0|jjdjdkr |jjd�n|jjs,t�dS)Nrr�zeof-in-framesetrv)r:rwr<rFrxrMr�)r>r'r'r(r�
sz-getPhases.<locals>.InFramesetPhase.processEOFcSs|jjd�dS)Nzunexpected-char-in-frameset)rFrx)r>r�r'r'r(r}"
sz4getPhases.<locals>.InFramesetPhase.processCharacterscSs|jj|�dS)N)r:r�)r>r�r'r'r(r8%
sz3getPhases.<locals>.InFramesetPhase.startTagFramesetcSs|jj|�|jjj�dS)N)r:r�rwr�)r>r�r'r'r(�
startTagFrame(
sz0getPhases.<locals>.InFramesetPhase.startTagFramecSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(�startTagNoframes,
sz3getPhases.<locals>.InFramesetPhase.startTagNoframescSs|jjdd|di�dS)Nz unexpected-start-tag-in-framesetr<)rFrx)r>r�r'r'r(r/
sz0getPhases.<locals>.InFramesetPhase.startTagOthercSs\|jjdjdkr |jjd�n|jjj�|jjrX|jjdjdkrX|jjd|j_dS)Nrr�z)unexpected-frameset-in-frameset-innerhtmlr��
afterFramesetrvrv)	r:rwr<rFrxr�rMrCrZ)r>r�r'r'r(�endTagFrameset3
s
z1getPhases.<locals>.InFramesetPhase.endTagFramesetcSs|jjdd|di�dS)Nzunexpected-end-tag-in-framesetr<)rFrx)r>r�r'r'r(r?
sz.getPhases.<locals>.InFramesetPhase.endTagOtherr�r�r�r)N)r5r6r7r
r�r�r}r8rrrrrrrr�r�rr�r')r�r'r(�InFramesetPhase
s$rcsveZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
ejd
�j
fdefg�Zee_ejd
e	fg�Ze
e_dS)z%getPhases.<locals>.AfterFramesetPhasecSsdS)Nr')r>r'r'r(r�T
sz0getPhases.<locals>.AfterFramesetPhase.processEOFcSs|jjd�dS)Nzunexpected-char-after-frameset)rFrx)r>r�r'r'r(r}X
sz7getPhases.<locals>.AfterFramesetPhase.processCharacterscSs|jjdj|�S)Nr)rFrCr)r>r�r'r'r(r[
sz6getPhases.<locals>.AfterFramesetPhase.startTagNoframescSs|jjdd|di�dS)Nz#unexpected-start-tag-after-framesetr<)rFrx)r>r�r'r'r(r^
sz3getPhases.<locals>.AfterFramesetPhase.startTagOthercSs|jjd|j_dS)N�afterAfterFrameset)rFrCrZ)r>r�r'r'r(r�b
sz0getPhases.<locals>.AfterFramesetPhase.endTagHtmlcSs|jjdd|di�dS)Nz!unexpected-end-tag-after-framesetr<)rFrx)r>r�r'r'r(re
sz1getPhases.<locals>.AfterFramesetPhase.endTagOtherr�r)N)r5r6r7r
r�r�r}rrr�rrrr�r�rr�r')r�r'r(�AfterFramesetPhaseP
src@s`eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zej
de	fg�Ze
e_dS)z&getPhases.<locals>.AfterAfterBodyPhasecSsdS)Nr')r>r'r'r(r�w
sz1getPhases.<locals>.AfterAfterBodyPhase.processEOFcSs|jj||jj�dS)N)r:r�r�)r>r�r'r'r(r�z
sz5getPhases.<locals>.AfterAfterBodyPhase.processCommentcSs|jjdj|�S)Nr�)rFrCr~)r>r�r'r'r(r~}
sz=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharacterscSs |jjd�|jjd|j_|S)Nzexpected-eof-but-got-charr�)rFrxrCrZ)r>r�r'r'r(r}�
sz8getPhases.<locals>.AfterAfterBodyPhase.processCharacterscSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r��
sz3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlcSs*|jjdd|di�|jjd|j_|S)Nzexpected-eof-but-got-start-tagr<r�)rFrxrCrZ)r>r�r'r'r(r�
sz4getPhases.<locals>.AfterAfterBodyPhase.startTagOthercSs*|jjdd|di�|jjd|j_|S)Nzexpected-eof-but-got-end-tagr<r�)rFrxrCrZ)r>r�r'r'r(r��
sz4getPhases.<locals>.AfterAfterBodyPhase.processEndTagr�N)r5r6r7r
r�r�r�r~r}r�rr�rrr�rr'r'r'r(�AfterAfterBodyPhaset
src@sneZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
jde	fde
fg�Zee_dS)z*getPhases.<locals>.AfterAfterFramesetPhasecSsdS)Nr')r>r'r'r(r��
sz5getPhases.<locals>.AfterAfterFramesetPhase.processEOFcSs|jj||jj�dS)N)r:r�r�)r>r�r'r'r(r��
sz9getPhases.<locals>.AfterAfterFramesetPhase.processCommentcSs|jjdj|�S)Nr�)rFrCr~)r>r�r'r'r(r~�
szAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharacterscSs|jjd�dS)Nzexpected-eof-but-got-char)rFrx)r>r�r'r'r(r}�
sz<getPhases.<locals>.AfterAfterFramesetPhase.processCharacterscSs|jjdj|�S)Nr�)rFrCr)r>r�r'r'r(r��
sz7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlcSs|jjdj|�S)Nr)rFrCr)r>r�r'r'r(�startTagNoFrames�
sz;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramescSs|jjdd|di�dS)Nzexpected-eof-but-got-start-tagr<)rFrx)r>r�r'r'r(r�
sz8getPhases.<locals>.AfterAfterFramesetPhase.startTagOthercSs|jjdd|di�dS)Nzexpected-eof-but-got-end-tagr<)rFrx)r>r�r'r'r(r��
sz8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagr�r)N)r5r6r7r
r�r�r�r~r}r�rrr�rrr�rr'r'r'r(�AfterAfterFramesetPhase�
sr)rQrPr�rr"r%r�r�r�r�r�r�r�r�r�r�r�rsr�r�rrr)r)rDrSr�rrrr2r6r;r�r�r�r�r�r�r�rrrrrrrrr')r>r�r�r(rB�spH%-f?BY!/F@bYLc&r.8$%&rBcsFt|d�t��@}|rBt|d��fdd�|dj�D��|d<dS)Nrpc3s"|]\}}�j||�|fVqdS)N)ry)r;�k�v)rr'r(r	�
sz$adjust_attributes.<locals>.<genexpr>)rr0r,)r�rZneeds_adjustmentr')rr(r��
sr�rmFcCs|dkri}t||||d�S)N)r0r<rprt)r)r<r0rfrtr'r'r(r�
s
rc@seZdZdZdS)rozError in parsed documentN)r5r6r7r�r'r'r'r(ro�
sro)rT)r)rT)rmNF),Z
__future__rrrZpip._vendor.sixrrr.r�rr	r
Ztreebuilders.baserrZ	constantsr
rrrrrrrrrrrr�rrrrr!r+r9r�r ZmemoizerBr�r�	Exceptionror'r'r'r(�<module>sJH

8`


Youez - 2016 - github.com/yon3zu
LinuXploit