+
    5i                     @	   R t ^ RIt^ RIt^ RIt^ RIHt ^ RIHtHt ^ RI	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 ^RIHtHtHtHtHt ^RIHt ^R	IH t H!t! ^R
I"H#t# ^RI$H%t%H&t& ^RI'H(t(H)t) ]
'       d   ^RI*H+t+ ^RI,H-t- ]P\                  ! ]/4      t0Rt1Rt2Rt3Rt4ERtt5/ R] ! RRR7      bR] ! RR 7      bR!] ! R"R#7      bR$] ! R%R 7      bR&] ! R'R 7      bR(] ! 4       bR)] ! R'R 7      bR*] ! R%R 7      bR+] ! RR 7      bR,] ! RR 7      bR-]!! R.^^R/7      bR0]!! ERu]Pl                  R17      bR2]!! ^
R37      bR4]!! R5ERuR67      bR]!! R7^^R8R97      bR]!! R:R7^ERvR;7      bR]!! R:R7^ERwR;7      bR]!! R:R7^ERxR;7      R]!! R:R7^ERyR;7      R]!! R:R7^
ERzR;7      R]!! R:R7^ER{R;7      R<]!! ^^R=7      R>]!! 4       R?]!! ERuR"R@7      RA]!! ^RB7      RC]!! ^RB7      /	Ct7ER|t8]5ER},           t9]:! ]94      ]:! ]84      ,          ]:! ]7Pw                  4       4      8X  g   Q hRDPy                  ER~4      t=]P|                  ! RE]= RF24      t?/ RGRHbRIRJbRKRLbRMRNbRORPbRQRRbRSRTbRURVbRWRXbRYRZbR[R\bR]R^bR_R`bRaRbbRcRdbReRdbRfRgb/ RhRibRjRkbRlRmbRnRobRpRqbRrRqbRsRtbRuRvbRwRxbRyRzbR{R|bR}R~bRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbC/ RRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRER bERERbERERbERERbERERbER	ER
bC/ ERERbERERbERERbERERbERERbERERbERERbERERbERERbERERbERER bER!ER"bER#ER$bER%ER&bER'ER(bER)ER*bER+ER,bC/ ER-ER,bER.ER/bER0ER1bER2ER3bER4ER5bER6ER7bER8ER9bER:ER;bER<ER=bER>ER?bER@ERAbERBERCbERDEREbERFERGbERHERIbERJERKbERLERMbCERNEROERPERQERRERSERTERUERVERWERXERYERZER[ER\ER]ER^ER_ER`ERaERbERcERdERe/Ct@ERERf ERg lltAERh ERi ltB ! ERj ERk]4      tCERl ERm ltDERn ERo ltEERp ERq ltF ! ERr ERs4      tGR# (  a  
HTML renderer

The contents of this module are internal to fpdf2, and not part of the public API.
They may change at any time without prior warning or any deprecation period,
in non-backward-compatible ways.

Usage documentation at: <https://py-pdf.github.io/fpdf2/HTML.html>
N)
HTMLParser)ascii_lowercaseascii_uppercase)TYPE_CHECKINGAnyCallableOptionalUnion)get_stack_level)
ColorInput
DeviceGray	DeviceRGBcolor_from_hex_stringconvert_to_device_color)AlignCharVPosTextEmphasisXPosYPos)FPDFException)FontFace	TextStyle)OutlineSection)RowTable)get_scale_factor	int2roman)FPDF)	Paragraph   u   •   °u   ∘titleh1h2h3h4h5h6az#00f	UNDERLINE)coloremphasisbBOLD)r+   codeCourierfamilydelSTRIKETHROUGHemITALICSfontisstrongu
blockquotez#64002d)r*   t_marginb_margincenter)r<   l_marginddr?   dtB)
font_styler<   g?Center)r=   font_size_ptr<   r?   z#960000)r*   r=   rF   r<   li)r?   r<   ppre)r<   font_familyol)r<   ul [z]+black#000000navyz#000080darkbluez#00008b
mediumbluez#0000cdbluez#0000ff	darkgreenz#006400greenz#008000tealz#008080darkcyanz#008b8bdeepskybluez#00bfffdarkturquoisez#00ced1mediumspringgreenz#00fa9alimez#00ff00springgreenz#00ff7faquaz#00ffffcyanmidnightbluez#191970
dodgerbluez#1e90fflightseagreenz#20b2aaforestgreenz#228b22seagreenz#2e8b57darkslategrayz#2f4f4fdarkslategrey	limegreenz#32cd32mediumseagreenz#3cb371	turquoisez#40e0d0	royalbluez#4169e1	steelbluez#4682b4darkslatebluez#483d8bmediumturquoisez#48d1ccindigoz#4b0082darkolivegreenz#556b2f	cadetbluez#5f9ea0cornflowerbluez#6495edrebeccapurplez#663399mediumaquamarinez#66cdaadimgrayz#696969dimgrey	slatebluez#6a5acd	olivedrabz#6b8e23	slategrayz#708090	slategreylightslategrayz#778899lightslategreymediumslatebluez#7b68ee	lawngreenz#7cfc00
chartreusez#7fff00
aquamarinez#7fffd4maroonz#800000purplez#800080olivez#808000grayz#808080greyskybluez#87ceeblightskybluez#87cefa
bluevioletz#8a2be2darkredz#8b0000darkmagentaz#8b008bsaddlebrownz#8b4513darkseagreenz#8fbc8f
lightgreenz#90ee90mediumpurplez#9370db
darkvioletz#9400d3	palegreenz#98fb98
darkorchidz#9932ccyellowgreenz#9acd32siennaz#a0522dbrownz#a52a2adarkgrayz#a9a9a9darkgrey	lightbluez#add8e6greenyellowz#adff2fpaleturquoisez#afeeeelightsteelbluez#b0c4de
powderbluez#b0e0e6	firebrickz#b22222darkgoldenrodz#b8860bmediumorchidz#ba55d3	rosybrownz#bc8f8f	darkkhakiz#bdb76bsilverz#c0c0c0mediumvioletredz#c71585	indianredz#cd5c5cperuz#cd853f	chocolatez#d2691etanz#d2b48c	lightgrayz#d3d3d3	lightgreythistlez#d8bfd8orchidz#da70d6	goldenrodz#daa520palevioletredz#db7093crimsonz#dc143c	gainsboroz#dcdcdcplumz#dda0dd	burlywoodz#deb887	lightcyanz#e0fffflavenderz#e6e6fa
darksalmonz#e9967avioletz#ee82eepalegoldenrodz#eee8aa
lightcoralz#f08080khakiz#f0e68c	alicebluez#f0f8ffhoneydewz#f0fff0azurez#f0ffff
sandybrownz#f4a460wheatz#f5deb3beigez#f5f5dc
whitesmokez#f5f5f5	mintcreamz#f5fffa
ghostwhitez#f8f8ffsalmonz#fa8072antiquewhitez#faebd7linenz#faf0e6lightgoldenrodyellowz#fafad2oldlacez#fdf5e6redz#ff0000fuchsiaz#ff00ffmagentadeeppinkz#ff1493	orangeredz#ff4500tomatoz#ff6347hotpinkz#ff69b4coralz#ff7f50
darkorangez#ff8c00lightsalmonz#ffa07aorangez#ffa500	lightpinkz#ffb6c1pinkz#ffc0cbgoldz#ffd700	peachpuffz#ffdab9navajowhitez#ffdeadmoccasinz#ffe4b5bisquez#ffe4c4	mistyrosez#ffe4e1blanchedalmondz#ffebcd
papayawhipz#ffefd5lavenderblushz#fff0f5seashellz#fff5eecornsilkz#fff8dclemonchiffonz#fffacdfloralwhitez#fffaf0snowz#fffafayellowz#ffff00lightyellowz#ffffe0ivoryz#fffff0whitez#ffffffc                r    V ^8  d   QhR\         \        ,          R\         \        \        ,          ,          /# )   r*   return)r   strr   r   )formats   "O/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/fpdf/html.py__annotate__r   -  s*     + +C=+i*$%+    c                t    V '       g   R# \         P                  V P                  4       V 4      p\        V4      # )zt
Convert a web color name to a (R, G, B) color tuple.
cf. https://en.wikipedia.org/wiki/Web_colors#HTML_color_names
N)
COLOR_DICTgetlowerr   )r*   hexcolors   & r   color_as_decimalr   -  s+     ~~ekkmU3H **r   c                R    V ^8  d   QhR\         R\        \         \         3,          /# )r   
style_attrr   )r   dict)r   s   "r   r   r   ;  s"     
 
 
S#X 
r   c                    / pV P                  R4       Fv  pV'       g   K  VP                  R4      p\        V4      ^8X  g   K0  V^ ,          '       g   KA  V^,          '       g   KR  Vw  rEVP                  4       WP                  4       &   Kx  	  V# )zCParse `style="..."` HTML attributes, and return a dict of key-value;:)splitlenstrip)r   styleelementpairattrvalues   &     r   parse_css_styler   ;  sm    E##C(}}S!t9>d1gg$q''KD"'++-E**, ) Lr   c                   p  a a ] tR tRt oRtR'tRtR RRRRR(RRRRRR	R3V3R
 lV 3R lllt]V3R lR l4       t	R)V3R lR llt
V3R lR ltR*V3R lR ll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V 3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R&tVtV ;t# )+	HTML2FPDFiH  zRender basic HTML to FPDFg?c                    V # N )srcs   &r   <lambda>HTML2FPDF.<lambda>Q  s    cr   NFdiscTtimesc                *  < V ^8  d   QhRRRS[ S[.S[3,          RS[S[,          RS[S[,          RS[RS[RS[R	S[S[S[S[3,          ,          R
S[S[,          RS[RS[S[S[S[3,          ,          RS[S[S[S[3,          ,          RS[RS[RR/# )r   pdfr   	image_mapli_tag_indentdd_tag_indenttable_line_separatorsul_bullet_charli_prefix_colorheading_sizespre_code_fontwarn_on_tags_not_matchingtag_indents
tag_stylesrJ   render_title_tagr   N)r   r   r   floatboolr   r   r   )r   __classdict__s   "r   r   HTML2FPDF.__annotate__N  s    YU YUYU SE3J'YU  	YU
  YU  $YU YU $YU  S%Z 01YU  }YU $(YU d3:./YU T#y.12YU YU YU  
!YUr   c                  < \         SV `  4        Wn        W`n        W n        \        V\        4      '       d   \        V4      M
\        V4      V n	        Wn
        VP                  ;'       g    TV n        VP                  V n        \        P                  V n        VP                   V n        V P                  P%                  V P                  V P                  V P                  P&                  R7       . V n        RV n        RV n        RV n        RV n        RV n        . V n        V P                  P7                  RR7      V n        V P8                  P;                  4       V n        RV n        RV n         RV n!        ^ V n"        . V n#        / V n$        . V n%        Wn&        RV n'        WPn(        RV n)        RV n*        RV n+        RV n,        \[        V\\        4      V n/        T;'       g    / Pa                  4        EF)  w  ppV\\        9  d   \c        RV R24      h\        V\d        4      '       g   \g        R	V 24      hV\h        9   d   \        V\j        4      '       g   \k        VPl                  VPn                  '       g   RMVPn                  P&                  VPp                  VPr                  VPt                  V P^                  V,          Pv                  V P^                  V,          Px                  V P^                  V,          Pz                  R
7      pVV P^                  V&   EK,  	  Vep   \|        P~                  ! R\        \        4       R7       VPa                  4        F6  w  ppV P^                  V,          P                  VR7      V P^                  V&   K8  	  V	e   \|        P~                  ! R\        \        4       R7       V P^                  R,          pV P^                  R,          p\        V\j        4      '       d   VP                  V	R7      pMVP                  V	R7      p\        V\j        4      '       d   VP                  V	R7      pMVP                  V	R7      pVV P^                  R&   VV P^                  R&   VeV   \|        P~                  ! R\        \        4       R7       V P^                  R,          P                  VR7      V P^                  R&   VeV   \|        P~                  ! R\        \        4       R7       V P^                  R,          P                  VR7      V P^                  R&   V'       d   \|        P~                  ! R\        \        4       R7       VPa                  4        FU  w  ppWP^                  9  d   \c        RV R24      hV P^                  V,          P                  VR7      V P^                  V&   KW  	  R# R# )a1  
Args:
    pdf (fpdf.fpdf.FPDF): an instance of `FPDF`
    image_map (function): an optional one-argument function that map `<img>` "src" to new image URLs
    li_tag_indent (int): [**DEPRECATED since v2.7.9**]
        numeric indentation of `<li>` elements - Set `tag_styles` instead
    dd_tag_indent (int): [**DEPRECATED since v2.7.9**]
        numeric indentation of `<dd>` elements - Set `tag_styles` instead
    table_line_separators (bool): enable horizontal line separators in `<table>`. Defaults to `False`.
    ul_bullet_char (str): bullet character preceding `<li>` items in `<ul>` lists.
        You can also specify special bullet names like `"circle"` or `"disc"` (the default).
        Can also be configured using the HTML `type` attribute of `<ul>` tags.
    li_prefix_color (tuple, str, fpdf.drawing.DeviceCMYK, fpdf.drawing.DeviceGray, fpdf.drawing.DeviceRGB): color for bullets
        or numbers preceding `<li>` tags. This applies to both `<ul>` & `<ol>` lists.
    heading_sizes (dict): [**DEPRECATED since v2.7.9**]
        font size per heading level names ("h1", "h2"...) - Set `tag_styles` instead
    pre_code_font (str): [**DEPRECATED since v2.7.9**]
        font to use for `<pre>` & `<code>` blocks - Set `tag_styles` instead
    warn_on_tags_not_matching (bool): control warnings production for unmatched HTML tags. Defaults to `True`.
    tag_indents (dict): [**DEPRECATED since v2.8.0**]
        mapping of HTML tag names to numeric values representing their horizontal left indentation. - Set `tag_styles` instead
    tag_styles (dict[str, fpdf.fonts.TextStyle]): mapping of HTML tag names to `fpdf.TextStyle` or `fpdf.FontFace` instances
    font_family (str): optional font family. Default to Times.
    render_title_tag (bool): Render the document <title> at the beginning of the PDF. Default to False.
r1   sizer   FNT)skip_leading_spacesrM   zCannot set style for HTML tag <z5> (contributions are welcome to add support for this)zItag_styles values must be instances of FontFace or TextStyle - received: )rJ   rD   rF   r*   
fill_colorr<   r?   r=   zThe heading_sizes parameter is deprecated since v2.7.9 and will be removed in a future release. Set the `tag_styles` parameter instead.
stacklevel)rF   zThe pre_code_font parameter is deprecated since v2.7.9 and will be removed in a future release. Set the `tag_styles` parameter instead.r.   rI   )rJ   r0   zThe dd_tag_indent parameter is deprecated since v2.7.9 and will be removed in a future release. Set the `tag_styles` parameter instead.r@   rA   zThe li_tag_indent parameter is deprecated since v2.7.9 and will be removed in a future release. Set the `tag_styles` parameter instead.rG   zThe tag_indents parameter is deprecated since v2.8.0 and will be removed in a future release. Set the `tag_styles` parameter instead.)Csuper__init__r  r  r  
isinstancer   r   r   r  r  rJ   rF   r   NONEfont_emphasis
text_color
font_colorset_fontr   style_stack_page_break_after_paragraphfollows_trailing_spacefollows_headingalignheading_level_tags_stacktext_columns_column	paragraph
_paragraph_pre_formatted_pre_startedhrefindentline_height_stackol_typebulletr  	_in_titler  table	table_rowtrtd_th_scale_unitsDEFAULT_TAG_STYLESr  itemsNotImplementedErrorr   
ValueError
BLOCK_TAGSr   r1   r+   size_ptr*   r!  r<   r?   r=   warningswarnDeprecationWarningr
   replace)selfr  r  r  r  r  r  r  r  r  r  r  r  rJ   r  tag	tag_styler  
code_style	pre_styler:  	__class__s   &&&&&&&&&&&&&&&      r   r%  HTML2FPDF.__init__N  s   T 	," /3// _-(9 	
 *C& !$ > >;#&#3#3).... 	##""$$** 	 	

 ,.+0(&+#$48
,0&(xx,,,F151G1G1I#!!	57 	 (* 0%:" 	
  	  	  	

 's,>?)//R668NC,,)5cU:op  i22 _`i_jk  j Iy)I)I% ) 0 0"+"4"4"4):L:L:R:R!*!2!2#//(33!__h!__h!__h#	& $-DOOC ? 9@ $MM> #*, +002	T'+s';'C'CQU'C'V$ 3$MM> #*, 0J.I*i00'//M/J
'//}/E
)Y//%----H	%--]-C	&0DOOF#%.DOOE"$MM> #*, %)OOD$9$A$A& %B %DOOD! $MM> #*, %)OOD$9$A$A& %B %DOOD! MM> #*,  +002Voo--9#>st  (,s';'C'CV'C'T$  3 r   c                <   < V ^8  d   QhRS[ RS[S[S[3,          /# )r   r?   r   )r   r	   r  r   )r   r  s   "r   r   r  *  s$      c eE5L.A r   c                    \        V \        4      '       d   V # \        V \        \        34      '       d   \        V 4      # R # )        )r&  r   intr  rA   s   &r   _normalize_l_marginHTML2FPDF._normalize_l_margin)  s2    h&&Ohe--?"r   c                   < V ^8  d   QhRS[ S[S[S[3,          ,          RS[ S[,          RS[RS[RS[S[S[3,          RS[RR/# )	r   r0  line_height
top_marginbottom_marginr:  r=  r   N)r   r	   r  r   r   )r   r  s   "r   r   r  1  sl     % %eUl+,% e_% 	%
 % eUl#% % 
%r   c           
        V P                  4        Wn        \        V\        4      '       d   V P                  '       g   WPn        ^ pV'       g:   V P                  '       g(   V P
                  V P                  P                  ,          pV P                  P                  \        V P                  \        4      '       d   V P                  MRVRVVVVR7      V n
        RV n        RV n        R# )    NT)
text_alignr\  r   r]  r^  r:  bullet_stringF)_end_paragraphr0  r&  r   r/  rF   r  kr4  r5  r6  r.  )rN  r0  r\  r]  r^  r:  r=  s   &&&&&&&r   _new_paragraphHTML2FPDF._new_paragraph1  s     	
fe$$:::#
F$"6"6"6**TXXZZ7J,,00%/

E%B%Btzz# $!'  1 
 '+#$r   c                   < V ^8  d   QhRR/# )r   r   Nr  )r   r  s   "r   r   r  Q  s     5 5 5r   c                *   R V n         V P                  '       g   R # V P                  P                  4        V P                  P	                  4        R V n        RV n        V P                  '       d$   V P                  P                  4        RV n        R # R # )NTF)	r0  r6  r4  end_paragraphrenderr.  r-  r  _perform_page_break)rN  s   &r   rc  HTML2FPDF._end_paragraphQ  sm    
""$&*#+++HH((*/4D, ,r   c                J   < V ^8  d   QhRS[ RS[S[S[ ,          ,          RR/# )r   textlinkr   N)r   r   rX  )r   r  s   "r   r   r  ^  s+     $ $S $s0C $t $r   c                   V'       g   R # V P                   '       g   V P                  4        V P                  P                  4        V P                  P                  p^ V P                  n        V P                  P                  V P                  V P                  V P                  P                  R7       V P                  V P                  P                  8w  d4   V P                  e&   V P                  P                  V P                  4       V P                   f   Q hV P                   P                  WR7       W0P                  n        V P                  P                  4        R # )Nr  ro  )r6  re  r  _push_local_stackpager+  rJ   rF   r(  r   r*  r)  set_text_colorwrite_pop_local_stack)rN  rn  ro  	prev_pages   &&& r   _write_paragraphHTML2FPDF._write_paragraph^  s    ! 	""$HHMM	##""$$** 	 	

 ??dhh111doo6QHH##DOO4***d.!!!#r   c                4   < V ^8  d   QhRS[ S[,          RR/# )r   hr   N)r   r  )r   r  s   "r   r   r  x  s     + +Xe_ + +r   c                    V P                   '       d   V P                   P                  VR 7       MV P                  P                  VR 7       RV n        R# ))r{  TN)r6  lnr4  r.  )rN  r{  s   &&r   _lnHTML2FPDF._lnx  s:    ???OO#LLOOaO &*#r   c                $   < V ^8  d   QhRS[ RR/# r   datar   Nr   )r   r  s   "r   r   r    s     X" X" X" X"r   c                T	   V P                   '       dc   V P                  P                  '       d   \        P	                  R V4       MV P                  P                  V4       V P                  '       g   R# V P                  Ee   VP                  4       pV'       g   R# RV P                  9   d7   V P                  R,          p\        RV RV P                  R,           R24      hV P                  P                  R4      pVf*   V P                  e   V P                  P                  R4      pV'       d   VP                  4       pV P                  P                  R4      pVf*   V P                  e   V P                  P                  R4      p\        V4      p\        V P                  P                  R	4      ;'       g    R
4      p\        V P                  P                  R4      ;'       g    R
4      p^ pV P                  P                  R4      '       d   V\         P"                  ,          pV P                  P                  R4      '       d   V\         P$                  ,          pV P                  P                  R4      '       d   V\         P&                  ,          pV P(                  V P                  P(                  8w  d   V P(                  MRp	V P*                  V P                  P*                  8w  d   V P*                  MRp
RpV	'       g   V'       g   V
'       g	   V'       d%   \-        V	VV
V P                  P.                  VR7      pV P0                  f   Q hV P0                  P3                  VVVVVR7       RV P                  R&   MV P4                  e   MV P6                  '       di   VP9                  R4      '       d9   V P:                  '       d'   VP=                  R4      '       d   V^R pM	VR,          pRV n        V P?                  V4       Mq\@        PC                  RV4      pV PD                  '       d(   V^ ,          R8X  d   V P?                  VR,          4       MV P?                  V4       VR,          R8H  V n"        V PF                  '       d   V PI                  4        R# R# )zIgnoring repeated <title> "%s"NinsertedrO  z%Unsupported nested HTML tags inside <z> element: <>r0  bgcolorcolspan1rowspanr,   r7   U)r1   r+   rI  r*   r!  )rn  r0  r   r  r  T
   NNF )%r>  r  r!   LOGGERwarning	set_titler  rB  r   rF  r2  r   rA  upperr   rX  r   rC   Ir  rJ   rF   r   r)  r@  cellr?  r7  
startswithr8  endswith_write_data_WS_SUB_PATsubr.  r-  rc  )rN  r  	td_th_tagr0  bgcolor_strr  r  r  r+   rJ   rF   rD   s   &&          r   handle_dataHTML2FPDF.handle_data  s   >>>xx~~~?F""4((((::!::<DTZZ' JJu-	);I;lSWScScdfSgRhhij  JJNN7+E}!4G,**..3K"tww':"ggkk)4&{3G$**..3::s;G$**..3::s;GHzz~~c""LNN*zz~~c""LNN*zz~~c""LNN*$($4$48L8L$L  RV 
 $$(=(== !! 
 Jh,'%&%(((--&
 >>---NN     &*DJJz"ZZ#    t$$):):):==&&":D8D %DT"??3-D***tAw#~  b*  &*.r(c/D'+++! ,r   c                $   < V ^8  d   QhRS[ RR/# r  r  )r   r  s   "r   r   r    s     ( ( ( (r   c                @   V P                   '       d   V P                  V4       R# V P                  '       dV   V P                  P                  '       d   \        R 4      hV P                  P                  WP                  ^,
          RR7       V P                  V4       R# )zCombining write_html() & section styles is currently not supported. You can open up an issue on github.com/py-pdf/fpdf2 if this is something you would like to see implemented.F)strictN)r9  put_linkr1  r  section_title_stylesrF  start_sectionrx  )rN  r  s   &&r   r  HTML2FPDF._write_data  sx    999MM$!!!88000-G  &&t-?-?!-CE&R!!$'r   c                ^   < V ^8  d   QhRS[ RS[S[S[ S[ R,          3,          ,          RR/# )r   rO  attrsNr   )r   listtuple)r   r  s   "r   r   r    s:     P8 P83 P8tE#sTz/4J/K P8PT P8r   c                8/   R V n         \        V4      p?\        VP                  R4      ;'       g    R4      pV P                  P                  V4       VP                  R4      R8X  d+   V P                  4        V P                  P                  4        VRN9   d   V P                  e   RV P                  V&   VR8X  dP   VR	,          ;'       g    RV n
         \        V P                  4      pV P                  P                  VR
7      V n
        VR8X  d   V P                  R4       VR8X  EdS   V P                  4        VP                  RVP                  R4      4      pV'       dg   VRO,          R8X  d2   V P                  P                  \!        VRRO 4      ,          ^d,          pM=\!        V4      V P                  P"                  ,          pMV P                  P                  pV P                  P$                  V P                  P                  V,
          ^,          ,           pV P                  P'                  VV P                  P(                  W,           V P                  P(                  R7       V P                  R4       VR8X  Ed'   V P*                  P                  \-        V P.                  V P0                  V P2                  V P4                  R7      4       Rp	RV9   d/    VP                  R4      p
V
e   \6        P8                  ! V
4      MRp	VP                  RVP                  R4      4      pRpV'       d    \!        V4      pV P:                  V,          pVP<                  e-   VP<                  V P4                  8w  d   VP<                  V n        VP>                  e-   VP>                  V P.                  8w  d   VP>                  V n        VP@                  e-   VP@                  V P2                  8w  d   VP@                  V n        VPB                  '       d$   V ;P0                  VPB                  ,          un        \E        V\F        4      '       d&   VPH                  pVPJ                  pVP$                  pMR;p;ppV PM                  V4      pT PO                  T	T;'       g    RVVVR7       V\P        9   Ed   V P*                  P                  \-        V P.                  V P0                  V P2                  V P4                  R7      4       VR8X  d   ^ M\        VR,          4      V n)        V P:                  V,          pVP@                  ;'       g    V P2                  V P                  P"                  ,          pRp	RV9   d/    VP                  R4      p
V
e   \6        P8                  ! V
4      MRp	\E        V\F        4      '       d&   VPH                  pVPJ                  pVP$                  pMR;p;ppV PM                  V4      pV PO                  V	VVV,          VR7       RV9   d   \U        VR,          4      V n        MYRV9   d   \U        VR,          4      V n        M:VP<                  e-   VP<                  V P4                  8w  d   VP<                  V n        VP>                  e-   VP>                  V P.                  8w  d   VP>                  V n        VP@                  e-   VP@                  V P2                  8w  d   VP@                  V n        VPB                  '       d$   V ;P0                  VPB                  ,          un        VRP9   Ed   V\V        9   d   V P                  4        V P*                  P                  \-        V P.                  V P0                  V P2                  V P4                  R7      4       V P:                  V,          pVP<                  '       d   VP<                  V n        VP>                  ;'       g    V P.                  V n        VP@                  ;'       g    V P2                  V n        VPB                  '       d$   V ;P0                  VPB                  ,          un        VR8X  d   RV n,        RV n         V\V        9   d   VR8X  d   RV n-        \E        V\F        4      '       d&   VPH                  pVPJ                  pVP$                  pMR;p;ppV PM                  V4      pT PO                  V P\                  '       d   V P\                  RO,          MRVVVR7       VR8X  Edm   V ;P^                  ^,          un/        VP                  R V P`                  4      pVf   Q hV Pb                  P                  V4       VP                  RVP                  R4      4      pV'       d'    V P\                  P                  \!        V4      4       MV P\                  P                  R4       V P^                  ^8X  d   V P:                  V,          p\E        V\F        4      '       d&   VPH                  pVPJ                  pVP$                  pMR;p;ppV PM                  V4      pV PO                  ^ VVVR7       V P                  R!4       V P                  4        VR"8X  Ed   V ;P^                  ^,          un/        ^pR#V9   d    VR#,          ;'       g    R$p \        V4      pV Pb                  P                  V^,
          4       VP                  R 4      ;'       g    R$V Pd                  V P^                  &   VP                  R4      ;'       g    VP                  R4      pV'       d'    V P\                  P                  \!        V4      4       MV P\                  P                  R4       V P^                  ^8X  d   V P:                  V,          p\E        V\F        4      '       d&   VPH                  pVPJ                  pVP$                  pMR;p;ppV PM                  V4      pV PO                  ^ VVVR7       V P                  R!4       V P                  4        VR%8X  Ed   V P                  Pf                  pV Ph                  V P                  n3        V Pb                  '       d&   V Pb                  V P^                  ^,
          ,          pMV P`                  p\E        V\        4      '       g!   \k        VV P                  Pl                  4      p\E        V\n        4      '       gV   V^,          pVV Pb                  V P^                  ^,
          &   V Pd                  V P^                  ,          p\q        VV4       R&2pV P:                  V,          p\E        V\F        4      '       d&   VPJ                  pVP$                  pVPH                  pMR;p;ppV PM                  V4      pV Ps                  V4       \E        V\6        4      '       d   RMTpT PO                  V P\                  '       d   V P\                  RO,          MRVV P^                  ,          VVR'7       VV P                  n3        VR(8X  Ed   V P*                  P                  \-        V P.                  V P0                  V P2                  V P4                  R7      4       RV9   d   \U        VR,          4      V n        R)V9   d.   VP                  R)4      ;'       g    Rp \!        V4      V n        M3R*V9   d-   VP                  R*4      ;'       g    Rp \!        V4      V n        R+V9   d1   VP                  R+4      ;'       g    RpVPu                  4       V n        VR,8X  Ed   V P                  4        RpVP                  R4      ;'       g    VP                  R4      pV'       df   VRO,          R8X  d2   V P                  P                  \!        VRRO 4      ,          ^d,          pM&\!        V4      V P                  P"                  ,          pR-V9  d   V Pv                  '       d   R.MR/pM>VR-,          ;'       g    Rp \        V4      ^ 8  d   V Pv                  '       d   R0MR1pMR2p \6        P8                  ! VP                  R4      ;'       g    R34      p	R4V9   d   \!        VR4,          ;'       g    ^ 4      MRp\!        VP                  R54      ;'       g    ^ 4      p\y        V P                  V	VV P2                  V P                  P"                  ,          V Pz                  ,          VVVVR67      V n>        V Ps                  4        VR78X  dv   V P|                  '       g   \        R84      hVP                  4        U U!u/ uF  w  p p!V Pu                  4       V!bK  	  up!p V nA        V P|                  P                  4       V nC        VRQ9   Ed5   V P|                  '       d   V P                  '       g   \        R:V R;24      hVP                  4        U U!u/ uF  w  p p!V Pu                  4       V!bK  	  up!p V n	        WP                  R<&   VR98X  d1   RV P                  9  d   R3V P                  R&   RV P                  R&   Mb\        V P|                  P                  4      ^8X  d?   V P                  P                  '       g#   R V P|                  nG        ^ V P|                  nH        R=V9   d   \        P                  R>VR=,          V4       RV9   d   VR,          ;'       g    R?p\        V P|                  P                  4      ^8X  d   VRO,          R8X  d   \!        VRRO 4      pM\!        V4      pV P|                  P                  '       g   . V P|                  nK        \E        V P|                  P                  \        4      '       g   Q hV P|                  P                  P                  V4       M\        P                  R@VV4       VRA8X  Ed   RBV9   Ed   \!        VP                  R4      ;'       g    ^ 4      V P                  P"                  ,          p\!        VP                  R=4      ;'       g    ^ 4      V P                  P"                  ,          p"V P                  '       d   V'       g	   V"'       d   \        P                  RC4       V P                  '       d   \        P                  RD4       V P                  P                  VRB,          RRE7       V P                  f   Q hRV P                  RF&   R# V P                  P                  4       p#V P                  '       d   V P                  p#V P                  P                  T P                  VRB,          ;'       g    R4      V#VV"V P                  RG7       VRH8X  dZ   V P                  4        V P                  P                  V P                  \        VP                  RI4      ;'       g    R$4      RJ7       VRK8X  d    \        P                  V P                  nV        VRL8X  d    \        P                  V P                  nV        VR8X  d   RV nX        VP                  RM4      R8X  d=   VRR9   d-   V P                  4        V P                  P                  4        R# RV nY        R# R#   \         d     ELi ; i  \         d    Rp	 ELi ; i  \         d    Rp ELi ; i  \         d    Rp	 ELni ; i  \         d     ELGi ; i  \         d    ^p ELfi ; i  \         d     ELi ; i  \         d     EL1i ; i  \         d     ELCi ; i  \         d    R2p ELi ; iu up!p i u up!p i )SFr   rM   zbreak-beforers  r,   NTr(   r9  rs  brr  hrwidth%)x1y1x2y2rH   r1   r+   rI  r*   r0  zline-heightrW        ?)r0  r\  r]  r^  r:  r!   r  )r0  r]  r^  r:  r*   r@   rI   )r\  r]  r^  r:  rL   type    rK   startr  rG   .)r\  r:  r^  r=  r6   z	font-sizer  facer?  borderHORIZONTAL_LINESSINGLE_TOP_LINEALLNO_HORIZONTAL_LINESr'  CENTERcellpaddingcellspacing)r0  borders_layoutr\  r  paddinggutter_widthgutter_heightrA  z+Invalid HTML: <tr> used outside any <table>thzInvalid HTML: <z> used outside any <tr>rO  heightz4Ignoring unsupported height="%s" specified on a <%s>0zEIgnoring width="%s" specified on a <%s> that is not in the first <tr>imgr  z<Ignoring unsupported "width" / "height" set on <img> elementz$Ignoring unsupported <img> alignment)r  img_fill_widthr  )xwr{  ro  tocpages)r  supr  zbreak-after)r,   r7   r:   r  )r,   r;   r>   r.   r2   r4   r7   r@   rB   rI   r8   r9   r:   tdr  )r  r  r  )Zr8  r   r   r   r2  appendrc  r  rk  rB  r9  rX  add_linkrG  rx  epwr  rd  r?   lineyr,  r   rJ   r(  rF   r*  r   coercer  r*   r1   rI  r+   r&  r   r<   r=   rY  re  HEADING_TAGSr1  r   rH  r7  r/  r;  r:  r  r=  r<  r)  r  	ul_prefixis_ttf_fontr   	ol_prefixr~  r   r  r   TABLE_LINE_HEIGHTr?  r   rE  rA  rowr@  r   rowscells_first_row_as_headings_num_heading_rowsr  r  _col_widthsr  r0  r  get_ximager  insert_toc_placeholder
render_tocr   SUP	char_vposSUBr>  r-  )$rN  rO  r  
attrs_dict	css_stylers  	width_strhr_widthx_startr0  	align_strline_height_strr\  rP  r<   r=   r?   hsizebullet_charr  	start_strprev_text_colorr=  r<  numeric_indentfont_size_strrJ   r  r  borders_strr  spacingrd  vr  r  s$   &&&                                 r   handle_starttagHTML2FPDF.handle_starttag  s2   !,0K
#JNN7$;$A$ArB	$==(F2!HH((*/!djj&<"DJJsO#:"6*00bDI499~ HH--4-8	 $;!!$'$;!!gz~~g/FGIR=C'#xx||eIcrN.CCcIH$Y/$((**<H88<<hh''488<<(+Ba*GGGHHMM88::%88::	   !!$'#:##++!// --//	 &*E*$! *w 7I7@7LELL3RVE (mmz~~m<O ,0K'"'"8K ,I*y$///Q"+//+	0@0@DDTDT0T#,#3#3   ,1B1BdFWFW1W$-$5$5!!!!""i&8&88")Y//$--$--$--14448h//9H'..3#&    ,##++!// --//	 '*Wn#c"g,D,I&&;;$*;*;txxzzIEE*$! *w 7I7@7LELL3RVE )Y//$--$--$--14448h//9H#&.	    )#"29W3E"FJ& #3:g3F"G,DOO1S"+//+	0@0@DDTDT0T#,#3#3   ,1B1BdFWFW1W$-$5$5!!!!""i&8&88" 
 
 j ##%##++!// --//	 ,I"+//(//CC43C3CD ) 1 1 F FT5F5FD!!!""i&8&88"e|&*#$(!j $; ,0D(i33(11H(11H(11H588H8x(33H=##6:6L6L6L..r2RV'"*# $  $;KK1K$..1D1DEK***KK{+'mmz~~m<O **11%2HI &&--d3{{a OOC0	i33(11H(11H(11H588H8x(33H=## !'"*#	 $  %%h/!$;KK1KE*$&w/663		NE KKuqy)(2v(>(E(E#DLL%'mmM:  jnn?O **11%2HI &&--d3{{a OOC0	i33(11H(11H(11H588H8x(33H=## !'"*#	 $  %%h/!$;"hh11O"&"6"6DHH{{{T[[1_5 ,,fc**"6488+?+?@fc**!/5DKK!O,,,t{{3%gv67q9,I)Y//$--$--$--14448h//9HHHX$.x$?$?SXN262H2H2HD**2.d%3&    #2DHH&=##++!// --//	 *$"2:g3F"Gi' )k : @ @b(-m(<D% :% *v 6 < <"(-m(<D% #(nnV4::#.#4#4#6 '>!%)E!g.II*..2IIR=C' HHLL53B+@@3FE!),txxzz9Ez) 111 '*  )288b
,;'!+  $999 "!6 ' *0 LL!8!D!DHEE !J. j/4415 
 JNN=9>>Q?G- --

:T=S=SS$%	DJ HHJ$;:::#$QRR0:0@0@0BC0B1qwwy!|0BCDG!ZZ^^-DN,:::T^^^#ocU:Q$RSS3=3C3C3EF3E41a!'')Q,3EFDJ #JJud{$**,*2DJJw'"&

3TZZ__%*4>>3G3G3G
  

1 01

,:%Jx(
 *$&w/663	tzz'1, }+ %in 5 %i 0::11113

.%djj&<&<dCCCCJJ**11%8NN_!
 %<EZ/*..166Q7$((**DE:>>(388q9DHHJJFF~~~FNNV :::NN#IJ##
5(9$#Ozz---)-

:&#xx~~/AzzzJJHHNNz%066B7YY   %<!HH++s:>>'+B+I+Ic'J ,  %<!)DHH%<!)DHH'>!DN=='61))##%,,.370 2s  J " ! E! " '"&K'T " ! E!F " 8 " E " L "  " > " ,%+N,. D
 Gs  6A[ !-A[$ :A[8 -A\ '$A\  A\2 #$A] 1A] %A]* A!A]< A1A]< A6A]< FA^H#A^[A[![ A[![$A[5[4A[5[8A\	\A\	\A\\A\\ A\/\.A\/\2A]]A]]A]]A]]A]']&A]']*A]9]8A]9]<A^^A^c                $   < V ^8  d   QhRS[ RR/# )r   rO  r   Nr  )r   r  s   "r   r   r    s     o# o# o# o#r   c                ~   V P                   '       dV   WP                   R,          8w  d?   V P                   R,          V P                  9   d   V P                   P                  4        Kg  V P                   '       g*   V P                  '       d   \        P                  RV4       MlWP                   R,          8X  d   V P                   P                  4        M:V P                  '       d)   \        P                  RVV P                   R,          4       VR8X  d   RV n        VR8X  d   V P                  '       d   V P                  P                  4       pVP                  ;'       g    V P                  V n	        VP                  ;'       g    V P                  V n        VP                  ;'       g    \        P                  V n        VP                   V n        V P%                  4        RV n        V\(        9   d   RV n        V P                  '       d   V P                  P                  4       pVP                  ;'       g    V P                  V n	        VP                  ;'       g    V P                  V n        VP                  ;'       g    \        P                  V n        VP                   V n        V P%                  4        RV n        VR9   d   V P                  '       d   V P                  P                  4       pVP                  ;'       g    V P                  V n	        VP                  ;'       g    V P                  V n        VP                  ;'       g    \        P                  V n        VP                   V n        VR8X  d   R	V n        R	V n        V\2        9   d   V P%                  4        VR9   d   V P%                  4        VR
8X  d&   V P4                  P                  V P6                  4       V ;P6                  ^,          un        V P8                  P                  4        V P:                  P                  4        VR8X  dB   V P<                  f   Q hV P<                  P?                  4        RV n        V PA                  4        VR8X  d   RV n!        RV n"        VR9   Ed   V PF                  e   V PB                  e   V PD                  f   Q hRV PF                  9  d   \I        V PF                  PK                  R4      ;'       g    V PB                  PK                  RR4      4      pV'       d   \M        VR7      MRp\O        V PF                  PK                  RR4      4      p\O        V PF                  PK                  RR4      4      pV PD                  PQ                  RWEVR7       RV n#        VR8X  d   V P                  '       d   V P                  P                  4       pVP                  ;'       g    V P                  V n	        VP                  ;'       g    V P                  V n        VP                  ;'       g    \        P                  V n        VP                   V n        VR8X  d    \R        PT                  V PV                  n,        VR8X  d    \R        PT                  V PV                  n,        VR8X  d
   R	V n-        R# R# )r  z8Unexpected HTML end tag </%s>, start tag may be missing?z1Unexpected HTML end tag </%s>, start tag was <%s>r(   rM   rH   NTrI   FrK   r?  rA  r  r  )r!  r  r  r  )rn  r   r  r  r6   r  r  r!   r  )r,   r;   r>   r.   r4   r7   r@   rB   rI   r8   r9   r:   )rL   rK   r  ).r2  HTML_UNCLOSED_TAGSpopr  r  r  r9  r,  r1   rJ   rI  rF   r+   r   r'  r(  r*   r*  rc  r0  r  r1  r/  r7  r8  rH  r<  r:  r;  r=  r?  rj  r~  rA  r@  rB  r   r   r   rX  r  r   LINEr  r  r>  )rN  rO  	font_facer  r   r  r  s   &&     r   handle_endtagHTML2FPDF.handle_endtag  s   ''++  $(?(??  "---NPS $$R((  "+++NNC  $
 #:DI#: ,,002	#,#3#3#G#Gt7G7G $-$5$5$J$J9J9J!%.%7%7%L%L<;L;L""+//!DJ,!%D ,,002	#,#3#3#G#Gt7G7G $-$5$5$J$J9J9J!%.%7%7%L%L<;L;L""+//!#'D  
 
  ,,002	#,#3#3#G#Gt7G7G $-$5$5$J$J9J9J!%.%7%7%L%L<;L;L""+//e|&+#$)!j ##%,!d{  -KK1K""&&(KKOO'>::)))JJDJHHJ$;DG!DN,

&GG'NN./ +*JJNN9-MMY1M 9@G4TdjjnnY<=djjnnY<=##57 $  DJ&= ,,002	#,#3#3#G#Gt7G7G $-$5$5$J$J9J9J!%.%7%7%L%L<;L;L""+//%<!)DHH%<!)DHH'>"DN r   c                $   < V ^8  d   QhRS[ RR/# r  r  )r   r  s   "r   r   r  )  s     R R R Rr   c                  < \         SV `  V4       V P                  '       d?   V P                  R,          V P                  9   d   V P                  P	                  4        KP  V P                  4        V P                  '       d>   V P                  '       d*   \        P                  RV P                  R,          4       R# R# R# )r  zMissing HTML end tag for <%s>Nr  )	r$  feedr2  r   r  rc  r  r  r  )rN  r  rS  s   &&r   r  HTML2FPDF.feed)  s    T4#3#3B#74;R;R#R  " > > >NN:D<L<LR<PQ !?r   c                $   < V ^8  d   QhRS[ RR/# )r   rn  r   Nr  )r   r  s   "r   r   r  1  s     + +S +T +r   c                   \        V P                  V P                  V P                  V P                  R7      pV P
                  R,          pVP                  '       d   VP                  V n        VP                  ;'       g    V P                  V n        VP                  ;'       g    V P                  V n        VP                  '       d$   V ;P                  VP                  ,          un        V P                  WP                  R7       VP                  ;'       g    V P                  V n        VP                  ;'       g    V P                  V n        VP                  ;'       g    \        P                  V n        VP                  V n        R# )zInsert a hyperlinkr  r(   rq  N)r   rJ   r(  rF   r*  r  r*   r1   rI  r+   rx  r9  r   r'  )rN  rn  
prev_stylerP  s   &&  r   r  HTML2FPDF.put_link1  s#   ##''%%//	

 OOC(	???'ooDO$++??t/?/?%--BB1B1B)"4"44d3%,,@@0@0@&..CC$2C2C'00EEL4E4E$**r   c                8   < V ^8  d   QhRRRS[ S[,          RR/# )r   r  r   outliner   N)r  r   )r   r  s   "r   r   r  H  s'      f tN/C  r   c           
        VP                  4        V F  pVP                  VP                  R7      pRVP                  ,          ^,           RVP                   2pVRR^<VP                  ^,          ,
          \        VP                  4      ,
          ,           RVP                   2,          pVP                  VP                  VP                  V\        P                  \        P                  VR7       K  	  R# )zUThis method can be overridden by subclasses to customize the Table of Contents style.r  r  r  )r  r{  rn  new_xnew_yro  N)r}  r  page_numberlevelnamer   
multi_cellr  	font_sizer   LMARGINr   NEXT)rN  r  r  sectionro  rn  s   &&&   r   r  HTML2FPDF.render_tocH  s    G<<W%8%8<9DGMM)A-.a~>DarGMM!O3c',,6GGHI7K^K^J_``DNN''--llii  	 r   c                $   < V ^8  d   QhRS[ RR/# )r   messager   Nr  )r   r  s   "r   r   r  Y  s     $ $S $T $r   c                    \        V4      hr  )RuntimeError)rN  r  s   &&r   errorHTML2FPDF.errorY  s    7##r   )!r4  r>  r-  r6  r7  r8  r2  r0  r=  r/  r.  r*  r(  rJ   rF   r1  r9  r  r:  r  r;  r<  r  r  r,  r?  r  r@  r  rB  rA  r  r  )r  r@   rB   r  r  rG   r  rA  )   r`  r`  )Nr  r`  r`  r`  rM   r  )__name__
__module____qualname____firstlineno____doc__r   r  r%  staticmethodrY  re  rc  rx  r~  r  r  r  r  r  r  r  r   __static_attributes____classdictcell____classcell__rS  r  s   @@r   r  r  H  s     J
 +:)-)-&+$&148'+*.2659"!&YU YUv  % %@5 5$ $4+ +X" X"t( (P8 P8do# o#bR R+ +. "$ $ $r   r  c          	          V ^8  d   QhRRR\         \        \        \        ,          3,          R\         \        \        \        ,          3,          /# )r   r  r   in_tag_stylesr   )r   r   r   r   )r   s   "r   r   r   ]  sB      	 $S(Y*>%> ?	#x)#
#$r   c           	         \        R 4      V P                  ,          p/ pVP                  4        F  w  rE\        V\        4      '       d~   TP                  VP                  V,          \        VP                  \        \        34      '       d   VP                  V,          MVP                  VP                  V,          R7      W4&   K  WSV&   K  	  V# )mm)r<   r?   r=   )r   rd  rE  r&  r   rM  r<   r?   rX  r  r=   )r  r.  conversion_factorout_tag_stylestag_namerP  s   &&    r   rC  rC  ]  s     ).668N,224i++'0'8'8"++.?? ")"4"4sElCC &&)::"++"++.?? (9 (N$ (18$  5 r   c                <    V ^8  d   QhR\         R\        R\         /# )r   ul_typer  r   )r   r  )r   s   "r   r   r   r  s!     > >s > ># >r   c                     V R 8X  d   V'       d   \         # \        # V R8X  d   V'       d   \        # \        # \	        V 4      ^8X  d   V # \        RV  24      h)r	  circleUnsupported type: )BULLET_UNICODEMESSAGE_WAITING_WIN1252RING_OPERATOR_UNICODEDEGREE_SIGN_WIN1252r   rF  )r5  r  s   &&r   r  r  r  sS    &!,~I2II((3$L9LL
7|q
 27)<
==r   c                R    V ^8  d   QhR\         R\        R\        \         ,          /# )r   r<  indexr   )r   rX  )r   s   "r   r   r   |  s%     > >s >3 >39 >r   c                     V R 8X  d   V# V R8X  d   \         V^,
          ,          # V R8X  d   \        V^,
          ,          # V R8X  d   \        V4      # V R8X  d   \        V4      P                  4       # \	        RV  24      h)r  r(   Ar  r7   r8  )r   r   r   r   rF  )r<  r>  s   &&r   r  r  |  sz    #~#~uqy))#~uqy))#~#~%%''
 27)<
==r   c                   B   a a ] tR tRt oRtV3R lV 3R lltRtVtV ;t# )	HTMLMixini  zW
[**DEPRECATED since v2.6.0**]
You can now directly use the `FPDF.write_html()` method
c                *   < V ^8  d   QhRS[ RS[ RR/# )r   argskwargsr   N)r   )r   r  s   "r   r   HTMLMixin.__annotate__  s"     	
 	
c 	
S 	
T 	
r   c                r   < \         SV `  ! V/ VB  \        P                  ! R \        \        4       R7       R# )z[The HTMLMixin class is deprecated since v2.6.0. Simply use the FPDF class as a replacement.r"  N)r$  r%  rJ  rK  rL  r
   )rN  rD  rE  rS  s   &*,r   r%  HTMLMixin.__init__  s1    $)&)> &(	
r   r  )	r#  r$  r%  r&  r'  r%  r)  r*  r+  r,  s   @@r   rB  rB    s     
	
 	
 	
r   rB  )r!   r"   r#   r$   r%   r&   r'   g@gN@g6i@g|j@gRQ@gll@gd0@)
r(   r,   r.   r2   r4   r6   r7   r8   r9   r:   )	r;   r>   r@   rB   rG   rH   rI   rK   rL   )z	-r     u    - u    u    u    u   　)rP   )Hr'  loggingrerJ  html.parserr   stringr   r   typingr   r   r   r   r	   deprecationr
   drawing_primitivesr   r   r   r   r   enumsr   r   r   r   r   errorsr   fontsr   r   r  r   r?  r   r   utilr   r   fpdfr   text_regionr   	getLoggerr#  r  r:  r9  r<  r;  r  CrD  INLINE_TAGSrH  setkeysjoin	_WS_CHARScompiler  r   r   r   r  rC  r  r  rB  r  r   r   <module>r_     s    	  " 3 @ @ (  = < ! & #  -&			8	$    <
.	5. 6	". HI&	.
 
8_-. 	(I
&. HJ. 9	%. ?	+. h'. ;	'. ))a!D. iegg>. 	)R
 .  	)sZ
8!." Y	#.. 	)#B/.4 	)#B5.: 	)#B 	)#B 	)#B 	)#A 	)Q
+	9ji@)Q
)Q
[. ^ O 
 

 	J#k**s3E3J3J3L/MM MM GG	> jj1YKr*+UYU
IU 	U )	U
 IU U YU IU 	U 9U YU U IU 9U IU  I!U" I#U$ )%U& Y'U( 9)U* 	+U, Y-U. Y/U0 1U2 i3U4 5U6 7U8 9U: Y;U< y=U> i?U@ iAUB CUD iEUF YGUH 	IUJ yKUL yMUN OUP QUR SUT UUV iWUX iYUZ y[U\ ]U^ )_U` )aUb icUd ieUf YgUh IiUj IkUl ymUn IoUp )qUr ysUt 9uUv 9wUx IyUz ){U| I}U~ )U@ AUB )CUD 9EUF iGUH YIUJ 	KUL 	MUN OUP 9QUR YSUT iUUV )WUX YUZ Y[U\ I]U^ _U` aUb icUd yeUf gUh IiUj kUl 
9mUn oUp qUr ysUt iuUv wUx YyUz y{U| }U~ IU@ AUB CUD 	EUF )GUH iIUJ YKUL )MUN YOUP QUR 	SUT YUUV )WUX YYUZ Y[U\ )]U^ _U` )aUb icUd IeUf YgUh IiUj ykUl 
9mUn yoUp yqUr 	sUt uUv iwUx yyUz Y{U| )}U~ 9U@ iAUB CUD IEUF IGUH IUJ 9KUL 	MUN iOUP QUR i)Y		I9
Ii9YYiU
p+ +
R$
 R$j *>>
 
r   