)Ej6 dZddlZddlZddlZddlmZddlmZmZddl m Z m Z m Z m Z mZddlmZddlmZmZmZmZmZdd lmZmZmZmZmZdd lmZdd lm Z m!Z!dd l"m#Z#dd l$m%Z%m&Z&ddl'm(Z(m)Z)e r ddl*m+Z+ddl,m-Z-ej.e/Z0dZ1dZ2dZ3dZ4dZ5ide ddde dde dd e d!d"e d#d$e d%e d#d&e d!d'e dd(e dd)e!d*d+d+,d-e!d.ej6/d0e!d12d3e!d4d.5d6e!d7d8d9d:;d<e!d=d7d>d?@dAe!d=d7dBdC@e!d=d7dDdE@e!d=d7dFdG@e!d=d7d1dH@e!d=d7dIdJ@e!dKdLMe!e!d.dNe!dLOe!dLOdP Z7dQZ8e5dRzZ9e:e9e:e8z e:e7;ksJdS<dTZ=ej>dUe=dVZ?idWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudtdvdwidxdydzd{d|d}d~dddddddddddddddddddddddddddiddddddddddddddddddddddddddddddddddidddddddddddd“ddēddƓddȓddʓdd̓ddΓddГddғddԓdd֓ddؓiddړddړddݓddߓddddddddddddddddddddddddddiddddddddddddddddd d d d d dddddddddddddidddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<id=d<d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidj Z@ d~dke eAdle eezfdmZBdneAdleCeAeAffdoZDGdpdqeZEdrdsdteCeAe e!zfdleCeAe e!zffduZFdveAdweGdleAfdxZHdyeAdzeIdleIeAzfd{ZJGd|d}ZKdS(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: N) HTMLParser)ascii_lowercaseascii_uppercase) TYPE_CHECKINGAnyCallableOptionalUnion)get_stack_level) ColorInput DeviceGray DeviceRGBcolor_from_hex_stringconvert_to_device_color)AlignCharVPos TextEmphasisXPosYPos) FPDFException)FontFace TextStyle)OutlineSection)RowTable)get_scale_factor int2roman)FPDF) Paragraph•u•°u∘)titleh1h2h3h4h5h6az#00f UNDERLINE)coloremphasisbBOLD)r-codeCourierfamilydel STRIKETHROUGHemITALICSfontisstrongu blockquotez#64002d)r,t_marginb_margincenterg@)r?l_margindd rBdtB) font_styler?r#g?Center)r@ font_size_ptr?rBr$z#960000gN@)r,r@rLr?r%g6i@g|j@ gRQ@gll@gd0@)rBr?)r? font_family)r?) r&r'r(r)lippreolul) r*r.r0r4r6r8r9r:r;r<) r=rArCrFrUrVrWrXrY)z -  …u - u
u
u u [z]+black#000000navyz#000080darkbluez#00008b mediumbluez#0000cdbluez#0000ff darkgreenz#006400greenz#008000tealz#008080darkcyanz#008b8b deepskybluez#00bfff darkturquoisez#00ced1mediumspringgreenz#00fa9alimez#00ff00 springgreenz#00ff7faquaz#00ffffcyan midnightbluez#191970 dodgerbluez#1e90ff lightseagreenz#20b2aa forestgreenz#228b22seagreenz#2e8b57 darkslategrayz#2f4f4f darkslategrey limegreenz#32cd32mediumseagreenz#3cb371 turquoisez#40e0d0 royalbluez#4169e1 steelbluez#4682b4 darkslatebluez#483d8bmediumturquoisez#48d1ccindigoz#4b0082darkolivegreenz#556b2f cadetbluez#5f9ea0cornflowerbluez#6495ed rebeccapurplez#663399mediumaquamarinez#66cdaadimgrayz#696969dimgrey slatebluez#6a5acd olivedrabz#6b8e23 slategrayz#708090 slategreylightslategrayz#778899lightslategreymediumslatebluez#7b68ee lawngreenz#7cfc00 chartreusez#7fff00 aquamarinez#7fffd4maroonz#800000purplez#800080olivez#808000grayz#808080greyskybluez#87ceeb lightskybluez#87cefa bluevioletz#8a2be2darkredz#8b0000 darkmagentaz#8b008b saddlebrownz#8b4513 darkseagreenz#8fbc8f lightgreenz#90ee90 mediumpurplez#9370db darkvioletz#9400d3 palegreenz#98fb98 darkorchidz#9932cc yellowgreenz#9acd32siennaz#a0522dbrownz#a52a2adarkgrayz#a9a9a9darkgrey lightbluez#add8e6 greenyellowz#adff2f paleturquoisez#afeeeelightsteelbluez#b0c4de powderbluez#b0e0e6 firebrickz#b22222 darkgoldenrodz#b8860b mediumorchidz#ba55d3 rosybrownz#bc8f8f darkkhakiz#bdb76bsilverz#c0c0c0mediumvioletredz#c71585 indianredz#cd5c5cperuz#cd853f chocolatez#d2691etanz#d2b48c lightgrayz#d3d3d3 lightgreythistlez#d8bfd8orchidz#da70d6 goldenrodz#daa520 palevioletredz#db7093crimsonz#dc143c gainsboroz#dcdcdcplumz#dda0dd burlywoodz#deb887 lightcyanz#e0fffflavenderz#e6e6fa darksalmonz#e9967avioletz#ee82ee palegoldenrodz#eee8aa lightcoralz#f08080khakiz#f0e68c alicebluez#f0f8ffhoneydewz#f0fff0azurez#f0ffff sandybrownz#f4a460wheatz#f5deb3beigez#f5f5dc whitesmokez#f5f5f5 mintcreamz#f5fffa ghostwhitez#f8f8ffsalmonz#fa8072 antiquewhitez#faebd7linenz#faf0e6lightgoldenrodyellowz#fafad2oldlacez#fdf5e6redz#ff0000fuchsiaz#ff00ffmagentadeeppinkz#ff1493 orangeredz#ff4500tomatoz#ff6347hotpinkz#ff69b4coralz#ff7f50 darkorangez#ff8c00 lightsalmonz#ffa07aorangez#ffa500 lightpinkz#ffb6c1pinkz#ffc0cbgoldz#ffd700 peachpuffz#ffdab9 navajowhitez#ffdeadmoccasinz#ffe4b5bisquez#ffe4c4 mistyrosez#ffe4e1z#ffebcdz#ffefd5z#fff0f5z#fff5eez#fff8dcz#fffacdz#fffaf0z#fffafaz#ffff00z#ffffe0z#fffff0z#ffffff) blanchedalmond papayawhip lavenderblushseashellcornsilk lemonchiffon floralwhitesnowyellow lightyellowivorywhiter,returnc|sdSt||}t|S)z 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_DICTgetlowerr)r,hexcolors ;C:\PYTHON\MyICR_Suite\python\Lib\site-packages\fpdf/html.pycolor_as_decimalr-s: t~~ekkmmU33H  * ** style_attrc i}|dD]k}|s|d}t|dkr>|dr6|dr.|\}}|||<l|S)zCParse `style="..."` HTML attributes, and return a dict of key-value;:rSrr )splitlenstrip)rstyleelementpairattrvalues rparse_css_styler;sE##C((00  }}S!! t99>>d1g>$q'>KD%"'++--E$**,,  LrceZdZdZdZdZddddddddd ddd df d d d eegefdee dee de dede dee ee fdeede dee ee fdee ee fdede ddffd Zededee effdZ d;d!eee efd"ee d#e d$e d%ee efd&eddfd'Zd HTML2FPDFzRender basic HTML to FPDF)brrCrFhrimgrUtdtrg?c|SN)srcs rzHTML2FPDF.QscrNFdisc)rrTtimespdfr image_map li_tag_indent dd_tag_indenttable_line_separatorsul_bullet_charli_prefix_color heading_sizes pre_code_fontwarn_on_tags_not_matching tag_indents tag_stylesrTrender_title_tagrc t t||_||_||_t |t rt|nt||_ | |_ |j p| |_ |j |_ tj|_|j|_|j|j |j |jjg|_d|_d|_d|_d|_d|_g|_|jd|_|j|_d|_d|_ d|_!d|_"g|_#i|_$g|_%||_&d|_'||_(d|_)d|_*d|_+d|_,t[|t\|_/| pi0D]\}}|t\vrtcd|d t |tdstgd ||thvrt |tjsntk|j6|j7sdn |j7j|j8|j9|j:|j/|j;|j/|j<|j/|j= }||j/|<|kt}j?d tt |0D].\}}|j/|B||j/|</| t}j?dtt |j/d}|j/d}t |tjr|B| }n|B| }t |tjr|B| }n|B| }||j/d<||j/d<|Qt}j?dtt |j/dB||j/d<|Qt}j?dtt |j/dB||j/d<| rt}j?dtt | 0D]L\}}||j/vrtcd|d |j/|B||j/|<KdSdS)a Args: pdf (fpdf.fpdf.FPDF): an instance of `FPDF` image_map (function): an optional one-argument function that map `` "src" to new image URLs li_tag_indent (int): [**DEPRECATED since v2.7.9**] numeric indentation of `
  • ` elements - Set `tag_styles` instead dd_tag_indent (int): [**DEPRECATED since v2.7.9**] numeric indentation of `
    ` elements - Set `tag_styles` instead table_line_separators (bool): enable horizontal line separators in ``. Defaults to `False`. ul_bullet_char (str): bullet character preceding `
  • ` items in `
      ` lists. You can also specify special bullet names like `"circle"` or `"disc"` (the default). Can also be configured using the HTML `type` attribute of `
        ` tags. li_prefix_color (tuple, str, fpdf.drawing.DeviceCMYK, fpdf.drawing.DeviceGray, fpdf.drawing.DeviceRGB): color for bullets or numbers preceding `
      • ` tags. This applies to both `
          ` & `
            ` 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 `
            ` & `` 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  at the beginning of the PDF. Default to False.
                    r3���sizer��FNT)skip_leading_spacesrZ���r���zCannot 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: )rT���rH���rL���r,���
            fill_colorr?���rB���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)rL���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.r0���rW���)rT���r2���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.rC���rE���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.rU���zThe tag_indents parameter is deprecated since v2.8.0 and will be removed in a future release. Set the `tag_styles` parameter instead.)Csuper__init__r��r��r��
            isinstancestrr���r���r��r!��rT���rL���r���NONE
            font_emphasis
            text_color
            font_colorset_fontr��style_stack_page_break_after_paragraphfollows_trailing_spacefollows_headingalign
            heading_level_tags_stacktext_columns_column	paragraph
            _paragraph_pre_formatted_pre_startedhrefindentline_height_stackol_typebulletr$��	_in_titler��table	table_rowr��td_th_scale_unitsDEFAULT_TAG_STYLESr#��itemsNotImplementedErrorr���
            ValueError
            BLOCK_TAGSr���r3���r-���size_ptr,���r)��r?���rB���r@���warningswarnDeprecationWarningr���replace)selfr��r��r��r��r��r��r��r��r ��r!��r"��r#��rT���r$��tag	tag_styler'��
            code_style	pre_stylerC��	__class__s���                     r���r-��zHTML2FPDF.__init__N��s���T�	,"�/3//
            :_---(99�	
            
            �*C&�!$ >;#)..�	
            #"$*�	�	
            �	
            �	
            
            �,.+0(&+#$48
            ,0&(x,,,FF151G1G1I1I#!!	57�	
            �(* 0%:"�	
            �
            �	
            �
            �	
            �
            �	
            
            �'s,>??)/R6688�	-�	-NC,,,)pcppp���i22�
             k`ikk���j  Iy)I)I % ) 0"+"4R):L:R!*!2#/(3!_!_!_#��	&�$-DOC  $M>�#*,,
            �
            �
            �
            �+0022�
            W�
            W	T'+s';'C'CQU'C'V'V$$$M>�#*,,
            �
            �
            �
            �0J.I*i00�
            F'//M/JJ
            
            '//}/EE
            )Y//�
            D%----HH		%--]-CC	&0DOF#%.DOE"$M>�#*,,
            �
            �
            �
            �%)OD$9$A$A&�%B�%�%DOD!�$M>�#*,,
            �
            �
            �
            �%)OD$9$A$A&�%B�%�%DOD!��	UM>�#*,,
            �
            �
            �
            � +0022�
            U�
            UVdo---t#ttt���(,s';'C'CV'C'T'T$$	U�	U
            U�
            Ur���rB���c���������������������t����������|�t��������������������r|�S�t����������|�t����������t����������f����������rt����������|�����������S�dS�)N��������)r.��r���intfloatrE���s��� r���_normalize_l_marginzHTML2FPDF._normalize_l_margin)��s@����h&&�	Ohe--�	#??"sr���������?r���rZ���r9��line_height
            top_margin
            bottom_marginrC��rF��c�����������	������j���|�����������������������������������||�_��������t����������|t��������������������r|�j��������s||�_��������d}|s|�j��������s|�j��������|�j��������j��������z��}|�j��������	��������������������t����������|�j��������t��������������������r|�j��������nd�|d||||����������|�_
            ��������d|�_��������d|�_��������d�S�)Nr���T)
            text_alignrb��r(��rc��rd��rC��
            bullet_stringF)_end_paragraphr9��r.��r���r8��rL���r��kr=��r>��r?��r7��)rV��r9��rb��rc��rd��rC��rF��s���       r���_new_paragraphzHTML2FPDF._new_paragraph1��s�����	
            
            fe$$�	:�
            $#
            F�	8$"6�	8*TXZ7J,00%/
            E%B%BLtzz# $!' �1�
            �
            �'+#$r���c���������������������d�|�_���������|�j��������sd�S�|�j�����������������������������������������|�j�����������������������������������������d�|�_��������d|�_��������|�j��������r"|�j�����������������������������������������d|�_��������d�S�d�S�)NTF)	r9��r?��r=��
            end_paragraphrenderr7��r6��r��_perform_page_break)rV��s��� r���rh��zHTML2FPDF._end_paragraphQ��s����
            �	F""$$$&*#+�	5H((***/4D,,,	5�	5r���textlinkc��������������������|sd�S�|�j���������s|����������������������������������|�j�����������������������������������������|�j��������j��������}d|�j��������_��������|�j����������������������������|�j��������|�j��������|�j��������j	�������������������|�j
            ��������|�j��������j��������k����r&|�j
            ��������|�j����������������������������|�j
            �������������������|�j���������J�|�j���������
            ��������������������||�����������||�j��������_��������|�j�����������������������������������������d�S�)Nr���r&��rp��)r?��rj��r��_push_local_stackpager4��rT���rL���r1��r��r3��r2��set_text_colorwrite_pop_local_stack)rV��ro��rp��	prev_pages���    r���_write_paragraphzHTML2FPDF._write_paragraph^��s����	F�	"!!!�	
            ""$$$HM	
            #"$*�	�	
            �	
            �	
            
            �?dh111do6QH##DO444***d...!
            !!#####r���hc���������������������|�j���������r|�j�����������������������������|�����������n|�j����������������������������|�����������d|�_��������d�S�)N)rz��T)r?��lnr=��r7��)rV��rz��s���  r���_lnz
            HTML2FPDF._lnx��sL����?�	!O####LOOaO   &*###r���datac�����������������d���|�j���������rK|�j��������j��������rt������������������������������d|�����������n|�j����������������������������|�����������|�j��������sd�S�|�j��������T|��������������������������������}|sd�S�d|�j��������v�r.|�j��������d���������}t����������d|�d|�j
            ��������d����������d����������|�j����������������������������d����������}|!|�j��������|�j����������������������������d����������}|r|
            ��������������������������������}|�j����������������������������d	����������}|!|�j��������|�j����������������������������d	����������}t����������|����������}t����������|�j����������������������������d
            ����������pd����������}t����������|�j����������������������������d����������pd����������}d
            }|�j����������������������������d����������r|t ����������j��������z��}|�j����������������������������d����������r|t ����������j��������z��}|�j����������������������������d����������r|t ����������j��������z��}|�j��������|�j��������j��������k����r|�j��������nd�}	|�j��������|�j��������j��������k����r|�j��������nd�}
            d�}|	s|s|
            s|rt-����������|	||
            |�j��������j��������|����������}|�j��������J�|�j����������������������������|||||�����������d|�j��������d<���n|�j��������n|�j��������rc|��������������������d����������r1|�j��������r*|��������������������d����������r|dd���������}n
            |dd����������}d|�_��������|���������������������|�����������nrt@����������!��������������������d|����������}|�j"��������r*|d
            ���������dk����r|���������������������|dd���������������������n|���������������������|�����������|d���������dk����|�_"��������|�j#��������r|�$���������������������������������d�S�d�S�)NzIgnoring repeated <title> "%s"insertedrW��z%Unsupported nested HTML tags inside <z> element: <>r9��bgcolorcolspan1rowspanr���r.���r9���U)r3���r-���rQ��r,���r)��)ro��r9��r��r��r��T
            r���Fr[���)%rG��r��r#���LOGGERwarning	set_titler$��rJ��r��rN��r;��r���r��upperr���r^��r���rG���Ir��rT���rL���r���r2��rI��cellrH��r@��
            startswithrA��endswith_write_data_WS_SUB_PATsubr7��r6��rh��)rV��r~��	td_th_tagr9��bgcolor_strr��r��r��r-���rT���rL���rH���s���            r���handle_datazHTML2FPDF.handle_data��s���>�	x~�
            )?FFFF""4((((�
            :!::<<D�
            TZ'' Ju-	)jIjjSWScdfSgjjj���JNN7++E}!4G,,�
            &
            
            *..33K"tw':"gkk)44&{33G$*..33:s;;G$*..33:s;;GHz~~c""�
            +LN*z~~c""�
            +LN*z~~c""�
            +LN*$($48L$L$L  RV�
            
            �$(===�!!�
            
            �J�
            h�
            ,�
            '�
            %&%((-&��
            �>---N �
             �
            �
            �
            �&*DJz""
            Z
            #
            
             �	:�t$$�
            $):�
            $==&&�$":DD8D %DT""""??3--D*�
            'tAw#~~  abb****  &&&*.r(c/D'+�	"!!!!!	"�	"r���c���������������������|�j���������r|���������������������|�����������d�S�|�j��������r@|�j��������j��������rt����������d����������|�j����������������������������||�j��������dz
            ��d�����������|���������������������|�����������d�S�)NzCombining 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.r���F)strict)rB��put_linkr:��r��section_title_stylesrN��
            start_sectionry��)rV��r~��s���  r���r��zHTML2FPDF._write_data��s����9�
            	(MM$!�
            S80�-G���&&tT-?!-CE&RRR!!$'''''r���rW��attrsc�����������
            ������4&���d|�_���������t����������|����������}~t����������|��������������������d����������pd����������}|�j����������������������������|�����������|��������������������d����������dk����r-|����������������������������������|�j�����������������������������������������|dv�r|�j	��������
            d|�j	��������|<���|dk����rU|d	���������pd|�_
            ��������	�t����������|�j
            ������������������}|�j����������������������������|
            ����������|�_
            ��������n#�t����������$�r�Y�nw�xY�w|dk����r|���������������������d�����������|d
            k����r|����������������������������������|��������������������d|��������������������d��������������������}|rQ|d���������dk����r(|�j��������j��������t!����������|d�d�������������������z��dz��}n)t!����������|����������|�j��������j��������z��}n|�j��������j��������}|�j��������j��������|�j��������j��������|z
            ��dz��z���}|�j����������������������������||�j��������j��������||z���|�j��������j�������������������|���������������������d�����������|dk����r|�j����������������������������t-����������|�j��������|�j��������|�j��������|�j�����������������������������d�}	d|v�rA	�|��������������������d����������}
            |
            t7����������j��������|
            ����������nd�}	n#�t����������$�r�d�}	Y�nw�xY�w|��������������������d|��������������������d��������������������}d�}|r#	�t!����������|����������}n#�t����������$�r�d�}Y�nw�xY�w|�j��������|���������}
            |
            j��������|
            j��������|�j��������k����r|
            j��������|�_��������|
            j��������|
            j��������|�j��������k����r|
            j��������|�_��������|
            j ��������|
            j ��������|�j��������k����r|
            j ��������|�_��������|
            j!��������r|�xj��������|
            j!��������z��c_��������tE����������|
            tF��������������������r|
            j$��������}|
            j%��������}|
            j��������}ndx}x}}|�&��������������������|����������}|�'��������������������|	|pd|||�����������|tP����������v�r|�j����������������������������t-����������|�j��������|�j��������|�j��������|�j�����������������������������|dk����rdnt����������|dd��������������������|�_)��������|�j��������|���������}
            |
            j ��������p|�j��������|�j��������j��������z��}d�}	d|v�rA	�|��������������������d����������}
            |
            t7����������j��������|
            ����������nd�}	n#�t����������$�r�d�}	Y�nw�xY�wtE����������|
            tF��������������������r|
            j$��������}|
            j%��������}|
            j��������}ndx}x}}|�&��������������������|����������}|�'��������������������|	|||z��|�����������d|v�rtU����������|d�������������������|�_��������nBd|v�rtU����������|d�������������������|�_��������n#|
            j��������|
            j��������|�j��������k����r|
            j��������|�_��������|
            j��������|
            j��������|�j��������k����r|
            j��������|�_��������|
            j ��������|
            j ��������|�j��������k����r|
            j ��������|�_��������|
            j!��������r|�xj��������|
            j!��������z��c_��������|d v�r[|tV����������v�r|����������������������������������|�j����������������������������t-����������|�j��������|�j��������|�j��������|�j�����������������������������|�j��������|���������}
            |
            j��������r|
            j��������|�_��������|
            j��������p|�j��������|�_��������|
            j ��������p|�j��������|�_��������|
            j!��������r|�xj��������|
            j!��������z��c_��������|d!k����rd|�_,��������d|�_���������|tV����������v�r|d"k����rd|�_-��������tE����������|
            tF��������������������r|
            j$��������}|
            j%��������}|
            j��������}ndx}x}}|�&��������������������|����������}|�'��������������������|�j.��������r
            |�j.��������d���������nd�|||#�����������|d$k����rg|�xj/��������dz
            ��c_/��������|��������������������d%|�j0������������������}|J�|�j1����������������������������|�����������|��������������������d|��������������������d��������������������}|r9	�|�j.����������������������������t!����������|���������������������n*#�t����������$�r�Y�nw�xY�w|�j.����������������������������d������������|�j/��������dk����r|�j��������|���������}
            tE����������|
            tF��������������������r|
            j$��������}|
            j%��������}|
            j��������}ndx}x}}|�&��������������������|����������}|�'��������������������d|||#�����������|���������������������d&�����������|����������������������������������|d'k����r|�xj/��������dz
            ��c_/��������d}d(|v�r-|d(���������pd)}	�t����������|����������}n#�t����������$�r�d}Y�nw�xY�w|�j1����������������������������|dz
            �������������|��������������������d%����������pd)|�j2��������|�j/��������<���|��������������������d����������p|��������������������d����������}|r9	�|�j.����������������������������t!����������|���������������������n*#�t����������$�r�Y�nw�xY�w|�j.����������������������������d������������|�j/��������dk����r|�j��������|���������}
            tE����������|
            tF��������������������r|
            j$��������}|
            j%��������}|
            j��������}ndx}x}}|�&��������������������|����������}|�'��������������������d|||#�����������|���������������������d&�����������|����������������������������������|d*k����r|�j��������j3��������}|�j4��������|�j��������_3��������|�j1��������r|�j1��������|�j/��������dz
            �����������}n|�j0��������}tE����������|t��������������������stk����������||�j��������j6������������������}tE����������|tn��������������������s<|dz
            ��}||�j1��������|�j/��������dz
            ��<���|�j2��������|�j/�����������������}tq����������||�����������d+}|�j��������|���������}
            tE����������|
            tF��������������������r|
            j%��������}|
            j��������}|
            j$��������}ndx}x}}|�&��������������������|����������}|�9��������������������|�����������tE����������|t6��������������������rdn|}|�'��������������������|�j.��������r
            |�j.��������d���������nd�||�j/��������z��||,�����������||�j��������_3��������|d-k����r|�j����������������������������t-����������|�j��������|�j��������|�j��������|�j�����������������������������d|v�rtU����������|d�������������������|�_��������d.|v�r=|��������������������d.����������pd}	�t!����������|����������|�_��������nQ#�t����������$�r�Y�nEw�xY�wd/|v�r=|��������������������d/����������pd}	�t!����������|����������|�_��������n#�t����������$�r�Y�nw�xY�wd0|v�r0|��������������������d0����������pd}|:��������������������������������|�_��������|d1k����r|����������������������������������d�}|��������������������d����������p|��������������������d����������}|rP|d���������dk����r(|�j��������j��������t!����������|d�d�������������������z��dz��}nt!����������|����������|�j��������j��������z��}d2|vr|�j;��������rd3nd4}n?|d2���������pd}	�t����������|����������dk����r|�j;��������rd5nd6}nd7}n#�t����������$�r�d7}Y�nw�xY�wt7����������j��������|��������������������d����������pd8����������}	d9|v�rt!����������|d9���������pd����������nd�}t!����������|��������������������d:����������pd����������}ty����������|�j��������|	||�j��������|�j��������j��������z��|�j=��������z��||||;����������|�_>��������|�9���������������������������������|d<k����rW|�j>��������st����������d=����������d>�|@��������������������������������D�������������|�_A��������|�j>��������B��������������������������������|�_C��������|d?v�r|�j>��������r|�jC��������st����������d@|�dA����������dB�|@��������������������������������D�������������|�_	��������||�j	��������dC<���|dDk����rd|�j	��������vr
            d8|�j	��������d<���d|�j	��������dE<���nAt����������|�j>��������jE������������������dk����r$|�jC��������jF��������sd|�j>��������_G��������d|�j>��������_H��������dF|v�r"t����������J��������������������dG|dF���������|�����������d|v�r|d���������pdH}t����������|�j>��������jE������������������dk����r|d���������dk����rt!����������|d�d�������������������}nt!����������|����������}|�j>��������jK��������sg�|�j>��������_K��������tE����������|�j>��������jK��������t��������������������sJ�|�j>��������jK����������������������������|�����������nt����������J��������������������dI||�����������|dJk����rJdK|v�rEt!����������|��������������������d����������pd����������|�j��������j��������z��}t!����������|��������������������dF����������pd����������|�j��������j��������z��} |�jC��������rv|s| rt����������J��������������������dL�����������|�jM��������rt����������J��������������������dM�����������|�jC��������N��������������������|dK���������dN�����������|�j	��������J�d|�j	��������dO<���d�S�|�j��������O��������������������������������}!|�jM��������r|�jM��������}!|�j��������P��������������������|�Q��������������������|dK���������pd����������|!|| |�j
            ��������P�����������|dQk����rW|����������������������������������|�j��������R��������������������|�jS��������t����������|��������������������dR����������pd)����������S�����������|dTk����rt����������jU��������|�j��������_V��������|dUk����rt����������jW��������|�j��������_V��������|dk����rd|�_X��������|��������������������dV����������dk����r<|dWv�r/|����������������������������������|�j�����������������������������������������d�S�d|�_Y��������d�S�d�S�)XNFr��rZ���zbreak-beforert��)r.���r9���r<���Tr*���rB��rt��r��r��r��widthr��%d���rS���)x1y1x2y2rV���r3���r-���rQ��r,���r9��zline-heightr]��ra��)r9��rb��rc��rd��rC��r#���r���r���)r9��rc��rd��rC��r,���)
            r.���r=���rA���r0���r4���r6���r9���rC���rF���rW���r:���r;���r<���rW���rC���)rb��rc��rd��rC��rY���type��� rX���startr��rU���.)rb��rC��rd��rF��r8���z	font-sizer'��facerH��borderHORIZONTAL_LINESSINGLE_TOP_LINEALLNO_HORIZONTAL_LINESr0��CENTERcellpaddingcellspacing)r9��borders_layoutrb��r��paddinggutter_width
            gutter_heightr��z+Invalid HTML: <tr> used outside any <table>c�����������������>����i�|�]\��}}|���������������������������������|S�r��r���.0ri��vs���   r���
            <dictcomp>z-HTML2FPDF.handle_starttag.<locals>.<dictcomp>b��s&����CCC1qwwyy!CCCr���r��thzInvalid HTML: <z> used outside any <tr>c�����������������>����i�|�]\��}}|���������������������������������|S�r��r��r��s���   r���r��z-HTML2FPDF.handle_starttag.<locals>.<dictcomp>g��s&����FFF41a!''))QFFFr���rW��r��r.���heightz4Ignoring unsupported height="%s" specified on a <%s>0zEIgnoring width="%s" specified on a <%s> that is not in the first <tr>r
            ��r��z<Ignoring unsupported "width" / "height" set on <img> elementz$Ignoring unsupported <img> alignment)r
            ��img_fill_widthr��)xwrz��rp��tocpages)r��supr��zbreak-after)r��r��r
            ��)ZrA��dictr��r���r;��appendrh��r��rn��rJ��rB��r^��add_linkrO��ry��epwr_��ri��rB���lineyr5��r���rT���r1��rL���r3��r���coercer#��r,���r3���rQ��r-���r.��r���r?���r@���r`��rj��HEADING_TAGSr:��r���rP��r@��r8��rD��rC��r��rF��rE��r2��r��	ul_prefixis_ttf_fontr/��	ol_prefixr}��r���r��r���TABLE_LINE_HEIGHTrH��r���rM��r��rowrI��r��rowscells_first_row_as_headings_num_heading_rowsr��r��_col_widthslistr9��r��get_ximager��insert_toc_placeholder
            render_tocr���SUP	char_vposSUBrG��r6��)"rV��rW��r��
            attrs_dict	css_stylert��	width_strhr_widthx_startr9��	align_strline_height_strrb��rX��r?���r@���rB���hsizebullet_charr��	start_strprev_text_colorrF��rE��numeric_indent
            font_size_strrT���r��r��borders_strr��spacingr��r��s"���                                  r���handle_starttagzHTML2FPDF.handle_starttag��s4���!,0KK
            #JNN7$;$;$ArBB	$$$==((F22!!!H((***/!!dj&<"DJsO#::"6*0bDI
            49~~ H--4-88		�
            �
            �
            
            $;;!!$'''$;;!!!!
            
            gz~~g/F/FGGI�
            (R=C''#x|eIcrcN.C.CCcIHH$Y//$(*<HH8<h'48<(+Ba*GGGHMM8:X%8:	�
            �
            �
            �
            �
            !!$'''#::##+!/ -/	��
            �
            �
            �&*E*$$! *w 7 7I7@7LEL333RVEE!�!�!�! EEE!'mmz~~m<<�O�,0K�
            ''"'"8"8KK!�'�'�'"&KKK',I*y$//Q/Q"+/+	0@DDT0T0T#,#3  ,1BdFW1W1W$-$5!!�
            9""i&88"")Y//�
            5$-$-$-14448h//99H'.3#&�
             �
            �
            �
            �,##+!/ -/	��
            �
            �
            �'*Wnn#c!""g,,D,I&;$*;txzIEE*$$! *w 7 7I7@7LEL333RVEE!�!�!�! EEE!)Y//�
            5$-$-$-14448h//99H#&.	�
             �
            �
            �
            �)##"29W3E"F"FJ&&�#3:g3F"G"G,DO1S1S"+/+	0@DDT0T0T#,#3  ,1BdFW1W1W$-$5!!�
            9""i&88""�
            �
            �
            �j  ##%%%##+!/ -/	��
            �
            �
            �,I�
            2"+/(/C43CD ) 1 FT5FD!�
            9""i&88""e||&*#$(!j  $;;�,0D(i33�9(1H(1H(1HH588H8x(33H==##6:6LV.r22RV'"*#
            �$����$;;KK1KK$..1DEEK***K{+++'mmz~~m<<�O��
            4*11%2H2HIIII!���D�&--d333{a OC0	i33�9(1H(1H(1HH588H8x(33H==## !'"*#	�$����%%h///!!!$;;KK1KKE*$$&w/63		NNEE!���EEEKuqy)))(2v(>(>(E#DL%'mmM::�jnn?�?O��
            4*11%2H2HIIII!���D�&--d333{a OC0	i33�9(1H(1H(1HH588H8x(33H==## !'"*#	�$����%%h///!!!$;;"h1O"&"6DH{�
            -T[1_5�,fc**�
            A"648+?@@fc**�
            :!/5DK!O,,t{3%gv66999,I)Y//�
            5$-$-$-14448h//99HHHX$.x$?$?MSSXN262HRD*2..d%3&
            �
             �
            �
            �
            �#2DH&==##+!/ -/	��
            �
            �
            �*$$"2:g3F"G"Gi'' )
            
            k : : @b
            (-m(<(<D%%!���D:%% *v 6 6 <"
            (-m(<(<D%%!���D##(nnV44:#.#4#4#6#6 '>>!!!%)E!
            
            g..I*..2I2II�
            :R=C'' HL53B3+@+@@3FEE!),,txz9Ez))�1+&&*��)28b
            ,;''!++� $97EE!6�'�*0!�,�,�,%+NNN,L!8!8!DHEEE�!J..�j/41555�
            
            �JNN=99>Q??G- -
            :T=SS$%	�	�	DJ�
            HHJJJ$;;:�
            S#$QRRRCC
            0@0@0B0BCCCDG!Z^^--DN,:�
            TT^�
            T#$Rc$R$R$RSSSFF:3C3C3E3EFFFDJ #DJud{{$*,,*2DJw'"&
            3TZ_%%**4>3G*
            ��
            1�01
            ,:%%Jx(��
            �*$$&w/63	tz''1,, }++ %in 5 5 %i 0 0:1�413
            .%dj&<dCCCCCJ*11%8888NN_!��
            �%<<EZ//*..116Q77$(*DE:>>(338q99DHJFF~�
            
            �F�NNV���:�KNN#IJJJ##
            5(9$#OOOz---)-
            :&#x~~//Az�
            JHNNz%06B77Y�
            �
            �
            �
            �%<<!!!H++s:>>'+B+B+Ic'J'J�
            ,�
            �
            �
            �%<<!)DH%<<!)DH'>>!DN==''611)))##%%%,,.....37000
            �21s���4C<�<
            D	D	�-J.�.J=<J=.K>�>L
            L
             -S�SS!'`	�	
            ``;d�dd'f3�3
            g�?g�r�
            r)(r)s�
            s*)s*!w7�7xxc�����������������~
            ���|�j���������rj||�j���������d���������k����rY|�j���������d���������|�j��������v�rE|�j������������������������������������������|�j���������r%||�j���������d���������k����r|�j���������d���������|�j��������v�E|�j���������s#|�j��������rt������������������������������d|�����������nY||�j���������d���������k����r|�j������������������������������������������n.|�j��������r't������������������������������d||�j���������d��������������������|dk����rd|�_��������|dk����r|�j��������rc|�j����������������������������������������}|j��������p|�j	��������|�_	��������|j
            ��������p|�j��������|�_��������|j��������pt����������j��������|�_��������|j��������|�_��������|����������������������������������d�|�_��������|t(����������v�rd�|�_��������|�j��������rc|�j����������������������������������������}|j��������p|�j	��������|�_	��������|j
            ��������p|�j��������|�_��������|j��������pt����������j��������|�_��������|j��������|�_��������|����������������������������������d|�_��������|dv�r|�j��������rc|�j����������������������������������������}|j��������p|�j	��������|�_	��������|j
            ��������p|�j��������|�_��������|j��������pt����������j��������|�_��������|j��������|�_��������|d	k����rd
            |�_��������d
            |�_��������|t2����������v�r|����������������������������������|dv�r{|����������������������������������|dk����r|�j����������������������������|�j�������������������|�xj��������d
            z��c_��������|�j�����������������������������������������|�j�����������������������������������������|dk����r=|�j��������J�|�j�����������������������������������������d�|�_��������|� ���������������������������������|dk����rd�|�_!��������d�|�_"��������|dv�r|�j#��������|�j!��������|�j"��������J�d|�j#��������vrtI����������|�j#��������%��������������������d����������p|�j!��������%��������������������dd���������������������}|rtM����������|����������nd�}tO����������|�j#��������%��������������������dd��������������������}tO����������|�j#��������%��������������������dd��������������������}|�j"��������(��������������������d|||�����������d�|�_#��������|dk����rj|�j��������rc|�j����������������������������������������}|j��������p|�j	��������|�_	��������|j
            ��������p|�j��������|�_��������|j��������pt����������j��������|�_��������|j��������|�_��������|dk����rtR����������j*��������|�j+��������_,��������|dk����rtR����������j*��������|�j+��������_,��������|dk����r	d
            |�_-��������d�S�d�S�)Nr��z8Unexpected HTML end tag </%s>, start tag may be missing?z1Unexpected HTML end tag </%s>, start tag was <%s>r*���rZ���rV���T)r.���r=���rA���r0���r6���r9���rC���rF���rW���r:���r;���r<���rW���F)rY���rX���rX���r���rH��r��r��r��r��)r)��r��r��r��)ro��r��r��r��r8���r��r��r#���).r;��HTML_UNCLOSED_TAGSpopr!��r��r��rB��r5��r3���rT���rQ��rL���r-���r���r0��r1��r,���r3��rh��r9��r��r:��r8��r@��rA��rP��rE��rC��rD��rF��rH��rm��r}��r��rI��rJ��r���r���r���r^��r��r���LINEr��r��rG��)rV��rW��	font_facer��r��r��r��s���       r���
            handle_endtagzHTML2FPDF.handle_endtag��sT���	#t'+++ $(???  """	�
            	#t'+++ $(???��	-�
            NPS���D$R(
            (
            (  """"
            
            +�	NNC $
            �
            �
            
            �#::DI#::�
            2 ,0022	#,#3#Gt7G $-$5$J9J!%.%7%L<;L""+/!!!DJ,!%D�
            2 ,0022	#,#3#Gt7G $-$5$J9J!%.%7%L<;L""+/!!!#'D �
            
            �
            
            �
            
            ��
            2 ,0022	#,#3#Gt7G $-$5$J9J!%.%7%L<;L""+/e||&+#$)!j  ##%%%,!!!d{{  ---KK1KK"&&(((KOO'>>:)))JDJHHJJJ$;;DG!DN,
            &G'N../�++*JNN9--MY1M1M��9@IG4444TdjnnY<<==djnnY<<==##5'7�$����DJ&==�
            2 ,0022	#,#3#Gt7G $-$5$J9J!%.%7%L<;L""+/%<<!)DH%<<!)DH'>>"DNNN�>r���c��������������������t������������������������������������������|�����������|�j��������rH|�j��������d���������|�j��������v�r4|�j�����������������������������������������|�j��������r|�j��������d���������|�j��������v�4|����������������������������������|�j��������r/|�j��������r*t������������������������������d|�j��������d��������������������d�S�d�S�d�S�)Nr��zMissing HTML end tag for <%s>)	r,��feedr;��r��r��rh��r!��r��r��)rV��r~��r[��s���  r���r��zHTML2FPDF.feed)��s����
            T�	#4#3B#74;R#R#R  """��	#4#3B#74;R#R#R�	R >�	RNN:D<LR<PQQQQQ	R�	R�	R�	Rr���c��������������������t����������|�j��������|�j��������|�j��������|�j������������������}|�j��������d���������}|j��������r|j��������|�_��������|j��������p|�j��������|�_��������|j��������p|�j��������|�_��������|j	��������r|�xj��������|j	��������z��c_��������|�
            ��������������������||�j�������������������|j��������p|�j��������|�_��������|j��������p|�j��������|�_��������|j	��������pt����������j
            ��������|�_��������|j��������|�_��������dS�)zInsert a hyperlinkr��r*���rr��N)r���rT���r1��rL���r3��r#��r,���r3���rQ��r-���ry��rB��r���r0��)rV��ro��
            prev_stylerX��s���    r���r��zHTML2FPDF.put_link1��s����#'%/	
            �
            �
            
            �OC(	?�	.'oDO$+?t/?%-B1B�	5)"44d333%,@0@&.C$2C'0EL4E$*r���outlinec�����������	������t���|����������������������������������|D�]}|��������������������|j������������������}d|j��������z��dz���d|j���������}|ddd|j��������dz��z
            ��t����������|j������������������z
            ��z���d|j���������z
            ��}|��������������������|j��������|j��������|t����������j
            ��������t����������j��������|�����������dS�)zUThis method can be overridden by subclasses to customize the Table of Contents style.r��r[���rS���r��<���)r��rz��ro��new_xnew_yrp��N)
            r|��r��page_numberlevelnamer��
            multi_cellr��	font_sizer���LMARGINr���NEXT)rV��r��r��sectionrp��ro��s���      r���r��zHTML2FPDF.render_tocH��s�����	�	G<<W%8<99DGM)A->>>>D`rGM!O3c',6G6GGH``7K^```DNN'-li
            �
            �
            �
            �
            �
            		�	r���messagec����������������� ����t����������|����������r��)RuntimeError)rV��r
            ��s���  r���errorzHTML2FPDF.errorY��s����7###r���)Nra��r���r���r���rZ���)r���Nr��)%__name__
            __module____qualname____doc__r��r��r���r/��r	���r_��boolr
            ���r��r���r-��staticmethodr���r
            ���r���r`��rj��rh��r^��ry��r}��r��r��r��tupler��r��r��r��r���r��r
            ��
            __classcell__r[��s���@r���r
            ��r
            ��H��s�������J
            �+:/)-)-&+$&148'+*.2659"!&YU�YU
            YU�SE3J'YU� 	YU
            � YU� $
            YU�YU�$YU� S%Z 01YU� }YU�$(YU�d3:./YU�T#y.12YU�YU�YU �
            !YU�YU�YU�YU�YU�YUv�c�eE5L.A����\�04'* &'%�%eUl+,%�e_%�	%
            �%�eUl#
            %�%�
            %�%�%�%@5�5�5�5$�$S�$s0C�$t�$�$�$�$4+�+Xe_�+�+�+�+�+X"�X"�X"�X"�X"�X"t(�(�(�(�(�(P83�P8tE#sTz/4J/K�P8PT�P8�P8�P8�P8do#�o#�o#�o#�o#�o#bR�R�R�R�R�R�R�R+S�+T�+�+�+�+.f�tN/C�����"$S�$T�$�$�$�$�$�$�$�$r���r
            ��r��r���
            in_tag_stylesc�����������	������X���t����������d����������|�j��������z��}i�}|��������������������������������D�]{\��}}t����������|t��������������������r\|��������������������|j��������|z��t����������|j��������t����������t����������f����������r
            |j��������|z��n|j��������|j
            ��������|z������������||<���v|||<���||S�)Nmm)r?���rB���r@���)r���ri��rM��r.��r���rU��r?���rB���r^��r_��r@���)r��r��conversion_factorout_tag_stylestag_namerX��s���      r���rK��rK��]��s�����)..668N,2244�1�1)i++�	1'0'8'8"+.??�")"4sElCC,I&):::"+"+.??�(9�(�(N8$$�(1N8$$r���ul_typer��c���������������������|�dk����r|rt�����������nt����������S�|�dk����r|rt����������nt����������S�t	����������|�����������dk����r|�S�t����������d|������������)Nr��circler���Unsupported type: )BULLET_UNICODEMESSAGE_WAITING_WIN1252RING_OPERATOR_UNICODEDEGREE_SIGN_WIN1252r��rN��)r��r��s���  r���r��r��r��sg����&!,I~~2II((3L$$9LL
            7||q
            <7<<
            =
            ==r���rE��indexc��������������������|�dk����r|S�|�dk����rt�����������|dz
            �����������S�|�dk����rt����������|dz
            �����������S�|�dk����rt����������|����������S�|�dk����r!t����������|������������������������������������������S�t	����������d|������������)Nr��r*���r���Ar��r9���r ��)r���r���r���r���rN��)rE��r%��s���  r���r��r��|��s����#~~#~~uqy))#~~uqy))#~~#~~%%'''
            <7<<
            =
            ==r���c�������������������0�����e�Zd�ZdZdededdf�fdZ�xZS�)	HTMLMixinzc
                [**DEPRECATED since v2.6.0**]
                You can now directly use the `FPDF.write_html()` method
                argskwargsr���Nc����������������������t����������������������j��������|i�|�t����������j��������dt����������t���������������������������������d�S�)Nz[The HTMLMixin class is deprecated since v2.6.0. Simply use the FPDF class as a replacement.r*��)r,��r-��rR��rS��rT��r���)rV��r*��r+��r[��s���   r���r-��zHTMLMixin.__init__��sU����$)&)))
            >�
            &((
            	
            �	
            �	
            �	
            �	
            �	
            r���)r��r��r��r��r���r-��r��r��s���@r���r)��r)����s\���������
            	
            c�	
            S�	
            T�	
            �	
            �	
            �	
            �	
            �	
            �	
            �	
            �	
            �	
            r���r)��)r_���)Lr��loggingrerR��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���rH��r���r���utilr���r���fpdfr���text_regionr ���	getLoggerr��r��r"��r!��r$��r#��r��CrL��INLINE_TAGSrP��setkeysjoin	_WS_CHARScompiler��r���r/��r���r��r��r
            ��rK��r��r��r^��r��r)��r��r���r���<module>rB�����s�����				��"�"�"�"�"�"�3�3�3�3�3�3�3�3�@�@�@�@�@�@�@�@�@�@�@�@�@�@�(�(�(�(�(�(��������������=�<�<�<�<�<�<�<�<�<�<�<�<�<�!�!�!�!�!�!�&�&�&�&�&�&�&�&�#�#�#�#�#�#���������-�-�-�-�-�-�-�-�'&&&&&&		8	$	$ ���<
            .	5	5	5.�6	"	"	".�HHI&&&	.
            �
            88_---.�	((I
            &
            &
            &
            .�HHJJ.�9	%	%	%.�?	+	+	+.�
            hh'''.�;	'	'	'.�)))a!DDD.�
            iieg>>>.�	))R
             
             
             . �	))sZ
            8
            8
            8!."�YY	��#..�	))#B��/.4�	))#B��5.:�)#B���)#B���)#B���)#A
            ���)Q
            +
            +
            +	9ji@@@
            )Q
            
            
            
            )Q
            
            
            [.�.�.�^�O
            �
            �
            
            �	J##k***ss3E3J3J3L3L/M/MMMMM�
            GG
            �
            	>�bj*Y***++UYU
            IU�	U�)	U
            �IU�
            U�YU�IU�	U�9U�YU�U�IU�9U�IU �I!U"�I#U�U$�)%U&�Y'U(�9)U*�	+U,�Y-U.�Y/U0�1U2�i3U4�5U6�7U8�9U:�Y;U<�y=U>�
            i?U@�iAUB�CUD�iEU�U�UF�YGUH�	IUJ�yKUL�yMUN�OUP�QUR�SUT�UUV�iWUX�iYUZ�y[U\�]U^�)_U`�)aUb�
            icUd�
            ieUf�YgU�U�Uh�IiUj�IkUl�ymUn�IoUp�)qUr�ysUt�9uUv�9wUx�IyUz�){U|�I}U~�)U@�AUB�)CUD�9EUF�
            iGUH�YIU�U�UJ�	KUL�	MUN�OUP�9QUR�YSUT�iUUV�)WUX�YUZ�Y[U\�I]U^�_U`�aUb�
            icUd�yeUf�gUh�IiUj�kU�U�Ul�
            9mUn�oUp�qUr�ysUt�
            iuUv�wUx�YyUz�y{U|�}U~�IU@�AUB�CUD�	EUF�)GUH�
            iIUJ�YKUL�)MU�U�UN�YOUP�QUR�	SUT�YUUV�)WUX�YYUZ�Y[U\�)]U^�_U`�)aUb�
            icUd�IeUf�YgUh�IiUj�ykUl�
            9mUn�yoU�U�Up�yqUr�	sUt�uUv�
            iwUx�yyUz�Y{U|�)}U~�9U@�
            iAUB�CUD�IEUF�IGUH�IUJ�9KUL�	MUN�
            iOUP�QU�UR� 
            
            iU�U�U
            r�%+�+C=+
            i*$%+�+�+�+
            �
            S#X�
            �
            �
            �
            R$�R$�R$�R$�R$
            �R$�R$�R$j 	 $S(Y*>%> ?	#x)#
            #$���*>s�>�>#�>�>�>�>>s�>3�>39�>�>�>�>
            �
            �
            �
            �
            �
            �
            �
            �
            �
            r���