
    'jM                       U 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
 ddlmZmZ erd dlmZ d dlmZ d dlmZ d	Zd
Z G d d          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z  G d! d"e          Z! G d# d$e!          Z" G d% d&e!          Z# G d' d(e!          Z$ G d) d*e!          Z% G d+ d,e%          Z& G d- d.e          Z' G d/ d0e'          Z( G d1 d2e          Z) G d3 d4e          Z* G d5 d6e*          Z+ G d7 d8e          Z, G d9 d:e,          Z- G d; d<e,          Z. G d= d>e,          Z/ G d? d@          Z0	 dPdQdLZ1dRdSdMZ2 e0            Z3d@e4dN<   dOS )T    )annotations)TYPE_CHECKINGIterableIterator)Vec2Shape2dNULLVECUVec   )
open_arrowarrow2)
DXFGraphic)BlocksSection)GenericLayoutTypegPqx2@g     F@c                  (    e Zd ZddZdddZddZdS )	BaseArrowverticesIterable[UVec]c                .    t          |          | _        d S N)r   shape)selfr   s     M/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/render/arrows.py__init__zBaseArrow.__init__   s    X&&


    Nlayoutr   c                    d S r    r   r   
dxfattribss      r   renderzBaseArrow.render   s    r   insertr
   anglefloatc                n    | j                             |           | j                             |           d S r   )r   rotate	translate)r   r"   r#   s      r   placezBaseArrow.place   s4    
%   
V$$$$$r   )r   r   r   r   r   )r"   r
   r#   r$   )__name__
__module____qualname__r   r!   r(   r   r   r   r   r      sU        ' ' ' '    % % % % % %r   r   c                  "     e Zd Zd	d
 fdZ xZS )
NoneStroke      ?r   r"   r
   sizer$   r#   c                f    t                                          t          |          g           d S r   )superr   r   r   r"   r0   r#   	__class__s       r   r   zNoneStroke.__init__    s)    $v,,(((((r   r/   r   r"   r
   r0   r$   r#   r$   r*   r+   r,   r   __classcell__r4   s   @r   r.   r.      sB        ) ) ) ) ) ) ) ) ) ) )r   r.   c                  ,     e Zd Zdd fdZdddZ xZS )ObliqueStroker/   r   r"   r
   r0   r$   r#   c                    || _         |dz  }t                                          t          | | f          t          ||f          g           |                     ||           d S )N   )r0   r2   r   r   r(   r   r"   r0   r#   s2r4   s        r   r   zObliqueStroke.__init__%   sd    	AX$bSz**D"bNN;<<<

65!!!!!r   Nr   r   c                b    |                     | j        d         | j        d         |           d S )Nr   r   startendr    )add_liner   r   s      r   r!   zObliqueStroke.render,   s:    *Q-TZ]z 	 	
 	
 	
 	
 	
r   r5   r6   r   r)   r*   r+   r,   r   r!   r8   r9   s   @r   r;   r;   $   s[        " " " " " " "
 
 
 
 
 
 
 
 
r   r;   c                      e Zd ZdddZdS )ArchTickNr   r   c                    | j         dz  }|pi }|j        dk    r$||d<   |                    | j        d|           d S ||d<   ||d<   |                    | j        |           d S )	Ng333333?AC1009const_widthxy)formatr    default_start_widthdefault_end_widthr    )r0   
dxfversionadd_lwpolyliner   add_polyline2d)r   r   r    widths       r   r!   zArchTick.render3   s    	D %2
x''(-J}%!!
4J "      16J,-.3J*+!!$*!DDDDDr   r   r)   r*   r+   r,   r!   r   r   r   rG   rG   2   s4        E E E E E E Er   rG   c                  ,     e Zd Zdd fdZdddZ xZS )ClosedArrowBlankr/   r   r"   r
   r0   r$   r#   c                    t                                          t          |t                               |                     ||           d S )Nr#   )r2   r   r   DEFAULT_ARROW_ANGLEr(   r3   s       r   r   zClosedArrowBlank.__init__B   sC    D0CDDDEEE

65!!!!!r   Nr   r   c                    |j         dk    r|                    | j        |          }n|                    | j        |          }|                    d           d S NrI   pointsr    TrP   rQ   r   rR   closer   r   r    polylines       r   r!   zClosedArrowBlank.renderF   p    x'',,zj -  HH ,,zj -  H 	tr   r5   r6   r   r)   rE   r9   s   @r   rV   rV   A   s[        " " " " " " "	 	 	 	 	 	 	 	 	r   rV   c                  "     e Zd Zdd fdZ xZS )ClosedArrowNr   r   c                    t                                          ||           | j        d                             | j        d                   }|                    | j        d         ||           d S )Nr   r=   r   rA   )r2   r!   r   lerprD   )r   r   r    	end_pointr4   s       r   r!   zClosedArrow.renderS   sl    vz***JqM&&tz!}55	*Q-Y: 	 	
 	
 	
 	
 	
r   r   r)   r*   r+   r,   r!   r8   r9   s   @r   rd   rd   R   sB        
 
 
 
 
 
 
 
 
 
 
r   rd   c                      e Zd ZdddZdS )ClosedArrowFilledNr   r   c                >    |                     | j        |           d S Nr\   	add_solidr   r   s      r   r!   zClosedArrowFilled.render]   s1    :! 	 	
 	
 	
 	
 	
r   r   r)   rT   r   r   r   rj   rj   \   s-        
 
 
 
 
 
 
r   rj   c                  0     e Zd Z	 	 dd fd	ZdddZ xZS )
_OpenArrowr/   r   arrow_angler$   r"   r
   r0   r#   c                    t          t          ||                    }|                    d           t                                          |           |                     ||           d S NrX   )r   )listr   appendr2   r   r(   )r   rq   r"   r0   r#   r]   r4   s         r   r   z_OpenArrow.__init__e   sc     j[999::g   

65!!!!!r   Nr   r   c                
   |j         dk    r%|                    | j        d d         |           n$|                    | j        d d         |           |                    | j        d         | j        d         |           d S )NrI   rt   r\   r   rA   )rP   rQ   r   rR   rD   r   s      r   r!   z_OpenArrow.renderq   s    x''!!CRCZ!PPPP!!CRCZ!PPP*Q-TZ^
 	 	
 	
 	
 	
 	
r   r5   )rq   r$   r"   r
   r0   r$   r#   r$   r   r)   rE   r9   s   @r   rp   rp   d   sc        
 
" 
" 
" 
" 
" 
" 
"
 
 
 
 
 
 
 
 
r   rp   c                  "     e Zd Zd	d
 fdZ xZS )	OpenArrowr/   r   r"   r
   r0   r$   r#   c                Z    t                                          t          |||           d S r   )r2   r   rY   r3   s       r   r   zOpenArrow.__init__|   s(    ,fdEBBBBBr   r5   r6   r7   r9   s   @r   ry   ry   {   sM        C C C C C C C C C C Cr   ry   c                  "     e Zd Zd	d
 fdZ xZS )OpenArrow30r/   r   r"   r
   r0   r$   r#   c                P    t                                          d|||           d S )N   r2   r   r3   s       r   r   zOpenArrow30.__init__   '    VT511111r   r5   r6   r7   r9   s   @r   r|   r|      B        2 2 2 2 2 2 2 2 2 2 2r   r|   c                  "     e Zd Zd	d
 fdZ xZS )OpenArrow90r/   r   r"   r
   r0   r$   r#   c                P    t                                          d|||           d S )NZ   r   r3   s       r   r   zOpenArrow90.__init__   r   r   r5   r6   r7   r9   s   @r   r   r      r   r   r   c                  ,     e Zd Zdd fdZdddZ xZS )Circler/   r   r"   r
   r0   r$   r#   c                    |dz  | _         t                                          t          d          t          | j          df          t          | df          g           |                     ||           d S )Nr=   r   r   r   )radiusr2   r   r   r(   r3   s       r   r   zCircle.__init__   sy    QhVt{lA&''teQZ  	
 	
 	
 	

65!!!!!r   Nr   r   c                V    |                     | j        d         | j        |           d S )Nr   centerr   r    )
add_circler   r   r   s      r   r!   zCircle.render   s8    :a= 	 	
 	
 	
 	
 	
r   r5   r6   r   r)   rE   r9   s   @r   r   r      s[        
" 
" 
" 
" 
" 
" 
"
 
 
 
 
 
 
 
 
r   r   c                  "     e Zd Zdd fdZ xZS )OriginNr   r   c                    t                                          ||           |                    | j        d         | j        d         |           d S )Nr   r=   rA   r2   r!   rD   r   r   r   r    r4   s      r   r!   zOrigin.render   S    vz****Q-TZ]z 	 	
 	
 	
 	
 	
r   r   r)   rh   r9   s   @r   r   r      B        
 
 
 
 
 
 
 
 
 
 
r   r   c                  "     e Zd Zdd fdZ xZS )CircleBlankNr   r   c                    t                                          ||           |                    | j        d         | j        d         |           d S Nr   r=   rA   r   r   s      r   r!   zCircleBlank.render   r   r   r   r)   rh   r9   s   @r   r   r      r   r   r   c                      e Zd ZdddZdS )Origin2Nr   r   c                   |                     | j        d         | j        |           |                     | j        d         | j        dz  |           |                    | j        d         | j        d         |           d S )Nr   r   r=   r   rA   )r   r   r   rD   r   s      r   r!   zOrigin2.render   s    :a= 	 	
 	
 	
 	:a=qZ 	 	
 	
 	
 	*Q-TZ]z 	 	
 	
 	
 	
 	
r   r   r)   rT   r   r   r   r   r      s-        	
 	
 	
 	
 	
 	
 	
r   r   c                      e Zd ZdddZdS )DotSmallNr   r   c                ~   | j         d         }t          | j        dz  df          }||z
  }||z   }|pi }|j        dk    r+| j        |d<   |                    |df|dfgdd|           d S | j        |d	<   | j        |d
<   |                    ||gd|          }d|d         j        _        d|d         j        _        d S )Nr   r=   rI   rJ   r   vbT)rL   r_   r    rM   rN   )r]   r_   r    )r   r   r   rP   rQ   rR   dxfbulge)r   r   r    r   dp1p2ra   s           r   r!   zDotSmall.render   s    A$+/1%&&aZaZ%2
x''(,J}%!!a2q'"%	 "      15J,-.2kJ*+,,Bxt
 -  H %&HQKO!$%HQKO!!!r   r   r)   rT   r   r   r   r   r      s-        & & & & & & &r   r   c                  "     e Zd Zdd fdZ xZS )DotNr   r   c                    |                     | j        d         | j        d         |           t                                          ||           d S r   )rD   r   r2   r!   r   s      r   r!   z
Dot.render   sQ    *Q-TZ]z 	 	
 	
 	
 	vz*****r   r   r)   rh   r9   s   @r   r   r      sB        + + + + + + + + + + +r   r   c                  ,     e Zd Zdd fdZdddZ xZS )Boxr/   r   r"   r
   r0   r$   r#   c                T   |dz  }t                                          t          | | f          t          |
 | f          t          |
 |
 f          t          | |
 f          t          | df          t          | df          g           |                     ||           d S )Nr=   r   r2   r   r   r(   r>   s        r   r   zBox.__init__   s    AXrcB3Z  rcB3Z  rcB3Z  rcB3Z  rc1XteQZ  		
 		
 		
 	

65!!!!!r   Nr   r   c                4   |j         dk    r%|                    | j        dd         |          }n$|                    | j        dd         |          }|                    d           |                    | j        d         | j        d         |           d S )NrI   r      r\   T   rA   )rP   rQ   r   rR   r_   rD   r`   s       r   r!   z
Box.render   s    x'',,z!A#: -  HH ,,z!A#: -  H 	t*Q-TZ]z 	 	
 	
 	
 	
 	
r   r5   r6   r   r)   rE   r9   s   @r   r   r      s[        " " " " " " "
 
 
 
 
 
 
 
 
r   r   c                      e Zd ZdddZdS )	BoxFilledNr   r   c                      fd}|                      |            |           |                     j        d          j        d         |           d S )Nc                 X    j         j        } | d         | d         | d         | d         gS )Nr   r      r=   )r   r   )vr   s    r   solid_orderz%BoxFilled.render.<locals>.solid_order   s,    
#AaD!A$!ad++r   r\   r   r   rA   )rn   rD   r   )r   r   r    r   s   `   r   r!   zBoxFilled.render   su    	, 	, 	, 	, 	, 	*EEE*Q-TZ]z 	 	
 	
 	
 	
 	
r   r   r)   rT   r   r   r   r   r      s-        
 
 
 
 
 
 
r   r   c                  ,     e Zd Zdd fdZdddZ xZS )Integralr/   r   r"   r
   r0   r$   r#   c                
   |dz  | _         || _        t                                          t	          d          t	          | j          df          t	          | j         df          g           |                     ||           d S )NgPp?r   r   )r   r#   r2   r   r   r(   r3   s       r   r   zIntegral.__init__  s    Y&
Vt{lA&''dk1%&&	
 	
 	
 	

65!!!!!r   Nr   r   c                    | j         }|                    | j        d         | j        d|z   ||           |                    | j        d         | j        d|z   d|z   |           d S )Nr   i)r   r   start_angle	end_angler    r=   r      )r#   add_arcr   r   )r   r   r    r#   s       r   r!   zIntegral.render  s    
:a=;e! 	 	
 	
 	
 	:a=;U
Ek! 	 	
 	
 	
 	
 	
r   r5   r6   r   r)   rE   r9   s   @r   r   r     s[        " " " " " " "
 
 
 
 
 
 
 
 
r   r   c                  0     e Zd ZdZdd fd	ZdddZ xZS )DatumTriangler   r/   r   r"   r
   r0   r$   r#   c                    d|z  }t                                          t          d|f          t          d| f          t          | df          g           |                     ||           d S )Ng?#vEy?r   r   )r   r"   r0   r#   r   r4   s        r   r   zDatumTriangle.__init__)  sw    $aVa!WteQZ  	
 	
 	
 	

65!!!!!r   Nr   r   c                    |j         dk    r|                    | j        |          }n|                    | j        |          }|                    d           d S r[   r^   r`   s       r   r!   zDatumTriangle.render5  rb   r   r5   r6   r   r)   )r*   r+   r,   REVERSE_ANGLEr   r!   r8   r9   s   @r   r   r   &  s`        M
" 
" 
" 
" 
" 
" 
"	 	 	 	 	 	 	 	 	r   r   c                      e Zd ZdddZdS )DatumTriangleFilledNr   r   c                >    |                     | j        |           d S rl   rm   r   s      r   r!   zDatumTriangleFilled.renderB  s#    
zBBBBBr   r   r)   rT   r   r   r   r   r   A  s4        C C C C C C Cr   r   c                  ,     e Zd Zdd fdZdddZ xZS )_EzArrowr/   r   r"   r
   r0   r$   r#   c                    t          t          |t                              }|                    d           t	                                          |           |                     ||           d S rs   )ru   r   rY   rv   r2   r   r(   )r   r"   r0   r#   r]   r4   s        r   r   z_EzArrow.__init__G  sb    fT)<===>>g   

65!!!!!r   Nr   r   c                    |j         dk    r%|                    | j        d d         |          }n$|                    | j        d d         |          }|                    d           d S )NrI   rt   rO   Tr^   r`   s       r   r!   z_EzArrow.renderM  s    x'',,
3B3J -  HH ,,
3B3J -  H 	tr   r5   r6   r   r)   rE   r9   s   @r   r   r   F  s[        " " " " " " "	 	 	 	 	 	 	 	 	r   r   c                  "     e Zd Zdd fdZ xZS )EzArrowBlankNr   r   c                    t                                          ||           |                    | j        d         | j        d         |           d S )Nrt   rA   r   r   s      r   r!   zEzArrowBlank.renderZ  sS    vz****R.djn 	 	
 	
 	
 	
 	
r   r   r)   rh   r9   s   @r   r   r   Y  r   r   r   c                  "     e Zd Zdd fdZ xZS )EzArrowNr   r   c                    t                                          ||           |                    | j        d         | j        d         |           d S )Nr   rt   rA   r   r   s      r   r!   zEzArrow.renderb  sS    vz****Q-TZ^
 	 	
 	
 	
 	
 	
r   r   r)   rh   r9   s   @r   r   r   a  r   r   r   c                      e Zd ZdddZdS )EzArrowFilledNr   r   c                    | j         j        }|                    |d         |d         |d         |d         g|           |                    | j         d         | j         d         |           d S )	Nr   r   r   r=   rO   r   rt   rA   )r   r   rn   rD   )r   r   r    r]   s       r   r!   zEzArrowFilled.renderj  s    $AYq	6!9fQi8Z 	 	
 	
 	
 	*R.djn 	 	
 	
 	
 	
 	
r   r   r)   rT   r   r   r   r   r   i  s-        
 
 
 
 
 
 
r   r   c                     e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZi eeeeeeeeeeeee	e e
e!ee"ee#ee$ee%ee&ee'ee(ee)ee*ee+ee,ee-ee.ee/ee0iZ1eeeeeehZ2eeeeeee	e
eeeeeeeeeeeehZ3eeehZ4e3e4z  Z5eeeeeehZ6d;dZ7d;dZ8d Z9d;dZ:d<d#Z;d<d$Z<d=d%Z=d>d'Z>e?d(d)fd*d+d?d4Z@e?d(d)fd*d+d?d5ZAe?d6d)fd*d+d@d8ZBdAd:ZCd*S )B_Arrows DOTDOTSMALLDOTBLANKORIGINORIGIN2OPENOPEN90OPEN30CLOSEDSMALLNONEOBLIQUE	BOXFILLEDBOXBLANKCLOSEDBLANKDATUMFILLED
DATUMBLANKINTEGRALARCHTICKEZ_ARROWEZ_ARROW_BLANKEZ_ARROW_FILLEDitemstrreturnboolc                8    |                                 | j        v S )z7Returns ``True`` if `item` is a standard AutoCAD arrow.)upper__acad__r   r   s     r   is_acad_arrowz_Arrows.is_acad_arrow  s    zz||t},,r   c                8    |                                 | j        v S )z6Returns ``True`` if `item` is a special `ezdxf` arrow.)r   	__ezdxf__r   s     r   is_ezdxf_arrowz_Arrows.is_ezdxf_arrow  s    zz||t~--r   c                    || j         v S )z>Returns ``True`` if the arrow `name` supports extension lines.)EXTENSIONS_ALLOWEDr   names     r   has_extension_linez_Arrows.has_extension_line  s    t...r   c                @    |dS |                                 | j        v S )z;Returns `True` if `item` is an arrow managed by this class.NF)r   __all_arrows__r   s     r   __contains__z_Arrows.__contains__  s"    <5zz||t222r   blocksr   r   c                    |                      |          }||vrH|                    |          }|                     |ddd          }|                    |ddd           |S )z.Creates the BLOCK definition for arrow `name`.r   r   r   )r"   r0   rotationBYBLOCK)colorlinetyperO   )
block_namenewarrow_shaper!   )r   r  r   r  blockarrows         r   create_blockz_Arrows.create_block  so    __T**
V##JJz**E$$T&q1$MMELLQI+N+NLOOOr   c                    |                      |          }|                     ||          }|                    |          }|j        S )z1Returns the BLOCK_RECORD handle for arrow `name`.)
arrow_namer  getblock_record_handle)r   r  r   r  r  r  s         r   arrow_handlez_Arrows.arrow_handle  sB    __T**
&&vz::


:&&((r   c                    |                      |          s|                                S |dk    rdS d|                                z   S )zReturns the block name.r   _CLOSEDFILLED_)r   r   r   s     r   r  z_Arrows.block_name  sK    !!$'' 
	&::<<RZZ #? %%r   r  c                    |                     d          r;|dd                                         }|dk    rdS |                     |          r|S |S )zReturns the arrow name.r  r   NCLOSEDFILLEDr   )
startswithr   r   )r   r  r   s      r   r  z_Arrows.arrow_name  sb      %% 	abb>''))D~%%r##D)) r   r/   r   NrO   r   r   r"   r
   r0   r$   r  r   c                   |                      |j        j        |          }t          |pi           }||d<   ||d<   ||d<   |                    |||           t          ||||          S )z.Insert arrow as block reference into `layout`.r  xscaleyscale)r"   r    r"   scaler  )r  docr  dictadd_blockrefconnection_point)r   r   r   r"   r0   r  r    r  s           r   insert_arrowz_Arrows.insert_arrow  s     &&vz'8$??
**++
!)
:#
8#
8Jv*MMMth
 
 
 	
r   c                   t          |pi           }|                     ||||          }|                    ||           t          ||||          S )z1Render arrow as basic DXF entities into `layout`.r  )r  r
  r!   r!  )r   r   r   r"   r0   r  r    r  s           r   render_arrowz_Arrows.render_arrow'  sc     **++
  vtX>>VZ(((th
 
 
 	
r   g      ?Iterator[DXFGraphic]c             #     K   ddl m} || v rA |            }t                              ||||||           t	          |          E d{V  dS dS )z5Returns all arrow components as virtual DXF entities.r   )VirtualLayout)r"   r0   r  r    N)ezdxf.layoutsr'  ARROWSr$  iter)r   r   r"   r0   r  r    r'  r   s           r   virtual_entitiesz_Arrows.virtual_entities9  s       	0/////4<<"]__F!%      F||######### <r   r   c                    |                                 }|| j        k    r|dz  }n|| j        k    r|dz  }| j        |         } ||||          S )zCReturns an instance of the shape management class for arrow `name`.g      ?g      ?)r   	dot_smalldot_smallblankCLASSES)r   r   r"   r0   r  clss         r   r
  z_Arrows.arrow_shapeQ  s`    
 zz||4>!!DLDDT(((CKDl4 s64***r   )r   r   r   r   )r  r   r   r   r   r   )r   r   r   r   )r  r   r   r   )r   r   r   r   r"   r
   r0   r$   r  r$   r   r   )
r   r   r"   r
   r0   r$   r  r$   r   r%  )
r   r   r"   r
   r0   r$   r  r$   r   r   )Dr*   r+   r,   closed_filleddotr-  	dot_blankorigin_indicatororigin_indicator_2openright_angleopen_30closedr.  noneoblique
box_filledboxclosed_blankdatum_triangle_filleddatum_triangleintegralarchitectural_tickez_arrowez_arrow_blankez_arrow_filledrj   r   r   r   r   r   ry   r   r|   rd   r   r.   r;   r   r   rV   r   r   r   rG   r   r   r   r/  ORIGIN_ZEROr   r   r   r   r   r   r   r  r  r  r  r  r	   r"  r$  r+  r
  r   r   r   r   r   t  si       M
CII"DKGFNDGJ
C L)!NH#H%N'O(S 	8 	;	
 	& 	G 	i 	[ 	 	 	 	j 	 	I 	S  	&!" 	#$ 	2(H'/ G6 	K 	)H. 	I
 	)N 	- - - -. . . ./ / /3 3 3 3   ) ) ) )& & & &    
 
 
 
 
 
 
4 
 
 
 
 
 
 
* $ $ $ $ $ $ $0+ + + + + +r   r   r/           r  r   r"   r
   r  r$   r  r   r   c                    t          |          }t                              |           t          j        v r|S |t          j        ||          z
  S )z.Returns the connection point for `arrow_name`.)r   r)  r  r   rF  from_deg_angle)r  r"   r  r  s       r   r!  r!  _  sH     &\\F$$(;;;+He<<<<r   c                V    t                               |           t          j        v rdS |S )z0Returns the scaled arrow length of `arrow_name`.rG  )r)  r  r   rF  )r  r  s     r   arrow_lengthrK  j  s(    $$(;;;sr   r)  N)r/   rG  )
r  r   r"   r
   r  r$   r  r$   r   r   )r/   )r  r   r  r$   r   r$   )5
__future__r   typingr   r   r   
ezdxf.mathr   r   r	   r
   formsr   r   ezdxf.entitiesr   ezdxf.sections.blocksr   ezdxf.eztypesr   rY   DEFAULT_BETAr   r.   r;   rG   rV   rd   rj   rp   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!  rK  r)  __annotations__r   r   r   <module>rU     s   # " " " " " " 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3 % % % % % % % % 0))))))333333////// 
	% 	% 	% 	% 	% 	% 	% 	%) ) ) ) ) ) ) )

 
 
 
 
I 
 
 
E E E E E} E E E    y   "
 
 
 
 
" 
 
 

 
 
 
 
 
 
 

 
 
 
 
 
 
 
.C C C C C
 C C C
2 2 2 2 2* 2 2 2
2 2 2 2 2* 2 2 2

 
 
 
 
Y 
 
 
&
 
 
 
 
V 
 
 

 
 
 
 
& 
 
 


 

 

 

 

f 

 

 

& & & & &v & & &2+ + + + +( + + +
 
 
 
 
) 
 
 
>	
 	
 	
 	
 	
 	
 	
 	

 
 
 
 
y 
 
 
@    I   6C C C C C- C C C
    y   &
 
 
 
 
8 
 
 

 
 
 
 
h 
 
 

 
 
 
 
H 
 
 
h+ h+ h+ h+ h+ h+ h+ h+X JM= = = = =     '))      r   