+
    bIi                       R t Rt^ RIt^ RIHtHtHt ^ RIHt ^ RI	H
t
HtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RIHtHt ^ RI 5 ^ RI!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t, ^ R	I-H.t.H/t/ ^ R
I0H1t1 ^ RI2H3t3 ^ RI4H5t5 ^ RI6H7t7 ^ R^-R^ZR^R^R^RRRRRROR/	t8^ R^-R^ZR^R^R^RRRRRROR/	t9Rt:R]:,
          t; ! R R]54      t< ! R R]/4      t=RPR lt>R t? ! R  R!]14      t@R" tAR# tBRQR$ ltCRRR% ltDR& tER' tFR( tG]P                  ! ]G4      tGR) tIRPR* ltJR+ tK]P                  ! ]K4      tKR, tLRPR- ltMR. tN ! R/ R0]O4      tP ! R1 R2]@4      tQ ! R3 R4]Q4      tR^ R5ISHTtTHUtUHVtVHWtW  ! R6 R7]/4      tX ! R8 R94      tYR: tZ]P                  ! ]Z4      tZ]U! R4      t[ ! R; R<]Q4      t\R= t]R> t^R? t_R@ t`RA taRB tbRC tcRD tdRE teRF tfRG tg]hRH8X  d    ^ RIiti^ RIIjHktk ]iP                  RJ,          ;'       g    RK.tl]l FR  tm]mP                  RL4      '       d   ]mMRM]m,          to]p! 4       ]o,          ! 4       tq]kP                  ! ]qRN]o,          4       KT  	  R# R# )Sz3.3.0z|Basic Pie Chart class.

This permits you to customize and pop out individual wedges;
supports elliptical and circular pies.
N)sincospi)colors)isNumberisListOfNumbersOrNoneisListOfNumbersisColorOrNoneisStringisListOfStringsOrNoneOneOf	isBooleanisListOfColorsisNumberOrNoneisNoneOrListOfNoneOrStringsisTextAnchorisNoneOrListOfNoneOrNumbersisBoxAnchorisStringOrNoneNoneOrEitherOrisNumberInRange
isCallable)uSymbol2SymbolisSymbol)*)GroupDrawingEllipseWedgeStringSTATE_DEFAULTSArcPathPolygonRectPolyLineLine)TypedPropertyCollection
PropHolder)PlotArea)_objStr)Labelcmpwswsseene  ni;  nwgHz>g     v@c                   ,   a  ] tR t^+t o R tR tRtV tR# )
WedgeLabelc                    R # N selfbas   &&ڌC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\venv\Lib\site-packages\reportlab/graphics/charts/piecharts.py	_checkDXYWedgeLabel._checkDXY,   s        c                   V P                   pVR9   d   \        V P                  R,          R,          4      ^-,          R,          pV^Z,          '       gJ   V P                  V,
          R,          p\        V4      ^8  d    Y#^ 8  ;'       d    ^-;'       g    R,          p\	        V RR4      ;'       d    \
        ;'       g    \        V,          pV P                  V4       V# )autoxh  g     F@_antiN)rD   autoy)	boxAnchorint_pmvabsgetattr_ANGLE2RBOXANCHOR_ANGLE2BOXANCHORr@   )r=   r>   nadas   &   r?   _getBoxAnchorWedgeLabel._getBoxAnchor.   s    ^^""tyy}c)*2-s2BGGii"n+r719a4;;B--#.B$wt,BB1BVVFVXZ[BNN2	rB   r;   N)__name__
__module____qualname____firstlineno__r@   rR   __static_attributes____classdictcell____classdict__s   @r?   r8   r8   +   s     
 
rB   r8   c                   >  a  ] tR t^:t o Rt]! Rc/ R]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR	]! ]	R
R7      bR]! ]
! ^ ^^4      RR7      bR]! ]
! ^ ^^4      RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]R R7      bR!]! ]R"R7      bR#]! ]R$R7      bR%]! ]R&R7      bR']! ]R(R7      bR)]! ]R*R7      bR+]! ]R,R7      bR-]! ]R.R7      bR/]! ]R0R7      bR1]! ]R2R7      bR3]! ]R4R7      bR5]! ]R6R7      bR7]! ]R8R7      bR9]! ]R:R7      bR;]! ]R<4      bR=]! ]R>4      bR?]! ]R@4      bRA]! ]RB4      bRC]! ]RD4      bRE]! ]RFR7      bRG]! ]RHR7      bRI]! ]RJR7      bRK]! ]RLR7      bRM]! ]RNR7      bRO]! ]! ]4      RP^RQ7      bRR]! ]RS4      bRT]! ]RUR7      bRV]! ]RWR7      bRX]! ]
! RYRZ4      R[R7      bR\]! ]
! R]R^R_4      R`R7      b tRa tRbtV tR]# )dWedgeProperties  This holds descriptive information about the wedges in a pie chart.

It is not to be confused with the 'wedge itself'; this just holds
a recipe for how to format one, and does not allow you to hack the
angles.  It can format a genuine Wedge object for you with its
format method.
strokeWidthzWidth of the wedge borderdesc	fillColorzFilling color of the wedgestrokeColorzColor of the wedge borderstrokeDashArrayzZStyle of the wedge border, expressed as a list of lengths of alternating dashes and blanksstrokeLineCapz#Line cap 0=butt, 1=round & 2=squarestrokeLineJoinz$Line join 0=miter, 1=round & 2=bevelstrokeMiterLimitz$Miter limit control miter line joinspopoutz How far of centre a wedge to popfontNamez"Name of the font of the label textfontSizez,Size of the font of the label text in points	fontColorz#Color of the font of the label textlabelRadiuszpDistance between the center of the label box and the center of the pie, expressed in times the radius of the pielabel_dxzX Offset of the labellabel_dyzY Offset of the labellabel_anglezQAngle of the label, default (0) is horizontal, 90 is vertical, 180 is upside downlabel_boxAnchorzAnchoring point of the labellabel_boxStrokeColorzBorder color for the label boxlabel_boxStrokeWidthzBorder width for the label boxlabel_boxFillColorzFilling color of the label boxlabel_strokeColorzBorder color for the label textlabel_strokeWidthzBorder width for the label text
label_textzText of the labellabel_leading label_widthzWidth of the labellabel_maxWidthz#Maximum width the label can grow tolabel_heightzHeight of the labellabel_textAnchorz$Maximum height the label can grow tolabel_visible True if the label is to be drawnlabel_topPaddingzPadding at top of boxlabel_leftPaddingzPadding at left of boxlabel_rightPaddingzPadding at right of boxlabel_bottomPaddingzPadding at bottom of boxlabel_simple_pointerzSet to True for simple pointerslabel_pointer_strokeColorzColor of indicator linelabel_pointer_strokeWidthzStrokeWidth of indicator linelabel_pointer_elbowLengthz&Length of final indicator line segmentlabel_pointer_edgePadz!pad between pointer label and boxlabel_pointer_piePadz!pad between pointer label and pieswatchMarkerz!None or makeMarker('Diamond') ...ra   advancedUsagevisiblezSet to false to skip displayingshadingAmountz"amount by which to shade fillColorshadingAnglez6shading changes at multiple of this angle (in degrees)shadingDirectionnormalantiz2Whether shading is at start or end of wedge/sectorshadingKindNlightendarkenzuse colors.Whiter or Blackerc                   ^ V n         RV n        \        R,          V n        \        R,          V n        ^V n        ^ V n        ^ V n        ^ V n        \        R,          V n	        \        R,          V n
        \        R,          V n        RV n        ^ ;V n        ;V n        V n        RV n        ^ ;V n        ;V n        ;V n        V n        RV n        RV n        R	V n        RV n        RV n        R
V n        R;V n        ;V n        ;V n        V n        RV n        ^ V n         ^V n!        \D        PF                  V n$        R	V n%        ^V n&        ^V n'        ^V n(        ^V n)        RV n*        R	V n+        RV n,        RV n-        R# )    Nrc   rd   ri   rj   rb   333333?rD         ?皙?startg@߾ @r   ).r_   rb   r!   rc   rd   rf   re   rg   rh   ri   rj   rk   rl   rm   rn   ro   rv   r   r   r   r   rp   rq   rr   rs   rt   ru   rw   ry   rz   r{   r|   r   r}   r   blackr   r   r   r   r   r   r   r   r   r   r=   s   &r?   __init__WedgeProperties.__init__q   sp   )-8-.?@ !&z2&z2'4;<<<(8nooo 6o9PSWSk&$(!$'!"&!%!$]aaa 0a43FIZ '$%!)/&),&)*&%&"$%! " (rB   )+rb   rk   ri   rj   rl   ro   r   rp   rs   rq   rr   rm   rn   r{   rw   r   rz   r   r   r   r   r   r   r   rt   ru   rv   r|   r   r}   ry   rh   r   r   r   r   rc   rd   re   rf   rg   r_   r   r;   )rT   rU   rV   rW   __doc__AttrMapAttrMapValuer   r	   r   r   r
   r   r   r   r   r   r   r   _attrMapr   rX   rY   rZ   s   @r?   r]   r]   :   s      -
"81LM-
 4PQ-
 #=6QR-
 ''<  C_  `	-

 %U1Qq\7\]-
 &eAal8^_-
 (6\]-
 h,NO-
  .RS-
  .\]-
 !4YZ-
 #8  2d  e-
  .EF-
  .EF-
 #8  2E  F-
  '{8VW!-
"  ,M?_`#-
$  ,H:Z[%-
& *-=]^'-
( )<]^)-
* )7XY+-
, ".6IJ--
. %^</-
0 #>7KL1-
2 &n:_`3-
4 $N8MN5-
6 (:`a7-
8 %Y4VW9-
: (1HI;-
< )2JK=-
> *(3LM?-
@ +84NOA-
B  ,I6WXC-
D %1D]$^E-
F %1?^$_G-
H %1?g$hI-
J !-X;^ _K-
L  ,H:]^M-
N $F8$4;^mnoO-
P y)JKQ-
R %^9]^S-
T $H2jkU-
V (hv(>DxyW-
X #5i#AGefY-
H^#) #)rB   r]   c                    V P                   '       du   \        W4V4      pV P                  '       g	   R Vn        M?\	        V4      ^Z8  g!   VR8  d   VR8  g   R	Tu;8  d   R
8  d   M MRVn        MRVn        W'n        ^ Vn        EMNVf   \        V R\        4      pV! 4       pW'n        W7n	        WGn
        VP                  Vn        V P                  '       g$   VP                  Vn        VP                  Vn        MVP"                  f   V P"                  R,          pMVP"                  R,          pVP                  f   Wn        MVP                  V,           Vn        \	        V4      ^Z8  g!   VR8  d   VR8  g   R	Tu;8  d   R
8  d   M MRVn        MRVn        VP$                  Vn        VP(                  Vn        VP,                  Vn        VP0                  Vn        VP4                  Vn        VP8                  Vn        VP<                  p	V	f   Tp	Wn        VP@                  Vn!        VPD                  Vn#        VPH                  Vn%        VPL                  Vn'        VPP                  Vn        VPR                  Vn*        VPV                  Vn,        VPZ                  Vn.        VP^                  Vn0        VPb                  Vn2        VPf                  Vn        VP"                  Vn        VPh                  Vn4        VPj                  Vn6        V# )middler4     r   end
labelClassg      @r.   r2   >)7simpleLabelsr    
sideLabels
textAnchorrL   rK   _simple_pointerrM   r8   xyrm   dxrn   dyrp   rI   rj   ro   anglerq   boxStrokeColorrr   boxStrokeWidthrs   boxFillColorrt   rc   ru   r_   rv   _textrw   leadingry   widthrz   maxWidthr{   heightr|   r}   r   r   
topPaddingr   leftPaddingr   rightPaddingr   bottomPaddingr   ri   rk   rb   )
r=   textr   labelXlabelY
wedgeStyler   theLabelsideLabels_dyr   s
   &&&&&&&   r?   _addWedgeLabelr      s{   &$/"*HE
ReSjU3YD%DUQUDU&-#&+##$  l:>J<

 ))$--HK!+!;!;H""* $ 3 * 3 3c 9""*+(11MAE
ReSjU3YD%DUQUDU%("%("#//","A"A","A"A * = =);;);;%%=$%%33#//&55$11(99%33(99);; * = =!+!?!?#-#B#B "++H"++H#--HOrB   c                     V f   R.V,          p V # V\        V 4      ,
          pV^ 8  d   \        V 4      R.V,          ,           p V # )Nrx   )lenlist)labelsr5   is   && r?   
_fixLabelsr      sG    ~ M c&kMQ3frd1f,MrB   c                   0   a  ] tR t^t o R tRR ltRtV tR# )AbstractPieChartc                   V P                   pV\        V4      ,          pWg,          p\        VR \        VR R4      4      p	\        VR\        VRR4      4      p
\        VR\        VRR4      4      p\        VR\        VRR4      4      p\        VR\        VRR4      4      pV'       d)   \        WVR,          ,           W5R,          ,           V
4      # \	        W#WEWWR7      # )rc   Nrb   rd   r_   r          @)r_   rc   rd   rb   )slicesr   rM   r   r$   )r=   rowNor   r   r   r   	baseStylestyleIdxstylerc   rb   rd   r_   r   s   &&&&&&        r?   makeSwatchSample!AbstractPieChart.makeSwatchSample   s    KK	3y>)#e]GImTX4YZE;	+d0ST	!%):GIN_`d<efe]GI}UY4Z[ungiX\6]^!,rz!2I+iPPA$3I 	IrB   Nc                     \        V P                  V,          4      pT P                  '       g%   \        T P                  T,          RR4      pTe   TpT#    Tp L>; i)zreturn series name i or defaultrv   rx   )r*   r   r   rM   r   )r=   r   defaultr   r   s   &&&  r?   getSeriesNameAbstractPieChart.getSeriesName   sX    	4;;q>*D    DKKN<;E $	Ds   A Ar;   r:   )rT   rU   rV   rW   r   r   rX   rY   rZ   s   @r?   r   r      s     I	 	rB   r   c                 `   V ^ ,          V^,          R,
          8  ;'       g    V^ ,          V ^,          R,
          8  ;'       gg    V ^,          RV^,          V^,          ,           ,          R,
          8  ;'       g0    V^,          RV ^,          V ^,          ,           ,          R,
          8  '       * # )r   g{Gz?r   r;   )PQs   &&r?   boundsOverlapr      s    tAaDI~mm1ad4imm1Q4ad1Q4i$8N3NmmRSTURVX[]^_`]abcdebf]fXgimWmRmnnrB   c                l   \        V 4      pV.p VR,          pV^,           V,          pWT9   g   \        W,          W,          4      '       g   MVP                  V4       KR   V^ ,          pV^,
          V,          pWT9   g   \        W,          W,          4      '       g    V# VP                  ^ V4       KU  )z find overlap run containing B[i])r   r   appendinsert)Br   wrapr5   Rjs   &&&   r?   _findOverlapRunr      s    AA	
A
bEqS!G6qtAD115	
aDqS!G6qtAD115H 	
1rB   c                    \        V 4      pV^8  d:   \        V^,
          4       F#  p\        WV4      p\        V4      ^8  g   K!  Vu # 	  R# )z>determine a set of overlaps in bounding boxes B or return NoneN)r   ranger   )r   r   r5   r   r   s   &&   r?   findOverlapRunr   
  sD    AAsqsAD)A1vax  rB   c           
         \        V 4      pV^8  d   R# V  Uu. uF  qDP                  R,          NK  	  pp^p. p^ p\        V^ ,           4      pTp	V'       EgL   V^8  EdB   \        V4      p
V
'       g   R# \        V
4      pW8X  d   R# V Uu. uF  qV
9   g   K  VNK  	  up'       g   Tp	^ pV
^ ,          pV
R
,          pW^,          p\	        W,          P
                  4      ;ppV
R,           Ff  pW\,          p\        V\        V^,          V^ ,          ,
          V^,          V^ ,          ,
          4      4      pTpVW,          P
                  ,          pKh  	  V\        V4      ,          p\        W,          P
                  V,
          4      p\	        V4      pWV^,
          ,          V,          ,          pV
 F  pW,          pVP                  p\	        VP
                  V\	        VP
                  4      V,
          ,          ,           4      ;pVn        V\        ,          pVR,          VR,          \        V4      ,          ,           Vn        VR,          VR,          \        V4      ,          ,           Vn        VP                  4       W\&   K  	  T
pV	R,          p	V^,          pEKI  R# V^8  Ed   \        V4      p
V
'       g   R# \        V
4      pW8X  d   R# V R
,          pVP                  pVR,          p\        V
4       EFL  w  ppW,          pVP                  pVR,          p^ p^ pVV^,
          8X  d   K8  VV8X  g   V^,          V^,          8  d-   V^,          V^,          8  d   V^,          V^,          ,
          pV^,          V^,          8  d-   V^,          V^,          8  d   V^,          V^,          ,
          pVV8  d7   V;P                  R	V^,          V^,          ,
          ,          ,          un        M<VV8  d6   V;P                  R	V^,          V^,          ,
          ,          ,          un        VP                  4       W\&   EKO  	  V^,          pEK  R# u upi u upi )   Nbounds   NNcxrxcyryg?r   r   )r   	_origdatafloatr   _360rK   maxminrL   _180_pir   r   r   r   	getBounds	enumerate) Lr   mult0nLlr   OKRPitermultr   nRrrQ   r0rLbitaaaabutaantaaorigr   radl1orig1bounds1r   r   diff1diff2s    &&&                             r?   fixLabelOverlapsr    s   	QB	!tV()*1X		A*	
B	BD%!)ED:2gq!AeQBvu!,r!!VAAr,,B1B2BBAEJJ''C"rUUDC!RU
2a51:67adii	 
 E"IBquzz#~&D:D1+d""BD{{!%affRaffb-A&A!BBGm4j4:c#h#664j4:c#h#66{{}  BDLDAIDA F 2gq!AeQBx2BLLEHoG |!D{{hBqDy!W,!!9WQZ/GAJvay4H$*1Igaj$8E"1:fQi/F1Igaj4H$+AJvay$8E 5=CC#wqz'!*'<"==C"e^CC3
71:(=#>>C;;=AD! $" AID3 W 	+ -s   QQ!Q!c                     \        \        V 4      \        V4      4      \        \        V 4      \        V4      4      r2W#8  d   R # W#3# r:   )r   r   )Ar   r   r   s   &&  r?   intervalIntersectionr  \  s5    
c!fSV
SQA/atD3JrB   c                    V R ,          p ^ZT u;8:  d   R8  d1   M M-VR8X  d   ^ ^ZV 3R^ RV ,           R33pM^ V R3R^ RR V ,           33pMV R8  ;'       d    R ;'       g    ^ pVR8X  d3   ^V^Z,
          V 3^ VR,
          V^Z,
          3^RV ,           VR,
          33pM0^W^Z,           3^ V^Z,           VR,           3^VR,           R V ,           33p\        V Uu. uF  q"^,          V^,          8  g   K  VNK  	  up4      # u upi )rE   r4   	clockwiser   )r   r  Z   i)r   r4   r   )tuple)sa	directionaoffss   &&  r?   _makeSideArcDefsr"  a  s   #IB	2zczk!2b	*aR_4A2c
;#c"f~5A3w3##!k!472$s(473QtBwtCx4HHA22g$r'$s(3QtCxB4GGAQ,QA$qt)!!Q,--,s   C</C<c                 n    \        V^,          V^ ,          ,
          V ^,          V ^ ,          ,
          4      # r   r,   )r   r   s   &&r?   _keyFLAr%  p  s'    qtAaDy1ad##rB   c                     V  Uu. uF(  q"^ ,          V8X  g   K  V^,          f   K  V^,          NK*  	  uppV'       g   R# \        V4      ^8  d   VP                  \        R7       V^ ,          # u upi )r   Nkey)r   sortr%  )xArcssider   s   && r?   _findLargestArcr,  t  sZ    @u!!d
qt1u@AT
1vaxG$Q4K 	As   A/A/A/c                 L   V P                   pVf_   VR,          pVR,          pVf   ^pTpMCVf   ^ pTpM:V^,          V^ ,          ,
          V^,          V^ ,          ,
          8  d   ^ pTpM^pTpVR,          pVR,          pV'       g   ^V n        W,           V n        VR,          pM$^ V n        W,
          V,
          V n        VR,          pV^ ,          V^,          ,           R,          ;qR&   \        V	\        ,          4      VR&   \        V	\        ,          4      VR&   W#R	&   W'3# )
Nlirir   edgePadr   midsmidcmidr+  )r   rK   r   r   r   r   )
r   r   r+  datar.  r/  r   r.   r0  r1  s
   &&&       r?   _fPLSider5  z  s   ;;D|$Z$Z:DAZDAU2a5[Ar!u$DADAWA9oGiJi'!J1adC'Cu+s7{#DLs7{#DLL6MrB   c                 ^    \        VP                  R ,          V P                  R ,          4      # )r2  )r-   r   r   r  s   &&r?   _fPLCFr8    s!    q{{6"1;;v#677rB   c                     V ^,          # r$  r;   )r   s   &r?   _arcCFr:    s    Q4KrB   c                 \   . . 3p^ ^ .pV F<  p	\        WV4      w  rWz,          P                  V	4       \        WV
,          4      W&   K>  	  ^pV R.,          p^ pVR,          pW?,           p\        V4      pR EF  p
Wz,          pV'       Ed   . pVP                  p. pVP                  pVP                  \        R7       ^ pW5,           pV EFu  p	V	P
                  pW,VVR,          ,
          ,          ,           pV	;P                  V,          un        WVR,          &   VVR,          V,          ,           pVR,          pV^,          V^,          ,
          R,          pVV,           V8  d
   VV,
          pVV,
          V8  d
   VV,           pV^ ,          VV,
          V^,          VV,           3;VR&   pV! V4       VV	n        V! \        ^ VV,
          V,
          4      4       VV,
          p\        VVR,          VR	,          ,           4      p\        V\        VR,          VVR
,          ,           ,          4      V,
          4      pEKx  	  V! VV,
          4       ^ p\        V4      pV^8  Ed   \        V^ R7      p V '       g   EM\        V 4      p!V!V8X  d   EMqV ^ ,          p"V R,          p#V#^,           p$\        VRV"^,            4      p%V%\        VV$R 4      ,           p&\        VV"V$  Uu. uF  pV^,          V^,          ,
          NK  	  up4      V$,           V",
          VV",          ^,          VV#,          ^,          ,
          ,
          p'V'V&8  d   MVV",          ^,          V%V',          V&,          ,           pV  F  p(VV(,          p	V	P
                  pVR,          pV^,          V^,          ,
          R,          pVR,          pVV,
          ;pV	n        V^ ,          VV,
          V^,          V3;VV(&   VR&   VV,
          R,
          pK  	  EK  VV,           W&   RpEK  	  W^ ,          V^,          V3# u upi )r   Nr   r'  r   indexr2  r   r0  piePadelbowLength)r   )r   r   r   )r5  r   r   r)  r8  r   r   r   rL   r   r   sum))r5   r   r   r   r   r   r+  LRmlrr   r   r.   mulGmelhhyhhmTr   aBSaSpyhr4  inclyr  b2r  nTr   r  j0j1jlsAbovesFreesNeedr  s)   &&&&&&&                                  r?   _fixPointerLabelsrX    s   	BBQ%Cqt$
QQ1v  C	4&A
C	B
$CCAE1ABABFFvFAB{{QtG}_--s
#$$w- fb(Nd1Q4i_b58"R%Rb572B&'d2b51be%<<X13qBr?#U$y/$x.89#c$v,43F0F"GHKL! " r!tHDQBr'"1!,%Vr65qTrUTQu1Xs1RS6{*"R91QqT!A$YY9:2=b@!B%(1R5QR8BST;rU1XfUl500A!A;;DXAA$qt)SB#IB!"u$B-.qT"R%!R,@@AaD4>b3B  qSCFm n !fc!fc!! :s   $ P)
c                    ^\         ,          \        V 4      ,          pV  Uu. uF  q3V,          NK  	  pp^ p. pV F)  pVP                  WWR,          ,           4       WW,          pK+  	  \        V 4      R,          p^ p	\         R,          p
\	        ^$4       FU  pW,          p\        V Uu. uF  p\        \        W|,           4      4      NK  	  up4      pW8  g   KF  VR8X  d   V) p	MTp	TpKW  	  V	^,          \         ,          # u upi u upi )r   r   g    .Ag      B@r  )r   r?  r   r   r   rL   r   )r4  r  facdradsr  hradsr  vstarrstardeltar   r   vs   &&            r?   theta0rb    s    R4T
C 4acEE4D 	
BER#X
  IcMEEtGE2YG.1SX./9K'bE  9R<) ! /s   D(#D
c                   *   a  ] tR tRt o RtR tRtV tR# )	AngleDatai  z/use this to carry the data along with the anglec                <    \         P                  W4      pW#n        V# r:   )r   __new___data)clsr   r4  r=   s   &&& r?   rf  AngleData.__new__  s    }}S'
rB   )rg  N)rT   rU   rV   rW   r   rf  rX   rY   rZ   s   @r?   rd  rd    s     9 rB   rd  c                   f  a  ] tR tRt o ]! R;/ R]bR]! ]RR7      bR]! ]RR7      bR]! ]	R	R7      bR
]! ]
! RR4      RR7      bR]! RRR7      bR]! ]RR7      bR]! ]	R^R7      bR]! ]! ]! R^4      ]34      R^R7      bR]! ]
! RRR4      R^R7      bR]! ]R^R7      bR]! ]
! R R!4      ^R"7      bR#]! ]R$R7      bR%]! ]R&R7      bR']! ]R(R7      bR)]! RR*^R7      bR+]! ]R,R7      bR-]! ]	R.R7      bR/]! ]! ]4      R0R7      bR1]! ]	R2R7      b tRtR3 tR4 tR5 tR<R6 ltR7 tR8 tR9 tR:tV tR# )=Piei	  BASEr4  z7List of numbers defining wedge sizes; need not sum to 1r`   r   z2Optional list of labels to use for each data point
startAnglez#Angle of first slice; 0 is due Eastr  r  anticlockwisez'clockwise' or 'anticlockwise'r   Nz&Collection of wedge descriptor objectsr   zIf true(default) use a simple String not an advanced WedgeLabel. A WedgeLabel is customisable using the properties prefixed label_ in the collection slices.other_thresholdz.A value for doing threshholding, not used yet.r   checkLabelOverlapg?zFIf true check and attempt to fix
 standard label overlaps(default off)pointerLabelMode	LeftRightLeftAndRightrx   	sameRadiiz,If true make x/y radii the same(default off)	orderModefixed	alternate)r   xradiuszX direction RadiusyradiuszY direction RadiusinnerRadiusFractionz$fraction of radii to start wedges atwedgeRecordzcallable(wedge,*args,**kwds)r   zDIf true attempt to make piechart with labels along side and pointerssideLabelsOffsetzWThe fraction of the pie width that the labels are situated at from the edges of the pier   z,A class factory to use for non simple labels
angleRangez3total degree range for the doughnut defaults to 360c           
        \         P                  ! V 4       \        V R VP                  R ^ 4      4       \        V RVP                  R^ 4      4       \        V RVP                  R^d4      4       \        V RVP                  R^d4      4       \        V RVP                  R. RO4      4       \        V RVP                  RR4      4       \        V RVP                  R^Z4      4       \        V RVP                  RR	4      4       \        V R
VP                  R
^4      4       \        V RVP                  R^ 4      4       \        V RVP                  RR4      4       \        V RVP                  RR4      4       \        V RVP                  RR4      4       \        V RVP                  RR4      4       \        V RVP                  RR4      4       \        V RVP                  RR4      4       \        V RVP                  R^ 4      4       \        V RVP                  RR4      4       \        V RVP                  R\	        \
        4      4      4       \        V RVP                  RR4      4       \        P                  V P                  ^ ,          n	        \        P                  V P                  ^,          n	        \        P                  V P                  ^,          n	        \        P                  V P                  ^,          n	        \        P                  V P                  ^,          n	        \        P                  V P                  ^,          n	        \        P                  V P                  ^,          n	        R# )r   r   r   r   r4  r   Nrm  r  r  r   rp  rq  rt  Fru  rv  rx  ry  rz  r   r|  r   r   r}  rE   )r   gffffff@g333333?g@)r)   r   setattrpopr'   r]   r   darkcyanr   rb   
bluevioletbluecyanpinkmagentayellow)r=   kwdss   &,r?   r   Pie.__init__!  sv   $S#a)S#a)WTXXgc23Xdhhx45VDHHVO<=Xdhhx56\$((<";<[+k!BC^DHH^A$>?(2Ea)HI'1CD(IJ[+e!<=[+g!>?Ytxx	$78Ytxx	$78*4884I$+OP\$((<":;'1CC(HIXdhhx0G0XYZ\$((<"<=#)??A #)#4#4A #);;A #);;A #);;A #)>>A #)==A rB   c                   \        ^^d4      p\        4       p^2Vn        ^
Vn        ^dVn        ^PVn        . ROVn        . ROVn        RVP                  n	        ^
VP                  ^,          n
        ^VP                  ^,          n	        ^^.VP                  ^,          n        RVP                  ^,          n        \        P                  VP                  ^,          n        \        P                   VP                  ^ ,          n        \        P$                  VP                  ^,          n        \        P&                  VP                  ^,          n        \        P(                  VP                  ^,          n        \        P*                  VP                  ^,          n        \        P,                  VP                  ^,          n        \        P.                  VP                  ^,          n        VP1                  V4       V#    r         ?
         (   2   <   r   r  cr[  r2   f)r   rk  r   r   r   r   r4  r   r   r_   rh   rd   rl   r   redrk   r  rb   r  r  r  
aquamarine	cadetblue
lightcoraladdr=   r[  pcs   &  r?   demoPie.demo@  sG   CU	%-	!		 		!#$		! ()!u		!$#'		! !'		!!'		!!'!2!2		!!'		!!'		!!'!2!2		!!'!1!1		!!'!2!2		!	b	rB   c                
    ! R  R4      pV P                   ^,
          pV P                  p^ ;p;p;p;r\        V P                  4      p. pVP                  p\        V P                  V P                  4      pV EFQ  w  ppV^,          f   K  V P                  VR4      pV'       g   K0  V P                  W,          ,          pVP                  '       d   VP                  '       g   Ko  V^,          p\        V V^WEV4      pV! V4       VP                  4       pV^,          V^ ,          ,
          pV^,          V^,          ,
          pV Uu. uF(  pV^ ,          \        VV^,          V^,          34      3NK*  	  pp\        V^ 4      p\        V^4      pV'       d   V'       d   VR8X  d8   V^,          V^ ,          ,
          V^,          V^ ,          ,
          8  d   RpMxRpMuV^,          V^ ,          ,
          RV^,          V^ ,          ,
          ,          8  d   RpM:V^,          V^ ,          ,
          R,          V^,          V^ ,          ,
          8  d   RpV'       d
   V^,          pV'       d
   V^,          p\        VVVVVVVP                   VP"                  VP$                  R7	      Vn        \)        VV	4      p	V
V^,           ,          p
EKT  	  V'       g   V P                   R,          pV P                  R,          pV P*                  V,           pV P,                  V,           pV P.                  '       d   V P.                  pV P0                  '       d   V P0                  pV P2                  '       d   \5        VV4      ;ppV! VVVV. 4      # Wv8H  pWP                  8  d   V'       g   W8X  d   \7        V4      pMRp\9        \        V4      WP*                  V P,                  V P                   V P                  VR7      w  p p!p"p#VR8X  d   \)        V!V"4      ;p!p"V P*                  V!,           p$V P*                  V P                   ,           V",
          p%V%V$,
          R,          pV P                  R,          V#,
          pV$V,           pV P,                  V,           V#,           pV P.                  '       d   V P.                  pV P0                  '       d   V P0                  pV P2                  '       d   \5        VV4      ;ppV! VVVVV V!V"4      # u upi )	c                   *   a  ] tR tRt o RR ltRtV tR# )!Pie.makePointerLabels.<locals>.PLi]  c                Z    Wn         W n        W0n        W@n        WPn        W`n        Wpn        R # r:   )centerxcenteryrx  ry  r4  luru)r=   r  r  rx  ry  r4  r  r  s   &&&&&&&&r?   r   *Pie.makePointerLabels.<locals>.PL.__init__^  s%    &&&& 	rB   )r  r  r4  r  r  rx  ry  N)r   r   )rT   rU   rV   rW   r   rX   rY   rZ   s   @r?   PLr  ]  s      rB   r  Nrx   rs  g{Gz?)	r   r   r   r.  r/  r<  r0  r=  r>  r   )r+  )r   r   r   r   r   r"  rm  r  r   r}   r   r   r   r  r,  dictr   r   r   r   r   r   r   rx  ry  rt  r   rJ   rX  )&r=   anglesplModer  r   r   r5   nrnlmaxWsumH
styleCountr   L_addrefArcsr   r  snr   r   r  r.   hr   r/  r.  rx  ry  r  r  aonRr+  rC  r  r  rD  x0x1s&   &&&                                   r?   makePointerLabelsPie.makePointerLabels\  s   	 	 A$%%%B%%d%

"4??4>>BDAqt|X##Ab)BxKK-E&&&emmmXFAT"Su=A!HA!QqT	A!QqT	AFMNg1Q4,Q!QqT{;<gBN A&B A&Bb>)!uRU{2a5A;.!!!uRU{4Ar!u#55!Q%1+t+BqE"Q%K7!272272aaqB"1UZUpUpx}  yS  yS  `e  `  `  @AKq;DAaCKD= @ jjnGkk#oGffWnGffWnG|||t||W|||t||W~~~s77/CCwwggggb99uTDD'FAffTVVDJJt{{`de"R>!"Rj BVVBYVVDJJr!b5#+++c/#%W*&&.$<<<4<<<<<4<<>>>3ww+??77''''!Br::_ Os   	.Tc                `   \        \        \        V P                  4      4      p\	        \        V4      4      ;q0n        V^ 8w  d   \        RV P                  4      V,          M^pV'       d#   V Uu. uF  p\        WE,          V4      NK  	  up# V Uu. uF  qTV,          NK  	  up# u upi u upi )r   rE   )
r   maprL   r4  r   r?  _sumr   r}  rd  )r=   keepDatar4  r0   r  r   s   &&    r?   normalizeDataPie.normalizeData  s    CDII&'c$i((I*+Q$CDOO$Q&A.23dIac!$d33!%&AaCC&& 4&s   0B&B+c                   \        V R R4      pV P                  '       d3   \        V P                  V P                  4      p^V P
                  n        MV P                  R,          pV P                  R8H  ;'       d    R;'       g    ^p\        V P                  VR7      4       Uu. uF  qDNK  	  ppV P                  R8X  Ed   V P                  '       Eg	   V Uu. uF  p\        V^,          4      R8  g   K  VNK   	  ppVP                  \        R7       . . .p^ pV'       d]   V^8  d   VP                  ^ 4      pMVP                  R4      pWx^,          ,          P                  V4       V^,          pV^,          pKd  V^,          P!                  4        V^ ,          V^,          ,           V Uu. uF  p\        V^,          4      R8  g   K  VNK   	  up,           p. p	V	P                  pV Fs  w  rW*V,          ,           p\        V
4      \"        8  d   W+8  d   W3pMW+3pMVR3pV'       d'   \%        V^ ,          V
P&                  4      V^,          3pTpV! W34       Ku  	  V	# u upi u upi u upi )	r{  NrE   r  )r  rw  gh㈵>r'  r   )rM   r   rb  r4  r  r   r}   rm  r   r  ru  rL   r)  r:  r  r   reverse_ANGLELOrd  rg  )r=   wrrm  whichWayr   DWrH  r   r  r   endAngler
  s   &            r?   
makeAnglesPie.makeAngles  s   T--???		4>>:J()DKK%3.J>>[077R<<1!$"4"4b"4"ABCB1QBC>>;&t1AqQqTDAA1FFvFBAAQ3aAb	AA#a QQaDLLN!QqT	<1S1Yt^QQ<<AHHHA"h&67H5z8#)!,B#,B%1ekk22a59!JqfI  ? D1 =s   %
I'I,8I,1I1I1c                "  a  S P                  4       p. pV F/  w  pw  rEVf   TpMRWT,           ,          pVP                  V4       K1  	  S P                  p\        V4      p\	        S P
                  V4      p	\        S RR 4      p
VS n        \        S P                  4      pS P                  pV'       d   R pV'       dT   RpS P                  W4      pVP                  pVP                  pVP                  pVP                  pVP                  pR pMS P                   R,          pS P"                  R,          pS P$                  V,           pS P&                  V,           pS P                  '       d   S P                  pS P                  '       d   S P                  pS P(                  '       d   \+        VV4      ;ppS P,                  pV 3R lp\/        4       pVP0                  p. pVP                  pS P2                  pV EF  w  pw  rEVf   K  S P                  W;,          ,          pVP4                  '       g   K<  \7        WT,
          4      pTTppV! V4      pVP8                  pV'       g	   V'       df   WE,           R,          p V \:        ,          p!\=        V!4      p"\?        V!4      p#V'       d,   V\@        8  d!   VVV",          ,           pVVV#,          ,           pV'       d"   \C        VVWVVVV,          VV,          R7      p$M*V\@        8  d   \E        VVVV4      p$M\C        VVWVVR7      p$VPF                  V$n#        VPH                  V$n$        VPJ                  V$n%        VPL                  V$n&        VPN                  V$n'        VPP                  V$n(        VPR                  V$n)        VPT                  p%V%'       Ed   V\W        VPX                  4      ,          p&V&^8  Edv   V%R	8X  d   \Z        P\                  M\Z        P^                  p%^\a        V&4      ,           p&^VPb                  ,
          p'VPd                  R
8X  d$   ^V',
          \W        V&^,
          4      ,          p(T'p)M"V'^,
          \W        V&^,
          4      ,          p(^p)WT,
          \W        V&4      ,          p*VPF                  p+R V$n#        \g        V&4       F  p,VV,V*,          ,           p-VV,^,           V*,          ,           p.V%! V+V)V(V,,          ,           4      p/V'       d#   \C        VVVV-V.VVV,          VV,          R7      p0M\C        VVVV-V.VR7      p0V/V0n#        R V0n$        ^ V0n%        V! V04       K  	  V! V$4       V
'       d   V
! V$VPh                  VR7       VPj                  '       g   EK  V'       Eg   V'       d   VPl                  p1VV1,          p2VV1,          p3VV2X",          ,           p4VV3X#,          ,           p5\o        S VX V4V5V4      p6V! V64       V'       g=   V6Pp                  '       d+   VVV",          ,           V6n9        VVV#,          ,           V6n:        V'       d,   RV4RV5RV RV2RV3RVRVRV6Pw                  4       RWE3/	V6n<        EKj  EKm  V'       d   X'       d   VV,          p6V6'       d   V6Px                  p7V7R,          p8V7R,          p9VVV9,          ,           p:VVV8,          ,           p;VPz                  p<V:V<V9,          ,           p=V;V<V8,          ,           p>V! \}        V:V;V=V>V6P$                  V6P&                  3VP~                  VP                  R7      4       V! V64       EKE  EKH  EKK  EKN  V'       g   EKY  S P                  P8                  p?^ p@V F  w  ppAS P                  V,          PF                  '       d   X@^,          p@K4  VX@,          pBS P                  VB,          PF                  S P                  V,          n#        S P                  VB,          P8                  S P                  V,          n        K  	  \g        ^ X@^,
          4       FD  pCS P                  VC,          P8                  V?8  g   K'  S P                  XC,          P8                  p?KF  	  VPl                  p1VV1,          p3\7        X 4      ^Z8  g!   V R8  d   V R8  g   RT u;8  d   R8  dC   M M?^S P                  ,           S P                   ,          S P$                  ,           V?,           p4^ p2M7S P$                  S P                  S P                   ,          ,
          V?,
          p4^ p2VV3X#,          ,           p5\o        S VV V4V5V4      p6V! V64       V'       g+   VVX",          ,           V6n9        VVV#,          ,           V6n:        V'       d&   RV4RV5RV RV2RV3RVRVRV6Pw                  4       /V6n<        V6Pw                  4       w  pDpEpFpGEK  	  V'       d   V'       d   \        VW}R7       V F  p6V! V64       K  	  V'       Eg   V EF  p6V6Pp                  '       d^   V'       gV   V! \        V6P$                  V6P&                  V6Pr                  V6Pt                  XP~                  VP                  R7      4       Ks  V'       g   K}  V6Pw                  4       w  pDpEpFpGV6P$                  ^S P                  ,           S P                   ,          S P$                  ,           8X  Ed   V! \        V6Pr                  V6Pt                  RV6Pr                  V6P$                  ,           ,          V6P&                  RXGXE,
          ,          ,           XP~                  VP                  R7      4       V! \        RV6Pr                  V6P$                  ,           ,          V6P&                  RVGVE,
          ,          ,           V6P$                  V6P&                  RVGVE,
          ,          ,           VP~                  VP                  R7      4       EK  V! \        V6Pr                  V6Pt                  RV6Pr                  V6P$                  ,           ,          V6P&                  RXGXE,
          ,          ,           XP~                  VP                  R7      4       V! \        RV6Pr                  V6P$                  ,           ,          V6P&                  RVGVE,
          ,          ,           V6P$                  V6P&                  RVGVE,
          ,          ,           VP~                  VP                  R7      4       EK  	  V# )Nr   r{  Fc                     R # rx   r;   )r   s   &r?   <lambda> Pie.makeWedges.<locals>.<lambda>  s    BrB   c                 (   < SP                  V R 4      # r  )r   )r   r=   s   &r?   r  r    s    D..q4rB   r   )ry  radius1yradius1)ry  r   r   )valuelabelr   r   r   r   r   r   r   r   r  r2  r3  )r_   rc   r4   r   )r   g      ?r   r   )Dr  r   r   r   r   r   rM   _seriesCountr   rq  r  rx  ry  r  r  r4  r   r   r   r   rt  r   rp  r   r  rz  r   rL   rh   r   r   r   _ANGLEHIr   r   rb   rc   r_   rf   re   rg   rd   r   r   r   r   WhiterBlackerrJ   r   r   r   rg  r}   rl   r   r   _aax_aayr   r   r   r%   r   r   r|  r  r&   )Hr=   r  
halfAnglesr   a1a2	halfAngler   r5   r   r  r  r  rp  r  rx  ry  r  r  PL_datagSNgg_addr   r  rz  r   r
  r   r   r   rh   averageAngleaveAngleRadianscosAAsinAAtheWedgeshadernshadesr   dshshf1shdashscishsha1sha2shcshWedgerl   r   r   r   r   r   r4  sinMcosMlXlYlpellXilYislices_popoutrG  r   r  r   r  y1x2y2sH   f                                                                       r?   
makeWedgesPie.makeWedges  sc
   "
IAgrz	K	i(   __
KDKK*T--%
&&F %%%f4BjjGjjGjjGjjGggGCjjnGkk#oGffw&Gffw&G|||t||W|||t||W~~~s77/CCww $ 6 64CG"66  IAgrz8 Q\2J%%%xRUB gBq6D&&Fv "s{".w"6O,O,bk 6%</B 6%</B" Rb' '(; ;WM`E`b x<&r2w@H$RW"gNH ",!5!5H#-#9#9H #-#9#9H &0&?&?H#%/%=%=H"(2(C(CH%'1'A'AH$++FvuZ%<%<==Q;.4i.?V]]V^^FGnG$%j&>&>$>M!22H< gai0@@,,Qgai0@@ E5>1D%//D)-H&$W~!CH}!SUDL0$T$S.9.&+BGT4QX,34G,GQXYlQl'nG ',BGT4QX&YG,/).2+./+g  . (O8"((6'''!z&0&<&<$[0$[0!#bh!#bh*4\&PZ[a%!*;*;*;%'%5AF%'%5AF,,/VWl,0"d2tBR,4akkmXrg+.AK -
  G#AJ#$;;D#'<D#'<D!#gdl!2B!#gdl!2B#-#G#GD"$tDy.C"$tDy.C!(Br#c!##acc+B0:0T0T0:0T0T#V W "!H  %,  t(,(:(:(.HAu#{{1~777 !Q$%aC;?;;q>;S;SA 88<A8M8MA 5 )/ "'q1A#{{1~44}D04A0E0E ". '1&<&<$[0-2s9J|]`O`fj ,g3.2g3&'(=(=&=tzz%IDFF%RUb%bF!"B%)VVt/D/Ddjj.P%PS`%`F!"B!#bh*4\&PZ[a%%'%5AF%'%5AF,,/VWl,0"d2tBR,4akkm+.AK '(kkm2bY  \ Q
DAE!Hv$$$Z$qss133qvvaff$.$H$H$.$H$HJ K  Z"#++-KBr"Rssq!6!66

BTVVKKd166!&&affQSSj1A!##tRPRU|BT(2(L(L(2(L(LN O d3qss
#3ACCr"u4Fqss133PTVXY[V[P\K](2(L(L(2(L(LN O d166!&&affQSSj1A!##tRPRU|BT(2(L(L(2(L(LN O d3qss
#3ACCr"u4Fqss133PTVXY[V[P\K](2(L(L(2(L(LN O' . rB   c                l    V P                  4       pV P                  4       pV'       d   \        W4      # V# r:   )makeBackgroundr  r   )r=   rC  r.   s   &  r?   drawPie.draw  s-    !OOU1ZrB   )r  r  r;   )F)rT   rU   rV   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ro  r   r  r  r  r  r  r  rX   rY   rZ   s   @r?   rk  rk  	  s     
, 
O2kl
3:no
 "(1VW
 !{O!DKkl	

 d)QR
 $I  5S  T
 'x6fuvw
 )?43J92U)V  ^g  vw  x
 (d;~(NUWfgh
 !1_nop
 !w{!;!L
 ~4HI
 ~4HI
 +>@fg
 #4.L[\]
  ")2xy!
" (  8Q  R#
$  z 29gh%
& "(1fg'
H* O1>8M;^''R[z rB   rk  c                     a  ] tR tRt o Rt]! ]]! ]RR7      ]! RRR7      ]! RRR7      ]! ]	RR7      ]! ]
R	R7      ]! ]R
R7      ]! ]RR7      ]! ]	RR7      ]! ]	RR7      ]! ]	RR7      ]! ]	RR7      R7      tR tR tR tRR ltRtV tR# )LegendedPiei  zUPie with a two part legend (one editable with swatches, one hidden without swatches).z#If true then create and draw legendr`   NzHandle to legend for piez;Formatting routine for number on right hand side of legend.z:Horizontal space between legend and numbers on r/hand sidez&Colours used for both swatches and piezNames used in legend (or None)z/Numbers used on r/hand side of legend (or None)zPadding on left of drawingzPadding on right of drawingzPadding at top of drawingzPadding at bottom of drawing)rl  
drawLegendlegend1legendNumberFormatlegendNumberOffsetpieAndLegend_colorslegend_nameslegend_datar   r   r   r   c                   \        V R VP                  R . RO4      4       \        P                  ! V 3/ VB  \        P
                  \        P                  r2V! ^^^H^ RR7      V! ^d^A^ ^RR7      V! ^^^H^ R^KR7      V! ^d^A^ ^R^KR7      V! ^^^H^ R^2R7      V! ^d^A^ ^R^2R7      .V n        V P                  ^ ,          V P                  ^ ,          n	        V P                  ^,          V P                  ^,          n	        V P                  ^,          V P                  ^,          n	        V P                  ^,          V P                  ^,          n	        V P                  ^,          V P                  ^,          n	        V P                  ^,          V P                  ^,          n	        RV P                  n
        W0P                  n        ^p^3V n        RV n        V P                  V n        ^ RIHp V! 4       V n        V P&                  V,           V P$                  n        V P*                  V P$                  n        RV P$                  n        R	V P$                  n        R
V P$                  n        RV P$                  n        RV P$                  n        ^V P$                  n        RV P$                  n        . ROV n        \?        \A        V P                  4      4       FL  pV P$                  PB                  PE                  V P                  V,          V P<                  V,          34       KN  	  RV P$                  n#        ^V P$                  n$        W0P$                  n        RV P$                  n
        V! 4       V n%        ^ V PJ                  n        ^ V PJ                  n        RV PJ                  n        RV PJ                  n#        ^V PJ                  n$        V P$                  P                  V PJ                  n        ^V n&        ^V n'        ^V n(        ^V n)        ^V n*        R# )r4  zPANTONE 458 CV)spotNamezPANTONE 288 CV)r  densityg      ?z%.1f%%)LegendgGz@gףp=
W,@gHz&@rightzHelvetica-Boldr   zHelvetica-ObliqueN)g333333C@g333334@gfffff2@g.@gffffff@)zAAA:zAA:zA:zBBB:zNR:)+r  r  rk  r   r   
PCMYKColorr   r  r   rb   r_   rc   r
  r	  r4  r  !reportlab.graphics.charts.legendsr  r  r   r   r   r   deltaxdeltaydxTextSpacer   r   columnMaximum	alignmentr  r   r   colorNamePairsr   ri   rj   _legend2r   r   r   r   r  )r=   r  r  r   legendOffsetr  r  s   &,     r?   r   LegendedPie.__init__  s   VDHHV,IJKT!D!"--v||E$.r"RCS$T$.s2aDT$U$.r"RCS\^$_$.s2aDT]_$`$.r"RCS\^$_$.s2aDT]_$`$b  "&!9!9!!<A !%!9!9!!<A !%!9!9!!<A !%!9!9!!<A !%!9!9!!<A !%!9!9!!<A "&"'"$"*99 	=xL0"##( %&"!(<s499~&ALL''..0H0H0KTM^M^_`Ma/bc ' 0 !#( #& $%!")!4!"$(LL$<$<!rB   c           	     `   V P                   '       d#   . V P                  n        . V P                  n        \	        \        V P                  4      4       EF  pV P                  R 8X  dc   V P                  V,          V P                  V,          n
        V P                  P                  P                  V P                  V,          R 34       Ms V P                  V,          V P                  V,          n
        V P                  P                  P                  V P                  V,          V P                  V,          34       V P                  R 8w  g   K  V P                  V,          pV P                  pVe   Vf   M_\        V\         4      '       d
   W2,          pM@\#        VR4      '       d
   V! V4      pM%\%        R\'        V P                  4      ,          4      hV P                  P                  P                  R V34       EK  	  \(        P+                  V 4      pV P                   '       Ed&   VP-                  V P                  4       V P                  P.                  V P0                  ,           V P                  n        V P                  P2                  V P                  n        V P                  P4                  V P                  n        V P                  P6                  V P                  n        V P                  P8                  V P                  n        V P                  P:                  V P                  n        VP-                  V P                  4       VP=                  V P>                  V P@                  4       V#   \         d    T P                  T\        T P                  4      ,          ,          T P                  T,          n
        T P                  P                  P                  T P                  T\        T P                  4      ,          ,          T P                  T,          34        ELi ; i)N__call__z6Unknown formatter type %s, expected string or function)!r  r  r  r  r   r   r4  r  r  r   rb   r   
IndexErrorr  r	  
isinstancestrhasattr
ValueErrorasciirk  r  r  r   r
  r   r  r  r   r  shiftr   r   )r=   r  ldflNFrL  s   &    r?   r  LegendedPie.draw  s   ???*,DLL'+-DMM(s499~&A  D(+/+C+CA+FA(++22D4L4LQ4OQU3VWJ/3/G/G/JDKKN,LL//668P8PQR8SUYUfUfghUi7jk 4'&&q)--;#+C(()CS,,c(C$%]`efjf}f}`~%~,,33T#J?- '. HHTN???EE$,,"llnnT-D-DDDMMO"llnnDMMO#'<<#6#6DMM #'<<#6#6DMM #||DMM*.,,*D*DDMM'EE$-- 	  $"4"457 " J/3/G/G#dNfNfJgHg/hDKKN,LL//668P8PQRSVW[WoWoSpQp8qsw  tE  tE  FG  tH  8I  JJs   A2M88B1P-,P-c                d   V P                   pV P                  '       dc   WP                  P                  V P                  ,           ,          pWP
                  P                  V P
                  P                  4      ,          pV P                  V P                  ,           V P                  ,           pW3# r:   )r   r  r  r   r
  r  _calculateMaxWidthr  r   r   r   )r=   txtys   &  r?   _getDrawingDimensions!LegendedPie._getDrawingDimensions7  sv    ???,,..!8!888B--224==3O3OPPB+DOO;wrB   c                    V'       g   V P                  4       w  r#\        W#4      pVP                  V P                  4       4       V# r:   )r.  r   r  r  )r=   drawingr,  r-  s   &&  r?   r  LegendedPie.demo?  s5    ..0EBboGDIIK rB   )r  r   r  r   r  r	  r
  r  r  r  r   r   r:   )rT   rU   rV   rW   r   r   rk  r   r   r   r   r   r   r   r   r  r.  r  rX   rY   rZ   s   @r?   r  r    s     _C!)2WXt*DE)$5rs)(9uv*>@hi#$?Ffg"#>Evw"82NO#H3PQ!(1LM$X4RS
H;z'R rB   r  )
_getShaded_2radr   r   c            
         a  ] tR tRt o Rt]! R1/ R]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]RR7      bR	]! ]	RR7      bR
]! ]	RR7      bR]! ]	R4      bR]! ]
RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]	RR7      bR]! ]	RR7      bR]! ]	RR7      bR]! ]RR7      bR]! ]RR7      bR]! ]	R4      bR]! ]RR7      bR]! ]	R4      bR]! ]R4      bR]! ]RR7      bR]! ]	RR7      bR]! ]RR7      bR]! ]RR7      bR ]! ]	R!4      bR"]! ]R#R7      bR$]! ]RR7      bR%]! ]	RR7      bR&]! ]	RR7      bR']! ]	RR7      bR(]! ]RR7      bR)]! ]RR7      bR*]! ]RR7      bR+]! ]	RR7      bR,]! ]R-4      b tR. tR/tV tR0# )2Wedge3dPropertiesiG  r^   rb   rx   r`   fillColorShadedrk   ri   rj   ro   r   zpadding at bottom of boxrp   rs   rq   rr   rm   rn   r{   rw   r   zpadding at left of boxrz   r   zpadding at right of boxr   zset to True for simple pointersrt   ru   rv   r|   r   zpadding at top of boxr}   r~   ry   rl   rh   shadingrc   strokeColorShadedrd   r_   r   zset to false to skip displayingc                P   ^ V n         RV n        ^V n        R;V n        ;V n        V n        \        R,          V n        \        R,          V n        ^ V n	        \        R,          V n
        \        R,          V n        \        R,          V n        RV n        ^ ;V n        ;V n        V n        RV n        ^ ;V n        ;V n        ;V n        V n        R	V n        RV n        R
V n        RV n        RV n        RV n        R;V n        ;V n        ;V n        V n        RV n         ^V n!        ^ V n"        R# )r   g333333?Nrc   rd   ri   rj   rb   r   rD   r   r   r   )#r_   r8  r   r9  r7  rb   r!   rc   rd   rh   ri   rj   rk   rl   rm   rn   ro   rv   r   r   r   r   rp   rq   rr   rs   rt   ru   rw   ry   rz   r{   r|   r}   r   r   s   &r?   r   Wedge3dProperties.__init__t  s#   IMMM!5)-8-.?@&z2&z2'4;<<<(8nooo 6o9PSWSk&$(!$'!"&!%!$]aaa 0a43FIZ '$%!rB   )"rb   r7  rk   ri   rj   rl   ro   r   rp   rs   rq   rr   rm   rn   r{   rw   r   rz   r   r   rt   ru   rv   r|   r   r}   ry   rh   r8  rc   r9  rd   r_   r   Nr;   )rT   rU   rV   rW   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   rX   rY   rZ   s   @r?   r6  r6  G  sm      #
 B7#
&}"=#
 !B7#
  b1	#

  b1#
 #84#
 +84NO#
 '{;#
 *-R@#
  ,MrB#
  ,H"=#
  b1#
  b1#
 $N;#
 %^<#
  )2JK!#
" &n"=##
$ *(3LM%#
&  ,I6WX'#
( )B?)#
* )r:+#
, ".b9-#
. ("=/#
0 (1HI1#
2 %Y4VW3#
4 #>r:5#
6 #847#
8 hB/9#
: xR0;#
< #=b9=#
> )B??#
@ ''<"EA#
B #84C#
D y)JKE#
HJ& &rB   r6  c                   ,   a  ] tR tRt o R tR tRtV tR# )_SL3Di  c                    V^ 8  d   VR,          pVR,          pWn         W n        W,           R,          V n        \        W!,
          4      \        8  V n        R# )r   rE   r   N)lohir1  rL   r  not360)r=   r?  r@  s   &&&r?   r   _SL3D.__init__  sD    a4#IB#IBE3;"%j8+rB   c                @    R V P                   V P                  3,          # )z_SL3D(%.2f,%.2f))r?  r@  r   s   &r?   __str___SL3D.__str__  s    !TWWTWW$555rB   )r@  r?  r1  rA  N)rT   rU   rV   rW   r   rD  rX   rY   rZ   s   @r?   r=  r=    s     ,6 6rB   r=  c                 8    \        V ^ ,          V^ ,          4      ) # r   r,   r7  s   &&r?   _keyS3DrH    s    !QqTN?rB   c            
          a  ] tR tRt o ]! ]]! ]RR7      ]! ]RR7      ]! ]RR7      R7      t^Ft	^t
^tR tR tR	 tR
 tR tR tR tR tR tR tRtV tR# )Pie3di  zA flattening parameter.r`   zdepth of the pie.zThe view angle.)rl  perspectivedepth_3dangle_3dc                    V P                   V,          P                  ;'       d&    V P                  V,          P                  ;'       g    ^ # rG  )_sl3drA  r   rh   )r=   r   s   &&r?   _popoutPie3d._popout  s4    zz!}##==A(=(=BBBrB   c                    V P                   T;'       d    V P                  ;'       g    ^ ,           V P                  V4      \        \	        V P
                  V,          P                  4      4      ,          ,           # rG  )_cx
_xdepth_3drP  r   r4  rO  r1  r=   r   r[  s   &&&r?   CXPie3d.CX  P    xx..t33!4T\\!_StzzZ[}O`O`IaEb5bbbrB   c                    V P                   T;'       d    V P                  ;'       g    ^ ,           V P                  V4      \        \	        V P
                  V,          P                  4      4      ,          ,           # rG  )_cy
_ydepth_3drP  r   r4  rO  r1  rU  s   &&&r?   CYPie3d.CY  rX  rB   c                x    V P                  W4      V P                  \        \        V4      4      ,          ,           # r:   )rV  _radiusxr   r4  r=   r   or[  s   &&&&r?   OXPie3d.OX  &    wwq|DMM#eAh-777rB   c                x    V P                  W4      V P                  \        \        V4      4      ,          ,           # r:   )r\  _radiusyr   r4  r`  s   &&&&r?   OYPie3d.OY  rd  rB   c                |    V P                   p\        \        W,
          4      \        W,
          R ,           4      4      # )rE   )_3dvar   rL   )r=   r   rj  s   && r?   rad_distPie3d.rad_dist  s)    

3qw<AGCK 011rB   c                   \         P                  V 4       \        \        4      V n        \
        P                  V P                  ^ ,          n        \
        P                  V P                  ^,          n        \
        P                  V P                  ^,          n        \
        P                  V P                  ^,          n        \
        P                  V P                  ^,          n        \
        P                  V P                  ^,          n        \
        P                  V P                  ^,          n        R;V n        V n        RV n        ^V n        . ROV n        R# )r   Ni,  )g      )@g4@r   g      6@g      @g      2@g      *@)rk  r   r'   r6  r   r   r  rb   r  r  r  azurecrimson
darkvioletrx  ry  r   r   r4  r   s   &r?   r   Pie3d.__init__  s    T-.?@#)??A #)#4#4A #);;A #);;A #)<<A #)>>A #)#4#4A &**t|
=	rB   c                   V P                  V4      pWpP                  V P                  V,          P                  4      8  d   V P                  V^ 4      V P	                  V^ 4      V P                  V^4      V P	                  V^4      V P                  W#^4      V P                  W#^4      V P                  W#^ 4      V P                  W#^ 4      .pVP                  V\        WWe^R7      34       R# R# )r   rc   rb   r_   rf   N)	rk  rO  r1  rV  r\  rb  rg  r   r#   )	r=   r   r   r   rc   r_   rb   rdrL  s	   &&&&&&&  r?   	_fillSidePie3d._fillSide  s    ]]5!mmDJJqM--..1dggal!TWWQq\"47711#5"47711#57A HHbyxyz{| /rB   c                  a  S P                   pS P                  p\        V^Z,           4      ;pS n        \	        V4      pS P
                  p\        V4      V,          S n        \        V4      V,          S n	        S P                  S P                  R,          ,           S n        S P                  S P                  S P                  ,
          R,          ,           S n        S P                  S P                  ,
          ;rgS P                   '       d   S P                   pS P"                  '       d   S P"                  pVS n        RS P&                  R,          ,
          V,          ;S n        pS P+                  4       pS P,                  p	S P.                  p
S P0                  pS P2                  pS P4                  pS P6                  pS P8                  p\;        V4      ;S n        p. ;pS n        \A        4       p\        S PB                  4      pS PD                  R8H  ;'       d    R;'       g    ^pV F?  pVV,          pTVV,           ppTpV^ 8  d   TTppVPG                  \I        VV4      4       KA  	  \K        S PL                  V4      pTpV^,           p. p. p. p ! V 3R lR\N        4      pS PP                  p\S        V4       EF  pVV,          pVPT                  '       g   K!  VV,          p V PV                  ;p!pV PX                  ;p"p\[        V"V!,
          4      p#V#\\        8  d   Ke  \_        VP`                  VPb                  VPd                  4      p$\_        VPf                  VPh                  VPd                  4      ;'       g    T$p%VPj                  p&V
! V^ 4      p'V! V^ 4      p(V
! V^4      p)V! V^4      p*V'       Ed   VPm                  \o        V)V*VV!V"VV%V&V$^R7
      4       V!Tu;8  d   V"8  d   M MTpV!Tu;8  d   V"8  d   M MTp\q        V%V$V&^R7      p+V+Ps                  V)V*VVVV^R	7       V+Pu                  V! VV^ 4      V! VV^ 4      4       V+Ps                  V'V(VVVV^R
7       V+Pw                  4        VV8:  d   VV8  d   ^ p,M\y        V! V4      V! V4      4      p,VPG                  V,V+34       V! VVV!V%V&V$4       V! VVV"V%V&V$4       VP`                  p$VPf                  ;'       g    T$p%VPG                  \o        V'V(VV!V"VV%V&V$^R7
      4       V#\z        8  d   \}        V'V(WgV%V&V$^R7      p-M\o        V'V(VV!V"VV%V&V$^R7
      p-VPG                  V-4       VV,          p.VP~                  '       g   EK  V.'       g   EK  VP                  p/S ;P$                  V/,          un        S ;P(                  V/,          un        V P                  p0V! VV0^ 4      p1V! VV0^ 4      p2\        S V.V0V1V2VVR7      p3VPG                  V34       V'       dH   RV1RV2RV0RS P$                  RS P(                  RV
! V^ 4      RV! V^ 4      RV3P                  4       /V3nD        VS n        VS n        EK  	  VP                  \        R7       V'       d   V'       d   \        VS P                  4       V U4u. uF  p4V4^,          NK  	  up4V,           V,            F  p5VPm                  V54       K  	  V# u up4i )r  r         ?g      Y@r  c                   B   <a  ] tR tRt o  ZP                  tR tRtV tR# ) Pie3d.draw.<locals>.WedgeLabel3di  c                    V^ ,          R8X  dK   \        V R4      '       g7   V P                  V n        V P                  ) V P                  ,           V n        R# R# R# )r   r5   _odyN)r#  r   r|  r[  r<   s   &&r?   r@   *Pie3d.draw.<locals>.WedgeLabel3d._checkDXY  sE    a5#:"4//$(GG	#'99*t"> 0 rB   )r|  r   N)rT   rU   rV   rW   r[  r@   rX   rY   )r[   r=   s   @r?   WedgeLabel3drz    s     J? ?rB   r~  )ry  rc   r_   rb   rf   rs  )ry  moveTo)ry  r  )rc   r_   rb   rf   )r   r   r   r   r   r   r   r   r   r'  r   )Ir   rM  r   rj  r4  rL  r   rT  r   r[  r   r   rS  r   r   rZ  rx  ry  r_  rK  rf  r  r  rV  r\  rb  rg  rk  ru  r   r  rO  r   rm  r  r   r=  r   r   r8   rp  r   r   r?  r@  rL   r  r3  rb   r7  r8  rc   r9  r_   r  r   r"   addArclineTo	closePathr   r  r   r}   rl   r1  r   r   r   r)  rH  r  r   )6r=   r   	_3d_anglerj  a0rL  radiusxradiusyr4  r?  rV  r\  rb  rg  rk  ru  r5   rO  r  lastra  angle1angle0r   r  rH  rJ  r   r~  rp  r   r   slr?  r@  r
  rb   rc   r_   cx0cy0cx1cy1rL  rt  r  r   ratr1  r   r   r   r0   r   s6   f                                                     r?   r  
Pie3d.draw  s   MM	!)B,//
5\==b'(*b'(*66$**S.(664;;8#== HHTVVO+<<<4<<<<<4<<#&)9)9%)?#?"HH!!#iiWWWWWWWW==NN	 #D	)A
GDOO$^^[(//R441AGA!1T6FFD!tffVVLLvf-.  DKK*s]	?: 	? !22qA1IE===(qB%%B%%BRUB({H"5??53H3HWI$U%6%6u7N7Nu}}]jjajK++KQq'CQq'CQq'CQq'CxeCGRG,7KZc/02 3 <R<"<R<"yU`pqrSwaPAfQ1VA7SwqQ5=VU]BXf-hv.>?B"Q !Ab[C!Ab[C I++88yKHHU3s72b(3V_opr s8|"3W(3V_opr !SBw(3V_oprHHX!9D"""tt''$$ffAc!Ac! d3vfUl[$$'VWc$($--dmmTRTUVWXRY[_`bcdef`g$,akkm#&AK !( 'C F 	
7Qt/!"#A1Q44#A%a''AEE!H ( $s   ![c                   \        ^^d4      p\        4       p^2Vn        ^
Vn        ^dVn        ^PVn        . ROVn        . ROVn        RVP                  n	        ^
VP                  ^,          n
        ^VP                  ^,          n	        ^^.VP                  ^,          n        RVP                  ^,          n        \        P                  VP                  ^,          n        \        P                   VP                  ^ ,          n        \        P$                  VP                  ^,          n        \        P&                  VP                  ^,          n        \        P(                  VP                  ^,          n        \        P*                  VP                  ^,          n        \        P,                  VP                  ^,          n        \        P.                  VP                  ^,          n        ^ V P                  ^,          n        ^V P                  ^,          n        ^V P                  ^,          n        ^V P                  ^,          n        ^ V P                  ^,          n        VP3                  V4       V# r  )r   rk  r   r   r   r   r4  r   r   r_   rh   rd   rl   r   r  rk   r  rb   r  r  r  r  r  r  r   r  r  s   &  r?   r  
Pie3d.demoQ  s   CU	%-	!		 		!#$		! ()!u		!$#'		! !'		!!'		!!'!2!2		!!'		!!'		!!'!2!2		!!'!1!1		!!'!2!2		!!"A!"A!"A!"A!"A	b	rB   )rj  rS  rZ  r_  rf  r  rO  rT  r[  r4  r   r   r   rx  ry  N)rT   rU   rV   rW   r   rk  r   r   r   rK  rL  rM  rP  rV  r\  rb  rg  rk  r   ru  r  r  rX   rY   rZ   s   @r?   rJ  rJ    s     C"82KL/BC/@A
H
 KHHCcc882>}}~ rB   rJ  c                     \        R^4      p \        4       p^Vn        ^2Vn        ^
.Vn        R.Vn        ^VP                  n        V P                  V4       V # z1Make a degenerated pie chart with only one slice.  r   )	r   rk  r   r   r4  r   r   r_   r  r[  r  s     r?   sample0ar  s  sS     	SA	BBDBDdBGBIBIIEE"IHrB   c                     \        R^4      p \        4       p^Vn        ^2Vn        ^xVn        ^dVn        ^
.Vn        R.Vn        ^VP                  n	        V P                  V4       V # r  )r   rk  r   r   r   r   r4  r   r   r_   r  r  s     r?   sample0br    sa     	SA	BBDBDBHBIdBGBIBIIEE"IHrB   c                    \        R^4      p \        4       p^Vn        ^2Vn        . ROVn        . ROVn        ^VP                  n        ^VP                  ^,          n        ^VP                  ^,          n        ^^.VP                  ^,          n	        RVP                  ^,          n
        \        P                  VP                  ^,          n        V P                  V4       V # )zFMake a typical pie chart with with one slice treated in a special way.r  r  r  r  )r   rk  r   r   r4  r   r   r_   rh   rd   rl   r   r  rk   r  r  s     r?   sample1r    s     	SA	BBDBD&BG.BIBIIBIIaL BIIaL$%a5BIIaL #BIIaL#ZZBIIaLEE"IHrB   c                 ~   \        R^4      p \        4       p^}Vn        ^Vn        . ROVn        . ROVn        ^Vn        ^Vn        ^VP                  n	        \        P                  VP                  ^ ,          n        \        P                  VP                  ^,          n        \        P                  VP                  ^,          n        \        P                  VP                  ^,          n        \        P                   VP                  ^,          n        \        P"                  VP                  ^,          n        \        P$                  VP                  ^,          n        \        P&                  VP                  ^,          n        \        P(                  VP                  ^,          n        V P+                  V4       V # )z"Make a pie chart with nine slices.r  )	gףp=
?gl?gS㥻?g~jt?gL7A`?gQ?g~jt?gT㥛 ?g333333?)	12345678X)r   rk  r   r   r4  r   r   r   r   r_   r   	steelbluerb   thistle
cornflowerlightsteelbluer  r  r  tandarkseagreenr  r  s     r?   sample2r    s#    	SA	BBDBD#BG >BIBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaL#..BIIaL#ZZBIIaL#00BIIaLEE"IHrB   c                    \        R^4      p \        4       p^}Vn        ^Vn        . ROVn        ^Vn        ^Vn        ^VP                  n        \        P                  VP                  ^ ,          n        \        P                  VP                  ^,          n        \        P                  VP                  ^,          n        V P                  V4       V # )z(Make a pie chart with a very slim slice.r  )J   r      )r   rk  r   r   r4  r   r   r   r_   r   r  rb   r  r  r  r  s     r?   sample3r    s     	SA	BBDBDBGBHBIBII#--BIIaL#^^BIIaL#..BIIaLEE"IHrB   c                    \        R^4      p \        4       p^}Vn        ^Vn        . ROVn        ^Vn        ^Vn        ^VP                  n        \        P                  VP                  ^ ,          n        \        P                  VP                  ^,          n        \        P                  VP                  ^,          n        \        P                  VP                  ^,          n        \        P                  VP                  ^,          n        \        P                   VP                  ^,          n        V P#                  V4       V # )z/Make a pie chart with several very slim slices.r  r  r   r   r   r      )r   rk  r   r   r4  r   r   r   r_   r   r  rb   r  r  r  r  r  r  r  s     r?   sample4r    s     	SA	BBDBD"BGBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrB   c                    \        R^4      p \        4       p^}Vn        ^Vn        . ROVn        . ROVn        ^Vn        ^Vn        ^Vn        ^VP                  n
        \        P                  VP                  ^ ,          n        \        P                  VP                  ^,          n        \        P                  VP                  ^,          n        \        P                   VP                  ^,          n        \        P"                  VP                  ^,          n        \        P$                  VP                  ^,          n        V P'                  V4       V # )zMake a pie with side labels.r  )   r   r   r   r   r   example1example2example3example4example5example6)r   rk  r   r   r4  r   r   r   r   r   r_   r   r  rb   r  r  r  r  r  r  r  s     r?   sample5r    s     	SA	BBDBD BGXBIBMBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrB   c                    \        R^4      p \        4       p ^ Vn        ^Vn        . ROVn        . ROVn        ^Vn        ^Vn        ^Vn        ^VP                  n
        \        P                  VP                  ^ ,          n        \        P                  VP                  ^,          n        \        P                  VP                  ^,          n        \        P                   VP                  ^,          n        \        P"                  VP                  ^,          n        \        P$                  VP                  ^,          n        \'        ^ ^ ^ ^4      pV P)                  V4       V P)                  V4       V # )z=Illustrates the pie moving to leave space for the left labelsr  r  r  )r   rk  r   r   r4  r   r   r   r   r   r_   r   r  rb   r  r  r  r  r  r&   r  )r[  r  r   s      r?   sample6r    s    	SA	B'BDBD"BGXBIBMBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLQq3AEE"IEE!HHrB   c                    \        R^4      p \        4       p^2Vn        ^Vn        ^dVn        ^dVn        . ROVn        . ROVn        ^Vn        ^Vn	        ^ Vn
        ^VP                  n        \        P                  VP                  ^ ,          n        \        P                   VP                  ^,          n        \        P"                  VP                  ^,          n        \        P$                  VP                  ^,          n        \        P&                  VP                  ^,          n        \        P(                  VP                  ^,          n        V P+                  V4       V # )zCase with overlapping pointersr  )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  example7example8example9	example10	example11	example12	example13	example14	example15	example16	example17	example18	example19	example20	example21	example22	example23	example24	example25	example26	example27	example28)r   rk  r   r   r   r   r4  r   r   rp  r   r   r_   r   r  rb   r  r  r  r  r  r  r  s     r?   sample7r  9  s     	SA	BBDBDBHBIbBGkBI BMBBO BII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrB   c                     \        R^4      p \        4       p^2Vn        ^Vn        ^dVn        ^dVn        . ROVn        . ROVn        ^Vn        ^Vn	        ^VP                  n        \        P                  VP                  ^ ,          n        \        P                  VP                  ^,          n        \        P                   VP                  ^,          n        \        P"                  VP                  ^,          n        \        P$                  VP                  ^,          n        \        P&                  VP                  ^,          n        V P)                  V4       V # )Case with overlapping labelsr  )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   rk  r   r   r   r   r4  r   r   rp  r   r_   r   r  rb   r  r  r  r  r  r  r  s     r?   sample8r  [  s     eSA	BBDBDBHBIABG*BI BMBBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrB   c                     \        R^4      p \        4       p^}Vn        ^2Vn        . ROVn        . ROVn        ^Vn        ^Vn        ^dVn        ^dVn	        ^VP                  n        \        P                  VP                  ^ ,          n        \        P                  VP                  ^,          n        \        P                   VP                  ^,          n        \        P"                  VP                  ^,          n        \        P$                  VP                  ^,          n        \        P&                  VP                  ^,          n        V P)                  V4       V # )r  r  ))   r  r     r  r  r  r  r  #   r  r  r  r  r  r  r  )r   rk  r   r   r4  r   r   rp  r   r   r   r_   r   r  rb   r  r  r  r  r  r  r  s     r?   sample9r  {  s     _SA	BBDBDNBG*BI BMBBHBIBII#--BIIaL#^^BIIaL#..BIIaL#22BIIaL#..BIIaL#--BIIaLEE"IHrB   __main__)	renderPDFr   r  samplezsample%sz%s.pdfrH   r:   r$  )Frx  )s__version__r   	functoolsmathr   r   r   reportlab.libr   reportlab.lib.validatorsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   "reportlab.graphics.widgets.markersr   r   reportlab.lib.attrmapreportlab.graphics.shapesr   r   r   r   r    r!   r"   r#   r$   r%   r&   reportlab.graphics.widgetbaser'   r(   reportlab.graphics.charts.areasr)   r  r*   $reportlab.graphics.charts.textlabelsr+   	reportlabr-   rO   rN   r  r  r8   r]   r   r   r   r   r   r   r  r  r"  r%  
cmp_to_keyr,  r5  r8  r:  rX  rb  r   rd  rk  r  !reportlab.graphics.charts.utils3dr3  r4  r   r   r6  r=  rH  _270rrJ  r  r  r  r  r  r  r  r  r  r  r  rT   sysreportlab.graphicsr  argvr   
startswithnameglobalsr1  
drawToFiler;   rB   r?   <module>r     s   	     @ @ @ @ @ @ H # E  E  E  E M 4 5 6 CD"S#dCSs3PSUY[^`de S"T2c3tSc$CQTVZ\_aef h Z)j Z)x<|x 6o GR
.$


w
'D8			f	%D"L2 u
 unD# DL O NE&
 E&N6 6


w
'c
PC Pf"&.@.26@ D@@ Z
 ,88B<  C5DLL**q
Q)D/#Who6  rB   