Ë
    ÁjÔC  ã                  ó  — d Z ddlmZ ddlZddlZddlZddlmZm	Z	 erddl
mZ  ej                  d«      Zej                  j                  d«      Zej                  j#                  e«      Zej&                  j)                  e«       eej*                  d<    ej                  d	«      e_         ej                  d
«      e_         ej                  d«      e_         ej                  d«      e_        ej2                  e_         ej                  dej6                  «      e_         ej                  dej6                  «      e_         ej                  d«      Z G d„ dej>                  «      Z e e_         G d„ dej>                  «      Z!y)a  
This module imports a copy of [`html.parser.HTMLParser`][] and modifies it heavily through monkey-patches.
A copy is imported rather than the module being directly imported as this ensures that the user can import
and  use the unmodified library for their own needs.
é    )ÚannotationsN)ÚTYPE_CHECKINGÚSequence)ÚMarkdownz--!?>zhtml.parserÚ
htmlparserz<[a-zA-Z]|</>z</[a-zA-Z]?z\?>z&([a-zA-Z][-.a-zA-Z0-9]*);a”  
  <[a-zA-Z][^`\t\n\r\f />\x00]*       # tag name <= added backtick here
  (?:[\s/]*                           # optional whitespace before attribute name
    (?:(?<=['"\s/])[^`\s/>][^\s/=>]*  # attribute name <= added backtick here
      (?:\s*=+\s*                     # value indicator
        (?:'[^']*'                    # LITA-enclosed value
          |"[^"]*"                    # LIT-enclosed value
          |(?!['"])[^`>\s]*           # bare value <= added backtick here
         )
         (?:\s*,)*                    # possibly followed by a comma
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                 # trailing whitespace
a  
  [a-zA-Z][^`\t\n\r\f />]*           # tag name
  [\t\n\r\f /]*                     # optional whitespace before attribute name
  (?:(?<=['"\t\n\r\f /])[^`\t\n\r\f />][^\t\n\r\f /=>]*  # attribute name
    (?:=                            # value indicator
      (?:'[^']*'                    # LITA-enclosed value
        |"[^"]*"                    # LIT-enclosed value
        |(?!['"])[^>\t\n\r\f ]*     # bare value
       )
     )?
    [\t\n\r\f /]*                   # possibly followed by a space
   )*
   >?
z^([ ]*\n){2}c                  ó.   ‡ — e Zd ZdZˆ fd„Zdˆ fd„Zˆ xZS )Ú_HTMLParserz"Handle special start and end tags.c                óþ   •— | j                   ||dz    }t        |d   «      }t        |«      dk  sd|cxk  rdk  s5n d|cxk  rdk  s(n | j                  | j                   ||dz    «       |dz   S t        ‰| �  |«      S )Né   éÿÿÿÿéA   éZ   éa   éz   é   )ÚrawdataÚordÚlenÚhandle_dataÚsuperÚparse_endtag)ÚselfÚiÚstartÚcÚ	__class__s       €úF/var/www/html/venv/lib/python3.12/site-packages/markdown/htmlparser.pyr   z_HTMLParser.parse_endtagc   sy   ø€ Ø—‘˜Q˜q ™sÐ#ˆÜ��b‘	‹NˆÜˆu‹:˜Š> "¨¤-¨R¤-°2¸´>¸c´>Ø×Ñ˜TŸ\™\¨!¨A°©EÐ2Ô3Ø�q‘5ˆLÜ‰wÑ# AÓ&Ð&ó    c                ó˜   •— | j                   ||dz    dk(  r&| j                  | j                   ||dz    «       |dz   S t        ‰| �  |«      S )Nr   ú</>)r   r   r   Úparse_starttag©r   r   r   s     €r   r!   z_HTMLParser.parse_starttagk   sP   ø€ à�<‰<˜˜!˜a™%Ð  EÒ)Ø×Ñ˜TŸ\™\¨!¨A°©EÐ2Ô3Ø�q‘5ˆLä‰wÑ% aÓ(Ð(r   ©r   ÚintÚreturnr$   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   Ú__classcell__©r   s   @r   r	   r	   `   s   ø„ Ù,ô'÷)ñ )r   r	   c                  ó   ‡ — e Zd ZU dZdˆ fd„Zˆ fd„Zˆ fd„Zedd„«       Zdd„Z	dd„Z
d d„Zd!d	„Zd"d
„Zd#d„Zd!d„Zd$d„Zd$d„Zd"d„Zd"d„Zd"d„Zd"d„Zd%ˆ fd„Zd&d„Zd%ˆ fd„Zd'd(ˆ fd„ZdZded<   d)d„Zd%d„Zˆ xZS )*ÚHTMLExtractorzû
    Extract raw HTML from text.

    The raw HTML is stored in the [`htmlStash`][markdown.util.HtmlStash] of the
    [`Markdown`][markdown.Markdown] instance passed to `md` and the remaining text
    is stored in `cleandoc` as a list of strings.
    c                óv   •— d|vrd|d<   t        dg«      | _        dg| _        t        ‰| �  |i |¤Ž || _        y )NÚconvert_charrefsFÚhrr   )ÚsetÚ
empty_tagsÚlineno_start_cacher   Ú__init__Úmd)r   r5   ÚargsÚkwargsr   s       €r   r4   zHTMLExtractor.__init__�   sJ   ø€ Ø VÑ+Ø).ˆFÐ%Ñ&ô ˜t˜f›+ˆŒà#$ #ˆÔô 	‰Ñ˜$Ð) &Ò)Øˆ�r   c                óx   •— d| _         d| _        g | _        g | _        g | _        dg| _        t        ‰| �  «        y)z1Reset this instance.  Loses all unprocessed data.Fr   N)ÚinrawÚintailÚstackÚ_cacheÚcleandocr3   r   Úreset©r   r   s    €r   r>   zHTMLExtractor.resetŽ   s9   ø€ àˆŒ
ØˆŒØ "ˆŒ
Ø!#ˆŒØ#%ˆŒØ#$ #ˆÔä‰‰�r   c                óø  •— t         ‰| �  «        t        | j                  «      rb| j                  r;| j
                  s/| j                  t        j                  | j                  «      «       n| j                  | j                  «       t        | j                  «      r_| j                  j                  | j                  j                  j                  dj                  | j                  «      «      «       g | _	        yy)zHandle any buffered data.Ú N)r   Úcloser   r   r/   Ú
cdata_elemr   r   Úunescaper<   r=   Úappendr5   Ú	htmlStashÚstoreÚjoinr?   s    €r   rB   zHTMLExtractor.close™   s¤   ø€ ä‰‰ŒÜˆt�|‰|Ôð ×$Ò$¨T¯_ª_Ø× Ñ ¤×!4Ñ!4°T·\±\Ó!BÕCà× Ñ  §¡Ô.äˆt�{‰{ÔØ�M‰M× Ñ  §¡×!2Ñ!2×!8Ñ!8¸¿¹ÀÇÁÓ9MÓ!NÔOØˆD�Kð r   c                óh  — t        t        | j                  «      dz
  | j                  dz
  «      D ]e  }| j                  |   }| j                  j                  d|«      }|dk(  rt        | j                  «      }| j                  j                  |dz   «       Œg | j                  | j                  dz
     S )zHReturns char index in `self.rawdata` for the start of the current line. é   Ú
r   )Úranger   r3   Úlinenor   ÚfindrE   )r   ÚiiÚlast_line_start_posÚlf_poss       r   Úline_offsetzHTMLExtractor.line_offset¨   sž   € ô œ˜D×3Ñ3Ó4°QÑ6¸¿¹ÀA¹ÖFˆBØ"&×"9Ñ"9¸"Ñ"=ÐØ—\‘\×&Ñ& tÐ-@ÓAˆFØ˜Š|ä˜TŸ\™\Ó*�Ø×#Ñ#×*Ñ*¨6°!©8Õ4ð Gð ×&Ñ& t§{¡{°1¡}Ñ5Ð5r   c                óÄ   — | j                   dk(  ry| j                   dkD  ry| j                  | j                  | j                  | j                   z    j                  «       dk(  S )z†
        Returns True if current position is at start of line.

        Allows for up to three blank spaces at start of line.
        r   Tr   FrA   )Úoffsetr   rR   Ústrip©r   s    r   Úat_line_startzHTMLExtractor.at_line_startµ   sV   € ð �;‰;˜!ÒØØ�;‰;˜Š?Øà�|‰|˜D×,Ñ,¨T×-=Ñ-=ÀÇÁÑ-KÐL×RÑRÓTÐXZÑZÐZr   c                óè   — | j                   | j                  z   }t        j                  j	                  | j
                  |«      }|r| j
                  ||j                  «        S dj                  |«      S )z™
        Returns the text of the end tag.

        If it fails to extract the actual text from the raw data, it builds a closing tag with `tag`.
        z</{}>)rR   rT   r   Ú	endendtagÚsearchr   ÚendÚformat)r   Útagr   Úms       r   Úget_endtag_textzHTMLExtractor.get_endtag_textÂ   s_   € ð × Ñ  4§;¡;Ñ.ˆÜ× Ñ ×'Ñ'¨¯©°eÓ<ˆÙØ—<‘<  a§e¡e£gÐ.Ð.ð —>‘> #Ó&Ð&r   c                ó*  — || j                   v r| j                  ||«       y | j                  j                  |«      rJ| j                  s| j                  «       r.| j                  s"d| _        | j                  j                  d«       | j                  «       }| j                  r7| j                  j                  |«       | j                  j                  |«       y | j                  j                  |«       || j                  v r| j                  «        y y )NTrK   )r2   Úhandle_startendtagr5   Úis_block_levelr:   rW   r9   r=   rE   Úget_starttag_textr;   r<   ÚCDATA_CONTENT_ELEMENTSÚclear_cdata_mode)r   r]   ÚattrsÚtexts       r   Úhandle_starttagzHTMLExtractor.handle_starttagÑ   sÐ   € à�$—/‘/Ñ!Ø×#Ñ# C¨Ô/Øà�7‰7×!Ñ! #Ô&¨D¯KªK¸D×<NÑ<NÔ<PÐY]×YcÒYcàˆDŒJØ�M‰M× Ñ  Ô&à×%Ñ%Ó'ˆØ�:Š:Ø�J‰J×Ñ˜cÔ"Ø�K‰K×Ñ˜tÕ$à�M‰M× Ñ  Ô&Ø�d×1Ñ1Ñ1à×%Ñ%Õ'ð 2r   c                ó:  — | j                  |«      }| j                  �rb| j                  j                  |«       || j                  v r7| j                  r+| j                  j                  «       |k(  rn| j                  rŒ+t        | j                  «      dk(  rét        j                  | j                  | j                  | j                  z   t        |«      z   d  «      r| j                  j                  d«       nd| _        d| _        | j                  j                  | j                  j                  j!                  dj#                  | j                  «      «      «       | j                  j                  d«       g | _        y y | j                  j                  |«       y )Nr   rK   TFrA   ú

)r_   r9   r<   rE   r;   Úpopr   Úblank_line_reÚmatchr   rR   rT   r:   r=   r5   rF   rG   rH   )r   r]   rg   s      r   Úhandle_endtagzHTMLExtractor.handle_endtagæ   s,  € Ø×#Ñ# CÓ(ˆà�:‹:Ø�K‰K×Ñ˜tÔ$Ø�d—j‘jÑ à—j’jØ—z‘z—~‘~Ó'¨3Ò.Øð —j“jô �4—:‘:‹ !Ò#ä ×&Ñ& t§|¡|°D×4DÑ4DÀtÇ{Á{Ñ4RÔUXÐY]ÓU^Ñ4^Ð4_Ð'`Ôaà—K‘K×&Ñ& tÕ,ð #'�D”Kà"�”
Ø—‘×$Ñ$ T§W¡W×%6Ñ%6×%<Ñ%<¸R¿W¹WÀTÇ[Á[Ó=QÓ%RÔSà—‘×$Ñ$ VÔ,Ø �•ð $ð �M‰M× Ñ  Õ&r   c                ó¸   — | j                   rd|v rd| _         | j                  r| j                  j                  |«       y | j                  j                  |«       y )NrK   F)r:   r9   r<   rE   r=   ©r   Údatas     r   r   zHTMLExtractor.handle_data  sA   € Ø�;Š;˜4 4™<ØˆDŒKØ�:Š:Ø�K‰K×Ñ˜tÕ$à�M‰M× Ñ  Õ&r   c                óÖ  — | j                   s| j                  r| j                  j                  |«       y| j	                  «       �r	|�rt
        j                  | j                  | j                  | j                  z   t        |«      z   d «      r|dz  }nd| _        | j                  r| j                  d   nd}|j                  d«      s,|j                  d«      r| j                  j                  d«       | j                  j                  | j                  j                  j                  |«      «       | j                  j                  d«       y| j                  j                  |«       y)z Handle empty tags (`<data>`). NrK   Tr   rA   rj   )r9   r:   r<   rE   rW   rl   rm   r   rR   rT   r   r=   Úendswithr5   rF   rG   )r   rq   Úis_blockÚitems       r   Úhandle_empty_tagzHTMLExtractor.handle_empty_tag	  s   € à�:Š:˜Ÿšà�K‰K×Ñ˜tÕ$Ø×ÑÕ!¢hä×"Ñ" 4§<¡<°×0@Ñ0@À4Ç;Á;Ñ0NÔQTÐUYÓQZÑ0ZÐ0[Ð#\Ô]à˜‘‘ð #�”Ø(,¯ª�4—=‘= Ò$¸2ˆDà—=‘= Ô(¨T¯]©]¸4Ô-@Ø—‘×$Ñ$ TÔ*Ø�M‰M× Ñ  §¡×!2Ñ!2×!8Ñ!8¸Ó!>Ô?à�M‰M× Ñ  Õ(à�M‰M× Ñ  Õ&r   c                óx   — | j                  | j                  «       | j                  j                  |«      ¬«       y )N©rt   )rv   rc   r5   rb   )r   r]   rf   s      r   ra   z HTMLExtractor.handle_startendtag   s.   € Ø×Ñ˜d×4Ñ4Ó6ÀÇÁ×AWÑAWÐX[ÓA\ÐÕ]r   c                óH   — | j                  dj                  |«      d¬«       y )Nz&#{};Frx   ©rv   r\   ©r   Únames     r   Úhandle_charrefzHTMLExtractor.handle_charref#  s   € Ø×Ñ˜gŸn™n¨TÓ2¸UÐÕCr   c                óH   — | j                  dj                  |«      d¬«       y )Nz&{};Frx   rz   r{   s     r   Úhandle_entityrefzHTMLExtractor.handle_entityref&  s   € Ø×Ñ˜fŸm™m¨DÓ1¸EÐÕBr   c                óH   — | j                  dj                  |«      d¬«       y )Nz	<!--{}-->Trx   rz   rp   s     r   Úhandle_commentzHTMLExtractor.handle_comment)  s    € à×Ñ˜k×0Ñ0°Ó6ÀÐÕFr   c                óH   — | j                  dj                  |«      d¬«       y )Nz<!{}>Trx   rz   rp   s     r   Úhandle_declzHTMLExtractor.handle_decl-  s   € Ø×Ñ˜gŸn™n¨TÓ2¸TÐÕBr   c                óH   — | j                  dj                  |«      d¬«       y )Nz<?{}?>Trx   rz   rp   s     r   Ú	handle_pizHTMLExtractor.handle_pi0  s   € Ø×Ñ˜hŸo™o¨dÓ3¸dÐÕCr   c                ót   — |j                  d«      rdnd}| j                  dj                  ||«      d¬«       y )NzCDATA[z]]>z]>z<![{}{}Trx   )Ú
startswithrv   r\   )r   rq   r[   s      r   Úunknown_declzHTMLExtractor.unknown_decl3  s4   € Ø—‘ xÔ0‰e°dˆØ×Ñ˜i×.Ñ.¨t°SÓ9ÀDÐÕIr   c                ó†   •— | j                  «       s| j                  rt        ‰| �  |«      S | j	                  d«       |dz   S )Nz<?r   )rW   r:   r   Úparse_pir   r"   s     €r   rŠ   zHTMLExtractor.parse_pi7  s>   ø€ Ø×ÑÔ 4§;¢;Ü‘7Ñ# AÓ&Ð&ð 	×Ñ˜ÔØ�1‰uˆr   c                ó   — | j                   }|j                  d|«      sJ d«       ‚t        j                  ||dz   «      }|s| j	                  d«       |dz   S |r'|j                  «       }| j                  ||dz   | «       |j                  «       S )Nz<!--z"unexpected call to parse_comment()é   Ú<rJ   )r   r‡   ÚcommentcloserZ   r   r   r�   r[   )r   r   Úreportr   rm   Újs         r   Úparse_commentzHTMLExtractor.parse_commentA  s‰   € Ø—,‘,ˆØ×!Ñ! &¨!Ô,ÐRÐ.RÓRÐ,Ü×#Ñ# G¨Q¨q©SÓ1ˆÙØ×Ñ˜SÔ!Ø�q‘5ˆLÙØ—‘“ˆAØ×Ñ ¨¨!©¨Q Ô0Ø�y‰y‹{Ðr   c                óV  •— | j                  «       s| j                  rw| j                  ||dz    dk(  rS| j                  ||dz    dk(  s>| j                  |«      }|dk(  r&| j	                  | j                  ||dz    «       |dz   S |S t
        ‰| �  |«      S | j	                  d«       |dz   S )	Nr   z<![é	   z	<![CDATA[r   rJ   z<!r   )rW   r:   r   Úparse_bogus_commentr   r   Úparse_html_declaration)r   r   Úresultr   s      €r   r•   z$HTMLExtractor.parse_html_declarationM  s¯   ø€ Ø×ÑÔ 4§;¢;Ø�|‰|˜A˜a ™cÐ" eÒ+°D·L±LÀÀ1ÀQÁ3Ð4GÈ;Ò4Vð ×1Ñ1°!Ó4�Ø˜R’<Ø×$Ñ$ T§\¡\°!°A¸±EÐ%:Ô;Ø˜q™5�LØ�Ü‘7Ñ1°!Ó4Ð4ð 	×Ñ˜ÔØ�1‰uˆr   c                ót   •— t         ‰| �  ||«      }|dk(  ry| j                  | j                  || d¬«       |S )Nr   Frx   )r   r”   rv   r   )r   r   r�   Úposr   s       €r   r”   z!HTMLExtractor.parse_bogus_comment]  sC   ø€ ô ‰gÑ)¨!¨VÓ4ˆØ�"Š9ØØ×Ñ˜dŸl™l¨1¨SÐ1¸EÐÔBØˆ
r   Nz
str | NoneÚ_HTMLExtractor__starttag_textc                ó   — | j                   S )z)Return full source of start tag: `<...>`.)r™   rV   s    r   rc   zHTMLExtractor.get_starttag_textl  s   € à×#Ñ#Ð#r   c                óŠ  — | j                   ||dz    dk(  r&| j                  | j                   ||dz    «       |dz   S d | _        | j                  |«      }|dk  r&| j                  | j                   ||dz    «       |dz   S | j                   }||| | _        g }t        j
                  j                  ||dz   «      }|sJ d«       ‚|j                  «       }|j                  d«      j                  «       x| _
        }||k  r¹t        j                  j                  ||«      }|sn–|j                  ddd«      \  }	}
}|
sd }n,|d d dcxk(  r|dd  k(  sn |d d d	cxk(  r|dd  k(  rn n|dd }|rt        j                  |«      }|j                  |	j                  «       |f«       |j                  «       }||k  rŒ¹||| j                  «       }|d
vrŸ| j                  «       \  }}d| j                  v rP|| j                  j!                  d«      z   }t#        | j                  «      | j                  j%                  d«      z
  }n|t#        | j                  «      z   }| j                  ||| «       |S |j'                  d«      r| j)                  ||«       |S || j*                  v r| j-                  |«       | j/                  ||«       |S )Nr   r    r   rJ   z#unexpected call to parse_starttag()r   Ú'r   Ú")Ú>ú/>rK   rŸ   )r   r   r™   Úcheck_for_whole_start_tagr   Útagfind_tolerantrm   r[   ÚgroupÚlowerÚlasttagÚattrfind_tolerantrD   rE   rU   ÚgetposÚcountr   Úrfindrs   ra   rd   Úset_cdata_moderh   )r   r   Úendposr   rf   rm   Úkr]   r^   ÚattrnameÚrestÚ	attrvaluer[   rM   rT   s                  r   r!   zHTMLExtractor.parse_starttagp  s¾  € à�<‰<˜˜!˜a™%Ð  EÒ)Ø×Ñ˜TŸ\™\¨!¨A°©EÐ2Ô3Ø�q‘5ˆLà#ˆÔØ×/Ñ/°Ó2ˆØ�AŠ:Ø×Ñ˜TŸ\™\¨!¨A°©EÐ2Ô3Ø�q‘5ˆLØ—,‘,ˆØ& q¨Ð0ˆÔð ˆÜ×+Ñ+×1Ñ1°'¸1¸Q¹3Ó?ˆÙÐ;Ð;Ó;ˆuØ�I‰I‹KˆØ"Ÿ[™[¨›^×1Ñ1Ó3Ð3ˆŒ�sØ�&ŠjÜ×,Ñ,×2Ñ2°7¸AÓ>ˆAÙØØ()¯©°°1°aÓ(8Ñ%ˆH�d˜IÙØ ‘	Ø˜2˜A� $Ô8¨)°B°C¨.Ô8Ø˜2˜A� #Ô7¨°2°3¨Õ7Ø% a¨˜O�	ÙÜ&×/Ñ/°	Ó:�	Ø�L‰L˜(Ÿ.™.Ó*¨IÐ6Ô7Ø—‘“ˆAð �&‹jð �a˜Ð×%Ñ%Ó'ˆØ�kÑ!Ø!Ÿ[™[›]‰NˆF�FØ�t×+Ñ+Ñ+Ø $×"6Ñ"6×"<Ñ"<¸TÓ"BÑB�Ü˜T×1Ñ1Ó2Ø×/Ñ/×5Ñ5°dÓ;ñ<‘ð  ¤# d×&:Ñ&:Ó";Ñ;�Ø×Ñ˜W Q vÐ.Ô/ØˆMØ�<‰<˜Ôà×#Ñ# C¨Ô/ð ˆð �d×1Ñ1Ñ1Ø×#Ñ# CÔ(Ø× Ñ   eÔ,Øˆr   )r5   r   )r%   r$   )r%   Úbool)r]   Ústrr%   r°   )r]   r°   rf   zSequence[tuple[str, str]])r]   r°   )rq   r°   )rq   r°   rt   r¯   )r|   r°   r#   )T)r   )r   r$   r�   r$   r%   r$   )r%   r°   )r&   r'   r(   r)   r4   r>   rB   ÚpropertyrR   rW   r_   rh   rn   r   rv   ra   r}   r   r�   rƒ   r…   rˆ   rŠ   r‘   r•   r”   r™   Ú__annotations__rc   r!   r*   r+   s   @r   r-   r-   x   sž   ø… ñõô	ôð ò
6ó ð
6ó[ó'ó(ó*'ó6'ó'ó.^óDóCóGóCóDóJõó
õö ð #'€O�ZÓ&ó$÷6r   r-   )"r)   Ú
__future__r   ÚreÚimportlib.utilÚ	importlibÚsysÚtypingr   r   Úmarkdownr   ÚcompilerŽ   ÚutilÚ	find_specÚspecÚmodule_from_specr   ÚloaderÚexec_moduleÚmodulesÚstarttagopenÚ
endtagopenÚpicloseÚ	entityrefÚ
incompleteÚVERBOSEÚlocatestarttagend_tolerantÚlocatetagendrl   Ú
HTMLParserr	   r-   © r   r   Ú<module>rÌ      sd  ðñ(õ #ã 	Û Û 
ß *áÝ!ð ˆr�z‰z˜(Ó#€ð ‡~�~×Ñ Ó.€Ø�^‰^×,Ñ,¨TÓ2€
Ø ‡�× Ñ ˜
Ô #Ø&€‡�ˆLÑ ð %˜"Ÿ*™* _Ó5€
Ô à"˜Ÿ
™
 =Ó1€
Ô ð  �R—Z‘Z Ó'€
Ô à!�r—z‘zÐ"?Ó@€
Ô ð #×,Ñ,€
Ô à(2¨¯
©
ð 4ð ‡Z�Zó)€
Ô %ð %˜"Ÿ*™*ð &ð ‡Z�Zó€
Ô ð" �—
‘
˜?Ó+€ô)�*×'Ñ'ô )ð* $€
Ô ôn�J×)Ñ)õ nr   