<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
Pf                @   sF  d dl mZmZmZ d dlmZmZmZ d dlZyd dl	m
Z
 W n  ek
r`   d dlm
Z
 Y nX 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dZ&d"ddZ'dd Z(G dd de)Z*ej+dd Z,dd Z-d#ddZ.G dd  d e/Z0dS )$    )absolute_importdivisionunicode_literals)with_metaclassviewkeysPY3N)OrderedDict   )_inputstream)
_tokenizer)treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElementscdataElementsrcdataElements
tokenTypestagTokenTypes
namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesEReparseExceptionetreeTc             K   s$   t j|}t||d}|j| f|S )z.Parse a string or file-like object into a tree)namespaceHTMLElements)r   getTreeBuilder
HTMLParserparse)doctreebuilderr    kwargstbp r)   !/usr/lib/python3.6/html5parser.pyr#      s    
r#   divc             K   s,   t j|}t||d}|j| fd|i|S )N)r    	container)r   r!   r"   parseFragment)r$   r,   r%   r    r&   r'   r(   r)   r)   r*   r-   &   s    
r-   c                s   G  fdddt }|S )Nc                   s   e Zd Z fddZdS )z-method_decorator_metaclass.<locals>.Decoratedc                sB   x0|j  D ]$\}}t|tjr& |}|||< q
W tj| |||S )N)items
isinstancetypesFunctionTypetype__new__)metaZ	classnamebasesZ	classDictZattributeNameZ	attribute)functionr)   r*   r3   .   s
    z5method_decorator_metaclass.<locals>.Decorated.__new__N)__name__
__module____qualname__r3   r)   )r6   r)   r*   	Decorated-   s   r:   )r2   )r6   r:   r)   )r6   r*   method_decorator_metaclass,   s    r;   c               @   s   e Zd ZdZd+ddZd,dd	Zd
d Zedd Zdd Z	dd Z
dd Zdd Zdd Zdd Zd-ddZdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* ZdS ).r"   zZHTML parser. Generates a tree structure from a stream of (possibly
        malformed) HTMLNFTc                sL   | _ |dkrtjd}|| _g  _t fddt|j D  _dS )a  
        strict - raise an exception when a parse error is encountered

        tree - a treebuilder class controlling the type of tree that will be
        returned. Built in treebuilders can be accessed through
        html5lib.treebuilders.getTreeBuilder(treeType)
        Nr   c                s    g | ]\}}||  j fqS r)   )tree).0namecls)selfr)   r*   
<listcomp>M   s    z'HTMLParser.__init__.<locals>.<listcomp>)	strictr   r!   r<   errorsdict	getPhasesr.   phases)r@   r<   rB   r    debugr)   )r@   r*   __init__<   s    


zHTMLParser.__init__r+   c             K   sh   || _ || _|| _tj|fd| i|| _| j  y| j  W n$ tk
rb   | j  | j  Y nX d S )Nparser)	innerHTMLModer,   	scriptingr   ZHTMLTokenizer	tokenizerresetmainLoopr   )r@   stream	innerHTMLr,   rK   r&   r)   r)   r*   _parseP   s    zHTMLParser._parsec             C   s   | j j  d| _g | _g | _d| _| jr| jj | _	| j	t
krL| jj| j_n0| j	tkrd| jj| j_n| j	dkr|| jj| j_n | jd | _| jj  | j  nd| _	| jd | _d | _d | _d| _d S )NFz	no quirks	plaintext
beforeHtmlinitialT)r<   rM   firstStartTagrC   log
compatModerJ   r,   lowerrP   r   rL   rcdataStatestater   rawtextStateplaintextStaterF   phaseinsertHtmlElementresetInsertionModeZ	lastPhaseZbeforeRCDataPhase
framesetOK)r@   r)   r)   r*   rM   ^   s*    





zHTMLParser.resetc             C   s   t | dsdS | jjjd jS )zThe name of the character encoding
        that was used to decode the input stream,
        or :obj:`None` if that is not determined yet.

        rL   Nr   )hasattrrL   rO   charEncodingr>   )r@   r)   r)   r*   documentEncoding   s    
zHTMLParser.documentEncodingc             C   sJ   |j dkr6|jtd kr6d|jko4|jd jtdkS |j|j ftkS d S )Nzannotation-xmlmathmlencoding	text/htmlapplication/xhtml+xml)rf   rg   )r>   	namespacer   
attributes	translater   r   )r@   elementr)   r)   r*   isHTMLIntegrationPoint   s    


z!HTMLParser.isHTMLIntegrationPointc             C   s   |j |jftkS )N)rh   r>   r   )r@   rk   r)   r)   r*   isMathMLTextIntegrationPoint   s    z'HTMLParser.isMathMLTextIntegrationPointc             C   sj  t d }t d }t d }t d }t d }t d }t d }x| j D ]}d }	|}
x|
d k	r |
}	| jjrx| jjd nd }|r|jnd }|r|jnd }|
d	 }||kr| j|
d
 |
jdi  d }
qVt| jjdksl|| jj	ksl| j
|r ||kr|d tddgksl|||fksl|td krP|dkrP||krP|d dksl| j|rt||||fkrt| j}n
| jd }||kr|j|
}
qV||kr|j|
}
qV||kr|j|
}
qV||kr|j|
}
qV||kr|j|
}
qV||krV|j|
}
qVW ||krD|	d rD|	d  rD| jdd|	d i qDW d}g }x(|rd|j| j | jj }|r>q>W d S )N
CharactersZSpaceCharactersStartTagEndTagCommentZDoctype
ParseErrorr	   r2   datadatavarsr   r>   ZmglyphZ
malignmarkrd   zannotation-xmlsvginForeignContentselfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)r   normalizedTokensr<   openElementsrh   r>   
parseErrorgetlendefaultNamespacerm   	frozensetr   rl   r]   rF   processCharactersprocessSpaceCharactersprocessStartTagprocessEndTagprocessCommentprocessDoctypeappend
processEOF)r@   ZCharactersTokenZSpaceCharactersTokenZStartTagTokenZEndTagTokenZCommentTokenZDoctypeTokenZParseErrorTokentokenZ
prev_token	new_tokencurrentNodeZcurrentNodeNamespaceZcurrentNodeNamer2   r]   Z	reprocessrF   r)   r)   r*   rN      sp    










zHTMLParser.mainLoopc             c   s    x| j D ]}| j|V  qW d S )N)rL   normalizeToken)r@   r   r)   r)   r*   rz      s    zHTMLParser.normalizedTokensc             O   s    | j |ddf|| | jj S )a  Parse a HTML document into a well-formed tree

        stream - a filelike 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)

        scripting - treat noscript elements as if javascript was turned on
        FN)rQ   r<   ZgetDocument)r@   rO   argsr&   r)   r)   r*   r#      s    zHTMLParser.parsec             O   s   | j |df|| | jj S )a2  Parse a HTML fragment into a well-formed tree fragment

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

        stream - a filelike 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)

        scripting - treat noscript elements as if javascript was turned on
        T)rQ   r<   ZgetFragment)r@   rO   r   r&   r)   r)   r*   r-      s    zHTMLParser.parseFragmentXXX-undefined-errorc             C   s@   |d kri }| j j| jjj ||f | jr<tt| | d S )N)rC   r   rL   rO   ZpositionrB   rr   r   )r@   	errorcodert   r)   r)   r*   r|      s
    zHTMLParser.parseErrorc             C   sT   |d t d krP|d }t||d< t|t|d krP|d j|ddd  |S )z3 HTML5 specific normalizations to the token stream r2   ro   rs   Nr	   ry   )r   r   r~   update)r@   r   rawr)   r)   r*   r     s    zHTMLParser.normalizeTokenc             C   s   t |t d S )N)adjust_attributesr   )r@   r   r)   r)   r*   r     s    z!HTMLParser.adjustMathMLAttributesc             C   s   t |t d S )N)r   r   )r@   r   r)   r)   r*   r     s    zHTMLParser.adjustSVGAttributesc             C   s   t |t d S )N)r   adjustForeignAttributesMap)r@   r   r)   r)   r*   r     s    z"HTMLParser.adjustForeignAttributesc             C   s   | j j  d S )N)rI   r]   )r@   r   r)   r)   r*   reparseTokenNormal  s    zHTMLParser.reparseTokenNormalc             C   s   d}ddddddddddd	d	d
dd}x| j jd d d D ]p}|j}d }|| j jd krbd}| j}|dkrj| r|j| j jkrq:||kr| j||  }P q:|r:| jd	 }P q:W || _d S )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   Tr   r   r   r   ry   )r   r   r   r   )r<   r{   r>   rP   rh   r   rF   r]   )r@   ZlastZnewModesnodeZnodeNameZ	new_phaser)   r)   r*   r_   !  s>    
zHTMLParser.resetInsertionModec             C   sF   | j j| |dkr"| jj| j_n| jj| j_| j| _| jd | _dS )zYGeneric RCDATA/RAWTEXT Parsing algorithm
        contentType - RCDATA or RAWTEXT
        RAWTEXTtextN)	r<   insertElementrL   r[   rZ   rY   r]   originalPhaserF   )r@   r   ZcontentTyper)   r)   r*   parseRCDataRawtextM  s    zHTMLParser.parseRCDataRawtext)NFTF)Fr+   F)r   N)r7   r8   r9   __doc__rH   rQ   rM   propertyrc   rl   rm   rN   rz   r#   r-   r|   r   r   r   r   r   r_   r   r)   r)   r)   r*   r"   8   s&   

"
C
,r"   c                s"  dd }dd }G dd dt || | G dd d }G d	d
 d
 }G  fddd }G  fddd }G  fddd }G  fddd }G  fddd }	G  fddd }
G  fddd }G  fddd }G  fddd }G  fddd }G  fdd d  }G  fd!d"d" }G  fd#d$d$ }G  fd%d&d& }G  fd'd(d( }G  fd)d*d* }G  fd+d,d, }G  fd-d.d. }G  fd/d0d0 }G  fd1d2d2 }G  fd3d4d4 }|||||||	|
|||||||||||||||d5S )6Nc                s(   t dd tj D  fdd}|S )z4Logger that records which phase processes each tokenc             s   s   | ]\}}||fV  qd S )Nr)   )r=   keyvaluer)   r)   r*   	<genexpr>c  s    z)getPhases.<locals>.log.<locals>.<genexpr>c                s    j jdrt|dkr|d }yd|d  i}W n    Y nX |d tkr\|d |d< | jjj| jjjj | jj	j
j | j
j  j |f  | f||S  | f||S d S )NZprocessr   r2   r>   )r7   
startswithr~   r   rI   rV   r   rL   rZ   r]   	__class__)r@   r   r&   r   info)r6   
type_namesr)   r*   wrappedf  s    
z'getPhases.<locals>.log.<locals>.wrapped)rD   r   r.   )r6   r   r)   )r6   r   r*   rV   a  s    zgetPhases.<locals>.logc             S   s   | rt |S tS d S )N)r;   r2   )Zuse_metaclassZmetaclass_funcr)   r)   r*   getMetaclassz  s    zgetPhases.<locals>.getMetaclassc               @   sX   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd ZdS )zgetPhases.<locals>.PhasezNBase class for helper object that implements each phase of processing
        c             S   s   || _ || _d S )N)rI   r<   )r@   rI   r<   r)   r)   r*   rH     s    z!getPhases.<locals>.Phase.__init__c             S   s   t d S )N)NotImplementedError)r@   r)   r)   r*   r     s    z#getPhases.<locals>.Phase.processEOFc             S   s   | j j|| j jd  d S )Nr	   ry   )r<   insertCommentr{   )r@   r   r)   r)   r*   r     s    z'getPhases.<locals>.Phase.processCommentc             S   s   | j jd d S )Nzunexpected-doctype)rI   r|   )r@   r   r)   r)   r*   r     s    z'getPhases.<locals>.Phase.processDoctypec             S   s   | j j|d  d S )Nrs   )r<   
insertText)r@   r   r)   r)   r*   r     s    z*getPhases.<locals>.Phase.processCharactersc             S   s   | j j|d  d S )Nrs   )r<   r   )r@   r   r)   r)   r*   r     s    z/getPhases.<locals>.Phase.processSpaceCharactersc             S   s   | j |d  |S )Nr>   )startTagHandler)r@   r   r)   r)   r*   r     s    z(getPhases.<locals>.Phase.processStartTagc             S   sl   | j j r"|d dkr"| j jd x<|d j D ],\}}|| jjd jkr0|| jjd j|< q0W d| j _d S )Nr>   r   znon-html-rootrs   r   F)rI   rU   r|   r.   r<   r{   ri   )r@   r   attrr   r)   r)   r*   startTagHtml  s    z%getPhases.<locals>.Phase.startTagHtmlc             S   s   | j |d  |S )Nr>   )endTagHandler)r@   r   r)   r)   r*   r     s    z&getPhases.<locals>.Phase.processEndTagN)r7   r8   r9   r   rH   r   r   r   r   r   r   r   r   r)   r)   r)   r*   Phase  s   
r   c               @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )zgetPhases.<locals>.InitialPhasec             S   s   d S )Nr)   )r@   r   r)   r)   r*   r     s    z6getPhases.<locals>.InitialPhase.processSpaceCharactersc             S   s   | j j|| j j d S )N)r<   r   document)r@   r   r)   r)   r*   r     s    z.getPhases.<locals>.InitialPhase.processCommentc          8   S   s  |d }|d }|d }|d }|dks@|d k	s@|d k	rL|dkrL| j jd |d krXd}| jj| |dkrv|jt}|  s|d dk s|jdJ s|dKk s|jdL r|d k s| r|j dDk rdE| j _n*|jdM s|jdNr |d k	r dH| j _| j j	dI | j _
d S )ONr>   publicIdsystemIdcorrectr   zabout:legacy-compatzunknown-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//zlimited quirksrS   )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   r   r   r   r   r  )r  r  r   )r  r  )r  r  )r  r  )rI   r|   r<   ZinsertDoctyperj   r   r   rX   rW   rF   r]   )r@   r   r>   r   r   r   r)   r)   r*   r     s    
                                                        

  
z.getPhases.<locals>.InitialPhase.processDoctypec             S   s   d| j _| j jd | j _d S )Nr  rS   )rI   rW   rF   r]   )r@   r)   r)   r*   anythingElse  s    z,getPhases.<locals>.InitialPhase.anythingElsec             S   s   | j jd | j  |S )Nzexpected-doctype-but-got-chars)rI   r|   r	  )r@   r   r)   r)   r*   r     s    z1getPhases.<locals>.InitialPhase.processCharactersc             S   s"   | j jdd|d i | j  |S )Nz"expected-doctype-but-got-start-tagr>   )rI   r|   r	  )r@   r   r)   r)   r*   r     s    z/getPhases.<locals>.InitialPhase.processStartTagc             S   s"   | j jdd|d i | j  |S )Nz expected-doctype-but-got-end-tagr>   )rI   r|   r	  )r@   r   r)   r)   r*   r     s    z-getPhases.<locals>.InitialPhase.processEndTagc             S   s   | j jd | j  dS )Nzexpected-doctype-but-got-eofT)rI   r|   r	  )r@   r)   r)   r*   r   %  s    z*getPhases.<locals>.InitialPhase.processEOFN)r7   r8   r9   r   r   r   r	  r   r   r   r   r)   r)   r)   r*   InitialPhase  s   _r
  c               @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )z"getPhases.<locals>.BeforeHtmlPhasec             S   s&   | j jtdd | jjd | j_d S )Nr   ro   r   )r<   Z
insertRootimpliedTagTokenrI   rF   r]   )r@   r)   r)   r*   r^   ,  s    z4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementc             S   s   | j   dS )NT)r^   )r@   r)   r)   r*   r   1  s    z-getPhases.<locals>.BeforeHtmlPhase.processEOFc             S   s   | j j|| j j d S )N)r<   r   r   )r@   r   r)   r)   r*   r   5  s    z1getPhases.<locals>.BeforeHtmlPhase.processCommentc             S   s   d S )Nr)   )r@   r   r)   r)   r*   r   8  s    z9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharactersc             S   s   | j   |S )N)r^   )r@   r   r)   r)   r*   r   ;  s    z4getPhases.<locals>.BeforeHtmlPhase.processCharactersc             S   s    |d dkrd| j _| j  |S )Nr>   r   T)rI   rU   r^   )r@   r   r)   r)   r*   r   ?  s    z2getPhases.<locals>.BeforeHtmlPhase.processStartTagc             S   s4   |d dkr$| j jdd|d i n| j  |S d S )Nr>   r   r   r   brzunexpected-end-tag-before-html)r   r   r   r  )rI   r|   r^   )r@   r   r)   r)   r*   r   E  s
    z0getPhases.<locals>.BeforeHtmlPhase.processEndTagN)
r7   r8   r9   r^   r   r   r   r   r   r   r)   r)   r)   r*   BeforeHtmlPhase*  s   r  c                   sX   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )z"getPhases.<locals>.BeforeHeadPhasec                sV    j | || tjd| jfd| jfg| _| j| j_tjd| jfg| _	| j
| j	_d S )Nr   r   r   r  )r   r   r   r  )rH   r   MethodDispatcherr   startTagHeadr   startTagOtherdefaultendTagImplyHeadr   endTagOther)r@   rI   r<   )r   r)   r*   rH   N  s    
z+getPhases.<locals>.BeforeHeadPhase.__init__c             S   s   | j tdd dS )Nr   ro   T)r  r  )r@   r)   r)   r*   r   \  s    z-getPhases.<locals>.BeforeHeadPhase.processEOFc             S   s   d S )Nr)   )r@   r   r)   r)   r*   r   `  s    z9getPhases.<locals>.BeforeHeadPhase.processSpaceCharactersc             S   s   | j tdd |S )Nr   ro   )r  r  )r@   r   r)   r)   r*   r   c  s    z4getPhases.<locals>.BeforeHeadPhase.processCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   g  s    z/getPhases.<locals>.BeforeHeadPhase.startTagHtmlc             S   s0   | j j| | j jd | j _| jjd | j_d S )Nr	   inHeadry   )r<   r   r{   headPointerrI   rF   r]   )r@   r   r)   r)   r*   r  j  s    z/getPhases.<locals>.BeforeHeadPhase.startTagHeadc             S   s   | j tdd |S )Nr   ro   )r  r  )r@   r   r)   r)   r*   r  o  s    z0getPhases.<locals>.BeforeHeadPhase.startTagOtherc             S   s   | j tdd |S )Nr   ro   )r  r  )r@   r   r)   r)   r*   r  s  s    z2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadc             S   s   | j jdd|d i d S )Nzend-tag-after-implied-rootr>   )rI   r|   )r@   r   r)   r)   r*   r  w  s    z.getPhases.<locals>.BeforeHeadPhase.endTagOtherN)r7   r8   r9   rH   r   r   r   r   r  r  r  r  r)   )r   r)   r*   BeforeHeadPhaseM  s   r  c                   s   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!S )"zgetPhases.<locals>.InHeadPhasec                s    j | || tjd| jfd| jfd| jfd| jfd| jfd| jfd| j	fd| j
fg| _| j| j_tjd| jfd| jfg| _| j| j_d S )Nr   titlenoframesstylenoscriptscriptbasebasefontbgsoundcommandlinkr4   r   r  r   )r  r  )r  r  r  r  r   )r  r   r   )rH   r   r  r   startTagTitlestartTagNoFramesStylestartTagNoscriptstartTagScriptstartTagBaseLinkCommandstartTagMetar  r   r  r  
endTagHeadendTagHtmlBodyBrr   r  )r@   rI   r<   )r   r)   r*   rH   |  s     
z'getPhases.<locals>.InHeadPhase.__init__c             S   s   | j   dS )NT)r	  )r@   r)   r)   r*   r     s    z)getPhases.<locals>.InHeadPhase.processEOFc             S   s   | j   |S )N)r	  )r@   r   r)   r)   r*   r     s    z0getPhases.<locals>.InHeadPhase.processCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r     s    z+getPhases.<locals>.InHeadPhase.startTagHtmlc             S   s   | j jd d S )Nz!two-heads-are-not-better-than-one)rI   r|   )r@   r   r)   r)   r*   r    s    z+getPhases.<locals>.InHeadPhase.startTagHeadc             S   s$   | j j| | j jj  d|d< d S )NTrx   )r<   r   r{   pop)r@   r   r)   r)   r*   r%    s    z6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommandc             S   s   | j j| | j jj  d|d< |d }| jjjjd dkrd|krZ| jjjj|d  nVd|krd|kr|d j	 d	krt
j|d jd
}t
j|}|j }| jjjj| d S )NTrx   rs   r	   Z	tentativecharsetZcontentz
http-equivzcontent-typezutf-8)r<   r   r{   r)  rI   rL   rO   rb   ZchangeEncodingrX   r
   ZEncodingBytesencodeZContentAttrParserr#   )r@   r   ri   rs   rI   codecr)   r)   r*   r&    s    
z+getPhases.<locals>.InHeadPhase.startTagMetac             S   s   | j j|d d S )NZRCDATA)rI   r   )r@   r   r)   r)   r*   r!    s    z,getPhases.<locals>.InHeadPhase.startTagTitlec             S   s   | j j|d d S )Nr   )rI   r   )r@   r   r)   r)   r*   r"    s    z4getPhases.<locals>.InHeadPhase.startTagNoFramesStylec             S   s8   | j jr| j j|d n| jj| | j jd | j _d S )Nr   inHeadNoscript)rI   rK   r   r<   r   rF   r]   )r@   r   r)   r)   r*   r#    s    z/getPhases.<locals>.InHeadPhase.startTagNoscriptc             S   s<   | j j| | jjj| jj_| jj| j_| jjd | j_d S )Nr   )	r<   r   rI   rL   ZscriptDataStaterZ   r]   r   rF   )r@   r   r)   r)   r*   r$    s    z-getPhases.<locals>.InHeadPhase.startTagScriptc             S   s   | j   |S )N)r	  )r@   r   r)   r)   r*   r    s    z,getPhases.<locals>.InHeadPhase.startTagOtherc             S   s"   | j jjj }| j jd | j _d S )N	afterHead)rI   r<   r{   r)  rF   r]   )r@   r   r   r)   r)   r*   r'    s    z)getPhases.<locals>.InHeadPhase.endTagHeadc             S   s   | j   |S )N)r	  )r@   r   r)   r)   r*   r(    s    z/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrc             S   s   | j jdd|d i d S )Nzunexpected-end-tagr>   )rI   r|   )r@   r   r)   r)   r*   r    s    z*getPhases.<locals>.InHeadPhase.endTagOtherc             S   s   | j td d S )Nr   )r'  r  )r@   r)   r)   r*   r	    s    z+getPhases.<locals>.InHeadPhase.anythingElseN)r7   r8   r9   rH   r   r   r   r  r%  r&  r!  r"  r#  r$  r  r'  r(  r  r	  r)   )r   r)   r*   InHeadPhase{  s    r/  c                   sx   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )z&getPhases.<locals>.InHeadNoscriptPhasec                sf    j | || tjd| jfd| jfd| jfg| _| j| j_tjd	| j	fd
| j
fg| _| j| j_d S )Nr   r  r  r   r4   r  r  r   r  r  )r  r  r   r4   r  r  )r   r  )rH   r   r  r   r%  startTagHeadNoscriptr   r  r  endTagNoscriptendTagBrr   r  )r@   rI   r<   )r   r)   r*   rH     s    
z/getPhases.<locals>.InHeadNoscriptPhase.__init__c             S   s   | j jd | j  dS )Nzeof-in-head-noscriptT)rI   r|   r	  )r@   r)   r)   r*   r     s    z1getPhases.<locals>.InHeadNoscriptPhase.processEOFc             S   s   | j jd j|S )Nr  )rI   rF   r   )r@   r   r)   r)   r*   r     s    z5getPhases.<locals>.InHeadNoscriptPhase.processCommentc             S   s   | j jd | j  |S )Nzchar-in-head-noscript)rI   r|   r	  )r@   r   r)   r)   r*   r     s    z8getPhases.<locals>.InHeadNoscriptPhase.processCharactersc             S   s   | j jd j|S )Nr  )rI   rF   r   )r@   r   r)   r)   r*   r      s    z=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r     s    z3getPhases.<locals>.InHeadNoscriptPhase.startTagHtmlc             S   s   | j jd j|S )Nr  )rI   rF   r   )r@   r   r)   r)   r*   r%    s    z>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandc             S   s   | j jdd|d i d S )Nzunexpected-start-tagr>   )rI   r|   )r@   r   r)   r)   r*   r0  	  s    z;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptc             S   s"   | j jdd|d i | j  |S )Nzunexpected-inhead-noscript-tagr>   )rI   r|   r	  )r@   r   r)   r)   r*   r    s    z4getPhases.<locals>.InHeadNoscriptPhase.startTagOtherc             S   s"   | j jjj }| j jd | j _d S )Nr  )rI   r<   r{   r)  rF   r]   )r@   r   r   r)   r)   r*   r1    s    z5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptc             S   s"   | j jdd|d i | j  |S )Nzunexpected-inhead-noscript-tagr>   )rI   r|   r	  )r@   r   r)   r)   r*   r2    s    z/getPhases.<locals>.InHeadNoscriptPhase.endTagBrc             S   s   | j jdd|d i d S )Nzunexpected-end-tagr>   )rI   r|   )r@   r   r)   r)   r*   r    s    z2getPhases.<locals>.InHeadNoscriptPhase.endTagOtherc             S   s   | j td d S )Nr  )r1  r  )r@   r)   r)   r*   r	    s    z3getPhases.<locals>.InHeadNoscriptPhase.anythingElseN)r7   r8   r9   rH   r   r   r   r   r   r%  r0  r  r1  r2  r  r	  r)   )r   r)   r*   InHeadNoscriptPhase  s   r3  c                   sp   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )z!getPhases.<locals>.AfterHeadPhasec                sn    j | || tjd| jfd| jfd| jfd| jfd| jfg| _| j	| j_
tjd| jfg| _| j| j_
d S )Nr   r   r   r  r  r  r   r4   r  r  r  r  r   r  )	r  r  r  r   r4   r  r  r  r  )r   r   r  )rH   r   r  r   startTagBodystartTagFramesetstartTagFromHeadr  r   r  r  r(  r   r  )r@   rI   r<   )r   r)   r*   rH   #  s     
z*getPhases.<locals>.AfterHeadPhase.__init__c             S   s   | j   dS )NT)r	  )r@   r)   r)   r*   r   4  s    z,getPhases.<locals>.AfterHeadPhase.processEOFc             S   s   | j   |S )N)r	  )r@   r   r)   r)   r*   r   8  s    z3getPhases.<locals>.AfterHeadPhase.processCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   <  s    z.getPhases.<locals>.AfterHeadPhase.startTagHtmlc             S   s(   d| j _| jj| | j jd | j _d S )NFr   )rI   r`   r<   r   rF   r]   )r@   r   r)   r)   r*   r4  ?  s    z.getPhases.<locals>.AfterHeadPhase.startTagBodyc             S   s    | j j| | jjd | j_d S )Nr   )r<   r   rI   rF   r]   )r@   r   r)   r)   r*   r5  D  s    z2getPhases.<locals>.AfterHeadPhase.startTagFramesetc             S   st   | j jdd|d i | jjj| jj | j jd j| x4| jjd d d D ]}|jdkrN| jjj	| P qNW d S )Nz#unexpected-start-tag-out-of-my-headr>   r  r	   r   ry   )
rI   r|   r<   r{   r   r  rF   r   r>   remove)r@   r   r   r)   r)   r*   r6  H  s    
z2getPhases.<locals>.AfterHeadPhase.startTagFromHeadc             S   s   | j jdd|d i d S )Nzunexpected-start-tagr>   )rI   r|   )r@   r   r)   r)   r*   r  R  s    z.getPhases.<locals>.AfterHeadPhase.startTagHeadc             S   s   | j   |S )N)r	  )r@   r   r)   r)   r*   r  U  s    z/getPhases.<locals>.AfterHeadPhase.startTagOtherc             S   s   | j   |S )N)r	  )r@   r   r)   r)   r*   r(  Y  s    z2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrc             S   s   | j jdd|d i d S )Nzunexpected-end-tagr>   )rI   r|   )r@   r   r)   r)   r*   r  ]  s    z-getPhases.<locals>.AfterHeadPhase.endTagOtherc             S   s.   | j jtdd | jjd | j_d| j_d S )Nr   ro   r   T)r<   r   r  rI   rF   r]   r`   )r@   r)   r)   r*   r	  `  s    z.getPhases.<locals>.AfterHeadPhase.anythingElseN)r7   r8   r9   rH   r   r   r   r4  r5  r6  r  r  r(  r  r	  r)   )r   r)   r*   AfterHeadPhase"  s   
r8  c                   s  e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgS )hzgetPhases.<locals>.InBodyPhasec          ,      s   j | || | j| _tjd| jfdd| jfd| jfd| jfde| j	ft
| jfdf| jfd&| jfdg| jfd*| jfd+| jfdh| jfd8| jfd9| jfdi| jfd=| jfd>| jfdj| jfdk| jfdH| jfdI| jfdJ| jfdK| jfdL| jfdM| jfdN| jfdl| j fdQ| j!fdm| j"fdn| j#fdV| j$fdW| j%fdo| j&fg!| _'| j(| j'_)tjd| j*fd| j+fdp| j,fd&| j-fd | j.fdq| j/ft
| j0fdr| j1fds| j2fd@| j3fg
| _4| j5| j4_)d S )tNr   r  r  r  r  r   r4   r  r  r  r   r   addressarticleaside
blockquotecenterdetailsdirr+   dlfieldset
figcaptionfigurefooterheaderhgroupmainmenunavolr(   sectionsummaryulprelistingformlidddtrR   abbigcodeemfontissmallstrikestrongttunobrbuttonappletmarqueeobjectZxmpr   arear  embedimgkeygenwbrparamsourcetrackinputhrimageisindextextareaZiframer  noembedr  r   rprtoptionoptgroupZmathru   r   colr   framer   r   r   r   r   r   r   dialog)	r  r  r  r  r   r4   r  r  r  )r9  r:  r;  r<  r=  r>  r?  r+   r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  r(   rK  rL  rM  )rN  rO  )rQ  rR  rS  )rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  )rc  rd  re  )rf  r  rg  rh  ri  rj  )rk  rl  rm  )rs  r  )rt  ru  )rv  rw  )r   rx  r   ry  r   r   r   r   r   r   r   )r9  r:  r;  r<  rb  r=  r>  rz  r?  r+   r@  rA  rB  rC  rD  rE  rF  rO  rG  rH  rI  rJ  rN  rK  rL  rM  )rR  rS  rQ  )rT  rU  rV  rW  rX  rY  rZ  ra  r[  r\  r]  r^  r_  r`  )rc  rd  re  )6rH   processSpaceCharactersNonPrer   r   r  r   startTagProcessInHeadr4  r5  startTagClosePr   startTagHeadingstartTagPreListingstartTagFormstartTagListItemstartTagPlaintext	startTagAstartTagFormattingstartTagNobrstartTagButtonstartTagAppletMarqueeObjectstartTagXmpstartTagTablestartTagVoidFormattingstartTagParamSourcestartTagInput
startTagHrstartTagImagestartTagIsIndexstartTagTextareastartTagIFramer#  startTagRawtextstartTagSelectstartTagRpRtstartTagOptstartTagMathstartTagSvgstartTagMisplacedr   r  r  
endTagBody
endTagHtmlendTagBlock
endTagFormendTagPendTagListItemendTagHeadingendTagFormattingendTagAppletMarqueeObjectr2  r   r  )r@   rI   r<   )r   r)   r*   rH   h  s~           
    z'getPhases.<locals>.InBodyPhase.__init__c             S   s$   |j |j ko"|j|jko"|j|jkS )N)r>   rh   ri   )r@   Znode1Znode2r)   r)   r*   isMatchingFormattingElement  s    z:getPhases.<locals>.InBodyPhase.isMatchingFormattingElementc             S   s   | j j| | j jd }g }x<| j jd d d D ]&}|tkr@P q0| j||r0|j| q0W t|dkrx| j jj|d  | j jj| d S )Nr	      ry   ry   ry   )	r<   r   r{   activeFormattingElementsr   r  r   r~   r7  )r@   r   rk   ZmatchingElementsr   r)   r)   r*   addFormattingElement  s    z3getPhases.<locals>.InBodyPhase.addFormattingElementc             S   s@   t d}x2| jjd d d D ]}|j|kr| jjd P qW d S )NrR  rS  rQ  r(   r   r   r   r   r   r   r   r   r	   z expected-closing-tag-but-got-eof)rR  rS  rQ  r(   r   r   r   r   r   r   r   r   ry   )r   r<   r{   r>   rI   r|   )r@   Zallowed_elementsr   r)   r)   r*   r     s     
z)getPhases.<locals>.InBodyPhase.processEOFc             S   sh   |d }| j | _|jdrJ| jjd jdkrJ| jjd	 j  rJ|dd  }|rd| jj  | jj| d S )
Nrs   
r	   rN  rO  rr  ry   )rN  rO  rr  ry   )	r{  r   r   r<   r{   r>   Z
hasContent#reconstructActiveFormattingElementsr   )r@   r   rs   r)   r)   r*   !processSpaceCharactersDropNewline  s    

z@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewlinec             S   sT   |d dkrd S | j j  | j j|d  | jjrPtdd |d D rPd| j_d S )Nrs    c             S   s   g | ]}|t kqS r)   )r   )r=   charr)   r)   r*   rA     s   zDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)r<   r  r   rI   r`   any)r@   r   r)   r)   r*   r     s    
z0getPhases.<locals>.InBodyPhase.processCharactersc             S   s   | j j  | j j|d  d S )Nrs   )r<   r  r   )r@   r   r)   r)   r*   r{    s    
z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPrec             S   s   | j jd j|S )Nr  )rI   rF   r   )r@   r   r)   r)   r*   r|    s    z4getPhases.<locals>.InBodyPhase.startTagProcessInHeadc             S   s   | j jdddi t| jjdks|| jjd jdkr6nFd| j _x<|d j D ],\}}|| jjd jkrL|| jjd j|< qLW d S )Nzunexpected-start-tagr>   r   r	   Frs   )	rI   r|   r~   r<   r{   r>   r`   r.   ri   )r@   r   r   r   r)   r)   r*   r4    s    z+getPhases.<locals>.InBodyPhase.startTagBodyc             S   s   | j jdddi t| jjdks| jjd jdkr6nt| j js@nj| jjd jrj| jjd jj| jjd  x"| jjd jdkr| jjj	  qlW | jj
| | j jd | j _d S )	Nzunexpected-start-tagr>   r   r	   r   r   r   ry   )rI   r|   r~   r<   r{   r>   r`   parentremoveChildr)  r   rF   r]   )r@   r   r)   r)   r*   r5    s    "z/getPhases.<locals>.InBodyPhase.startTagFramesetc             S   s.   | j jdddr| jtd | j j| d S )Nr(   rb  )variant)r<   elementInScoper  r  r   )r@   r   r)   r)   r*   r}  	  s    z-getPhases.<locals>.InBodyPhase.startTagClosePc             S   s>   | j jdddr| jtd | j j| d| j_| j| _d S )Nr(   rb  )r  F)	r<   r  r  r  r   rI   r`   r  r   )r@   r   r)   r)   r*   r    s
    z1getPhases.<locals>.InBodyPhase.startTagPreListingc             S   sZ   | j jr| jjdddi n:| j jdddr:| jtd | j j| | j jd | j _d S )	Nzunexpected-start-tagr>   rP  r(   rb  )r  r	   ry   )	r<   formPointerrI   r|   r  r  r  r   r{   )r@   r   r)   r)   r*   r    s    z+getPhases.<locals>.InBodyPhase.startTagFormc             S   s   d| j _dgddgddgd}||d  }xLt| jjD ]<}|j|kr^| j jjt|jd P |j	t
kr8|jdkr8P q8W | jjd
ddr| j jjtd
d | jj| d S )NFrQ  rS  rR  )rQ  rS  rR  r>   rp   r9  r+   r(   rb  )r  )r9  r+   r(   )rI   r`   reversedr<   r{   r>   r]   r   r  	nameTupler   r  r   )r@   r   ZstopNamesMapZ	stopNamesr   r)   r)   r*   r    s"    


z/getPhases.<locals>.InBodyPhase.startTagListItemc             S   s>   | j jdddr| jtd | j j| | jjj| jj_d S )Nr(   rb  )r  )	r<   r  r  r  r   rI   rL   r\   rZ   )r@   r   r)   r)   r*   r  4  s    z0getPhases.<locals>.InBodyPhase.startTagPlaintextc             S   sb   | j jdddr| jtd | j jd jtkrR| jjdd|d i | j jj	  | j j
| d S )Nr(   rb  )r  r	   zunexpected-start-tagr>   ry   )r<   r  r  r  r{   r>   r   rI   r|   r)  r   )r@   r   r)   r)   r*   r~  :  s    z.getPhases.<locals>.InBodyPhase.startTagHeadingc             S   s~   | j jd}|rf| jjdddd | jtd || j jkrL| j jj| || j jkrf| j jj| | j j	  | j
| d S )NrT  z$unexpected-start-tag-implies-end-tag)	startNameendName)r<   !elementInActiveFormattingElementsrI   r|   r  r  r{   r7  r  r  r  )r@   r   ZafeAElementr)   r)   r*   r  B  s    
z(getPhases.<locals>.InBodyPhase.startTagAc             S   s   | j j  | j| d S )N)r<   r  r  )r@   r   r)   r)   r*   r  O  s    
z1getPhases.<locals>.InBodyPhase.startTagFormattingc             S   sP   | j j  | j jdrB| jjdddd | jtd | j j  | j| d S )Nra  z$unexpected-start-tag-implies-end-tag)r  r  )r<   r  r  rI   r|   r   r  r  )r@   r   r)   r)   r*   r  S  s    

z+getPhases.<locals>.InBodyPhase.startTagNobrc             S   sT   | j jdr2| jjdddd | jtd |S | j j  | j j| d| j_d S )Nrb  z$unexpected-start-tag-implies-end-tag)r  r  F)	r<   r  rI   r|   r   r  r  r   r`   )r@   r   r)   r)   r*   r  ]  s    
z-getPhases.<locals>.InBodyPhase.startTagButtonc             S   s0   | j j  | j j| | j jjt d| j_d S )NF)r<   r  r   r  r   r   rI   r`   )r@   r   r)   r)   r*   r  h  s    
z:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectc             S   sB   | j jdddr| jtd | j j  d| j_| jj|d d S )Nr(   rb  )r  Fr   )r<   r  r  r  r  rI   r`   r   )r@   r   r)   r)   r*   r  n  s
    
z*getPhases.<locals>.InBodyPhase.startTagXmpc             S   sR   | j jdkr*| jjdddr*| jtd | jj| d| j _| j jd | j _	d S )Nr  r(   rb  )r  Fr   )
rI   rW   r<   r  r   r  r   r`   rF   r]   )r@   r   r)   r)   r*   r  u  s    z,getPhases.<locals>.InBodyPhase.startTagTablec             S   s6   | j j  | j j| | j jj  d|d< d| j_d S )NTrx   F)r<   r  r   r{   r)  rI   r`   )r@   r   r)   r)   r*   r  }  s
    
z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingc             S   s@   | j j}| j| d|d kr<|d d jtdkr<|| j _d S )Nr2   rs   hidden)rI   r`   r  rj   r   )r@   r   r`   r)   r)   r*   r    s
    
z,getPhases.<locals>.InBodyPhase.startTagInputc             S   s$   | j j| | j jj  d|d< d S )NTrx   )r<   r   r{   r)  )r@   r   r)   r)   r*   r    s    z2getPhases.<locals>.InBodyPhase.startTagParamSourcec             S   sJ   | j jdddr| jtd | j j| | j jj  d|d< d| j_d S )Nr(   rb  )r  Trx   F)	r<   r  r  r  r   r{   r)  rI   r`   )r@   r   r)   r)   r*   r    s    z)getPhases.<locals>.InBodyPhase.startTagHrc             S   s6   | j jdddd | jtdd|d |d d d S )	Nzunexpected-start-tag-treated-asrp  rh  )originalNamenewNamero   rs   rw   )ri   rw   )rI   r|   r   r  )r@   r   r)   r)   r*   r    s
    
z,getPhases.<locals>.InBodyPhase.startTagImagec             S   s  | j jdddi | jjrd S i }d|d kr>|d d |d< | jtdd|d | jtd	d | jtd
d d|d kr|d d }nd}| jtd |d |d j }d|kr|d= d|kr|d= d|d< | jtdd||d d | j	td
 | jtd	d | j	td d S )Nzdeprecated-tagr>   rq  actionrs   rP  ro   )ri   ro  Zlabelpromptz3This is a searchable index. Enter search keywords: rn   )r2   rs   rn  rw   )ri   rw   )
rI   r|   r<   r  r   r  r   r   copyr   )r@   r   Z
form_attrsr  ri   r)   r)   r*   r    s6    


z.getPhases.<locals>.InBodyPhase.startTagIsIndexc             S   s0   | j j| | jjj| jj_| j| _d| j_d S )NF)	r<   r   rI   rL   rY   rZ   r  r   r`   )r@   r   r)   r)   r*   r    s    z/getPhases.<locals>.InBodyPhase.startTagTextareac             S   s   d| j _| j| d S )NF)rI   r`   r  )r@   r   r)   r)   r*   r    s    z-getPhases.<locals>.InBodyPhase.startTagIFramec             S   s"   | j jr| j| n
| j| d S )N)rI   rK   r  r  )r@   r   r)   r)   r*   r#    s    z/getPhases.<locals>.InBodyPhase.startTagNoscriptc             S   s   | j j|d dS )z8iframe, noembed noframes, noscript(if scripting enabled)r   N)rI   r   )r@   r   r)   r)   r*   r    s    z.getPhases.<locals>.InBodyPhase.startTagRawtextc             S   s@   | j jd jdkr$| jjjtd | j j  | jj j| d S )Nr	   rv  ry   )	r<   r{   r>   rI   r]   r   r  r  r   )r@   r   r)   r)   r*   r    s    
z*getPhases.<locals>.InBodyPhase.startTagOptc             S   s   | 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krx| jjd | j_n| jjd	 | j_d S )
NFr   r   r   r   r   r   inSelectInTabler   )r<   r  r   rI   r`   r]   rF   )r@   r   r)   r)   r*   r    s    




z-getPhases.<locals>.InBodyPhase.startTagSelectc             S   sB   | j jdr2| j j  | j jd jdkr2| jj  | j j| d S )Nrubyr	   ry   )r<   r  generateImpliedEndTagsr{   r>   rI   r|   r   )r@   r   r)   r)   r*   r    s
    

z+getPhases.<locals>.InBodyPhase.startTagRpRtc             S   sZ   | j j  | jj| | jj| td |d< | j j| |d rV| j jj  d|d< d S )Nrd   rh   rw   Trx   )	r<   r  rI   r   r   r   r   r{   r)  )r@   r   r)   r)   r*   r    s    
z+getPhases.<locals>.InBodyPhase.startTagMathc             S   sZ   | j j  | jj| | jj| td |d< | j j| |d rV| j jj  d|d< d S )Nru   rh   rw   Trx   )	r<   r  rI   r   r   r   r   r{   r)  )r@   r   r)   r)   r*   r    s    
z*getPhases.<locals>.InBodyPhase.startTagSvgc             S   s   | j jdd|d i dS )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-ignoredr>   N)rI   r|   )r@   r   r)   r)   r*   r    s    z0getPhases.<locals>.InBodyPhase.startTagMisplacedc             S   s   | j j  | j j| d S )N)r<   r  r   )r@   r   r)   r)   r*   r    s    
z,getPhases.<locals>.InBodyPhase.startTagOtherc             S   s   | j jdddsD| jtdd | jjdddi | jtdd nX| j jd | j jd	 j	dkrt| jjdddi | j jj
 }x|j	dkr| j jj
 }qW d S )
Nr(   rb  )r  ro   zunexpected-end-tagr>   rp   r	   ry   )r<   r  r}  r  rI   r|   r  r  r{   r>   r)  )r@   r   r   r)   r)   r*   r    s    z&getPhases.<locals>.InBodyPhase.endTagPc             S   s   | j jds| jj  d S | j jd jdkrlx>| j jdd  D ]*}|jtdkr>| jjdd|jd P q>W | jjd | j_d S )Nr   r	      rR  rS  rQ  rw  rv  r(   rt  ru  r   r   r   r   r   r   r   z$expected-one-end-tag-but-got-another)gotNameexpectedName	afterBodyry   )rR  rS  rQ  rw  rv  r(   rt  ru  r   r   r   r   r   r   r   r   )	r<   r  rI   r|   r{   r>   r   rF   r]   )r@   r   r   r)   r)   r*   r  !  s    
   z)getPhases.<locals>.InBodyPhase.endTagBodyc             S   s"   | j jdr| jtd |S d S )Nr   )r<   r  r  r  )r@   r   r)   r)   r*   r  3  s    z)getPhases.<locals>.InBodyPhase.endTagHtmlc             S   s   |d dkr| j | _| jj|d }|r2| jj  | jjd j|d kr^| jjdd|d i |r| jjj	 }x|j|d kr| jjj	 }qpW d S )Nr>   rN  r	   zend-tag-too-earlyry   )
r{  r   r<   r  r  r{   r>   rI   r|   r)  )r@   r   ZinScoper   r)   r)   r*   r  9  s    
z*getPhases.<locals>.InBodyPhase.endTagBlockc             S   sx   | j j}d | j _|d ks&| j j| r:| jjdddi n:| j j  | j jd |krf| jjdddi | j jj| d S )Nzunexpected-end-tagr>   rP  r	   zend-tag-too-early-ignoredry   )r<   r  r  rI   r|   r  r{   r7  )r@   r   r   r)   r)   r*   r  G  s    

z)getPhases.<locals>.InBodyPhase.endTagFormc             S   s   |d dkrd}nd }| j j|d |dsB| jjdd|d i nj| j j|d d | j jd	 j|d kr| jjdd|d i | j jj }x|j|d kr| j jj }qW d S )
Nr>   rQ  list)r  zunexpected-end-tag)excluder	   zend-tag-too-earlyry   )r<   r  rI   r|   r  r{   r>   r)  )r@   r   r  r   r)   r)   r*   r  T  s    z-getPhases.<locals>.InBodyPhase.endTagListItemc             S   s   x$t D ]}| jj|r| jj  P qW | jjd j|d krR| jjdd|d i xBt D ]:}| jj|rX| jjj }x|jt kr| jjj }qvW P qXW d S )Nr	   r>   zend-tag-too-earlyry   )	r   r<   r  r  r{   r>   rI   r|   r)  )r@   r   itemr)   r)   r*   r  e  s    


z,getPhases.<locals>.InBodyPhase.endTagHeadingc             S   s"  d}x|dk r|d7 }| j j|d }| sL|| j jkrZ| j j|j rZ| j| dS || j jkr| jjdd|d i | j jj	| dS | j j|js| jjdd|d i dS || j jd kr| jjdd|d i | j jj
|}d}x,| j j|d D ]}|jtkr |}P q W |dkrb| j jj }x||krN| j jj }q4W | j jj	| dS | j j|d  }| j jj
|}| }	}
d}| j jj
|
}x|d	k rh|d7 }|d8 }| j j| }
|
| j jkr| j jj	|
 q|
|krP |	|kr
| j jj
|
d }|
j }|| j j| j jj
|
< || j j| j jj
|
< |}
|	jrV|	jj|	 |
j|	 |
}	qW |	jr~|	jj|	 |jtdkr| j j \}}|j|	| n
|j|	 |j }|j| |j| | j jj	| | j jj|| | j jj	| | j jj| j jj
|d | qW dS )z)The much-feared adoption agency algorithmr      r	   r>   Nzadoption-agency-1.2zadoption-agency-4.4zadoption-agency-1.3r  r   r   r   r   r   ry   )r   r   r   r   r   )r<   r  r{   r  r>   r  rI   r|   r  r7  indexr  r   r)  Z	cloneNoder  r  ZappendChildr   ZgetTableMisnestedNodePositioninsertBeforeZreparentChildreninsert)r@   r   ZouterLoopCounterZformattingElementZafeIndexZfurthestBlockrk   ZcommonAncestorZbookmarkZlastNoder   ZinnerLoopCounterr  Zcloner  r  r)   r)   r*   r  t  s    











z/getPhases.<locals>.InBodyPhase.endTagFormattingc             S   s   | j j|d r| j j  | j jd j|d krF| jjdd|d i | j j|d r| j jj }x|j|d kr| j jj }qdW | j j  d S )Nr>   r	   zend-tag-too-earlyry   )	r<   r  r  r{   r>   rI   r|   r)  clearActiveFormattingElements)r@   r   rk   r)   r)   r*   r    s    
z8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObjectc             S   s@   | j jdddd | jj  | jjtdd | jjj  d S )Nzunexpected-end-tag-treated-asr  z
br element)r  r  ro   )rI   r|   r<   r  r   r  r{   r)  )r@   r   r)   r)   r*   r2  #  s
    
z'getPhases.<locals>.InBodyPhase.endTagBrc             S   s   x| j jd d d D ]}|j|d kr~| j j|d d | j jd j|d krd| jjdd|d i x| j jj |krxqfW P q|jtkr| jjdd|d i P qW d S )Nr	   r>   )r  zunexpected-end-tagry   ry   )	r<   r{   r>   r  rI   r|   r)  r  r   )r@   r   r   r)   r)   r*   r  *  s    
z*getPhases.<locals>.InBodyPhase.endTagOtherN)6r7   r8   r9   rH   r  r  r   r  r   r{  r|  r4  r5  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  r2  r  r)   )r   r)   r*   InBodyPhasee  sh   G
	
	 $r  c                   s@   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd ZdS )zgetPhases.<locals>.TextPhasec                sF    j | || tjg | _| j| j_tjd| jfg| _| j| j_d S )Nr  )	rH   r   r  r   r  r  endTagScriptr   r  )r@   rI   r<   )r   r)   r*   rH   9  s    
z%getPhases.<locals>.TextPhase.__init__c             S   s   | j j|d  d S )Nrs   )r<   r   )r@   r   r)   r)   r*   r   A  s    z.getPhases.<locals>.TextPhase.processCharactersc             S   s8   | j jdd| jjd ji | jjj  | j j| j _dS )Nz&expected-named-closing-tag-but-got-eofr>   r	   Try   )rI   r|   r<   r{   r>   r)  r   r]   )r@   r)   r)   r*   r   D  s
    z'getPhases.<locals>.TextPhase.processEOFc             S   s   d S )Nr)   )r@   r   r)   r)   r*   r  K  s    z*getPhases.<locals>.TextPhase.startTagOtherc             S   s   | j jj }| jj| j_d S )N)r<   r{   r)  rI   r   r]   )r@   r   r   r)   r)   r*   r  N  s    z)getPhases.<locals>.TextPhase.endTagScriptc             S   s   | j jj  | jj| j_d S )N)r<   r{   r)  rI   r   r]   )r@   r   r)   r)   r*   r  U  s    z(getPhases.<locals>.TextPhase.endTagOtherN)	r7   r8   r9   rH   r   r   r  r  r  r)   )r   r)   r*   	TextPhase8  s   r  c                   s   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'S )(zgetPhases.<locals>.InTablePhasec                s    j | || tjd| jfd| jfd| jfd| jfd| jfd| jfd| j	fd| j
fd| jfd| jfg
| _| j| j_tjd| jfd| jfg| _| j| j_d S )Nr   r   r   rx  r   r   r   r   r   r   r   r  r  rn  rP  r   )r   r   r   )r   r   r   )r  r  )r   r   rx  r   r   r   r   r   r   r   r   )rH   r   r  r   startTagCaptionstartTagColgroupstartTagColstartTagRowGroupstartTagImplyTbodyr  startTagStyleScriptr  r  r   r  r  endTagTableendTagIgnorer   r  )r@   rI   r<   )r   r)   r*   rH   [  s$    
 z(getPhases.<locals>.InTablePhase.__init__c             S   s(   x"| j jd jdkr"| j jj  qW d S )Nr	   r   r   ry   )r   r   )r<   r{   r>   r)  )r@   r)   r)   r*   clearStackToTableContexts  s    z8getPhases.<locals>.InTablePhase.clearStackToTableContextc             S   s$   | j jd jdkr | jjd n d S )Nr	   r   zeof-in-tablery   )r<   r{   r>   rI   r|   )r@   r)   r)   r*   r   |  s    z*getPhases.<locals>.InTablePhase.processEOFc             S   s4   | j j}| j jd | j _|| j j_| j jj| d S )NinTableText)rI   r]   rF   r   r   )r@   r   r   r)   r)   r*   r     s    
z6getPhases.<locals>.InTablePhase.processSpaceCharactersc             S   s4   | j j}| j jd | j _|| j j_| j jj| d S )Nr  )rI   r]   rF   r   r   )r@   r   r   r)   r)   r*   r     s    
z1getPhases.<locals>.InTablePhase.processCharactersc             S   s&   d| j _| jjd j| d| j _d S )NTr   F)r<   insertFromTablerI   rF   r   )r@   r   r)   r)   r*   r     s    z*getPhases.<locals>.InTablePhase.insertTextc             S   s6   | j   | jjjt | jj| | jjd | j_d S )Nr   )	r  r<   r  r   r   r   rI   rF   r]   )r@   r   r)   r)   r*   r    s    z/getPhases.<locals>.InTablePhase.startTagCaptionc             S   s(   | j   | jj| | jjd | j_d S )Nr   )r  r<   r   rI   rF   r]   )r@   r   r)   r)   r*   r    s    z0getPhases.<locals>.InTablePhase.startTagColgroupc             S   s   | j tdd |S )Nr   ro   )r  r  )r@   r   r)   r)   r*   r    s    z+getPhases.<locals>.InTablePhase.startTagColc             S   s(   | j   | jj| | jjd | j_d S )Nr   )r  r<   r   rI   rF   r]   )r@   r   r)   r)   r*   r    s    z0getPhases.<locals>.InTablePhase.startTagRowGroupc             S   s   | j tdd |S )Nr   ro   )r  r  )r@   r   r)   r)   r*   r    s    z2getPhases.<locals>.InTablePhase.startTagImplyTbodyc             S   s6   | j jdddd | j jjtd | j js2|S d S )Nz$unexpected-start-tag-implies-end-tagr   )r  r  )rI   r|   r]   r   r  rP   )r@   r   r)   r)   r*   r    s
    z-getPhases.<locals>.InTablePhase.startTagTablec             S   s   | j jd j|S )Nr  )rI   rF   r   )r@   r   r)   r)   r*   r    s    z3getPhases.<locals>.InTablePhase.startTagStyleScriptc             S   sV   d|d krH|d d j tdkrH| jjd | jj| | jjj  n
| j| d S )Nr2   rs   r  z unexpected-hidden-input-in-table)	rj   r   rI   r|   r<   r   r{   r)  r  )r@   r   r)   r)   r*   r    s    z-getPhases.<locals>.InTablePhase.startTagInputc             S   sD   | j jd | jjd kr@| jj| | jjd | j_| jjj  d S )Nzunexpected-form-in-tabler	   ry   )rI   r|   r<   r  r   r{   r)  )r@   r   r)   r)   r*   r    s
    z,getPhases.<locals>.InTablePhase.startTagFormc             S   s<   | j jdd|d i d| j_| j jd j| d| j_d S )Nz)unexpected-start-tag-implies-table-voodoor>   Tr   F)rI   r|   r<   r  rF   r   )r@   r   r)   r)   r*   r    s    z-getPhases.<locals>.InTablePhase.startTagOtherc             S   s   | j jdddr| j j  | j jd jdkrJ| jjdd| j jd jd x"| j jd jdkrl| j jj  qLW | j jj  | jj  n
| jj  d S )	Nr   )r  r	   zend-tag-too-early-named)r  r  ry   ry   ry   )	r<   r  r  r{   r>   rI   r|   r)  r_   )r@   r   r)   r)   r*   r    s    
z+getPhases.<locals>.InTablePhase.endTagTablec             S   s   | j jdd|d i d S )Nzunexpected-end-tagr>   )rI   r|   )r@   r   r)   r)   r*   r    s    z,getPhases.<locals>.InTablePhase.endTagIgnorec             S   s<   | j jdd|d i d| j_| j jd j| d| j_d S )Nz'unexpected-end-tag-implies-table-voodoor>   Tr   F)rI   r|   r<   r  rF   r   )r@   r   r)   r)   r*   r    s    z+getPhases.<locals>.InTablePhase.endTagOtherN)r7   r8   r9   rH   r  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r)   )r   r)   r*   InTablePhaseY  s&   	
r  c                   sP   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )z#getPhases.<locals>.InTableTextPhasec                s    j | || d | _g | _d S )N)rH   r   characterTokens)r@   rI   r<   )r   r)   r*   rH     s    z,getPhases.<locals>.InTableTextPhase.__init__c             S   sd   dj dd | jD }tdd |D rJtd |d}| jjd j| n|rZ| jj| g | _d S )Nr   c             S   s   g | ]}|d  qS )rs   r)   )r=   r  r)   r)   r*   rA     s    zGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>c             S   s   g | ]}|t kqS r)   )r   )r=   r  r)   r)   r*   rA     s    rn   )r2   rs   r   )joinr  r  r   rI   rF   r   r<   )r@   rs   r   r)   r)   r*   flushCharacters  s    z3getPhases.<locals>.InTableTextPhase.flushCharactersc             S   s   | j   | j| j_|S )N)r  r   rI   r]   )r@   r   r)   r)   r*   r     s    
z2getPhases.<locals>.InTableTextPhase.processCommentc             S   s   | j   | j| j_dS )NT)r  r   rI   r]   )r@   r)   r)   r*   r     s    
z.getPhases.<locals>.InTableTextPhase.processEOFc             S   s    |d dkrd S | j j| d S )Nrs   r  )r  r   )r@   r   r)   r)   r*   r     s    z5getPhases.<locals>.InTableTextPhase.processCharactersc             S   s   | j j| d S )N)r  r   )r@   r   r)   r)   r*   r     s    z:getPhases.<locals>.InTableTextPhase.processSpaceCharactersc             S   s   | j   | j| j_|S )N)r  r   rI   r]   )r@   r   r)   r)   r*   r     s    
z3getPhases.<locals>.InTableTextPhase.processStartTagc             S   s   | j   | j| j_|S )N)r  r   rI   r]   )r@   r   r)   r)   r*   r     s    
z1getPhases.<locals>.InTableTextPhase.processEndTagN)r7   r8   r9   rH   r  r   r   r   r   r   r   r)   )r   r)   r*   InTableTextPhase  s   	r  c                   s`   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )z!getPhases.<locals>.InCaptionPhasec                sf    j | || tjd| jfd| jfg| _| j| j_tjd| jfd| j	fd| j
fg| _| j| j_d S )Nr   r   rx  r   r   r   r   r   r   r   r   r   )	r   rx  r   r   r   r   r   r   r   )
r   rx  r   r   r   r   r   r   r   r   )rH   r   r  r   startTagTableElementr   r  r  endTagCaptionr  r  r   r  )r@   rI   r<   )r   r)   r*   rH     s     
 z*getPhases.<locals>.InCaptionPhase.__init__c             S   s   | j jddd S )Nr   r   )r  )r<   r  )r@   r)   r)   r*   ignoreEndTagCaption+  s    z5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptionc             S   s   | j jd j  d S )Nr   )rI   rF   r   )r@   r)   r)   r*   r   .  s    z,getPhases.<locals>.InCaptionPhase.processEOFc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   1  s    z3getPhases.<locals>.InCaptionPhase.processCharactersc             S   s0   | j j  | j }| j jjtd |s,|S d S )Nr   )rI   r|   r  r]   r   r  )r@   r   ignoreEndTagr)   r)   r*   r  4  s
    
z6getPhases.<locals>.InCaptionPhase.startTagTableElementc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r  <  s    z/getPhases.<locals>.InCaptionPhase.startTagOtherc             S   s   | j  s| jj  | jjd jdkrB| jjdd| jjd jd x"| jjd jdkrd| jjj  qDW | jjj  | jj  | jj	d | j_
n
| jj  d S )	Nr	   r   z$expected-one-end-tag-but-got-another)r  r  r   ry   ry   ry   )r  r<   r  r{   r>   rI   r|   r)  r  rF   r]   )r@   r   r)   r)   r*   r  ?  s    

z/getPhases.<locals>.InCaptionPhase.endTagCaptionc             S   s0   | j j  | j }| j jjtd |s,|S d S )Nr   )rI   r|   r  r]   r   r  )r@   r   r  r)   r)   r*   r  Q  s
    
z-getPhases.<locals>.InCaptionPhase.endTagTablec             S   s   | j jdd|d i d S )Nzunexpected-end-tagr>   )rI   r|   )r@   r   r)   r)   r*   r  X  s    z.getPhases.<locals>.InCaptionPhase.endTagIgnorec             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r  [  s    z-getPhases.<locals>.InCaptionPhase.endTagOtherN)r7   r8   r9   rH   r  r   r   r  r  r  r  r  r  r)   )r   r)   r*   InCaptionPhase  s   r  c                   sX   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )z%getPhases.<locals>.InColumnGroupPhasec                s^    j | || tjd| jfd| jfg| _| j| j_tjd| jfd| j	fg| _
| j| j
_d S )Nr   rx  r   )rH   r   r  r   r  r   r  r  endTagColgroup	endTagColr   r  )r@   rI   r<   )r   r)   r*   rH   a  s    
z.getPhases.<locals>.InColumnGroupPhase.__init__c             S   s   | j jd jdkS )Nr	   r   ry   )r<   r{   r>   )r@   r)   r)   r*   ignoreEndTagColgroupp  s    z:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroupc             S   s8   | j jd jdkrd S | j }| jtd |s4dS d S )Nr	   r   r   Try   )r<   r{   r>   r  r  r  )r@   r  r)   r)   r*   r   s  s    z0getPhases.<locals>.InColumnGroupPhase.processEOFc             S   s"   | j  }| jtd |s|S d S )Nr   )r  r  r  )r@   r   r  r)   r)   r*   r   }  s    z7getPhases.<locals>.InColumnGroupPhase.processCharactersc             S   s$   | j j| | j jj  d|d< d S )NTrx   )r<   r   r{   r)  )r@   r   r)   r)   r*   r    s    z1getPhases.<locals>.InColumnGroupPhase.startTagColc             S   s"   | j  }| jtd |s|S d S )Nr   )r  r  r  )r@   r   r  r)   r)   r*   r    s    z3getPhases.<locals>.InColumnGroupPhase.startTagOtherc             S   s4   | j  r| jj  n| jjj  | jjd | j_d S )Nr   )r  rI   r|   r<   r{   r)  rF   r]   )r@   r   r)   r)   r*   r    s    z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupc             S   s   | j jdddi d S )Nz
no-end-tagr>   rx  )rI   r|   )r@   r   r)   r)   r*   r    s    z/getPhases.<locals>.InColumnGroupPhase.endTagColc             S   s"   | j  }| jtd |s|S d S )Nr   )r  r  r  )r@   r   r  r)   r)   r*   r    s    z1getPhases.<locals>.InColumnGroupPhase.endTagOtherN)r7   r8   r9   rH   r  r   r   r  r  r  r  r  r)   )r   r)   r*   InColumnGroupPhase^  s   
	r  c                   sx   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )z#getPhases.<locals>.InTableBodyPhasec                sv    j | || tjd| jfd| jfd| jfd| jfg| _| j| j_	tjd| j
fd| jfd| jfg| _| j| j_	d S )Nr   r   r   r   r   rx  r   r   r   r   r   r   )r   r   )r   rx  r   r   r   r   )r   r   r   )r   r   rx  r   r   r   r   r   )rH   r   r  r   
startTagTrstartTagTableCellstartTagTableOtherr   r  r  endTagTableRowGroupr  r  r   r  )r@   rI   r<   )r   r)   r*   rH     s    
 z,getPhases.<locals>.InTableBodyPhase.__init__c             S   s:   x"| j jd jdkr"| j jj  qW | j jd jdkr6d S )	Nr	   r   r   r   r   ry   )r   r   r   r   ry   )r<   r{   r>   r)  )r@   r)   r)   r*   clearStackToTableBodyContext  s
    z@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextc             S   s   | j jd j  d S )Nr   )rI   rF   r   )r@   r)   r)   r*   r     s    z.getPhases.<locals>.InTableBodyPhase.processEOFc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r     s    z:getPhases.<locals>.InTableBodyPhase.processSpaceCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r     s    z5getPhases.<locals>.InTableBodyPhase.processCharactersc             S   s(   | j   | jj| | jjd | j_d S )Nr   )r  r<   r   rI   rF   r]   )r@   r   r)   r)   r*   r    s    z.getPhases.<locals>.InTableBodyPhase.startTagTrc             S   s*   | j jdd|d i | jtdd |S )Nzunexpected-cell-in-table-bodyr>   r   ro   )rI   r|   r  r  )r@   r   r)   r)   r*   r    s    z5getPhases.<locals>.InTableBodyPhase.startTagTableCellc             S   sb   | j jddds0| j jddds0| j jdddrT| j  | jt| j jd j |S | jj  d S )Nr   r   )r  r   r   r	   ry   )	r<   r  r  r  r  r{   r>   rI   r|   )r@   r   r)   r)   r*   r    s    z6getPhases.<locals>.InTableBodyPhase.startTagTableOtherc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r    s    z1getPhases.<locals>.InTableBodyPhase.startTagOtherc             S   sT   | j j|d ddr:| j  | j jj  | jjd | j_n| jjdd|d i d S )Nr>   r   )r  r   z unexpected-end-tag-in-table-body)	r<   r  r  r{   r)  rI   rF   r]   r|   )r@   r   r)   r)   r*   r    s    z7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroupc             S   sb   | j jddds0| j jddds0| j jdddrT| j  | jt| j jd j |S | jj  d S )Nr   r   )r  r   r   r	   ry   )	r<   r  r  r  r  r{   r>   rI   r|   )r@   r   r)   r)   r*   r    s    z/getPhases.<locals>.InTableBodyPhase.endTagTablec             S   s   | j jdd|d i d S )Nz unexpected-end-tag-in-table-bodyr>   )rI   r|   )r@   r   r)   r)   r*   r    s    z0getPhases.<locals>.InTableBodyPhase.endTagIgnorec             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r    s    z/getPhases.<locals>.InTableBodyPhase.endTagOtherN)r7   r8   r9   rH   r  r   r   r   r  r  r  r  r  r  r  r  r)   )r   r)   r*   InTableBodyPhase  s   
	r  c                   s   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )zgetPhases.<locals>.InRowPhasec                sv    j | || tjd| jfd| jfd| jfg| _| j| j_tjd
| j	fd| j
fd| jfd| jfg| _| j| j_d S )Nr   r   r   r   rx  r   r   r   r   r   r   r   )r   r   )r   rx  r   r   r   r   r   )r   r   r   )r   r   rx  r   r   r   r   )rH   r   r  r   r  r  r   r  r  endTagTrr  r  r  r   r  )r@   rI   r<   )r   r)   r*   rH     s     
z&getPhases.<locals>.InRowPhase.__init__c             S   sD   x>| j jd jdkr>| jjdd| j jd ji | j jj  qW d S )	Nr	   r   r   z'unexpected-implied-end-tag-in-table-rowr>   ry   )r   r   ry   )r<   r{   r>   rI   r|   r)  )r@   r)   r)   r*   clearStackToTableRowContext  s    z9getPhases.<locals>.InRowPhase.clearStackToTableRowContextc             S   s   | j jddd S )Nr   r   )r  )r<   r  )r@   r)   r)   r*   ignoreEndTagTr  s    z,getPhases.<locals>.InRowPhase.ignoreEndTagTrc             S   s   | j jd j  d S )Nr   )rI   rF   r   )r@   r)   r)   r*   r   "  s    z(getPhases.<locals>.InRowPhase.processEOFc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   %  s    z4getPhases.<locals>.InRowPhase.processSpaceCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   (  s    z/getPhases.<locals>.InRowPhase.processCharactersc             S   s6   | j   | jj| | jjd | j_| jjjt d S )Nr   )	r  r<   r   rI   rF   r]   r  r   r   )r@   r   r)   r)   r*   r  +  s    z/getPhases.<locals>.InRowPhase.startTagTableCellc             S   s"   | j  }| jtd |s|S d S )Nr   )r  r  r  )r@   r   r  r)   r)   r*   r  1  s    z0getPhases.<locals>.InRowPhase.startTagTableOtherc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r  8  s    z+getPhases.<locals>.InRowPhase.startTagOtherc             S   s<   | j  s.| j  | jjj  | jjd | j_n
| jj  d S )Nr   )	r  r  r<   r{   r)  rI   rF   r]   r|   )r@   r   r)   r)   r*   r  ;  s
    z&getPhases.<locals>.InRowPhase.endTagTrc             S   s"   | j  }| jtd |s|S d S )Nr   )r  r  r  )r@   r   r  r)   r)   r*   r  E  s    z)getPhases.<locals>.InRowPhase.endTagTablec             S   s4   | j j|d ddr&| jtd |S | jj  d S )Nr>   r   )r  r   )r<   r  r  r  rI   r|   )r@   r   r)   r)   r*   r  M  s    z1getPhases.<locals>.InRowPhase.endTagTableRowGroupc             S   s   | j jdd|d i d S )Nzunexpected-end-tag-in-table-rowr>   )rI   r|   )r@   r   r)   r)   r*   r  T  s    z*getPhases.<locals>.InRowPhase.endTagIgnorec             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r  X  s    z)getPhases.<locals>.InRowPhase.endTagOtherN)r7   r8   r9   rH   r  r  r   r   r   r  r  r  r  r  r  r  r  r)   )r   r)   r*   
InRowPhase  s   
r  c                   s`   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )zgetPhases.<locals>.InCellPhasec                sf    j | || tjd| jfd| jfg| _| j| j_tjd| jfd| j	fd| j
fg| _| j| j_d S )Nr   r   rx  r   r   r   r   r   r   r   r   r   )	r   rx  r   r   r   r   r   r   r   )r   r   )r   r   rx  r   r   )r   r   r   r   r   )rH   r   r  r   r  r   r  r  endTagTableCellr  endTagImplyr   r  )r@   rI   r<   )r   r)   r*   rH   ]  s     
z'getPhases.<locals>.InCellPhase.__init__c             S   sB   | j jdddr | jtd n| j jdddr>| jtd d S )Nr   r   )r  r   )r<   r  r  r  )r@   r)   r)   r*   	closeCelln  s    z(getPhases.<locals>.InCellPhase.closeCellc             S   s   | j jd j  d S )Nr   )rI   rF   r   )r@   r)   r)   r*   r   u  s    z)getPhases.<locals>.InCellPhase.processEOFc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   x  s    z0getPhases.<locals>.InCellPhase.processCharactersc             S   s:   | j jddds | j jdddr,| j  |S | jj  d S )Nr   r   )r  r   )r<   r  r  rI   r|   )r@   r   r)   r)   r*   r  {  s
    z1getPhases.<locals>.InCellPhase.startTagTableOtherc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r    s    z,getPhases.<locals>.InCellPhase.startTagOtherc             S   s   | j j|d ddr| j j|d  | j jd j|d krt| jjdd|d i x.| j jj }|j|d krRP qRW n| j jj  | j j  | jj	d | j_
n| jjdd|d i d S )	Nr>   r   )r  r	   zunexpected-cell-end-tagr   zunexpected-end-tagry   )r<   r  r  r{   r>   rI   r|   r)  r  rF   r]   )r@   r   r   r)   r)   r*   r    s    
z.getPhases.<locals>.InCellPhase.endTagTableCellc             S   s   | j jdd|d i d S )Nzunexpected-end-tagr>   )rI   r|   )r@   r   r)   r)   r*   r    s    z+getPhases.<locals>.InCellPhase.endTagIgnorec             S   s.   | j j|d ddr | j  |S | jj  d S )Nr>   r   )r  )r<   r  r  rI   r|   )r@   r   r)   r)   r*   r    s    z*getPhases.<locals>.InCellPhase.endTagImplyc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r    s    z*getPhases.<locals>.InCellPhase.endTagOtherN)r7   r8   r9   rH   r  r   r   r  r  r  r  r  r  r)   )r   r)   r*   InCellPhase[  s   
r  c                   sx   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )z getPhases.<locals>.InSelectPhasec                s    j | || tjd| jfd| jfd| jfd| jfd	| jfd| jfg| _	| j
| j	_tjd| jfd| jfd| jfg| _| j| j_d S )
Nr   rv  rw  r   rn  ri  rr  r  )rn  ri  rr  )rH   r   r  r   startTagOptionstartTagOptgroupr  r  r$  r   r  r  endTagOptionendTagOptgroupendTagSelectr   r  )r@   rI   r<   )r   r)   r*   rH     s    
z)getPhases.<locals>.InSelectPhase.__init__c             S   s$   | j jd jdkr | jjd n d S )Nr	   r   zeof-in-selectry   )r<   r{   r>   rI   r|   )r@   r)   r)   r*   r     s    z+getPhases.<locals>.InSelectPhase.processEOFc             S   s$   |d dkrd S | j j|d  d S )Nrs   r  )r<   r   )r@   r   r)   r)   r*   r     s    z2getPhases.<locals>.InSelectPhase.processCharactersc             S   s.   | j jd jdkr| j jj  | j j| d S )Nr	   rv  ry   )r<   r{   r>   r)  r   )r@   r   r)   r)   r*   r    s    z/getPhases.<locals>.InSelectPhase.startTagOptionc             S   sL   | j jd jdkr| j jj  | j jd jdkr<| j jj  | j j| d S )Nr	   rv  rw  ry   ry   )r<   r{   r>   r)  r   )r@   r   r)   r)   r*   r    s
    z1getPhases.<locals>.InSelectPhase.startTagOptgroupc             S   s   | j jd | jtd d S )Nzunexpected-select-in-selectr   )rI   r|   r  r  )r@   r   r)   r)   r*   r    s    z/getPhases.<locals>.InSelectPhase.startTagSelectc             S   s2   | j jd | jjdddr.| jtd |S d S )Nzunexpected-input-in-selectr   )r  )rI   r|   r<   r  r  r  )r@   r   r)   r)   r*   r    s
    z.getPhases.<locals>.InSelectPhase.startTagInputc             S   s   | j jd j|S )Nr  )rI   rF   r   )r@   r   r)   r)   r*   r$    s    z/getPhases.<locals>.InSelectPhase.startTagScriptc             S   s   | j jdd|d i d S )Nzunexpected-start-tag-in-selectr>   )rI   r|   )r@   r   r)   r)   r*   r    s    z.getPhases.<locals>.InSelectPhase.startTagOtherc             S   s6   | j jd jdkr | j jj  n| jjdddi d S )Nr	   rv  zunexpected-end-tag-in-selectr>   ry   )r<   r{   r>   r)  rI   r|   )r@   r   r)   r)   r*   r    s    z-getPhases.<locals>.InSelectPhase.endTagOptionc             S   sf   | j jd jdkr0| j jd jdkr0| j jj  | j jd	 jdkrP| j jj  n| jjdddi d S )
Nr	   rv  r  rw  zunexpected-end-tag-in-selectr>   ry   ry   )r<   r{   r>   r)  rI   r|   )r@   r   r)   r)   r*   r    s    z/getPhases.<locals>.InSelectPhase.endTagOptgroupc             S   sR   | j jdddrD| j jj }x|jdkr6| j jj }qW | jj  n
| jj  d S )Nr   )r  )r<   r  r{   r)  r>   rI   r_   r|   )r@   r   r   r)   r)   r*   r    s    z-getPhases.<locals>.InSelectPhase.endTagSelectc             S   s   | j jdd|d i d S )Nzunexpected-end-tag-in-selectr>   )rI   r|   )r@   r   r)   r)   r*   r  	  s    z,getPhases.<locals>.InSelectPhase.endTagOtherN)r7   r8   r9   rH   r   r   r  r  r  r  r$  r  r  r  r  r  r)   )r   r)   r*   InSelectPhase  s   r  c                   sH   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )z'getPhases.<locals>.InSelectInTablePhasec          	      sN    j | || tjd	| jfg| _| j| j_tjd
| jfg| _| j	| j_d S )Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )
rH   r   r  r  r   r  r  r  r   r  )r@   rI   r<   )r   r)   r*   rH   	  s    
z0getPhases.<locals>.InSelectInTablePhase.__init__c             S   s   | j jd j  d S )Nr   )rI   rF   r   )r@   r)   r)   r*   r   	  s    z2getPhases.<locals>.InSelectInTablePhase.processEOFc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   	  s    z9getPhases.<locals>.InSelectInTablePhase.processCharactersc             S   s(   | j jdd|d i | jtd |S )Nz5unexpected-table-element-start-tag-in-select-in-tabler>   r   )rI   r|   r  r  )r@   r   r)   r)   r*   r  !	  s    z5getPhases.<locals>.InSelectInTablePhase.startTagTablec             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r  &	  s    z5getPhases.<locals>.InSelectInTablePhase.startTagOtherc             S   s@   | j jdd|d i | jj|d ddr<| jtd |S d S )Nz3unexpected-table-element-end-tag-in-select-in-tabler>   r   )r  r   )rI   r|   r<   r  r  r  )r@   r   r)   r)   r*   r  )	  s    z3getPhases.<locals>.InSelectInTablePhase.endTagTablec             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r  /	  s    z3getPhases.<locals>.InSelectInTablePhase.endTagOtherN)
r7   r8   r9   rH   r   r   r  r  r  r  r)   )r   r)   r*   InSelectInTablePhase	  s   r  c            -       s   e Zd Ze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"d#d$d%d&d'd(d)d*d+d,g,Z fd-d.Zd/d0 Z fd1d2Zd3d4 Zd5d6 Z	d7S )8z(getPhases.<locals>.InForeignContentPhaserU  rV  r<  r   r  r=  rW  rR  r+   r@  rS  rX  rg  Zh1Zh2Zh3Zh4Zh5Zh6r   ro  rZ  rh  rQ  rO  rH  r4   ra  rJ  r(   rN  r  r[  r\  spanr^  r]  subZsupr   r_  r`  rM  varc                s    j | || d S )N)rH   )r@   rI   r<   )r   r)   r*   rH   <	  s    z1getPhases.<locals>.InForeignContentPhase.__init__c          %   S   sn   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"d#d$d%$}|d& |krj||d&  |d&< d S )'NZaltGlyphZaltGlyphDefZaltGlyphItemZanimateColorZanimateMotionZanimateTransformZclipPathZfeBlendZfeColorMatrixZfeComponentTransferZfeCompositeZfeConvolveMatrixZfeDiffuseLightingZfeDisplacementMapZfeDistantLightZfeFloodZfeFuncAZfeFuncBZfeFuncGZfeFuncRZfeGaussianBlurZfeImageZfeMergeZfeMergeNodeZfeMorphologyZfeOffsetZfePointLightZfeSpecularLightingZfeSpotLightZfeTileZfeTurbulenceZforeignObjectZglyphRefZlinearGradientZradialGradientZtextPath)$ZaltglyphZaltglyphdefZaltglyphitemZanimatecolorZanimatemotionZanimatetransformZclippathZfeblendZfecolormatrixZfecomponenttransferZfecompositeZfeconvolvematrixZfediffuselightingZfedisplacementmapZfedistantlightZfefloodZfefuncaZfefuncbZfefuncgZfefuncrZfegaussianblurZfeimageZfemergeZfemergenodeZfemorphologyZfeoffsetZfepointlightZfespecularlightingZfespotlightZfetileZfeturbulenceZforeignobjectZglyphrefZlineargradientZradialgradientZtextpathr>   r)   )r@   r   replacementsr)   r)   r*   adjustSVGTagNames?	  sL    z:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNamesc                sL   |d dkrd|d< n&| j jr<tdd |d D r<d| j _ j| | d S )Nrs   r  u   �c             s   s   | ]}|t kV  qd S )N)r   )r=   r  r)   r)   r*   r   l	  s    zMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rI   r`   r  r   )r@   r   )r   r)   r*   r   h	  s    
z:getPhases.<locals>.InForeignContentPhase.processCharactersc             S   s6  | j jd }|d | jksD|d dkrt|d j tdddg@ r| jjdd|d i xR| j jd j| j jkr| jj	| j jd  r| jj
| j jd  r| j jj  q\W |S |jtd	 kr| jj| n$|jtd
 kr| j| | jj| | jj| |j|d< | j j| |d r2| j jj  d|d< d S )Nr	   r>   rY  rs   ZcolorZfacesizez*unexpected-html-element-in-foreign-contentrd   ru   rh   rw   Trx   ry   ry   ry   ry   )r<   r{   breakoutElementssetkeysrI   r|   rh   r   rl   rm   r)  r   r   r  r   r   r   )r@   r   r   r)   r)   r*   r   p	  s.    



z8getPhases.<locals>.InForeignContentPhase.processStartTagc             S   s   t | jjd }| jjd }|jjt|d krF| jjdd|d i x|jjt|d kr| jj| jj	d kr| jjj
  | jjj| j_x| jjj |krqW d }P |d8 }| jj| }|j| jjkrqHqH| jjj|}P qHW |S )Nr	   r>   zunexpected-end-tagr  ry   )r~   r<   r{   r>   rj   r   rI   r|   r]   rF   r  r   r)  rh   r   r   )r@   r   Z	nodeIndexr   r   r)   r)   r*   r   	  s(    z6getPhases.<locals>.InForeignContentPhase.processEndTagN)
r7   r8   r9   r   r  rH   r  r   r   r   r)   )r   r)   r*   InForeignContentPhase2	  s   


)r  c                   sP   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )z!getPhases.<locals>.AfterBodyPhasec                sN    j | || tjd| jfg| _| j| j_tjd| jfg| _| j	| j_d S )Nr   )
rH   r   r  r   r   r  r  r  r   r  )r@   rI   r<   )r   r)   r*   rH   	  s    
z*getPhases.<locals>.AfterBodyPhase.__init__c             S   s   d S )Nr)   )r@   r)   r)   r*   r   	  s    z,getPhases.<locals>.AfterBodyPhase.processEOFc             S   s   | j j|| j jd  d S )Nr   )r<   r   r{   )r@   r   r)   r)   r*   r   	  s    z0getPhases.<locals>.AfterBodyPhase.processCommentc             S   s    | j jd | j jd | j _|S )Nzunexpected-char-after-bodyr   )rI   r|   rF   r]   )r@   r   r)   r)   r*   r   	  s    z3getPhases.<locals>.AfterBodyPhase.processCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   	  s    z.getPhases.<locals>.AfterBodyPhase.startTagHtmlc             S   s*   | j jdd|d i | j jd | j _|S )Nzunexpected-start-tag-after-bodyr>   r   )rI   r|   rF   r]   )r@   r   r)   r)   r*   r  	  s    z/getPhases.<locals>.AfterBodyPhase.startTagOtherc             S   s*   | j jr| j jd n| j jd | j _d S )Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rI   rP   r|   rF   r]   )r@   r>   r)   r)   r*   r  	  s    z,getPhases.<locals>.AfterBodyPhase.endTagHtmlc             S   s*   | j jdd|d i | j jd | j _|S )Nzunexpected-end-tag-after-bodyr>   r   )rI   r|   rF   r]   )r@   r   r)   r)   r*   r  	  s    z-getPhases.<locals>.AfterBodyPhase.endTagOtherN)r7   r8   r9   rH   r   r   r   r   r  r  r  r)   )r   r)   r*   AfterBodyPhase	  s   r  c                   sX   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )z"getPhases.<locals>.InFramesetPhasec                sf    j | || tjd| jfd| jfd| jfd| jfg| _| j| j_	tjd| j
fg| _| j| j_	d S )Nr   r   ry  r  )rH   r   r  r   r5  startTagFramestartTagNoframesr   r  r  endTagFramesetr   r  )r@   rI   r<   )r   r)   r*   rH   	  s    
z+getPhases.<locals>.InFramesetPhase.__init__c             S   s$   | j jd jdkr | jjd n d S )Nr	   r   zeof-in-framesetry   )r<   r{   r>   rI   r|   )r@   r)   r)   r*   r   	  s    z-getPhases.<locals>.InFramesetPhase.processEOFc             S   s   | j jd d S )Nzunexpected-char-in-frameset)rI   r|   )r@   r   r)   r)   r*   r   	  s    z4getPhases.<locals>.InFramesetPhase.processCharactersc             S   s   | j j| d S )N)r<   r   )r@   r   r)   r)   r*   r5  	  s    z3getPhases.<locals>.InFramesetPhase.startTagFramesetc             S   s   | j j| | j jj  d S )N)r<   r   r{   r)  )r@   r   r)   r)   r*   r	  	  s    z0getPhases.<locals>.InFramesetPhase.startTagFramec             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r
  	  s    z3getPhases.<locals>.InFramesetPhase.startTagNoframesc             S   s   | j jdd|d i d S )Nz unexpected-start-tag-in-framesetr>   )rI   r|   )r@   r   r)   r)   r*   r  	  s    z0getPhases.<locals>.InFramesetPhase.startTagOtherc             S   s\   | j jd jdkr | jjd n| j jj  | jj rX| j jd jdkrX| jjd | j_d S )Nr	   r   z)unexpected-frameset-in-frameset-innerhtmlr   afterFramesetry   ry   )	r<   r{   r>   rI   r|   r)  rP   rF   r]   )r@   r   r)   r)   r*   r  	  s    
z1getPhases.<locals>.InFramesetPhase.endTagFramesetc             S   s   | j jdd|d i d S )Nzunexpected-end-tag-in-framesetr>   )rI   r|   )r@   r   r)   r)   r*   r  	
  s    z.getPhases.<locals>.InFramesetPhase.endTagOtherN)r7   r8   r9   rH   r   r   r5  r	  r
  r  r  r  r)   )r   r)   r*   InFramesetPhase	  s   r  c                   sH   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )z%getPhases.<locals>.AfterFramesetPhasec                sV    j | || tjd| jfd| jfg| _| j| j_tjd| jfg| _	| j
| j	_d S )Nr   r  )rH   r   r  r   r
  r   r  r  r  r   r  )r@   rI   r<   )r   r)   r*   rH   
  s    
z.getPhases.<locals>.AfterFramesetPhase.__init__c             S   s   d S )Nr)   )r@   r)   r)   r*   r   
  s    z0getPhases.<locals>.AfterFramesetPhase.processEOFc             S   s   | j jd d S )Nzunexpected-char-after-frameset)rI   r|   )r@   r   r)   r)   r*   r   !
  s    z7getPhases.<locals>.AfterFramesetPhase.processCharactersc             S   s   | j jd j|S )Nr  )rI   rF   r   )r@   r   r)   r)   r*   r
  $
  s    z6getPhases.<locals>.AfterFramesetPhase.startTagNoframesc             S   s   | j jdd|d i d S )Nz#unexpected-start-tag-after-framesetr>   )rI   r|   )r@   r   r)   r)   r*   r  '
  s    z3getPhases.<locals>.AfterFramesetPhase.startTagOtherc             S   s   | j jd | j _d S )NafterAfterFrameset)rI   rF   r]   )r@   r   r)   r)   r*   r  +
  s    z0getPhases.<locals>.AfterFramesetPhase.endTagHtmlc             S   s   | j jdd|d i d S )Nz!unexpected-end-tag-after-framesetr>   )rI   r|   )r@   r   r)   r)   r*   r  .
  s    z1getPhases.<locals>.AfterFramesetPhase.endTagOtherN)
r7   r8   r9   rH   r   r   r
  r  r  r  r)   )r   r)   r*   AfterFramesetPhase
  s   r  c                   sP   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )z&getPhases.<locals>.AfterAfterBodyPhasec                s0    j | || tjd| jfg| _| j| j_d S )Nr   )rH   r   r  r   r   r  r  )r@   rI   r<   )r   r)   r*   rH   3
  s    z/getPhases.<locals>.AfterAfterBodyPhase.__init__c             S   s   d S )Nr)   )r@   r)   r)   r*   r   ;
  s    z1getPhases.<locals>.AfterAfterBodyPhase.processEOFc             S   s   | j j|| j j d S )N)r<   r   r   )r@   r   r)   r)   r*   r   >
  s    z5getPhases.<locals>.AfterAfterBodyPhase.processCommentc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   A
  s    z=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharactersc             S   s    | j jd | j jd | j _|S )Nzexpected-eof-but-got-charr   )rI   r|   rF   r]   )r@   r   r)   r)   r*   r   D
  s    z8getPhases.<locals>.AfterAfterBodyPhase.processCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   I
  s    z3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlc             S   s*   | j jdd|d i | j jd | j _|S )Nzexpected-eof-but-got-start-tagr>   r   )rI   r|   rF   r]   )r@   r   r)   r)   r*   r  L
  s    z4getPhases.<locals>.AfterAfterBodyPhase.startTagOtherc             S   s*   | j jdd|d i | j jd | j _|S )Nzexpected-eof-but-got-end-tagr>   r   )rI   r|   rF   r]   )r@   r   r)   r)   r*   r   R
  s    z4getPhases.<locals>.AfterAfterBodyPhase.processEndTagN)r7   r8   r9   rH   r   r   r   r   r   r  r   r)   )r   r)   r*   AfterAfterBodyPhase2
  s   r  c                   sX   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )z*getPhases.<locals>.AfterAfterFramesetPhasec                s8    j | || tjd| jfd| jfg| _| j| j_d S )Nr   r  )rH   r   r  r   startTagNoFramesr   r  r  )r@   rI   r<   )r   r)   r*   rH   Y
  s
    z3getPhases.<locals>.AfterAfterFramesetPhase.__init__c             S   s   d S )Nr)   )r@   r)   r)   r*   r   b
  s    z5getPhases.<locals>.AfterAfterFramesetPhase.processEOFc             S   s   | j j|| j j d S )N)r<   r   r   )r@   r   r)   r)   r*   r   e
  s    z9getPhases.<locals>.AfterAfterFramesetPhase.processCommentc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   h
  s    zAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharactersc             S   s   | j jd d S )Nzexpected-eof-but-got-char)rI   r|   )r@   r   r)   r)   r*   r   k
  s    z<getPhases.<locals>.AfterAfterFramesetPhase.processCharactersc             S   s   | j jd j|S )Nr   )rI   rF   r   )r@   r   r)   r)   r*   r   n
  s    z7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlc             S   s   | j jd j|S )Nr  )rI   rF   r   )r@   r   r)   r)   r*   r  q
  s    z;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramesc             S   s   | j jdd|d i d S )Nzexpected-eof-but-got-start-tagr>   )rI   r|   )r@   r   r)   r)   r*   r  t
  s    z8getPhases.<locals>.AfterAfterFramesetPhase.startTagOtherc             S   s   | j jdd|d i d S )Nzexpected-eof-but-got-end-tagr>   )rI   r|   )r@   r   r)   r)   r*   r   x
  s    z8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagN)r7   r8   r9   rH   r   r   r   r   r   r  r  r   r)   )r   r)   r*   AfterAfterFramesetPhaseX
  s   	r  )rT   rS   r   r  r-  r.  r   r   r   r  r   r   r   r   r   r   r  rv   r  r   r  r  r  )r   )rG   rV   r   r
  r  r  r/  r3  r8  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)   )r   r*   rE   _  sp    ) #.g@C     X! -GBbYLd's/9%&&rE   c                s^   t s
tjr t| d t @ }nt| d t @ }|rZt fdd| d j D | d< d S )Nrs   c             3   s"   | ]\}} j |||fV  qd S )N)r}   )r=   kv)r   r)   r*   r   
  s   z$adjust_attributes.<locals>.<genexpr>)r   r   ZPY27r   r   r   r.   )r   r   Zneeds_adjustmentr)   )r   r*   r   
  s    
r   rp   Fc             C   s   |d kri }t | | ||dS )N)r2   r>   rs   rw   )r   )r>   r2   ri   rw   r)   r)   r*   r  
  s    
r  c               @   s   e Zd ZdZdS )rr   zError in parsed documentN)r7   r8   r9   r   r)   r)   r)   r*   rr   
  s   rr   )r   T)r+   r   T)rp   NF)1Z
__future__r   r   r   Zpip._vendor.sixr   r   r   r0   collectionsr   ImportErrorZpip._vendor.ordereddictr   r
   r   r   Ztreebuilders.baser   r   Z	constantsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r-   r;   re  r"   ZmemoizerE   r   r  	Exceptionrr   r)   r)   r)   r*   <module>   sR   H

  )                  L
 
