
    -Ph                         d Z dZddlZddlZddlmZmZmZ ddl	m
Z
 ddlmZ  G d dej
        j                  Z G d	 d
ej
        j                  Z G d dej
        j                  ZdS )a/  
Simple HyperText Markup Language document tree Writer.

The output conforms to the XHTML version 1.0 Transitional DTD
(*almost* strict).  The output contains a minimum of formatting
information.  The cascading style sheet "html4css1.css" is required
for proper viewing with a modern graphical browser.
reStructuredText    N)frontendnodeswriters)
_html_base)PILc                   h   e Zd ZdZ	 dgZdej                            ej                            e	                    ej                            ej        
                    ej                            ej                            e	                    d                    gZej        
                    ej                            ej                            e	                    d          Z ej        ej        j        j        dez  dgedd	fd
d
                    e          z  dgddej        edfdd
                    e          z  dgdej        edfddgd                                dddfddgddej        df          Zed d!d"d#gd$dej        d%fd&d'gd$dej        d%fffz   Zd(Zd) Zd*S )+Writer)htmlhtml4	html4css1xhtmlxhtml10zhtml4css1.css.html5_polyglotztemplate.txtz-Template file. (UTF-8 encoded, default: "%s")z
--templatez<file>)defaultmetavarzComma separated list of stylesheet paths. Relative paths are expanded if a matching file is found in the --stylesheet-dirs. With --link-stylesheet, the path is rewritten relative to the output HTML file. (default: "%s"),z--stylesheet-pathz<file[,file,...]>
stylesheet)r   	overrides	validatorr   zComma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. (default: "%s")z--stylesheet-dirsz<dir[,dir,...]>)r   r   r   zySpecify the initial header level. Does not affect document title & subtitle (see --no-doc-title). (default: 1 for "<h1>")z--initial-header-levelz1 2 3 4 5 61z<level>)choicesr   r   z&Prepend an XML declaration (default). z--xml-declarationT
store_true)r   actionr   )templatestylesheet_pathstylesheet_dirsinitial_header_levelxml_declarationzHTML4 Writer Options zSpecify the maximum width (in characters) for one-column field names.  Longer field names will span an entire row of the table used to render the field list.  Default is 14 characters.  Use 0 for "no limit".z--field-name-limit   )r   r   r   zSpecify the maximum width (in characters) for options in option lists.  Longer options will span an entire row of the table used to render the option list.  Default is 14 characters.  Use 0 for "no limit".z--option-limitzhtml4css1 writerc                 ,    i | _         t          | _        d S N)partsHTMLTranslatortranslator_classselfs    c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/docutils/writers/html4css1/__init__.py__init__zWriter.__init__c   s    
 .    N)__name__
__module____qualname__	supporteddefault_stylesheetsospathabspathdirname__file__joindefault_stylesheet_dirsdefault_templater   filter_settings_specr   r   r
   settings_specvalidate_comma_separated_listsplitvalidate_booleanvalidate_nonnegative_intconfig_sectionr+    r,   r*   r
   r
      sk       BI'*+"!wrwx/H/HII!wrw||#%7??27??83L3L#M#M#305 05  6  6! w||
1122ND D 2H1!/;>NNN(X>>@
 !$)< = =	>
 !!+,"@+- -	.)+.884K+L+LM !!)"@/1 12M%&%++--#!# #	$ 5 !"35 56=#
 #
 #
MH "
"  
 Y 9; ;
<" 
Y 9; ;
<	%
 
M( (N/ / / / /r,   r
   c                      e Zd ZdZdZdZdZej        j	        
                                Z	de	d<   dddd	d
Zd Zd Zd Zd ZdmdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'd( Z(d) Z)dnd+Z*d, Z+d- Z,d. Z-d/ Z.d0 Z/d1 Z0d2 Z1d3 Z2d4 Z3d5 Z4d6 Z5d7 Z6d8 Z7d9 Z8d: Z9d; Z:d< Z;d= Z<d> Z=d? Z>d@ Z?dAdBdCdDdEdFZ@dG ZAdH ZBdI ZCdJ ZDdK ZEdL ZFdM ZGdN ZHdO ZIdP ZJdQ ZKdR ZLdS ZMdT ZNdU ZOdV ZPdW ZQdX ZRdY ZSdZ ZTd[ ZUd\ ZVd] ZWd^ ZXd_ ZYd` ZZda Z[db Z\dc Z]dd Z^de Z_df Z`dg Zadh Zbdi Zcdj Zddk Zedl ZfdS )or&   aH  
    The html4css1 writer has been optimized to produce visually compact
    lists (less vertical whitespace).  HTML's mixed content models
    allow list items to contain "<li><p>body elements</p></li>" or
    "<li>just text</li>" or even "<li>text<p>and body
    elements</p>combined</li>", each with different effects.  It would
    be best to stick with strict body elements in list items, but they
    affect vertical spacing in older browsers (although they really
    shouldn't).
    The html5_polyglot writer solves this using CSS2.

    Here is an outline of the optimization:

    - Check for and omit <p> tags in "simple" lists: list items
      contain either a single paragraph, a nested simple list, or a
      paragraph followed by a nested simple list.  This means that
      this list can be compact:

          - Item 1.
          - Item 2.

      But this list cannot be compact:

          - Item 1.

            This second paragraph forces space between list items.

          - Item 2.

    - In non-list contexts, omit <p> tags on a paragraph if that
      paragraph is the only child of its parent (footnotes & citations
      are allowed a label first).

    - Regardless of the above, in definitions, table cells, field bodies,
      option descriptions, and list items, mark the first child with
      'class="first"' and the last child with 'class="last"'.  The stylesheet
      sets the margins (top & bottom respectively) to 0 for these elements.

    The ``no_compact_lists`` setting (``--no-compact-lists`` command-line
    option) disables list whitespace optimization.
    zz<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
zC<meta http-equiv="Content-Type" content="text/html; charset=%s" />
zO<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=%s" />
&nbsp;   )z&mdash;r!   )())r!   r!   )dashparenthesesparensnonec                 b    |                      |dd           |                      |dd           d S )Nfirstr   last)set_class_on_childr)   nodes     r*   set_first_lastzHTMLTranslator.set_first_last   s8    gq111fb11111r,   c                     |                      |dd           | j                            |                     |dd                     d S )NaddressF)metapreCLASS)visit_docinfo_itembodyappendstarttagrP   s     r*   visit_addresszHTMLTranslator.visit_address   sK    ie<<<	tU)DDEEEEEr,   c                 b    | j                             d           |                                  d S Nz
</pre>
)rZ   r[   depart_docinfo_itemrP   s     r*   depart_addresszHTMLTranslator.depart_address   s0    	&&&  """""r,   c                     |d                              dd           | j                            |                     |d                     |                     |           d S )Nclassesr   
admonitiondiv)insertrZ   r[   r\   rR   rP   s     r*   visit_admonitionzHTMLTranslator.visit_admonition   sZ    Yq,///	tU33444D!!!!!r,   Nc                 :    | j                             d           d S N</div>
rZ   r[   rP   s     r*   depart_admonitionz HTMLTranslator.depart_admonition       	$$$$$r,   c                     t          |j        t          j                  r%| j        r| j                            d           d S d S |                     |d           d S )Nz
<br />author)
isinstanceparentr   authorsauthor_in_authorsrZ   r[   rY   rP   s     r*   visit_authorzHTMLTranslator.visit_author   sg    dk5=11 	4% -	  ,,,,,- - ##D(33333r,   c                 ~    t          |j        t          j                  r	d| _        d S |                                  d S )NT)rp   rq   r   rr   rs   r`   rP   s     r*   depart_authorzHTMLTranslator.depart_author   s>    dk5=11 	'%)D"""$$&&&&&r,   c                 @    |                      |d           d| _        d S )Nrr   F)rY   rs   rP   s     r*   visit_authorszHTMLTranslator.visit_authors   s&    i000!&r,   c                 .    |                                   d S r$   )r`   rP   s     r*   depart_authorszHTMLTranslator.depart_authors   s      """""r,   c                     | j                             |           |j        j                            |j                            d                     d S )Nstub)colspecsr[   rq   stubs
attributesgetrP   s     r*   visit_colspeczHTMLTranslator.visit_colspec   sG    T"""  !4!4V!<!<=====r,   c           	      Z   t          |                    dd          t          j                  rd S d|j        j        d         v s"d| j        j        v rd|j        j        d         vrd S t          d | j        D                       }| j	        
                    |                     |d                     | j        D ]S}t          |d	         d
z  |z  dz             }| j	        
                    |                     |dd|z                       T| j	        
                    d           d S )NFTdescendsiblingszcolwidths-autorc   zcolwidths-givenc              3   &   K   | ]}|d          V  dS )colwidthNrA   ).0rQ   s     r*   	<genexpr>z0HTMLTranslator.depart_colspec.<locals>.<genexpr>   s'      EEt$z*EEEEEEr,   colgroupr   g      Y@g      ?colz%i%%)widthz</colgroup>
)rp   	next_noder   colspecrq   settingstable_stylesumr}   rZ   r[   r\   intemptytag)r)   rQ   total_widthr   s       r*   depart_colspeczHTMLTranslator.depart_colspec   sG   dnnUTnBBm% % 	F 29 === DM$===%T[-?	-JJJFEEt}EEEEE	tZ88999M 	E 	ED4
+e3kACGHHHIT]]417(1B + D D E E E E	)))))r,   c                     d|d         v p@| j         j        o4d|d         vo*| j        p#d|j        d         v p|                     |          S )Ncompactrc   opencontents)r   compact_listscompact_simplerq   check_simple_listrP   s     r*   is_compactablezHTMLTranslator.is_compactable   sh    T)_, ;M/ :d9o5:, 9&$+i*@@9 !22488	<r,   c           	          | j                             |                     |dddd                     | j                             d           |                     |           d S )Ntablezdocutils citationvoidrJ   rX   framerulesK<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr>rZ   r[   r\   footnote_backrefsrP   s     r*   visit_citationzHTMLTranslator.visit_citation       	tW-@-36 ' C C 	D 	D 	D 		   	! 	! 	! 	t$$$$$r,   c                 :    | j                             d           d S Nz</td></tr>
</tbody>
</table>
rk   rP   s     r*   depart_citationzHTMLTranslator.depart_citation  +    	 0 	1 	1 	1 	1 	1r,   c           	          d}d|v r||d         z  }nd|v r|| j         j        |d                  z  }| j                            |                     |dd|dg                     d S )N#refidrefnamea[zcitation-reference)suffixhrefrc   )documentnameidsrZ   r[   r\   )r)   rQ   r   s      r*   visit_citation_referencez'HTMLTranslator.visit_citation_reference  s    d??DM!DD$DM)$y/::D	tS40D/E ' G G 	H 	H 	H 	H 	Hr,   c                 :    | j                             d           d S )Nz]</a>rk   rP   s     r*   depart_citation_referencez(HTMLTranslator.depart_citation_reference      	!!!!!r,   c                     | j                             d           | j                             |                     |ddd                     d S )Nz- <span class="classifier-delimiter">:</span> spanr!   
classifierrW   rZ   r[   r\   rP   s     r*   visit_classifierzHTMLTranslator.visit_classifier  sI    	HIII	tVR|LLMMMMMr,   c                 d    | j                             d           |                     |           d S )N</span>)rZ   r[   depart_termrP   s     r*   depart_classifierz HTMLTranslator.depart_classifier  s2    	###r,   c                 d   | j                             |                     |dd                     t          |          dk    rj|d         d                             d           |d         d                             d	           |dd         D ]}|d                             d
           d S d S )Nre   compoundrW      r   rc   zcompound-firstrN   zcompound-lastzcompound-middlerZ   r[   r\   len)r)   rQ   childs      r*   visit_compoundzHTMLTranslator.visit_compound  s    	tU*EEFFFt99q==GI%%&6777HY&&777ad ; ;i ''(9::::	 =; ;r,   c                 :    | j                             d           d S ri   rk   rP   s     r*   depart_compoundzHTMLTranslator.depart_compound$  rm   r,   c                     | j                             |                     |dd                     |                     |           d S )Nddr!   rZ   r[   r\   rR   rP   s     r*   visit_definitionzHTMLTranslator.visit_definition(  B    	tT266777D!!!!!r,   c                 :    | j                             d           d S )Nz</dd>
rk   rP   s     r*   depart_definitionz HTMLTranslator.depart_definition,      	#####r,   c                 f    | j                             |                     |dd                     d S )NdldocutilsrW   r   rP   s     r*   visit_definition_listz$HTMLTranslator.visit_definition_list0  s0    	tTDDEEEEEr,   c                 :    | j                             d           d S )Nz</dl>
rk   rP   s     r*   depart_definition_listz%HTMLTranslator.depart_definition_list3  r   r,   c                     d S r$   rA   rP   s     r*   visit_definition_list_itemz)HTMLTranslator.visit_definition_list_item7      r,   c                     d S r$   rA   rP   s     r*   depart_definition_list_itemz*HTMLTranslator.depart_definition_list_item:  r   r,   c                     | j                             |                     |dd                     |                     |           d S )Ntdr!   r   rP   s     r*   visit_descriptionz HTMLTranslator.visit_description>  r   r,   c                 :    | j                             d           d S )Nz</td>rk   rP   s     r*   depart_descriptionz!HTMLTranslator.depart_descriptionB  r   r,   c           	         | j                             t          | j                             | j                            |                     |dddd                     | j                            d           d| _        d S )Nr   docinfor   rJ   r   zR<col class="docinfo-name" />
<col class="docinfo-content" />
<tbody valign="top">
T)contextr[   r   rZ   r\   
in_docinforP   s     r*   visit_docinfozHTMLTranslator.visit_docinfoF  s    C	NN+++	tW-6-36 ' C C 	D 	D 	D 		 2 	3 	3 	3 r,   c                     | j                             d           d| _        | j                                        }| j         |d          | _        g | _         d S )N</tbody>
</table>
F)rZ   r[   r   r   popr   )r)   rQ   starts      r*   depart_docinfozHTMLTranslator.depart_docinfoP  sP    	/000  ""y(			r,   Tc                 |   |rHd|d|                      |                                          d}| j                            |           | j                            |                     |dd                     | j                            d| j        j        |         z             t          |          rt          |d         t          j                  r!|d         d                             d	           t          |d
         t          j                  r%|d
         d                             d           d S d S d S )Nz<meta name="z" content="z" />
trr!   z&<th class="docinfo-name">%s:</th>
<td>r   rc   rL   rN   rM   )attvalastextrU   r[   rZ   r\   languagelabelsr   rp   r   Element)r)   rQ   namerU   meta_tags        r*   rY   z!HTMLTranslator.visit_docinfo_itemW  s6    	' 	'$$DKKMM : : : :<HIX&&&	tT266777	B=/56 	7 	7 	7t99 	3$q'5=11 3Q	"))'222$r(EM22 3R#**622222		3 	33 3r,   c                 :    | j                             d           d S )Nz</td></tr>
rk   r(   s    r*   r`   z"HTMLTranslator.depart_docinfo_iteme  s    	(((((r,   c                 f    | j                             |                     |dd                     d S )NrV   zdoctest-blockrW   r   rP   s     r*   visit_doctest_blockz"HTMLTranslator.visit_doctest_blocki  0    	tU/JJKKKKKr,   c                 :    | j                             d           d S r_   rk   rP   s     r*   depart_doctest_blockz#HTMLTranslator.depart_doctest_blockl      	&&&&&r,   c                     t           j        j                            | |           t	          |          dk    r| j                            d           |                     |           d S )Nr   rC   )r   r   r&   visit_entryr   rZ   r[   rR   rP   s     r*   r   zHTMLTranslator.visit_entryp  s]    )55dDAAAt99>>IX&&&D!!!!!r,   c                 h    | j                             | j                                                   d S r$   rZ   r[   r   r   rP   s     r*   depart_entryzHTMLTranslator.depart_entryv  s,    	))++,,,,,r,   c                    i }d|v r|d         |d<   d|v r|d         |d<   | j         }| j                            | j         | j        f           d| _        |                     |          | _         | j         r0|s.|                    dd          dz                                   |d<   | j                             | j        |dfi |           dS )z
        The 'start' attribute does not conform to HTML 4.01's strict.dtd, but
        cannot be emulated in CSS1 (HTML 5 reincludes it).
        r   enumtypeclassNr!   z simpleol)	r   r   r[   	compact_pr   r   striprZ   r\   )r)   rQ   attsold_compact_simples       r*   visit_enumerated_listz$HTMLTranslator.visit_enumerated_listz  s    
 d?? MDM ,DM "0T0$.ABBB"11$77 	H'9 	H!XXgr22Y>EEGGDM	tT::T::;;;;;r,   c                     | j                                         \  | _        | _        | j                            d           d S )Nz</ol>
)r   r   r   r  rZ   r[   rP   s     r*   depart_enumerated_listz%HTMLTranslator.depart_enumerated_list  s;    .2l.>.>.@.@+T^	#####r,   c                 h    | j                             |                     |ddd                     d S )Nr   r!   fieldrW   r   rP   s     r*   visit_fieldzHTMLTranslator.visit_field  s2    	tT2WEEFFFFFr,   c                 :    | j                             d           d S N</tr>
rk   rP   s     r*   depart_fieldzHTMLTranslator.depart_field  r   r,   c                    | j                             |                     |ddd                     |                     |dd           |j        }| j        sRt          |j        t          j                  s3|j        	                    |          t          |j                  dz
  k    r|                     |dd	           d S d S )
Nr   r!   z
field-bodyrW   rL   r   r   rM   rN   )rZ   r[   r\   rO   rq   compact_field_listrp   r   r   indexr   )r)   rQ   r  s      r*   visit_field_bodyzHTMLTranslator.visit_field_body  s    	tT2\JJKKKgq111# 	6%,66	6|!!%((C,=,=,AAA ##D&"55555	 BAr,   c                 :    | j                             d           d S )Nz</td>
rk   rP   s     r*   depart_field_bodyz HTMLTranslator.depart_field_body  r   r,   c           	         | j                             | j        | j        f           d | _        d|d         v rd| _        n| j        j        rd|d         vrd| _        | j        r|D ]}|d         }t          |t          j                  sJ d |D             }t          |          dk    sHt          |          dk    r,t          |d         t          j
        t          j        f          s	d	| _         n| j                            |                     |d
ddd                     | j                            d           d S )Nr   rc   Tr   rN   c                 F    g | ]}t          |t          j                  |S rA   )rp   r   	Invisibler   ns     r*   
<listcomp>z3HTMLTranslator.visit_field_list.<locals>.<listcomp>  s?     C C C!#-a#A#ACA C C Cr,   r   r   Fr   r   rJ   zdocutils field-list)r   r   rX   zK<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
)r   r[   r  r  r   compact_field_listsrp   r   
field_bodyr   	paragraph
line_blockrZ   r\   )r)   rQ   r  r#  childrens        r*   visit_field_listzHTMLTranslator.visit_field_list  s   T4dnEFFFY''&*D##m/ 	+Y//&*D#" 	 
 
"2Y
!*e.>?????C Cz C C CH**x==A--&x{(-9I'JL L . /4D+E	tWF-3-B ' D D 	E 	E 	E 		 2 	3 	3 	3 	3 	3r,   c                     | j                             d           | j                                        \  | _        | _        d S Nr   )rZ   r[   r   r   r  r  rP   s     r*   depart_field_listz HTMLTranslator.depart_field_list  s:    	/00026,2B2B2D2D/r,   c           	         i }| j         rd|d<   nd|d<   | j        j        rqt          |                                          | j        j        k    rBd|d<   | j                            d|                     |j        ddd	
          z   dz              n| j                            d           | j	                             | j        |ddfi |           d S )Nzdocinfo-namer  z
field-name   colspanr  r   r!   r  rW   z<td>&nbsp;</td>th)
r   r   field_name_limitr   r   r   r[   r\   rq   rZ   r)   rQ   r
  s      r*   visit_field_namezHTMLTranslator.visit_field_name  s    ? 	)*DMM(DMM* 	$DKKMM""T]%CCCDOL	"&--T26= #0 #? #?!? #4!4 5 5 5 5
 L###	tT2>>>>?????r,   c                     | j                             d           | j                             | j                                                   d S )Nz:</th>r  rP   s     r*   depart_field_namez HTMLTranslator.depart_field_name  sB    	"""	))++,,,,,r,   c           	          | j                             |                     |dddd                     | j                             d           |                     |           d S )Nr   zdocutils footnoter   rJ   r   r   r   rP   s     r*   visit_footnotezHTMLTranslator.visit_footnote  r   r,   c                     g }|d         }| j         j        r|rt          |          dk    rX| j                            d           | j                            d           | j                            d|d         z             nt          |d          D ]!\  }}|                    d|d|d           "| j                            d	d
                    |          z             | xj        ddgz  c_        n,| j                            d           | xj        ddgz  c_        t          |          dk    rF|s!|d         d                             d           |d         d                             d           d S d S )Nbackrefsr   r!   </a>z!<a class="fn-backref" href="#%s">r   z<a class="fn-backref" href="#">z<em>(%s)</em> , rc   rL   rN   rM   )r   footnote_backlinksr   r   r[   	enumerater7   )r)   rQ   	backlinksr7  ibackrefs         r*   r   z HTMLTranslator.footnote_backrefs  s   	
#=+ 	% 	%8}}!!##B'''##F+++##$G&.qk%2 3 3 3 3 %.h$:$: 5 5LQ$$$(/&4 5 5 5 5##$4tyy7K7K$KLLLR(L###LLRH$LLt99q==  3Q	"))'222HY&&v..... =r,   c                 :    | j                             d           d S r   rk   rP   s     r*   depart_footnotezHTMLTranslator.depart_footnote   r   r,   c           	      &   d|d         z   }| j         j        }|dk    rd}| j                            d           n$|dk    sJ d}| j                            d           | j                            |                     |d	|d
|                     d S )Nr   r   bracketsr   ]superscriptz<sup></sup>r   zfootnote-reference)rX   r   )r   footnote_referencesr   r[   rZ   r\   )r)   rQ   r   formatr   s        r*   visit_footnote_referencez'HTMLTranslator.visit_footnote_reference  s    T']"2ZFL$$$$]****FL)))	tS&-A ' N N 	O 	O 	O 	O 	Or,   c                 n    | j                             | j                                        dz              d S )Nr8  r  rP   s     r*   depart_footnote_referencez(HTMLTranslator.depart_footnote_reference  s1    	))++f455555r,   c                     d S r$   rA   rP   s     r*   visit_generatedzHTMLTranslator.visit_generated  r   r,   zimage/svg+xmlzapplication/x-shockwave-flashz	video/mp4z
video/webmz	video/ogg)z.svgz.swfz.mp4z.webmz.oggc                    i }|d         }t           j                            |          d                                         }|| j        v r||d<   | j        |         |d<   n||d<   |                    d|          |d<   d|v r|d         |d<   d|v r|d         |d<   d	|v r[t          rd|vsd|vr| j        j        r| 	                    |          }	 t          j
                            |          5 }|j        }d d d            n# 1 swxY w Y   | j        j                            |                    d
d                     d|vrd|d         z  |d<   d|vrd|d         z  |d<   n# t           t"          f$ r Y nw xY wdD ]z}||v rtt%          j        d||                   }	|	sJ t)          |	                    d                    t)          |d	                   dz  z  |	                    d          ||<   {g }
dD ]U}||v rOt%          j        d||                   r||xx         dz  cc<   |
                    |d||         d           ||= V|
rd                    |
          |d<   t1          |j        t4          j                  rCt1          |j        t4          j                  r't1          |j        j        t4          j                  sd}nd}d|v rd|d         z  |d<   || j        v rG| j                             | j        |ddfi ||                    d|          z   dz   |z              d S | j                             | j        |d|fi |           d S ) Nurir   datatypesrcaltr   heightscale\/z%dpxr   )r   rT  z([0-9.]+)(\S*)$d   r,  z	^[0-9.]+$pxz: ; style
r!   alignalign-%sr  objectz	</object>img) r2   r3   splitextlowerobject_image_typesr   r   r   file_insertion_enableduri2imagepathImager   sizerecord_dependenciesaddreplaceOSErrorUnicodeEncodeErrorrematchfloatgroupr[   r7   rp   rq   r   TextElement	referencerZ   r\   r   )r)   rQ   r
  rO  ext	imagepathra  img_sizeatt_namero  r\  r   s               r*   visit_imagezHTMLTranslator.visit_image&  s3   5kgs##A&,,..$)))DL237DLLDK((5#..DKd?? MDMt!(^DNd?? >,,0D0DM8 1E ..s33	>	22 ,c#&8, , , , , , , , , , , , , , ,
 M599!))$446 6 6d**(.!(<Wt++)/(1+)=X  !34   D . ( (t##H%7hHHE LLLekk!nn--tG}1E1E1KLLA&(DN ) 	# 	#H48L$x.99 +NNNd*NNN(((DNNNCDDDN 	,HHUOODM4;(9:: 	$+u77	t{153DEE	 FFFd??&g6DM$)))I]T]42FFFF#xxs3346ABDJK L L L L L I]T]4GG$GGHHHHHs6   E) 2D:E) D

E) D
E) )E=<E=c                     d S r$   rA   rP   s     r*   depart_imagezHTMLTranslator.depart_imagef  r   r,   c           	          | j                             |                     |dd| j                                        z  d                     d S )Nr   z%s[labelrW   )rZ   r[   r\   r   r   rP   s     r*   visit_labelzHTMLTranslator.visit_labelk  sW    	tT54<;K;K;M;M3M-4 ' 6 6 	7 	7 	7 	7 	7r,   c                     | j                             d| j                                         d| j                                                    d S )NrD  z	</td><td>r  rP   s     r*   depart_labelzHTMLTranslator.depart_labelo  sK    	NT\--//NN$,:J:J:L:LNNOOOOOr,   c                     | j                             |                     |dd                     t          |          r#|d         d                             d           d S d S )Nlir!   r   rc   rL   r   rP   s     r*   visit_list_itemzHTMLTranslator.visit_list_items  sc    	tT266777t99 	/GI%%g.....	/ 	/r,   c                 :    | j                             d           d S )Nz</li>
rk   rP   s     r*   depart_list_itemzHTMLTranslator.depart_list_itemx  r   r,   c                 b   |d         }d|v r@d |D             |d<   | j                             |                     |dd                     d S | j                             |                     |ddd                     |                                }| j                            |          D ]}|                                ry| j                            |          r1| j                             d| 	                    |          z             a| j                             | 	                    |                     |d	v r| j                             |           | j                             d
t          |          dz
  z  dz              | j                             d           t          j        )Nrc   codec                     g | ]
}|d k    |S )r  rA   )r   clss     r*   r!  z0HTMLTranslator.visit_literal.<locals>.<listcomp>  s    GGGssr,   r!   ttzdocutils literalrW   z<span class="pre">%s</span>)r]  r[  rC   r   r[  </tt>)rZ   r[   r\   r   words_and_spacesfindallr	  in_word_wrap_pointsearchencoder   r   SkipNode)r)   rQ   rc   texttokens        r*   visit_literalzHTMLTranslator.visit_literal}  s   y/WGGgGGGDOIT]]4<<===F	MM$b0BMCC	E 	E 	E{{}}*22488 	D 	DE{{}} D *11%88 9I$$%B'+{{5'9'9&: ; ; ; ; I$$T[[%7%78888+%%	  '''' 	  SZZ!^!<s!BCCCC	!!!nr,   c                 :    | j                             d           d S )Nz</code>rk   rP   s     r*   depart_literalzHTMLTranslator.depart_literal  s    	#####r,   c                 f    | j                             |                     |dd                     d S )NrV   zliteral-blockrW   r   rP   s     r*   visit_literal_blockz"HTMLTranslator.visit_literal_block  r   r,   c                 :    | j                             d           d S r_   rk   rP   s     r*   depart_literal_blockz#HTMLTranslator.depart_literal_block  r   r,   c                    i }| j         j        rOt          |                                          | j         j        k    r d|d<   | j                            d           n| j                            d           | j                             | j        |dfddi|           | j                            d           | j                            d	           d S )
Nr,  r-  z</tr>
<tr><td>&nbsp;</td>r!   r   rX   zoption-groupz<kbd>r   )r   option_limitr   r   r   r[   rZ   r\   r0  s      r*   visit_option_groupz!HTMLTranslator.visit_option_group  s    M& 	$DKKMM""T]%???DOL <====L###	DM$CCNCdCC	E 	E 	E	!!!Ar,   c                     | j                                          | j                            d           | j                            | j                                                    d S )Nz</kbd></td>
)r   r   rZ   r[   rP   s     r*   depart_option_groupz"HTMLTranslator.depart_option_group  sV    	)))	))++,,,,,r,   c           	          | j                             |                     |dddd                     | j                             d           d S )Nr   zdocutils option-listr   rJ   r   zH<col class="option" />
<col class="description" />
<tbody valign="top">
r   rP   s     r*   visit_option_listz HTMLTranslator.visit_option_list  si    	mmD'1G"(  8 8	9 	9 	9 		 2 	3 	3 	3 	3 	3r,   c                 :    | j                             d           d S r)  rk   rP   s     r*   depart_option_listz!HTMLTranslator.depart_option_list  s    	/00000r,   c                 d    | j                             |                     |dd                     d S )Nr   r!   r   rP   s     r*   visit_option_list_itemz%HTMLTranslator.visit_option_list_item  s.    	tT26677777r,   c                 :    | j                             d           d S r  rk   rP   s     r*   depart_option_list_itemz&HTMLTranslator.depart_option_list_item  r   r,   c                 B   t          |j        t          j                  st          |j        t          j                  rdS |                                D ]/\  }}|                    |          r|dk    r|g dgdgddgfv s dS 0t          |j        d         t          j                  }|j        j        |d         D ]%}t          |t          j	                  r||u r n dS t          d |j        D                       }| j        s| j        s| j        r|dk    rd	S dS )
zU
        Determine if the <p> tags around paragraph ``node`` can be omitted.
        Frc   rL   rM   r   Nc                 ^    g | ]*}t          |t          j        t          j        f          (|+S rA   )rp   r   r  r|  r  s     r*   r!  z>HTMLTranslator.should_be_compact_paragraph.<locals>.<listcomp>  sC     0 0 01:-</ </ 0Q 0 0 0r,   r   T)rp   rq   r   r   r   attlistis_not_defaultr|  r&  r  r   r   r  r  )r)   rQ   keyvaluerL   r   parent_lengths          r*   should_be_compact_paragraphz*HTMLTranslator.should_be_compact_paragraph  se    t{EN33 	$+u~66	 5,,.. 	 	JC##C(( 	))"rG9(.x'61B'D D D uu4;q>5;77[)%&&1 	 	E%11 }}55 0 0 0 0 0 1 1 	&	~	"/1"4"44ur,   c                     |                      |          r| j                            d           d S | j                            |                     |dd                     | j                            d           d S )Nr!   p</p>
)r  r   r[   rZ   r\   rP   s     r*   visit_paragraphzHTMLTranslator.visit_paragraph  sv    ++D11 	*L#####IT]]4b99:::L)))))r,   c                     | j                             | j                                                   |                     |           d S r$   )rZ   r[   r   r   report_messagesrP   s     r*   depart_paragraphzHTMLTranslator.depart_paragraph  s@    	))++,,,T"""""r,   c                     | j                             |                     |dd                     |                     |           d| _        d S )Nre   sidebarrW   T)rZ   r[   r\   rR   
in_sidebarrP   s     r*   visit_sidebarzHTMLTranslator.visit_sidebar  sP    	MM$YM77	9 	9 	9D!!!r,   c                 H    | j                             d           d| _        d S )Nrj   F)rZ   r[   r  rP   s     r*   depart_sidebarzHTMLTranslator.depart_sidebar  s#    	$$$r,   c                    t          |j        t          j                  r3| j                            |                     |ddd                     d S | j                            |                     |dd                     d S )Nr   r!   	subscriptrW   subrp   rq   r   literal_blockrZ   r[   r\   rP   s     r*   visit_subscriptzHTMLTranslator.visit_subscript  s    dk5#677 	=IT]]41< + > > ? ? ? ? ? IT]]4;;<<<<<r,   c                     t          |j        t          j                  r| j                            d           d S | j                            d           d S )Nr   z</sub>rp   rq   r   r  rZ   r[   rP   s     r*   depart_subscriptzHTMLTranslator.depart_subscript	  Q    dk5#677 	'IY'''''IX&&&&&r,   c           	      $   t          |j        t          j                  rM| j                            |                     |ddd                     | j                            d           d S t          |j        t          j                  rf| j                            |                     |ddd                     | j                            d           t          | j                  | _
        d S t          |j        t          j                  rd	| j        | j        z   d
z
  z  }| j                            |                     ||dd          |                     i ddd          z              | j                            d|z             d S d S )Nr  r!   zsidebar-subtitlerW   r  h2subtitlez</h2>
zh%sr   zsection-subtitler   z</span></%s>
)rp   rq   r   r  rZ   r[   r\   r   r   r   in_document_titlesectionsection_levelr   )r)   rQ   tags      r*   visit_subtitlezHTMLTranslator.visit_subtitle  s   dk5=11 	8IT]]4b1C + E E F F FL)))))U^44 		8IT]]4r]LLMMML	***%(^^D"""U]33 	84-0IIAMNCIdC3EFF--FB6H-IIJK K K L 03 677777	8 	8r,   c                 J   | j                             | j                                                   | j        rj| j         | j        d         | _        d| _        | j                            | j                    | j                            | j                    | j         d d = d S d S )NrN   r   )	rZ   r[   r   r   r  r  body_pre_docinfoextendhtml_subtitlerP   s     r*   depart_subtitlezHTMLTranslator.depart_subtitle   s    	))++,,,! 	 Id&<R&?@DM%&D"!((333%%di000	!!!	 	r,   c                    t          |j        t          j                  r3| j                            |                     |ddd                     d S | j                            |                     |dd                     d S )Nr   r!   rE  rW   supr  rP   s     r*   visit_superscriptz HTMLTranslator.visit_superscript*  s    dk5#677 	=IT]]41> + @ @ A A A A A IT]]4;;<<<<<r,   c                     t          |j        t          j                  r| j                            d           d S | j                            d           d S )Nr   rF  r  rP   s     r*   depart_superscriptz!HTMLTranslator.depart_superscript1  r  r,   c                 ~   | j                             |                     |dd                     | j                             d           d}t          |d                   ri|d         }t          |          dk    rd|d	         z  }nBd}g }|D ]#}|                    d
|d|d           |dz  }$dd                    |          z  }|                    d          rd|d         z  }nd}| j                             d|d         d|d         d|                     |d                   d|d|d           d S )Nre   zsystem-messagerW   z <p class="system-message-title">r!   r7  r   z%; <em><a href="#%s">backlink</a></em>r   z
<a href="#r9  r8  z; <em>backlinks: %s</em>r:  linez	, line %szSystem Message: rQ  rW  levelz (<tt class="docutils">sourcer  rF   r  )rZ   r[   r\   r   r7   hasattrr  )r)   rQ   backref_textr7  r>  r=  r?  r  s           r*   visit_system_messagez#HTMLTranslator.visit_system_message8  s   	tU:JKKLLL	;<<<tJ   	8J'H8}}!! G"*1+!. 	'  G$$$www%JKKKFAA :"&))I"6"6!7<< 	f-DDD	 LLL$w--- KKX7777|||M 	N 	N 	N 	N 	Nr,   c                 :    | j                             d           d S ri   rk   rP   s     r*   depart_system_messagez$HTMLTranslator.depart_system_messageR  rm   r,   c           	      V   | j                             | j                   d| _        ddi}d| j        j        g}d|v r|                    d|d         z             d|v rd|d         z  |d	<   | j                             | j        |d
fdd                    |          i|           d S )NTborderr   r   r^  r_  r   z	width: %sr\  r   rX   r[  )r   r[   r  r   r   rZ   r\   r7   )r)   rQ   r
  rc   s       r*   visit_tablezHTMLTranslator.visit_tableV  s    DN+++!}t}89d??NN:W5666d??'$w-7DM	DM$IIsxx/@/@IDII	K 	K 	K 	K 	Kr,   c                 v    | j                                         | _        | j                            d           d S )Nz	</table>
)r   r   r  rZ   r[   rP   s     r*   depart_tablezHTMLTranslator.depart_tableb  s3    ))++	&&&&&r,   c                 f    | j                             |                     |dd                     d S )Ntbodytopvalignr   rP   s     r*   visit_tbodyzHTMLTranslator.visit_tbodyg  s0    	tWUCCDDDDDr,   c                 :    | j                             d           d S )Nz	</tbody>
rk   rP   s     r*   depart_tbodyzHTMLTranslator.depart_tbodyj  r   r,   c           
          | j                             |                     |dd|j        d         |j        d                              d S )Ndtr!   rc   ids)rc   r  )rZ   r[   r\   rq   rP   s     r*   
visit_termzHTMLTranslator.visit_termn  sZ    	tT2/3{9/E+/;u+= ' ? ? 	@ 	@ 	@ 	@ 	@r,   c                     |                     t          j        dd          rd S | j                            d           d S )NFTr   z</dt>
)r   r   r   rZ   r[   rP   s     r*   r   zHTMLTranslator.depart_terms  s@    >>%*ED>II 	F	#####r,   c                 f    | j                             |                     |dd                     d S )Ntheadbottomr  r   rP   s     r*   visit_theadzHTMLTranslator.visit_theadz  s0    	tWXFFGGGGGr,   c                 :    | j                             d           d S )Nz	</thead>
rk   rP   s     r*   depart_theadzHTMLTranslator.depart_thead}  r   r,   c                    g }| j         | j        z   dz
  }t          |j                  dk    r:t	          |j        d         t
          j                  r|                    d           |dk    r|                    d|z             dt          |d          z  }| 	                    ||d|          }|
                    d          r.i }d	|d
<   d|d         z   |d<   | | j	        i ddfi |z  }d|z  }nd|z  }||fS )Nr   r,  zwith-subtitle   zh%ir!   )rc   r   ztoc-backrefr  r   r   r   z
</a></%s>
z</%s>
)r  r   r   rq   rp   r   r  r[   minr\   r  )r)   rQ   rc   h_leveltagname	start_tagr
  	close_tags           r*   section_title_tagsz!HTMLTranslator.section_title_tags  s   $t'@@1D!!4;q>5>:: "NN?+++Q;;NN57?+++#gq//)MM$WMEE	<<   	,D)DMg.DLr3;;d;;;I%/II!G+I)##r,   r$   )T)gr-   r.   r/   __doc__doctypecontent_typecontent_type_mathmlr   r&   special_characterscopyattribution_formatsrR   r]   ra   rg   rl   rt   rv   rx   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rY   r`   r   r   r   r  r  r  r  r  r  r  r'  r*  r1  r3  r5  r   rA  rI  rK  rM  rd  rx  rz  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   rA   r,   r*   r&   r&   h   s       ( (\	H <LO $2EJJLL't $3*4%/#+- -2 2 2
F F F# # #
" " "
% % % %4 4 4' ' '' ' '# # #> > >
* * *(< < <% % %1 1 1H H H" " "N N N  
; ; ;% % %" " "$ $ $F F F$ $ $    " " "" " "    3 3 3 3) ) )L L L' ' '" " "- - -< < <($ $ $
G G G$ $ $
6 
6 
6$ $ $3 3 36E E E@ @ @"- - -
% % %/ / /41 1 1
O O O6 6 6   #2"A"-#/"-	 >I >I >I@  
7 7 7P P P/ / /
$ $ $
  <$ $ $
L L L' ' '  - - -
3 3 31 1 18 8 8$ $ $
  >* * *# # #
       
= = =' ' '8 8 8   = = =' ' 'N N N4% % %
K 
K 
K' ' '
E E E' ' '@ @ @
$ $ $H H H' ' '
$ $ $ $ $r,   r&   c                   *    e Zd ZdZd Zd Zd Zd ZdS )SimpleListCheckerz
    Raise `nodes.NodeFound` if non-simple list item is encountered.

    Here "simple" means a list item containing nothing other than a single
    paragraph, a simple list, or a paragraph followed by a simple list.
    c                    g }|j         D ]1}t          |t          j                  s|                    |           2|rtt          |d         t          j                  rTt          |d         t          j                  s t          |d         t          j                  r|                                 t          |          dk    rd S t          j
        )Nr   rN   r   )r&  rp   r   r  r[   r$  bullet_listenumerated_listr   r   	NodeFound)r)   rQ   r&  r   s       r*   r  z!SimpleListChecker.visit_list_item  s    ] 	' 	'EeU_55 '&&& 	HQKAA 	HRL%*;<<	x|U-BCC	 LLNNNx==AF/!r,   c                     t           j        r$   )r   r  rP   s     r*   r  z!SimpleListChecker.visit_paragraph  s
    nr,   c                     t           j        r$   r   r  rP   s     r*   r   z'SimpleListChecker.visit_definition_list  
    or,   c                     t           j        r$   r  rP   s     r*   r   zSimpleListChecker.visit_docinfo  r  r,   N)r-   r.   r/   r  r  r  r   r   rA   r,   r*   r	  r	    sZ         " " "(        r,   r	  )r  __docformat__os.pathr2   rn  r   r   r   r   docutils.writersr   docutils.writers._html_baser   r
   r&   r	  rA   r,   r*   <module>r     s    #  				 - - - - - - - - - - ' ' ' ' ' ' + + + + + +L/ L/ L/ L/ L/W& L/ L/ L/^l$ l$ l$ l$ l$W'6 l$ l$ l$^$ $ $ $ $*< $ $ $ $ $r,   