+
    Ci7\                        R t R.t^ RIHtHtHtHtHtHtH	t	H
t
Ht ^ RIHt ^ RIHtHtHtHtHtHt ^ RIt^ RIHtHtHtHtHt ^ RIHtHtHt ^ RI t ^ RI!H"t" ^ R	IH#t#H$t$H%t%H&t& ]	'       d   ^ R
I'H(t( ^ RI)H*t+  ! R R]4      t, ! R R]+PZ                  4      t. ! R R]/4      t0 ! R R]+Pb                  4      t2 ! R R]24      t3 ! R R]24      t4R# )MITHTML5TreeBuilder)	AnycastDictIterableOptionalSequenceTYPE_CHECKINGTupleUnion)	TypeAlias)_AttributeValue_AttributeValues	_Encoding
_Encodings_NamespaceURL
_RawMarkupN)DetectsXMLParsedAsHTML
PERMISSIVEHTMLHTML_5HTMLTreeBuilder)NamespacedAttributePageElementnonwhitespace_re)
namespaces)CommentDoctypeNavigableStringTagBeautifulSoup)basec                      a  ] tR t^;t o RtRt]]]].t	Rt
RV 3R lR lltV 3R lR ltV 3R	 lR
 ltV 3R lR ltV 3R ltRtV tR# )r   a>  Use `html5lib <https://github.com/html5lib/html5lib-python>`_ to
build a tree.

Note that `HTML5TreeBuilder` does not support some common HTML
`TreeBuilder` features. Some of these features could theoretically
be implemented, but at the very least it's quite difficult,
because html5lib moves the parse tree around as it's being built.

Specifically:

* This `TreeBuilder` doesn't use different subclasses of
  `NavigableString` (e.g. `Script`) based on the name of the tag
  in which the string was found.
* You can't use a `SoupStrainer` to parse only part of a document.
html5libTNc                   < V ^8  d   QhRS[ RS[S[,          RS[S[,          RS[S[,          RS[S[S[ S[S[,          S[S[,          S[3,          ,          /# )   markupuser_specified_encodingdocument_declared_encodingexclude_encodingsreturn)r   r   r   r   r   r   bool)format__classdict__s   "7/usr/lib/python3/dist-packages/bs4/builder/_html5lib.py__annotate__HTML5TreeBuilder.__annotate__W   si     * ** "*)!4* %-Y$7	*
 $J/* 
%
HY$7)9LdRS	T*    c              #     "   W n         VR 3VR33 F.  w  rVV'       g   K  \        P                  ! RV RV R2^R7       K0  	  \        P                  ! V^R7       VRRR3x  R# 5i)r*   r+   zYou provided a value for z0, but the html5lib tree builder doesn't support .
stacklevelNF)r)   warningswarnr   warn_if_markup_looks_like_xml)selfr(   r)   r*   r+   variablenames   &&&&&  r0   prepare_markupHTML5TreeBuilder.prepare_markupW   s}      (?$ ()EF 34
NH x/v5efjekklm 
 	<<VPQRtT5))s   A%AA%c                $   < V ^8  d   QhRS[ RR/# )r'   r(   r,   N)r   )r.   r/   s   "r0   r1   r2   u   s     #. #.: #.$ #.r3   c                X   V P                   e1   V P                   P                  e   \        P                  ! R^R7       \        P
                  ! V P                  R7      pV P                  f   Q hW P                  n        \        4       p\        V\        4      '       g   V P                  VR&   VP                  ! V3/ VB p\        V\        4      '       d	   RVn        M9VP                  P                   P"                  ^ ,          pVP$                  pWTn        RV P                  n        R# )zyRun some incoming markup through some parsing process,
populating the `BeautifulSoup` object in `HTML5TreeBuilder.soup`.
NzYou provided a value for parse_only, but the html5lib tree builder doesn't support parse_only. The entire document will be parsed.r6   )treeoverride_encoding)soup
parse_onlyr8   r9   r%   
HTMLParsercreate_treebuilderunderlying_builderparserdict
isinstancestrr)   parseoriginal_encoding	tokenizerstreamcharEncodingr=   )r;   r(   rI   extra_kwargsdocrN   s   &&    r0   feedHTML5TreeBuilder.feedu   s     99 TYY%9%9%EMM U $$$*A*AB&&222)/&v&#&& 150L0LL,-ll62\2 fc"" %)C! & 0 0 7 7 D DQ G !2 6 6$5!)-&r3   c                $   < V ^8  d   QhRS[ RR/# )r'   namespaceHTMLElementsr,   TreeBuilderForHtml5libr-   )r.   r/   s   "r0   r1   r2      s     ' '%)'	!'r3   c                f    \        WP                  V P                  R7      V n        V P                  # )zCalled by html5lib to instantiate the kind of class it
calls a 'TreeBuilder'.

:param namespaceHTMLElements: Whether or not to namespace HTML elements.

:meta private:
)store_line_numbers)rX   rD   r[   rH   )r;   rW   s   &&r0   rG   #HTML5TreeBuilder.create_treebuilder   s.     #9!99AXAX#
 &&&r3   c                &   < V ^8  d   QhRS[ RS[ /# )r'   fragmentr,   rL   )r.   r/   s   "r0   r1   r2      s     F F# F# Fr3   c                    RV,          # )zSee `TreeBuilder`.z)<html><head></head><body>%s</body></html> )r;   r^   s   &&r0   test_fragment_to_document*HTML5TreeBuilder.test_fragment_to_document   s    :XEEr3   c                t   < V ^8  d   Qh/ S[ ;R&   S[S[ ,          ;R&   S[;R&   R;R&   S[S[,          ;R&   # )r'   NAMEfeaturesTRACKS_LINE_NUMBERSrX   rH   r)   )rL   r   r-   r   r   )r.   r/   s   "r0   r1   r2   ;   sO     " # & sm>' . $/ 2 103 4 &i005 r3   )rH   r)   )NNN)__name__
__module____qualname____firstlineno____doc__re   r   r   r   rf   rg   r>   rT   rG   rb   __annotate_func____static_attributes____classdictcell__r/   s   @r0   r   r   ;   sZ       D#Z>H !%
* *<#. #.J' 'F F]  r3   c                      a a ] tR t^t oRV3R lV 3R llltV3R lR ltV3R lR ltV3R lR ltV3R	 lR
 ltV3R lR lt	V3R lR lt
V3R lR ltV3R lR ltV3R lR ltV3R ltRtVtV ;t# )rX   c                @   < V ^8  d   QhRS[ RS[R,          RS[ RS[/# )r'   rW   rD   r"   r[   kwargs)r-   r   r   )r.   r/   s   "r0   r1   #TreeBuilderForHtml5lib.__annotate__   s8     5 5#5 '5 !	5
 5r3   c                   < V'       d   W n         M2\        P                  ! R \        ^R7       ^ RIHp V! RRV/VB V n         \        \        V `#  V4       RV n	        W0n
        R# )aK  The optionality of the 'soup' argument to the TreeBuilderForHtml5lib constructor is deprecated as of Beautiful Soup 4.13.0: 'soup' is now required. If you can't pass in a BeautifulSoup object here, or you get this warning and it seems mysterious to you, please contact the Beautiful Soup developer team for possible un-deprecation.r6   r!   r[   N) zhtml.parser)rD   r8   r9   DeprecationWarningbs4r"   superrX   __init__rI   r[   )r;   rW   rD   r[   rs   r"   	__class__s   &&&&, r0   rz   TreeBuilderForHtml5lib.__init__   sj     IMM ^"
 *
 & 6HLRDI 	$d45JK "4r3   c                   < V ^8  d   QhRR/# r'   r,   Elementra   )r.   r/   s   "r0   r1   rt      s     3 3y 3r3   c                x    V P                   P                  4        \        V P                   V P                   R 4      # N)rD   resetr   r;   s   &r0   documentClass$TreeBuilderForHtml5lib.documentClass   s'    		tyy$))T22r3   c                :   < V ^8  d   QhRS[ S[S[3,          RR/# )r'   tokenr,   N)r   rL   r   )r.   r/   s   "r0   r1   rt      s#     - -4S> -d -r3   c                    \        \        VR ,          4      p\        \        \        ,          VR,          4      p\        \        \        ,          VR,          4      p\        P                  ! W#V4      pV P
                  P                  V4       R# )r=   publicIdsystemIdN)r   rL   r   r   for_name_and_idsrD   object_was_parsed)r;   r   r=   r   r   doctypes   &&    r0   insertDoctype$TreeBuilderForHtml5lib.insertDoctype   s`    eFm,"&x}eJ6G"H"&x}eJ6G"H**48D		##G,r3   c                *   < V ^8  d   QhRS[ RS[ RR/# )r'   r=   	namespacer,   r   r_   )r.   r/   s   "r0   r1   rt      s"     2 2 2 2 2r3   c                .   R pR pV P                   eR   V P                  '       d@   V P                   P                  P                  P	                  4       w  r4Vf   Q hV^,
          pV P
                  P                  WW4R7      p\        WPP
                  V4      # )N)
sourceline	sourcepos)rI   r[   rO   rP   positionrD   new_tagr   )r;   r=   r   r   r   tags   &&&   r0   elementClass#TreeBuilderForHtml5lib.elementClass   s    $(
#'	;;"t'>'>'> %)KK$9$9$@$@$I$I$K!J(((!AIii
   
 sIIy11r3   c                $   < V ^8  d   QhRS[ RR/# )r'   datar,   TextNoder_   )r.   r/   s   "r0   r1   rt      s     2 2 2 2r3   c                @    \        \        V4      V P                  4      # r   )r   r   rD   )r;   r   s   &&r0   commentClass#TreeBuilderForHtml5lib.commentClass   s    tyy11r3   c                   < V ^8  d   QhRR/# r~   ra   )r.   r/   s   "r0   r1   rt      s     $ $y $r3   c                    \        4       h)zThis is only used by html5lib HTMLParser.parseFragment(),
which is never used by Beautiful Soup, only by the html5lib
unit tests. Since we don't currently hook into those tests,
the implementation is left blank.
NotImplementedErrorr   s   &r0   fragmentClass$TreeBuilderForHtml5lib.fragmentClass   s     "##r3   c                   < V ^8  d   QhRR/# r~   ra   )r.   r/   s   "r0   r1   rt      s     $ $Y $r3   c                    \        4       hzThis is only used by the html5lib unit tests. Since we
don't currently hook into those tests, the implementation is
left blank.
r   r   s   &r0   getFragment"TreeBuilderForHtml5lib.getFragment       
 "##r3   c                "   < V ^8  d   QhRRRR/# r'   noder   r,   Nra   )r.   r/   s   "r0   r1   rt     s     ' '	 'd 'r3   c                P    V P                   P                  VP                  4       R # r   )rD   appendelementr;   r   s   &&r0   appendChild"TreeBuilderForHtml5lib.appendChild  s     			&r3   c                   < V ^8  d   QhRR/# )r'   r,   r"   ra   )r.   r/   s   "r0   r1   rt   
  s      _ r3   c                    V P                   # r   )rD   r   s   &r0   getDocument"TreeBuilderForHtml5lib.getDocument
  s    yyr3   c                "   < V ^8  d   QhRRRR/# r   ra   )r.   r/   s   "r0   r1   rt     s     $ $9 $ $r3   c                    \        4       hr   r   r   s   &&r0   testSerializer%TreeBuilderForHtml5lib.testSerializer  r   r3   c                T   < V ^8  d   Qh/ R;R&   S[ S[P                  ,          ;R&   # )r'   r"   rD   rI   )r   r%   rF   )r.   r/   s   "r0   r1   rt      s&     
 X(()) r3   )rI   rD   r[   )NT)rh   ri   rj   rk   rz   r   r   r   r   r   r   r   r   r   rm   rn   ro   __classcell__)r{   r/   s   @@r0   rX   rX      sr     5 5B3 3- -2 2 2 2$ $$ $' ' $ $  r3   rX   c                      a  ] tR tRt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R ltRtV tR# )AttrListi  z@Represents a Tag's attributes in a way compatible with html5lib.c                    < V ^8  d   QhRS[ /# )r'   r   )r    )r.   r/   s   "r0   r1   AttrList.__annotate__  s     . . .r3   c                Z    Wn         \        V P                   P                  4      V n        R # r   )r   rJ   attrs)r;   r   s   &&r0   rz   AttrList.__init__  s    $,,,,-
r3   c                F   < V ^8  d   QhRS[ S[S[S[3,          ,          /# r'   r,   r   r   rL   r   )r.   r/   s   "r0   r1   r     s#     3 3(5o)=#>? 3r3   c                d    \        V P                  P                  4       4      P                  4       # r   )listr   items__iter__r   s   &r0   r   AttrList.__iter__  s#    DJJ$$&'0022r3   c                *   < V ^8  d   QhRS[ RS[RR/# )r'   r=   valuer,   NrL   r   )r.   r/   s   "r0   r1   r   "  s"     # # #O # #r3   c                   V P                   P                  ;'       g    / pWP                  R . 4      9   gF   V P                   P                  V9   d   WP                  V P                   P                  . 4      9   d^   \	        V\
        4      '       gH   \	        V\        4      '       g   Q hV P                   P                  \        P                  ! V4      4      pW P                   V&   R# )*N)
r   cdata_list_attributesgetr=   rK   r   rL   attribute_value_list_classr   findall)r;   r=   r   	list_attrs   &&& r0   __setitem__AttrList.__setitem__"  s     LL66<<"	==b))LL*dll&7&7<< eT**!%----??$,,U3 #Tr3   c                F   < V ^8  d   QhRS[ S[S[S[3,          ,          /# r   r   )r.   r/   s   "r0   r1   r   3  s#     ( (xc?&: ;< (r3   c                H    \        V P                  P                  4       4      # r   )r   r   r   r   s   &r0   r   AttrList.items3  s    DJJ$$&''r3   c                0   < V ^8  d   QhRS[ S[,          /# r   )r   rL   )r.   r/   s   "r0   r1   r   6  s     ' 'hsm 'r3   c                H    \        V P                  P                  4       4      # r   r   r   keysr   s   &r0   r   AttrList.keys6  s    DJJOO%&&r3   c                    < V ^8  d   QhRS[ /# r   int)r.   r/   s   "r0   r1   r   9  s       r3   c                ,    \        V P                  4      # r   )lenr   r   s   &r0   __len__AttrList.__len__9  s    4::r3   c                &   < V ^8  d   QhRS[ RS[/# r'   r=   r,   r   )r.   r/   s   "r0   r1   r   <  s            r3   c                (    V P                   V,          # r   )r   r;   r=   s   &&r0   __getitem__AttrList.__getitem__<  s    zz$r3   c                &   < V ^8  d   QhRS[ RS[/# r   )rL   r-   )r.   r/   s   "r0   r1   r   ?  s     / / / /r3   c                N    V\        V P                  P                  4       4      9   # r   r   r   s   &&r0   __contains__AttrList.__contains__?  s    tDJJOO-...r3   c                2   < V ^8  d   Qh/ S[ ;R&   S[;R&   # )r'   r   r   )r    r   )r.   r/   s   "r0   r1   r     s      L  	 r3   )r   r   N)rh   ri   rj   rk   rl   rz   r   r   r   r   r   r   r   rm   rn   ro   rp   s   @r0   r   r     s`     J
. .3 3# #"( (' '    / /U  r3   r   c                   v   a  ] tR tRt o ]V 3R lR l4       t]V 3R lR l4       tV 3R lR ltV 3R ltR	t	V t
R
# )BeautifulSoupNodeiC  c                    < V ^8  d   QhRS[ /# r   )r   )r.   r/   s   "r0   r1   BeautifulSoupNode.__annotate__K  s       r3   c                    V P                   f   V P                  f   Q hV P                   e   V P                   # V P                  f   Q hV P                  # r   )r   stringr   s   &r0   r   BeautifulSoupNode.elementJ  sH    xx#t{{'>>>8888O;;***;;r3   c                    < V ^8  d   QhRS[ /# r   r   )r.   r/   s   "r0   r1   r   T  s     $ $# $r3   c                    \        4       h)zReturn the html5lib constant corresponding to the type of
the underlying DOM object.

NOTE: This property is only accessed by the html5lib test
suite, not by Beautiful Soup proper.
r   r   s   &r0   nodeTypeBeautifulSoupNode.nodeTypeS  s     "##r3   c                4   < V ^8  d   QhRS[ P                  /# r   treebuilder_baseNode)r.   r/   s   "r0   r1   r   _  s     $ $+00 $r3   c                    \        4       hr   r   r   s   &r0   	cloneNodeBeautifulSoupNode.cloneNode_  s    !##r3   c                x   < V ^8  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   R;R&   S[ S[,          ;R&   # )r'   r   r   r"   rD   r   )r   r    r   r   )r.   r/   s   "r0   r1   r   C  sE     	#  _%%  	 
 && r3   ra   N)rh   ri   rj   rk   propertyr   r   r  rm   rn   ro   rp   s   @r0   r   r   C  s>        $ $$ $9  r3   r   c                   V  a  ] tR tRt o V 3R lR ltV 3R lR ltV 3R lR lt]]]	]]3,          3,          t
]]
]3,          tV 3R lR	 lt]! ]]4      tRV 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR lt]! ]4      tV 3R ltRtV tR
# )r   ic  c                :   < V ^8  d   QhRS[ RRRS[S[,          /# )r'   r   rD   r"   r   )r    r   r   )r.   r/   s   "r0   r1   Element.__annotate__f  s*     ; ;;"1;>F}>U;r3   c                    Wn         R V n        W n        W0n        \        P
                  P                  WP                  4       R # r   )r   r   rD   r   r  r  rz   r=   )r;   r   rD   r   s   &&&&r0   rz   Element.__init__f  s2     	"&&t\\:r3   c                "   < V ^8  d   QhRRRR/# )r'   r   r   r,   Nra   )r.   r/   s   "r0   r1   r
  o  s     3 3 3 3 3r3   c                <   R p\        VP                  4      \        J d   VP                  ;r#MVP                  pWn        Ve?   VP                  e1   \        V\        4      '       g   VP                  P                  4        Ve   V P                  e   V P                  P                  '       d   \        V P                  P                  R,          4      \        J db   V P                  P                  R,          pV P                  P                  WB,           4      pVP                  V4       WPP                  n        R # \        V\        4      '       d   V P                  P                  V4      pV P                  e9   V P                  P                  '       d   V P                  P                  R4      pM?V P                  P                  e   V P                  P                  4       pMV P                  pV P                  P!                  W0P                  VR7       R # )NF)parentmost_recent_element)typer   r   r   r  rK   rL   extractr   contentsrD   
new_stringreplace_with_most_recent_element_last_descendantnext_elementr   )r;   r   string_childchildold_elementnew_elementr  s   &&     r0   r   Element.appendChildo  s   26/ $(;;.L5LLE (uc**LL  " $$):):):TXX&&r*+>
 ((++B/K))..{/IJK$$[1-8II*$$$		,,T2
 xx#(9(9(9&*hh&?&?&F#**6
 '+ii&@&@&B#&*ll#II''hh<O ( r3   c                    < V ^8  d   QhRS[ /# r   )r   )r.   r/   s   "r0   r1   r
    s     " "x "r3   c                L    V P                   f   Q h\        V P                   4      # r   )r   r   r   s   &r0   getAttributesElement.getAttributes  s!    xx###!!r3   c                4   < V ^8  d   QhRS[ S[,          RR/# )r'   
attributesr,   N)r   _Html5libAttributes)r.   r/   s   "r0   r1   r
    s!     = =1D(E =$ =r3   c                &   V P                   f   Q hVe   \        V4      ^ 8  d   \        VP                  4       4       F,  w  r#\	        V\
        4      '       g   K  \        V!  pW W1V&   K.  	  \        \        V4      pV P                  P                  P                  V P                  V4       \        VP                  4       4       F  w  r&W`P                   V&   K  	  V P                  P                  P                  V P                   4       R # R # R # r   )r   r   r   r   rK   tupler   r   r   rD   builder$_replace_cdata_list_attribute_valuesr=   set_up_substitutions)r;   r$  r=   r   new_namenormalized_attributesvalue_or_valuess   &&     r0   setAttributesElement.setAttributes  s    xx###!c*o&9  $J$4$4$67dE**2D9H"(+0x(	  8 %))9:$F! IIBB		0 *..C.I.I.K)L%!0 *M II22488<; ':!r3   Nc                8   < V ^8  d   QhRS[ RS[R,          RR/# )r'   r   insertBeforer   r,   N)rL   r   )r.   r/   s   "r0   r1   r
    s+     # ##'/0C'D#	#r3   c                    \        V P                  P                  V4      V P                  4      pV'       d   V P                  W24       R # V P	                  V4       R # r   )r   rD   r  r1  r   )r;   r   r1  texts   &&& r0   
insertTextElement.insertText  sB     		,,T2DII>d1T"r3   c                &   < V ^8  d   QhRRRRRR/# )r'   r   r   refNoder,   Nra   )r.   r/   s   "r0   r1   r
    s%      '2E	r3   c                   V P                   f   Q hV P                   P                  VP                  4      p\        VP                  4      \        J d   V P                   P
                  '       d   \        V P                   P
                  V^,
          ,          4      \        J dx   V P                   P
                  V^,
          ,          p\        V4      \        J g   Q hV P                  P                  WAP                  ,           4      pVP                  V4       R # V P                   P                  W1P                  4       Wn
        R # r   )r   indexr   r  r   r  rD   r  r  insertr  )r;   r   r7  r9  old_nodenew_strs   &&&   r0   r1  Element.insertBefore  s     xx###w//1!!!TXX&&uqy12oE xx((3H>_444ii**8ll+BCG!!'*HHOOE<<0Kr3   c                "   < V ^8  d   QhRRRR/# r   ra   )r.   r/   s   "r0   r1   r
    s      	 d r3   c                :    VP                   P                  4        R # r   )r   r  r   s   &&r0   removeChildElement.removeChild  s    r3   c                "   < V ^8  d   QhRRRR/# )r'   	newParentr   r,   Nra   )r.   r/   s   "r0   r1   r
    s     N2 N2) N2 N2r3   c                   V P                   pVf   Q hVP                   pVf   Q hVP                  pVP                  RR4      p\        VP                  4      ^ 8  d'   Vf   Q hVP                  R,          pVP
                  pMRpVP
                  pVP                  p\        V4      ^ 8  du   V^ ,          p	Ve   WYn        MW9n        Win        Ve   Wn        MWn        Ve   Wn        VR,          P                  RRR7      p
V
f   Q hVV
n        Ve   V
Vn        RV
n        V F$  pW;n        VP                  P                  V4       K&  	  . Vn        WBn        R# )z1Move all of this tag's children into another tag.NFT)is_initializedaccept_selfr  )
r   next_siblingr  r   r  r  previous_elementprevious_siblingr  r   )r;   rC  r   new_parent_elementfinal_next_elementnew_parents_last_descendantnew_parents_last_child(new_parents_last_descendant_next_element	to_appendfirst_childlast_childs_last_descendantr  s   &&          r0   reparentChildrenElement.reparentChildren  s    (("""&]]!--- %11&8&I&I%QV&W#!**+a/ /:::%7%@%@%D"+88 5
 &*"7I7V7V4$$	y>A $A,K*6/J,/A,+A(*6;F82=/%16A3 +4B-*H*H$$ +I +' /:::8 (4 8C 0 9I 8<'4E-L''..u5 
 1r3   c                    < V ^8  d   QhRS[ /# r   rY   )r.   r/   s   "r0   r1   r
  G  s     > >D >r3   c                r    V P                   R J ;'       g#    \        V P                   P                  4      ^ 8  # r   )r   r   r  r   s   &r0   
hasContentElement.hasContentG  s-    xx4==3txx'8'8#9A#==r3   c                4   < V ^8  d   QhRS[ P                  /# r   r   )r.   r/   s   "r0   r1   r
  L  s      +00 r3   c                    V P                   f   Q hV P                  P                  V P                   P                  V P                  4      p\        WP                  V P                  4      pV P                   F  w  r4WBP                  V&   K  	  V# r   )r   rD   r   r=   r   r   r$  )r;   r   r   keyr   s   &    r0   r  Element.cloneNodeL  si    xx###iit~~>sIIt~~6//JC#(OOC  *r3   c                F   < V ^8  d   QhRS[ S[S[,          S[3,          /# r   )r   r   r   rL   )r.   r/   s   "r0   r1   r
  T  s#     - -eH]$;S$@A -r3   c                    V P                   f   \        R,          V P                  3# V P                   V P                  3# )Nhtml)r   r   r=   r   s   &r0   getNameTupleElement.getNameTupleT  s3    >>!f%tyy00>>499,,r3   c                N   < V ^8  d   Qh/ S[ S[,          ;R&   S[;R&   S[;R&   # )r'   r   _Html5libAttributeNamer%  )r   r   r   )r.   r/   s   "r0   r1   r
  c  s3     && N &CO T #FU r3   )r   rD   r   r   r   )rh   ri   rj   rk   rz   r   r!  r   rL   r   rb  r   r%  r.  r  r$  r4  r1  r@  rR  rV  r  r_  	nameTuplerm   rn   ro   rp   s   @r0   r   r   c  s     ; ;3 3j" " ).c5c?.B(C &**@#*E%F= =B -7J# # & N2 N2l> >
 - - &Io  r3   r   c                   2   a  ] tR tRt o V 3R lR ltRtV tR# )r   i]  c                $   < V ^8  d   QhRS[ RR/# )r'   r   rD   r"   )r   )r.   r/   s   "r0   r1   TextNode.__annotate___  s        r3   c                l    \         P                  P                  V R 4       R V n        Wn        W n        R # r   )r  r  rz   r   r   rD   )r;   r   rD   s   &&&r0   rz   TextNode.__init___  s)    &&tT2	r3   )rD   r   r   N)rh   ri   rj   rk   rz   rn   ro   rp   s   @r0   r   r   ]  s      r3   r   )5__license____all__typingr   r   r   r   r   r	   r
   r   r   typing_extensionsr   bs4._typingr   r   r   r   r   r   r8   bs4.builderr   r   r   r   r   bs4.elementr   r   r   r%   html5lib.constantsr   r   r   r   r    rx   r"   html5lib.treebuildersr#   r  r   TreeBuilderrX   objectr   r  r   r   r   ra   r3   r0   <module>rt     s    
 
 
 (    
   ! :pF pFfd$-99 d$N+/v +/\$(-- $@w' w't  r3   