§
    £”j© ã                   ó  — d Z dZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZ dd	lmZmZ dd
lmZ ddl m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7  G d„ de"¦  «        Z8 G d„ de3¦  «        Z9 G d„ de9¦  «        Z: G d„ de9¦  «        Z; G d„ d¦  «        Z< G d„ de9¦  «        Z= G d„ de=e:¦  «        Z> G d „ d!e=e;¦  «        Z?d"„ Z@d#„ ZAd$„ ZBd%„ ZCd&„ ZDd'„ ZEd(„ ZFd)„ ZGd*„ ZHd+„ ZId,„ ZJd-„ ZKg d.¢ZLd/„ ZMd0„ ZNd1„ ZOd2„ ZPd3„ ZQd4„ ZRd5„ ZSd6„ ZTd7„ ZUd8„ ZVd9„ ZWd:„ ZXd;„ ZYd<„ ZZd=„ Z[d>„ Z\d?„ Z]d@„ Z^g d.¢ZLdA„ Z_dB„ Z`dC„ ZadD„ ZbdE„ ZcdF„ ZddG„ ZedH„ Zf G dI„ dJe(¦  «        ZgdS )Kz3.3.0z™This module defines a variety of Bar Chart components.

The basic flavors are stacked and side-by-side, available in horizontal and
vertical versions. 

é    N)Úliteral_eval)Úcolors)ÚisNumberÚisNumberOrNoneÚisColorOrNoneÚisStringÚ
SequenceOfÚ	isBooleanÚisStringOrNoneÚNoneOrÚisListOfNumbersOrNoneÚEitherOrÚOneOfÚisInt)ÚisStrÚyieldNoneSplits)ÚuSymbol2SymbolÚisSymbol)ÚAttrMapÚAttrMapValue)ÚstringWidth)ÚTypedPropertyCollectionÚ
PropHolderÚ
tpcGetItem)ÚLineÚRectÚGroupÚDrawingÚPolyLine)ÚXCategoryAxisÚ
YValueAxisÚYCategoryAxisÚ
XValueAxis)ÚBarChartLabelÚNoneOrInstanceOfNA_Label)ÚPlotArea)Ú_objStr©Úcmpc                   ó*  — e Zd Z e eed¬¦  «         eed¬¦  «         eed¬¦  «         eed¬¦  «         eddd¬	¦  «         eed
¬¦  «         e e	e
¦  «        dd¬	¦  «         eed¬¦  «         e e	e¦  «        d¬¦  «        ¬¦	  «	        Zd„ ZdS )ÚBarChartPropertieszColor of the bar border.©ÚdesczColor of the bar interior area.zWidth of the bar border.zDash array of a line.Nz,A widget to be used instead of a normal bar.é   ©r-   ÚadvancedUsagez0Text to be associated with a bar (eg seriesname)z!None or makeMarker('Diamond') ...z(minimum width/height that will be drawn.z%if this bar should be drawn as a line)	ÚstrokeColorÚ	fillColorÚstrokeWidthÚstrokeDashArrayÚsymbolÚnameÚswatchMarkerÚminDimenÚisLinec                 ó`   — d | _         t          j        | _        d| _        d | _        d | _        d S )Nç      à?)r1   r   Úbluer2   r3   r5   r4   ©Úselfs    úr/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/reportlab/graphics/charts/barcharts.pyÚ__init__zBarChartProperties.__init__,   s0   € ØˆÔÝœˆŒØˆÔØˆŒØ#ˆÔÐÐó    )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r
   Ú_attrMapr@   © rA   r?   r+   r+      sÿ   € € € € € ØˆwØ"�l =Ð7QÐRÑRÔRØ �L Ð5VÐWÑWÔWØ"�l 8Ð2LÐMÑMÔMØ&˜,Ð'<ÐCZÐ[Ñ[Ô[Ø�˜dÐ)WÐfgÐhÑhÔhØˆ|˜HÐ+]Ð^Ñ^Ô^Ø#�| F F¨8Ñ$4Ô$4Ð;^ÐmnÐoÑoÔoØ�< Ð5_Ð`Ñ`Ô`Ø�˜f˜f YÑ/Ô/Ð6]Ð^Ñ^Ô^ð

ñ 

ô 

€Hð$ð $ð $ð $ð $rA   r+   c                   ó†  — e Zd ZdZ edOi de“d e ee ee	e
f¦  «        f¦  «        dd¬¦  «        “d ee
d¬	¦  «        “d
 ee
d¬	¦  «        “d ee
d¬	¦  «        “d edd¬	¦  «        “d edd¬	¦  «        “d edd¬	¦  «        “d edd¬	¦  «        “d edd¬	¦  «        “d edd¬	¦  «        “d eddd¬¦  «        “d edd¬	¦  «        “d eed d¬¦  «        “d! eed"d¬¦  «        “d# edd$¬	¦  «        “d% ee
d&¬	¦  «        “d' e ed(d)d*¦  «        d+¬	¦  «        “d, edd-d¬¦  «        “d. eed/¬	¦  «        “d0 eed1d¬¦  «        “d2 e e eed3d3d¬4¦  «        d3dd¬4¦  «        d5¦  «        “ŽZd6„ ZdPd7„Zd8„ Zd9„ Zd:„ Zd;„ Zd<„ Zd=„ Zd>„ Zd?„ Zd@„ ZdA„ ZdB„ ZdQdD„ZdRdE„ZdF„ Z dG„ Z!dH„ Z"dI„ Z#dJ„ Z$dK„ Z%dL„ Z&dM„ Z'dN„ Z(dS )SÚBarChartz(Abstract base class, unusable by itself.ÚBASEÚuseAbsolutezrFlag to use absolute spacing values; use string of gsb for finer control
(g=groupSpacing,s=barSpacing,b=barWidth).r.   r/   ÚbarWidthzThe width of an individual bar.r,   ÚgroupSpacingzWidth between groups of bars.Ú
barSpacingzWidth between individual bars.ÚbarsNzHandle of the individual bars.Ú	valueAxiszHandle of the value axis.ÚcategoryAxiszHandle of the category axis.Údataz/Data to be plotted, list of (lists of) numbers.Ú	barLabelsz!Handle to the list of bar labels.ÚbarLabelFormatzZFormatting string or function used for bar labels. Can be a list or list of lists of such.ÚbarLabelCallOutz`Callout function(label)
label._callOutInfo = (self,g,rowNo,colNo,x,y,width,height,x00,y00,x0,y0)ÚbarLabelArrayzGexplicit array of bar label values, must match size of data if present.ÚreversePlotOrderz,If true, reverse common category plot order.ÚnaLabelzLabel to use for N/A values.Úannotationsz<list of callables, will be called with self, xscale, yscale.ÚcategoryLabelBarSizez=width to leave for a category label to go between categories.ÚcategoryLabelBarOrderÚfirstÚlastÚautoz,where any label bar should appear first/lastÚ	barRecordzJcallable(bar,label=labelText,value=value,**kwds) to record bar informationÚzIndexOverridesa!  None (the default ie use old z ordering scheme) or a ',' separated list of key=value (int/float) for new zIndex ordering. If used defaults are
    background=0,
    categoryAxis=1,
    valueAxis=2,
    bars=3,
    barLabels=4,
    categoryAxisGrid=5,
    valueAxisGrid=6,
    annotations=7ÚcategoryNALabelz'Label to use for a group of N/A values.ÚseriesOrderr   )ÚemptyOKÚNoneOKÚloz#dynamic 'mixed' category style casec           
      ó¶  — | j         }|t          |¦  «        z  }||         }t          |dt          |dd ¦  «        ¦  «        }	t          |dt          |dd ¦  «        ¦  «        }
t          |dt          |dd ¦  «        ¦  «        }t          |dt          |dd ¦  «        ¦  «        }t          |dt          |dd ¦  «        ¦  «        }|rt          |||dz  z   ||dz  z   |
¦  «        S t          |dd¦  «        rÑ||dz  z   }t	          |d	¦  «        r|j        }nt	          |d	¦  «        r|j        }nd }t          ||||z   ||j        p|j        |j	        |j
        ¬
¦  «        }|r$t          |||dz  z   ||j        p|j        ¦  «        }|r<|r:t          ¦   «         }|                     |¦  «         |                     |¦  «         |S |p|S t          ||||||	||
¬¦  «        S )Nr1   r2   r4   r3   r7   ç       @r9   Fr5   ©r1   r3   r4   )r3   r1   r4   r2   )rN   ÚlenÚgetattrr   Úhasattrr5   r   r1   r2   r3   r4   r   Úaddr   )r>   ÚrowNoÚxÚyÚwidthÚheightÚ	baseStyleÚstyleIdxÚstyler1   r2   r4   r3   r7   Úyh2ÚSÚLÚgs                     r?   ÚmakeSwatchSamplezBarChart.makeSwatchSampleW   s  € Ø”Iˆ	Ø�3˜y™>œ>Ñ)ˆØ˜(Ô#ˆÝ˜e ]µG¸IÀmÐTXÑ4YÔ4YÑZÔZˆÝ˜E ;µ¸	À+ÈdÑ0SÔ0SÑTÔTˆ	Ý! %Ð):½GÀIÐN_Ð`dÑ<eÔ<eÑfÔfˆÝ˜e ]µG¸EÀ=ÐQUÑ4VÔ4VÑWÔWˆÝ˜u nµg¸iÈÐX\Ñ6]Ô6]Ñ^Ô^ˆØð 	MÝ! ,¨q°°r±©z¸!¸FÀ2¹I¹+ÀiÑPÔPÐPÝ�U˜8 EÑ*Ô*ð 	MØ�F˜2‘I‘+ˆCÝ�u˜hÑ'Ô'ð Ø”L��Ý˜ HÑ-Ô-ð ØÔ$��à�Ý�Q�s˜A˜e™G SØ %Ô 1Ð D°U´_Ø %Ô 1Ø&+Ô&;ð=ñ =ô =ˆAð
 Ð[•n Q q¨¨r©¡z°#°eÔ6GÐ6ZÈ5Ì?Ñ[Ô[�!Øð �Qð Ý‘G”G�Ø—’�a‘”�Ø—’�a‘”�Ø�Ø�6˜ˆMå˜˜!˜E &°[È[Ø(7À)ðMñ Mô Mð MrA   c                 óT   — t          t          | j        |         d|¦  «        ¦  «        S )zreturn series name i or defaultr6   )r'   ri   rN   )r>   ÚiÚdefaults      r?   ÚgetSeriesNamezBarChart.getSeriesNamez   s"   € å•w˜tœy¨œ|¨F°7Ñ;Ô;Ñ<Ô<Ð<rA   c                 óÊ  — | j         j        dvsJ d| j         j        z  ¦   «         ‚| j        r't          ¦   «         | _        t          ¦   «         | _        n&t          ¦   «         | _        t          ¦   «         | _        t          dddd¦  «        | j        j
        d         _        t          j        | ¦  «         d| _        d| _        d	d
g| _        d| _        d| _        d| _        d| _        t)          t*          ¦  «        | _        d| j        _        d| j        _        d | _        d | _        d| j        _        t)          t8          ¦  «        | _        d| j        _        t>          j         | j        _!        d | j        _"        t>          j#        | j        d         _$        t>          j%        | j        d         _$        t>          j&        | j        d         _$        d x| _'        | _(        d | _)        d S )N)rH   Ú
BarChart3DzAbstract Class %s InstantiatedÚstackedÚparallelÚparallel_3dÚmixedrs   r   )éd   én   éx   é‚   )éF   éP   éU   éZ   é
   é   ÚcÚmiddler.   é   )*Ú	__class__rB   Ú_flipXYr"   rP   r#   rO   r    r!   r   rE   Úvalidater&   r@   rM   rV   rQ   rJ   rK   rL   r   r$   rR   Ú	boxAnchorÚ
textAnchorrS   rU   Únudger+   rN   r3   r   Úblackr1   r4   Úredr2   Úgreenr<   rW   r`   r_   r=   s    r?   r@   zBarChart.__init__~   s¢  € ØŒ~Ô&Ð.GÐGÐGÐGÐIiÐlpÔlzô  mDñ  JDÑGÔGÐGàŒ<ð 	*Ý -¡¤ˆDÔÝ'™\œ\ˆDŒNˆNå -¡¤ˆDÔÝ'™\œ\ˆDŒNÝ7<¸YÀzÐR_Ð`gÑ7hÔ7hˆÔÔ" 7Ô+Ô4åÔ˜$ÑÔÐØˆŒØ !ˆÔð 'Ø$ð&ˆŒ	ð ˆÔØˆŒØˆÔØˆŒå0µÑ?Ô?ˆŒØ#&ˆŒÔ Ø$,ˆŒÔ!Ø"ˆÔØ!ˆÔð  !ˆŒÔõ ,Õ,>Ñ?Ô?ˆŒ	Ø !ˆŒ	ÔÝ &¤ˆŒ	ÔØ$(ˆŒ	Ô!å!'¤ˆŒ	�!ŒÔÝ!'¤ˆŒ	�!ŒÔÝ!'¤ˆŒ	�!ŒÔØ.2Ð2ˆŒ�tÔ+Ø#ˆÔÐÐrA   c                 ó¶   — | j         j        dk    rt          d¦  «        ‚t          dd¦  «        }|                       ¦   «         }|                     |¦  «         |S )zShows basic use of a bar chartrH   z#Abstract Class BarChart has no demoéÈ   rƒ   )r�   rB   ÚNotImplementedErrorr   rk   )r>   ÚdrawingÚbcs      r?   ÚdemozBarChart.demo»   sS   € àŒ>Ô" JÒ.Ð.Ý%Ð&KÑLÔLÐLÝ˜#˜sÑ#Ô#ˆØ�^Š^ÑÔˆØ�Š�B‰ŒˆØˆrA   c                 ón  ‡‡	— t          | dd ¦  «        }t          | j        ¦  «        Š	|sd„ t          ‰	¦  «        D ¦   «         }nê| j        Št          t          ‰	¦  «        ¦  «        }t          ¦   «         }g }|D ]X}ˆ	fd„|D ¦   «         }ˆfd„|D ¦   «         }|r||z  }||z  }||z  }|r'|                     t          |¦  «        ¦  «         ||z  }ŒY|r,|                     d„ t          |¦  «        D ¦   «         ¦  «         |r,|                     d„ t          |¦  «        D ¦   «         ¦  «         || _
        d S )Nra   c                 ó   — g | ]}|f‘ŒS rF   rF   ©Ú.0Ússs     r?   ú
<listcomp>z+BarChart.getSeriesOrder.<locals>.<listcomp>È   s   € Ð*Ð*Ð*˜2�"�Ð*Ð*Ð*rA   c                 ó4   •— h | ]}d |cxk    r‰k    ¯n n|’ŒS )r   rF   )r¢   r£   Úns     €r?   ú	<setcomp>z*BarChart.getSeriesOrder.<locals>.<setcomp>Ï   s.   ø€ Ð0Ð0Ð0˜B q¨" x x¢x x¨a¢x x x x x�R x x xrA   c                 óB   •— h | ]}‰                      |d d¦  «        ¯|’ŒS )r9   F)Ú	checkAttr)r¢   r£   rN   s     €r?   r§   z*BarChart.getSeriesOrder.<locals>.<setcomp>Ð   s.   ø€ ÐJÐJÐJ˜R¨¯ª°r¸(À5Ñ(IÔ(IÐJ�bÐJÐJÐJrA   c              3   ó   K  — | ]}|fV — Œd S ©NrF   r¡   s     r?   ú	<genexpr>z*BarChart.getSeriesOrder.<locals>.<genexpr>Ù   s$   è è € Ð8Ð8 2˜"˜Ð8Ð8Ð8Ð8Ð8Ð8rA   c              3   ó   K  — | ]}|fV — Œd S r«   rF   r¡   s     r?   r¬   z*BarChart.getSeriesOrder.<locals>.<genexpr>Û   s$   è è € Ð7Ð7 2˜"˜Ð7Ð7Ð7Ð7Ð7Ð7rA   )ri   rh   rQ   ÚrangerN   ÚsetÚappendÚtupleÚextendÚsortedÚ_seriesOrder)
r>   ÚbsÚRÚunseenÚlinesÚsrw   ÚglrN   r¦   s
           @@r?   ÚgetSeriesOrderzBarChart.getSeriesOrderÄ   se  øø€ Ý�T˜-¨Ñ-Ô-ˆÝ�”	‰NŒNˆØð 	8Ø*Ð*¥ q¡¤Ð*Ñ*Ô*ˆAˆAà”9ˆDÝ�˜q™œ‘]”]ˆFÝ‘E”EˆEØˆAØð 	 ð 	 �Ø0Ð0Ð0Ð0 !Ð0Ñ0Ô0�ØJÐJÐJÐJ 1ÐJÑJÔJ�Øð !Ø˜‘G�AØ˜R‘K�EØ˜b‘L�FØð  Ø—H’H�U 1™XœXÑ&Ô&Ð&Ø˜a‘K�FøØð 9Ø—’Ð8Ð8­°©¬Ð8Ñ8Ô8Ñ8Ô8Ð8Øð 8Ø—’Ð7Ð7­°©¬Ð7Ñ7Ô7Ñ7Ô7Ð7ØˆÔÐÐrA   c                 ó,  ‡‡— | j         j        }| j        Št          t	          t          t          ‰¦  «        ¦  «        ¦  «        }‰Š|dvrBg Šˆfd„}|dk    r |‰Ž  n/|                      ¦   «          | j        D ]} |ˆfd„|D ¦   «         Ž  Œ‰| _	        d S )N©r€   r�   c                  ó4  •— t          d„ | D ¦   «         ¦  «        dgz  }|d d …         }| D ]B}t          |¦  «        D ]0\  }}|pd}|dk    r||xx         |z  cc<   Œ ||xx         |z  cc<   Œ1ŒC‰                     |¦  «         ‰                     |¦  «         d S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r«   )rh   )r¢   Úds     r?   r¬   zBBarChart._getConfigureData.<locals>._accumulate.<locals>.<genexpr>ç   s(   è è € Ð/Ð/¨�S ™VœVÐ/Ð/Ð/Ð/Ð/Ð/rA   r   ç�íµ ÷Æ°¾)ÚmaxÚ	enumerater°   )ÚDÚpdataÚndatarÀ   rz   ÚvrQ   s         €r?   Ú_accumulatez/BarChart._getConfigureData.<locals>._accumulateæ   sÌ   ø€ ÝÐ/Ð/¨QÐ/Ñ/Ô/Ñ0Ô0°!°Ñ4�Ø˜a˜a˜aœ�Øð *ð *�AÝ(¨™|œ|ð *ð *™˜˜!Ø˜F ˜Ø˜eš8˜8Ø! !˜H˜HœH¨™M˜H˜H™H˜Hà! !˜H˜HœH¨™M˜H˜H™H˜Hð*ð —’˜EÑ"Ô"Ð"Ø—’˜EÑ"Ô"Ð"Ð"Ð"rA   r   c              3   ó(   •K  — | ]}‰|         V — Œd S r«   rF   )r¢   ÚjÚ_datas     €r?   r¬   z-BarChart._getConfigureData.<locals>.<genexpr>÷   s'   øè è € Ð!6Ð!6¨q %¨¤(Ð!6Ð!6Ð!6Ð!6Ð!6Ð!6rA   )
rP   rs   rQ   rÂ   ÚlistÚmaprh   r»   r´   Ú_configureData)r>   ÚcAStyleÚccrÈ   ÚbrË   rQ   s        @@r?   Ú_getConfigureDatazBarChart._getConfigureDataÞ   sÖ   øø€ ØÔ#Ô)ˆØŒyˆÝ••c�#˜d‘m”mÑ$Ô$Ñ%Ô%ˆØˆØÐ4Ð4Ð4àˆDð#ð #ð #ð #ð #ð ˜	Ò!Ð!Ø�˜UÐ#Ð#Ð#à×#Ò#Ñ%Ô%Ð%ØÔ*ð 8ð 8�AØ�KÐ!6Ð!6Ð!6Ð!6°AÐ!6Ñ!6Ô!6Ð7Ð7Ð7Ø"ˆÔÐÐrA   c                 ó˜   — |                       ¦   «          | j                             | j        ¦  «         | j        j        | j        j        fS )z Attempt to return the data range)rÒ   rO   Ú	_setRangerÎ   Ú	_valueMinÚ	_valueMaxr=   s    r?   Ú
_getMinMaxzBarChart._getMinMaxú   sB   € à×ÒÑ Ô Ð ØŒ× Ò  Ô!4Ñ5Ô5Ð5ØŒ~Ô'¨¬Ô)AÐAÐArA   c                 ó  — | j         }|                     | j        | j        |¦  «         |                      ¦   «          |                     | j        ¦  «         |                     d¦  «        }|j        s||k    r|||z   k    r|n|S )z8Position and configure value axis, return crossing valuer   )	rO   ÚsetPositionrm   rn   rÒ   Ú	configurerÎ   ÚscaleÚ	forceZero)r>   ÚorgÚlengthÚvAÚ	crossesAts        r?   Ú
_drawBeginzBarChart._drawBegin   sƒ   € àŒ^ˆØ
�Š�t”v˜tœv vÑ.Ô.Ð.Ø×ÒÑ Ô Ð Ø
�Š�TÔ(Ñ)Ô)Ð)ð —H’H˜Q‘K”Kˆ	ØœLÐ_¨Y¸ª^¨^À	È3ÈvÉ:Ò@UÐ@UˆyˆyÐ\_Ð_rA   c                 ó
  ‡— | j         }| j        }|                     | j        ¦  «         |                      ¦   «          t          ¦   «         }t          | dd¦  «        }|�sV|                     |                      ¦   «         ¦  «         t          |dd¦  «        }t          |dd¦  «        }|s| 	                    || |j
        ¬¦  «         |s| 	                    || |j
        ¬¦  «         |                     |                      ¦   «         ¦  «         |                     |¦  «         |                     |¦  «         |r| 	                    || |j
        ¬¦  «         |r| 	                    || |j
        ¬¦  «         t          | dd¦  «        D ],}|                      || |j        |j        ¦  «        ¦  «         Œ-�nJt          dd	d
ddddd¬¦  «        Š|                     ¦   «                              d¦  «        D �]v}|                     ¦   «         }|sŒ	 |                     d¦  «        \  }	}
n[#  t!          d|›d|›dd                     ˆfd„t%          ‰                     ¦   «         ¦  «        D ¦   «         ¦  «        ›�¦  «        ‚xY w|	‰vrVt!          d|	›d‰›dd                     ˆfd„t%          ‰                     ¦   «         ¦  «        D ¦   «         ¦  «        ›�¦  «        ‚	 t)          |
¦  «        }
t+          |
t,          t.          f¦  «        sJ ‚nY#  t!          d|
||d                     ˆfd„t%          ‰                     ¦   «         ¦  «        D ¦   «         ¦  «        fz  ¦  «        ‚xY w|
‰|	<   �Œxd„ ‰                     ¦   «         D ¦   «         Š‰                     ¦   «          |                      ¦   «         }|j                             d¦  «        }‰D �]0\  }
}	|	dk    r(|                     |                      ¦   «         ¦  «         Œ4|	dk    r|                     |¦  «         ŒP|	d k    r| 	                    || |j
        ¬¦  «         Œt|	d!k    r|                     |¦  «         Œ�|	d"k    r| 	                    || |j
        ¬¦  «         Œ´|	d#k    r|                     |¦  «         ŒÐ|	d$k    r|                     |¦  «         Œì|	dk    r>t          | dd¦  «        D ],}|                      || |j        |j        ¦  «        ¦  «         Œ-�Œ2| `|S )%z"finalize the drawing of a barchartr_   NÚdrawGridLastF)ÚparentÚdimrX   rF   r   r.   r�   é   é   rŒ   é   é   )Ú
backgroundrP   rO   rN   rR   ÚcategoryAxisGridÚvalueAxisGridrX   ú,ú=zBadly formatted zIndex clause z in z
allowed variables are
ú
c                 ó*   •— g | ]}|›d ‰|         ›�‘ŒS ©rî   rF   ©r¢   ÚkÚZs     €r?   r¤   z(BarChart._drawFinish.<locals>.<listcomp>1  sl   ø€ ð  @mð  @mð  @mð  WXð  KLð  KLð  KLð  MNð  OPô  MQð  MQð  ARð  @mð  @mð  @mrA   zUnknown zIndex variable c                 ó*   •— g | ]}|›d ‰|         ›�‘ŒS rñ   rF   rò   s     €r?   r¤   z(BarChart._drawFinish.<locals>.<listcomp>3  sl   ø€ ð  ubð  ubð  ubð  LMð  @Að  @Að  @Að  BCð  DEô  BFð  BFð  vGð  ubð  ubð  ubrA   zCBad zIndex value %r in clause %r of zIndex
allowed variables are
%sc                 ó*   •— g | ]}|›d ‰|         ›�‘ŒS rñ   rF   rò   s     €r?   r¤   z(BarChart._drawFinish.<locals>.<listcomp>8  sl   ø€ ð  Fsð  Fsð  Fsð  ]^ð  QRð  QRð  QRð  STð  UVô  SWð  SWð  GXð  Fsð  Fsð  FsrA   c                 ó   — g | ]	\  }}||f‘Œ
S rF   rF   )r¢   ró   rÇ   s      r?   r¤   z(BarChart._drawFinish.<locals>.<listcomp>:  s    € Ð,Ð,Ð,™3˜1˜Q�!�A�Ð,Ð,Ð,rA   éÿÿÿÿrê   rP   rë   rO   rì   rN   rR   )rP   rO   rÚ   rÎ   ÚcalcBarPositionsr   ri   rk   ÚmakeBackgroundÚmakeGridÚgetGridDimsÚmakeBarsrÛ   ÚdictÚstripÚsplitÚ
ValueErrorÚjoinr³   Úkeysr   Ú
isinstanceÚfloatÚintÚitemsÚsortÚcontentsÚpop)r>   ÚcArß   rw   ÚzIndexÚcAdglÚvAdglÚaÚzró   rÇ   rÑ   Úblrô   s                @r?   Ú_drawFinishzBarChart._drawFinish  s$  ø€ àÔˆØŒ^ˆØ
�Š�TÔ(Ñ)Ô)Ð)Ø×ÒÑÔÐÝ‰GŒGˆå˜Ð/°Ñ5Ô5ˆØñ :	^Ø�EŠE�$×%Ò%Ñ'Ô'Ñ(Ô(Ð(Ý˜B˜~¨eÑ4Ô4ˆEÝ˜B˜~¨eÑ4Ô4ˆEØÐH˜"Ÿ+š+ a¨t¸¼˜+ÑHÔHÐHØÐH˜"Ÿ+š+ a¨t¸¼˜+ÑHÔHÐHØ�EŠE�$—-’-‘/”/Ñ"Ô"Ð"Ø�EŠE�"‰IŒIˆIØ�EŠE�"‰IŒIˆIØÐD�b—k’k !¨4°R´^�kÑDÔDÐDØÐD�b—k’k !¨4°R´^�kÑDÔDÐDÝ˜T -°Ñ3Ô3ÐUÐU�°Q·U²U¸1¸1¸TÀ"Ä(È2Ì8Ñ;TÔ;TÑ5UÔ5UÐ5UÐ5UÑUåØØØØØØ!"ØØð	ñ 	ô 	ˆAð —\’\‘^”^×)Ò)¨#Ñ.Ô.ð ñ �Ø—G’G‘I”I�ØÐ"˜(ðpØŸš ™œ‘C�A�a�aøðpÝ$˜*ÐlmÐlmÐlmÐntÐntÐntÐuy×u~Òu~ð  @mð  @mð  @mð  @mõ  \bð  cd÷  ciò  ciñ  ckô  ckñ  \lô  \lð  @mñ  @mô  @mñ  vnô  vnð  vnð  &oñ  pô  pð  pøøøØ˜A�:�:Ý$˜*ÐfgÐfgÐfgÐhiÐhiÐhiÐjn×jsÒjsð  ubð  ubð  ubð  ubõ  QWð  XY÷  X^ò  X^ñ  X`ô  X`ñ  Qaô  Qað  ubñ  ubô  ubñ  kcô  kcð  kcð  &dñ  eô  eð  eðvÝ$ Q™œ�AÝ% a­­s¨Ñ4Ô4Ð4Ð4Ð4Ð4øðvÝ$Ð%lÐpqÐrsÐtzÐ{÷  |Eò  |Eð  Fsð  Fsð  Fsð  Fsõ  bhð  ij÷  ioò  ioñ  iqô  iqñ  brô  brð  Fsñ  Fsô  Fsñ  |tô  |tð  puñ  &uñ  vô  vð  vøøøØ��!‘‘Ø,Ð, !§'¢'¡)¤)Ð,Ñ,Ô,ˆAØ�FŠF‰HŒHˆHØ—’‘”ˆAØ”—’ Ñ#Ô#ˆBØð ^ñ ^‘��!Ø�l’?�?Ø—E’E˜$×-Ò-Ñ/Ô/Ñ0Ô0Ð0Ð0Ø˜Ò&Ð&Ø—E’E˜"‘I”I�I�IØÐ*Ò*Ð*Ø—K’K ¨°2´>�KÑBÔBÐBÐBØ˜’^�^Ø—E’E˜"‘I”I�I�IØ˜Ò'Ð'Ø—K’K ¨°2´>�KÑBÔBÐBÐBØ˜’Y�YØ—E’E˜!‘H”H�H�HØ˜’^�^Ø—E’E˜"‘I”I�I�IØ˜Ò%Ð%Ý$ T¨-¸Ñ;Ô;Ð]Ð]˜¸Q¿UºUÀ1À1ÀTÈ"Ì(ÐSUÔS[ÑC\ÔC\Ñ=]Ô=]Ð=]Ð=]ùàÐØˆs   ÈH(È(AJ Ë-LÌAM"c                 óþ	  ‡%‡&‡'‡(‡)‡*‡+‡,‡-‡.‡/‡0‡1‡2‡3‡4‡5‡6— | j         Š,‰,r| j        Š/n| j        Š/| j        }|j        Š+| j        }t          |¦  «        x}| _        t          t          t          t          |¦  «        ¦  «        ¦  «        x| _        }| j        }| j        }| j        }t          | dd¦  «        }t          | dd¦  «        }	|	dk    r‰,rdpd}	|	dk    }	|j        Š1| j        Š)t%          ˆ)fd„t'          |¦  «        D ¦   «         ¦  «        }
||
z
  }‰1dk    rI| j        }t          |¦  «        |
z
  }||z  }|d	z
  |z  }|d	k    r|}|}ndx}}||z  dgz  Š&‰&d
d
…         Š'n2‰1dv rd	}||z  }|d	z
  |z  }|}|}n|}|dgz  Š&‰&d
d
…         Š'|}dx}x}}||z   |z   x| _        Š-| j        Š2‰2r3t/          ‰2t0          ¦  «        sdŠ2ndd	d‰2v z  z   dd‰2v z  z   dd‰2v z  z   Š2ndŠ2t3           ‰+d¦  «        d	         ¦  «        }||z
  }‰2dk    r|‰-z  x| _        x}x}}n›‰2dk    rdx}x}}|j        Š%n‡‰2d	k    rd}||z
  ||z   z  x}}nq‰2dk    rd}||z
  ||z   z  x}}n[‰2dk    rdx}}|r||z
  |z
  |z  nd}nA‰2dk    rd}||z
  ||z   z  x}}n+‰2dk    rdx}}||z
  |z
  |z  }n‰2dk    rd	x}}||z
  |z
  |z  }|| _        || _        || _        | j        }|j        Š4|j         Š3|j!        |j"        }}|dcxk    r|k    rn n ‰4d¦  «        Š*n#d|k     r ‰4|¦  «        Š*n|dk     r ‰4|¦  «        Š*‰*| _#        ||z  Š5d|z  |z  }||z  ||z  z   }|r6|	r||dz  z   |z  }||z  }n|||z  z   ||z  z   |dz  z   |z  }||j$        _%        g | _&        | j&        j'        }| j(        }ˆ%ˆ&ˆ'ˆ(ˆ*ˆ+ˆ,ˆ-ˆ.ˆ/ˆ0ˆ1ˆ2ˆ3ˆ4ˆ5ˆ6fd„}‰1dk    r�d} tS          |¦  «        D ]y\  }!Š0g Š(|r|d	z
  |!z
  n|!Š6|‰6|z  z   Š6‰) *                    |!dd¦  «        Š.‰.r| d	z  } ||d	z
  |z  dz  z   Š6n‰6| |z  z  Š6t'          |¦  «        D ]}" ||"|"¦  «         Œ |‰(¦  «         Œzd
S d} tS          | j        ¦  «        D ]£\  }#}$t          |$¦  «        d	k    rdndŠ1|$D ]„}!|r|d	z
  |#z
  n|#Š6|‰6|z  z   Š6g Š(||!         Š0‰) *                    |!dd¦  «        Š.‰.r| d	z  } ||d	z
  |z  dz  z   Š6n‰6| |z  z  Š6t'          |¦  «        D ]}" ||"|"|z  |#z   ¦  «         Œ |‰(¦  «         Œ…Œ¤d
S )z©Works out where they go. default vertical.

        Sets an attribute _barPositions which is a list of
        lists of (x, y, width, height) matching the data.
        rY   r   rZ   r]   r\   r[   c              3   ó`   •K  — | ](}t          ‰                     |d d¦  «        ¦  «        V — Œ)dS )r9   FN)r  r©   )r¢   Ú_rN   s     €r?   r¬   z,BarChart.calcBarPositions.<locals>.<genexpr>o  s;   øè è € Ð[Ð[À1�˜TŸ^š^¨A¨h°uÑ=Ô=Ñ>Ô>Ð[Ð[Ð[Ð[Ð[Ð[rA   r‚   r.   Nr½   ré   rÑ   r�   rw   rç   r¹   ç      ð?ræ   rŒ   rè   r;   g      @c                 ó  •— ‰dk    r‰ ‰| ¦  «        z  ‰z   ‰z   }n ‰| ¦  «        \  }}|‰z   }‰|          }|€d }‰}n¬‰dvr~‰s||dk    r; ‰‰	|         ¦  «        }‰r|‰k     r	n|‰k    r‰}‰	|xx         |z  cc<   ‰	|         }n= ‰‰
|         ¦  «        }‰r|‰k    r	n|‰k     r‰}‰
|xx         |z  cc<   ‰
|         }n‰} ‰|¦  «        |z
  }d|cxk     rdk    rn n
d}|dk     rd}‰                      ‰r|||‰fp||‰|f¦  «         d S )Nré   r½   rÁ   ç:Œ0âŽyE¾ç:Œ0âŽyE>)r°   )ÚcolNoÚaccxrm   rw   r  Údatumrp   rn   Ú_cscaleÚaccumNegÚaccumPosÚbarRowÚbaseLineÚcScaleÚflipXYÚ
groupWidthr9   rÝ   Úrowrs   rJ   ÚvARDÚvScalero   ÚxVals           €€€€€€€€€€€€€€€€€r?   Ú_addBarz*BarChart.calcBarPositions.<locals>._addBarÐ  s—  ø€ à˜AŠ~ˆ~Ø˜w˜w u™~œ~Ñ-°Ñ4°sÑ:��à˜ ™œ‘��AØ˜‘H�à˜”JˆEØˆ}Ø�Ø��àÐ :Ð:Ð:À6Ð:Ø˜e’|�|Ø"˜F 8¨D¤>Ñ2Ô2˜Ø*.ÐM˜A˜hšJ˜J˜J°A°h²J°JÀXÀØ  ˜˜œ¨%Ñ/˜˜™Ø (¨¤˜˜à"˜F 8¨D¤>Ñ2Ô2˜Ø*.ÐM˜A˜hšJ˜J˜J°A°h²J°JÀXÀØ  ˜˜œ¨%Ñ/˜˜™Ø (¨¤˜˜à �AØ˜ ™œ¨Ñ*�Ø˜Ð%Ð%Ò%Ð% Ò%Ð%Ð%Ð%Ð%Ø!�FØ˜U’{�{¨U FØ�MŠM˜&Ð7 a¨¨&°Ð%7ÐM¸A¸aÀÀfÐ;MÑNÔNÐNÐNÐNrA   r9   Fr€   r   )+r‘   rn   rm   rP   rÛ   rQ   rh   Ú_seriesCountrÂ   rÌ   rÍ   Ú
_rowLengthrL   rM   rK   ri   rs   rN   Úsumr®   r´   Ú_groupWidthrJ   r  Ústrr  Ú_normFactorÚ_scaleÚ_normFactorBÚ_normFactorGÚ_normFactorSrO   ÚreverseDirectionrÕ   rÖ   Ú	_baseLineÚlabelsÚlabelPosFracÚ_barPositionsr°   rV   rÃ   r©   )7r>   r  rQ   ÚseriesCountÚ	rowLengthÚwGrM   rK   ÚclbsÚclboÚ	lineCountÚseriesMLineCountr£   ÚbarsPerGroupÚwBÚwSÚbGapBÚbGapSÚaW0ÚaWÚfBÚfGÚfSrß   ÚvmÚvMÚoffsÚbGapÚlbpfÚaBPrV   r)  ÚlineSeenrl   r  ÚsbÚsgr  r  r  r   rN   r!  r"  r#  r$  r9   rÝ   r%  rs   rJ   r&  r'  ro   r(  s7                                        @@@@@@@@@@@@@@@@@@r?   rù   zBarChart.calcBarPositionsS  sŽ  øøøøøøøøøøøøøøøøøø€ ð ”ˆØð 	Ø”&ˆCˆCà”&ˆCØÔˆØ”ˆàŒyˆå*-¨d©)¬)Ð3ˆ�dÔ'Ý&)­$­sµ3°t©}¬}Ñ*=Ô*=Ñ&>Ô&>Ð>ˆŒ˜)ØÔˆØ”_ˆ
Ø”=ˆÝ�tÐ2°1Ñ5Ô5ˆÝ�tÐ3°FÑ;Ô;ˆØ�Š<ˆ< Ð 1¨6Ð <°W˜Ø�WŠ}ˆØ”ˆØŒyˆÝÐ[Ð[Ð[Ð[ÍÈkÑHZÔHZÐ[Ñ[Ô[Ñ\Ô\ˆ	Ø&¨Ñ2ÐØ�'Š>ˆ>ØÔ"ˆBÝ˜r™7œ7 YÑ.ˆLØ˜hÑ&ˆBØ˜q‘. *Ñ,ˆBØ˜AŠ~ˆ~Ø �Ø"��à !Ð!�˜Ø# IÑ-¨q¨cÑ1ˆHØ   ”{ˆHˆHØÐ0Ð0Ð0ØˆLØ! (Ñ*ˆBØ" 1Ñ$ jÑ0ˆBØˆEØˆEˆEà+ˆLØ  ! ‘}ˆHØ   ”{ˆHØˆBØ!"Ð"ˆBÐ"�˜à(*¨2©¨b©Ð0ˆÔ˜:ØÔ&ˆàð 	Ý˜k­#Ñ.Ô.ð gØ��à ! S¨KÐ%7Ñ"8Ñ8¸¸CÀ;Ð<NÑ9OÑOÐPQÐSVÐZeÐSeÑPfÑf��àˆKå�F�F˜1‘I”I˜a”LÑ!Ô!ˆØ�4‰Zˆà˜Š>ˆ>Ø.0°©mÐ;ˆDÔÐ;˜rÐ; B¨¨Ø˜!Š^ˆ^ØÐˆBÐ��bØ”iˆGˆGØ˜!Š^ˆ^ØˆBØ˜"‘u˜r "™u‘oÐ%ˆB��Ø˜!Š^ˆ^ØˆBØ˜"‘u˜r "™u‘oÐ%ˆB��Ø˜!Š^ˆ^ØˆMˆB�Ø"$Ð+�"�R‘%˜‘(˜B‘�¨!ˆBˆBØ˜!Š^ˆ^ØˆBØ˜"‘u˜r "™u‘oÐ%ˆB��Ø˜!Š^ˆ^ØˆMˆB�Ø�R‘%˜‘(˜B‘ˆBˆBØ˜!Š^ˆ^ØˆKˆB�Ø�R‘%˜‘(˜B‘ˆBØˆÔØˆÔØˆÔð Œ^ˆØ”ˆØÔ"ˆØ”˜rœ|ˆBˆØ�ˆ=ˆ=Š=ˆ=�bŠ=ˆ=ˆ=ˆ=ˆ=Ø�v˜a‘y”yˆHˆHØ�ŠVˆVØ�v˜b‘z”zˆHˆHØ�!ŠVˆVØ�v˜b‘z”zˆHØ!ˆŒà˜‘ˆØ�2‰v�b‰yˆØ�R‰x˜˜b™Ñ ˆàð 	*Øð 7Ø˜T #™X™ sÑ*�Ø˜‘��à˜R ™U™
 2 b¡5Ñ(¨¨c©Ñ1°3Ñ6�Ø%)ˆBŒIÔ"àˆÔØÔ Ô'ˆØÔ0Ðð	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð@ �'Š>ˆ>ØˆHÝ'¨™oœoð ð ‘
��sØ�Ø3CÐN�| aÑ'¨%Ñ/Ð/È�Ø˜d 4™iÑ'�ØŸš¨¨x¸Ñ?Ô?�Øð *Ø ‘M�HØÐ!1°!Ñ!3°TÑ 9¸#Ñ =Ñ=�D�Dà˜H T™MÑ)�DÝ" 9Ñ-Ô-ð )ð )�EØ�G˜E %Ñ(Ô(Ð(Ð(Ø��F‘”��ðð ð ˆHÝ" 4Ô#4Ñ5Ô5ð  ð  ‘��2Ý&)¨"¡g¤g¨q¢j j˜
˜
°i�Øð  ð  �EØ4DÐL˜<¨!Ñ+¨bÑ0Ð0È"�DØ $ t¡)Ñ+�DØ�FØ˜uœ+�CØ!Ÿ^š^¨E°8¸UÑCÔC�FØð .Ø  A™˜Ø# \°!¡^°TÑ$9¸#Ñ$=Ñ=˜˜à ¨¡Ñ-˜Ý!& yÑ!1Ô!1ð ?ð ?˜Ø˜  e¨LÑ&8¸2Ñ&=Ñ>Ô>Ð>Ð>Ø�C˜‘K”K�K�Kð ð ð  rA   c                 ó°  — | j         }t          |t          t          f¦  «        r,||         }t          |t          t          f¦  «        r||         }|€d}n�|dk    r| j        |         |         }ngt          |¦  «        r|| j        |         |         z  }nAt          |d¦  «        r || j        |         |         ¦  «        }nd|z  }t          |¦  «        ‚|S )zreturn formatted label textNÚvaluesÚ__call__z6Unknown formatter type %s, expected string or function)	rS   r  rÌ   r±   rU   r   rQ   rj   Ú	Exception)r>   rl   r  ÚlabelFmtÚ	labelTextÚmsgs         r?   Ú_getLabelTextzBarChart._getLabelText  så   € àÔ&ˆÝ�h¥¥U˜|Ñ,Ô,ð 	+Ø ”ˆHÝ˜(¥D­ <Ñ0Ô0ð +Ø# Eœ?�ØÐØˆIˆIØ˜Ò!Ð!ØÔ*¨5Ô1°%Ô8ˆIˆIÝ�8‰_Œ_ð 	!Ø  4¤9¨UÔ#3°EÔ#:Ñ:ˆIˆIÝ�X˜jÑ)Ô)ð 	!Ø ˜ ¤¨5Ô!1°%Ô!8Ñ9Ô9ˆIˆIàJÈXÑUˆCÝ˜C‘.”.Ð ØÐrA   c                 ó@  — |j         }t          |dd¦  «        }|dk    }|r| }|x}	}
|rd}
|d|z  z   }|dk    rdpd|z  }|dk    r	||dz  z   }nD|d	k    r|
dk    r	||
z   |z   }n/||z
  }|	 }	n&|d
k    r|
dk    r	||
z   |z   }n||z
  }|	 }	n||
z   |z   }|	|_        |||	fS )zCompute x, y for a labelÚ	boxTargetÚnormalÚantir   r;   r.   rø   ÚmidÚhird   )r•   ri   Ú_pmv)r>   Úlabelrm   rn   ro   rp   r•   Úbtr^  ÚpmÚvaluer  rÑ   s                r?   Ú_labelXYzBarChart._labelXY&  s  € à”ˆÝ�U˜; xÑ0Ô0ˆØ�6ŠzˆØÐ˜%˜�ØÐˆˆUØÐ˜�Ø��E‘	‰MˆØ˜’�˜qÐ& B¨Ñ-ˆØˆuŠ9ˆ9Ø�&˜‘*‘ˆAˆAØ�ŠXˆXØ�aŠxˆxØ˜‘I Ñ%��à˜‘I�Ø�S��Ø�ŠXˆXØ�aŠxˆxØ˜‘I Ñ%��à˜‘I�Ø�S��à�E‘	˜EÑ!ˆAØˆŒ
Ø��2ˆvˆrA   c                 óŽ   — |                       ||¦  «        }|r,|                      || j        ||f         |||||||¦	  «	         d S d S r«   )rZ  Ú	_addLabelrR   )	r>   rw   rl   r  rm   rn   ro   rp   Útexts	            r?   Ú_addBarLabelzBarChart._addBarLabelC  sc   € Ø×!Ò! %¨Ñ.Ô.ˆØð 	gØ�NŠN˜4 ¤°¸°Ô!?ÀÀEÈ5ÐRSÐUVÐX]Ð_eÑfÔfÐfÐfÐfð	gð 	grA   Fc
                 óÖ   — |	€| j         }	|	r[|	j        rVt          j        |	¦  «        }	| j        j        dk    rdpd}
|€|
}|€|
}|                      |	j        |	||||||||¬¦
  «
        S d S d S )Nr   r  r  )ÚcalcOnly)rW   ri  ÚcopyrO   rÖ   rh  )r>   rw   rl   r  rm   rn   ro   rp   rl  ÚnarÇ   s              r?   Ú_addNABarLabelzBarChart._addNABarLabelH  s™   € Øˆ:˜DœL�rØð 	h�"”'ð 	hÝ”˜2‘”ˆBØ”Ô(¨!Ò+Ð5°Ð=¸ˆAØˆ} a˜eØˆ~¨˜vØ—>’> "¤'¨2¨q°%¸ÀÀ1ÀeÈVÐ^f�>ÑgÔgÐgð	hð 	hð 	hð 	hrA   c                 ó   — |j         �rÃt          ||j        |j        ¦  «        }| j        }|r|                      ||||	|¦  «        \  }}}n|                      |||||	¦  «        \  }}}t          |dd ¦  «        }|�"|                     | |¦  «        }||}}|r|}n|}n|r|}||	dz  z   }n
||dz  z   }|}t          |dd ¦  «        }|�|                     | |¦  «        }|r|}n|}|dk     r|rd|j        z  }d}nd|j	        z  }d}ndx}}|
r
||z   ||z   fS | 
                    ||z   ||z   ¦  «         |                     |¦  «         |j        |j        }}|r+|r)|                     dt          ||||||¬¦  «        ¦  «         |                     |¦  «         t          | dd ¦  «        }|r$| |||||||	||||f|_         ||¦  «         |`d S d S d S )NÚfixedEndrf   Ú
fixedStartr   éþÿÿÿ)r1   r3   rT   )Úvisibler   ÚfontNameÚfontSizer‘   rf  ri   Ú	_getValueÚdxÚdyÚ	setOriginÚsetTextÚlineStrokeColorÚlineStrokeWidthÚinsertr   rk   Ú_callOutInfo)r>   ri  rb  rw   rl   r  rm   rn   ro   rp   rl  Ú
labelWidthr#  Úy0Úx0rd  rq  rÇ   Úx00Úy00rr  rx  ry  ÚsCÚsWÚalxs                             r?   rh  zBarChart._addLabelQ  sk  € ØŒ=ñ 1	'Ý$ T¨5¬>¸5¼>ÑJÔJˆJØ”\ˆFØð CØ!Ÿ]š]¨5°°1°V¸EÑBÔB‘
��B˜˜à!Ÿ]š]¨5°°1°U¸6ÑBÔB‘
��B˜Ý˜u Z°Ñ6Ô6ˆHØÐ#Ø×&Ò& t¨BÑ/Ô/�Ø˜r�S�Øð Ø�B�Bà�B�Bàð Ø�CØ˜F 3™J™,�C�Cà˜E #™I™+�CØ�CÝ   |°TÑ:Ô:ˆJØÐ%Ø×(Ò(¨¨bÑ1Ô1�Øð Ø�C�Cà�Cà�!ŠtˆtØð Ø˜EœH™�BØ�B�Bà˜EœH™�BØ�B�Bà���RØÐ,  2¡ r¨"¡u Ð,Ø�OŠO˜B˜r™E 2 b¡5Ñ)Ô)Ð)Ø�MŠM˜$ÑÔÐØÔ*¨EÔ,A�ˆBØÐY�bÐY˜!Ÿ(š( 1¥T¨#¨c°"°RÀRÐUWÐ%XÑ%XÔ%XÑYÔYÐYØ�EŠE�%‰LŒLˆLÝ˜$Ð0°Ñ6Ô6ˆCØð 'Ø&*¨1¨U°5¸¸1¸UÀ6È#ÈcÐRTÐUWÐ%X�Ô"Ø��E‘
”
�
ØÐ&Ð&Ð&ðc1	'ð 1	'ð\'ð 'rA   c                 óÂ   — t          ||||¦  «        }|j        |_        |j        |_        |j        |_        |j        r|j        |_        |                     |¦  «         d S r«   )r   r3   r2   r1   r4   rk   )	r>   rw   rm   rn   ro   rp   rl   rs   Úrs	            r?   Ú_makeBarzBarChart._makeBar…  s[   € Ý��A�u˜fÑ%Ô%ˆØÔ)ˆŒØ”oˆŒØÔ)ˆŒØÔ ð 	6Ø %Ô 5ˆAÔØ	�Šˆa‰ŒˆˆˆrA   c                 ó6	  — | j         }t          | dd ¦  «        }| j        }| j        }| j        }i }|rSg }	t          | j        ¦  «        dz
  }
t          |¦  «        D ]*\  }}t          |¦  «        D ]\  }\  }}}}d ||fvrd||<   ŒŒ+g j        }g j        }t          |¦  «        D �]·\  }}t          |¦  «        }||z  }||         }| 	                    |dd¦  «        }g j        }t          |¦  «        D �]\  }\  }}}}||f|v r
|||f         p|}d ||fv rà|r||v r|  
                    |||||||¦  «         n¯|r­||	vr©|  
                    |||||||d|¦	  «	        }|ru||
         |         \  }}}}|  
                    ||
|||||d|¦	  «	        }|d         |d         z   dz  }|d         |d         z   dz  }|  
                    ||
|||dd|¬	¦  «         |	                     |¦  «         |r |d ¦  «         �Œd }t          |d
¦  «        rt          j        |j        ¦  «        }n!t          | j         d
¦  «        r| j         j        }t          |dd ¦  «        }|rg|r3|dk     rt          |j         |¦  «        }nHt#          |j        |¦  «        }n2|dk     rt          |j         |¦  «        }nt#          |j        |¦  «        }|ro|s||z   }||dz  z   }n||z   }||dz  z   } ||¦  «          ||¦  «         |r9t%          t'          ||¦  «        |||j        p|j        ¦  «        } | r || ¦  «         nÅ|r2||_        ||_        ||_        ||_        |                     |¦  «         n‘t7          |¦  «        dk    r~t7          |¦  «        dk    rk|j        €|j        �]|                      |||||||¦  «         |r@ ||j        d         |                      ||¦  «        | j        |         |         ||¬¦  «         |                      |||||||¦  «         �ŒtA          |j!        ¦  «        D ]6}|r2 |tE          ||j        p|j        |j#        |j$        ¬¦  «        ¦  «         Œ7�Œ¹|j!        D ]}!|                     |!¦  «         Œ|j!        D ]} |                     | ¦  «         Œd S )Nr^   r.   r9   FTr   rf   g-Cëâ6?)rn  r5   r8   r;   gH¯¼šò×z>rø   )rb  re  rl   r  rg   )%rN   ri   r8  r‘   r`   rh   rQ   rÃ   r°   r©   ro  rj   rm  Údeepcopyr5   Úminr8   rÂ   r   r   r1   r2   rm   rn   ro   rp   rk   ÚabsrŠ  r	  rZ  rj  r   Ú__self__r   r3   r4   )"r>   rw   ÚlgrN   ÚbrÚBPr#  ÚcatNALÚcatNNAÚCBLÚrowNoLrl   r%  r  rm   rn   ro   rp   r¸   ÚlineSymsÚ
styleCountrr   ÚrowStyler9   ÚlinePtsrs   Úr0Úr1r5   r8   ÚyLÚxLÚsymÚpls"                                     r?   Ú	_makeBarszBarChart._makeBarsŽ  sÄ  € ØŒyˆÝ�T˜+ dÑ+Ô+ˆØÔˆØ”ˆàÔ%ˆØˆØð 	*ØˆCÝ˜œ‘^”^ aÑ'ˆFå'¨™mœmð *ð *‘
��sÝ4=¸c±N´Nð *ð *Ñ0�EÑ0˜A˜q %¨Ø E¨& >Ð1Ð1Ø()˜˜u™øð*ð ”	ˆØ”9ˆÝ# B™-œ-ð K	Iñ K	I‰JˆE�3Ý˜T™œˆJØ˜zÑ)ˆHØ˜H”~ˆHØ—^’^ E¨8°UÑ;Ô;ˆFØ”iˆGÝ-6°s©^¬^ð >Cñ >CÑ)�Ñ)˜˜!˜E &Ø! %Ð(¨DÐ0ÐK°T¸8ÀEÐ:JÔ5KÐWÈx�Ø˜E &˜>Ð)Ð)Ø!ð 
* U¨f _ _Ø×+Ò+¨B¨u°U¸1¸Q¸uÀVÑLÔLÐLÐLØð * E°Ð$4Ð$4Ø!×0Ò0°°E¸%ÀÀ!ÀEÈ&ÐQUÐV\Ñ]Ô]˜Øð ]Ø24°V´*¸UÔ2CÑ/˜A˜q %¨Ø!%×!4Ò!4°R¸¸uÀQÀqÈÈvÐVZÐ[aÑ!bÔ!b˜BØ!# A¤ r¨!¤u¡¨cÑ 1˜AØ!# A¤ r¨!¤u¡¨cÑ 1˜AØ ×/Ò/°°6¸%ÀÀ!ÀFÈ6ÐU[Ð/Ñ\Ô\Ð\ØŸ
š
 5Ñ)Ô)Ð)ØÐ,˜w˜w t™}œ}˜}Ùð �Ý˜5 (Ñ+Ô+ð .Ý!œ]¨5¬<Ñ8Ô8�F�FÝ˜TœY¨Ñ1Ô1ð .Ø!œYÔ-�Få   z°$Ñ7Ô7�Øð 
@Øð 	@Ø  š7˜7Ý$'¨¬¨¸Ñ$>Ô$>˜E˜Eå$'¨¬°uÑ$=Ô$=˜E˜Eà! !š8˜8Ý%(¨%¬.¨¸Ñ%@Ô%@˜F˜Få%(¨¬¸Ñ%?Ô%?˜Fàð JØ!ð ,Ø ™Z˜Ø  s¡™]˜˜à ™Y˜Ø ¨¡™^˜Ø�G˜B‘K”K�KØ�G˜B‘K”K�KØð .Ý,­Z¸¸uÑ-EÔ-EÀbÈÈEÔL]ÐLpÐafÔapÑqÔq˜ØÐ-  ¨¡¤ øàð 	JØ �F”HØ �F”HØ#(�F”LØ$*�F”MØ—E’E˜&‘M”M�M�Må˜‘Z”Z ’_�_­¨V©¬°dÒ):Ð):ÀÄÐ@[Ð_dÔ_pÐ_|Ø—M’M ! A a¨¨f°U¸5ÑAÔAÐAØð  J˜2˜2˜aœj¨œn°4×3EÒ3EÀeÈEÑ3RÔ3RÐY]ÔYbÐchÔYiÐjoÔYpÐw|ð  DIð  Jñ  Jô  Jð  Jà×!Ò! " U¨5°°1°U¸6ÑBÔBÐBÑBå*¨7Ô+;Ñ<Ô<ð Ið I�Øð IØ�E�( 7Ø(0Ô(<Ð(RÀÔ@RØ(0Ô(<Ø.6Ô.FðHñ Hô Hñ Iô Ið IøñIð ”.ð 	ð 	ˆBØ�EŠE�"‰IŒIˆIˆIØÔ$ð 	ð 	ˆCØ�EŠE�#‰JŒJˆJˆJð	ð 	rA   c	                 ó¦  — |j         �rHt          ||j        |j        ¦  «        }	| j        }
|
r|                      |||||¦  «        \  }}}n|                      |||||¦  «        \  }}}t          |dd ¦  «        }|�"|                     | |¦  «        }||}}|
r|}n|}n|
r|}||dz  z   }n
||dz  z   }|}t          |dd ¦  «        }|�|                     | |¦  «        }|
r|}n|}|dk     r|
rd|j        z  }d}nd|j	        z  }d}ndx}}| 
                    ||z   ||z   ¦  «         |                     |¦  «         ||                     ¦   «         fS d S )Nrq  rf   rr  r   rs  )rt  r   ru  rv  r‘   rf  ri   rw  rx  ry  rz  r{  Ú	getBounds)r>   ri  rb  rl   r  rm   rn   ro   rp   r€  r#  r�  r‚  rd  rq  rÇ   rƒ  r„  rr  rx  ry  s                        r?   Ú_computeLabelPositionzBarChart._computeLabelPositionó  s¶  € ØŒ=ñ )	(Ý$ T¨5¬>¸5¼>ÑJÔJˆJØ”\ˆFØð CØ!Ÿ]š]¨5°°1°V¸EÑBÔB‘
��B˜˜à!Ÿ]š]¨5°°1°U¸6ÑBÔB‘
��B˜Ý˜u Z°Ñ6Ô6ˆHØÐ#Ø×&Ò& t¨BÑ/Ô/�Ø˜r�S�Øð Ø�B�Bà�B�Bàð Ø�CØ˜F 3™J™,�C�Cà˜E #™I™+�CØ�CÝ   |°TÑ:Ô:ˆJØÐ%Ø×(Ò(¨¨bÑ1Ô1�Øð Ø�C�Cà�Cà�!ŠtˆtØð Ø˜EœH™�BØ�B�Bà˜EœH™�BØ�B�Bà���RØ�OŠO˜B˜r™E 2 b¡5Ñ)Ô)Ð)Ø�MŠM˜$ÑÔÐØ�e—o’oÑ'Ô'Ð'Ð'ðS)	(ð )	(rA   c                 ó®  — | j         | j        }}|r||_        |r||_        | j        r@|                     |                      | j        | j        ¦  «        | j        | j	        ¦  «         n?|                     | j        |                      | j        | j	        ¦  «        | j        ¦  «         | 
                    | j        ¦  «         |                      ¦   «          dS )zRInformation function, can be called by charts which want to with space around barsN)rP   rO   ÚjoinAxisr‘   rÙ   rá   rm   ro   rn   rp   rÚ   rÎ   rù   ©r>   r  rß   s      r?   Ú_computeBarPositionszBarChart._computeBarPositions  s»   € àÔ" D¤NˆBˆØÐ˜RˆrŒ{ØÐ˜RˆrŒ{ØŒ<ð 	TØ�NŠN˜4Ÿ?š?¨4¬6°$´*Ñ=Ô=¸t¼vÀtÄ{ÑSÔSÐSÐSà�NŠN˜4œ6 4§?¢?°4´6¸$¼+Ñ#FÔ#FÈÌ
ÑSÔSÐSØ
�Š�TÔ(Ñ)Ô)Ð)Ø×ÒÑÔÐÐÐrA   c                 ór  — | j         }|                      ¦   «          t          | j        ¦  «        }| j        }g }|j        }|r‡| j        }|| j        z   }	| j        | j	        z   }
|D ]c}|D ]^\  }}}}||z   }||z   } |t          ||¦  «        t          ||¦  «        t          ||¦  «        |z
  |	t          ||¦  «        z
  f¦  «         Œ_Œdn†| j        }|| j	        z   }	| j        | j        z   }
|D ]c}|D ]^\  }}}}||z   }||z   } |t          ||¦  «        t          ||¦  «        t          ||¦  «        |z
  |	t          ||¦  «        z
  f¦  «         Œ_Œd|                     ¦   «          |d         g}|D ]µ}|d         }|d         |d         k     r„|d         |d         k     rrt          |d         |d         ¦  «        t          |d         |d         ¦  «        t          |d         |d         ¦  «        t          |d         |d         ¦  «        f|d<   Œ |                     |¦  «         Œ¶|}d}d}t          |¦  «        }t          |¦  «        D ]ì\  }}|d         }||z   }||
k    r nÓ|}dx}}||k     rg||         d         |k    rUt          ||         d         |¦  «        }t          ||         d         |¦  «        }|dz  }||k     r||         d         |k    °U||k    r-||k    r&|}|r||||z   ||z   dfp||||z   ||z   df}||k    r n.ŒÀ||k    r&|}|r|	|z
  ||	||z   dfp||	|z
  ||z   |	df}||k    r nŒí||fS )	ak  helper for madmen who want to put stuff inside their barcharts
        basically after _computebarPositions we slide a line of length size
        down the bar profile on either side of the bars to find the
        maximum space. If the space at any point is >= required then we're
        done. Otherwise we return the largest space location and amount.
        r   rø   r.   r�   ræ   i  €Niÿÿÿ)r‘   r¨  rh   rQ   r8  r°   rm   ro   rn   rp   r�  rÂ   r  rÃ   )r>   ÚsizeÚrequiredr#  ÚlenDatar’  ÚCÚaCrd   r`  ÚendÚbprm   rn   ÚwÚhrÇ   r  r¶   r�   r‰  ÚmaxSÚmaxPÚnCrz   ÚciÚv0Úv1rÊ   ÚaloÚahis                                  r?   Ú_computeMaxSpacezBarChart._computeMaxSpace+  sâ  € ð ”ˆØ×!Ò!Ñ#Ô#Ð#Ý�d”i‘.”.ˆØÔˆØˆØŒXˆØð 	KØ”ˆBØ�d”j‘ˆBØ”&˜œÑ$ˆCØð Jð J�Ø"$ð Jð J‘J�A�q˜!˜QØ˜!™�AØ˜!™�AØ�B�˜A˜a™œ¥ Q q¡¤­3¨q°©8¬8°b©=¸"½sÀ1ÀQ¹x¼x¹-ÐHÑIÔIÐIÐIðJðJð ”ˆBØ�d”kÑ!ˆBØ”&˜œÑ#ˆCØð Kð K�Ø"$ð Kð K‘J�A�q˜!˜QØ˜!™�AØ˜!™�AØ�B�˜A˜a™œ¥# a¨¡(¤(­C°°!©H¬H°r©M¸2ÅÀAÀaÁÄ¹=ÐIÑJÔJÐJÐJðKð 	
�Š‰ŒˆØˆqŒTˆFˆØð 	ð 	ˆAØ�"”ˆAØ�Œt�A�a”DŠyˆy˜Q˜qœT ! A¤$šY˜YÝ˜Q˜qœT ! A¤$™œ­¨A¨a¬D°°1´©¬µs¸1¸Q¼4ÀÀ!Ä±~´~ÅcÈ!ÈAÌ$ÈqÐQRÌtÁnÄnÐU��"‘�à—’˜‘”��ØˆØˆØˆÝ�‰VŒVˆÝ˜a‘L”Lð 	+ð 	+‰DˆAˆbØ�A”ˆBØ�D‘ˆBØ�#Švˆv�u�uØˆAØ"Ð"ˆC�#Ø�B’$�$˜1˜Qœ4 œ7 Bš;˜;Ý˜!˜Aœ$˜qœ' #Ñ&Ô&�Ý˜!˜Aœ$˜qœ' #Ñ&Ô&�Ø�Q‘�ð �B’$�$˜1˜Qœ4 œ7 Bš;˜;ð �3ŠwˆwØ�t’8�8Ø�DØ!Ð> r¨"¨R°©V°B°t±G¸AÐ&>ÐZÀ2ÀbÈÈDÉÐQSÐTWÑQWÐXYÐBZ�DØ˜xÒ'Ð'¨¨øØ�T’�Ø�ØÐ: 2 c¡6¨"¨R°°4±¸Ð":ÐV¸rÀ"ÀSÁ&ÈÈDÉÐQSÐTUÐ>V�Ø˜8Ò#Ð# U UøØ�TˆzÐrA   c                 ó  — | j         | j        }}|r||_        |r||_        | j        r@|                     |                      | j        | j        ¦  «        | j        | j	        ¦  «         n?|                     | j        |                      | j        | j	        ¦  «        | j        ¦  «         | 
                    | j        ¦  «         |                      ¦   «          | j        }g j        }| j        }t!          |¦  «        D �]
\  }}g j        }t!          |¦  «        D ]Ý\  }	\  }
}}}d||fv rw| j        }|rb|j        r[t'          j        |¦  «        }| j        j        dk    rdpd}|€|}|€|} ||                      |j        |||	|
|||¦  «        ¦  «         Œ{ |d¦  «         Œ‡|                      ||	¦  «        }|r3 ||                      || j        ||	f         ||	|
|||¦  «        ¦  «         ŒÒ |d¦  «         ŒÞ ||j        ¦  «         �Œ|j        S )zLInformation function, can be called by charts which want to mess with labelsNr   r  r  )rP   rO   r¦  r‘   rÙ   rá   rm   ro   rn   rp   rÚ   rÎ   rù   rN   r°   r8  rÃ   rW   ri  rm  rÖ   r¤  rZ  rR   r�  )r>   r  rß   rN   r¶   r’  rl   r%  r­  r  rm   rn   ro   rp   rn  rÇ   ri  s                    r?   Ú_computeSimpleBarLabelPositionsz(BarChart._computeSimpleBarLabelPositionsk  s7  € àÔ" D¤NˆBˆØÐ˜RˆrŒ{ØÐ˜RˆrŒ{ØŒ<ð 	TØ�NŠN˜4Ÿ?š?¨4¬6°$´*Ñ=Ô=¸t¼vÀtÄ{ÑSÔSÐSÐSà�NŠN˜4œ6 4§?¢?°4´6¸$¼+Ñ#FÔ#FÈÌ
ÑSÔSÐSØ
�Š�TÔ(Ñ)Ô)Ð)Ø×ÒÑÔÐàŒyˆØŒIˆØÔˆÝ# B™-œ-ð 	ñ 	‰JˆE�3Ø”	ˆAÝ09¸#±´ð  ð  Ñ,�Ñ,˜˜1˜e VØ˜E &˜>Ð)Ð)Øœ�BØð  ˜bœgð  Ý!œY r™]œ]˜Ø œNÔ4°aÒ7ÐA¸EÐIÀT˜Ø ˜=°!¨%Ø!˜>°A¨6Ø˜˜$×4Ò4°R´W¸bÀ%ÈÐPQÐSTÐV[Ð]cÑdÔdÑeÔeÐeÐeà˜˜$™œ˜˜à×-Ò-¨e°EÑ:Ô:�DØð  Ø˜˜$×4Ò4°T¸4¼>È5ÐRWÈ.Ô;YÐ[`ÐbgÐijÐlmÐotÐv|Ñ}Ô}Ñ~Ô~Ð~Ð~à˜˜$™œ˜˜ØˆAˆaŒj‰MŒMˆM‰MØŒzÐrA   c                 ó”   — t          ¦   «         }t          ¦   «         }|                      ||¦  «         |                     |¦  «         |S r«   )r   r¡  rk   )r>   rw   r�  s      r?   rý   zBarChart.makeBars�  s<   € Ý‰GŒGˆÝ‰WŒWˆØ�Š�q˜ÑÔÐØ	�Šˆb‰	Œ	ˆ	ØˆrA   c                 ó
  — | j         j        }| j        }t          |¦  «        }t	          t          t          t          |¦  «        ¦  «        ¦  «        }|dk    r|dz
  | j        z  || j        z  z   }n| j        }|| j	        |z   z  S )z:for dynamically computing the desired category axis lengthr€   r.   )
rP   rs   rQ   rh   rÂ   rÌ   rÍ   rM   rK   rL   )r>   rs   rQ   r¦   Úmr$  s         r?   Ú_desiredCategoryAxisLengthz#BarChart._desiredCategoryAxisLength—  s~   € àÔ!Ô'ˆØŒyˆÝ�‰IŒIˆÝ••S�˜T‘]”]Ñ#Ô#Ñ$Ô$ˆØ�*ÒÐØ˜A™#˜tœÑ.¨q°´©Ñ>ˆJˆJàœˆJØ�$Ô# JÑ.Ñ/Ð/rA   c                 óv  — | j         | j        }}|r||_        |r||_        | j        r@|                     |                      | j        | j        ¦  «        | j        | j	        ¦  «         n?|                     | j        |                      | j        | j	        ¦  «        | j        ¦  «         |  
                    ¦   «         S r«   )rP   rO   r¦  r‘   rÙ   rá   rm   ro   rn   rp   r  r§  s      r?   ÚdrawzBarChart.draw£  s    € ØÔ" D¤NˆBˆØÐ˜RˆrŒ{ØÐ˜RˆrŒ{ØŒ<ð 	TØ�NŠN˜4Ÿ?š?¨4¬6°$´*Ñ=Ô=¸t¼vÀtÄ{ÑSÔSÐSÐSà�NŠN˜4œ6 4§?¢?°4´6¸$¼+Ñ#FÔ#FÈÌ
ÑSÔSÐSØ×ÒÑ!Ô!Ð!rA   rF   r«   )FN)F))rB   rC   rD   Ú__doc__r   r&   r   r   r
   r   r   r%   r   r   r	   r   rE   rx   r|   r@   rž   r»   rÒ   r×   rá   r  rù   rZ  rf  rj  ro  rh  rŠ  r¡  r¤  r¨  r»  r½  rý   rÁ  rÃ  rF   rA   r?   rH   rH   4   s  € € € € € Ø.Ð.àˆwð 
ð 
ð 
˜H˜Hð 
Ø"�l 8 8¨Y°x°xÀÈ(Ð@SÑ7TÔ7TÐ,UÑ#VÔ#Vð  ^Sð  bcð  dñ  dô  dð  dð
à�< Ð/PÐQÑQÔQÐQð
ð $�| HÐ3RÐSÑSÔSÐSð
ð "�\ (Ð1QÐRÑRÔRÐRð	
ð
 ˆ|˜DÐ'GÐHÑHÔHÐHð
ð !�L Ð,GÐHÑHÔHÐHð
ð $�| DÐ/MÐNÑNÔNÐNð
ð ˆ|˜DÐ'XÐYÑYÔYÐYð
ð !�L Ð,OÐPÑPÔPÐPð
ð &˜ dð  2Nð  Oñ  Oô  Oð  Oð
ð '˜, tð  3Vð  efð  gñ  gô  gð  gð
ð %˜ TÐ0yÐzÑzÔzÐzð
ð (˜<¨	Ð8fÐuvÐwÑwÔwÐwð
ð �,Ð7Ð>\ÐklÐmÑmÔmÐmð
ð #�l 4Ð.lÐmÑmÔmÐmð
ð   ,˜|¨HÐ;zÐ{Ñ{Ô{Ð{ð!
ð" !- ¨U¨U°7¸6À&Ñ-IÔ-IÐP~Ð Ñ Ô Ð ð#
ð$ !�L Ð,xð  IJð  Kñ  Kô  Kð  Kð%
ð& '˜, ~ð =ð ñ ô ð ð'
ð8 '˜,Ð'?ÐFoÐ~ð  Añ  Aô  Að  Að9
ð: #�l : :¨j¨j¸ÀqÐPQÐUVÐ.WÑ.WÔ.WÐ`aÐijÐnoÐ#pÑ#pÔ#pð  rWñ  Xô  Xð  Xð;
€Hð@!Mð !Mð !MðF=ð =ð =ð =ð;$ð ;$ð ;$ðzð ð ðð ð ð4#ð #ð #ð8Bð Bð Bð	`ð 	`ð 	`ðFð Fð FðP} ð } ð } ð~ð ð ð(ð ð ð:gð gð gð
hð hð hð hð2'ð 2'ð 2'ð 2'ðhð ð ðcð cð cðJ*(ð *(ð *(ðX
 ð 
 ð 
 ð>ð >ð >ð@#ð #ð #ðJð ð ð
0ð 
0ð 
0ð"ð "ð "ð "ð "rA   rH   c                   ó   — e Zd ZdZdZdS )ÚVerticalBarChartz3Vertical bar chart with multiple side-by-side bars.r   N©rB   rC   rD   rÄ  r‘   rF   rA   r?   rÆ  rÆ  ­  s   € € € € € Ø9Ð9Ø€G€G€GrA   rÆ  c                   ó   — e Zd ZdZdZdS )ÚHorizontalBarChartz5Horizontal bar chart with multiple side-by-side bars.r.   NrÇ  rF   rA   r?   rÉ  rÉ  ±  s   € € € € € Ø;Ð;Ø€G€G€GrA   rÉ  c                   ó(   — e Zd Zdd„Zd„ Zd„ Zd„ ZdS )Ú
_FakeGroupNc                 óF   — g | _         t          j        |¦  «        | _        d S r«   )rË   Ú	functoolsÚ
cmp_to_keyÚ_key)r>   r)   s     r?   r@   z_FakeGroup.__init__¶  s   € ØˆŒ
ÝÔ(¨Ñ-Ô-ˆŒ	ˆ	ˆ	rA   c                 ó:   — | j                              |¦  «         d S r«   )rË   r°   )r>   Úwhats     r?   rk   z_FakeGroup.addº  s   € ØŒ
×Ò˜$ÑÔÐÐÐrA   c                 ó   — | j         S r«   )rË   r=   s    r?   re  z_FakeGroup.value½  s
   € ØŒzÐrA   c                 óF   — | j                              | j        ¬¦  «         d S )N)Úkey)rË   r  rÏ  r=   s    r?   r  z_FakeGroup.sortÀ  s    € ØŒ
�Š˜DœIˆÑ&Ô&Ð&Ð&Ð&rA   r«   )rB   rC   rD   r@   rk   re  r  rF   rA   r?   rË  rË  µ  sU   € € € € € ð.ð .ð .ð .ð ð  ð  ðð ð ð'ð 'ð 'ð 'ð 'rA   rË  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„ ZdS )r~   zdx/dzr,   zdy/dzzdepth of an individual serieszz gap around series)rI   Útheta_xÚtheta_yÚzDepthÚzSpacer;   Nc                 ó&  — t                                | ¦  «         | j        }| j        }|€| j        }| j        }|€| j        }| j        j        dk    r||z  |dz   |z  z   }n|d|z  z   }|| j	        z  }| j
        |z  | _        | j        |z  | _        d S )Nr�   r.   r�   )rH   rù   r*  rØ  rK   rÙ  rM   rP   rs   r/  rÖ  Ú_3d_dxr×  Ú_3d_dy)r>   r9  rØ  rÙ  Ú	_3d_depths        r?   rù   zBarChart3D.calcBarPositionsÏ  s¨   € Ý×!Ò! $Ñ'Ô'Ð'ØÔ'ˆØ”ˆØˆ> D¤M˜6Ø”ˆØˆ> D¤O˜6ØÔÔ" MÒ1Ð1Ø# FÑ*¨K¸©M¸6Ñ+AÑAˆIˆIà  6¡Ñ)ˆIØ�TÔ%Ñ%ˆ	Ø”l 9Ñ,ˆŒØ”l 9Ñ,ˆŒˆˆrA   c                 ó¢   — | j         }|€| j        }| j        }|€| j        }| j        j        dk    r| j        |||z   z  |z   z  }n
| j        |z  }|S )Nr�   )rØ  rK   rÙ  rM   rP   rs   r/  )r>   rl   rØ  rÙ  Úz0s        r?   Ú_calc_z0zBarChart3D._calc_z0Þ  sf   € Ø”ˆØˆ> D¤M˜6Ø”ˆØˆ> D¤O˜6ØÔÔ" MÒ1Ð1ØÔ! 5¨&°©-Ñ#8¸Ñ#?Ñ@ˆBˆBàÔ! &Ñ(ˆBØˆ	rA   c                 ó:  — | j         }|€| j        }| j        }	|	€| j        }	|                      |¦  «        }
|
|| j        z  z   }|dk     r||z  }| }||
| j        z  z  }||
| j        z  z  }| j        r||	z  }n||	z  }| 	                    d|
|||||||f	¦  «         d S )Nr   )
rØ  rK   rÙ  rM   rà  r/  rÖ  r×  r‘   rk   )r>   rw   rm   rn   ro   rp   rl   rs   rØ  rÙ  rß  Úz1s               r?   rŠ  zBarChart3D._makeBaré  sË   € Ø”ˆØˆ> D¤M˜6Ø”ˆØˆ> D¤O˜6Ø�]Š]˜5Ñ!Ô!ˆØ�&˜Ô)Ñ)Ñ)ˆØ�Š7ˆ7Ø�‰JˆAØ�FˆEØ	ˆR�”‰_ÑˆØ	ˆR�”‰_ÑˆØŒ<ð 	Ø�‰KˆAˆAà�‰KˆAØ	�Šˆq��B�q˜˜5 ¨¨eÐ4Ñ5Ô5Ð5Ð5Ð5rA   c                 óè   — |                       |¦  «        }| j        }	|	€| j        }	|}
||| j        z  z  }||| j        z  z  }| j        r||	z  }n||	z  }|                     d||
||||||f	¦  «         d S )Nr.   )rà  rÙ  rM   rÖ  r×  r‘   rk   )r>   rw   rl   r  rm   rn   ro   rp   rß  rÙ  râ  s              r?   rj  zBarChart3D._addBarLabelû  s“   € Ø�]Š]˜5Ñ!Ô!ˆØ”ˆØˆ> D¤O˜6ØˆØ	ˆR�”‰_ÑˆØ	ˆR�”‰_ÑˆØŒ<ð 	Ø�‰KˆAˆAà�‰KˆAØ	�Šˆq��B�q˜˜5 ¨¨eÐ4Ñ5Ô5Ð5Ð5Ð5rA   c                 óÄ  — ddl m} t          | j        ¬¦  «        }|                      ||¦  «         |                     ¦   «          t          ¦   «         }| j        }| j        }| 	                    ¦   «         }| j
        j        }|dk    r|                     ¦   «          n)|dk    r#d„ t          d„ |D ¦   «         ¦  «        D ¦   «         }|D ]X}|d         dk    rJ|dd …         \  }	}
}}}}}}|
|	z
  } |||||z   |||z   ||z  ||z  |j        d |j        |j        d	¬
¦  «         ŒY|D ]<}|dk    r4|dd …         \  }	}
}}}}}}t"                               | |||||||¦  «         Œ=|S )Nr   )Ú_draw_3d_barr(   r   r‚   c                 ó   — g | ]
}|d          ‘ŒS )r.   rF   )r¢   r  s     r?   r¤   z'BarChart3D.makeBars.<locals>.<listcomp>  s   € Ð\Ð\Ð\ ˜˜!œÐ\Ð\Ð\rA   c              3   óV   K  — | ]$}|d          |d         |d         |d         f|fV — Œ%dS )r.   r�   ræ   rç   NrF   )r¢   Úts     r?   r¬   z&BarChart3D.makeBars.<locals>.<genexpr>  s@   è è € Ð-ZÐ-ZÈA°°!´°Q°q´T¸!¸A¼$¸qÀ¼tÐ/DÀQÐ.GÐ-ZÐ-ZÐ-ZÐ-ZÐ-ZÐ-ZrA   r.   gÍÌÌÌÌÌÜ?)r2   ÚfillColorShadedr1   r3   Úshading)Ú!reportlab.graphics.charts.utils3drå  rË  Ú_cmpZr¡  r  r   rÖ  r×  re  rP   rs   Úreverser³   r2   r1   r3   rH   rj  )r>   rå  Úfgrw   rÖ  r×  Úfg_valuerÏ   rè  rß  râ  rm   rn   ro   rp   rl   rs   Údzr  s                      r?   rý   zBarChart3D.makeBars  s¾  € ØBÐBÐBÐBÐBÐBÝ˜DœJÐ'Ñ'Ô'ˆØ�Š�r˜"ÑÔÐØ
�Š‰	Œ	ˆ	Ý‰GŒGˆØ”,ˆØ”,ˆØ—8’8‘:”:ˆØÔ#Ô)ˆØ�IÒÐØ×ÒÑÔÐÐØ�gÒÐØ\Ð\¥fÐ-ZÐ-ZÐQYÐ-ZÑ-ZÔ-ZÑ&[Ô&[Ð\Ñ\Ô\ˆHàð 	*ð 	*ˆAØ�Œt�QŠwˆwØ56°q°r°r´UÑ2��2�a˜˜%  u¨UØ˜"‘W�Ø�˜Q  1 U¡7¨A¨q°©x¸¸G¹ÀRÈÁZØ&+¤oÀtØ(-Ô(9ÀuÔGXØ$(ð*ñ *ô *ð *øð ð 	Kð 	KˆAØ�!ŠtˆtØ56°q°r°r´UÑ2��2�a˜˜%  u¨UÝ×%Ò% d¨1¨U°5¸¸1¸UÀ6ÑJÔJÐJøØˆrA   )rB   rC   rD   r   rH   r   r   rE   rÖ  r×  rØ  rÙ  rù   rà  rŠ  rj  rý   rF   rA   r?   r~   r~   Ã  s×   € € € € € Øˆw˜HØ�,˜x¨gÐ6Ñ6Ô6Ø�,˜x¨gÐ6Ñ6Ô6Ø�˜hÐ-LÐMÑMÔMØ�˜hÐ-BÐCÑCÔCð	
ñ 
ô 
€Hð €GØ€GØ€FØ€Fð-ð -ð -ð	ð 	ð 	ð6ð 6ð 6ð$6ð 6ð 6ðð ð ð ð rA   r~   c                   ó   — e Zd Zd„ ZdS )ÚVerticalBarChart3Dc                 óš   — t          |d          |d         |d         |d          f|d          |d         |d         |d          f¦  «        S )Nr.   ræ   r   rç   r(   ©r>   r  rÑ   s      r?   ú<lambda>zVerticalBarChart3D.<lambda>&  sJ   € �#  !¤˜u Q q¤T¨!¨A¬$°°!´¨uÐ5¸¸!¼°u¸Q¸q¼TÀ!ÀAÄ$ÈÈ!ÌÀuÐ6MÑNÔN€ rA   N©rB   rC   rD   rì  rF   rA   r?   rò  rò  %  s   € € € € € Ø
NÐ
N€E€E€ErA   rò  c                   ó   — e Zd Zd„ ZdS )ÚHorizontalBarChart3Dc                 óš   — t          |d          |d         |d         |d          f|d          |d         |d         |d          f¦  «        S )Nr.   rç   r   ræ   r(   rô  s      r?   rõ  zHorizontalBarChart3D.<lambda>)  sJ   € �S 1 Q¤4 %¨¨!¬¨Q¨q¬T°1°Q´4°%Ð!8¸1¸Q¼4¸%ÀÀ!ÄÀQÀqÄTÈ1ÈQÌ4È%Ð9PÑQÔQ€ rA   Nrö  rF   rA   r?   rø  rø  (  s   € € € € € ØQÐQ€E€E€ErA   rø  c                  óÆ  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )z9A slightly pathologic bar chart with only TWO data items.é�  rš   ©é   é   é2   é}   é,  r   é<   é   Úneé   rs  é   ÚYingÚYang©r   rÆ  rm   rn   rp   ro   rQ   r   r–   r1   rO   ÚvalueMinÚvalueMaxÚ	valueSteprP   r6  r“   rx  ry  ÚangleÚcategoryNamesrk   ©rœ   rQ   r�   s      r?   Ú	sampleV0ar  ,  sÆ   € õ �c˜3ÑÔ€Gàˆ:€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'+€B„OÔÔ$Ø !€B„OÔÔØ "€B„OÔÔØ#%€B„OÔÔ Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  óÄ  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d|j
        _        d	|j        j        _        d
|j        j        _        d|j        j        _        d|j        j        _        dg|j        _        |                      |¦  «         | S )z/A pathologic bar chart with only ONE data item.rû  rš   ©é*   rÿ  r   r  r   r  r  r  rs  r  úJan-99r	  r  s      r?   Ú	sampleV0br  K  sÃ   € õ �c˜3ÑÔ€Gàˆ7€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'+€B„OÔÔ$Ø !€B„OÔÔØ "€B„OÔÔØ#%€B„OÔÔ Ø%- J€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó   — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        d|j        j        _        d|j        j        _        g |j        _        |                      |¦  «         | S )z8A really pathologic bar chart with NO data items at all!rû  rš   rF   rÿ  r   r  r   r  r  r  r  rs  )r   rÆ  rm   rn   rp   ro   rQ   r   r–   r1   rO   r
  r  r  rP   r6  r“   rx  ry  r  rk   r  s      r?   Ú	sampleV0cr  i  s´   € õ �c˜3ÑÔ€Gàˆ4€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'+€B„OÔÔ$Ø !€B„OÔÔØ "€B„OÔÔØ$&€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó  — t          dd¦  «        } ddg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d	|j
        _        d
|j
        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d                     d¦  «        }d„ |D ¦   «         }||j        _        |                      |¦  «         | S )ú!Sample of multi-series bar chart.rû  rš   ©rý  rŒ   rþ  é   é%   é-   é   rç   ©é   rè   é   é   é&   é.   rþ  rŒ   rÿ  r   r  r   r  r  r  r  rs  r  úJan Feb Mar Apr May Jun Jul Augú c                 ó   — g | ]}|d z   ‘ŒS ©z-99rF   ©r¢   r¦   s     r?   r¤   zsampleV1.<locals>.<listcomp>¢  ó   € Ð*Ð*Ð*˜A��%‘Ð*Ð*Ð*rA   )r   rÆ  rm   rn   rp   ro   rQ   r   r–   r1   rO   r
  r  r  rP   r6  r“   rx  ry  r  r   r  rk   ©rœ   rQ   r�   ÚcatNamess       r?   ÚsampleV1r-  †  sñ   € õ �c˜3ÑÔ€Gð +Ø*ð€Dõ
 
Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'+€B„OÔÔ$Ø !€B„OÔÔØ "€B„OÔÔØ#%€B„OÔÔ à0×6Ò6°sÑ;Ô;€HØ*Ð* Ð*Ñ*Ô*€HØ$,€B„OÔ!Ø‡K‚K��O„O€Oà€NrA   c                  ó6  — ddg} d}t          dd¦  «        }t          ¦   «         }d|_        d|_        d|_        d|_        | |_        d	|_        d
|_        d
|_	        d|j
        _        d|j
        _        d|j
        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        ||j        _        d|j        j        _        d|j        j        _        d|j        j        _        |                     |¦  «         |S )r  ©ç333333@çÍÌÌÌÌÌÀr�   rŒ   gffffff"@©ç333333ã?çš™™™™™Àéýÿÿÿrç   g333333@©zQ3 2000zYear to Datez	12 monthszAnnualised
3 yearszSince 07.10.99rû  rš   rÿ  r…   r  r   r‹   éñÿÿÿr  rŒ   Ú	Helveticar  r¦   rŽ   éÄÿÿÿ©r   rÆ  rm   rn   rp   ro   rQ   rM   rL   rK   rO   r
  r  r  r6  ru  rv  r“   r”   rP   r  ry  rk   ©rQ   r6  rœ   r�   s       r?   Ú	sampleV2ar<  ©  ó  € ð #Ø#ð€Dð7€Fõ �c˜3ÑÔ€Gå	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gà€B„MØ€B„OØ€B„Kà€B„LÔØ€B„LÔØ€B„LÔØ#.€B„LÔÔ Ø#$€B„LÔÔ Ø$'€B„LÔÔ!Ø%-€B„LÔÔ"à$*€B„OÔ!Ø&1€B„OÔÔ#Ø&'€B„OÔÔ#Ø #€B„OÔÔà‡K‚K��O„O€Oà€NrA   c                  ó6  — ddg} d}t          dd¦  «        }t          ¦   «         }d|_        d|_        d|_        d|_        | |_        d	|_        d
|_        d
|_	        d|j
        _        d|j
        _        d	|j
        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        ||j        _        d|j        j        _        d|j        j        _        d|j        j        _        |                     |¦  «         |S )r  r/  r2  r6  rû  rš   rÿ  r…   r  rŒ   r‹   r7  r  r8  r  r¦   rŽ   r9  r:  r;  s       r?   Ú	sampleV2br?  Ò  r=  rA   c                  óÔ  — ddg} d}t          dd¦  «        }t          ¦   «         }d|_        d|_        d|_        d|_        | |_        d	|_        d
|_        d
|_	        d|j
        _        d|j
        _        d|j
        _        d|j
        j        _        d|j
        j        _        ||j        _        d|j        j        _        d|j        j        _        d|j
        j        _        d|j
        j        _        d|j        j        _        d
|j        _        d|_        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        |                     |¦  «         |S )r  ©r0  r1  r�   rŒ   ç{®Gáú#@©r3  r4  r5  rç   rB  r6  rû  rš   rÿ  r…   r  r�   r‹   r7  r  rŒ   r8  r  r¦   rŽ   r9  ú%0.2fr   rè   )r   rÆ  rm   rn   rp   ro   rQ   rM   rL   rK   rO   r
  r  r  r6  ru  rv  rP   r  r“   r”   ry  rR   r•   rS   rx  rk   r;  s       r?   Ú	sampleV2crE  û  sE  € ð $Ø$ð€Dð7€Fõ �c˜3ÑÔ€Gå	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gà€B„MØ€B„OØ€B„Kà€B„LÔØ€B„LÔØ€B„LÔØ#.€B„LÔÔ Ø#$€B„LÔÔ à$*€B„OÔ!Ø&1€B„OÔÔ#Ø&'€B„OÔÔ#Ø$'€B„LÔÔ!Ø%-€B„LÔÔ"Ø #€B„OÔÔà€B„LÔà€BÔØ€B„L„OØ€B„L„OØ €B„LÔØ'€B„LÔØ€B„LÔà‡K‚K��O„O€Oà€NrA   c                  ó2  — d} d}d}t          | ¦  «        t          |¦  «        k    s
J d¦   «         ‚t          | ¦  «        t          |¦  «        k    s
J d¦   «         ‚t          dd¦  «        }t          ¦   «         }d|_        d|_        d|_        d	|_        |f|_        t          j	        |j
        _        d
|_        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        | |j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        t?          |¦  «        }|                      dd¦  «         | !                    d¦  «         | "                    |¦  «         |S )zBFaked horizontal bar chart using a vertical real one (deprecated).©
zUK EquitieszUS EquitieszEuropean EquitieszJapanese EquitieszPacific (ex Japan) EquitieszEmerging Markets EquitieszUK BondszOverseas BondszUK Index-LinkedÚCash©
g      ø¿ç333333Ó?r;   r  gš™™™™™é?gffffffæ?gš™™™™™Ù?gš™™™™™¹?r  rJ  ©
g        ç…ëQ¸Õ?gš™™™™™á?çš™™™™™ñ?g)\�Âõ(ì?g¤p=
×£è?g)\�Âõ(Ü?g)\�Âõ(¼?rM  rL  úbad datarû  rš   r   rƒ   é–   rD  r±  rŠ   r8  rè   r‹   rs  r�   r.   iƒÿÿÿé¯   i¦ÿÿÿ)#rh   r   rÆ  rm   rn   rp   ro   rQ   r   r˜   rN   r2   rS   rR   rx  ry  r“   r  ru  rv  r•   rO   rt  r
  r  r  rP   ÚtickUpÚtickDownr  r6  r   Ú	translateÚrotaterk   ©ÚnamesÚseries1Úseries2rœ   r�   rw   s         r?   ÚsampleV3rY  -  sÎ  € ðG€Eð B€GØH€Gåˆu‰:Œ:�˜W™œÒ%Ð%Ð% zÑ%Ô%Ð%Ýˆu‰:Œ:�˜W™œÒ%Ð%Ð% zÑ%Ô%Ð%å�c˜3ÑÔ€Gå	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØˆj€B„GÝœ€B„GÔà€BÔØ€B„L„OØ€B„L„OØ €B„LÔØ€B„LÔØ'€B„LÔØ€B„LÔØ€B„LÔà€B„LÔØ€B„LÔØ€B„LÔØ€B„LÔà€B„OÔØ €B„OÔØ$)€B„OÔ!Ø#%€B„OÔÔ Ø'*€B„OÔÔ$Ø !€B„OÔÔØ $€B„OÔÔØ&1€B„OÔÔ#Ø&'€B„OÔÔ#åˆb‰	Œ	€AØ‡K‚K��SÑÔÐØ‡H‚HˆS�M„M€Mà‡K‚K��N„N€Nà€NrA   c                  ó‚  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )úAA bar chart showing value axis region starting at *exactly* zero.rû  rš   rü  rÿ  r   r  r   r  r  r¦   éûÿÿÿr  r  ©r   rÆ  rm   rn   rp   ro   rQ   r   r–   r1   rO   r
  r  r  rP   r6  r“   ry  r  rk   r  s      r?   Ú	sampleV4ar^  e  s¬   € õ �c˜3ÑÔ€Gàˆ:€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó‚  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )ú<A bar chart showing value axis region starting *below* zero.rû  rš   rü  rÿ  r   r  éöÿÿÿr  r  r¦   r\  r  r  r]  r  s      r?   Ú	sampleV4brb  ‚  s¬   € õ �c˜3ÑÔ€Gàˆ:€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó‚  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )z;A bar chart showing value axis region staring *above* zero.rû  rš   rü  rÿ  r   r  r‹   r  r  r¦   r\  r  r  r]  r  s      r?   Ú	sampleV4crd  Ÿ  s¬   € õ �c˜3ÑÔ€Gàˆ:€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó‚  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )ú<A bar chart showing value axis region entirely *below* zero.rû  rš   ©ióÿÿÿiìÿÿÿrÿ  r   r  éâÿÿÿra  r  r¦   r\  r  r  r]  r  s      r?   Ú	sampleV4dri  ¼  s¬   € õ �c˜3ÑÔ€Gàˆ<€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   ))r‹   r  )rþ  rÿ  )r  é(   )rj  r  c                  óŠ  — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|j        _        d|j        _        d|j        _        d	|j        j        _        d
|j        j        _        ddg|j        _        |                      |¦  «         | S )ú8A simple bar chart with no expressed spacing attributes.rû  rš   rÿ  r   r  r   r  r  r¦   r\  r  r  )r   ÚdataSample5rÆ  rm   rn   rp   ro   rQ   r   r–   r1   rO   r
  r  r  rP   r6  r“   ry  r  rk   r  s      r?   Ú	sampleV5arn  ß  sª   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  óÂ  — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d	|_        d|j        _        d
|j        _        d|j        _        d|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )ú-A simple bar chart with proportional spacing.rû  rš   rÿ  r   r  r   rj  rþ  r‹   r  r  r¦   r\  r  r  ©r   rm  rÆ  rm   rn   rp   ro   rQ   r   r–   r1   rJ   rK   rL   rM   rO   r
  r  r  rP   r6  r“   ry  r  rk   r  s      r?   Ú	sampleV5brr  û  óÆ   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„NØ€B„KØ€B„OØ€B„Mà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  óÂ  — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d|_        d|j        _        d	|j        _        d
|j        _        d|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )ú6Make sampe simple bar chart but with absolute spacing.rû  rš   rÿ  r   r  r.   rj  r   r  r  r¦   r\  r  r  rq  r  s      r?   Ú
sampleV5c1rv    sÆ   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„NØ€B„KØ€B„OØ€B„Mà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  óÂ  — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d	|_        d	|j        _        d
|j        _        d|j        _        d|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )ru  rû  rš   rÿ  r   r  r.   rj  rþ  r   r  r  r¦   r\  r  r  rq  r  s      r?   Ú
sampleV5c2rx  =  sÆ   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„NØ€B„KØ€B„OØ€B„Mà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  óÂ  — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d	|_        d|j        _        d
|j        _        d|j        _        d|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )ru  rû  rš   rÿ  r   r  r.   rj  r   r‹   r  r  r¦   r\  r  r  rq  r  s      r?   Ú
sampleV5c3rz  ^  sÆ   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„NØ€B„KØ€B„OØ€B„Mà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø "€B„OÔÔØ%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  óÂ  — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d	|_        d
|j        _        d|j        _        d|j        _        d|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )ru  rû  rš   rÿ  r   r  r.   rj  rþ  r‹   r   r  r  r¦   r\  r  r  rq  r  s      r?   Ú
sampleV5c4r|    rs  rA   c                  ó‚  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )z>Make a slightly pathologic bar chart with only TWO data items.rû  rš   rü  rÿ  r   r  r   r  r  Úser  r  r  ©r   rÉ  rm   rn   rp   ro   rQ   r   r–   r1   rO   r
  r  r  rP   r6  r“   r  r  rk   r  s      r?   Ú	sampleH0ar€  ¢  s¬   € õ �c˜3ÑÔ€Gàˆ:€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'+€B„OÔÔ$Ø#%€B„OÔÔ Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó€  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d|j
        _        d	|j        j        _        d
|j        j        _        dg|j        _        |                      |¦  «         | S )z4Make a pathologic bar chart with only ONE data item.rû  rš   r  rÿ  r   r  r   r  r~  r  r  r  r  s      r?   Ú	sampleH0br‚  ¿  s©   € õ �c˜3ÑÔ€Gàˆ7€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'+€B„OÔÔ$Ø#%€B„OÔÔ Ø%- J€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó~  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        d|j        j        _        g |j        _        |                      |¦  «         | S )z=Make a really pathologic bar chart with NO data items at all!rû  rš   rF   rÿ  r   r  r   r  r  r~  r  r  r  s      r?   Ú	sampleH0cr„  Û  s§   € õ �c˜3ÑÔ€Gàˆ4€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'+€B„OÔÔ$Ø#%€B„OÔÔ Ø$&€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó¢  — t          dd¦  «        } ddg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d	|j
        _        d
|j
        _        d|j        j        _        d                     d¦  «        }d„ |D ¦   «         }||j        _        |                      |d¦  «         | S )r  rû  rš   r  r  rÿ  r   r  r   r  r  Úer%  r&  c                 ó   — g | ]}|d z   ‘ŒS r(  rF   r)  s     r?   r¤   zsampleH1.<locals>.<listcomp>  r*  rA   Úbarchart)r   rÉ  rm   rn   rp   ro   rQ   r   r–   r1   rO   r
  r  r  rP   r6  r“   r   r  rk   r+  s       r?   ÚsampleH1r‰  ÷  sÏ   € õ �c˜3ÑÔ€Gð +Ø*ð€Dõ
 
Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø0×6Ò6°sÑ;Ô;€HØ*Ð* Ð*Ñ*Ô*€HØ$,€B„OÔ!Ø‡K‚K��JÑÔÐà€NrA   c                  ót  — ddg} d}t          dd¦  «        }t          ¦   «         }d|_        d|_        d|_        d	|_        | |_        d
|_        d|_        d|_	        d|j
        _        d|j
        _        d|j
        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        |j
                             |j        ¦  «         ||j        _        d|j        j        _        d|j        j        _        d|j        j        _        |                     |¦  «         |S )r  r/  r2  r6  rû  rš   rˆ   rÿ  r…   r  r   r‹   r7  r  rŒ   r8  r  r¦   rŽ   éjÿÿÿ)r   rÉ  rm   rn   rp   ro   rQ   rM   rL   rK   rO   r
  r  r  r6  ru  rv  r“   r”   rÚ   rP   r  rx  rk   r;  s       r?   Ú	sampleH2arŒ    s  € ð #Ø#ð€Dð7€Fõ �c˜3ÑÔ€Gå	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gà€B„MØ€B„OØ€B„Kà€B„LÔØ€B„LÔØ€B„LÔØ#.€B„LÔÔ Ø#$€B„LÔÔ Ø$'€B„LÔÔ!Ø%-€B„LÔÔ"Ø„L×Ò˜2œ7Ñ#Ô#Ð#à$*€B„OÔ!Ø&1€B„OÔÔ#Ø&'€B„OÔÔ#Ø $€B„OÔÔà‡K‚K��O„O€Oà€NrA   c                  ó6  — ddg} d}t          dd¦  «        }t          ¦   «         }d|_        d|_        d|_        d	|_        | |_        d
|_        d|_        d|_	        d|j
        _        d|j
        _        d
|j
        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        ||j        _        d|j        j        _        d|j        j        _        d|j        j        _        |                     |¦  «         |S )r  r/  r2  r6  rû  rš   rˆ   rÿ  r…   r  rŒ   r‹   r7  r  r8  r  r¦   rŽ   r‹  )r   rÉ  rm   rn   rp   ro   rQ   rM   rL   rK   rO   r
  r  r  r6  ru  rv  r“   r”   rP   r  rx  rk   r;  s       r?   Ú	sampleH2brŽ  @  s  € ð #Ø#ð€Dð7€Fõ �c˜3ÑÔ€Gå	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gà€B„MØ€B„OØ€B„Kà€B„LÔØ€B„LÔØ€B„LÔØ#.€B„LÔÔ Ø#$€B„LÔÔ Ø$'€B„LÔÔ!Ø%-€B„LÔÔ"à$*€B„OÔ!Ø&1€B„OÔÔ#Ø&'€B„OÔÔ#Ø $€B„OÔÔà‡K‚K��O„O€Oà€NrA   c                  óÔ  — ddg} d}t          dd¦  «        }t          ¦   «         }d|_        d|_        d|_        d	|_        | |_        d
|_        d|_        d|_	        d|j
        _        d|j
        _        d|j
        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        d|j
        j        _        ||j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        _        d|_        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        |                     |¦  «         |S )r  rA  rC  r6  rû  rš   rˆ   rÿ  r…   r  r�   r‹   r7  r  rŒ   r8  r  r¦   rŽ   r‹  rD  r   rè   )r   rÉ  rm   rn   rp   ro   rQ   rM   rL   rK   rO   r
  r  r  r6  ru  rv  r“   r”   rP   r  rx  rR   r•   rS   ry  rk   r;  s       r?   Ú	sampleH2cr�  i  sE  € ð $Ø$ð€Dð7€Fõ �c˜3ÑÔ€Gå	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gà€B„MØ€B„OØ€B„Kà€B„LÔØ€B„LÔØ€B„LÔØ#.€B„LÔÔ Ø#$€B„LÔÔ Ø$'€B„LÔÔ!Ø%-€B„LÔÔ"à$*€B„OÔ!Ø&1€B„OÔÔ#Ø&'€B„OÔÔ#Ø $€B„OÔÔà€B„LÔà€BÔØ€B„L„OØ€B„L„OØ €B„LÔØ'€B„LÔØ€B„LÔà‡K‚K��O„O€Oà€NrA   c                  ó€  — d} d}d}t          | ¦  «        t          |¦  «        k    s
J d¦   «         ‚t          | ¦  «        t          |¦  «        k    s
J d¦   «         ‚t          dd¦  «        }t          ¦   «         }d|_        d|_        d	|_        d
|_        |f|_        t          j	        |j
        _        d|_        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        d|j        _        | |j        _        d|j        j        _        d|j        j        _        d|j        j        _        d|j        j        _        t=          |¦  «        }|                     |¦  «         |S )zEA really horizontal bar chart (compared to the equivalent faked one).rG  rI  rK  rN  rû  rš   rƒ   rþ  rO  éú   rD  r   r±  r8  rè   r‹   rs  r�   r.   iVÿÿÿ) rh   r   rÉ  rm   rn   rp   ro   rQ   r   r˜   rN   r2   rS   rR   rx  ry  r“   ru  rv  r•   rO   rt  r
  r  r  rP   ÚtickLeftÚ	tickRightr  r6  r   rk   rU  s         r?   ÚsampleH3r•  ›  s‡  € ðG€Eð B€GØH€Gåˆu‰:Œ:�˜W™œÒ%Ð%Ð% zÑ%Ô%Ð%Ýˆu‰:Œ:�˜W™œÒ%Ð%Ð% zÑ%Ô%Ð%å�c˜3ÑÔ€Gå	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØˆj€B„GÝœ€B„GÔà€BÔØ€B„L„OØ€B„L„OØ €B„LÔØ'€B„LÔØ€B„LÔØ€B„LÔà€B„LÔØ€B„LÔØ€B„LÔØ€B„LÔà €B„OÔØ !€B„OÔØ$)€B„OÔ!Ø'*€B„OÔÔ$Ø $€B„OÔÔØ&1€B„OÔÔ#Ø&'€B„OÔÔ#åˆb‰	Œ	€AØ‡K‚K��N„N€Nà€NrA   c                  ó`  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        ddg|j        _        |                      |¦  «         | S )r[  rû  rš   rü  rÿ  r   r  r   r  r  r†  r  r  ©r   rÉ  rm   rn   rp   ro   rQ   r   r–   r1   rO   r
  r  r  rP   r6  r“   r  rk   r  s      r?   Ú	sampleH4ar˜  Í  sŸ   € õ �c˜3ÑÔ€Gàˆ:€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó`  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        ddg|j        _        |                      |¦  «         | S )r`  rû  rš   rü  rÿ  r   r  ra  r  r  r†  r  r  r—  r  s      r?   Ú	sampleH4brš  é  sŸ   € õ �c˜3ÑÔ€Gàˆ:€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó`  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        ddg|j        _        |                      |¦  «         | S )z<A bar chart showing value axis region starting *above* zero.rû  rš   rü  rÿ  r   r  r‹   r  r  r†  r  r  r—  r  s      r?   Ú	sampleH4crœ    sŸ   € õ �c˜3ÑÔ€Gàˆ:€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó`  — t          dd¦  «        } dg}t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j        |_	        d|j
        _        d|j
        _        d	|j
        _        d
|j        j        _        ddg|j        _        |                      |¦  «         | S )rf  rû  rš   rg  rÿ  r   r  rh  ra  r  r†  r  r  r—  r  s      r?   Ú	sampleH4drž  !  sŸ   € õ �c˜3ÑÔ€Gàˆ<€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„Gå”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  óh  — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|j        _        d|j        _        d|j        _        d	|j        j        _        d
dg|j        _        |                      |¦  «         | S )rl  rû  rš   rÿ  r   r  r   r  r  r†  r  r  )r   rm  rÉ  rm   rn   rp   ro   rQ   r   r–   r1   rO   r
  r  r  rP   r6  r“   r  rk   r  s      r?   Ú	sampleH5ar   ?  s�   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó   — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d	|_        d|j        _        d
|j        _        d|j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )rp  rû  rš   rÿ  r   r  r   rj  rþ  r‹   r  r  r†  r  r  ©r   rm  rÉ  rm   rn   rp   ro   rQ   r   r–   r1   rJ   rK   rL   rM   rO   r
  r  r  rP   r6  r“   r  rk   r  s      r?   Ú	sampleH5br£  Z  ó¹   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„NØ€B„KØ€B„OØ€B„Mà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó   — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d|_        d|j        _        d	|j        _        d
|j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )z)A simple bar chart with absolute spacing.rû  rš   rÿ  r   r  r.   r‹   r   r  r  r†  r  r  r¢  r  s      r?   Ú
sampleH5c1r¦  z  ó¹   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„NØ€B„KØ€B„OØ€B„Mà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó   — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d	|_        d	|j        _        d
|j        _        d|j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S ©ú'Simple bar chart with absolute spacing.rû  rš   rÿ  r   r  r.   r‹   rþ  r   r  r  r†  r  r  r¢  r  s      r?   Ú
sampleH5c2r«  š  s¹   € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„NØ€B„KØ€B„OØ€B„Mà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à‡K‚K��O„O€Oà€NrA   c                  ó   — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d	|_        d
|_        d	|j        _        d|j        _        d|j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S )rª  rû  rš   rÿ  rþ  é›   r  r.   r‹   r   r�   r  r  r†  r  r  r¢  r  s      r?   Ú
sampleH5c3r®  º  r§  rA   c                  ó   — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d|_        d	|j        _        d
|j        _        d|j        _        d|j        j        _        ddg|j        _        |                      |¦  «         | S r©  r¢  r  s      r?   Ú
sampleH5c4r°  Ú  r¤  rA   c                  óh  — t          dd¦  «        } t          }t          ¦   «         }d|_        d|_        d|_        d|_        ||_        t          j	        |_
        d|_        d|_        d|_        d	|j        _        d
|j        _        d|j        _        d|j        j        _        ddg|j        _        d	dlm}  |¦   «         }t          j	        |_        t          j        |_        d|_        d	|_         |¦   «         }t          j	        |_        t          j        |_        d|_        d	|_         |¦   «         }t          j        |_        t          j        |_        d|_        d|_        d	|_        ||j         _!        ||j         d         _!        ||j         d         _!        |  "                    |¦  «         | S )ú(Simple bar chart using symbol attribute.rû  rš   rÿ  r   r  r‹   r  ræ   r   r  r†  r  r  ©Ú
ShadedRectÚ
horizontalÚverticalr.   r�   )#r   rm  rÆ  rm   rn   rp   ro   rQ   r   r–   r1   rK   rL   rM   rO   r
  r  r  rP   r6  r“   r  Ú reportlab.graphics.widgets.gridsr´  ÚfillColorStartr<   ÚfillColorEndÚorientationr3   ÚpinkÚwhiteÚcylinderModerN   r5   rk   )rœ   rQ   r�   r´  Úsym1Úsym2Úsym3s          r?   ÚsampleSymbol1rÁ  ù  s~  € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„KØ€B„OØ€B„Mà€B„LÔØ€B„LÔØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à;Ð;Ð;Ð;Ð;Ð;Øˆ:‰<Œ<€DÝ œ,€DÔÝœ€DÔØ#€DÔØ€DÔàˆ:‰<Œ<€DÝ œ,€DÔÝœ€DÔØ#€DÔØ€DÔàˆ:‰<Œ<€DÝ œ+€DÔÝœ€DÔØ!€DÔØ€DÔØ€DÔà€B„G„NØ€B„GˆA„JÔØ€B„GˆA„JÔà‡K‚K��O„O€Oà€NrA   c                  ó8  — t          dd¦  «        } t          }t          ¦   «         }d|j        _        d|_        d|_        d|_        d|_        ||_	        t          j        |_        d|_        d|_        d	|j        _        d
|j        j        _        ddg|j        _        d	dlm}  |¦   «         |j        _        t          j        |j        j        _        t          j        |j        j        _        d|j        j        _        d|j        j        _        d	|j        j        _         |¦   «         |j        d         _        t          j        |j        d         j        _        t          j        |j        d         j        _        d|j        d         j        _        d|j        d         j        _        d	|j        d         j        _         |¦   «         |j        d         _        t          j         |j        d         j        _        t          j        |j        d         j        _        d|j        d         j        _        d|j        d         j        _        d	|j        d         j        _         |¦   «         |j        d         _        t          j!        |j        d         j        _        t          j        |j        d         j        _        d|j        d         j        _        d|j        d         j        _        d	|j        d         j        _        |  "                    |¦  «         | S )r²  rû  rš   r   rÿ  r   r  r‹   r  r   r†  r  r  r³  r¶  r.   r�   ræ   )#r   rm  rÆ  rP   rs   rm   rn   rp   ro   rQ   r   r–   r1   rK   rL   rO   r
  r6  r“   r  r·  r´  rN   r5   r—   r¸  r¼  r¹  rº  r½  r3   Úmagentar˜   r<   rk   )rœ   rQ   r�   r´  s       r?   ÚsampleStacked1rÄ  /	  sI  € õ �c˜3ÑÔ€Gå€Då	Ñ	Ô	€BØ%€B„OÔØ€B„DØ€B„DØ€B„IØ€B„HØ€B„GÝ”\€B„Nà€B„KØ€B„OØ€B„LÔà'*€B„OÔÔ$Ø%+¨VÐ$4€B„OÔ!à;Ð;Ð;Ð;Ð;Ð;Ø�Z‘\”\€B„G„NÝ$*¤J€B„G„NÔ!Ý"(¤,€B„G„NÔØ!+€B„G„NÔØ"#€B„G„NÔØ!"€B„G„NÔà"˜
™œ€B„GˆA„JÔÝ'-¤~€B„GˆA„JÔÔ$Ý%+¤\€B„GˆA„JÔÔ"Ø$.€B„GˆA„JÔÔ!Ø%&€B„GˆA„JÔÔ"Ø$%€B„GˆA„JÔÔ!à"˜
™œ€B„GˆA„JÔÝ'-¤|€B„GˆA„JÔÔ$Ý%+¤\€B„GˆA„JÔÔ"Ø$.€B„GˆA„JÔÔ!Ø%&€B„GˆA„JÔÔ"Ø$%€B„GˆA„JÔÔ!à"˜
™œ€B„GˆA„JÔÝ'-¤{€B„GˆA„JÔÔ$Ý%+¤\€B„GˆA„JÔÔ"Ø$.€B„GˆA„JÔÔ!Ø%&€B„GˆA„JÔÔ"Ø$%€B„GˆA„JÔÔ!à‡K‚K��O„O€Oà€NrA   c                   ó   — e Zd ZdZdd„ZdS )Ú
SampleH5c4rª  rû  rš   c                 óÖ  — t          j        | ||g|¢R i |¤Ž t          ¦   «         }d|_        d|_        d|_        d|_        t          |_        t          j
        |_        d|_        d|_        d|_        d|_        d|j        _        d|j        _        d	|j        _        d
|j        j        _        ddg|j        _        |                      |d¬¦  «         |                     ¦   «          d S )Nrÿ  r   r  r.   r‹   rþ  r   r  r  r†  r  r  ÚHBC)r6   )r   r@   rÉ  rm   rn   rp   ro   rm  rQ   r   r–   r1   rJ   rK   rL   rM   rO   r
  r  r  rP   r6  r“   r  rk   r½  )r>   ro   rp   ÚargsÚkwr�   s         r?   r@   zSampleH5c4.__init__k	  sâ   € ÝÔ˜˜e FÐ6¨DÐ6Ð6Ð6°2Ð6Ð6Ð6ÝÑ!Ô!ˆØˆŒØˆŒØˆŒ	ØˆŒÝˆŒÝœˆŒàˆŒØˆŒØˆŒØˆŒà !ˆŒÔØ "ˆŒÔØ!#ˆŒÔà+.ˆŒÔÔ(Ø)/°Ð(8ˆŒÔ%à�Š�˜ˆÑÔÐØ
×*Ò*Ñ,Ô,Ð,Ð,Ð,rA   N)rû  rš   )rB   rC   rD   rÄ  r@   rF   rA   r?   rÆ  rÆ  h	  s.   € € € € € Ø-Ð-ð-ð -ð -ð -ð -ð -rA   rÆ  )hÚ__version__rÄ  rm  rÍ  Úastr   Úreportlab.libr   Úreportlab.lib.validatorsr   r   r   r   r	   r
   r   r   r   r   r   r   Úreportlab.lib.utilsr   r   Ú"reportlab.graphics.widgets.markersr   r   Úreportlab.lib.attrmapr   r   Úreportlab.pdfbase.pdfmetricsr   Úreportlab.graphics.widgetbaser   r   r   Úreportlab.graphics.shapesr   r   r   r   r   Úreportlab.graphics.charts.axesr    r!   r"   r#   Ú$reportlab.graphics.charts.textlabelsr$   r%   Úreportlab.graphics.charts.areasr&   Ú!reportlab.graphics.charts.legendsr'   Ú	reportlabr)   r+   rH   rÆ  rÉ  rË  r~   rò  rø  r  r  r  r-  r<  r?  rE  rY  r^  rb  rd  ri  rm  rn  rr  rv  rx  rz  r|  r€  r‚  r„  r‰  rŒ  rŽ  r�  r•  r˜  rš  rœ  rž  r   r£  r¦  r«  r®  r°  rÁ  rÄ  rÆ  rF   rA   r?   ú<module>rÚ     s"  ðð €ð	€ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  ðBð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ð _Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð ð$ð $ð $ð $ð $˜ñ $ô $ð $ð*w"ð w"ð w"ð w"ð w"ˆxñ w"ô w"ð w"ðrð ð ð ð �xñ ô ð ðð ð ð ð ˜ñ ô ð ð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð`ð `ð `ð `ð `�ñ `ô `ð `ðDOð Oð Oð Oð O˜Ð$4ñ Oô Oð OðRð Rð Rð Rð R˜:Ð&8ñ Rô Rð Rðð ð ð>ð ð ð<ð ð ð: ð  ð  ðF&ð &ð &ðR&ð &ð &ðR/ð /ð /ðd5ð 5ð 5ðpð ð ð:ð ð ð:ð ð ð:ð ð ðB 7Ð6Ð6€ðð ð ð8ð ð ðBð ð ðBð ð ðBð ð ðBð ð ðFð ð ð:ð ð ð8ð ð ð8ð ð ð>'ð 'ð 'ðT&ð &ð &ðR/ð /ð /ðd/ð /ð /ðdð ð ð8ð ð ð8ð ð ð8ð ð ð8 7Ð6Ð6€ðð ð ð6ð ð ð@ð ð ð@ð ð ð@ð ð ð@ð ð ð>4ð 4ð 4ðl6ð 6ð 6ðr-ð -ð -ð -ð -�ñ -ô -ð -ð -ð -rA   