ó
    |ch¿Í  ã                   ó  • % S r SrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
JrJrJrJrJrJrJrJrJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJrJrJ r J!r!J"r"   SSK#J$r$  Sr%\RN                  RQ                  S5      SLr) SSK*r+Sr,\+RZ                  R\                  r.\r/\"\   \0S'   Sr1\2\0S'    " S S\35      r4 " S S\45      r5 " S S\55      r6 " S S\55      r7 " S S\65      r8g! \& a    Sr% N�f = f! \& a    Sr,Sr. Ncf = f)zHelper classes for tests.ÚMITé    N)ÚBeautifulSoup)
ÚAttributeValueListÚCharsetMetaAttributeValueÚCommentÚContentMetaAttributeValueÚDoctypeÚPageElementÚPYTHON_SPECIFIC_ENCODINGSÚScriptÚ
StylesheetÚTag)ÚSoupStrainer)ÚXMLParsedAsHTMLWarning)Ú_IncomingMarkup)ÚTreeBuilder)ÚHTMLParserTreeBuilder)ÚAnyÚIterableÚOptionalÚTupleÚType)ÚSelectorSyntaxErrorTFÚhtml5lib)r   Údefault_builderu-
  A bare string
<!DOCTYPE xsl:stylesheet SYSTEM "htmlent.dtd">
<!DOCTYPE xsl:stylesheet PUBLIC "htmlent.dtd">
<div><![CDATA[A CDATA section where it doesn't belong]]></div>
<div><svg><![CDATA[HTML5 does allow CDATA sections in SVG]]></svg></div>
<div>A <meta> tag</div>
<div>A <br> tag that supposedly has contents.</br></div>
<div>AT&T</div>
<div><textarea>Within a textarea, markup like <b> tags and <&<&amp; should be treated as literal</textarea></div>
<div><script>if (i < 2) { alert("<b>Markup within script tags should be treated as literal.</b>"); }</script></div>
<div>This numeric entity is missing the final semicolon: <x t="pi&#241ata"></div>
<div><a href="http://example.com/</a> that attribute value never got closed</div>
<div><a href="foo</a>, </a><a href="bar">that attribute value was closed by the subsequent tag</a></div>
<! This document starts with a bogus declaration ><div>a</div>
<div>This document contains <!an incomplete declaration <div>(do you see it?)</div>
<div>This document ends with <!an incomplete declaration
<div><a style={height:21px;}>That attribute value was bogus</a></div>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">The doctype is invalid because it contains extra whitespace
<div><table><td nowrap>That boolean attribute had no value</td></table></div>
<div>Here's a nonexistent entity: &#foo; (do you see it?)</div>
<div>This document ends before the entity finishes: &gt
<div><p>Paragraphs shouldn't contain block display elements, but this one does: <dl><dt>you see?</dt></p>
<b b="20" a="1" b="10" a="2" a="3" a="4">Multiple values for the same attribute.</b>
<div><table><tr><td>Here's a table</td></tr></table></div>
<div><table id="1"><tr><td>Here's a nested table:<table id="2"><tr><td>foo</td></tr></table></td></div>
<div>This tag contains nothing but whitespace: <b>    </b></div>
<div><blockquote><p><b>This p tag is cut off by</blockquote></p>the end of the blockquote tag</div>
<div><table><div>This table contains bare markup</div></table></div>
<div><div id="1">
 <a href="link1">This link is never closed.
</div>
<div id="2">
 <div id="3">
   <a href="link2">This link is closed.</a>
  </div>
</div></div>
<div>This document contains a <!DOCTYPE surprise>surprise doctype</div>
<div><a><B><Cd><EFG>Mixed case tags are folded to lowercase</efg></CD></b></A></div>
<div><ourâ˜ƒ>Tag name contains Unicode characters</ourâ˜ƒ></div>
<div><a â˜ƒ="snowman">Attribute name contains Unicode characters</a></div>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
ÚBAD_DOCUMENTc                   óü   • \ rS rSr\S\\   4S j5       rS\S\	S\
4S jrS\S\	S\4S jr SS	\S
\\   SS4S jjr\rS\SS4S jr SS\S\S\\   4S jjrS\\   S\\   SS4S jrS\\   S\\   SS4S jrSrg)ÚSoupTestée   Úreturnc                 ó   • [         $ ©N)r   ©Úselfs    Ú[/var/www/djangovue.mamus.xyz/django/venv/lib/python3.13/site-packages/bs4/tests/__init__.pyr   ÚSoupTest.default_builderf   s   € äÐó    ÚmarkupÚkwargsc                 óV   • UR                  SU R                  5      n[        U4SU0UD6$ )z*Build a Beautiful Soup object from markup.Úbuilder)Úpopr   r   )r$   r(   r)   r+   s       r%   ÚsoupÚSoupTest.soupj   s-   € à—*‘*˜Y¨×(<Ñ(<Ó=ˆÜ˜VÑ?¨WÐ?¸Ñ?Ð?r'   c                 óD   • U R                   " S0 UD6R                  U5      $ )zKTurn an HTML fragment into a document.

The details depend on the builder.
© )r   Útest_fragment_to_document)r$   r(   r)   s      r%   Údocument_forÚSoupTest.document_foro   s#   € ð
 ×#Ò#Ñ- fÑ-×GÑGÈÓOÐOr'   NÚto_parseÚcompare_parsed_toc                 óœ  • U R                   n[        XS9nUc  [        U[        5      (       d   eUnUR	                  5       U R                  U5      :X  d   e[        S [        UR                  R                  5       5       5       5      (       d   eUR                  /UR                   Vs/ s H  oUR                  PM     sn:X  d   egs  snf )zYParse some markup using Beautiful Soup and verify that
the output markup is as expected.
©r+   Nc              3   ó*   #   • U  H	  oS :H  v •  M     g7f)r   Nr0   )Ú.0Úvs     r%   Ú	<genexpr>Ú'SoupTest.assert_soup.<locals>.<genexpr>Š   s   é € ÐGÒ#F˜a˜–6Ò#Fùs   ‚)r   r   Ú
isinstanceÚstrÚdecoder2   ÚallÚlistÚopen_tag_counterÚvaluesÚROOT_TAG_NAMEÚtagStackÚname)r$   r4   r5   r+   ÚobjÚxs         r%   Úassert_soupÚSoupTest.assert_soupv   s¸   € ð ×&Ñ&ˆÜ˜HÑ6ˆØÑ$Ü˜h¬×,Ñ,Ð,Ð,Ø (Ðð �z‰z‹|˜t×0Ñ0Ð1BÓCÓCÐCÐCô ÑG¤4¨×(<Ñ(<×(CÑ(CÓ(EÔ#FÓG×GÑGÐGÐGð ×!Ñ!Ð"°s·|²|Ó&D²|°!§v¤v±|Ñ&DÓDÐDÑDùÒ&Ds   Â+C	Úelementc                 ó„   • SnUR                    H.  nU(       a"  X2R                  :X  d   eX#R                  :X  d   eUnM0     g)ziEnsure that next_element and previous_element are properly
set for all descendants of the given element.
N)ÚdescendantsÚnext_elementÚprevious_element)r$   rK   ÚearlierÚes       r%   ÚassertConnectednessÚSoupTest.assertConnectedness’   sE   € ð ˆØ×$Ô$ˆAÞØ×0Ñ0Ó0Ð0Ð0Ø×"4Ñ"4Ó4Ð4Ð4ØŠGò	 %r'   ÚelÚ_recursive_callc           	      óè  • SnUR                   cŠ  UR                  b!   SR                  XR                  S5      5       eUR                  b!   SR                  XR                  S5      5       eUR                  b!   SR                  XR                  S5      5       eSnSnSn[        UR                  5      S-
  nUR                   GH|  nSnUS:X  a�  UR                   bŽ  UR                  UL d!   SR                  XR                  U5      5       eUR                  UL d!   SR                  XUR                  U5      5       eUR                  b!   SR                  XUR                  S5      5       eGO(UR                  UR                  US-
     L d1   S	R                  XUR                  UR                  US-
     5      5       eUR                  US-
     R                  UL dB   S
R                  UR                  US-
     UR                  US-
     R                  U5      5       eUbt  UR                  UL d5   SR                  XUR                  XeR                   R                  5      5       eUR                  UL d!   SR                  XfR                  U5      5       e[        U[        5      (       aV  UR                  (       aE  U R                  US5      nUc   eUR                  b!   S
R                  X3R                  S5      5       eUb  UnOUnXG:X  a.  UR                  b!   S
R                  XUR                  S5      5       eUS-  nGM     Ub  UOUnUc  UnU(       dš  Ub—  Un Uc0  UR                  b!   SR                  XUR                  S5      5       e gUR                  bF  UR                  UR                  L d+   SR                  XUR                  UR                  5      5       e gUR                   nM”  U$ )z.Ensure proper linkage throughout the document.Nz3Bad previous_element
NODE: {}
PREV: {}
EXPECTED: {}z3Bad previous_sibling
NODE: {}
PREV: {}
EXPECTED: {}z/Bad next_sibling
NODE: {}
NEXT: {}
EXPECTED: {}r   é   z/Bad next_element
NODE: {}
NEXT: {}
EXPECTED: {}z2Bad previous_sibling
NODE: {}
PREV {}
EXPECTED: {}z1Bad previous_sibling
NODE: {}
PREV {}
EXPECTED {}z-Bad next_sibling
NODE: {}
NEXT {}
EXPECTED {}z=Bad previous_element
NODE: {}
PREV {}
EXPECTED {}
CONTENTS {}z-Bad next_element
NODE: {}
NEXT {}
EXPECTED {}T)ÚparentrO   ÚformatÚprevious_siblingÚnext_siblingÚlenÚcontentsrN   r=   r   Úlinkage_validator)	r$   rT   rU   Ú
descendantÚidxÚchildÚ
last_childÚlast_idxÚtargets	            r%   r^   ÚSoupTest.linkage_validator�   sR  € ð ˆ
ð �9‰9Ñà×#Ñ#Ñ+ðàG×NÑNØ×'Ñ'¨óóØ+ð
 ×#Ñ#Ñ+ðàG×NÑNØ×'Ñ'¨óóØ+ð
 —‘Ñ'ðàC×JÑJØ—O‘O TóóØ'ð
 ˆØˆØˆ
Ü�r—{‘{Ó# aÑ'ˆØ—[•[ˆEØˆJð �a‹xØ—9‘9Ñ(àŸ™¨5Ò0ðàK×RÑRØŸO™O¨UóóØ0ð
 ×.Ñ.°"Ò4ðàO×VÑVØ×5Ñ5°róóØ4ð
 ×.Ñ.Ñ6ðàN×UÑUØ×5Ñ5°tóóØ6ùð ×*Ñ*¨b¯k©k¸#À¹'Ñ.BÒBðàI×PÑPØ×1Ñ1°2·;±;¸sÀQ¹wÑ3GóóØBð
 —K‘K  a¡Ñ(×5Ñ5¸Ò>ðàE×LÑLØ—K‘K  a¡Ñ(¨"¯+©+°c¸A±gÑ*>×*KÑ*KÈUóóØ>ð
 Ñ)à×.Ñ.°*Ò<ðàZ×aÑaØ×5Ñ5°zÇ<Á<×CXÑCXóóØ<ð
 #×/Ñ/°5Ò8ðàI×PÑPØ"×$;Ñ$;¸UóóØ8ô
 ˜%¤×%Ñ%¨%¯.¯.Ø!×3Ñ3°E¸4Ó@�
Ø!Ñ-Ð-Ð-ð ×+Ñ+Ñ3ðàE×LÑLØ× 7Ñ 7¸óóØ3ð Ñ%Ø'‘
à"�
ð ‹à×&Ñ&Ñ.ðàE×LÑLØ×-Ñ-¨tóóØ.ð �1‰H‹CñQ !ðT )Ñ4‘
¸%ˆØ‰=ØˆEæ 5Ñ#4Ø$&ˆFØØ‘>à×*Ñ*Ñ2ðàI×PÑPØ×1Ñ1°4óóØ2ð ð ð ×(Ñ(Ñ4à×*Ñ*¨f×.AÑ.AÒAðàI×PÑPØ×1Ñ1°6×3FÑ3FóóØAð ð ð  Ÿ™�ñ ð* ˆLr'   ÚtagsÚshould_matchc                 óR   • U Vs/ s H  o3R                   PM     snU:X  d   egs  snf )z½Make sure that the given tags have the correct text.

This is used in tests that define a bunch of tags, each
containing a single string, and then select certain strings by
some mechanism.
N©Ústring©r$   rf   rg   Útags       r%   Úassert_selectsÚSoupTest.assert_selects   s&   € ñ '+Ó+¢d˜s—
”
¡dÑ+¨|Ó;Ð;Ñ;ùÒ+s   …$c                 óD   • U Vs/ s H  o3S   PM	     snU:X  d   egs  snf )z¼Make sure that the given tags have the correct IDs.

This is used in tests that define a bunch of tags, each
containing a single string, and then select certain strings by
some mechanism.
ÚidNr0   rk   s       r%   Úassert_selects_idsÚSoupTest.assert_selects_ids)  s&   € ñ &*Ó*¢T˜c�D”	¡TÑ*¨lÓ:Ð:Ñ:ùÒ*s   …r0   r"   )F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úpropertyr   r   r   r   r   r   r-   r>   r2   r   rI   ÚassertSoupEqualsr   rR   Úboolr
   r^   r   rm   rq   Ú__static_attributes__r0   r'   r%   r   r   e   s  † Øð  kÑ!2ó ó ðð@˜?ð @°cð @¸mô @ð
P 3ð P°#ð P¸#ô Pð MQñEØ'ðEØ<DÀS¹MðEà	õEð4 #Ðð	¨3ð 	°4ô 	ð 05ñAØðAØ(,ðAà	�+Ñ	õAðF< 8¨C¡=ð <ÀÈÁð <ÐRVô <ð	;Ø˜S‘Mð	;Ø19¸#±ð	;à	÷	;r'   r   c            	       óà   • \ rS rSr\R
                  R                  SS0 \" S/S9SS/0/5      S 5       r\R
                  R                  S\" S/S	9SS/0/5      S
 5       r	S r
S rS rS rSrg)ÚTreeBuilderSmokeTesti5  Úmulti_valued_attributesNÚclass)ÚbÚ*Únotclassc                 óP   • SnU R                  X!S9nUR                  S   S:X  d   eg )NzC<html xmlns="http://www.w3.org/1999/xhtml"><a class="a b c"></html>©r}   r~   za b c©r-   Úa©r$   r}   r(   r-   s       r%   Útest_attribute_not_multi_valuedÚ4TreeBuilderSmokeTest.test_attribute_not_multi_valued8  s0   € ð WˆØ�y‰y˜ˆyÐQˆØ�v‰v�g‰ 'Ó)Ð)Ñ)r'   )r…   c                 óT   • SnU R                  X!S9nUR                  S   / SQ:X  d   eg )Nz<a class="a b c">rƒ   r~   )r…   r   Úcr„   r†   s       r%   Útest_attribute_multi_valuedÚ0TreeBuilderSmokeTest.test_attribute_multi_valued@  s/   € ð %ˆØ�y‰y˜ˆyÐQˆØ�v‰v�g‰¢/Ó1Ð1Ñ1r'   c                 óP   • SnU R                  U5        SnU R                  U5        g )Nz<![if word]>content<![endif]>z<!DOCTYPE html]ff>)r-   ©r$   r(   s     r%   Útest_invalid_doctypeÚ)TreeBuilderSmokeTest.test_invalid_doctypeH  s&   € ð 1ˆØ�	‰	�&ÔØ%ˆØ�	‰	�&Õr'   c                 ó|   • SnU R                  U[        SS9S9n[        S UR                   5       5      (       a   eg )Nz<!DOCTYPE html>
<html>
</html>Úhtml)rF   ©Ú
parse_onlyc              3   óB   #   • U  H  n[        U[        5      v •  M     g 7fr"   )r=   r	   )r9   rH   s     r%   r;   Ú=TreeBuilderSmokeTest.test_doctype_filtered.<locals>.<genexpr>S  s   é € ÐHÒ7G°!”z !¤W×-Ð-Ò7Gùs   ‚)r-   r   ÚanyrM   ©r$   r(   r-   s      r%   Útest_doctype_filteredÚ*TreeBuilderSmokeTest.test_doctype_filteredP  s>   € Ø3ˆØ�y‰y˜¬L¸fÑ,EˆyÐFˆÜÑH°t×7GÒ7GÓH×HÑHÐHÐHÐHr'   c                 ó  •  " S S[         5      nSnU R                  US9nU R                  X#S9nUR                  n[	        UR
                  U5      (       d   eSUS   :X  d   eSUS	'   SUS	   :X  d   eS
nXeR                  5       :X  d   eg )Nc                   ó4   ^ • \ rS rSrS\S\4U 4S jjrSrU =r$ )ÚNTreeBuilderSmokeTest.test_custom_attribute_dict_class.<locals>.MyAttributeDictiV  ÚkeyÚvaluec                 ó&   >• [         TU ]  US5        g )NÚ
OVERRIDDEN)ÚsuperÚ__setitem__)r$   rž   rŸ   Ú	__class__s      €r%   r£   ÚZTreeBuilderSmokeTest.test_custom_attribute_dict_class.<locals>.MyAttributeDict.__setitem__W  s   ø€ ô ‘Ñ# C¨Õ6r'   r0   )	rs   rt   ru   rv   r>   r   r£   rz   Ú__classcell__©r¤   s   @r%   ÚMyAttributeDictr�   V  s   ø† ð7 sð 7°3÷ 7õ 7r'   r¨   ú"<a attr1="val1" attr2="val2">f</a>)Úattribute_dict_classr7   r¡   Úattr1TÚattr3zA<a attr1="OVERRIDDEN" attr2="OVERRIDDEN" attr3="OVERRIDDEN">f</a>)Údictr   r-   r…   r=   Úattrsr?   )r$   r¨   r(   r+   r-   rl   Úexpects          r%   Ú test_custom_attribute_dict_classÚ5TreeBuilderSmokeTest.test_custom_attribute_dict_classU  sœ   € ô	7œdô 	7ð 6ˆØ×&Ñ&¸OÐ&ÐLˆØ�y‰y˜ˆyÐ1ˆØ�f‰fˆÜ˜#Ÿ)™) _×5Ñ5Ð5Ð5Ø˜s 7™|Ó+Ð+Ð+ØˆˆG‰Ø˜s 7™|Ó+Ð+Ð+àTˆØŸ™›Ó%Ð%Ñ%r'   c                 óð   •  " S S[         5      nU R                  S[        S/5      0US9nSnU R                  X2S9nUR                  nUS   S	:X  d   eUS   S
S/:X  d   e[        US   U5      (       d   eg )Nc                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )Ú_TreeBuilderSmokeTest.test_custom_attribute_value_list_class.<locals>.MyCustomAttributeValueListii  c                 óH   >• [         TU ]  " U0 UD6  U R                  S5        g )NÚextra)r¢   Ú__init__Úappend)r$   Úargsr)   r¤   s      €r%   r·   ÚhTreeBuilderSmokeTest.test_custom_attribute_value_list_class.<locals>.MyCustomAttributeValueList.__init__j  s!   ø€ Ü‘Ò  $Ð1¨&Ò1Ø—‘˜GÕ$r'   r0   )rs   rt   ru   rv   r·   rz   r¦   r§   s   @r%   ÚMyCustomAttributeValueListr´   i  s   ø† ÷%ó %r'   r»   r€   Úattr2)r}   Úattribute_value_list_classr©   r7   r«   Úval1Úval2r¶   )r   r   Úsetr-   r…   r=   )r$   r»   r+   r(   r-   rl   s         r%   Ú&test_custom_attribute_value_list_classÚ;TreeBuilderSmokeTest.test_custom_attribute_value_list_classh  s˜   € ô	%Ô);ô 	%ð
 ×&Ñ&Ø%(¬#¨w¨i«.Ð$9Ø'Að 'ð 
ˆð 6ˆØ�y‰y˜ˆyÐ1ˆØ�f‰fˆØ�7‰|˜vÓ%Ð%Ð%Ø�7‰| ¨Ð0Ó0Ð0Ð0Ü˜#˜g™,Ð(B×CÑCÐCÑCr'   r0   )rs   rt   ru   rv   ÚpytestÚmarkÚparametrizer­   r‡   r‹   r�   r™   r°   rÁ   rz   r0   r'   r%   r|   r|   5  s’   † ð ‡[�[×ÑØ! D¨"©d°g°YÑ.?À#È
À|ÐATÐ#Uóñ*óð*ð
 ‡[�[×ÑØ!¡D¨G¨9Ñ$5¸¸g¸YÐ7GÐ#Hóñ2óð2ò
òIò
&õ&Dr'   r|   c            	       óÊ  • \ rS rSrSrS rS rS rS rS\	SS	4S
 jr
 SIS\	S\	S\\\4   4S jjrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4S3 r5S4 r6S5 r7S6 r8S7 r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S? rAS@ rBSA rCSB rDSC rESD rFSE rGSF rHSG rISHrJg	)JÚHTMLTreeBuilderSmokeTestiz  a/  A basic test of a treebuilder's competence.

Any HTML treebuilder, present or future, should be able to pass
these tests. With invalid markup, there's room for interpretation,
and different parsers can handle it differently. But with the
markup in these tests, there's not much room for interpretation.
c                 óÄ   • S H6  nU R                  S5      nUR                  U5      nUR                  SL a  M6   e   U R                  SS5        U R                  SS5        g)z]Verify that all HTML4 and HTML5 empty element (aka void element) tags
are handled correctly.
)ÚareaÚbaseÚbrÚcolÚembedÚhrÚimgÚinputÚkeygenÚlinkÚmenuitemÚmetaÚparamÚsourceÚtrackÚwbrÚspacerÚframeÚ Tz<br/><br/><br/>z<br /><br /><br />N)r-   Únew_tagÚis_empty_elementrI   )r$   rF   r-   rÜ   s       r%   Útest_empty_element_tagsÚ0HTMLTreeBuilderSmokeTest.test_empty_element_tagsƒ  se   € ó
ˆDð( —9‘9˜R“=ˆDØ—l‘l 4Ó(ˆGØ×+Ñ+¨tÔ3Ð3Ð3ñ-
ð0 	×ÑÐ*Ð,=Ô>Ø×ÑÐ-Ð/@ÕAr'   c                 óØ  • U R                  S5      n[        UR                  R                  [        5      (       d   e[        UR
                  R                  [        5      (       d   eU R                  S5      n[        UR                  R                  [        5      (       d   eUR                  R                  S:X  d   e[        UR                  R                  [        5      (       d   eg )Nz7<style>Some CSS</style><script>Some Javascript</script>z<style><!--Some CSS--></style>z<!--Some CSS-->)r-   r=   Ústylerj   r   Úscriptr   ©r$   r-   s     r%   Útest_special_string_containersÚ7HTMLTreeBuilderSmokeTest.test_special_string_containers¢  s¯   € Ø�y‰yÐRÓSˆÜ˜$Ÿ*™*×+Ñ+¬Z×8Ñ8Ð8Ð8Ü˜$Ÿ+™+×,Ñ,¬f×5Ñ5Ð5Ð5à�y‰yÐ9Ó:ˆÜ˜$Ÿ*™*×+Ñ+¬Z×8Ñ8Ð8Ð8ð �z‰z× Ñ Ð$5Ó5Ð5Ð5Ü˜$Ÿ*™*×+Ñ+¬Z×8Ñ8Ð8Ñ8r'   c                 ó  • U R                  S5      n[        R                  " U[        R                  5      n[        R                  " U5      nUR
                  [        :X  d   eUR                  5       UR                  5       :X  d   eg )Nú<a><b>foo</a>)r-   ÚpickleÚdumpsÚHIGHEST_PROTOCOLÚloadsr¤   r   r?   ©r$   ÚtreeÚdumpedÚloadeds       r%   Ú!test_pickle_and_unpickle_identityÚ:HTMLTreeBuilderSmokeTest.test_pickle_and_unpickle_identity®  sd   € ð �y‰y˜Ó)ˆÜ—’˜d¤F×$;Ñ$;Ó<ˆÜ—’˜fÓ%ˆØ×Ñ¤=Ó0Ð0Ð0Ø�}‰}‹ $§+¡+£-Ó/Ð/Ñ/r'   c                 óÖ   • SnU R                  U5      n[        R                  " U[        R                  5      n[        R                  " U5      nUR
                  R                  SL d   eg )Nz�
<!DOCTYPE html>
<html lang="en">
<head><title>blabla</title></head>
<body><?xml encoding="utf-8" ?><html></html></body>
</html>
F)r-   rè   ré   rê   rë   r+   Úis_xml)r$   r(   r-   Úpickleds       r%   Ú#test_pickle_and_unpickle_bad_markupÚ<HTMLTreeBuilderSmokeTest.test_pickle_and_unpickle_bad_markup·  sU   € ðˆð �y‰y˜Ó ˆÜ—,’,˜t¤V×%<Ñ%<Ó=ˆÜ�|Š|˜GÓ$ˆØ�|‰|×"Ñ" eÒ+Ð+Ñ+r'   Údoctype_fragmentr    Nc                 ó$  • U R                  U5      u  p#UR                  S   nUR                  [        :X  d   eXA:X  d   eUR	                  S5      S[        U5       U:X  d   eUR                  c   eUR                  R                  S   S:X  d   eg)z8Assert that a given doctype string is handled correctly.r   Úutf8NÚfoo©Ú_document_with_doctyper]   r¤   r	   Úencoder\   Úp©r$   r÷   Údoctype_strr-   Údoctypes        r%   ÚassertDoctypeHandledÚ-HTMLTreeBuilderSmokeTest.assertDoctypeHandledÄ  s—   € à ×7Ñ7Ð8HÓIÑˆð —-‘- Ñ"ˆØ× Ñ ¤GÓ+Ð+Ð+ØÓ*Ð*Ð*Ø�{‰{˜6Ó"Ð#5¤S¨Ó%5Ð6¸+ÓEÐEÐEð �v‰vÑ!Ð!Ð!Ø�v‰v�‰˜qÑ! UÓ*Ð*Ñ*r'   Údoctype_stringc                 ój   • SU< SU< S3nUS-   nU R                  U5      nUR                  S5      U4$ )z5Generate and parse a document with the given doctype.z<!Ú Ú>z
<p>foo</p>rù   ©r-   rý   )r$   r÷   r  r  r(   r-   s         r%   rü   Ú/HTMLTreeBuilderSmokeTest._document_with_doctypeÓ  s;   � ó !/Ó0@ÐAˆØ˜>Ñ)ˆØ�y‰y˜Ó ˆØ�~‰~˜fÓ% tÐ+Ð+r'   c                 óH   • U R                  S5        U R                  S5        g)z?Make sure normal, everyday HTML doctypes are handled correctly.r’   z4html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"N©r  r#   s    r%   Útest_normal_doctypesÚ-HTMLTreeBuilderSmokeTest.test_normal_doctypesÜ  s!   € à×!Ñ! &Ô)Ø×!Ñ!ØBõ	
r'   c                 óp   • U R                  S5      nUR                  S   nSUR                  5       :X  d   eg )Nz
<!DOCTYPE>r   rÛ   )r-   r]   Ústrip)r$   r-   r  s      r%   Útest_empty_doctypeÚ+HTMLTreeBuilderSmokeTest.test_empty_doctypeã  s2   € Ø�y‰y˜Ó&ˆØ—-‘- Ñ"ˆØ�W—]‘]“_Ó$Ð$Ñ$r'   c                 ó  • S H†  nU R                  SU5      u  p#UR                  S   nUR                  [        :X  d   eUS:X  d   eUR	                  S5      S [        U5       S:X  d   eUR                  R                  S   S:X  a  M†   e   g )N)r  ÚDocTyper’   r   rù   s   <!DOCTYPE html>rú   rû   rÿ   s        r%   Útest_mixed_case_doctypeÚ0HTMLTreeBuilderSmokeTest.test_mixed_case_doctypeè  s—   € ã 6ÐØ $× ;Ñ ;¸FÐDTÓ UÑˆKð —m‘m AÑ&ˆGØ×$Ñ$¬Ó/Ð/Ð/Ø˜fÓ$Ð$Ð$Ø—;‘;˜vÓ&Ð'9¬¨[Ó)9Ð:Ð>PÓPÐPÐPð —6‘6—?‘? 1Ñ%¨Õ.Ð.Ð.ò !7r'   c                 ó*   • SnU R                  U5        g )Nznhtml PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"r  )r$   r  s     r%   Útest_public_doctype_with_urlÚ5HTMLTreeBuilderSmokeTest.test_public_doctype_with_urlø  s   € ð CˆØ×!Ñ! 'Õ*r'   c                 ó&   • U R                  S5        g )Nz$foo SYSTEM "http://www.example.com/"r  r#   s    r%   Útest_system_doctypeÚ,HTMLTreeBuilderSmokeTest.test_system_doctypeü  s   € Ø×!Ñ!Ð"HÕIr'   c                 ó&   • U R                  S5        g )Nz#xsl:stylesheet SYSTEM "htmlent.dtd"r  r#   s    r%   Útest_namespaced_system_doctypeÚ7HTMLTreeBuilderSmokeTest.test_namespaced_system_doctypeÿ  ó   € à×!Ñ!Ð"GÕHr'   c                 ó&   • U R                  S5        g )Nz#xsl:stylesheet PUBLIC "htmlent.dtd"r  r#   s    r%   Útest_namespaced_public_doctypeÚ7HTMLTreeBuilderSmokeTest.test_namespaced_public_doctype  r  r'   c                 ó  • Sn[         R                  " SS9 nU R                  U5      nSSS5        WR                  S5      R	                  SS5      UR	                  SS5      :X  d   eW/ :X  d   eg! , (       d  f       NN= f)zJA real XHTML document should come out more or less the same as it went in.óÓ   <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Hello.</title></head>
<body>Goodbye.</body>
</html>T©ÚrecordNúutf-8ó   
r'   )ÚwarningsÚcatch_warningsr-   rý   Úreplace©r$   r(   Úwr-   s       r%   Útest_real_xhtml_documentÚ1HTMLTreeBuilderSmokeTest.test_real_xhtml_document  st   € ðˆô ×$Ò$¨DÒ1°QØ—9‘9˜VÓ$ˆD÷ 2à�{‰{˜7Ó#×+Ñ+¨E°3Ó7¸6¿>¹>È%ÐQTÓ;UÓUÐUÐUð �B‹wˆ‰w÷ 2Õ1ús   —A1Á1
A?c                 óÖ   • Sn[         R                  " SS9 nU R                  U5      nS S S 5        S[        WR	                  S5      5      :X  d   e/ W:X  d   eg ! , (       d  f       N7= f)Ns.   <ns1:foo>content</ns1:foo><ns1:foo/><ns2:foo/>Tr%  é   zns1:foo)r)  r*  r-   r\   Úfind_allr,  s       r%   Útest_namespaced_htmlÚ-HTMLTreeBuilderSmokeTest.test_namespaced_html  sa   € ð GˆÜ×$Ò$¨DÒ1°QØ—9‘9˜VÓ$ˆD÷ 2ð ”C˜Ÿ™ iÓ0Ó1Ó1Ð1Ð1ð �Q‹wˆ‰w÷ 2Õ1ús   —AÁ
A(c                 ó\  • Sn[         R                  " SS9 nU R                  U5      nUR                  R                  S:X  d   e S S S 5        Wu  n[        UR                  [        5      (       d   e[        UR                  5      [        R                  :X  d   eg ! , (       d  f       N]= f)Ns7   <?xml version="1.0" encoding="utf-8"?><tag>string</tag>Tr%  rj   )
r)  r*  r-   rl   rj   r=   Úmessager   r>   ÚMESSAGE)r$   r(   r-  r-   Úwarnings        r%   Útest_detect_xml_parsed_as_htmlÚ7HTMLTreeBuilderSmokeTest.test_detect_xml_parsed_as_html$  s‹   € ð PˆÜ×$Ò$¨DÒ1°QØ—9‘9˜VÓ$ˆDØ—8‘8—?‘? hÓ.Ð.Ñ.÷ 2ð ‰	ˆÜ˜'Ÿ/™/Ô+A×BÑBÐBÐBÜ�7—?‘?Ó#Ô'=×'EÑ'EÓEÐEÑE÷ 2Õ1ús   —.BÂ
B+c                 ó¦   • SnU R                  U5      nXR                  5       :X  d   eSnU R                  U5      nXR                  S5      :X  d   eg )Nz<?PITarget PIContent?>s   <?PITarget PIContent?>rù   )r-   r?   rý   r˜   s      r%   Útest_processing_instructionÚ4HTMLTreeBuilderSmokeTest.test_processing_instruction4  sQ   € ð
 .ˆØ�y‰y˜Ó ˆØŸ™›Ó&Ð&Ð&à.ˆØ�y‰y˜Ó ˆØŸ™ VÓ,Ó,Ð,Ñ,r'   c                 óD   • [         R                  " U R                  5        g)z˜Make sure you can copy the tree builder.

This is important because the builder is part of a
BeautifulSoup object, and we want to be able to copy that.
N)ÚcopyÚdeepcopyr   r#   s    r%   Útest_deepcopyÚ&HTMLTreeBuilderSmokeTest.test_deepcopyA  s   € ô 	�Š�d×*Ñ*Õ+r'   c                 ó–   • U R                  S5      nUR                  R                  (       a   e[        UR                  5      S:X  d   eg)z‘A <p> tag is never designated as an empty-element tag.

Even if the markup shows it as an empty-element tag, it
shouldn't be presented that way.
ú<p/>ú<p></p>N)r-   rþ   rÝ   r>   rã   s     r%   Ú!test_p_tag_is_never_empty_elementÚ:HTMLTreeBuilderSmokeTest.test_p_tag_is_never_empty_elementI  s;   € ð �y‰y˜Ó ˆØ—6‘6×*×*Ð*Ð*Ü�4—6‘6‹{˜iÓ'Ð'Ñ'r'   c                 óp   • U R                  SS5        U R                  SS5        U R                  SS5        g)zzA tag that's not closed by the end of the document should be closed.

This applies to all tags except empty-element tags.
ú<p>rE  z<b>z<b></b>z<br>ú<br/>N©rI   r#   s    r%   Útest_unclosed_tags_get_closedÚ6HTMLTreeBuilderSmokeTest.test_unclosed_tags_get_closedS  s4   € ð
 	×Ñ˜ 	Ô*Ø×Ñ˜ 	Ô*à×Ñ˜ Õ)r'   c                 ó–   • U R                  S5      nUR                  R                  (       d   e[        UR                  5      S:X  d   eg)zªA <br> tag is designated as an empty-element tag.

Some parsers treat <br></br> as one <br/> tag, some parsers as
two tags, but it should always be an empty-element tag.
z	<br></br>rJ  N)r-   rË   rÝ   r>   rã   s     r%   Ú#test_br_is_always_empty_element_tagÚ<HTMLTreeBuilderSmokeTest.test_br_is_always_empty_element_tag]  s;   € ð �y‰y˜Ó%ˆØ�w‰w×'×'Ð'Ð'Ü�4—7‘7‹|˜wÓ&Ð&Ñ&r'   c                 ó&   • U R                  S5        g )Nz<em><em></em></em>rK  r#   s    r%   Útest_nested_formatting_elementsÚ8HTMLTreeBuilderSmokeTest.test_nested_formatting_elementsg  s   € Ø×ÑÐ-Õ.r'   c                 ó^   • SnU R                  U5      nSUR                  S5      S   :X  d   eg )Nz¯<!DOCTYPE html>
<html>
<head>
<title>Ordinary HEAD element test</title>
</head>
<script type="text/javascript">
alert("Help!");
</script>
<body>
Hello, world!
</body>
</html>
ztext/javascriptrâ   Útype)r-   Úfind)r$   r’   r-   s      r%   Útest_double_headÚ)HTMLTreeBuilderSmokeTest.test_double_headj  s4   € ðˆð �y‰y˜‹ˆØ  D§I¡I¨hÓ$7¸Ñ$?Ó?Ð?Ñ?r'   c                 ó  • SnU R                  U5        U R                  U5      nUR                  SS9nUR                  [        :X  d   eUR                  SS9nX4R
                  :X  d   eUR                  SS9nX5R                  :X  d   eg )Nz<p>foo<!--foobar-->baz</p>Úfoobarri   rú   Úbaz)rI   r-   rV  r¤   r   rN   rO   )r$   r(   r-   Úcommentrú   r[  s         r%   Útest_commentÚ%HTMLTreeBuilderSmokeTest.test_comment{  s�   € à-ˆØ×Ñ˜Ô à�y‰y˜Ó ˆØ—)‘) 8�)Ð,ˆØ× Ñ ¤GÓ+Ð+Ð+ð �i‰i˜uˆiÐ%ˆØ×*Ñ*Ó*Ð*Ð*Ø�i‰i˜uˆiÐ%ˆØ×.Ñ.Ó.Ð.Ñ.r'   c                 óv  • SnSnU R                  U5        U R                  U5        U R                  U5      nUR                  R                  5       U:X  d   eU R                  U5      nUR                  R                  5       U:X  d   eU R                  S5      nUR                  R                  5       S:X  d   eg)zoWhitespace must be preserved in <pre> and <textarea> tags,
even if that would mean not prettifying the markup.
z<pre>a   z</pre>
z <textarea> woo
woo  </textarea>
z<textarea></textarea>z<textarea></textarea>
N)rI   r-   ÚpreÚprettifyÚtextarea)r$   Ú
pre_markupÚtextarea_markupr-   s       r%   Ú-test_preserved_whitespace_in_pre_and_textareaÚFHTMLTreeBuilderSmokeTest.test_preserved_whitespace_in_pre_and_textareaŠ  s§   € ð *ˆ
Ø>ˆØ×Ñ˜Ô$Ø×Ñ˜Ô)à�y‰y˜Ó$ˆØ�x‰x× Ñ Ó" jÓ0Ð0Ð0à�y‰y˜Ó)ˆØ�}‰}×%Ñ%Ó'¨?Ó:Ð:Ð:à�y‰yÐ0Ó1ˆØ�}‰}×%Ñ%Ó'Ð+DÓDÐDÑDr'   c                 óv   • SnU R                  U5        SnU R                  U5        SnU R                  U5        g)z+Inline elements can be nested indefinitely.z<b>Inside a B tag</b>z!<p>A <i>nested <b>tag</b></i></p>z/<p>A <a>doubly <i>nested <b>tag</b></i></a></p>NrK  )r$   Úb_tagÚnested_b_tagÚdouble_nested_b_tags       r%   Útest_nested_inline_elementsÚ4HTMLTreeBuilderSmokeTest.test_nested_inline_elementsœ  s=   € à'ˆØ×Ñ˜Ôà:ˆØ×Ñ˜Ô&àOÐØ×ÑÐ,Õ-r'   c                 óÂ   • U R                  S5      nUR                  nUR                  R                  R                  S:X  d   eUR                  R                  S:X  d   eg)zBlock elements can be nested.z*<blockquote><p><b>Foo</b></p></blockquote>ÚFooN)r-   Ú
blockquoterþ   r   rj   )r$   r-   ro  s      r%   Ú test_nested_block_level_elementsÚ9HTMLTreeBuilderSmokeTest.test_nested_block_level_elements§  sN   € à�y‰yÐEÓFˆØ—_‘_ˆ
Ø�|‰|�~‰~×$Ñ$¨Ó-Ð-Ð-Ø�|‰|×"Ñ" eÓ+Ð+Ñ+r'   c                 óN   • SnU R                  US5        U R                  S5        g)z$One table can go inside another one.z[<table id="1"><tr><td>Here's another table:<table id="2"><tr><td>foo</td></tr></table></td>zh<table id="1"><tr><td>Here's another table:<table id="2"><tr><td>foo</td></tr></table></td></tr></table>z{<table><thead><tr><td>Foo</td></tr></thead><tbody><tr><td>Bar</td></tr></tbody><tfoot><tr><td>Baz</td></tr></tfoot></table>NrK  rŽ   s     r%   Útest_correctly_nested_tablesÚ5HTMLTreeBuilderSmokeTest.test_correctly_nested_tables®  s9   € ðð 	ð 	×ÑØð!ô	
ð 	×Ñð;õ	
r'   c                 ó˜   • SnU R                  U5      nSS/UR                  S   :X  d   eUR                  UR                  SSS9:X  d   eg )Nz<div class=" foo bar	 "></a>rú   Úbarr~   Údivzfoo bar)Úclass_)r-   rw  rV  r˜   s      r%   Ú*test_multivalued_attribute_with_whitespaceÚCHTMLTreeBuilderSmokeTest.test_multivalued_attribute_with_whitespaceÆ  sS   € ð 0ˆØ�y‰y˜Ó ˆØ�uˆ~ §¡¨'Ñ!2Ó2Ð2Ð2ð �x‰x˜4Ÿ9™9 U°9˜9Ð=Ó=Ð=Ñ=r'   c                 ój   • SnU R                  U5      nS/UR                  R                  S   :X  d   eg )Nz1<table><div><div class="css"></div></div></table>Úcssr~   )r-   rw  r˜   s      r%   Ú(test_deeply_nested_multivalued_attributeÚAHTMLTreeBuilderSmokeTest.test_deeply_nested_multivalued_attributeÒ  s5   € ð EˆØ�y‰y˜Ó ˆØˆw˜$Ÿ(™(Ÿ,™, wÑ/Ó/Ð/Ñ/r'   c                 óX   • SnU R                  U5      nSS/UR                  S   :X  d   eg )Nz<html class="a b"></html>r…   r   r~   )r-   r’   r˜   s      r%   Ú"test_multivalued_attribute_on_htmlÚ;HTMLTreeBuilderSmokeTest.test_multivalued_attribute_on_htmlÚ  s2   € ð -ˆØ�y‰y˜Ó ˆØ�Sˆz˜TŸY™Y wÑ/Ó/Ð/Ñ/r'   c                 ó(   • U R                  SS5        g )Nz<a b="<a>"></a>z<a b="&lt;a&gt;"></a>rK  r#   s    r%   Ú3test_angle_brackets_in_attribute_values_are_escapedÚLHTMLTreeBuilderSmokeTest.test_angle_brackets_in_attribute_values_are_escapedâ  s   € Ø×ÑÐ*Ð,CÕDr'   c                 ó(   • U R                  SS5        g )Nz$<p>&bull; AT&T is in the s&p 500</p>u)   <p>â€¢ AT&amp;T is in the s&amp;p 500</p>rK  r#   s    r%   Ú3test_strings_resembling_character_entity_referencesÚLHTMLTreeBuilderSmokeTest.test_strings_resembling_character_entity_referenceså  s   € ð 	×ÑØ2Ø:õ	
r'   c                 ó(   • U R                  SS5        g )Nz<p>Bob&apos;s Bar</p>z<p>Bob's Bar</p>rK  r#   s    r%   Útest_apos_entityÚ)HTMLTreeBuilderSmokeTest.test_apos_entityí  s   € Ø×ÑØ#Øõ	
r'   c                 ób   • SnU R                  U5      nSUR                  R                  :X  d   eg )Nz%<p>&#147;Hello&#148; &#45;&#9731;</p>u   â€œHelloâ€� -â˜ƒ©r-   rþ   rj   r˜   s      r%   Ú*test_entities_in_foreign_document_encodingÚCHTMLTreeBuilderSmokeTest.test_entities_in_foreign_document_encodingó  s-   € ð 9ˆØ�y‰y˜Ó ˆØ! T§V¡V§]¡]Ó2Ð2Ñ2r'   c                 ó˜   • SnU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        g )Nu   <p id="piÃ±ata"></p>z<p id="pi&#241;ata"></p>z<p id="pi&#xf1;ata"></p>z<p id="pi&#Xf1;ata"></p>z<p id="pi&ntilde;ata"></p>rK  ©r$   r¯   s     r%   Ú0test_entities_in_attributes_converted_to_unicodeÚIHTMLTreeBuilderSmokeTest.test_entities_in_attributes_converted_to_unicodeÿ  sK   € ØHˆØ×ÑÐ3°VÔ<Ø×ÑÐ3°VÔ<Ø×ÑÐ3°VÔ<Ø×ÑÐ5°vÕ>r'   c                 ó˜   • SnU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        g )Nu   <p>piÃ±ata</p>z<p>pi&#241;ata</p>z<p>pi&#xf1;ata</p>z<p>pi&#Xf1;ata</p>z<p>pi&ntilde;ata</p>rK  r�  s     r%   Ú*test_entities_in_text_converted_to_unicodeÚCHTMLTreeBuilderSmokeTest.test_entities_in_text_converted_to_unicode  sK   € ØBˆØ×ÑÐ-¨vÔ6Ø×ÑÐ-¨vÔ6Ø×ÑÐ-¨vÔ6Ø×ÑÐ/°Õ8r'   c                 ó(   • U R                  SS5        g )Nz#<p>I said &quot;good day!&quot;</p>z<p>I said "good day!"</p>rK  r#   s    r%   Ú,test_quot_entity_converted_to_quotation_markÚEHTMLTreeBuilderSmokeTest.test_quot_entity_converted_to_quotation_mark  s   € Ø×ÑØ1Ð3Nõ	
r'   c                 ót   • SnU R                  SU5        U R                  SU5        U R                  SU5        g )Nu   ï¿½z&#10000000000000;z&#x10000000000000;z&#1000000000;rK  r�  s     r%   Útest_out_of_range_entityÚ1HTMLTreeBuilderSmokeTest.test_out_of_range_entity  s9   € Ø,ˆØ×ÑÐ,¨fÔ5Ø×ÑÐ-¨vÔ6Ø×Ñ˜¨&Õ1r'   c                 óà   • U R                  S5      nSUR                  R                  R                  R                  :X  d   eSUR
                  R                  :X  d   eU R                  U5        g)zDMostly to prevent a recurrence of a bug in the html5lib treebuilder.z!<html><h2>
foo</h2><p></p></html>rþ   N)r-   Úh2rj   rN   rF   rþ   rR   rã   s     r%   Útest_multipart_stringsÚ/HTMLTreeBuilderSmokeTest.test_multipart_strings  sW   € à�y‰yÐ=Ó>ˆØ�d—g‘g—n‘n×1Ñ1×6Ñ6Ó6Ð6Ð6Ø�d—f‘f—k‘kÓ!Ð!Ð!Ø× Ñ  Õ&r'   c                 óÐ   • SnU R                  U5      nSUR                  R                  5       :X  d   eSnU R                  U5      nSUR                  R                  5       :X  d   eg )Nz<p>a &nosuchentity b</p>z<p>a &amp;nosuchentity b</p>z<p>a &nosuchentity; b</p>z<p>a &amp;nosuchentity; b</p>)r-   rþ   r?   r˜   s      r%   Útest_invalid_html_entityÚ1HTMLTreeBuilderSmokeTest.test_invalid_html_entity  sZ   € ð
 ,ˆØ�y‰y˜Ó ˆØ-°·±·±³Ó@Ð@Ð@à,ˆØ�y‰y˜Ó ˆØ.°$·&±&·-±-³/ÓAÐAÑAr'   c                 ó~   • SnU R                  U5      nUR                  R                  c   eU R                  U5        g)ú8Prevent recurrence of a bug in the html5lib treebuilder.z?<html><head></head>
  <link></link>
  <body>foo</body>
</html>
N)r-   r’   ÚbodyrR   ©r$   Úcontentr-   s      r%   Ú#test_head_tag_between_head_and_bodyÚ<HTMLTreeBuilderSmokeTest.test_head_tag_between_head_and_body,  s;   € ðˆð
 �y‰y˜Ó!ˆØ�y‰y�~‰~Ñ)Ð)Ð)Ø× Ñ  Õ&r'   c                 ó`   • SnU R                  U5      nU R                  UR                  5        g)r¤  z�<!DOCTYPE html>
<html>
 <body>
   <article id="a" >
   <div><a href="1"></div>
   <footer>
     <a href="2"></a>
   </footer>
  </article>
  </body>
</html>
N)r-   rR   Úarticler¦  s      r%   Útest_multiple_copies_of_a_tagÚ6HTMLTreeBuilderSmokeTest.test_multiple_copies_of_a_tag7  s+   € ðˆð �y‰y˜Ó!ˆØ× Ñ  §¡Õ.r'   c                 óÒ   • SnU R                  U5      nXR                  5       :X  d   eSUR                  S   :X  d   eSUR                  S   :X  d   eSUR                  S   :X  d   eg)	zvParsers don't need to *understand* namespaces, but at the
very least they should not choke on namespaces or lose
data.sÙ   <html xmlns="http://www.w3.org/1999/xhtml" xmlns:mathml="http://www.w3.org/1998/Math/MathML" xmlns:svg="http://www.w3.org/2000/svg"><head></head><body><mathml:msqrt>4</mathml:msqrt><b svg:fill="red"></b></body></html>úhttp://www.w3.org/1999/xhtmlÚxmlnsú"http://www.w3.org/1998/Math/MathMLzxmlns:mathmlúhttp://www.w3.org/2000/svgz	xmlns:svgN)r-   rý   r’   r˜   s      r%   Útest_basic_namespacesÚ.HTMLTreeBuilderSmokeTest.test_basic_namespacesH  so   € ð
 nˆØ�y‰y˜Ó ˆØŸ™›Ó&Ð&Ð&Ø-°·±¸7Ñ1CÓCÐCÐCØ3°t·y±yÀÑ7PÓPÐPÐPØ+¨t¯y©y¸Ñ/EÓEÐEÑEr'   c                 óX   • SnU R                  U5      nSS/UR                  S   :X  d   eg )Ns   <a class="foo bar">rú   rv  r~   r„   r˜   s      r%   Ú-test_multivalued_attribute_value_becomes_listÚFHTMLTreeBuilderSmokeTest.test_multivalued_attribute_value_becomes_listT  s/   € Ø'ˆØ�y‰y˜Ó ˆØ�uˆ~ §¡¨¡Ó0Ð0Ñ0r'   c                 ób   • SnU R                  U5      nSUR                  R                  :X  d   eg )NuD   <html><head><meta encoding="euc-jp"></head><body>SacrÃ© bleu!</body>õ   SacrÃ© bleu!)r-   r¥  rj   r˜   s      r%   Útest_can_parse_unicode_documentÚ8HTMLTreeBuilderSmokeTest.test_can_parse_unicode_document`  s0   € ð yˆØ�y‰y˜Ó ˆØ 4§9¡9×#3Ñ#3Ó3Ð3Ñ3r'   c                 óf   • [        S5      nU R                  SUS9nUR                  5       S:X  d   eg)z2Parsers should be able to work with SoupStrainers.r   z&A <b>bold</b> <meta/> <i>statement</i>r“   z<b>bold</b>N)r   r-   r?   )r$   Ústrainerr-   s      r%   Útest_soupstrainerÚ*HTMLTreeBuilderSmokeTest.test_soupstrainerh  s3   € ä Ó$ˆØ�y‰yÐAÈhˆyÐWˆØ�{‰{‹} Ó-Ð-Ñ-r'   c                 ó(   • U R                  SS5        g )Nz<foo attr='bar'></foo>z<foo attr="bar"></foo>rK  r#   s    r%   Ú7test_single_quote_attribute_values_become_double_quotesÚPHTMLTreeBuilderSmokeTest.test_single_quote_attribute_values_become_double_quotesn  s   € Ø×ÑÐ1Ð3KÕLr'   c                 ó*   • SnU R                  U5        g )Nú'<foo attr='bar "brawls" happen'>a</foo>rK  )r$   Útexts     r%   Ú7test_attribute_values_with_nested_quotes_are_left_aloneÚPHTMLTreeBuilderSmokeTest.test_attribute_values_with_nested_quotes_are_left_aloneq  s   € Ø<ˆØ×Ñ˜Õr'   c                 óœ   • SnU R                  U5      nSUR                  S'   U R                  UR                  R                  5       S5        g )NrÄ  zBrawls happen at "Bob's Bar"Úattrz:<foo attr="Brawls happen at &quot;Bob's Bar&quot;">a</foo>)r-   rú   rI   r?   )r$   rÅ  r-   s      r%   Ú:test_attribute_values_with_double_nested_quotes_get_quotedÚSHTMLTreeBuilderSmokeTest.test_attribute_values_with_double_nested_quotes_get_quotedu  sA   € Ø<ˆØ�y‰y˜‹ˆØ:ˆ�‰�ÑØ×ÑØ�H‰H�O‰OÓØMõ	
r'   c                 óL   • U R                  SS5        U R                  SS5        g )Nz+<this is="really messed up & stuff"></this>z/<this is="really messed up &amp; stuff"></this>z.<a href="http://example.org?a=1&b=2;3">foo</a>z2<a href="http://example.org?a=1&amp;b=2;3">foo</a>rK  r#   s    r%   Ú.test_ampersand_in_attribute_value_gets_escapedÚGHTMLTreeBuilderSmokeTest.test_ampersand_in_attribute_value_gets_escaped~  s,   € Ø×ÑØ9Ø=ô	
ð
 	×ÑØ<Ø@õ	
r'   c                 ó&   • U R                  S5        g )Nz/<a href="http://example.org?a=1&amp;b=2;3"></a>rK  r#   s    r%   Ú7test_escaped_ampersand_in_attribute_value_is_left_aloneÚPHTMLTreeBuilderSmokeTest.test_escaped_ampersand_in_attribute_value_is_left_alone‰  s   € Ø×ÑÐJÕKr'   c                 ó.   • SnSnU R                  X5        g )Nú-<p>&lt;&lt;sacr&eacute;&#32;bleu!&gt;&gt;</p>õ#   <p>&lt;&lt;sacrÃ© bleu!&gt;&gt;</p>rK  )r$   rÅ  Úexpecteds      r%   Ú1test_entities_in_strings_converted_during_parsingÚJHTMLTreeBuilderSmokeTest.test_entities_in_strings_converted_during_parsingŒ  s!   € ð ?ˆàRð 	ð 	×Ñ˜Õ(r'   c                 ó`   • SnU R                  USS9nUR                  R                  S:X  d   eg )Ns   <p>‘Foo’</p>zwindows-1252©Úfrom_encodingu	   â€˜Fooâ€™rŒ  )r$   Úquoter-   s      r%   Ú)test_smart_quotes_converted_on_the_way_inÚBHTMLTreeBuilderSmokeTest.test_smart_quotes_converted_on_the_way_in•  s:   € ð &ˆØ�y‰y˜¨nˆyÐ=ˆà�F‰F�M‰MØQóRð	
ñRr'   c                 ó^   • U R                  S5      nUR                  R                  S:X  d   eg )Nz<a>&nbsp;&nbsp;</a>u   Â Â )r-   r…   rj   rã   s     r%   Ú0test_non_breaking_spaces_converted_on_the_way_inÚIHTMLTreeBuilderSmokeTest.test_non_breaking_spaces_converted_on_the_way_inŸ  s(   € Ø�y‰yÐ.Ó/ˆØ�v‰v�}‰}Ð 8Ó8Ð8Ñ8r'   c                 óŽ   • SnSR                  S5      nU R                  U5      nUR                  R                  S5      U:X  d   eg )NrÓ  rÔ  r'  )rý   r-   rþ   )r$   rÅ  rÕ  r-   s       r%   Ú&test_entities_converted_on_the_way_outÚ?HTMLTreeBuilderSmokeTest.test_entities_converted_on_the_way_out£  sD   € Ø>ˆØY×`Ñ`Øó
ˆð �y‰y˜‹ˆØ�v‰v�}‰}˜WÓ%¨Ó1Ð1Ñ1r'   c                 óÂ   • SnUR                  S5      nU R                  U5      nUR                  S5      nUR                  SS5      nUR                  S5      nXE:X  d   eg )Nuƒ   <html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-type"/></head><body><p>SacrÃ© bleu!</p></body></html>z
iso-8859-1r'  z
ISO-8859-1)rý   r-   r+  )r$   Úunicode_htmlÚiso_latin_htmlr-   ÚresultrÕ  s         r%   Útest_real_iso_8859_documentÚ4HTMLTreeBuilderSmokeTest.test_real_iso_8859_document«  sn   € ð
 ~ˆð &×,Ñ,¨\Ó:ˆð �y‰y˜Ó(ˆð —‘˜WÓ%ˆð
  ×'Ñ'¨°gÓ>ˆð —?‘? 7Ó+ˆð Ó!Ð!Ñ!r'   c                 óä   • SnUR                  S5      nU R                  U5      nUR                  S5      UR                  S5      :X  d   eUR                  S5      UR                  S5      :X  d   eg )Nsk   <html><head></head><body><pre>‚±‚ê‚ÍShift-JIS‚ÅƒR�[ƒfƒBƒ“ƒO‚³‚ê‚½“ú–{Œê‚Ìƒtƒ@ƒCƒ‹‚Å‚·�B</pre></body></html>ú	shift-jisr'  Úeuc_jp)r?   r-   rý   )r$   Úshift_jis_htmlrå  r-   s       r%   Útest_real_shift_jis_documentÚ5HTMLTreeBuilderSmokeTest.test_real_shift_jis_documentÇ  sr   € ð$ð 	ð &×,Ñ,¨[Ó9ˆØ�y‰y˜Ó&ˆð �{‰{˜7Ó# |×':Ñ':¸7Ó'CÓCÐCÐCØ�{‰{˜8Ó$¨×(;Ñ(;¸HÓ(EÓEÐEÑEr'   c                 ó¶   • SnU R                  USS9nUR                  S;   d   eUR                  S5      UR                  S5      R                  S5      :X  d   eg )Ns›   <html><head><title>Hebrew (ISO 8859-8) in Visual Directionality</title></head><body><h1>Hebrew (ISO 8859-8) in Visual Directionality</h1>íåìù</body></html>ú	iso8859-8rÙ  )rñ  z
iso-8859-8r'  )r-   Úoriginal_encodingrý   r?   )r$   Úhebrew_documentr-   s      r%   Útest_real_hebrew_documentÚ2HTMLTreeBuilderSmokeTest.test_real_hebrew_documentÙ  sg   € ð EˆØ�y‰y˜¸ˆyÐDˆð ×%Ñ%Ð)DÓDÐDÐDØ�{‰{˜7Ó#Ø×"Ñ" ;Ó/×6Ñ6°wÓ?ó
ð 	
ñ 
r'   c                 ó.  • SnSU-  nU R                  U5      nUR                  SSS05      nUS   nSU:X  d   e[        U[        5      (       d   eSUR	                  S	5      :X  d   eS
UR                  S	5      ;   d   eSUR                  S5      ;   d   eg )NzE<meta content="text/html; charset=x-sjis" http-equiv="Content-type"/>új<html><head>
%s
<meta http-equiv="Content-language" content="ja"/></head><body>Shift-JIS markup goes here.rÔ   z
http-equivzContent-typer§  ztext/html; charset=x-sjisztext/html; charset=utf8rù   s   charset=utf8s   charset=shift-jisrë  )r-   rV  r=   r   Úsubstitute_encodingrý   )r$   Úmeta_tagrí  r-   Úparsed_metar§  s         r%   Ú'test_meta_tag_reflects_current_encodingÚ@HTMLTreeBuilderSmokeTest.test_meta_tag_reflects_current_encodingå  sÂ   € ð Wð 	ð7ð ñ	ˆð
 �y‰y˜Ó(ˆð —i‘i ¨°~Ð(FÓGˆØ˜iÑ(ˆØ*¨gÓ5Ð5Ð5ô ˜'Ô#<×=Ñ=Ð=Ð=ð )¨G×,GÑ,GÈÓ,OÓOÐOÐOð  +×"4Ñ"4°VÓ"<Ó<Ð<Ð<Ø# {×'9Ñ'9¸+Ó'FÓFÐFÑFr'   c                 ó&  • SnSU-  nU R                  U5      nUR                  SSS9nUS   nSU:X  d   e[        U[        5      (       d   eSUR	                  S5      :X  d   eS	UR                  S5      ;   d   eS
UR                  S5      ;   d   eg )Nz'<meta id="encoding" charset="x-sjis" />r÷  rÔ   Úencoding)rp   Úcharsetzx-sjisrù   s   charset="utf8"s   charset="shift-jis"rë  )r-   rV  r=   r   rø  rý   )r$   rù  rí  r-   rú  rÿ  s         r%   Ú3test_html5_style_meta_tag_reflects_current_encodingÚLHTMLTreeBuilderSmokeTest.test_html5_style_meta_tag_reflects_current_encoding  s»   € ð =ˆð7ð ñ	ˆð
 �y‰y˜Ó(ˆð —i‘i ¨:�iÐ6ˆØ˜iÑ(ˆØ˜7Ó"Ð"Ð"ô ˜'Ô#<×=Ñ=Ð=Ð=ð ˜×4Ñ4°VÓ<Ó<Ð<Ð<ð ! K×$6Ñ$6°vÓ$>Ó>Ð>Ð>Ø%¨×);Ñ);¸KÓ)HÓHÐHÑHr'   c                 óÂ   • S HY  nU R                  U5      n[         H;  nUS;   a  M  UR                  U5      nSU;   d   eUR                  S5      U;  a  M;   e   M[     g )N)sB   <meta charset="utf8"></head><meta id="encoding" charset="utf-8" />©ÚidnaÚmbcsÚoemÚ	undefinedÚstring_escapezstring-escapes   meta charset=""Úascii©r-   r   rý   ©r$   r(   r-   rþ  Úencodeds        r%   Ú2test_python_specific_encodings_not_used_in_charsetÚKHTMLTreeBuilderSmokeTest.test_python_specific_encodings_not_used_in_charset&  sm   € ó

ˆFð —9‘9˜VÓ$ˆDß5�Øð  ó ñ ØŸ+™+ hÓ/�Ø)¨WÓ4Ð4Ð4Ø—‘ wÓ/°wÕ>Ð>Ð>ó 6ò	
r'   c                 ó„   • U R                  S5      nSUR                  S'   SUR                  R                  5       :X  d   eg )Nz<a>text</a>rv  rú   z<a foo="bar">text</a>)r-   r…   r?   )r$   Údatas     r%   Ú5test_tag_with_no_attributes_can_have_attributes_addedÚNHTMLTreeBuilderSmokeTest.test_tag_with_no_attributes_can_have_attributes_added@  s5   € Ø�y‰y˜Ó'ˆØˆ�‰ˆu‰Ø&¨$¯&©&¯-©-«/Ó9Ð9Ñ9r'   c                 óf   • U R                  S5      nSUR                  R                  5       :X  d   eg )Nz0<body><div><p>text1</p></span>text2</div></body>z)<body><div><p>text1</p>text2</div></body>)r-   r¥  r?   rã   s     r%   Ú$test_closing_tag_with_no_opening_tagÚ=HTMLTreeBuilderSmokeTest.test_closing_tag_with_no_opening_tagE  s.   € ð
 �y‰yÐKÓLˆØ:¸d¿i¹i×>NÑ>NÓ>PÓPÐPÑPr'   c                 óP   • U R                  [        5      nU R                  U5        g©z3Test the worst case (currently) for linking issues.N©r-   r   r^   rã   s     r%   Útest_worst_caseÚ(HTMLTreeBuilderSmokeTest.test_worst_caseM  ó    € ð �y‰yœÓ&ˆØ×Ñ˜tÕ$r'   r0   )ÚDOCTYPE)Krs   rt   ru   rv   Ú__doc__rÞ   rä   rð   rõ   r>   r  r   Úbytesr   rü   r  r  r  r  r  r  r!  r.  r3  r9  r<  rA  rF  rL  rO  rR  rW  r]  re  rk  rp  rs  ry  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  rz   r0   r'   r%   rÇ   rÇ   z  s“  † ñòBò>
9ò0ò,ð+°Sð +¸Tô +ð  <Eñ,Ø #ð,Ø58ð,à	ˆu�mÐ#Ñ	$õ,ò
ò%ò
/ò +òJòIòIòò ò	Fò -ò,ò(ò*ò'ò/ò@ò"/òEò$	.ò,ò
ò0
>ò0ò0òEò
ò
ò
3ò?ò9ò
ò
2ò'òBò	'ò/ò"
Fò1ò4ò.òMòò
ò	
òLò)ò
ò9ò2ò"ò8Fò$

òGòFIò<?ò4:ò
Qõ%r'   rÇ   c                   ó’   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚXMLTreeBuilderSmokeTestiT  c                 óô   • U R                  S5      n[        R                  " US5      n[        R                  " U5      nUR                  [
        :X  d   eUR                  5       UR                  5       :X  d   eg )Nrç   r1  )r-   rè   ré   rë   r¤   r   r?   rì   s       r%   rð   Ú9XMLTreeBuilderSmokeTest.test_pickle_and_unpickle_identityU  s^   € ð �y‰y˜Ó)ˆÜ—’˜d AÓ&ˆÜ—’˜fÓ%ˆØ×Ñ¤=Ó0Ð0Ð0Ø�}‰}‹ $§+¡+£-Ó/Ð/Ñ/r'   c                 óR   • U R                  S5      nUR                  5       S:X  d   eg )Nú<root/>s.   <?xml version="1.0" encoding="utf-8"?>
<root/>r  rã   s     r%   Útest_docstring_generatedÚ0XMLTreeBuilderSmokeTest.test_docstring_generated^  s%   € Ø�y‰y˜Ó#ˆØ�{‰{‹}Ð RÓRÐRÑRr'   c                 óV   • SnU R                  U5      nXR                  S5      :X  d   eg )Ns,   <?xml version="1.0" encoding="utf8"?>
<foo/>rù   r  r˜   s      r%   Útest_xml_declarationÚ,XMLTreeBuilderSmokeTest.test_xml_declarationb  s*   € ØEˆØ�y‰y˜Ó ˆØŸ™ VÓ,Ó,Ð,Ñ,r'   c                 ó´   • SnU R                  U5      n[         H;  nUS;   a  M  UR                  U5      nSU;   d   eUR                  S5      U;  a  M;   e   g )Ns   <?xml version="1.0"?>
<foo/>r  s   <?xml version="1.0"?>r	  r
  r  s        r%   Ú:test_python_specific_encodings_not_used_in_xml_declarationÚRXMLTreeBuilderSmokeTest.test_python_specific_encodings_not_used_in_xml_declarationg  sf   € ð 6ˆØ�y‰y˜Ó ˆß1ˆHØð ó ñ Ø—k‘k (Ó+ˆGØ+¨wÓ6Ð6Ð6Ø—?‘? 7Ó+°7Õ:Ð:Ð:ò 2r'   c                 óV   • SnU R                  U5      nXR                  S5      :X  d   eg )Ns<   <?xml version="1.0" encoding="utf8"?>
<?PITarget PIContent?>rù   r  r˜   s      r%   r<  Ú3XMLTreeBuilderSmokeTest.test_processing_instruction~  s*   € ØUˆØ�y‰y˜Ó ˆØŸ™ VÓ,Ó,Ð,Ñ,r'   c                 óX   • SnU R                  U5      nUR                  S5      U:X  d   eg)zGA real XHTML document should come out *exactly* the same as it went in.r$  r'  Nr  r˜   s      r%   r.  Ú0XMLTreeBuilderSmokeTest.test_real_xhtml_documentƒ  s0   € ðˆð �y‰y˜Ó ˆØ�{‰{˜7Ó# vÓ-Ð-Ñ-r'   c                 óT   • SnU R                  U5      nXR                  5       :X  d   eg )Ns  <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<parent xmlns="http://ns1/">
<child xmlns="http://ns2/" xmlns:ns3="http://ns3/">
<grandchild ns3:attr="value" xmlns="http://ns4/"/>
</child>
</parent>r  ©r$   Údocr-   s      r%   Útest_nested_namespacesÚ.XMLTreeBuilderSmokeTest.test_nested_namespacesŽ  s*   € ðˆð �y‰y˜‹~ˆØ—k‘k“mÓ#Ð#Ñ#r'   c                 ór   • Sn[        US5      nSUR                  l        UR                  5       nSU;   d   eg )Nz/
  <script type="text/javascript">
  </script>
zlxml-xmlzconsole.log("< < hey > > ");s   &lt; &lt; hey &gt; &gt;)r   râ   rj   rý   )r$   r3  r-   r  s       r%   Ú5test_formatter_processes_script_tag_for_xml_documentsÚMXMLTreeBuilderSmokeTest.test_formatter_processes_script_tag_for_xml_documents™  s>   € ðˆô ˜S *Ó-ˆð <ˆ�‰ÔØ—+‘+“-ˆØ)¨WÓ4Ð4Ñ4r'   c                 ób   • SnU R                  U5      nSUR                  R                  :X  d   eg )Nu?   <?xml version="1.0" encoding="euc-jp"><root>SacrÃ© bleu!</root>r¹  ©r-   Úrootrj   r˜   s      r%   rº  Ú7XMLTreeBuilderSmokeTest.test_can_parse_unicode_document¥  s-   € ØsˆØ�y‰y˜Ó ˆØ 4§9¡9×#3Ñ#3Ó3Ð3Ñ3r'   c                 ób   • SnU R                  U5      nSUR                  R                  :X  d   eg )NuB   ï»¿<?xml version="1.0" encoding="euc-jp"><root>SacrÃ© bleu!</root>r¹  r:  r˜   s      r%   Ú1test_can_parse_unicode_document_begining_with_bomÚIXMLTreeBuilderSmokeTest.test_can_parse_unicode_document_begining_with_bomª  s0   € ð GˆØ�y‰y˜Ó ˆØ 4§9¡9×#3Ñ#3Ó3Ð3Ñ3r'   c                 ó`   • SnU R                  U5      n[        UR                  5      U:X  d   eg )Nzƒ<rss xmlns:dc="foo"><dc:creator>b</dc:creator><dc:date>2012-07-02T20:33:42Z</dc:date><dc:rights>c</dc:rights><image>d</image></rss>)r-   r>   Úrssr˜   s      r%   Útest_popping_namespaced_tagÚ3XMLTreeBuilderSmokeTest.test_popping_namespaced_tag¯  s.   € ð WˆØ�y‰y˜Ó ˆÜ�4—8‘8‹} Ó&Ð&Ñ&r'   c                 óT   • U R                  S5      nUR                  S5      S:X  d   eg )Nr$  Úlatin1s/   <?xml version="1.0" encoding="latin1"?>
<root/>r  rã   s     r%   Ú(test_docstring_includes_correct_encodingÚ@XMLTreeBuilderSmokeTest.test_docstring_includes_correct_encoding´  s*   € Ø�y‰y˜Ó#ˆà�K‰K˜Ó!Ð%XÓXð	
ÙXr'   c                 óX   • SnU R                  U5      nUR                  S5      U:X  d   eg)z<A large XML document should come out the same as it went in.s4  <?xml version="1.0" encoding="utf-8"?>
<root>0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</root>r'  Nr  r˜   s      r%   Útest_large_xml_documentÚ/XMLTreeBuilderSmokeTest.test_large_xml_documentº  s3   € ðð 	ð
 �y‰y˜Ó ˆØ�{‰{˜7Ó# vÓ-Ð-Ñ-r'   c                 óJ   • U R                  SS5        U R                  S5        g )NrI  rD  z
<p>foo</p>rK  r#   s    r%   Ú9test_tags_are_empty_element_if_and_only_if_they_are_emptyÚQXMLTreeBuilderSmokeTest.test_tags_are_empty_element_if_and_only_if_they_are_emptyÄ  s    € Ø×Ñ˜ Ô'Ø×Ñ˜Õ&r'   c                 ón   • SnU R                  U5      nUR                  nSUS   :X  d   eSUS   :X  d   eg )Nz£<root xmlns:a="http://example.com/" xmlns:b="http://example.net/"><a:foo>This tag is in the a namespace</a:foo><b:foo>This tag is in the b namespace</b:foo></root>zhttp://example.com/zxmlns:azhttp://example.net/zxmlns:b)r-   r;  )r$   r(   r-   r;  s       r%   Útest_namespaces_are_preservedÚ5XMLTreeBuilderSmokeTest.test_namespaces_are_preservedÈ  sE   € ð wˆØ�y‰y˜Ó ˆØ�y‰yˆØ$¨¨Y©Ó7Ð7Ð7Ø$¨¨Y©Ó7Ð7Ñ7r'   c                 ó`   • SnU R                  U5      n[        UR                  5      U:X  d   eg )NzN<p xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>20010504</dc:date></p>)r-   r>   rþ   r˜   s      r%   Útest_closing_namespaced_tagÚ3XMLTreeBuilderSmokeTest.test_closing_namespaced_tagÏ  s+   € ØaˆØ�y‰y˜Ó ˆÜ�4—6‘6‹{˜fÓ$Ð$Ñ$r'   c                 ó`   • SnU R                  U5      n[        UR                  5      U:X  d   eg )Nzs<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><bar xsi:schemaLocation="http://www.example.com"/></foo>©r-   r>   rú   r˜   s      r%   Útest_namespaced_attributesÚ2XMLTreeBuilderSmokeTest.test_namespaced_attributesÔ  s.   € ð GˆØ�y‰y˜Ó ˆÜ�4—8‘8‹} Ó&Ð&Ñ&r'   c                 ó`   • SnU R                  U5      n[        UR                  5      U:X  d   eg )Nz<foo xml:lang="fr">bar</foo>rU  r˜   s      r%   Ú(test_namespaced_attributes_xml_namespaceÚ@XMLTreeBuilderSmokeTest.test_namespaced_attributes_xml_namespaceÙ  s+   € Ø/ˆØ�y‰y˜Ó ˆÜ�4—8‘8‹} Ó&Ð&Ñ&r'   c                 óì   • SnU R                  U5      nS[        UR                  S5      5      :X  d   eS[        UR                  S5      5      :X  d   eS[        UR                  S5      5      :X  d   e g )Na  <?xml version="1.0" encoding="utf-8"?>
<Document xmlns="http://example.com/ns0"
    xmlns:ns1="http://example.com/ns1"
    xmlns:ns2="http://example.com/ns2">
    <ns1:tag>foo</ns1:tag>
    <ns1:tag>bar</ns1:tag>
    <ns2:tag key="value">baz</ns2:tag>
</Document>
é   rl   r1  zns1:tagrW   zns2:tag)r-   r\   r2  r2  s      r%   Útest_find_by_prefixed_nameÚ2XMLTreeBuilderSmokeTest.test_find_by_prefixed_nameÞ  sv   € ðˆð �y‰y˜‹~ˆð ”C˜Ÿ™ eÓ,Ó-Ó-Ð-Ð-ð ”C˜Ÿ™ iÓ0Ó1Ó1Ð1Ð1Ø”C˜Ÿ™ iÓ0Ó1Ó1Ð1Ð1àØr'   c                 ó¦   • SnU R                  U5      nUR                  n[        R                  " U5      nUR                  UR                  :X  d   eg )Nzf<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://example.com/ns0"/>)r-   Údocumentr?  Úprefix)r$   Úxmlr-   rl   Ú	duplicates        r%   Ú!test_copy_tag_preserves_namespaceÚ9XMLTreeBuilderSmokeTest.test_copy_tag_preserves_namespaceô  sH   € ð2ˆð �y‰y˜‹~ˆØ�m‰mˆÜ—I’I˜c“Nˆ	ð �z‰z˜Y×-Ñ-Ó-Ð-Ñ-r'   c                 óP   • U R                  [        5      nU R                  U5        gr  r  rã   s     r%   r  Ú'XMLTreeBuilderSmokeTest.test_worst_caseÿ  r  r'   r0   N)rs   rt   ru   rv   rð   r%  r(  r+  r<  r.  r4  r7  rº  r>  rB  rF  rI  rL  rO  rR  rV  rY  r]  rd  r  rz   r0   r'   r%   r   r   T  sl   † ò0òSò-ò
;ò.-ò
	.ò	$ò
5ò4ò
4ò
'ò

ò.ò'ò8ò%ò
'ò
'ò
=ò,	.õ%r'   r   c                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
ÚHTML5TreeBuilderSmokeTesti  z2Smoke test for a tree builder that supports HTML5.c                 ó   • g r"   r0   r#   s    r%   r.  Ú2HTML5TreeBuilderSmokeTest.test_real_xhtml_document	  s   € ð 	r'   c                 ób   • SnU R                  U5      nSUR                  R                  :X  d   eg )Nz<a>r¯  )r-   r…   Ú	namespacer˜   s      r%   Útest_html_tags_have_namespaceÚ7HTML5TreeBuilderSmokeTest.test_html_tags_have_namespace  s-   € ØˆØ�y‰y˜Ó ˆØ-°·±×1AÑ1AÓAÐAÑAr'   c                 óš   • SnU R                  U5      nSnX2R                  R                  :X  d   eX2R                  R                  :X  d   eg )Nz<svg><circle/></svg>r²  )r-   Úsvgrm  Úcircle©r$   r(   r-   rm  s       r%   Útest_svg_tags_have_namespaceÚ6HTML5TreeBuilderSmokeTest.test_svg_tags_have_namespace  sF   € Ø'ˆØ�y‰y˜Ó ˆØ0ˆ	ØŸH™H×.Ñ.Ó.Ð.Ð.ØŸK™K×1Ñ1Ó1Ð1Ñ1r'   c                 óš   • SnU R                  U5      nSnX2R                  R                  :X  d   eX2R                  R                  :X  d   eg )Nz<math><msqrt>5</msqrt></math>r±  )r-   Úmathrm  Úmsqrtrs  s       r%   Útest_mathml_tags_have_namespaceÚ9HTML5TreeBuilderSmokeTest.test_mathml_tags_have_namespace  sF   € Ø0ˆØ�y‰y˜Ó ˆØ8ˆ	ØŸI™I×/Ñ/Ó/Ð/Ð/ØŸJ™J×0Ñ0Ó0Ð0Ñ0r'   c                 óî   • SnU R                  U5      n[        UR                  S   [        5      (       d   eUR                  S   S:X  d   eSUR                  S   R                  R
                  :X  d   eg )Nz3<?xml version="1.0" encoding="utf-8"?><html></html>r   z$?xml version="1.0" encoding="utf-8"?r’   )r-   r=   r]   r   rN   rF   r˜   s      r%   Ú$test_xml_declaration_becomes_commentÚ>HTML5TreeBuilderSmokeTest.test_xml_declaration_becomes_comment!  sl   € ØFˆØ�y‰y˜Ó ˆÜ˜$Ÿ-™-¨Ñ*¬G×4Ñ4Ð4Ð4Ø�}‰}˜QÑÐ#IÓIÐIÐIØ˜Ÿ™ qÑ)×6Ñ6×;Ñ;Ó;Ð;Ñ;r'   r0   N)rs   rt   ru   rv   r  r.  rn  rt  ry  r|  rz   r0   r'   r%   ri  ri    s   † Ù<òò
Bò
2ò1õ<r'   ri  )9r  Ú__license__rè   Ú	importlibr?  r)  rÃ   Úbs4r   Úbs4.elementr   r   r   r   r	   r
   r   r   r   r   Ú
bs4.filterr   Úbs4.builderr   Úbs4._typingr   r   Úbs4.builder._htmlparserr   Útypingr   r   r   r   r   Ú	soupsiever   ÚSOUP_SIEVE_PRESENTÚImportErrorÚutilÚ	find_specÚHTML5LIB_PRESENTÚ
lxml.etreeÚlxmlÚLXML_PRESENTÚetreeÚLXML_VERSIONr   Ú__annotations__r   r>   Úobjectr   r|   rÇ   r   ri  r0   r'   r%   Ú<module>r”     s4  ðâ ð €ã Û Û Û Û Ý ÷÷ ÷ õ $õõ (å #Ý 9÷õ ðÝ-àÐð —>‘>×+Ñ+¨JÓ7¸tÐCÐ ðÛØ€LØ—:‘:×*Ñ*€Lð
 &;€��kÑ"Ó :ð"€ˆcó "ôJM;ˆvô M;ô`BD˜8ô BDôJW%Ð3ô W%ôto%Ð2ô o%ôd <Ð 8õ  <øðk& ó ØÒðûð ó Ø€LØ‚Lðús$   Á%C0 ÂC> Ã0C;Ã:C;Ã>
DÄ
D