ó
    ˆ*£hŠ6  ã                  ó¤  • S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJrJrJrJrJrJrJrJrJrJr  SSKJrJrJrJrJrJrJr  SS	KJ r   \(       a  SS
K!J"r"  SSK#J$r$J%r%  SSKJ&r&   " S S\5      r' " S S\5      r( " S S\5      r) " S S\5      r* " S S\5      r+ " S S\5      r, " S S\5      r- " S S\5      r. " S S\5      r/g) z"Common shape-related oxml objects.é    )Úannotations)ÚTYPE_CHECKINGÚCallable)ÚCT_GradientFillProperties)ÚPP_PLACEHOLDER)Úqn)
ÚST_AngleÚST_CoordinateÚST_DirectionÚST_DrawingElementIdÚST_LineWidthÚST_PlaceholderSizeÚST_PositiveCoordinateÚ
XsdBooleanÚ	XsdStringÚXsdUnsignedInt)ÚBaseOxmlElementÚChoiceÚOptionalAttributeÚOxmlElementÚRequiredAttributeÚ	ZeroOrOneÚZeroOrOneChoice)ÚEmu)ÚCT_Hyperlink)ÚCT_CustomGeometry2DÚCT_PresetGeometry2D)ÚLengthc                  ó~  • \ rS rSr% SrS\S'   \S#S j5       r\R                  S 5       r\S#S j5       r	\	R                  S 5       r	\S	 5       r
\
R                  S
 5       r
\S 5       r\R                  S 5       rS r\S 5       r\S$S j5       r\S%S j5       r\S&S j5       r\S&S j5       r\S 5       r\S'S j5       r\R                  S(S j5       r\S 5       r\S 5       r\S 5       r\S#S j5       r\R                  S 5       r\S 5       r\S#S j5       r\R                  S 5       r\S 5       rS)S jrS  rS!rg")*ÚBaseShapeElementé'   zRProvides common behavior for shape element classes like CT_Shape, CT_Picture, etc.ÚCT_ShapePropertiesÚspPrc                ó$   • U R                  S5      $ ©NÚcx©Ú_get_xfrm_attr©Úselfs    ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pptx/oxml/shapes/shared.pyr&   ÚBaseShapeElement.cx,   ó   € à×"Ñ" 4Ó(Ð(ó    c                ó(   • U R                  SU5        g r%   ©Ú_set_xfrm_attr©r*   Úvalues     r+   r&   r,   0   ó   € à×Ñ˜D %Õ(r.   c                ó$   • U R                  S5      $ ©NÚcyr'   r)   s    r+   r7   ÚBaseShapeElement.cy4   r-   r.   c                ó(   • U R                  SU5        g r6   r0   r2   s     r+   r7   r8   8   r4   r.   c                ó6   • [        U R                  S5      5      $ ©NÚflipH©Úboolr(   r)   s    r+   r<   ÚBaseShapeElement.flipH<   ó   € ä�D×'Ñ'¨Ó0Ó1Ð1r.   c                ó(   • U R                  SU5        g r;   r0   r2   s     r+   r<   r?   @   ó   € à×Ñ˜G UÕ+r.   c                ó6   • [        U R                  S5      5      $ ©NÚflipVr=   r)   s    r+   rE   ÚBaseShapeElement.flipVD   r@   r.   c                ó(   • U R                  SU5        g rD   r0   r2   s     r+   rE   rF   H   rB   r.   c                ó6   • U R                   R                  5       $ )z£Return the `a:xfrm` grandchild element, newly-added if not present.

This version works for `p:sp`, `p:cxnSp`, and `p:pic` elements, others will need to
override.
)r#   Úget_or_add_xfrmr)   s    r+   rI   Ú BaseShapeElement.get_or_add_xfrmL   s   € ð �y‰y×(Ñ(Ó*Ð*r.   c                ó   • U R                   SL$ )zl
True if this shape element has a `p:ph` descendant, indicating it
is a placeholder shape. False otherwise.
N)Úphr)   s    r+   Ú
has_ph_elmÚBaseShapeElement.has_ph_elmT   s   € ð �w‰w˜dÐ"Ð"r.   c                óN   • U R                  S5      n[        U5      S:X  a  gUS   $ )z>The `p:ph` descendant element if there is one, None otherwise.z./*[1]/p:nvPr/p:phr   N)ÚxpathÚlen)r*   Úph_elmss     r+   rL   ÚBaseShapeElement.ph\   s,   € ð —*‘*Ð1Ó2ˆÜˆw‹<˜1ÓØØ�q‰zÐr.   c                óN   • U R                   nUc  [        S5      eUR                  $ )z`Integer value of placeholder idx attribute.

Raises |ValueError| if shape is not a placeholder.
únot a placeholder shape)rL   Ú
ValueErrorÚidx©r*   rL   s     r+   Úph_idxÚBaseShapeElement.ph_idxd   s'   € ð �W‰WˆØ‰:ÜÐ6Ó7Ð7Ø�v‰vˆr.   c                óN   • U R                   nUc  [        S5      eUR                  $ )zZPlaceholder orientation, e.g. 'vert'.

Raises |ValueError| if shape is not a placeholder.
rU   )rL   rV   ÚorientrX   s     r+   Ú	ph_orientÚBaseShapeElement.ph_oriento   s(   € ð �W‰WˆØ‰:ÜÐ6Ó7Ð7Ø�y‰yÐr.   c                óN   • U R                   nUc  [        S5      eUR                  $ )zdPlaceholder size, e.g. ST_PlaceholderSize.HALF.

Raises `ValueError` if shape is not a placeholder.
rU   )rL   rV   ÚszrX   s     r+   Úph_szÚBaseShapeElement.ph_szz   s'   € ð �W‰WˆØ‰:ÜÐ6Ó7Ð7Ø�u‰uˆr.   c                óN   • U R                   nUc  [        S5      eUR                  $ )zoPlaceholder type, e.g. ST_PlaceholderType.TITLE ('title').

Raises `ValueError` if shape is not a placeholder.
rU   )rL   rV   ÚtyperX   s     r+   Úph_typeÚBaseShapeElement.ph_type…   s'   € ð �W‰WˆØ‰:ÜÐ6Ó7Ð7Ø�w‰wˆr.   c                óT   • U R                   nUb  UR                  c  gUR                  $ )z;Float representing degrees this shape is rotated clockwise.ç        )ÚxfrmÚrot)r*   ri   s     r+   rj   ÚBaseShapeElement.rot�   s'   € ð �y‰yˆØ‰<˜4Ÿ8™8Ñ+ØØ�x‰xˆr.   c                ó,   • XR                  5       l        g ©N)rI   rj   r2   s     r+   rj   rk   ˜   s   € à%*×ÑÓÕ"r.   c                óB   • U R                   R                  R                  $ )z
Integer id of this shape
)Ú_nvXxPrÚcNvPrÚidr)   s    r+   Úshape_idÚBaseShapeElement.shape_idœ   s   € ð
 �|‰|×!Ñ!×$Ñ$Ð$r.   c                óB   • U R                   R                  R                  $ )z
Name of this shape
)ro   rp   Únamer)   s    r+   Ú
shape_nameÚBaseShapeElement.shape_name£   s   € ð
 �|‰|×!Ñ!×&Ñ&Ð&r.   c                ó6   • U R                  [        S5      5      $ )z.Child `p:txBody` element, None if not present.zp:txBody)Úfindr   r)   s    r+   ÚtxBodyÚBaseShapeElement.txBodyª   s   € ð �y‰yœ˜J›Ó(Ð(r.   c                ó$   • U R                  S5      $ ©NÚxr'   r)   s    r+   r~   ÚBaseShapeElement.x¯   ó   € à×"Ñ" 3Ó'Ð'r.   c                ó(   • U R                  SU5        g r}   r0   r2   s     r+   r~   r   ³   ó   € à×Ñ˜C Õ'r.   c                ó.   • U R                   R                  $ )z—The `a:xfrm` grandchild element or |None| if not found.

This version works for `p:sp`, `p:cxnSp`, and `p:pic` elements, others will need to
override.
)r#   ri   r)   s    r+   ri   ÚBaseShapeElement.xfrm·   s   € ð �y‰y�~‰~Ðr.   c                ó$   • U R                  S5      $ ©NÚyr'   r)   s    r+   r‡   ÚBaseShapeElement.yÀ   r€   r.   c                ó(   • U R                  SU5        g r†   r0   r2   s     r+   r‡   rˆ   Ä   r‚   r.   c                ó*   • U R                  S5      S   $ )z‰
Required non-visual shape properties element for this shape. Actual
name depends on the shape type, e.g. `p:nvPicPr` for picture
shape.
z./*[1]r   )rP   r)   s    r+   ro   ÚBaseShapeElement._nvXxPrÈ   s   € ð �z‰z˜(Ó# AÑ&Ð&r.   c                ó8   • U R                   nUc  g [        X!5      $ rm   )ri   Úgetattr)r*   ru   ri   s      r+   r(   ÚBaseShapeElement._get_xfrm_attrÑ   s   € Ø�y‰yˆØ‰<ØÜ�tÓ"Ð"r.   c                ó<   • U R                  5       n[        X1U5        g rm   )rI   Úsetattr)r*   ru   r3   ri   s       r+   r1   ÚBaseShapeElement._set_xfrm_attr×   s   € Ø×#Ñ#Ó%ˆÜ�˜EÕ"r.   © N)Úreturnr   )r“   zCT_Placeholder | None)r“   Úint)r“   Ústr)r“   Úfloat)r3   r–   )ru   r•   r“   úLength | None)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Úpropertyr&   Úsetterr7   r<   rE   rI   rM   rL   rY   r]   ra   re   rj   rr   rv   rz   r~   ri   r‡   ro   r(   r1   Ú__static_attributes__r’   r.   r+   r    r    '   s(  ‡ Ù\à
Óàó)ó ð)ð ‡Y�Yñ)ó ð)ð ó)ó ð)ð ‡Y�Yñ)ó ð)ð ñ2ó ð2ð ‡\�\ñ,ó ð,ð ñ2ó ð2ð ‡\�\ñ,ó ð,ò+ð ñ#ó ð#ð óó ðð óó ðð óó ðð óó ðð ñó ðð óó ðð 	‡Z�Zó+ó ð+ð ñ%ó ð%ð ñ'ó ð'ð ñ)ó ð)ð ó(ó ð(ð ‡X�Xñ(ó ð(ð ñó ðð ó(ó ð(ð ‡X�Xñ(ó ð(ð ñ'ó ð'ô#õ#r.   r    c                  ó2   • \ rS rSr% SrS\S'   \" SSS9rSrg	)
Ú#CT_ApplicationNonVisualDrawingPropséÜ   z`p:nvPr` element.zCallable[[], CT_Placeholder]Úget_or_add_phzp:ph)z	a:audioCdza:wavAudioFileza:audioFileza:videoFileza:quickTimeFilezp:custDataLstzp:extLst©Ú
successorsr’   N)	r˜   r™   rš   r›   rœ   r�   r   rL   r    r’   r.   r+   r¢   r¢   Ü   s   ‡ Ùà/Ó/á	Øð
ñ
ƒBr.   r¢   c                  óò   • \ rS rSrSrSr\" \" S5      \" S5      \" S5      \" S5      4\SS	 S
9r\	" S\SS	 S
9r
\	" S\SS	 S
9rC\" S\\" S5      S9r\S 5       r\S 5       r\R&                  S 5       rSrg	)ÚCT_LinePropertieséï   z'Custom element class for <a:ln> element)úa:noFillúa:solidFillú
a:gradFillú
a:pattFillú
a:prstDashú
a:custDashza:roundza:bevelza:miterz	a:headEndz	a:tailEndúa:extLstrª   r«   r¬   r­   é   Nr¥   r®   é   r¯   é   Úwr   ©Údefaultc                ó   • U R                   $ )z5
Required to fulfill the interface used by dml.fill.
)Úeg_lineFillPropertiesr)   s    r+   Úeg_fillPropertiesÚ#CT_LineProperties.eg_fillProperties  s   € ð
 ×)Ñ)Ð)r.   c                ó:   • U R                   nUc  gUR                  $ )zVReturn value of `val` attribute of `a:prstDash` child.

Return |None| if not present.
N)ÚprstDashÚval)r*   r¼   s     r+   ÚprstDash_valÚCT_LineProperties.prstDash_val  s    € ð —=‘=ˆØÑØØ�|‰|Ðr.   c                óP   • U R                  5         U R                  5       nXl        g rm   )Ú_remove_custDashÚget_or_add_prstDashr½   )r*   r½   r¼   s      r+   r¾   r¿      s!   € à×ÑÔØ×+Ñ+Ó-ˆØ�r.   r’   )r˜   r™   rš   r›   rœ   Ú_tag_seqr   r   r¸   r   r¼   ÚcustDashr   r   r   r´   rž   r¹   r¾   rŸ   r    r’   r.   r+   r¨   r¨   ï   sÄ   † Ù1ð€Hñ ,á�:ÓÙ�=Ó!Ù�<Ó Ù�<Ó ð		
ð ˜A˜B�<ñÐñ ˜°(¸1¸2°,Ñ?€HÙ˜°(¸1¸2°,Ñ?€HØÙ˜#˜|±S¸³VÑ<€Aàñ*ó ð*ð ñó ðð ×Ññó ór.   r¨   c                  ó”   • \ rS rSr% SrS\S'   S\S'   Sr\" S\SS	 S
9rS\S'   \" S\SS	 S
9r	S\S'   \
" S\5      r\
" S\5      rCSrg	)ÚCT_NonVisualDrawingPropsi'  z`p:cNvPr` custom element class.zCallable[[], CT_Hyperlink]Úget_or_add_hlinkClickÚget_or_add_hlinkHover)úa:hlinkClickúa:hlinkHoverr°   rÉ   é   Nr¥   zCT_Hyperlink | NoneÚ
hlinkClickrÊ   é   Ú
hlinkHoverrq   ru   r’   )r˜   r™   rš   r›   rœ   r�   rÃ   r   rÌ   rÎ   r   r   rq   r   ru   r    r’   r.   r+   rÆ   rÆ   '  sf   ‡ Ù)à5Ó5Ø5Ó5à;€HÙ&/°È8ÐTUÐTVÈ<Ñ&X€JÐ#ÓXÙ&/°È8ÐTUÐTVÈ<Ñ&X€JÐ#ÓXÙ	˜4Ð!4Ó	5€BÙ˜V YÓ/€DÛr.   rÆ   c                  ó¾   • \ rS rSr% Sr\" S\\R                  S9rS\	S'   \" S\
\
R                  S9rS\	S'   \" S\\R                  S9rS\	S'   \" S	\S
S9rS\	S	'   Srg)ÚCT_Placeholderi5  z`p:ph` custom element class.rd   rµ   r   r\   r•   r`   rW   r   r”   r’   N)r˜   r™   rš   r›   rœ   r   r   ÚOBJECTrd   r�   r   ÚHORZr\   r   ÚFULLr`   r   rW   r    r’   r.   r+   rÐ   rÐ   5  s   ‡ Ù&á,Ø�¨×(=Ñ(=ñ€Dˆ.ó ñ $Ø�,¨×(9Ñ(9ñ€FˆCó ñ  ØÐ Ð*<×*AÑ*Añ€Bˆó ñ !Øˆ~ qñ€Cˆö r.   rÐ   c                  óR   • \ rS rSr% Sr\" S\5      rS\S'   \" S\5      r	S\S'   Sr
g)Ú
CT_Point2DiF  z+
Custom element class for <a:off> element.
r~   r   r‡   r’   N)r˜   r™   rš   r›   rœ   r   r
   r~   r�   r‡   r    r’   r.   r+   rÕ   rÕ   F  s+   ‡ ññ " # }Ó5€A€vÓ5Ù! # }Ó5€A€vÖ5r.   rÕ   c                  ó<   • \ rS rSrSr\" S\5      r\" S\5      rSr	g)ÚCT_PositiveSize2DiO  z+
Custom element class for <a:ext> element.
r&   r7   r’   N)
r˜   r™   rš   r›   rœ   r   r   r&   r7   r    r’   r.   r+   r×   r×   O  s#   † ññ 
˜4Ð!6Ó	7€BÙ	˜4Ð!6Ó	7ƒBr.   r×   c            
      ó†  • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   Sr\" S\SS S9rS\S'   \" S\SS S9r	S\S'   \" S\SS S9r
S\S'   \" \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      4\S S S9r\" S!\S"S S9rS#\S$'   \" S%\S&S S9rC\S' 5       r\S( 5       r\S-S) j5       r\S* 5       rS+ rS,rg).r"   iX  zƒCustom element class for `p:spPr` element.

Shared by `p:sp`, `p:cxnSp`,  and `p:pic` elements as well as a few more obscure ones.
zCallable[[], CT_Transform2D]rI   zCallable[[], CT_LineProperties]Úget_or_add_lnz!Callable[[], CT_PresetGeometry2D]Ú_add_prstGeomzCallable[[], None]Ú_remove_custGeom)úa:xfrmú
a:custGeomú
a:prstGeomrª   r«   r¬   ú
a:blipFillr­   ú	a:grpFillúa:lnúa:effectLstza:effectDagz	a:scene3dza:sp3dr°   rÜ   rË   Nr¥   zCT_Transform2D | Noneri   rÝ   rÍ   zCT_CustomGeometry2D | NoneÚcustGeomrÞ   é   zCT_PresetGeometry2D | NoneÚprstGeomrª   r«   r¬   rß   r­   rà   é	   rá   é
   zCT_LineProperties | NoneÚlnrâ   é   c                óP   • U R                  S5      nU(       d  g[        US   5      $ )z<
Shape width as an instance of Emu, or None if not present.
z./a:xfrm/a:ext/@cxNr   ©rP   r   )r*   Ú
cx_str_lsts     r+   r&   ÚCT_ShapeProperties.cxŽ  ó(   € ð
 —Z‘ZÐ 4Ó5ˆ
ÞØÜ�:˜a‘=Ó!Ð!r.   c                óP   • U R                  S5      nU(       d  g[        US   5      $ )z=
Shape height as an instance of Emu, or None if not present.
z./a:xfrm/a:ext/@cyNr   rë   )r*   Ú
cy_str_lsts     r+   r7   ÚCT_ShapeProperties.cy˜  rî   r.   c                óP   • U R                  S5      nU(       d  g[        US   5      $ )z[Distance between the left edge of the slide and left edge of the shape.

0 if not present.
z./a:xfrm/a:off/@xNr   rë   )r*   Ú	x_str_lsts     r+   r~   ÚCT_ShapeProperties.x¢  ó(   € ð —J‘JÐ2Ó3ˆ	ÞØÜ�9˜Q‘<Ó Ð r.   c                óP   • U R                  S5      nU(       d  g[        US   5      $ )zk
The offset of the top of the shape from the top of the slide, as an
instance of Emu. None if not present.
z./a:xfrm/a:off/@yNr   rë   )r*   Ú	y_str_lsts     r+   r‡   ÚCT_ShapeProperties.y­  rõ   r.   c                ó,   • [         R                  " 5       $ rm   )r   Únew_gradFillr)   s    r+   Ú_new_gradFillÚ CT_ShapeProperties._new_gradFill¸  s   € Ü(×5Ò5Ó7Ð7r.   r’   )r“   r—   )r˜   r™   rš   r›   rœ   r�   rÃ   r   ri   rã   rå   r   r   r¹   rè   Ú	effectLstrž   r&   r7   r~   r‡   rû   r    r’   r.   r+   r"   r"   X  s[  ‡ ñð
 2Ó1Ø2Ó2Ø4Ó4Ø(Ó(ð€Hñ" #,Ø˜X a b˜\ñ#€DÐ
ó ñ ,5Ø ¨!¨" ñ,€HÐ(ó ñ ,5Ø ¨!¨" ñ,€HÐ(ó ñ (á�:ÓÙ�=Ó!Ù�<Ó Ù�<Ó Ù�<Ó Ù�;Óð	
ð ˜A˜B�<ñ
Ðñ $-Ø˜8 B C˜=ñ$€BÐ ó ñ ˜-°H¸R¸S°MÑB€IØàñ"ó ð"ð ñ"ó ð"ð ó!ó ð!ð ñ!ó ð!õ8r.   r"   c                  ó�  • \ rS rSr% SrSr\" S\SS S9rS\S	'   \" S
\SS S9r	\" S\SS S9r
\" S\SS S9rC\" S\SS9rS\S'   \" S\SS9r\" S\SS9r\S 5       r\R(                  S 5       r\S 5       r\R(                  S 5       r\S 5       r\R(                  S 5       r\S 5       r\R(                  S 5       rS rS  rS!rg)"ÚCT_Transform2Di¼  z®`a:xfrm` custom element class.

NOTE: this is a composite including CT_GroupTransform2D, which appears
with the `a:xfrm` tag in a group shape (including a slide `p:spTree`).
)úa:offúa:extúa:chOffúa:chExtr   rË   Nr¥   zCT_Point2D | NoneÚoffr  rÍ   r  rä   r  r±   rj   rh   rµ   zfloat | Noner<   FrE   c                ó:   • U R                   nUc  g UR                  $ rm   )r  r~   ©r*   r  s     r+   r~   ÚCT_Transform2D.xÑ  ó   € à�h‰hˆØ‰;ØØ�u‰uˆr.   c                ó0   • U R                  5       nXl        g rm   )Úget_or_add_offr~   ©r*   r3   r  s      r+   r~   r  Ø  ó   € à×!Ñ!Ó#ˆØ�r.   c                ó:   • U R                   nUc  g UR                  $ rm   )r  r‡   r  s     r+   r‡   ÚCT_Transform2D.yÝ  r  r.   c                ó0   • U R                  5       nXl        g rm   )r
  r‡   r  s      r+   r‡   r  ä  r  r.   c                ó:   • U R                   nUc  g UR                  $ rm   )Úextr&   ©r*   r  s     r+   r&   ÚCT_Transform2D.cxé  ó   € à�h‰hˆØ‰;ØØ�v‰vˆr.   c                ó0   • U R                  5       nXl        g rm   )Úget_or_add_extr&   ©r*   r3   r  s      r+   r&   r  ð  ó   € à×!Ñ!Ó#ˆØ�r.   c                ó:   • U R                   nUc  g UR                  $ rm   )r  r7   r  s     r+   r7   ÚCT_Transform2D.cyõ  r  r.   c                ó0   • U R                  5       nXl        g rm   )r  r7   r  s      r+   r7   r  ü  r  r.   c                ó8   • [        S5      nSUl        SUl        U$ )Nr  r   )r   r&   r7   r  s     r+   Ú_new_extÚCT_Transform2D._new_ext  s   € Ü˜'Ó"ˆØˆŒØˆŒØˆ
r.   c                ó8   • [        S5      nSUl        SUl        U$ )Nr   r   )r   r~   r‡   r  s     r+   Ú_new_offÚCT_Transform2D._new_off  s   € Ü˜'Ó"ˆØˆŒØˆŒØˆ
r.   r’   )r˜   r™   rš   r›   rœ   rÃ   r   r  r�   r  ÚchOffÚchExtr   r	   rj   r   r<   rE   rž   r~   rŸ   r‡   r&   r7   r  r   r    r’   r.   r+   rÿ   rÿ   ¼  sT  ‡ ñð 8€HÙ&Ø˜H Q R˜Lñ€CÐ	ó ñ �G¨°°¨Ñ
5€CÙ�i¨H°Q°R¨LÑ9€EÙ�i¨H°Q°R¨LÑ9€EØÙ)Øˆx ñ€Cˆó ñ ˜g z¸5ÑA€EÙ˜g z¸5ÑA€Eàñó ðð ‡X�Xñó ðð ñó ðð ‡X�Xñó ðð ñó ðð ‡Y�Yñó ðð ñó ðð ‡Y�Yñó ðòõr.   rÿ   N)0rœ   Ú
__future__r   Útypingr   r   Úpptx.dml.fillr   Úpptx.enum.shapesr   Úpptx.oxml.nsr   Úpptx.oxml.simpletypesr	   r
   r   r   r   r   r   r   r   r   Úpptx.oxml.xmlchemyr   r   r   r   r   r   r   Ú	pptx.utilr   Úpptx.oxml.actionr   Úpptx.oxml.shapes.autoshaper   r   r   r    r¢   r¨   rÆ   rÐ   rÕ   r×   r"   rÿ   r’   r.   r+   Ú<module>r.     s»   ðÙ (å "ç *å 3Ý +Ý ÷÷ ÷ ÷÷ ñ õ æÝ-ßSÝ ôr#�ô r#ôj¨/ô ô&5˜ô 5ôp˜ô ô�_ô ô"6�ô 6ô8˜ô 8ôa8˜ô a8ôHO�_õ Or.   