
    kf                        d Z dZddlmZ ddlT ddlT ddlmZmZ ddl	m
Z
mZmZmZmZmZ ddlmZmZmZ ddlmZ dd	lmZmZmZmZ ddlT dd
lmZmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z)  G d de          Z* G d de+          Z, G d de          Z- G d d          Z. G d d          Z/ G d de/e"          Z0 G d de/e          Z1ddl2m3Z3  G d d e3          Z4 G d! d"e4          Z5g d#g d$gZ6 G d% d&e4          Z7 G d' d(e7          Z8 G d) d*e4          Z9 G d+ d,e9          Z:d- Z; G d. d/e4          Z<d0 Z=d1 Z>d2 Z?d3 Z@d4 ZAd5 ZBd6S )7z3.3.0z9This module defines a very preliminary Line Plot example.    colors)*)flattenisStr)DrawingGroupRectPolyLinePolygon_SetKeyWordArgs)TypedPropertyCollection
PropHolder
tpcGetItem)Label)
XValueAxis
YValueAxisAdjYValueAxisNormalDateXValueAxis)uSymbol2Symbol
makeMarker)Grid
DoubleGridShadedPolygon)stringWidthgetFont)PlotArea   )FillPairedDatac                   `   e Zd Z e eed           eed           eed           eed           eddd	           edd
d	           eddd	           eed           e e	 e
ddd                    dd	           eedd	           eedd	                    ZdS )LinePlotPropertieszWidth of a line.desczColor of a line.zDash array of a line.z,Color of infill defaults to the strokeColor.NzWidget placed at data points.r   r#   advancedUsagezShader Class.zFiller Class.zName of the line.line
joinedLinebarzWhat kind of plot this line isz2Percentage of available width to be used for a barzIf true flood fill to x axis)strokeWidthstrokeColorstrokeDashArray	fillColorsymbolshaderfillername	lineStylebarWidthinFill)__name__
__module____qualname__AttrMapAttrMapValueisNumberisColorOrNoneisListOfNumbersOrNoneisStringOrNoneNoneOrOneOfisNumberOrNone	isBoolean_attrMap     c/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/graphics/charts/lineplots.pyr!   r!      s)       w"l82DEEE"l=7IJJJ&,'<CZ[[[ L5cdddd)HWXYYYdqIIIdqIII|N1DEEE Lf\%(H(H!I!IPp  @A  B  B  B<4hwxyyyi.L[\]]]
 
 
HHHrC   r!   c                       e Zd ZddZdS )InFillValueNc                 J    t                               | |          }||_        |S N)int__new__yValue)clsvrK   selfs       rD   rJ   zInFillValue.__new__(   s!    {{3q!!rC   rH   )r4   r5   r6   rJ   rB   rC   rD   rF   rF   '   s(             rC   rF   c                   t    e Zd Z ee eed           e eedd          d                    Z	d Z
dS )	ShaderzIf true shade to x axisr"      )lohiz(AxisColor, LineColor))BASEverticalr   c                     d d g}t          | d|          p|}|d         st          |dt          j                  |d<   |d         s||d<   d S d S )Nr   r   r,   r   )getattrr   white)rN   lpgrowNorowColorrowcs          rD   shadezShader.shade3   s]    $KD!$$)t@GB{6<@@QqTt$HQqTTT$$rC   N)r4   r5   r6   r7   r   r8   r@   
SequenceOfr:   rA   r_   rB   rC   rD   rP   rP   -   sr        wH<	0IJJJjj!qAAAH`aaa
 
 
H
% % % % %rC   rP   c                       e Zd Zd ZdS )NoFillerc                     d S rH   rB   rN   rY   rZ   r[   r\   pointss         rD   fillzNoFiller.fill:   s    rC   N)r4   r5   r6   rf   rB   rC   rD   rb   rb   9   s#            rC   rb   c                   |    e Zd ZdZ e eed           eed           eed                    Zd Z	d Z
d	S )
Fillerz#mixin providing simple polygon fillzfiller interior colorr"   zfiller edge colorzfiller edge widthr,   r*   r)   c                     || _         d S rH   )__dict__)rN   kws     rD   __init__zFiller.__init__D   s    rC   c                     |                     t          |t          | d|          t          | d|          t          | dd                               d S )Nr,   r*   r)   皙?ri   )addr   rW   rd   s         rD   rf   zFiller.fillG   sb    	gfd;x88]8<<]3779 9 9 	: 	: 	: 	: 	:rC   N)r4   r5   r6   __doc__r7   r8   r:   r?   rA   rm   rf   rB   rC   rD   rh   rh   =   s        --w L5LMMM"l=7JKKK"l>8KLLL
 
 
H
  : : : : :rC   rh   c                       e Zd ZdS )ShadedPolyFillerNr4   r5   r6   rB   rC   rD   rs   rs   M           DrC   rs   c                       e Zd ZdS )
PolyFillerNrt   rB   rC   rD   rw   rw   P   ru   rC   rw   )AbstractLineChartc                      e Zd ZdZ ee eedd           eedd           edd           edd	           edd
           ee	d           ee	d           edd           edd           edd           edd           eddd           eedd           eedd                    Z
d Zed             Zej        d             Zd Zd Zd Zd Zd Zd Zej        ddfdZdS ) LinePlotzLine plot with multiple lines.

    Both x- and y-axis are value axis (so there are no seperate
    X and Y versions of this class).
    zIf true reverse plot order.r   r$   z,Distance between a data point and its label.Nz(Handle to the list of data point labels.r"   z9Formatting string or function used for data point labels.zHexplicit array of line label values, must match size of data if present.z.Color used for background border of plot area.0Color used for background interior of plot area.zHandle of the lines.zHandle of the x axis.zHandle of the y axis.z2Data to be plotted, list of (lists of) x/y tuples.z<list of callables, will be called with self, xscale, yscale.z If true use separate line group.z#If true use draw grids before axes.)rT   reversePlotOrderlineLabelNudge
lineLabelslineLabelFormatlineLabelArrayr*   r,   lines
xValueAxis
yValueAxisdataannotations
behindAxes	gridFirstc                    t          j        |            d| _        t                      | _        t                      | _        ddg| _        t          t                    | _
        d| j
        _        d| _        t          j        | j
        d         _        t          j        | j
        d         _        t          t"                    | _        d | _        d | _        d| _        d | _        g | _        d| _        d| _        d S )Nr   )r   r   )rQ   rQ   )      @r   )   r   )      )r   rQ   rQ   r   r   rQ   )r   r   r      r   
   )r   rm   r|   r   r   r   r   r   r   r!   r   r)   joinedLinesr   redr*   bluer   r~   r   r   r}   _inFillr   r   r   rN   s    rD   rm   zLinePlot.__init__l   s    $ !$,,$,, 21	
 --?@@
!"
$*J
1!$*K
1!1%88#" !
 rC   c                 "    | j         j        dk    S )Nr'   r   r1   r   s    rD   r   zLinePlot.joinedLines   s    z#\11rC   c                 &    |rdnd| j         _        d S )Nr'   r&   r   )rN   rM   s     rD   r   zLinePlot.joinedLines   s    /0<||f
rC   c                 t   t          dd          }ddg}t                      }d|_        d|_        d|_        d|_        ||_        d|_        d	|_        t          j
        |_        t          j        |j        d
         _        t          d          |j        d
         _        t          j        |j        d         _        t          d          |j        d         _        d
|j        _        d|j        _        d|j        _        d
|j        _        d|j        _        d|j        _        |                    |           |S )z Shows basic use of a line chart.     r   r   r   r   )g      @r   r   2   }   ,  r   %2.0fr   FilledCircleFilledDiamondr      )r   rz   xyheightwidthr   r   r   r   blackr*   r   r   r   r-   r   r   valueMinvalueMax	valueStepr   rp   )rN   drawingr   rY   s       rD   demozLinePlot.demo   s    #s## 23
 ZZ	$"(*'77"(+'88!"!""#!"!""#BrC   c                    t          | j                  | _        t          t	          t          t           | j                                      | _        t                      }g j        }| j	        j
        }| j        j
        }| j        }t          |          }t          |          D ]\  }}t          |t                    r\|j        }	d|	cxk    r|k     r3n n0|	|k    rt!          d|z            |                    ||	f           nt!          d|d|	          g j        }
t          |          D ]f\  }}|d         } |
t%          |          r% |t'          t)          |                              n
 ||           ||d                   f           g ||
j                   |j        }|D ]\  }}	t          ||         |	          ||<   t          |          | _        || _        dS )zWorks out where they go.

        Sets an attribute _positions which is a list of
        lists of (x, y) matching the data.
        r   z)data row %r may not be paired with itselfz	data row z! is paired with invalid data row r   N)lenr   _seriesCountmaxlistmap
_rowLengthsetappendr   scaler   	enumerate
isinstancer   other
ValueErrorrp   r   mktimemkTimeTuple__self___pairInFills
_positions)rN   pairsPxscaleyscaler   nr[   r]   r   r&   colNodatumxvs                 rD   calcPositionszLinePlot.calcPositions   s      	NNd3s49#5#56677I&&yII#D// 	 	JE3#~.. h	e::::A:::::e||()TW\)\]]]IIuUm,,,,$*Y^Y^Y^`e`e%fggg9D )#  u1X7<RyyPFF6+b//22333ffRjjF58$$    AdmJ " 	6 	6LE5%ahu55AeHHJJrC   c                 @   | j         }| j        |         |         d         }|d}nt          |t                    r |dk    r| j        |         |         }nT||z  }nNt          |d          r,t          |d          s ||          }n" || ||||          }nt          d|z            |rq| j        ||f         }|j        sdS |dk    r|	                    ||| j
        z              n|	                    ||| j
        z
             |                    |           nd}|S )z*Draw a label for a given item in the list.r   Nvalues__call____labelFmtEX__z6Unknown formatter type %s, expected string or functionr   )r   r   r   strr   hasattrr   r~   visible	setOriginr}   setText)	rN   r[   r   r   r   labelFmt
labelValue	labelTextlabels	            rD   _innerDrawLabelzLinePlot._innerDrawLabel   sY    'Yu%e,Q/
II%% 	a8## /6u=		$z1		Xj)) 	a8$455 ;$HZ00		$HT%a::		UW__``` 
	OUEN3E=(&&1uu1t':#:;;;;1t':#:;;;MM)$$$$ErC   c                 \    |                     |                     ||||                     dS )zLDraw a label for a given item in the list.
        G must have an add methodN)rp   r   )rN   Gr[   r   r   r   s         rD   	drawLabelzLinePlot.drawLabel  s0     	
d""5q3344444rC   c                   67 t                      }| j        }| j        }t          | dd           }|r!t	          |j        |j                  }|j        }| j        }| j        }t          | dd           }	| j	        6t          6          7|	s0| j        s)67fdt          t          |                    D             rRt          |	dd           }
|
|j        }
n|                    |
          }
|j        }||j        z   }t          | d|          }d }t          | d|          }t          t          |                    }| j        rt%          |          }|D ]6}||         }|7z  }6|         }t          |dd           }t          |dd           }t          |d	|          }t          |d
|	          }t          |dd           }t          |dd           }t'          |d          r|j        }nt'          6d          r6j        }nd }|dk    rW|t+          t-          t          |                    dz
  }|dk    r| j        |z  dz
  n| j        }t          |dt1          d                    }| j        }|                    d          }t+          |j        |          }t	          |j        |j        z   |          } | j        j        }!|!| j        j        z   }"t3          |t0                    r	||dz  z  }n|dz  }|D ]g\  }}#|}$|#|k     r| n|}%||$dz  z  }||!k     r|$|!|z
  z  }$|!}n||$z   |"k    r|$|"|z
  z  }$|                    t7          ||%|$|#|%z
  |||                     hn|dk    rt9          |          }&|st3          |t:                    rt          |dd           }'t3          |t:                    r+|&t9          t%          ||j                                     z   }(n||
g|&z   ||
gz   }(|'r|'                    | ||||(           n0|                    tA          |(|||k    r|nd |pd                     |r|dk    s||k    r:tC          |&|dd          })|r||)_        |r||)_"        |                    |)           t'          |d          r|j#        }*nt'          6d          r6j#        }*nd }*|*r|r| j$        |         }+tK          |          D ]\  },}-||,f6v rt          6||,f         d|*          }.n|*}.|.|*u r|*}/|}0n|.}/t          |/d	|          }0tM          tO          |/|,          |-d         |-d         |0          }/|/r3|r||+|,         d         |z  dz  z  |/_(        |                    |/           n|r| j$        |         }+tK          |          D ]\  },}-t          6||,f         dd           }.|.s!t          |.d	t          |.d|                    }0tM          |.|-d         |-d         |0          }/|/r3|r||+|,         d         |z  dz  z  |/_(        |                    |/           tK          |          D ]#\  }1}2|2\  }3}4| )                    |||1|3|4           $t          |dd           }5|5r|5*                    | ||||           8|S )N_bubblePlotr   c                 H    g | ]}t          |z           d d          |S )r3   FrW   ).0r[   r   
styleCounts     rD   
<listcomp>z&LinePlot.makeLines.<locals>.<listcomp>$  sJ     L L L5"5z)9#:8EJJL L L LrC   rK   _inFillG_lineGr*   r)   r,   r3   r+   r1   r(   r   r   r2   r   g{Gzt?      ?rQ   )r)   r*   r,   r'   r/   ro   ri   )r*   strokeLineCapstrokeLineJoinr-   r.   )+r	   r   r   rW   min_bubbleRadius
_bubbleMaxr   r   r   r   r   range_yr   _x_lengthr|   reversedr   r)   r   r   r   
Percentager   rp   r
   r   r   r   rf   r   r   r+   r-   r   r   r   r   sizer   r_   )8rN   rZ   yAxA
bubblePlotbubbleR	bubbleMaxr   r   r   inFillYinFillX0inFillX1inFillGbwlGRr[   r]   
styleRowNorowStyler*   r)   r,   r3   dashr1   r   r   r2   y0byposbynegxminxmaxr   w_y0re   r/   fpointsr&   uSymboldrowjxyjuSymbolr-   symColorr   r   x1y1r.   r   r   s8                                                         @@rD   	makeLineszLinePlot.makeLines  s   GG__T-55
 	&"*2+;<<GI'O$y..
ZZ
 	1t( 	1L L L L LE#a&&MM L L L	1 ght44G%((7++uH"*,Hd:a00GT(1%%#a&&MM 1hqkk! l	B l	BEE(C+JZ(H!(=>>K!(=>>K+{CCIXhw77F8%6==DT::Ix//  ,.. ) %:CAJJ!+A/0ss$*Q,**
B&x
:b>>JJHABRLLEQYr22E?-D$/"99D!(:66 *hun,%c\ 
s 
sDAqA#$R44%%UC1HAvvTAX 1tTAXEE$qQquQ\gpqqqrrrr
s L((  	_ZN;; 	_$Xx>>F!#n55 S"(78AciL3I3I+J+J"J#+G"4v"='@R"R _DyIIIIGGicnpycycyT_T_  @D  QV  Q]  Z]  %^  %^  %^  _  _  _ !k9.D.D#F{QRbcdddD 1+0( 4/3,FF4LLLx** "/)) , &6di&6t%cNN & &DAb"1~..#*5A+>x#P#P#*7**!(#.!)#*6+k#J#J+Jva,@,@Ar!uXVVF &% N*1471:i3G#2M*MFKf&" 6di&6t%cNN & &DAb&uZ\':8DIIH#-X&xGH][f<g<ghhH+HRU2a5JJF &% N*1471:i3G#2M*MFKf  )~~ 8 8eBq%B7777Xx66FAv||D5SAAArC   c                 	   | j         }| j        }t          | dd           rdx|_        |_        |                    | j        | j        | j                   |r||_        |r||_        |	                    | j
                   |                    d          }|| j        | j        z   k    s|| j        k     r| j        }n|}|                    | j        || j                   |	                    | j
                   |                                  t                      }|                    |                                            | j        s| j        r||                                 | j        r-t                      | _        |                    | j                   | j        r-t                      | _        |                    | j                   |                                 |                                 |j        r|j        gpg }|j        r|j        gpg }t          |dd          }|d k    rD|dv r"|                    |j        |j        z              |dv r|                    |j                   t          |dd          }|d k    rD|dv r"|                    |j        |j        z              |dv r|                    |j                   | j        r<|                    || |j        |           |                    || |j        |           |                    |                                           |                    |                                           | j        sbt          |d	d
          }	t          |d	d
          }
|	s|                    || |j        |           |
s|                    || |j        |           t          | dg           }|D ]=}t          |dd           r*|                     || |j        |j                             >|                    |                                            | j        s@|	r|                    || |j        |           |
r|                    || |j        |           |D ]=}t          |dd           s*|                     || |j        |j                             >|S )Nr   r   r   skipGridnone)bothtop)r  bottom)parentdimexcludedrawGridLastFr   beforeLines) r   r   rW   r   setPositionr   r   r   joinAxis	configurer   r   r   r   r	   rp   makeBackgroundr   r   _joinToAxisr   r   visibleAxisr   r   r   r   r   makeGridgetGridDimsdrawr  )rN   r   r   xAxisCrossesAtr   rZ   xAexyAexr  xAdglyAdglr   as                rD   r'  zLinePlot.draw  s   __4d++ 	0.//BNR^
tvtvt{333Rr{Rr{
TY !dft{2228O8OAAA
tvq$*---
TYGG	d!!##$$$< 	#4? 	#NN| % %dm$$$ ##ggdk"""

~)25'/R~)25'/R2j00T>>>))BE"*,---,,,BE"""2j00T>>>))BE"*,---,,,BE"""> 	GKK".KFFFKK".KFFF	bggii	bggii~ 	UB~e44EB~e44ET"++att+TTTT"++att+TTTd=44 	1 	1Aqt,, 1aaRXbh//000	dnn~ 	QPbkk!4BN4kPPPPbkk!4BN4kPPP 	1 	1A1]400 1aaRXbh//000rC   Tc                    	
 ddl m	m
 fdt          | dg           D             }	
fd}||_        |                    |           || _        d S )Nr   )r	   Linec                 >    g | ]}t          |d d          k    |S )r0   Nr   )r   r-  r0   s     rD   r   z)LinePlot.addCrossHair.<locals>.<listcomp>  s1    aaaQGAfUYDZDZ\`D`D`qD`D`D`rC   r   c           
      <    |          } |          }             }|j         }|                     	|j        ||j        |j        z   |
                     |j         }|                     	||j        ||j        |j        z   
                     |S )N)r*   r)   )r   rp   r   r   r   )rN   xScaleyScaler   r   rZ   r   r   r	   r/  r*   r)   r   yvs           rD   
annotationz)LinePlot.addCrossHair.<locals>.annotation  s    r

Ar

AABEE$$ruQruRZ/kVabbbcccBEE$$qqrz!1kVabbbcccHrC   )reportlab.graphics.shapesr	   r/  rW   r  r   r   )rN   r0   r   r4  r*   r)   r  r   r5  r	   r/  s    `````   @@rD   addCrossHairzLinePlot.addCrossHair  s    99999999aaaa'$}R"@"@aaa	 	 	 	 	 	 	 	 	 	 "-
:&&&&rC   )r4   r5   r6   rq   r7   r   r8   r@   r9   r:   rA   rm   propertyr   setterr   r   r   r   r  r'  r   r   r7  rB   rC   rD   rz   rz   T   s         
 wH'<	8Udefff%h5crsttt!\$-WXXX&,t2mnnn%d1{|||"l=7ghhh L5ghhhT(>???!\$-DEEE!\$-DEEE|D'[\\\"l4.l{|}}}!\)2Tcdeee L1Vefggg
 
 
H$% % %N 2 2 X2 = = =$ $ $N) ) )V     D5 5 5
N N N`C C CJ 28!X\ ' ' ' ' ' 'rC   rz   c            
           e Zd Z ee eed           eed           eed           eed                    ZdZdZ	dZ
d	Zd
 Zd Zd Zd ZdS )
LinePlot3Dzdx/dzr"   zdy/dzzdepth of an individual serieszz gap around series)rT   theta_xtheta_yzDepthzSpacer   r   r   c                     t                               |            | j        }| j        }| j        }| j        j        dk    r||z  |dz   |z  z   }n|d|z  z   }| j        |z  | _        | j	        |z  | _
        d S )Nparallel_3dr   rQ   )rz   r   r   r?  r>  r   styler<  _3d_dxr=  _3d_dy)rN   nSeriesr?  r>  	_3d_depths        rD   r   zLinePlot3D.calcPositions  s    t$$$#? -//	6'99II6)Il9,l9,rC   c                 Z    | j         }| j        j        dk    r|| j        |z   z  |z   }n|}|S )NrA  )r?  r   rB  r>  )rN   r[   r?  z0s       rD   _calc_z0zLinePlot3D._calc_z0  s;    ? -//F*+F2BBB	rC   c                 6    ||| j         z  z   ||| j        z  z   fS rH   )r<  r=  )rN   r   r   zs       rD   _zadjustzLinePlot3D._zadjust  s#    4<1T\>!111rC   c                    t          | dd           }|r
J d            | j        }| j        }t          t	          t          |                              }| j        r|                                 t          | dd           }|r
J d            | j        }| j	        }| j
        }| j        }	ddlm}
  |
            }ddlm}m} | j        j        dk    rt          | d	d
          }t          | dd           rpddlm} t          t)          ||                    } |||          }d }|D ]8\  }}}}||k    r|}d}n|d
z  }||                             ||z   ||f           9d }n|}nd }|}t          | j                  }|D ]}||         }t          |          }| j        ||z           }|j        }t          |dd           }|                     |          }||z   } t3          |d          r|j        }!n$t3          | j        d          r| j        j        }!nd }!| j        r_|r]||         }"|"d         \  }#}$t	          d
t          |"                    D ],}%|"|%         \  }&}' |||#|&|$|'|| ||	|d |d d d d           |&|'}$}#-t3          |d          r|j        }(n$t3          | j        d          r| j        j        }(nd }(|(r[|D ]X})||%         \  }&}' ||&|'|          \  }&}'t;          |(|)d         |)d
         |          }*|*r|                    d
|||&|'|*f           Yt	          |          D ]R}%||%         \  }&}' ||&|'|          \  }&}'|                     ||%|&|'          }+|+r|                    d|||&|'|+f           S|                                  tC                      },|"                                D ]}-|,                    |-d                    |,S )Nr   z$_bubblePlot not supported for 3d yetr   zinFill not supported for 3d yetr   )
_FakeGroup)_make_3d_line_infofind_intersectionsrA  _3d_tilewidthr   _find_intersections)copy)smallr+   r)   ro   )fillColorShaded	tileWidthr*   r)   r+   shadingr-   rQ   )#rW   r   r   r   r   r   r|   reverser>  rL  r<  r=  $reportlab.graphics.charts.linechartsrN  !reportlab.graphics.charts.utils3drO  rP  r   rB  rS  r   insertr   r*   rI  r   r)   r   r-   r   rp   r   sortr	   value).rN   r   r   	positionsr   r3   r>  rL  r<  r=  rN  FrO  rP  rV  rS  
fpositionsIicir  r   r   jcr   r[   r]   r   r  r\   r  rH  z1r   frowx0r  r   r  r  r  r  r-   LrZ   rM   s.                                                 rD   r  zLinePlot3D.makeLines  s   T-55
EEEEEE 'O	s9~~&&'' -!))+++i--<<<<<< =,,CCCCCCJLL\\\\\\\\? -//_Q77It1$77 '%%%%%%!#d9"5"566
&&z	BBB  5 5GAa!1uuAqM((2qe4444 		&

I"J __
 1	/ 1	/EE"CCAz%*"45H+H8%6==Du%%BfBx//  ,]33 
.  ( 
(%e,D!!WFB!&qT!3!3 ( (!%eB**Ar2r2r2 ' ($),0dTX(+	- - - -
 "$RBx** "/X.. *+ = = =B ZFB%XbB//FB+GBqE"Q%IIF<quua2bF%;<<< q / /UB!"R++B((r2>>.aeeQr"R1-...	/ 	
GG((AAEE!B%LLLLrC   N)r4   r5   r6   r7   rz   r8   r9   rA   r<  r=  r>  r?  r   rI  rL  r  rB   rC   rD   r;  r;    s        wH,xg666,xg666h-LMMMh-BCCC	
 
 
H GGFF
- 
- 
-  2 2 2j j j j jrC   r;  ) i0      Y@)韼0gq"Uo
Y@)c0gt	dY@)0gY@)+0g=hY@)0gkRY@)0g#޺Y@)V0g޴ϙY@)0grwY@)0g_i]^Z@)0g#T[@)0g/+^v[@)J0bȺ[@)0rx  )s1gY?[@)1gr[@);1ga:{[@)1g'Q=c[@)1gCU[@)f1gL[@)1gі⠍[@)/	1g`[@)	1g R\@)	1g%^O.\@)Z
1gc3v\@)
1g+m\@)-1g^;[@)-1gP[@)K.1g&}kS\@).1g[@)/1gUP[@)v/1g|\pSe\@) rj  )rl  rk  )rm  g333333Y@)rn  g     Y@)ro  gyY@)rp       Y@)rq  r  )rr  fffffY@)rs  r  )rt  g33333Y@)ru  gffffffZ@)rv  g33333[@)rw  gfffff[@)ry  g[@)rz  gfffffF\@)r{  ǧ[@)r|  g33333[@)r}  g33333\@)r~  gfffff[@)r  g33333S[@)r  g[@)r  g[@)r  fffff&\@)r  gL\@)r  皙y\@)r  g\@)r  g,\@)r  r  )r  g33333\@)r  g\@)r  r  )r  gfffff\@c                       e Zd ZdZd ZdS )SimpleTimeSeriesPlotzsA customized version of LinePlot.
    It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
    c                     t                               |            t                      | _        t	                      | _        t          | _        d S rH   )rz   rm   r   r   r   r   _monthlyIndexDatar   r   s    rD   rm   zSimpleTimeSeriesPlot.__init__  s9    $.00$,,%			rC   N)r4   r5   r6   rq   rm   rB   rC   rD   r  r    s-         & & & & &rC   r  c                   n    e Zd ZdZ ee edd           eed                    Zd Z	d
dZ
d	 ZdS )GridLinePlota  A customized version of SimpleTimeSeriesSPlot.
    It uses NormalDateXValueAxis() and AdjYValueAxis() for the X and Y axes.
    The chart has a default grid background with thin horizontal lines
    aligned with the tickmarks (and labels). You can change the back-
    ground to be any Grid or ShadedRect, or scale the whole chart.
    If you do provide a background, you can specify the colours of the
    stripes with 'background.stripeColors'.
    Nz3Background for chart area (now Grid or ShadedRect).r"   z&Scalefactor to apply to whole drawing.)rT   
backgroundscaleFactorc                     ddl m} t                              |            d | _        t                      | _        d| j        _        d| j        _        d| j        _	        d| j        _
        |j        | j        _        d S )Nr   r   
horizontalr   r   )reportlab.libr   r  rm   r  r   r  orientationuseRectsuseLinesr)   r   r*   )rN   r   s     rD   rm   zGridLinePlot.__init__  su    ((((((%%d+++&&&2##$ #$ &)#&,l###rC   c                    ddl m} |st          dd          }t                      }d|_        d|_        d|_        d|_        t          |_	        d|_
        |j        |_         |j        d	d
dddd	          }||j        d         _        d|j        d         _        d |j        d         _         |j        dddddd	          }||j        d         _        d|j        d         _        ddg|j        d         _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        _        d|j        _        d|j        _        d|j        j        _        t;                      |_        |j        |j         g|j        _!        d|j        _"        |#                    |d           |S )Nr   r   r   r   r   r   r   r   d   A      zPANTONE 288 CV)spotNamedensityrQ   O   [   zPANTONE Wm Red CVr   r   startr  iiz	{mm}/{yy}z%5d%% r   rU   plot)$r  r   r   r  r   r   r   r   r  r   r   r   r*   
PCMYKColorr   r)   r+   r   labelsfontSize
textAnchor	boxAnchorangledxdyxLabelFormatr   labelTextFormattickLeftr   r  pink	lightbluestripeColorsr  rp   )rN   r   r   rY   c0c1s         rD   r   zGridLinePlot.demo  s   (((((( 	(c3''G^^	#Vs2a5EsSSS"$"#&*#VqBq3FPSTTT"$"#'(e#(*%*1'),&%(""#"$%0"(0%!"(*%&,k63C%D"$.!BvrC   c                    | j         | j        }}|r||_        |r||_        |                    | j        | j        | j                   |                    | j                   |	                    d          }|| j        | j        z   k    s|| j        k     r| j        }n|}|                    | j        || j
                   |                    | j                   | j        }t          |t                    r,|j        dk    r|j        rt!          t#          |j	        |j        g|j        z                       }g }t'          t)          |          dz
            D ])}|                    ||dz            ||         z
             *||_        n|j        dk    r|j        rt!          t#          |j	        |j        g|j        z                       }	g }t'          t)          |	          dz
            D ])}|                    |	|dz            |	|         z
             *||_        nt          |t.                    r| j        |j        _        | j        |j        _        | j
        |j        _
        | j        |j        _        | j        |j        _        | j        |j        _        | j
        |j        _
        | j        |j        _        |j        j        dk    r|j        rt!          t#          |j	        |j        g|j        z                       }g }t'          t)          |          dz
            D ])}|                    ||dz            ||         z
             *||j        _        n|j        j        dk    r|j        rt!          t#          |j	        |j        g|j        z                       }	g }t'          t)          |	          dz
            D ])}|                    |	|dz            |	|         z
             *||j        _        |j        j        dk    r|j        rt!          t#          |j	        |j        g|j        z                       }g }t'          t)          |          dz
            D ])}|                    ||dz            ||         z
             *||j        _        n|j        j        dk    r|j        rt!          t#          |j	        |j        g|j        z                       }	g }t'          t)          |	          dz
            D ])}|                    |	|dz            |	|         z
             *||j        _        |                                  | j
        | j        | j        }}}
|r|dk    r|dd|ddf|_        nt;                      }|                    |                                            |                    | j                    |                    | j                   |                    |                                             |S )Nr   rU   r   r  )!r   r   r   r  r   r   r   r!  r   r   r   r  r   r   r  _tickValuesr   r   	_valueMinr   r   r   
deltaStepsr   grid0grid1r   r  	transformr	   rp   r"  r  )rN   xvayvar(  r   backxposstepsrd  yposr   r   r  rZ   s                 rD   r'  zGridLinePlot.draw  sn   ?DOS"s"s444di    1dft{2228O8OAAA4:...di   dD!! 0	.:--#/-C	CM?S_+LMMNNs4yy{++ 6 6ALLacT!W!45555"'!\11co1C	CM?S_+LMMNNs4yy{++ 6 6ALLacT!W!45555"'j)) #	.6DJL6DJL#zDJ $DJ6DJL6DJL#zDJ $DJ z%333C	CM?S_+LMMNNs4yy{++ 6 6ALLacT!W!45555(-
%%'<77CO7C	CM?S_+LMMNNs4yy{++ 6 6ALLacT!W!45555(-
%z%333C	CM?S_+LMMNNs4yy{++ 6 6ALLacT!W!45555(-
%%'<77CO7C	CM?S_+LMMNNs4yy{++ 6 6ALLacT!W!45555(-
%%)Zd>N{v 	;>>&1k!A>AKKA	d!!##$$$	do	do	dnnrC   rH   )r4   r5   r6   rq   r7   rz   r8   r?   rA   rm   r   r'  rB   rC   rD   r  r    s          wH!\$-bccc"l>8`aaa
 
 
H
	3 	3 	3" " " "HT T T T TrC   r  c                       e Zd ZdZd Zd ZdS )AreaLinePlotz@we're given data in the form [(X1,Y11,..Y1M)....(Xn,Yn1,...YnM)]c                 h    t                               |            d| _        d| _        g d| _        d S )Nr   ))r      r  r  )rQ      r      )r   r  F   (   )rz   rm   r   r|   r   r   s    rD   rm   zAreaLinePlot.__init__i  s6    $ !===			rC   c                    	 | j         }t          |          }t          |d                   }|dgz  }g | _         t          d|          D ]s}g }t          |          D ]E}||         ||         |         z   ||<   |                    ||         d         ||         f           F| j                             |           tt                              |           || _         S # || _         w xY w)Nr   r   )r   r   r   r   rz   r'  )rN   odatar   mSrd  Dr  s           rD   r'  zAreaLinePlot.drawo  s    	IEE

AE!HA1#ADI1QZZ $ $q 1 1AQ4%(1+-AaDHHeAhqk!A$/0000	  ####==&&DIIDIs   CC 	C(N)r4   r5   r6   rq   rm   r'  rB   rC   rD   r  r  g  s8        JJ> > >    rC   r  c                       e Zd Zd ZdS )SplitLinePlotc                    t                               |            t                      | _        t	                      | _        g d| _        d | j        _        d| j        _        d| j        _	        d| j        _
        t          j        d          | j        d         _        t          j        d          | j        d         _        t          j        d          | j        d         _        d S )N))i1ffffff?皙?        )i1r  r  r  )iQ1r  r  r  )i1r  r  r  )i1r  r  r  )i}1r  r  r  )i1r  r  r  )i1r  r  r  )i	1r  r  r  )im1r  r  r  )i1r  r  r  )i51r  r  r  )i1r  r  r  )i1r  r  r  )ia1r  r  r  )i1r  r  r  )i)1r  r  r  )i1r  r  r  )i1r  r  r  )i1r  r  r  )i1r  r  r  )i}1r  r  r  )i1r  r  r  )iE1r  r  r  )i1r  r  r  )i1r  r  r  )iq1r  r  r  )i1r  r  r  )i91r  r  r  )i1r  r  r  )i1r  r  r  )i2r  r  r  )i)2r  r  r  )i2r  r  r  )i2r  r  r  )iU2r  r  r  )i2r  r  r  )i2r  r  r  )i2r  r  r  )i2r  r  r  )iI2r  r  r  )i2r  r  r  )i2r  r  r  )i>2r  r  r  )i9?2r  r  r  )i?2r  r  r  )i@2r  r  r  )ie@2r  r  r  )i@2r  r  r  )i-A2r  r  r  )iA2r  r  r  )iA2r  r  r  )iYB2r  r  r  )iB2r  r  r  )i!C2r  r  r  )ie2r  r  r  )iIf2r  r  r  )if2r  r  r  )ig2r  r  r  )iug2r  r  r  )ig2r  r  r  )i=h2r  r  r  )ih2r  r  r  )ii2r  r  r  )iii2r  r  r  )ii2r  r  r  )i1j2r  r  r  )i2r  r  r  )iY2Q?
ףp=
?r  )i2r  r  r  )i!2r  r  r  )i2r  r  r  )i2r  r  r  )iM2r  r  r  )i2r  r  r  )i2r  r  r  )iy2r  r  r  )iݐ2r  r  r  )iA2r  r  r  )i2r  r  r  )ii2Q?RQ?r  )iʹ2r  r  r  )i12r  r  r  )i2r  r  r  )i2r  r  r  )i]2r  r  r  )i2r  r  r  )i%2r  r  r  )i2r  r  r  )i2r  r  r  )iQ2r  r  r  )i2r  r  r  )iy2
ףp=
?Q?r  )i2r  r  r  )iA2r  r  r  )i2r  r  r  )i	2r  r  r  )im2r  r  r  )i2r  r  r  )i52r  r  r  )i2r  r  r  )i2r  r  r  )ia2r  r  r  )i%3r  r  r  )i3(\?Gz?r  )i3r  r  r  )iQ3r  r  r  )i3r  r  r  )i3r  r  r  )i}3r  r  r  )i3r  r  r  )iE3r  r  r  )i3r  r  r  )i3r  r  r  )iq3r  r  r  )i5)3r  r  r  )i)3)\(?Q?r  )i)3r  r  r  )ia*3r  r  r  )i*3r  r  r  )i)+3r  r  r  )i+3r  r  r  )i+3r  r  r  )iU,3r  r  r  )i,3r  r  r  )i-3r  r  r  )i-3r  r  r  )iEP3r  r  r  )iP3
ףp=
?r   Q?)iQ3r  r   r  )iqQ3r  r   r  )iQ3r  r   r  )i9R3r  r   r  )iR3r  r   r  )iS3r  r   r  )ieS3r  r   r  )iS3r  r   r  )i-T3r  r   r  )iT3r  r   r  )iUw3r  r   r  )iw3333333?=
ףp=?(\?)ix3r  r  r  )ix3r  r  r  )ix3r  r  r  )iIy3r  r  r  )iy3r  r  r  )iz3r  r  r  )iuz3r  r  r  )iz3r  r  r  )i={3r  r  r  )i{3r  r  r  )ie3r  r  r  )iɞ3p=
ף?r  RQ?)i-3r  r  r  )i3r  r  r  )i3r  r  r  )iY3r  r  r  )i3r  r  r  )i!3r  r  r  )i3r  r  r  )i3r  r  r  )iM3r  r  r  )i3r  r  r  )iu3r  r  r  )i3皙?r  r   )i=3r  r  r   )i3r  r  r   )i3r  r  r   )ii3r  r  r   )i3r  r  r   )i13r  r  r   )i3r  r  r   )i3r  r  r   )i]3r  r  r   )i3r  r  r   )i3r  r  r   )i3p=
ף?Gz?r   )iM3r  r  r   )i3r  r  r   )i3r  r  r   )iy3r  r  r   )i3r  r  r   )iA3r  r  r   )i3r  r  r   )i	3r  r  r   )im3r  r  r   )i3r  r  r   )i4r  r  r   )i4ro   皙?r   )i]4ro   r  r   )i4ro   r  r   )i%4ro   r  r   )i4ro   r  r   )i4ro   r  r   )iQ4ro   r  r   )i4ro   r  r   )i4ro   r  r   )i}4ro   r  r   )i4ro   r  r   )i:4ro   r  r   r   i3  iÙ r   i3  rQ   )r  rm   r   r   r   r   r   requiredRangeleftAxisPercentleftAxisOrigShiftMinleftAxisOrigShiftIPCr   toColorr   r*   r   s    rD   rm   zSplitLinePlot.__init__  s    d###.00'// xM  xM  xM	(,%*+'/0,/0,$*N8$<$<
1!$*N8$<$<
1!$*N8$<$<
1!!!rC   N)r4   r5   r6   rm   rB   rC   rD   r  r    s#        = = = = =rC   r  c           	          t          | t          t          f          s| f} d | D             } | r4t          t          t	          t
          ||fd|                               pdS )z0return max stringWidth for the list of strings Tc                     g | ]}||S rB   rB   )r   _fs     rD   r   z_maxWidth.<locals>.<listcomp>  s    2rC   c                      || ||          S rH   rB   )tsWfNfSs       rD   <lambda>z_maxWidth.<locals>.<lambda>  s    PRPRSTUWXZP[P[ rC   r   )r   tupler   r   r   r   )TfontNamer  s      rD   	_maxWidthr    sh    at%%/A4qaA`T#+h[[[\]^^__``edeerC   c            
           e Zd ZdZ ed+i ded eed          d eed          d eed	          d
 ee	d          d eedd          d eed          d eed          d ee
d          d ee
d          d eed          d ee	d          d ee	d          d eed          d  eed!          d" eed#          d$ eed%          Zd& Zd' Zd,d)Zd* Zd(S )-ScatterPlotzA scatter plot widgetrT   r   z!Width of the area inside the axesr"   r   z"Height of the area inside the axesouterBorderOnz/Is there an outer border (continuation of axes)outerBorderColorzColor of outer border (if any)labelOffsetz.Space between label and Axis (or other labels)r   r$   axisTickLengthszLenth of the ticks on both axesaxisStrokeWidthzStroke width for both axesxLabelzLabel for the whole X-AxisyLabelzLabel for the whole Y-Axisr   z#Data points - a list of x/y tuples.r*   z#Color used for border of plot area.r,   r{   leftPaddingzPadding on left of drawingrightPaddingzPadding on right of drawing
topPaddingzPadding at top of drawingbottomPaddingzPadding at bottom of drawingc                    t                               |            d| _        d| _        d| _        t
          j        | _        d | _        d}d}d}d | j	        _
        d | j	        _        d | j	        _        d| j	        _        d| _        d	| j        j        _        d
| _        d	| j	        j        _        g d| _        d| _        d| _        d| _        d| _        d| _        | j        |z   |dz  z   | _        | j        t5          t7          | j	        j                  | j	        j        j        | j	        j        j                  z   | _        | j        |z   |z   | j        j        j        z   | _        | | j        j        _        || j        _        || j        _         d| j        _!        | | j	        j        _"        || j	        _#        || j	        _         d| j	        _!        d| _$        d| j%        _        d| j%        _&        d| j%        _"        d| _'        tQ          dd          | j)        _*        tQ          dd          | j)        d         _*        tQ          dd          | j)        d         _*        t
          j+        | j)        d         _,        d S )N   M   r   r   rQ   r   z%szX Labler   zY Lable)))gQ?g=
ףp]O@)gl?gX9v.K@)g~jt?gX91@))g(\?gˡE='@)gx&1?g rhI@)g+?gE<Q@))gv?gFԸU@)gMb?g
ףp=A@)gK7A?gfffffB@r   r   r   r  z%.2fer   )r   r   FilledSquare)-rz   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  tickDownr)   
rangeRoundr  r  r   r~   r  r}   r   r   r-   greenr*   )rN   _labelOffset_axisTickLengths_axisStrokeWidths       rD   rm   zScatterPlot.__init__  sB   $
 &#' #' $(!+/'*+'*+'
& 
& 
&	 !"22LNCviDO$< = =t?U?^`d`o`v`  A  A  A#$44\A$/BXBaa%1M!#3 &6##)"%1M!#3 &6##)"##$ $'!)+$^;;;
'Q???
1'A>>>
1$*L
1!!!rC   c                    | j         | j        j        z   | j        j        j        dz  z   | j        j        j        z   }|dt          t          | j        j	                  | j        j        j
        | j        j        j                  z  z   }|| j        z   | j        z   }d| j        j	        z  }|t          || j        j        j
        | j        j        j                  z   }| j        | j        j        z   | j        j        j        dz  z   | j        j        j        dz  z   }|| j        j        j        z   | j        z   | j        z   }||fS )NrQ   r   z%.2f%%)r  r   r  r  r  r   r  r  r   r   r  r   r	  r  r  r  r   r
  )rN   txr  tys       rD   _getDrawingDimensionsz!ScatterPlot._getDrawingDimensions  s   do668N8QRS8STUYUdUkUttq3t788$/:P:Y[_[j[q[z{{{|dj=**DO,,yDO2;T_=S=\]]^ 88$/:P:STU:UVX\XgXnXwxyXyzdo$--dk9$/I2wrC   Nc                     |s'|                                  \  }}t          ||          }|                    |                                            |S rH   )r  r   rp   r'  )rN   r   r  r  s       rD   r   zScatterPlot.demo  sK     	%,,..EBrbnnGDIIKK   rC   c                    t          | j        j        j                  j        j        }|dk    rd}|| j        j        j        z  }t                              |           }| j	        }|rt                      }| j        | j        z   dz  |_        d|_        | j        j        j        |_        | j        j        j        |_        |                    |           |                    |           | j        }|rt                      }d|_        d|_        | j        | j        dz  z   |_        | j        j        j        |_        | j        j        j        |_        |                    |           |                    |           | j        rL|                    t+          | j        | j        | j        | j        | j        | j        j        d                      |                    | j        | j                   |S )Nr   g`"?g       @Z   )r*   r)   r,   )r   r   r  r  faceascentr  rz   r'  r  r   r   r   r   r   rp   r  r  r   r   r  r
   r  r)   shiftr  r  )rN   r   rY   r  xlr  yls          rD   r'  zScatterPlot.draw  s   t-677<C199Fdo,55 ]]4   	wwBF4:%s*BDBD/09BK/09BKJJvFF2JJJ 	wwBBHBDF4;s?*BD/09BK/09BKJJvFF2JJJ  	*FF4
DK%)%:%)_%@#') ) ) * * *
 	!4#5666	rC   rB   rH   )r4   r5   r6   rq   r7   rz   r8   r9   r@   r:   isString
isAnythingrA   rm   r  r   r'  rB   rC   rD   r   r     sM       w   HH (L8[\\\\)\(9]^^^^ %1LAr$s$s$s$s (4|MHh'i'i'i'i	
 #/,x>n}~"""" '3l8Bc&d&d&d&d '3l8B^&_&_&_&_ *\(9UVVVV *\(9UVVVV (<
9^____ #/,}Ch"i"i"i"i !-]As t t t t #/,x>Z"["["["[ $0<?\#]#]#]#] ".h=X!Y!Y!Y!Y  %1L@^$_$_$_$_!H&@1 @1 @1D	 	 	   ' ' ' ' 'rC   r   c                     t          dd          } ddg}t                      }d|_        d|_        d|_        d|_        ||_        d|_        t          j	        |_
        t          d	          |j        _        d
|j        d         _        d|j        d         _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        |                     |           | S )2A line plot with non-equidistant points in x-axis.r   r   r   r   r   r   r   r   UK_FlagrQ   r   r   r   r   )r   rz   r   r   r   r   r   r   r   r   r*   r   r   r-   r)   r   r   r   r   r   rp   r   r   rY   s      rD   sample1ar*  '  s     c3G 23
D
 
BBDBDBIBHBGBN\BN ++BHOBHQKBHQKBMBMBMBMBMBMKKOOONrC   c                     t          dd          } ddg}t                      }d|_        d|_        d|_        d|_        ||_        d|_        t          d	          |j	        _
        d
|_        t          j        |_        d|j        _        d|j        _        g d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        |                     |           | S )r'  r   r   r   r   r   r   r   r   Circler   r   r   r   rQ   r   r   r   r   %2.1fr   )r   rz   r   r   r   r   r   r   r   r   r-   r   r   r   r*   r   r   r   
valueStepsr  r   r   rp   r)  s      rD   sample1br0  M  s     c3G 23
D
 
BBDBDBIBHBGBN **BHO B\BNBMBM333BM$+BM!BMBMBMKKOOONrC   c                  $   t          dd          } ddg}t                      }d|_        d|_        d|_        d|_        ||_        d|_        t          d	          |j	        d
         _
        t          d          |j	        d         _
        d|_        t          j        |_        d
|j        _        d|j        _        g d|j        _        d|j        _        d
|j        _        d|j        _        g d|j        _        |                     |           | S )r'  r   r   r   r   r   r   r   r   r   r   r,  r   r   r-  r.  r   )r   rQ   r   r   r   )r   rz   r   r   r   r   r   r   r   r   r-   r   r   r   r*   r   r   r   r/  r  r   rp   r)  s      rD   sample1cr2  q  s     c3G 23
D
 
BBDBDBIBHBGBN#N33BHQK#H--BHQK B\BNBMBM333BM$+BM!BMBM.BMKKOOONrC   c                     d | D             S )z=Convert date strings into seconds and multiply values by 100.c                 N    g | ]"}t          |d                    |d         dz  f#S )r   r   r  )str2seconds)r   r   s     rD   r   z"preprocessData.<locals>.<listcomp>  s1    :::a[1!S):::rC   rB   )seriess    rD   preprocessDatar7    s     ;:6::::rC   c                     t          dd          } dg}t          |d                   |d<   t                      }d|_        d|_        d|_        d|_        ||_        d|_        t          d	          |j
        _        t          j        |_        t          t!          d
                    }t          t!          d                    }t          t!          d                    }t          t!          d                    }t          t!          d                    }t          t!          d                    }t          t!          d                    }	||j        _        |	|j        _        |||||||	g|j        _        t*          |j        _        d|j        j        d         _        d|j        j        d         _        d|j        _        d|j        _        d|j        _        d|j        _        |                     |           | S )r'  r   r   ))
25/11/1991r   )
30/11/1991gea?)
31/12/1991ga+e?)z
31/01/1992gvq-?)z
29/02/1992gm4@?)
31/03/1992gyT?)z
30/04/1992g )
k?)z
31/05/1992gcȎ{?)
30/06/1992gy,?)z
31/07/1992gQ צ?)z
31/08/1992g[B>٬?)
30/09/1992gY)?)z
31/10/1992g~@?)z
30/11/1992g30?)
31/12/1992g`"?r   r   r   r   r   r   r9  r:  r;  r<  r=  r>  r?  iirQ   z%4.2fr  n   )r   r7  rz   r   r   r   r   r   r   r   r   r-   r   r   r*   r   r   r   r   r   r/  seconds2strr  r  r  r   r   rp   )
r   r   rY   r  t0t1t2t3t4ends
             rD   sample2rH    s    c3G	
D& T!W%%DG	BBDBDBIBHBGBN 11BHO\BN;|,,--E	L))	*	*B	L))	*	*B	L))	*	*B	L))	*	*B	L))	*	*B
\**
+
+C"BM BM %r2r2r3?BM$/BM!!$BM!$BM$+BM! BM BMBMKKOOONrC   c                  v   t          dd          } t                      }|                     |           t          |j        d         d          |j        d         g|_        t          t          j        d          dd           |j        d         _	        d |j        d         _
        d |j        d         _
        | S )Nr   r   r   r   z#9f9f9f)r,   r)   r*   )r   r  rp   r   r   rh   r   r  r   r/   r*   )dcharts     rD   sampleFillPairedDatarL    s    CA ""EEE%LLL Aq11%*Q-@EJ!FN9,E,ERS`deeeEKN!%EKN!%EKNHrC   N)C__version__rq   r  r   reportlab.lib.validatorsreportlab.lib.attrmapreportlab.lib.utilsr   r   r6  r   r	   r
   r   r   r   reportlab.graphics.widgetbaser   r   r   $reportlab.graphics.charts.textlabelsr   reportlab.graphics.charts.axesr   r   r   r   reportlab.graphics.charts.utils"reportlab.graphics.widgets.markersr   r    reportlab.graphics.widgets.gridsr   r   r   reportlab.pdfbase.pdfmetricsr   r   reportlab.graphics.charts.areasr   utilsr   r!   rI   rF   rP   rb   rh   rs   rw   rZ  rx   rz   r;  r  r  r  r  r  r  r   r*  r0  r2  r7  rH  rL  rB   rC   rD   <module>rZ     s  
 G             & & & & # # # # . . . . . . . . ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ Y Y Y Y Y Y Y Y Y Y 6 6 6 6 6 6 f f f f f f f f f f f f - - - - I I I I I I I I L L L L L L L L L L = = = = = = = = 4 4 4 4 4 4 ! ! ! ! ! !
 
 
 
 
 
 
 
    #   
% 
% 
% 
% 
%_ 
% 
% 
%       : : : : : : : : 	 	 	 	 	vm 	 	 		 	 	 	 	 	 	 	 C B B B B Bc' c' c' c' c'  c' c' c'JM M M M M M M M^  @  A? B& & & & &8 & & &R R R R R' R R Rh    8   2= = = = =L = = =f f fQ Q Q Q Q( Q Q Qf# # #L! ! !H" " "J; ; ;: : :x    rC   