
    Th'                    j   d dl mZ d dlmZ d dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dl
Z
ddlmZ ddlmZ ddlmZmZmZmZmZ dd	lmZmZmZmZmZmZmZmZm Z  d
Z!ej"        #                    ej"        $                    e%          d          Z&d a'da(da)d Z* G d de+          Z,dS )    )division)datetimewrapsN   )
TTFontFile)fpdf_charwidths)substrsprintfprint_rUTF8ToUTF16BEUTF8StringToArray)	PY3KpickleurlopenImage
basestringunicode	exceptionbhashpathz1.7.2fontc                 (    |t                      | <   d S )N)globals)varvals     Y/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/fpdf/fpdf.py
set_globalr   %   s    GIIcNNN    c                      e Zd ZdZdddZd ZdedZd	 Zd
 Zd Z	dfdZ
dgdZd Zd Zd Zd Zd Zd ZdhdZd Zd Zd ZdidZd Zd Zd Zdjd Zdjd!Zdjd"Zd# Zd$ Zed%             Zdkd'Z edld)            Z!edid*            Z"edid+            Z#dmd,Z$dnd-Z%d. Z&d/ Z'dod0Z(d1 Z)edid2            Z*edpd4            Z+d5 Z,edqd6            Z-edrd8            Z.edsd9            Z/edtd:            Z0edid;            Z1d< Z2d= Z3d> Z4d? Z5d@ Z6dsdAZ7dB Z8dC Z9dD Z:dE Z;dF Z<dG Z=dH Z>dI Z?dJ Z@dK ZAdL ZBdM ZCdN ZDdO ZEdP ZFdQ ZGdR ZHdS ZIdT ZJdU ZKdV ZLdW ZMdX ZNdY ZOdZ ZPd[ ZQd\ ZRd] ZSedud`            ZTedvdc            ZUd3S )wFPDFzPDF Generation classPmmA4c                    |                                   i | _        d| _        d| _        d| _        i | _        i | _        d| _        i | _        i | _	        i | _
        i | _        i | _        i | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        ddd	d
ddddddddddd| _        |dk    rd| _        nB|dk    rd| _        n4|dk    rd| _        n&|dk    rd| _        n|                     d|z              t=          |t>                    rt|                                 }|dk    rd }n<|d!k    rd"}n3|d#k    rd$}n*|d%k    rd&}n!|d'k    rd(}n|                     d)|z              |d         | _!        |d         | _"        n*|d         | j        z  | _!        |d         | j        z  | _"        | j!        | j        z  | _#        | j"        | j        z  | _$        |                                 }|d*k    s|d+k    r d,| _%        | j!        | _&        | j"        | _'        nD|d-k    s|d.k    r d/| _%        | j"        | _&        | j!        | _'        n|                     d0|z              | j%        | _(        | j&        | j        z  | _)        | j'        | j        z  | _*        d1| j        z  }| +                    ||           |d2z  | _,        d3| j        z  | _-        | .                    dd|z             | /                    d4           | 0                    d           d5| _1        d S )6Nr          0 G0 gCourierzCourier-BoldzCourier-ObliquezCourier-BoldOblique	HelveticazHelvetica-BoldzHelvetica-ObliquezHelvetica-BoldObliquezTimes-Romanz
Times-BoldzTimes-ItaliczTimes-BoldItalicSymbolZapfDingbats)couriercourierBcourierI	courierBI	helvetica
helveticaB
helveticaIhelveticaBItimestimesBtimesItimesBIsymbolzapfdingbatsptr   r#   gjZ@cmgbX<@ing      R@zIncorrect unit: a3)QO@g33333@a4)
ףp=@rA   a5)gףp=
Oz@rC   letter)d  i  legal)rF   i  zUnknown page format: pportraitr"   l	landscapeLzIncorrect orientation: gY<@      $@g/$?	fullwidth1.3)2	_dochecksoffsetspagenbufferpagesorientation_changesstatefonts
font_filesdiffsimages
page_linkslinks	in_footerlastwlasthfont_family
font_stylefont_size_pt	underline
draw_color
fill_color
text_color
color_flagwsangle
core_fontskerror
isinstancer   lowerfw_ptfh_ptfwfhdef_orientationw_pth_ptcur_orientationwhset_marginsc_margin
line_widthset_auto_page_breakset_display_modeset_compressionpdf_version)selforientationunitformatmargins        r   __init__zFPDF.__init__,   s   	
!# 






#,Rc  qF#1AOb  rI!<Zl^= =
 ::DFF4ZZDFF4ZZDFF4ZZDFFJJ)$.///fZ(( 	(<<>>Ft||'&&!! !

269:::ayDJayDJJay'DJay'DJ
46!
46!%%''{J66!$D jDIjDII#k!9!9!$D jDIjDIIJJ0<===!1yyTV|'''TkTV  1V8,,,k***Qr   c                 <     t                      fd            }|S )z$Decorator to protect drawing methodsc                     | j         s,|                    d          s|                     d           d S  | g|R i |S )N
split_onlyz/No page open, you need to call add_page() first)rR   getrm   )r   argskwargsfns      r   wrapperz FPDF.check_page.<locals>.wrapper   sY    9 1VZZ%=%= 1

LMMMMMr$0000000r   r   )r   r   s   ` r   
check_pagezFPDF.check_page   s3    	r	1 	1 	1 	1 
	1
 r   c                 @    || _         || _        |dk    r|}|| _        dS )zSet left, top and right marginsr   N)l_margint_marginr_margin)r   lefttoprights       r   rz   zFPDF.set_margins   s)    "99Er   c                 V    || _         | j        dk    r| j        |k     r|| _        dS dS dS )zSet left marginr   N)r   rR   xr   r   s     r   set_left_marginzFPDF.set_left_margin   s4    9Q;;46&==DFFF ;==r   c                     || _         dS )zSet top marginN)r   r   s     r   set_top_marginzFPDF.set_top_margin       r   c                     || _         dS )zSet right marginN)r   r   s     r   set_right_marginzFPDF.set_right_margin   r   r   r   c                 @    || _         || _        | j        |z
  | _        dS )z.Set auto page break mode and triggering marginN)auto_page_breakb_marginry   page_break_trigger)r   autor   s      r   r}   zFPDF.set_auto_page_break   s%    ! $vr   
continuousc                    |dk    s'|dk    s!|dk    s|dk    st          |t                    s|| _        n|                     d|z              |dk    s|dk    s|dk    s|dk    r	|| _        d
S |                     d	|z              d
S )zSet display mode in viewer
        
        The "zoom" argument may be 'fullpage', 'fullwidth', 'real',
        'default', or a number, interpreted as a percentage.fullpagerN   realdefaultzIncorrect zoom display mode: singler   twozIncorrect layout display mode: N)rn   r   	zoom_moderm   layout_mode)r   zoomlayouts      r   r~   zFPDF.set_display_mode   s     t[00D&LLD)OO[efjku[v[vODNNJJ6t;<<<8v|33vu}}PYHYHY#DJJ8?@@@@@r   c                     || _         dS )zSet page compressionN)compress)r   r   s     r   r   zFPDF.set_compression       r   c                     || _         dS )zTitle of documentN)title)r   r   s     r   	set_titlezFPDF.set_title   s    


r   c                     || _         dS )zSubject of documentN)subject)r   r   s     r   set_subjectzFPDF.set_subject       r   c                     || _         dS )zAuthor of documentN)author)r   r   s     r   
set_authorzFPDF.set_author   s    r   c                     || _         dS )zKeywords of documentN)keywords)r   r   s     r   set_keywordszFPDF.set_keywords   r   r   c                     || _         dS )zCreator of documentN)creator)r   r   s     r   set_creatorzFPDF.set_creator   r   r   {nb}c                     || _         |S )z)Define an alias for total number of pages)str_alias_nb_pages)r   aliass     r   alias_nb_pageszFPDF.alias_nb_pages   s     %r   c                 &    t          d|z             )zFatal errorzFPDF error: )RuntimeError)r   msgs     r   rm   z
FPDF.error   s    >#-...r   c                     d| _         dS )zBegin documentr   NrW   r   s    r   openz	FPDF.open       


r   c                     | j         dk    rdS | j        dk    r|                                  d| _        |                                  d| _        |                                  |                                  dS )zTerminate document   Nr   r   )rW   rR   add_pager^   footer_endpage_enddocr   s    r   closez
FPDF.close   sc    :q==F9a<<MMOOOr   r'   c                 t   | j         dk    r|                                  | j        }| j        r| j        dz   }n| j        }| j        }| j        }| j        }| j        }| j	        }| j
        }	| j        dk    r6d| _        |                                  d| _        |                                  |                     |           |                     d           || _        |                     t#          d|| j        z                       |r|                     |||           || _        |dk    r|                     |           || _        |dk    r|                     |           || _	        |	| _
        |                                  | j        |k    r2|| _        |                     t#          d|| j        z                       |r|                     |||           | j        |k    r|| _        |                     |           | j        |k    r|| _        |                     |           || _	        |	| _
        dS )	zStart a new pager   Ur   z2 J%.2f wr)   r*   N)rW   r   ra   rd   rb   rc   r|   re   rf   rg   rh   rR   r^   r   r   
_beginpage_outr   rl   set_fontheader)
r   r   familystylesizelwdcfctccfs
             r   r   zFPDF.add_page   s   :q==IIKKK> 	$Oc)EEOE?????9Q;;DNKKMMMDNMMOOO$$$		%		'(2df9--... 	-MM&t,,,u99IIbMMMu99IIbMMM?BDOIIghr$&y11222 	-MM&t,,,?BDOIIbMMM?BDOIIbMMMr   c                     dS )z4Header to be implemented in your own inherited classN r   s    r   r   zFPDF.header4      r   c                     dS )z4Footer to be implemented in your own inherited classNr   r   s    r   r   zFPDF.footer8  r   r   c                     | j         S )zGet current page number)rR   r   s    r   page_nozFPDF.page_no<  s
    yr   c                     |dk    r|dk    r|dk    s|dk    rt          d|dz            | _        n t          d|dz  |dz  |dz            | _        | j        dk    r|                     | j                   dS dS )z%Set color for all stroking operationsr   r   z%.3f G     o@z%.3f %.3f %.3f RGN)r   re   rR   r   r   rgr   s       r   set_draw_colorzFPDF.set_draw_color@  s    qDDQTTaddq"uu#HQuW55DOO#$7%%%PPDO9Q;;IIdo&&&&& ;r   c                     |dk    r|dk    r|dk    s|dk    rt          d|dz            | _        n t          d|dz  |dz  |dz            | _        | j        | j        k    | _        | j        dk    r|                     | j                   dS dS )z$Set color for all filling operationsr   r   %.3f gr   %.3f %.3f %.3f rgN)r   rf   rg   rh   rR   r   r   s       r   set_fill_colorzFPDF.set_fill_colorI  s    qDDQTTaddq"uu#HQuW55DOO#$7%%%PPDO$/99Q;;IIdo&&&&& ;r   c                     |dk    r|dk    r|dk    s|dk    rt          d|dz            | _        n t          d|dz  |dz  |dz            | _        | j        | j        k    | _        dS )zSet color for textr   r   r   r   r   N)r   rg   rf   rh   r   s       r   set_text_colorzFPDF.set_text_colorS  sp    qDDQTTaddq"uu#HQuW55DOO#$7%%%PPDO$/9r   c                    |                      |          }| j        d         }d}t          |          }| j        rc|D ]_}t	          |          }t          |          |k    r|||         z  }0| j        d         d         r|| j        d         d         z  }Z|dz  }`n2t          d|          D ]!}||                    ||         d          z  }"|| j        z  dz  S )z)Get width of a string in the current fontcwr   descMissingWidthi       @@)normalize_textcurrent_fontlenunifontsubsetordranger   	font_size)r   sr   rx   rJ   charis          r   get_string_widthzFPDF.get_string_width[  s    ""T"

a&& 	$ 	 	4yyr77T>>DMAA'/? *62>BBAA HAA	 1a[[ $ $RVVAaD^^#&&r   c                     || _         | j        dk    r-|                     t          d|| j        z                       dS dS )zSet line widthr   r   N)r|   rR   r   r   rl   )r   widths     r   set_line_widthzFPDF.set_line_widthq  sC    9Q;;IIghuTV|4455555 ;r   c           
          |                      t          d|| j        z  | j        |z
  | j        z  || j        z  | j        |z
  | j        z                       dS )zDraw a linez%.2f %.2f m %.2f %.2f l SNr   r   rl   ry   )r   x1y1x2y2s        r   linez	FPDF.linew  s]     			'5biDF@RSUVZV\S\^b^deg^gimio]oppqqqqqr   Fc                     |r$|r"t          d|| j        z  || j        z            }nd}|                     |           d S )Nz[%.3f %.3f] 0 dz[] 0 d)r   rl   r   )r   dash_lengthspace_lengthr  s       r   	_set_dashzFPDF._set_dash|  sK     	< 	);tv+=|DF?RSSAAA		!r   r   c                     |                      ||           |                     ||||           |                                   dS )zDraw a dashed line. Same interface as line() except:
           - dash_length: Length of the dash
           - space_length: Length of the space between dashesN)r  r  )r   r  r  r  r  r  r  s          r   dashed_linezFPDF.dashed_line  sF    
 	{L111		"b"b!!!r   c           
          |dk    rd}n|dk    s|dk    rd}nd}|                      t          d|| j        z  | j        |z
  | j        z  || j        z  | | j        z  |                     dS )	zDraw a rectangleFfFDDFBSz%.2f %.2f %.2f %.2f re %sNr  )r   r   yrx   ry   r   ops          r   rectz	FPDF.rect  s     #::BBD[[E4KKBBB		'5ahq$&?PQRSWSYQY[\Z\]a]cZcdfgghhhhhr   c                    |dk    rd}n|dk    s|dk    rd}nd}||dz  z   }||dz  z   }|dz  }	|dz  }
dt          j        d	          d
z
  z  |	z  }dt          j        d	          d
z
  z  |
z  }|                     t          d||	z   | j        z  | j        |z
  | j        z  ||	z   | j        z  | j        ||z
  z
  | j        z  ||z   | j        z  | j        ||
z
  z
  | j        z  || j        z  | j        ||
z
  z
  | j        z  	  	                   |                     t          d||z
  | j        z  | j        ||
z
  z
  | j        z  ||	z
  | j        z  | j        ||z
  z
  | j        z  ||	z
  | j        z  | j        |z
  | j        z                       |                     t          d||	z
  | j        z  | j        ||z   z
  | j        z  ||z
  | j        z  | j        ||
z   z
  | j        z  || j        z  | j        ||
z   z
  | j        z                       |                     t          d||z   | j        z  | j        ||
z   z
  | j        z  ||	z   | j        z  | j        ||z   z
  | j        z  ||	z   | j        z  | j        |z
  | j        z  |                     dS )zDraw a ellipser  r  r  r  r  r         @gUUUUUU?r&   r   z+%.2f %.2f m %.2f %.2f %.2f %.2f %.2f %.2f cz%.2f %.2f %.2f %.2f %.2f %.2f cz"%.2f %.2f %.2f %.2f %.2f %.2f c %sN)mathsqrtr   r   rl   ry   )r   r   r   rx   ry   r   r!  cxcyrxrylxlys                r   ellipsezFPDF.ellipse  s    #::BBD[[E4KKBBB3Y3YsUsUdill1n%b(dill1n%b(		'GUDFNTVBY.UDFNTVRU^TV3UDFNTVRU^TV3tvI2.	0 0 	1 	1 	1
 			';UDFNTVRU^TV3UDFNTVRU^TV3UDFNTVBY.0 0 	1 	1 	1 			';UDFNTVRU^TV3UDFNTVRU^TV3tvI2.0 0 	1 	1 	1 			'>UDFNTVRU^TV3UDFNTVRU^TV3UDFNTVBY.	  	 	 	 	 	r   c                    |                                 }|dk    r.|                    dd          |                                 z   dz   }|dk    rd}|                                }|dk    rd}||z   }|| j        v rdS |r!t          j                            |          r|}nt          rht          j                            t          j                            t          |                    r&t          j                            t          |          }nt          rht          j                            t          j                            t          |                    r&t          j                            t          |          }nt          d	|z            d}t          d
k    r)t          j                            |          d
         dz   }nCt          dk    r6t          j                            t          t          |          dz             }nd}|rst          j                            |          rTt          |d          }		 t!          j        |	          }
|	                                 nx# |	                                 w xY wt'                      }|                    |           t+          t-          |j        d
                    t+          t-          |j        d
                    t+          t-          |j        d
                    |j        dt+          t-          |j        d
         d
                    dt+          t-          |j        d         d
                    dt+          t-          |j        d         d
                    dt+          t-          |j        d         d
                    d	t+          |j                  t+          t-          |j        d
                    t+          t-          |j        d
                    d}t?          j         dd|j!                  d|t-          |j"                  t-          |j#                  ||t	          j$        |          j%        |j&        d	}
|rm	 t          |d          }	t!          j'        |
|	           |	                                 n2# tP          $ r% tS                      j*        tT          j+        k    s Y nw xY w~tY          | d          rt[          t]          d
d                    }nt[          t]          d
d                    }t_          | j                  dz   |
d         |
d         |
d         |
d         |
d         |
d         |
d         |||d | j        |<   |
d!         d|d"| j0        |<   ddi| j0        |<   dS t          |          }	 t!          j        |          }
|                                 n# |                                 w xY wd#t_          | j                  dz   i| j        |<   | j        |         1                    |
           td          rpd
}t_          | j3                  }t]          d|dz             D ]}| j3        |         td          k    r|} n|d
k    r|dz   }td          | j3        |<   || j        |         d$<   |
4                    d%          }|r7tj          d&k    rd'tl          i| j0        |<   dS tn          tp          d(| j0        |<   dS dS ))zAdd a TrueType or Type1 fontr'    z.pklarialr3   IBBINzTTF Font file not found: %sr   r&   rb[r   r   ]AscentDescent	CapHeightFlagsFontBBoxItalicAngleStemVr   z[ ()]TTF)	nametyper   uputttffilefontkeyoriginalsizer   wbr   9       r@  r?  r   rA  rB  r   rC  )r  r@  r?  r   rA  rB  r   rC  rD  subsetunifilenamerE  )length1r@  rC  r  difffilenameTrueTyperK  )rK  length2)9ro   replaceupperrX   ospathexistsFPDF_FONT_DIRjoinSYSTEM_TTFONTSr   FPDF_CACHE_MODEsplitextFPDF_CACHE_DIRr   r   r   loadr   r   
getMetricsintroundascentdescent	capHeightflagsbboxitalicAnglestemVdefaultWidthresubfullNameunderlinePositionunderlineThicknessstatst_size
charWidthsdumpIOErrorr   errnoEACCEShasattrlistr  r   rY   updaterL  rZ   r   r@  rE  size1size2)r   r   r   fnameunirD  ttffilenamer?  rJ  rs   	font_dictttfr   sbarrfontfilednbr  rM  s                      r   add_fontzFPDF.add_font  ss   RKKNN3r**U[[]]:VCEg FTMME,dj  F i	Aw~~e$$ 	J# Jrw||M5AABBJ gll=%@@  Jrw||NEBBCCJ gll>5AA"#@5#HIIID!## g..{;;A>G A%% gll>[))F24 4 # +rw~~k:: ++t,, &BIHHJJJJBHHJJJJ ll{+++!%
A"6"677"5a#8#899!$U3=!%<%<!=!= YYE#(1+q112222E#(1+q112222E#(1+q112222E#(1+q112222	!4
 $'s#7#7 sy!!4!455$'c.>(B(B$C$C   F7B==!  566 677*&$&GK$8$8$@.
 
	  ""!+t44Ir222



" " " "({{0EL@@!  A@" t011 *U1R[[))U1R[[))__Q&	&0A!&)9V3DoYt_o$Y/G# #DJw 4=^3L05+(O (ODOG$&,e_DOE"""E{{H!"K11	        #&DJ(9":DJwJw&&y111 0__q"Q$  Az!},, - FFQA$(DJqM./
7#F+ }}Z00H AJ&&/8,.GDOH---:?:?/A /ADOH---	A As*   =I' 'I=29R, ,,SS1W W0c                    |                                 }|dk    r| j        }|dk    rd}n|dk    s|dk    rd}|                                }d|v rd| _        |                    dd          }nd| _        |d	k    rd
}|dk    r| j        }| j        |k    r| j        |k    r| j        |k    rdS ||z   }|| j        vr|| j        v r|t          vrt          j                            t          |          }|dk    s|dk    r||                                 z  }t          t          t!          |dz                                             |dz   d                     |t          vr|                     d|z              t'          | j                  dz   }|d| j        |         ddt          |         d| j        |<   n|                     d|z   dz   |z              || _        || _        || _        || j        z  | _        | j        |         | _        | j        |         d         dk    | _        | j        dk    r6|                     t5          d| j        d         | j                             dS dS )z#Select a font; size given in pointsr'   r0  r3   r;   r<   r   r   r   r1  r2  Nr7   z.fontexecz&Could not include font metric file forcorei2   )r  r@  r?  rA  rB  r   zUndefined font: r/  r@  r>  BT /F%d %.2f Tf ETr  )ro   ra   rQ  rd   rP  rc   rb   rX   rk   r	   rR  rS  rV  rU  r  compiler   readrm   r   rl   r  r   r  rR   r   r   )r   r   r   r   rD  r?  r  s          r   r   zFPDF.set_font5  s   ||~~2::#F7??FFX!7!7Ekkmm%<<DN--B''EEDN$;;E77"DV##(>(>4CTVZCZCZFu$*$$$/))/11mF;;Dw&+*=*=ekkmm+d7l!3!3!8!8!:!:DL&QQRRRo55

#KG#STTTdj//!#)*&PW@X^bhjp  AH  qI  %J  %J
7##

-f4S8>???DF{*W-"j1&9UB9Q;;IIg243DS3I$J[\\]]]]] ;r   c                     | j         |k    rdS || _         || j        z  | _        | j        dk    r6|                     t          d| j        d         | j                              dS dS )zSet font size in pointsNr   r  r  )rc   rl   r  rR   r   r   r   )r   r   s     r   set_font_sizezFPDF.set_font_sizef  sl    d""FDF{9Q;;IIg243DS3I$J[\\]]]]] ;r   c                 H    t          | j                  dz   }d| j        |<   |S )zCreate a new internal linkr   )r   r   )r   r]   )r   rS   s     r   add_linkzFPDF.add_linko  s$    
dj//!

1r   c                 R    |dk    r| j         }|dk    r| j        }||g| j        |<   dS )z Set destination of internal linkr   N)r   rR   r]   )r   linkr   rR   s       r   set_linkzFPDF.set_linku  s8    b55fA88Dq
4r   c                     | j         | j        vrg | j        | j         <   | j        | j         xx         || j        z  | j        || j        z  z
  || j        z  || j        z  |fgz  cc<   dS )zPut a link on the pageN)rR   r\   rl   rv   )r   r   r   rx   ry   r  s         r   r  z	FPDF.link}  ss    yDO++)+DODI&	"""$&1TV81CAdfHQtvXVZ'[&]]"""""r   c                    |                      |          }| j        rV|                     t          |d                    }t	          |          D ]"}| j        d                             |           #n|                     |          }t          d|| j        z  | j	        |z
  | j        z  |          }| j
        r#|dk    r|d|                     |||          z   z  }| j        rd| j        z   dz   |z   dz   }|                     |           dS )	zOutput a stringFrI  BT %.2f %.2f Td (%s) Tj ETr'   r/  q  QN)r   r  _escaper   r   r   appendr   rl   ry   rd   _dounderlinerh   rg   r   )r   r   r   txttxt2ry  r  s          r   textz	FPDF.text  s    !!#&& 	%<<c5 9 9::D(-- 8 8!(+22377778 <<$$D
.qx468I4
P
P> 	.c2ggs4$$Qq----A? 	.4?"3&q(-A		!r   Nc                    || j         }|| j        }| j        dk    r|                     d           || _        |dk    r|t          j        dz  z  }t	          j        |          }t	          j        |          }|| j        z  }| j	        |z
  | j        z  }t          d||| |||| | 	  	        }|                     |           d S d S )Nr   Q   z7q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm)r   r   rj   r   r%  picossinrl   ry   r   )r   rj   r   r   cr  r'  r(  s           r   rotatezFPDF.rotate  s    9A9A:q==IIcNNN
!88TWS[ EAA46B&(DF"BQRSTUWXVXYZ[]^`bdadfhehiiAIIaLLLLL 8r   c                     | j         S )z"Accept automatic page break or not)r   r   s    r   accept_page_breakzFPDF.accept_page_break  s    ##r   c	           
         |                      |          }| j        }	| j        |z   | j        k    r| j        s|                                 r| j        }
| j        }|dk    rd| _        |                     d           | 	                    | j
                   |
| _        |dk    r-|| _        |                     t          d||	z                       |dk    r| j        | j        z
  | j        z
  }d}|dk    s|dk    rG|dk    r|dk    rd}nd}nd}t          d	| j        |	z  | j        | j        z
  |	z  ||	z  | |	z  |          }t          |t                     r| j        }
| j        }d
|v r5|t          d|
|	z  | j        |z
  |	z  |
|	z  | j        ||z   z
  |	z            z  }d|v r5|t          d|
|	z  | j        |z
  |	z  |
|z   |	z  | j        |z
  |	z            z  }d|v r;|t          d|
|z   |	z  | j        |z
  |	z  |
|z   |	z  | j        ||z   z
  |	z            z  }d|v r;|t          d|
|	z  | j        ||z   z
  |	z  |
|z   |	z  | j        ||z   z
  |	z            z  }|dk    r|dk    r!|| j        z
  |                     |          z
  }n)|dk    r||                     |          z
  dz  }n| j        }| j        r|d| j        z   dz   z  }| j        rZ| j        rRt-          |          D ]"}| j        d                             |           #|                     t5          dd                    }|t          d| j        |z   |	z  | j        | j        d|z  z   d| j        z  z   z
  |	z            z  }|                    d          }t;          |          }t=          |          D ]~}||         }d|                     t5          |d                    z   dz   }|t          d|          z  }|dz   |k     r/| j        | j        z   dz  | j        z  }|t          d||          z  }|dz  }|dz  }n| j        rV|                     t5          |d                    }t-          |          D ]"}| j        d                             |           #n|                     |          }|t          d| j        |z   |	z  | j        | j        d|z  z   d| j        z  z   z
  |	z  |          z  }| j         r;|d| !                    | j        |z   | j        d|z  z   d| j        z  z   |          z   z  }| j        r|dz  }|rO| "                    | j        |z   | j        d|z  z   d| j        z  z
  |                     |          | j        |           |r|                     |           || _#        |dk    r&| xj        |z  c_        |dk    r| j$        | _        d S d S | xj        |z  c_        d S )!zOutput a cellr   0 Tw%.3f Twr'   r   r  r  r  z%.2f %.2f %.2f %.2f re %s rL   z%.2f %.2f m %.2f %.2f l S TRCr$  r  r/  rI  FzBT 0 Tw %.2F %.2F Td [g      ?g333333?()z%s i  z%d(%s) z] TJz ETr  r  N)%r   rl   r   r   r^   r  r   ri   r   r   rw   r   rx   r   ry   rn   r   r{   r  rh   rg   r  r   r   r  r  r   r  splitr   r  rc   rd   r  r  r`   r   )r   rx   ry   r  borderlnalignfillr  rl   r   ri   r  r!  r   dxry  spacetnumtr  txadjr  s                           r   cellz	FPDF.cell  s    !!#&&
&6!8D+++DN+tG]G]G_G_+fAwB!tt		&!!!MM$.///DF!tt		')BqD11222a44fT]"46)A
77faiiQww199BBBB246!8TVDF]A<MaPQcSTRTUVRVWYZZAfZ(( 
	gfAfAf}}77!TVAXqL1dfVWXYVYl\]M]^^^f}}77!TVAXqL!A#qRVRXYZRZ\]Q]^^^f}}771a1aPQcSTWVZV\^_`a^aVbdeUeffff}}77!TVQqS\1<LaPQcSTWVZV\^_`a^aVbdeUefff77czzT]?4#8#8#=#==d++C000#5= ,4'++  yD. y,S11 < <C%h/66s;;;;]3%>%>??W5tv{a6GSWSY\_`a\aSacfimiwcwSwIx|}H}~~~IIcNN1vvt < <A1Bt||M"e,D,DEEEKB+++A1d

 $$& 01D84;LLWYU;;;VU
& -<<c5(A(ABBD055 @ @)(3::3????@  <<,,DW946"9a-QUQWXZ[\X\Q\]_`d`n]nQnIoqrHrswxxx~ V3t((46"Q$;r$.?P3PQTUUUU 4 r		$&)DF2a4K4>0A$A$BWBWX[B\B\]a]klpqqq 	IIaLLL
a44FFAIFF1uu} u FFAIFFFFr   Jc           
         |                      |          }g }| j        d         }	|dk    r| j        | j        z
  | j        z
  }|d| j        z  z
  dz  | j        z  }
|                    dd          }t          |          }|dk    r||dz
           dk    r|dz  }d}|r-|dk    rd	}d
}d}n d}d|v r|dz  }d|v r|dz  }d|v r|dz   }n|}d}d}d}d}d}d}||k     rx||         }|dk    r| j	        dk    rd| _	        |s| 
                    d           |s.|                     ||t          ||||z
            |d||           n'|                    t          ||||z
                       |dz  }d}|}d}d}|dz  }|r|dk    r|}|dk    r	|}|}|dz  }| j        r$||                     |          | j        z  dz  z  }n||	                    |d          z  }||
k    rg|dk    r||k    r|dz  }| j	        dk    rd| _	        |s| 
                    d           |s.|                     ||t          ||||z
            |d||           n|                    t          ||||z
                       n|dk    r[|dk    r|
|z
  dz  | j        z  |dz
  z  | _	        nd| _	        |s0| 
                    t#          d| j	        | j        z                       |s.|                     ||t          ||||z
            |d||           n'|                    t          ||||z
                       |dz   }d}|}d}d}|dz  }|r|dk    r|}n|dz  }||k     x| j	        dk    rd| _	        |s| 
                    d           |r	d|v r|dz  }|s:|                     ||t          ||||z
            |d||           | j        | _        n'|                    t          ||||z
                       |S )z2Output text with automatic or explicit line breaksr   r   r&   r   r'   r   
LTRBLRTLRrL   r  r  r   r  r/  r  r  r  )r   r   rx   r   r   r{   r  rP  r   ri   r   r  r
   r  r  r  r   r   rl   r   )r   rx   ry   r  r  r  r  r   retr   wmaxr  r  r   b2sepr  jrJ   nsnlr  lss                          r   
multi_cellzFPDF.multi_cell  s    !!#&&T"a44fT]"46)A$-'6
++d2

q66a44AbdGTMMEB
 	qyy&==GB&==GB6MMfAAA


dddA$ww7199DG% *		&)))! 0IIa&1QqS//!AeDAAAAJJva!A#///1A b!eeA#vvA! !T**1-->vEERVVAa[[ vv77!tt1wqyy !) . IIf---% 4		!AfQq1ooa%EEEE

6!Aac??3333czza44%)"Wf$4T^$CRT$JDGG$%DG) I IIgi&G&GHHH% 6		!AfQqQ&7&7!E$GGGG

6!Ac!e#4#4555!eAA b!eeA1A ddD 7199DG "		&!!! 	cVmmsFA 	(IIa&1QqS//!AeD999=DFFJJva!A#'''
r   c           
         |                      |          }| j        d         }| j        | j        z
  | j        z
  }|d| j        z  z
  dz  | j        z  }|                    dd          }t          |          }d}	d}
d}d}d}|
|k     r||
         }|d	k    r| 	                    ||t          |||
|z
            dddd|           |
dz  }
d}	|
}d}|dk    r;| j        | _        | j        | j        z
  | j        z
  }|d| j        z  z
  dz  | j        z  }|dz  }|d
k    r|
}	| j        r$||                     |          | j        z  dz  z  }n||                    |d          z  }||k    r'|	dk    r| j        | j        k    rW| j        | _        | xj        |z  c_        | j        | j        z
  | j        z
  }|d| j        z  z
  dz  | j        z  }|
dz  }
|dz  }U|
|k    r|
dz  }
| 	                    ||t          |||
|z
            dddd|           n3| 	                    ||t          |||	|z
            dddd|           |	dz   }
d}	|
}d}|dk    r;| j        | _        | j        | j        z
  | j        z
  }|d| j        z  z
  dz  | j        z  }|dz  }n|
dz  }
|
|k     |
|k    r7| 	                    |dz  | j        z  |t          ||          dddd|           dS dS )zOutput text in flowing moder   r&   r   r  r'   r   r   r   r  r/  N)r   r   rx   r   r   r{   r  rP  r   r  r
   r   r  r  r   r   )r   ry   r  r  r   rx   r  r  r  r  r  r  rJ   r  r  s                  r   writez
FPDF.writey  sJ    !!#&&T"
&
tv
%$-'6
++d2

q66


dddA$ww		!AfQq1ooa"Qt<<<1q55=DFfT]*461AAdmO+V3DNBDA#vv! !T**1-->vEERVVAa[[ vv77vdm++#}	&.tv5$-/7F1A !tt1IIa&1QqS//!Ab4@@@@IIa&1SU"3"3Aa1TBBB!eAq55=DFfT]*461AAdmO+V3DNBDA1c ddf a44IIaht~-aqAa1TJJJJJ 4r   c                    || j         vr~|dk    rB|                    d          }|s|                     d|z              t          ||dz             }|                                }|dk    s|dk    r|                     |          }	n|dk    r|                     |          }	nd}
| j        | j        | j        g}|D ]}	  ||          }	d	}
 n#  Y xY w|
sFd
|z   }t          | |          s|                     d|z               t          | |          |          }	d
|z   }t          | |          s|                     d|z               t          | |          |          }	t          | j                   dz   |	d<   |	| j         |<   n| j         |         }	|dk    r'|dk    r!|	d         | j        z  }|	d         | j        z  }n5|dk    r||	d         z  |	d         z  }n|dk    r||	d         z  |	d         z  }|m| j        |z   | j        k    rC| j        s<|                                 r(| j        }|                     | j                   || _        | j        }| xj        |z  c_        || j        }|                     t)          d|| j        z  || j        z  || j        z  | j        ||z   z
  | j        z  |	d                              |r|                     |||||           dS dS )zPut an image on the pager'   .z7image file has no extension and no type was specified: r   jpgjpegpngFT_parsezUnsupported image type: r  r   rx   ry   Nz&q %.2f 0 0 %.2f %.2f %.2f cm /I%d Do Q)r[   rfindrm   r
   ro   	_parsejpg	_parsepng	_parsegifrs  getattrr   rl   r   r   r^   r  r   r   rw   r   r   ry   r  )r   r?  r   r   rx   ry   r@  r  posinfosucceed_parsingparsing_functionspfmtds                 r   imagez
FPDF.image  sJ    t{""RxxJJsOO _JJXY]]^^^DQ''DU{{dFll^^D))u^^D))
 #(%)^DN4>$R!+  B!r$xx*.& 2 C"4,, D

#=d#BCCC+s++D11DTMtC(( @JJ9$>???'WT3''--$+&&q(DI"DKT"Da44AqDD3iA3iAATTS	k$s)#AATTS	k$s)#A9
T444T^4PTPfPfPhPh4Fd2333AFFaKFF9A		'B1TV8AdfHUVW[W]U]_c_eghijgj_kmqms^stxy|t}~~ 	$IIa!Ad#####	$ 	$s    CCc                     | j         | _        t          |t                    r| xj        | j        z  c_        dS | xj        |z  c_        dS )z,Line Feed; default value is last cell heightN)r   r   rn   r   r   r`   )r   ry   s     r   r  zFPDF.ln   sH     }a$$ 	FFDJFFFFFFAIFFFFr   c                     | j         S )zGet x position)r   r   s    r   get_xz
FPDF.get_x	  	    vr   c                 B    |dk    r	|| _         dS | j        |z   | _         dS )zSet x positionr   N)r   rx   )r   r   s     r   set_xz
FPDF.set_x  s'    a44DFFF6!8DFFFr   c                     | j         S )zGet y position)r   r   s    r   get_yz
FPDF.get_y  r  r   c                 Z    | j         | _        |dk    r	|| _        dS | j        |z   | _        dS )zSet y position and reset xr   N)r   r   r   ry   )r   r   s     r   set_yz
FPDF.set_y  s0    }a44DFFF6!8DFFFr   c                 Z    |                      |           |                     |           dS )zSet x and y positionsN)r  r  )r   r   r   s      r   set_xyzFPDF.set_xy   s$    

1

1r   c                 p   | j         dk     r|                                  |                                }|dk    r|dk    rd}d}nd}|dk    rt          | j                   n|dk    rt          | j                   n|dk    rt          |d          }|s|                     d|z              t          r.|                    | j        	                    d	                     n|                    | j                   |                                 n%|d
k    r| j        S |                     d|z              dS )zOutput PDF to some destinationr   r'   zdoc.pdfIr  DrF  zUnable to create output file: latin1r  zIncorrect output destination: )
rW   r   rQ  printrT   r   rm   r   r  encode)r   r?  destr  s       r   outputzFPDF.output%  s9    :a<<JJLLLZZ\\88Rxx99$+3YY$+3YY4ooA B

;D@AAA %**8445555$$$GGIIII3YY;JJ7<===rr   c                     | j         r2t          |t                    rt          s|                    d          }n8| j         s1t          |t
                    rt          s|                    d          }|S )z7Check that text input is in the correct format/encodingutf8r  )r  rn   strr   decoder   r  )r   r  s     r   r   zFPDF.normalize_textG  ss      	'*S#"6"6 	't 	'**V$$CC# 	'
3(@(@ 	' 	'**X&&C
r   c                 p    t          dd          dk    r!dd l}|                    |j        d           d S d S )Nz%.1f      ?z1.0r   r  )r   locale	setlocale
LC_NUMERIC)r   r  s     r   rP   zFPDF._dochecksR  sI    
 6#%%MMMV.s33333 &%r   c                     t           dz   S )N/)rU  r   s    r   _getfontpathzFPDF._getfontpath[  s    S  r   c                  
   | j         }t          | d          rt          | j        d          }t          t	          |          d          }t          d|dz             D ]+}| j        |                             ||          | j        |<   ,t          d|dz             D ]=}| j        |                             | j        t	          |                    | j        |<   >| j        dk    r| j	        }| j
        }n| j
        }| j	        }| j        rd}nd}t          d|dz             D ]}|                                  |                     d           |                     d           || j        v r$|                     t          d	||                     |                     d
           | j        r|| j        v r
d}| j        |         D ]}	t          d|	d         |	d         |	d         |	d         z   |	d         |	d         z
            }
|d|
z   dz   z  }t#          |	d         t$                    r%|d|                     |	d                   z   dz   z  }| j        |	d                  }|d         | j        v r|}n|}|t          ddd|d         z  z   ||d         | j        z  z
            z  }|                     |dz              | j        dk    r|                     d           |                     dt	          | j        dz             z   dz              |                     d           | j        rIt0          r | j        |                             d          n| j        |         }t5          j        |          }n| j        |         }|                                  |                     d|z   dz   t	          t7          |                    z   dz              |                     |           |                     d           t7          | j                  | j        d<   |                     d            |                     d!           d"}t          d|          D ]}|t	          dd|z  z             d#z   z  }|                     |dz              |                     d$t	          |          z              |                     t          d	||                     |                     d           |                     d           d S )%Nr   Fr   r"   /Filter /FlateDecode r'   z<</Type /Pagez/Parent 1 0 Rz/MediaBox [0 0 %.2f %.2f]z/Resources 2 0 Rz	/Annots [z%.2f %.2f %.2f %.2fr   r&   r   z%<</Type /Annot /Subtype /Link /Rect [z] /Border [0 0 0]    z/A <</S /URI /URI z>>>>z!/Dest [%d 0 R /XYZ 0 %.2f null]>>r5  rO   z7/Group <</Type /Group /S /Transparency /CS /DeviceRGB>>z
/Contents z 0 R>>endobjr  <</Length >>z1 0 objz<</Type /Pagesz/Kids [z 0 R z/Count )rR   rs  r   r   r  r  rU   rP  rt   rp   rq   r   _newobjr   rV   r   r\   rn   r   _textstringr]   rl   r   rS   r   r  zlibr   
_putstreamrT   rQ   )r   r  r   r   rS   ru   rv   filterannotsplr"  rJ   ry   rH   kidsr  s                   r   	_putpageszFPDF._putpages^  s   94,-- 	U!$"95AAEc"ggu--A1bd^^ @ @ $
1 5 5eQ ? ?
11RT]] U U"jm33D4KCPRGGTT
1$$DDDDD= 	*FFFqA &	  &	 ALLNNNIIo&&&IIo&&&D,,,		'"=d4HHIIIII())) &1#7#7"/!, d dB !6r!uRU2a5A;rRSuUWXYUZ{[[DCDHI]]]F!"Q%
33 d 4T5E5Ebe5L5L LV SS*RU+Q44#;;;"AA"A(KAaPQRSPTfHUVWXYZW[\`\bWbUb c cc		&*%%%%%		STTTIIl3tvax==09:::IIh} "6:MDJqM((222
1M!$$JqMLLNNNIId6k*,SQ[[8=>>>OOAIIhDK((Q		)		"###q 	% 	%A#a!e**W$$DD		$s(		)CGG#$$$		'5d4@@AAA		$		(r   c           
         | j         }| j        D ]Q}|                                  |                     d| j        |         z   dz              |                     d           R| j                                        D ]$\  }}d|v r|d         dk    r|                                  | j         | j        |         d<   d}t          |                                 |z   dd	          }|s|                     d
           |	                                }|
                                 t          |d          dk    }|sd|v r}t          |d                   dk    }|rt          |d          }|rPt          ||d                            dk    r1t          |d|d                   t          ||d         dz             z   }|                     dt          t          |                    z              |r|                     d           |                     dt          |d                   z              d|v r.|                     dt          |d                   z   dz              |                     d           |                     |           |                     d           &d | j                                        D             }	|	                                 |	D 
]w\  }
}}| j         d	z   | j        |         d<   |d         }|d         }|dk    r|                                  |                     d           |                     d|z              |                     d           |dk    r|dk    r|                     d            |                     d           |                     d           |d!k    s|d"k    r|                                  |                     d           |                     d|z              |                     d#|z              |                     d$           |                     d%t          | j         d	z             z   d&z              |                     d't          | j         d(z             z   d&z              |d)         rKd*|v r2|                     d+t          ||d*         z             z   d&z              n|                     d            |                     d           |                     d           |                                  |d,         }d-}t%          d.d/          D ]9}|t          |                    t)          |                    pd          d0z   z  }:|                     |d1z              |                     d           |                                  d2|z   }d3D ]}|d4|d0|d5         |         z  }|d6         }|r9|d7z  }|d!k    r|d8z  }|d0t          | j        |         d                   z   d&z   z  }|                     |dz              |                     d           k|dk    r| j         d	z   | j        |         d<   t+                      }d9|d         z   }|d:         }|d= |                    |d;         |          }t          |          }t/          j        |          }|j        }|                                  |                     d           |                     d<           |                     d|z   dz              |                     d=           |                     d>t          | j         d	z             z   d?z              |                     d@t          | j         d(z             z   d&z              |                     d           |                     d           |                                  |                     d           |                     dA           |                     d|z   dz              |                     dBt          | j         d(z             z   d&z              |                     d't          | j         dCz             z   d&z              |d5                             dD          r$|                     dE|d5         dD         z             |                     ||j                   |                     dFt          | j         dGz             z   d&z              |                     d           |                     d           |                                  dH}|                     dt          t          |                    z   dz              |                     |           |                     d           |                                  |                     dI           |                     dJ           |                     dK           |                     d           |                     d           |                                  |                     dL           |                     dM|z              dND ];}|d5         |         }|dOk    r
|dGz  }|dPz  }|                     d4|d0|           <|                     dQt          | j         d(z             z   d&z              |                     d           |                     d           d}dRgd/z  d/z  d(z  }|                                D ]8\  }}t)          |dSz	            ||d(z  <   t)          |dTz            ||d(z  d	z   <   9d                    |          }t:          r|                    dU          }t/          j        |          }|                                  |                     dt          t          |                    z   dz              |                     d           |                     d           |                     |           |                     d           |                                  |                     dt          t          |                    z              |                     d           |                     dt          |          z              |                     d           |                     |           |                     d           ~
#dV|                                z   }tA          | |          s|                     dW|z              | !                    |           
yd S )XNz?<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [z]>>r   r@  r>  rS   r'   r3  r   zFont file not foundz.zrO  r         rK  z
<</Length z/Filter /FlateDecodez	/Length1 z	/Length2 z /Length3 0r  c                 H    g | ]}|d          d         |d         |d          f S )r   r  r   r   .0r   s     r   
<listcomp>z"FPDF._putfonts.<locals>.<listcomp>  s/    CCC1!A$s)AaD1&CCCr   r?  r  z<</Type /Fontz/BaseFont /z/Subtype /Type1r-   r.   z/Encoding /WinAnsiEncodingType1rN  z
/Subtype /z/FirstChar 32 /LastChar 255z/Widths  0 Rz/FontDescriptor r&   encrL  z
/Encoding r   r4  rH     r/  r5  z#<</Type /FontDescriptor /FontName /)r7  r8  r9  Falgsr;  r<  r=  r   z /r   filez
 /FontFile2zMPDFAA+rI  rC  z/Subtype /Type0z/Encoding /Identity-Hz/DescendantFonts [ 0 R]z/ToUnicode z/Subtype /CIDFontType2z/CIDSystemInfo r   r   z/DW %dz/CIDToGIDMap r  aY  /CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
1 beginbfrange
<0000> <FFFF> <0000>
endbfrange
endcmap
CMapName currentdict /CMap defineresource pop
end
endz<</Registry (Adobe)z/Ordering (UCS)z/Supplement 0z<</Type /FontDescriptorz/FontName /r6  r:  iz/FontFile2        r  _putzUnsupported font type: )"rS   rZ   r  r   rY   itemsr   r  rm   r  r   r
   r  r  r   r  rX   sortr  r   chrr   
makeSubsetr  r   codeToGlyph_putTTfontwidthsmaxUnirV  r   r  ro   method_existsr  )r   nfrL  r?  r  r   r  
compressedr   flistidxrl   r@  r   r  r  rM  r|  fontnamerI  ttfontstream
ttfontsize
fontstreamr%  toUnikdvcidtogidmapccglyphr  s                                  r   	_putfontszFPDF._putfonts  sv   6J 	  	 DLLNNNIIWX\XbcgXhhinnoooIIh..00 	$ 	$ID~~$v,%"7"7+/6%c*t((**4/Q77 6JJ4555VVXX			"4OOT1
! [i4&7&7QLL#-F ,#D^^ [#d4	?&;"<"<c"A"A#D4	?;;F4YXYHY<Z<ZZ		,s3t99~~5666 6II4555		+c$y/&:&::;;;$$IIk#d9o*>*>>}LMMM		$%%%		(###CC
0@0@0B0BCCC

 l	 l	JC$#vaxDJqM#fDfDV||		/***		-,---		+,,,>>dN&:&:II:;;;		$		(####w$
"2"2		/***		-,---		,t+,,,		7888		*S]]269:::		,S]]:6ABBB; @~~		,s2d6l?/C/C"CF"JKKKK		">???		$		(###:r# 4 4As266#a&&>>.Q//33AA		!C%   		(###7<x : :AAaaafa99AAf F|OAW}}3s3tx8=>>>vEEA		!D&!!!		(####%--%)VaZ
1c" ll)DL8h1I"~~d9ovFF ..
!]<88
!o 		/***		+,,,		-(2R7888		1222		.TVaZ@7JKKK		-#dfqj//9FBCCC		$		(### 		/***		2333		-(2R7888		+c$&1*oo=FGGG		,s46A:>GHHHL$$^44 GIIhfn)EEFFF%%dCJ777		/C
OO;fDEEE		$		(### ( 		,SZZ84?@@@&&&		(### 		/000		+,,,		/***		$		(### 		3444		-(2333y 3 3BVR(AgEGIII222qq12222		-#dfqj//9FBCCC		$		(### !%hnS02!,!2!2!4!4 > >IB(+EQJK1%,/,=,=K1q)) ggk22 ?"-"4"4X">">K"mK88		,S-=-=)>)>>CDDD		0111		$,,,		(### 		,S__)=)==>>>		0111		+J7888		$
+++		(###C 4::<<'$T#.. ?JJ8=>>>Yl	 l	r   c           
      \   |d         r/t           j                            |d                   d         dz   }nd }|rt           j                            |          rt	          |d          }	 t          j        |          }|                                 n# |                                 w xY w|d         }|d         }|d         }|d         }	|d	         }
|d
         }d}nd}i }i }d}d}	d}
d}|dz   }t          ||          D ]}|dk    r|rt           j                            |          s	 t	          |d          }i }||d<   ||d<   |	|d<   |
|d	<   ||d
<   ||d<   t          j	        ||           |                                 n2# t          $ r% t                      j        t          j        k    s Y nw xY w|d         |         dk    r|d         |         }|dk    rd}|dk    r
||d         vs|sd|vs|d         r||d         k    r||dz   k    r||	k    rg|||         d         k    r*|                    |g                               |           n#||                                          |}|	|g||<   d}
d||<   n3|
r	|}|g||<   n||                             |           d}
n
|}|g||<   d}
|}|}	d}d}d}t#          |                                          D ]a\  }}t'          |          }||k    r+|s)||vs|dk     r||v r||= ||         ||         z   ||<   ||= n|}||z   }||v r|dk    }||= |dz  }_d}bg }t#          |                                          D ]\  }}t'          t)          |                    dk    r8|                    d|d|t'          |          z   dz
  d|d                    ]|                    d|dd                    d |D                       d           |                     dd                    |          z             d S )NrJ  r   z
.cw127.pklr3  rangeidr  prevcid	prevwidthintervalrange_intervalr  r  r   Fr   rF  r   i  r  rI  dwTr   r/  z [ c                 F    g | ]}t          t          |                    S r   )r  r]  )r  ry   s     r   r  z)FPDF._putTTfontwidths.<locals>.<listcomp>  s$    7P7P7PCFF7P7P7Pr   z ]
z/W [%s]r'   )rR  rS  rY  rT  r   r   r[  r   r  ro  rp  r   rq  rr  
setdefaultr  popsortedr!  r   setrV  r   )r   r   r'  
cw127fnamers   r{  r9  range_r:  r;  r<  r=  startcidcwlencidr
  prevknextkprevintrl   ri   cwsrx   s                          r   r&  zFPDF._putTTfontwidths{  s    	))$}*=>>qALPJJJ 	"'..44 	j$''B"KOO	







	*Gw'F	*G!+.I ,H&'78NHHGFNGIHH
 5)) /	" /	"Cczzjz
1K1Kzj$//B "I+2Ii(+2Ii(-6Ik*,4Ij)2@I./)/Ig&K	2...HHJJJJ   $;;,<< =< T
31$$JsOEc		s$x.888D  T$Z ET$Z4G4GGaK((**!VG_Q%777"--gr::AA%HHHH"7O//111&-G/8%.@F7O#'26w//$ :&)G/4gF7OO"7O225999#(!G',gF7O$H!	FLLNN++ 	  	 EArb''CU

7
A4G4G3QR77''&q) &uq	 9u1IIGE^##7"1%
FLLNN++ 	T 	TEArCGG!!1s2ww;???BqEEBCCCC111chh7P7PR7P7P7P.Q.Q.Q.QRSSSS		)bggajj()))))s   ,B B+/AF		,F87F8c                     d}| j         rd}d | j                                        D             }|                                 |D ]$\  }}|                     |           |d= d|v r|d= %d S )Nr'   r  c                 :    g | ]}|d          d         |d          fS )r   r  r   r  s     r   r  z#FPDF._putimages.<locals>.<listcomp>  s)    ;;;!ad3i!;;;r   datasmask)r   r[   r!  r"  	_putimage)r   r  r  r,  r  s        r   
_putimageszFPDF._putimages  s    = 	+*F;;t{'8'8':':;;;	 	" 	"HCNN4   V$M		" 	"r   c                 >   d|v r|                                   | j        |d<   |                     d           |                     d           |                     dt          |d                   z              |                     dt          |d                   z              |d	         d
k    rj|                     dt          t	          t          |d                   dz            dz
            z   dz   t          | j        dz             z   dz              n?|                     d|d	         z              |d	         dk    r|                     d           |                     dt          |d                   z              d|v r|                     d|d         z              d|v r!|                     d|d         z   dz              d|v rt          |d         t                    rd}t          dt          |d                             D ]B}|t          |d         |                   dz   t          |d         |                   z   dz   z  }C|                     d|z   dz              d |v r0|                     d!t          | j        dz             z   d"z              |                     d#t          t          |d                             z   dz              | 	                    |d                    |                     d$           d |v rOd%t          |d                   z   }|d         |d         d&d'|d         ||d          d(}| 
                    |           |d	         d
k    r|                                   | j        rd)pd}| j        rt          j        |d                   }n|d         }|                     d*|z   d#z   t          t          |                    z   dz              | 	                    |           |                     d$           d S d S d S )+NrO  rS   z<</Type /XObjectz/Subtype /Imagez/Width rx   z/Height ry   csIndexedz!/ColorSpace [/Indexed /DeviceRGB palr   r   r/  r  z/ColorSpace /
DeviceCMYKz/Decode [1 0 1 0 1 0 1 0]z/BitsPerComponent bpcr  z	/Filter /dpz/DecodeParms <<r  trnsr'   r   z/Mask [r5  rP  z/SMask r  r  r   z5/Predictor 15 /Colors 1 /BitsPerComponent 8 /Columns 
DeviceGrayr  )rx   ry   rT  rX  r  rY  rO  r  r  )r  rS   r   r  r]  r   rn   rt  r  r  rQ  r   r  )r   r  rZ  r  rY  rP  r  rV  s           r   rQ  zFPDF._putimage  s   T>>LLNNNfDIII()))II'(((IIiDI.///IIjT#Y/000Dz9$$		=c#c$u+FVFVWXFXBYBYZ[B[>\>\\]``adeieklmemanannovvwwww		/$t*4555:|++II9:::II*3tE{+;+;;<<<d{{		+d3i/000t||		+d4j84?@@@~~*T&\4"@"@~qT&\!2!233 L LA#d6l1o..s23tF|A3G3GGKKDD		)D.,---$		)c$&(mm3f<===IIjSf%6%6!7!77<===OODL)))IIh$LsSWX[S\~~]"3id3i|TU\`ad\emoy}  F  zG  H  Hu%%%Dz9$$B+BHb= $d5k22CCUC		$v+j0SXX>tCDDD$$$		(#####W >D %$r   c                     d | j                                         D             }|                                 |D ]@\  }}|                     dt	          |          z   dz   t	          |          z   dz              Ad S )Nc                 .    g | ]}|d          |d         fS r  rS   r   r  s     r   r  z(FPDF._putxobjectdict.<locals>.<listcomp>  s$    ;;;afQsV_;;;r   z/Ir/  r  )r[   valuesr"  r   r  )r   r  r,  rS   s       r   _putxobjectdictzFPDF._putxobjectdict  s    ;;dk&8&8&:&:;;;	 	7 	7ECIId3s88mC'A.v56666	7 	7r   c                    |                      d           |                      d           d | j                                        D             }|                                 |D ]@\  }}|                      dt	          |          z   dz   t	          |          z   dz              A|                      d           |                      d           |                                  |                      d           d S )	Nz-/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]z/Font <<c                 .    g | ]}|d          |d         fS r^  r   r  s     r   r  z)FPDF._putresourcedict.<locals>.<listcomp>&  s$    :::afQsV_:::r   z/Fr/  r  r  z/XObject <<)r   rX   r_  r"  r  r`  )r   r  r,  rS   s       r   _putresourcedictzFPDF._putresourcedict#  s    		ABBB		*::dj&7&7&9&9:::	 	7 	7ECIId3s88mC'A.v56666		$		-   		$r   c                 ^   |                                   |                                  t          | j                  | j        d<   |                     d           |                     d           |                                  |                     d           |                     d           d S )Nr&   z2 0 objr  r  r   )r7  rR  r   rT   rQ   r   rc  r   s    r   _putresourceszFPDF._putresources/  s    DK((Q		)		$		$		(r   c           	         |                      d|                     dt          z   dz             z              t          | d          r0|                      d|                     | j                  z              t          | d          r0|                      d|                     | j                  z              t          | d          r0|                      d	|                     | j                  z              t          | d
          r0|                      d|                     | j                  z              t          | d          r0|                      d|                     | j                  z              |                      d|                     dt          j
                                        d          z             z              d S )Nz
/Producer zPyFPDF z http://pyfpdf.googlecode.com/r   z/Title r   z	/Subject r   z/Author r   z
/Keywords r   z	/Creator z/CreationDate zD:z%Y%m%d%H%M%S)r   r  FPDF_VERSIONrs  r   r   r   r   r   r   nowstrftimer   s    r   _putinfozFPDF._putinfo:  s   		,t//	,0FGg0ghhhiii4   	>IIi 0 0 < <<===4	"" 	BIIk$"2"24<"@"@@AAA4!! 	@IIj!1!1$+!>!>>???D$$ 	DIIl4#3#3DM#B#BBCCC4	"" 	BIIk$"2"24<"@"@@AAA		"4#3#3D9P9PQ_9`9`4`#a#aabbbbbr   c                 v   |                      d           |                      d           | j        dk    r|                      d           n| j        dk    r|                      d           nf| j        dk    r|                      d           nEt          | j        t                    s+|                      t	          d	| j        d
z                       | j        dk    r|                      d           d S | j        dk    r|                      d           d S | j        dk    r|                      d           d S d S )Nz/Type /Catalogz/Pages 1 0 Rr   z/OpenAction [3 0 R /Fit]rN   z/OpenAction [3 0 R /FitH null]r   z$/OpenAction [3 0 R /XYZ null null 1]z%/OpenAction [3 0 R /XYZ null null %s]d   r   z/PageLayout /SinglePager   z/PageLayout /OneColumnr   z/PageLayout /TwoColumnLeft)r   r   rn   r   r   r   r   s    r   _putcatalogzFPDF._putcatalogH  sG   		"###		.!!!>:%%II01111^[((II67777^V##II<====DN:66 	[IIgEdnUXFXYYZZZX%%II/00000|++II./////u$$II233333 %$r   c                 @    |                      d| j        z              d S )Nz%PDF-)r   r   r   s    r   
_putheaderzFPDF._putheaderZ  s"    		'$**+++++r   c                    |                      dt          | j        dz             z              |                      dt          | j                  z   dz              |                      dt          | j        dz
            z   dz              d S )Nz/Size r   z/Root r  z/Info )r   r  rS   r   s    r   _puttrailerzFPDF._puttrailer]  sw    		(3tvax==()))		(3tv;;&v-...		(3tvax==(/00000r   c                    |                                   |                                  |                                  |                                  |                     d           |                                  |                     d           |                     d           |                                  |                     d           |                                  |                     d           |                     d           t          | j                  }|                     d           |                     dt          | j
        dz             z              |                     d           t          d| j
        dz             D ]0}|                     t          d| j        |                              1|                     d	           |                     d           |                                  |                     d           |                     d
           |                     |           |                     d           d| _        d S )Nr  r  r   xrefz0 r   z0000000000 65535 f z%010d 00000 n trailer	startxrefz%%EOFr   )ro  r  re  r  r   rj  rm  r   rT   r  rS   r  r   rQ   rq  rW   )r   or  s      r   r   zFPDF._enddocb  s   		$		$		(		$		$		(
dk

		&		$DF1H&'''		'(((q"" 	A 	AAIIg.t|A??@@@@		)		$		$		+		!		'


r   c                 *   | xj         dz  c_         d| j        | j         <   d| _        | j        | _        | j        | _        d| _        |s| j        }n4|d         	                                }|| j        k    rd| j
        | j         <   || j        k    r|dk    r1| j        | _        | j        | _        | j        | _        | j        | _        n0| j        | _        | j        | _        | j        | _        | j        | _        | j        | j        z
  | _        || _        d S d S )Nr   r'   r&   r   r"   )rR   rU   rW   r   r   r   r   ra   rt   rQ  rV   rw   rp   ru   rq   rv   rr   rx   rs   ry   r   r   )r   r   s     r   r   zFPDF._beginpage  s   		1		 
49
}} 	6,KK#A,,..KD00045(3,,,C*	*	ww*	*	ww$(F4=$8D#!,D    -,r   c                     d| _         d S Nr   r   r   s    r   r   zFPDF._endpage  r   r   c                     | xj         dz  c_         t          | j                  | j        | j         <   |                     t          | j                   dz              d S )Nr   z 0 obj)rS   r   rT   rQ   r   r  r   s    r   r  zFPDF._newobj  sN    	 --TV		#df++h&'''''r   c                 6   | j         d         }| j         d         }|                     |          | j        |                    d          z  z   }t	          d|| j        z  | j        ||dz  | j        z  z
  z
  | j        z  || j        z  | dz  | j        z            S )NrA  rB  r/  z%.2f %.2f %.2f %.2f re fr   )	r   r  ri   countr   rl   ry   r  rc   )r   r   r   r  rA  rB  rx   s          r   r  zFPDF._dounderline  s    T"T"



$
$TWSYYs^^%;
;1!DF(DFAbiPTP^F^D^<_aeag;ghijnjphprtqtu{q{  }A  }N  rN  O  O  	Or   c           
         	 t          |d          }	 t          j        d|                    d                    \  }}|dk    s|dk     rt	          d          |dk    rt	          d	          |d
k    s|dk    r|dk    s|dk    r|dk    rnt          j        d|                    d                    \  }|dk    r|                    |dz
            nd}|dk    r|dk    s$|dk    r|dk    s|dk    r|dk    s|dk    r3|dk    r-t          j        d|          \  }}}	}
|
dk    rdn	|
dk    rdnd}n#nD# t          $ r7 |                     d|dt          t                                           Y nw xY w|
                    d            |                                }|                                 |	|||d!|d"S )#Nr3  TBBr&   r     zNo JPEG marker found   zNo JPEG SOF marker found               z>Hr'                        z>BHHBr   	DeviceRGBr  rW  r[  !Missing or incorrect image file: 	. error: r   	DCTDecode)rx   ry   rT  rX  r  rO  )r   structunpackr  SyntaxErrorunpack_from	Exceptionrm   r  r   seekr   )r   rM  r  
markerHigh	markerLowdataSizerO  rX  heightr
  layerscolspaces               r   r  zFPDF._parsejpg  s'   	hXt$$A(.dAFF1II(F(F%
I%%T)9)9%&<===$&&%&@AAA4'' D((Y$->-> D((Y$->-> &dAFF1II > >IH3;a<<166(Q,///RD"d**yD/@/@"d**yD/@/@"d**yD/@/@"d**yD/@/@5;5GQU5V5V2VUF28A++;;TZ^_T_T_LLeq'&  	h 	h 	hJJJ888UXYbYdYdUeUeUefggggg	h 	
q			vvxx				f(TXYYYs   D4D7 7>E87E8c           
      (   t           |                     d           	 t          j        |          }t          j        dd          }|j        }|                                 d|j        v r#|                    ||j        d                    n|                    |           | 	                    |          }t          j        |           nD# t          $ r7 |                     d|dt          t                                           Y nw xY w|S )	NzPIL is required for GIF supportFz.png)deletesuffixtransparency)r  r  r  )r   rm   r   tempfileNamedTemporaryFiler?  r   r  saver  rR  unlinkr  r  r   )r   rM  imr  tmpr  s         r   r  zFPDF._parsegif  s   =JJ8999	H%%B
 +5HHHA&CGGIII((BGN,CDDDD>>#&&DIcNNNN  	h 	h 	hJJJ888UXYbYdYdUeUeUefggggg	h s   C >DDc           	      6   |                     d          s|                     d          rt          |          }nt          |d          }|s|                     d|z              |                    d                              d          }d}t          s|                    d          }||k    r|                     d|z              |                    d	           |                    d	                              d          }|d
k    r|                     d|z              |                     |          }|                     |          }t          |                    d                    }|dk    r|                     d|z              t          |                    d                    }	|	dk    s|	d	k    rd}
n0|	dk    s|	dk    rd}
n!|	dk    rd}
n|                     d|z              t          |                    d                    dk    r|                     d|z              t          |                    d                    dk    r|                     d|z              t          |                    d                    dk    r|                     d|z              |                    d	           d}|
dk    r|dz  }n|dz  }|dt          |          z   dz   t          |          z   dz   z  }d}d}t          rt                      nt                      }d}|d k    r|                     |          }|                    d	                              d          }|dk    r,|                    |          }|                    d	           n;|d k    r|                    |          }|	dk    r t          t          |dd                    g}n|	dk    rZt          t          |dd                    t          t          |dd                    t          t          |d!d                    g}n1|                    d"                    d                    }|d#k    r|g}|                    d	           nS|d$k    r.||                    |          z  }|                    d	           n|d%k    rn|                    |d	z              |d k    |
dk    r|s|                     d&|z              |                                 |||
|d'|||d(}|	d	k    rqt          j        |          }t#          d          }t#          d          }|	d	k    rd|z  }t%          |          D ]}d|z   |z  }|t#          ||                   z  }|t#          ||                   z  }t          ||dz   |          }t'          j        d)                    d*          t&          j        +          }t'          j        d,                    d*          t&          j        +          }||                    d- |          z  }||                    d. |          z  }nd	|z  }t%          |          D ]}d|z   |z  }|t#          ||                   z  }|t#          ||                   z  }t          ||dz   |          }t'          j        d/                    d*          t&          j        +          }t'          j        d0                    d*          t&          j        +          }||                    d1 |          z  }||                    d2 |          z  }~t          j        |          }t          j        |          |d3<   | j        d4k     rd4| _        ||d5<   |S )6Nzhttp://zhttps://r3  zCan't open image file: r  r  u	   PNG

zNot a PNG file: r  IHDRzIncorrect PNG file: r   z16-bit depth not supported: r   r[  r&   r  r  r   rU  zUnknown color type: zUnknown compression method: zUnknown filter method: zInterlacing not supported: z/Predictor 15 /Colors 31z /BitsPerComponent z
 /Columns r'   PLTEtRNS   r  r   IDATIENDzMissing palette in FlateDecode)rx   ry   rT  rX  r  rY  rV  rZ  z(.).ascii)rb  z.(.)c                 ,    |                      d          S ry  groupms    r   <lambda>z FPDF._parsepng.<locals>.<lambda>H      

 r   c                 ,    |                      d          S ry  r  r  s    r   r  z FPDF._parsepng.<locals>.<lambda>I  r  r   z(...).z...(.)c                 ,    |                      d          S ry  r  r  s    r   r  z FPDF._parsepng.<locals>.<lambda>T  r  r   c                 ,    |                      d          S ry  r  r  s    r   r  z FPDF._parsepng.<locals>.<lambda>U  r  r   rP  z1.4rO  )
startswithr   r   rm   r  r  r   	_freadintr  r  bytesr
   findr  r   r  
decompressr   r  rg  r  DOTALLrh  r   r   )r   r?  r  magic	signaturechunkrx   ry   rX  ctr  rY  rV  rZ  rO  rS   r@  r  r  r  coloralphalengthr  r  re_cre_as                              r   r  zFPDF._parsepng  s   ??9%% 	)D)D 	4==qq4ooA 	7JJ05666q		  **6	;!1!1(!;!;Y)JJ)$.///	q			q		  **&==JJ-d2333
..


..

q		NNq55JJ5d:;;;qvvayy>>q55BEE!HHUUb!ee HHUUHHJJ-d2333qvvayy>>1JJ5d:;;;qvvayy>>1JJ05666qvvayy>>1JJ4T9:::	q			#{""GBBGB
!#c((*<7A>rAA'UWWW#%%
4iinnQA!!(++DV||FF1IIq				v&&))q55fQqmm,,.DDUUfQqmm,,S!A-?-?F1QqMM@R@RSDDv}}X6677CBww!Vq				vaffQiiq				vqs5 4ii6 YsJJ,T1222				!2TW_ceeq55?4((DbEEEbEEE1uu1q B BAV8Q,CQtCy\\)EQtCy\\)E!$Av66D:fmmG&<&<BINNND:fmmG&<&<BINNNDTXX&:&:DAAAETXX&:&:DAAAEEB 1q B BAV8Q,CQtCy\\)EQtCy\\)E!$Av66D:hoog&>&>biPPPD:hoog&>&>biPPPDTXX&:&:DAAAETXX&:&:DAAAEE=''D M%00DM 5((#( Vr   c                 p    	 t          j        d|                    d                    d         S #  Y d S xY w)Nz>Ir  r   )r  r  r  )r   r  s     r   r  zFPDF._freadint^  s8    	=qvvayy11!44	44s   -0 5c                 8    d|                      |          z   dz   S )Nr  r  )r  r   r  s     r   r  zFPDF._textstringe  s    4<<??"3&&r   c                     |                     dd                               dd                               dd                               dd          S )	N\z\\r  z\)r  z\(r  z\r)rP  r  s     r   r  zFPDF._escapei  sH    yyf%%--c%88@@UKKSSTXY^___r   c                     |                      d           |                      |           |                      d           d S )Nstream	endstream)r   r  s     r   r  zFPDF._putstreamm  s;    		(		!		+r   c                    t           r+t          |t                    r|                    d          }nVt           s+t          |t                    r|                    d          }n$t          |t                    st          |          }| j        dk    r| j	        | j
        xx         |dz   z  cc<   d S | xj        |dz   z  c_        d S )Nr  r&   r  )r   rn   r  r  r   r  r   r  rW   rU   rR   rT   r  s     r   r   z	FPDF._outr  s     	Jq%(( 	""AA 	*Q00 	""AAAz** 	AA:q==Jty!!!1T6)!!!!!KK4KKKKr   r  rM   c                    |dz  }|}dddddddd	d
dddd}|                      d           |}	t          |	          dz  dk    rd|	z   }	d|	                                z   dz   }	t          dt          |	          d          D ]}
|	|
         }|	|
dz            }||                                vrt          d|z            ||                                vrt          d|z            d}t          dt          ||                             D ]"}|||         |         ||         |         z   z  }#t          dt          |                    D ]:}||         dk    r|}n|}|dz  dk    r|                     ||||d           ||z  };dS )z/Barcode I2of5 (numeric), adds a 0 if odd lenght      @nnwwnwnnnwnwnnwwwnnnnnwnwwnwnnnwwnnnnnwwwnnwnnwnwnnnwn)0r  r  r  456789AZr   r&   r  AAZAr   zChar "%s" invalid for I25: r'   rS   r  N)r   r   ro   r  keysr   r"  )r   r  r   r   rx   ry   narrowwidebar_charcoder  char_bar
char_spaceseqr  barr|   s                    r   interleaved2of5zFPDF.interleaved2of5  s    S W7W7W4dD D 	At99q=A:D djjll"T)q#d))Q'' 	  	 AAwHacJx}}.."$AH$LMMM00"$AJ$NOOO C1c(8"45566 G Gx)!,x
/CA/FFFQC))    s8s??!'JJ!%J 7a<<IIaJ3777Z 	  	 r         ?      @c                 :   ||dz  d}i ddddddd	d
dddddddddddddddddddddd d!d"d#d$i d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQ
}|                      dR           |                                D ]q}||vrt          dS|z            t          ||                   D ]8\  }	}
|	dTz  dRk    r|                     ||||
         |d!           |||
         z  }9||dU         z  }rdVS )WzBarcode 3of9r  )rx   rS   r  	nnnwwnwnnr  	wnnwnnnnwr  	nnwwnnnnwr  	wnwwnnnnnr  	nnnwwnnnwr  	wnnwwnnnnr  	nnwwwnnnnr  	nnnwnnwnwr  	wnnwnnwnnr  	nnwwnnwnnr  	wnnnnwnnwr  	nnwnnwnnwr  	wnwnnwnnnr  	nnnnwwnnwE	wnnnwwnnnr  	nnwnwwnnnG	nnnnnwwnwH	wnnnnwwnnr  	nnwnnwwnnr  	nnnnwwwnnK	wnnnnnnwwrL   	nnwnnnnwwM	wnwnnnnwnN	nnnnwnnwwO	wnnnwnnwnr"   	nnwnwnnwnr  	nnnnnnwwwr  	wnnnnnwwnr  	nnwnnnwwnr  	nnnnwnwwnr   	wwnnnnnnwV	nwwnnnnnwW	wwwnnnnnnX	nwnnwnnnw	wwnnwnnnn	nwwnwnnnn	nwnnnnwnw	wwnnnnwnn	nwwnnnwnn	nwnnwnwnn	nwnwnwnnn	nwnwnnnwn	nwnnnwnwn	nnnwnwnwn)
Yr  -r  r/  *$r  +%r   zInvalid char "%s" for Code39r&   rS   N)r   rQ  r   	enumerater"  )r   r  r   r   rx   ry   dimcharsr  r  r  s              r   code39zFPDF.code39  s    AbD!!

!;
03[

!;
03[
 
 ";
 14[
 	
 ";	
 14[	

 

 ";

 14[
 
 ";
 
 14[
 
 ";
 14[
 
 ";
 14[
 
 ";
 14[
 
 ";
 14[
 
 ";
 14[
 
 
 $/[;[;[;
 
 
" 	A 	 	A~~"#AA#EFFF!%(++  1q5A::IIaCFAs333SVSMAA	 	r   )r"   r#   r$   )r   )r   )r   )r   )r'   )r   r   )FF)r   r   )r'   r'   F)r'   r   )r   r   )NN)r   r'   r   r   r'   r   r'   )r'   r   r  r   F)r'   r'   )NNr   r   r'   r'   )r  rM   )r  r  )V__name__
__module____qualname____doc__r   r   rz   r   r   r   r}   r~   r   r   r   r   r   r   r   rm   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r"  r-  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rP   r  r  r7  r&  rR  rQ  r`  rc  re  rj  rm  ro  rq  r   r   r   r  r  r  r  r  r  r  r  r  r   r  r9  r   r   r   r!   r!   )   se       a a a aF           . . . .A A A A               
/ / /    : : : :x      ' ' ' '' ' ' '; ; ; ;' ' ',6 6 6 r r Zr       Z i i i Zi " " " Z"HwA wA wA wAr/^ /^ /^ /^b^ ^ ^  " " " "^ ^ ^    Z     Z"$ $ $ Z Z Z ZZx o o o Zob AK AK AK ZAKF @$ @$ @$ Z@$D    Z          
       D  4 4 4! ! !G G GRR R Rhf* f* f*P
" 
" 
",$ ,$ ,$\7 7 7
 
 
	 	 	c c c4 4 4$, , ,1 1 1
  B- - -:  ( ( (O O OZ Z ZB  *u u un  ' ' '` ` `  
      -  -  -  Z- `    Z  r   r!   )-
__future__r   r   	functoolsr   r%  rq  rR  sysr  r  rg  r  ttfontsr   rX   r	   phpr
   r   r   r   r   py3kr   r   r   r   r   r   r   r   r   rg  rS  rV  dirname__file__rU  rX  rZ  rW  r   objectr!   r   r   r   <module>rG     s                         2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2       " " " " " " K K K K K K K K K K K K K K [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ RW__X66v>>  e e e e e6 e e e e er   