a
    kº”hñd  ã                   @   sî  d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZ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 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+m,Z, ddlm-Z- ddl.m/Z/ dd	l0m1Z1 dd
l2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH dd„ ZIe? JeKe¡dd„ ƒZLe? Jeeeeeeee¡dd„ ƒZLe? Me¡dd„ ƒZLe? Me¡dd„ ƒZLe? Me	¡dd„ ƒZLe? Me¡dd„ ƒZLe? Me ¡dd„ ƒZLe? Je3e7e5¡dd„ ƒZLe@ Me¡dd„ ƒZLe@ Me¡dd„ ƒZLe@ Jeeeeeee¡dd„ ƒZLe@ Me¡dd„ ƒZLe@ Jee¡d d„ ƒZLe@ Me	¡d!d„ ƒZLe@ Je#e$e%e+e,¡d"d„ ƒZLe@ Me'¡d#d„ ƒZLe@ Je"e&¡d$d„ ƒZLe@ Je!e)¡d%d„ ƒZLeA Me¡d&d„ ƒZLeA Me¡d'd„ ƒZLd(d)„ ZNeB Je eeee(eee*e¡	d*d„ ƒZLeB Jeee¡d+d„ ƒZLeB Me¡d,d„ ƒZLeB Me¡d-d„ ƒZLeB Me¡d.d„ ƒZLeB Me	¡d/d„ ƒZLeB Je%e+¡d0d„ ƒZLeB Me'¡d1d„ ƒZLeB Me)¡d2d„ ƒZLeB Je3e7e5¡d3d„ ƒZLeC MeO¡d4d„ ƒZLeC Jee¡d5d„ ƒZLeC Jeee	¡d6d„ ƒZLeD MeO¡d7d„ ƒZLeD Me¡d8d„ ƒZLeD Me¡d9d„ ƒZLeD Me	¡d:d„ ƒZLeD Je%e+¡d;d„ ƒZLeD Me'¡d<d„ ƒZLeD Me4¡d=d„ ƒZLeE Je e%e'e(ee)eee*e+¡
d>d„ ƒZLeE Jee¡d?d„ ƒZLeE Me¡d@d„ ƒZLeE Jee¡dAd„ ƒZLeE Me	¡dBd„ ƒZLeE Je3e7e5¡dCd„ ƒZLeE Me¡dDd„ ƒZLdEdF„ ZPeF Me¡dGd„ ƒZLeF Me¡dHd„ ƒZLeF Me¡dId„ ƒZLeF Me¡dJd„ ƒZLeF Me	¡dKd„ ƒZLeF Me)¡dLd„ ƒZLeF Me'¡dMd„ ƒZLeF Jee¡dNd„ ƒZLeF Me¡dOd„ ƒZLeG MeO¡dPd„ ƒZLeG Me¡dQd„ ƒZLeG Me¡dRd„ ƒZLeG Me	¡dSd„ ƒZLeG Me4¡dTd„ ƒZLeH Jeeeee¡dUd„ ƒZLeH Jeeeee¡dVd„ ƒZLeH Jee¡dWd„ ƒZLeH Me	¡dXd„ ƒZLeH Me¡dYd„ ƒZLeH Je#e$e%e+e,¡dZd„ ƒZLeH Me'¡d[d„ ƒZLeH Je"e&¡d\d„ ƒZLeH Je!e)¡d]d„ ƒZLd^S )_zL
Handlers for predicates related to set membership: integer, rational, etc.
é    )ÚQÚask)ÚAddÚBasicÚExprÚMulÚPowÚS)ÚAlgebraicNumberÚComplexInfinityÚExp1ÚFloatÚGoldenRatioÚImaginaryUnitÚInfinityÚIntegerÚNaNÚNegativeInfinityÚNumberÚNumberSymbolÚPiÚpiÚRationalÚTribonacciConstantÚE)Ú
fuzzy_bool)ÚAbsÚacosÚacotÚasinÚatanÚcosÚcotÚexpÚimÚlogÚreÚsinÚtan)ÚI)ÚEq)Ú	conjugate)ÚDeterminantÚ
MatrixBaseÚTrace)ÚMatrixElement)ÚMDNotImplementedErroré   )Útest_closed_groupÚask_allÚask_anyé   )
ÚIntegerPredicateÚRationalPredicateÚIrrationalPredicateÚRealPredicateÚExtendedRealPredicateÚHermitianPredicateÚComplexPredicateÚImaginaryPredicateÚAntihermitianPredicateÚAlgebraicPredicatec                 C   s>   z$t |  ¡ ƒ}| |  d¡s t‚W dS  ty8   Y dS 0 d S )Nr   TF)ÚintÚroundÚequalsÚ	TypeError©ÚexprÚassumptionsÚi© rH   úM/var/www/auris/lib/python3.9/site-packages/sympy/assumptions/handlers/sets.pyÚ_IntegerPredicate_number   s    rJ   c                 C   s   dS ©NTrH   ©rE   rF   rH   rH   rI   Ú_(   s    rM   c                 C   s   dS ©NFrH   rL   rH   rH   rI   rM   ,   s    c                 C   s   | j }|d u rt‚|S ©N)Ú
is_integerr0   ©rE   rF   ÚretrH   rH   rI   rM   1   s    c                 C   s   | j rt| |ƒS t| |tjƒS )zw
    * Integer + Integer       -> Integer
    * Integer + !Integer      -> !Integer
    * !Integer + !Integer -> ?
    )Ú	is_numberrJ   r2   r   ÚintegerrL   rH   rH   rI   rM   8   s    
c                 C   s¬   | j rt| |ƒS tt | j¡ t | j¡t | j¡|dr>dS tt | j¡t | j¡|dr¨t	t 
| j¡t | j¡t | j¡ @ t | jd ¡t | jd ¡|dr¨dS d S )N)rF   Tr1   )rS   rJ   r3   r   ÚzeroÚbaseZfiniter#   rT   r4   ÚpositiveZnonnegativerL   rH   rH   rI   rM   C   s    
*Hc                 C   s˜   | j rt| |ƒS d}| jD ]x}tt |¡|ƒs|jrj|jdkrVtt d|  ¡|ƒ  S |jd@  r’ dS qtt 	|¡|ƒrŒ|r„d}q’ dS q dS q|S )z™
    * Integer*Integer      -> Integer
    * Integer*Irrational   -> !Integer
    * Odd/Even             -> !Integer
    * Integer*Rational     -> ?
    Tr5   r1   NF)
rS   rJ   Úargsr   r   rT   Úis_RationalÚqÚevenÚ
irrational)rE   rF   Ú_outputÚargrH   rH   rI   rM   M   s     


c                 C   s   t t | jd ¡|ƒrdS d S ©Nr   T)r   r   rT   rX   rL   rH   rH   rI   rM   i   s    c                 C   s   t t | jd ¡|ƒS ©Nr   )r   r   Zinteger_elementsrX   rL   rH   rH   rI   rM   n   s    c                 C   s   dS rK   rH   rL   rH   rH   rI   rM   u   s    c                 C   s   d S rO   rH   rL   rH   rH   rI   rM   y   s    c                 C   s   dS rN   rH   rL   rH   rH   rI   rM   }   s    c                 C   s   | j }|d u rt‚|S rO   )Zis_rationalr0   rQ   rH   rH   rI   rM   ‚   s    c                 C   s$   | j r|  ¡ d rdS t| |tjƒS )z}
    * Rational + Rational     -> Rational
    * Rational + !Rational    -> !Rational
    * !Rational + !Rational   -> ?
    r1   F)rS   Úas_real_imagr2   r   ÚrationalrL   rH   rH   rI   rM   ‰   s    c                 C   sd  | j tkr4| j}tt |¡|ƒr0tt |¡|ƒS dS tt | j¡|ƒ}|rêtt | j ¡|ƒ}|r–tt | j ¡|ƒ}|du r~dS |r–tt | j¡ƒr–dS tt 	| j ¡|ƒdu r¾tt | j¡|ƒS tt 
| j ¡|ƒrætt | jd¡ƒrædS dS tt | j¡|ƒr`tt | j ¡|ƒr |du r dS tt | j ¡ƒrHtt | j¡ƒrHdS tt | j d¡ƒr`dS dS )z
    * Rational ** Integer      -> Rational
    * Irrational ** Rational   -> Irrational
    * Rational ** Irrational   -> ?
    NFTéÿÿÿÿr1   )rV   r   r#   r   r   rb   rU   rT   rW   Ú	algebraicr\   ÚeqÚprime)rE   rF   ÚxZis_exp_integerZis_base_rationalZis_base_zerorH   rH   rI   rM   •   s4    
$$c                 C   s0   | j d }tt |¡|ƒr,tt |¡ |ƒS d S r`   ©rX   r   r   rb   Únonzero©rE   rF   rg   rH   rH   rI   rM   ¸   s    
c                 C   s,   | j }tt |¡|ƒr(tt |¡ |ƒS d S rO   )r#   r   r   rb   ri   rj   rH   rH   rI   rM   ¾   s    c                 C   s"   | j d }tt |¡|ƒrdS d S ©Nr   F)rX   r   r   rb   rj   rH   rH   rI   rM   Ä   s    
c                 C   s4   | j d }tt |¡|ƒr0tt |d ¡ |ƒS d S ©Nr   r1   rh   rj   rH   rH   rI   rM   Ê   s    
c                 C   s   | j }|d u rt‚|S rO   )Zis_irrationalr0   rQ   rH   rH   rI   rM   Ó   s    c                 C   s>   t t | ¡|ƒ}|r6t t | ¡|ƒ}|d u r0d S | S |S d S rO   )r   r   Úrealrb   )rE   rF   Z_realZ	_rationalrH   rH   rI   rM   Ú   s    c                 C   s&   |   ¡ d  d¡}|jdkr"| S d S )Nr1   r5   ©ra   ZevalfZ_precrD   rH   rH   rI   Ú_RealPredicate_numberè   s    
ro   c                 C   s   dS rK   rH   rL   rH   rH   rI   rM   ñ   s    c                 C   s   dS rN   rH   rL   rH   rH   rI   rM   ö   s    c                 C   s   | j }|d u rt‚|S rO   )Zis_realr0   rQ   rH   rH   rI   rM   ú   s    c                 C   s   | j rt| |ƒS t| |tjƒS )zT
    * Real + Real              -> Real
    * Real + (Complex & !Real) -> !Real
    )rS   ro   r2   r   rm   rL   rH   rH   rI   rM     s    
c                 C   sX   | j rt| |ƒS d}| jD ]4}tt |¡|ƒr0qtt |¡|ƒrJ|dA }q qTq|S dS )zx
    * Real*Real               -> Real
    * Real*Imaginary          -> !Real
    * Imaginary*Imaginary     -> Real
    TN)rS   ro   rX   r   r   rm   Ú	imaginary)rE   rF   Úresultr^   rH   rH   rI   rM     s    


c                 C   s  | j rt| |ƒS | jtkr@tt | jt t	 ¡t 
| j¡B |ƒS | jjtks`| jjrÎ| jjtkrÎtt | jj¡|ƒrŠtt | j¡|ƒrŠdS | jjt t	 }tt d| ¡|ƒrÊtt 
tj| | j ¡|ƒS dS tt | j¡|ƒrtt | j¡|ƒrtt | j¡|ƒ}|dur| S dS tt | j¡|ƒrTtt t| jƒ¡|ƒ}|durT|S tt 
| j¡|ƒrtt 
| j¡|ƒrtt | j¡|ƒdur°tt | j¡|ƒr¬dS dS | jjrâtt | jj¡|ƒrâtt | j¡|ƒS tt | j¡|ƒrúdS tt | j¡|ƒrdS dS )aý  
    * Real**Integer              -> Real
    * Positive**Real             -> Real
    * Negative**Real             -> ?
    * Real**(Integer/Even)       -> Real if base is nonnegative
    * Real**(Integer/Odd)        -> Real
    * Imaginary**(Integer/Even)  -> Real
    * Imaginary**(Integer/Odd)   -> not Real
    * Imaginary**Real            -> ? since Real could be 0 (giving real)
                                    or 1 (giving imaginary)
    * b**Imaginary               -> Real if log(b) is imaginary and b != 0
                                    and exponent != integer multiple of
                                    I*pi/log(b)
    * Real**Real                 -> ? e.g. sqrt(-1) is imaginary and
                                    sqrt(2) is not
    Tr5   NF)rS   ro   rV   r   r   r   rT   r#   r)   r   rm   ÚfuncÚis_Powrp   r	   ÚNegativeOneÚoddr%   rU   rW   rY   r[   rZ   )rE   rF   rG   ru   ÚimlogrH   rH   rI   rM     sL    

 ÿ 


ÿc                 C   s   t t | jd ¡|ƒrdS d S r_   )r   r   rm   rX   rL   rH   rH   rI   rM   b  s    c                 C   s&   t t | jt t ¡t | j¡B |ƒS rO   )r   r   rT   r#   r)   r   rm   rL   rH   rH   rI   rM   g  s     ÿc                 C   s   t t | jd ¡|ƒS r`   )r   r   rW   rX   rL   rH   rH   rI   rM   m  s    c                 C   s   t t | jd ¡|ƒS r`   )r   r   Zreal_elementsrX   rL   rH   rH   rI   rM   q  s    c                 C   s8   t t | ¡t | ¡B t | ¡B t | ¡B t | ¡B |ƒS rO   )r   r   Znegative_infiniteÚnegativerU   rW   Zpositive_infiniterL   rH   rH   rI   rM   x  s    
ÿþýüûc                 C   s   dS rK   rH   rL   rH   rH   rI   rM     s    c                 C   s   t | |tjƒS rO   )r2   r   Zextended_realrL   rH   rH   rI   rM   …  s    c                 C   s   t | tƒrd S tt | ¡|ƒS rO   )Ú
isinstancer-   r   r   rm   rL   rH   rH   rI   rM   Œ  s    
c                 C   s   | j r
t‚t| |tjƒS )zZ
    * Hermitian + Hermitian  -> Hermitian
    * Hermitian + !Hermitian -> !Hermitian
    )rS   r0   r2   r   Ú	hermitianrL   rH   rH   rI   rM   ’  s    c                 C   sz   | j r
t‚d}d}| jD ]X}tt |¡|ƒr6|dA }ntt |¡|ƒsJ qvtt |¡ |ƒr|d7 }|dkr qvq|S dS )zÒ
    As long as there is at most only one noncommutative term:

    * Hermitian*Hermitian         -> Hermitian
    * Hermitian*Antihermitian     -> !Hermitian
    * Antihermitian*Antihermitian -> Hermitian
    r   Tr1   N©rS   r0   rX   r   r   Úantihermitianry   Zcommutative©rE   rF   Znccountrq   r^   rH   rH   rI   rM   œ  s    	

c                 C   s^   | j r
t‚| jtkr.tt | j¡|ƒr*dS t‚tt | j¡|ƒrVtt | j¡|ƒrVdS t‚dS )z+
    * Hermitian**Integer -> Hermitian
    TN)	rS   r0   rV   r   r   r   ry   r#   rT   rL   rH   rH   rI   rM   µ  s    
c                 C   s"   t t | jd ¡|ƒrdS t‚d S r_   )r   r   ry   rX   r0   rL   rH   rH   rI   rM   Å  s    c                 C   s   t t | j¡|ƒrdS t‚d S rK   )r   r   ry   r#   r0   rL   rH   rH   rI   rM   Ë  s    c              	   C   sz   | j \}}d}t|ƒD ]R}t||ƒD ]B}tt| ||f t| ||f ƒƒƒ}|d u rVd }|dkr$  dS q$q|d u rvt‚|S ©NTF©ÚshapeÚranger   r*   r+   r0   ©ÚmatrF   ÚrowsÚcolsZret_valrG   ÚjZcondrH   rH   rI   rM   Ñ  s    
"c                 C   s   dS rK   rH   rL   rH   rH   rI   rM   ã  s    c                 C   s   dS rN   rH   rL   rH   rH   rI   rM   è  s    c                 C   s   | j }|d u rt‚|S rO   )Z
is_complexr0   rQ   rH   rH   rI   rM   ì  s    c                 C   s   t | |tjƒS rO   )r2   r   ÚcomplexrL   rH   rH   rI   rM   ó  s    c                 C   s   | j tkrdS t| |tjƒS rK   )rV   r   r2   r   r†   rL   rH   rH   rI   rM   ÷  s    
c                 C   s   t t | jd ¡|ƒS r`   )r   r   Zcomplex_elementsrX   rL   rH   rH   rI   rM   ý  s    c                 C   s   d S rO   rH   rL   rH   rH   rI   rM     s    c                 C   s&   |   ¡ d  d¡}|jdkr"| S d S )Nr   r5   r1   rn   )rE   rF   ÚrrH   rH   rI   Ú_Imaginary_number  s    
rˆ   c                 C   s   dS rK   rH   rL   rH   rH   rI   rM     s    c                 C   s   | j }|d u rt‚|S rO   )Zis_imaginaryr0   rQ   rH   rH   rI   rM     s    c                 C   sv   | j rt| |ƒS d}| jD ]4}tt |¡|ƒr0qtt |¡|ƒrJ|d7 }q qrq|dkr\dS |dt| jƒfv rrdS dS )zy
    * Imaginary + Imaginary -> Imaginary
    * Imaginary + Complex   -> ?
    * Imaginary + Real      -> !Imaginary
    r   r1   TFN©rS   rˆ   rX   r   r   rp   rm   Úlen)rE   rF   Úrealsr^   rH   rH   rI   rM     s    


c                 C   sl   | j rt| |ƒS d}d}| jD ]2}tt |¡|ƒr<|dA }qtt |¡|ƒs qhq|t| jƒkrddS |S dS )zN
    * Real*Imaginary      -> Imaginary
    * Imaginary*Imaginary -> Real
    Fr   TNr‰   )rE   rF   rq   r‹   r^   rH   rH   rI   rM   5  s    


c                 C   sø  | j rt| |ƒS | jtkrH| jt t }tt 	d| ¡t 	|¡ @ |ƒS | jj
tksh| jjrÒ| jjtkrÒtt | jj¡|ƒrÒtt | j¡|ƒr’dS | jjt t }tt 	d| ¡|ƒrÒtt tj| | j ¡|ƒS tt | j¡|ƒrtt 	| j¡|ƒrtt | j¡|ƒ}|dur|S dS tt | j¡|ƒrVtt t| jƒ¡|ƒ}|durVdS tt | j¡t | j¡@ |ƒrôtt | j¡|ƒrŽdS tt | j¡|ƒ}|sª|S tt 	| j¡|ƒrÂdS tt 	d| j ¡|ƒ}|rðtt | j¡|ƒS |S dS )a¨  
    * Imaginary**Odd        -> Imaginary
    * Imaginary**Even       -> Real
    * b**Imaginary          -> !Imaginary if exponent is an integer
                               multiple of I*pi/log(b)
    * Imaginary**Real       -> ?
    * Positive**Real        -> Real
    * Negative**Integer     -> Real
    * Negative**(Integer/2) -> Imaginary
    * Negative**Real        -> not Imaginary if exponent is not Rational
    r5   FN)rS   rˆ   rV   r   r#   r)   r   r   r   rT   rr   rs   rp   r	   rt   ru   r%   rm   rW   rb   rw   )rE   rF   ÚarG   ru   rv   ZratZhalfrH   rH   rI   rM   I  sD    

  

 c                 C   s    t t | jd ¡|ƒr4t t | jd ¡|ƒr0dS d S | jd jtks`| jd jrz| jd jt	krz| jd jt
t
 fv rzdS t t | jd ¡|ƒ}|du rœdS d S )Nr   FT)r   r   rm   rX   rW   rr   r#   rs   rV   r   r)   rp   )rE   rF   r$   rH   rH   rI   rM     s    ,c                 C   s.   | j t t }tt d| ¡t |¡ @ |ƒS )Nr5   )r#   r)   r   r   r   rT   )rE   rF   rŒ   rH   rH   rI   rM   ’  s    c                 C   s   |   ¡ d dk S )Nr1   r   )ra   rL   rH   rH   rI   rM   —  s    c                 C   s   d S rO   rH   rL   rH   rH   rI   rM   ›  s    c                 C   s2   t | tƒrd S tt | ¡|ƒr"dS tt | ¡|ƒS rK   )rx   r-   r   r   rU   rp   rL   rH   rH   rI   rM   ¢  s
    
c                 C   s   | j r
t‚t| |tjƒS )zr
    * Antihermitian + Antihermitian  -> Antihermitian
    * Antihermitian + !Antihermitian -> !Antihermitian
    )rS   r0   r2   r   r{   rL   rH   rH   rI   rM   ª  s    c                 C   sz   | j r
t‚d}d}| jD ]X}tt |¡|ƒr6|dA }ntt |¡|ƒsJ qvtt |¡ |ƒr|d7 }|dkr qvq|S dS )zß
    As long as there is at most only one noncommutative term:

    * Hermitian*Hermitian         -> !Antihermitian
    * Hermitian*Antihermitian     -> Antihermitian
    * Antihermitian*Antihermitian -> !Antihermitian
    r   FTr1   Nrz   r|   rH   rH   rI   rM   ´  s    	

c                 C   sz   | j r
t‚tt | j¡|ƒr4tt | j¡|ƒrrdS n>tt | j¡|ƒrrtt 	| j¡|ƒr\dS tt 
| j¡|ƒrrdS t‚dS )zˆ
    * Hermitian**Integer  -> !Antihermitian
    * Antihermitian**Even -> !Antihermitian
    * Antihermitian**Odd  -> Antihermitian
    FTN)rS   r0   r   r   ry   rV   rT   r#   r{   r[   ru   rL   rH   rH   rI   rM   Í  s    c              	   C   s|   | j \}}d}t|ƒD ]T}t||ƒD ]D}tt| ||f t| ||f ƒ ƒƒ}|d u rXd }|dkr$  dS q$q|d u rxt‚|S r}   r~   r   rH   rH   rI   rM   à  s    
$c                 C   s   dS rK   rH   rL   rH   rH   rI   rM   ò  s    c                 C   s   dS rN   rH   rL   rH   rH   rI   rM   ÷  s    c                 C   s   t | |tjƒS rO   )r2   r   rd   rL   rH   rH   rI   rM   ü  s    c                 C   sà   | j tkr4tt | j¡|ƒr0tt | j¡ |ƒS d S | j tkrjtt | j¡|ƒrftt 	| j¡|ƒrfdS d S tt 
| j¡|ƒ}tt | j ¡|ƒ}tt | j¡|ƒ}|rÜ|rÜ|r°dS tt | j d¡t | j d¡@ ƒrÜ|du rÜdS d S )NFTr   r1   )rV   r   r   r   rd   r#   ri   r   rT   rW   rb   Úne)rE   rF   Zexp_rationalZbase_algebraicZexp_algebraicrH   rH   rI   rM      s     

$(c                 C   s
   | j dkS r`   )rZ   rL   rH   rH   rI   rM     s    c                 C   s0   | j d }tt |¡|ƒr,tt |¡ |ƒS d S r`   ©rX   r   r   rd   ri   rj   rH   rH   rI   rM     s    
c                 C   s,   | j }tt |¡|ƒr(tt |¡ |ƒS d S rO   )r#   r   r   rd   ri   rj   rH   rH   rI   rM      s    c                 C   s"   | j d }tt |¡|ƒrdS d S rk   )rX   r   r   rd   rj   rH   rH   rI   rM   &  s    
c                 C   s4   | j d }tt |¡|ƒr0tt |d ¡ |ƒS d S rl   rŽ   rj   rH   rH   rI   rM   ,  s    
N)QÚ__doc__Zsympy.assumptionsr   r   Z
sympy.corer   r   r   r   r   r	   Zsympy.core.numbersr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.core.logicr   Zsympy.functionsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Zsympy.core.relationalr*   Z$sympy.functions.elementary.complexesr+   Zsympy.matricesr,   r-   r.   Z"sympy.matrices.expressions.matexprr/   Zsympy.multipledispatchr0   Úcommonr2   r3   r4   Zpredicates.setsr6   r7   r8   r9   r:   r;   r<   r=   r>   r?   rJ   Zregister_manyr@   rM   Úregisterro   Úobjectrˆ   rH   rH   rH   rI   Ú<module>   sP   L<0


ÿ




	




ÿ




"







	ÿ



	

B










	





ÿ








	




7






	



ÿ

ÿ









