§
    OŠtjA-  ã            	       ó  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZmZ ddlmZmZmZ dd	lmZmZ dd
lmZmZmZmZ ddlmZ ddlmZ ddl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* ddl+m,Z,  G d„ d¦  «        Z- G d„ de-¦  «        Z.d„ Z/ e.d„ d„ ¦  «        Z0 edd„ g¬¦  «        Z1 edd„ g¬¦  «        Z2 ed¦  «        Z3 ed ¦  «        Z4 ed!d"„ g¬¦  «        Z5 e. ee4¦  «        e4z   ee4¦  «        ¦  «        Z6 e. ee5e4z  ¦  «        e4z  e5 ee5e4z  ¦  «        z  ¦  «        Z7e6e7fZ8 e.e3 ee4¦  «        z   ed#¦  «        z  e3 ee4¦  «        z  d$„ ¬%¦  «        Z9 e. ed#¦  «         ee4¦  «        z   ee4¦  «        ¦  «        Z: e.d&„ d'„ ¦  «        Z; G d(„ d)e.¦  «        Z< e<e
e¦  «        Z= e<ee%¦  «        Z> e<e e&¦  «        Z? e.d*„ d+„ ¦  «        Z@d,„ d-œd.„ZAd/„ ZBd0„ ZC e.eBeC¦  «        ZD e. e e
e3¦  «         e
e4¦  «        z   ¦  «         e"e3e4¦  «        ¦  «        ZE e. e e d#e3¦  «         e d#e4¦  «        z   ¦  «         e#e3e4¦  «         ed#¦  «        z  ¦  «        ZFe=e@e0e9e:fZGeGeEeFfz   e8z   ZHe>e?fZId1S )2aø  
Classes and functions useful for rewriting expressions for optimized code
generation. Some languages (or standards thereof), e.g. C99, offer specialized
math functions for better performance and/or precision.

Using the ``optimize`` function in this module, together with a collection of
rules (represented as instances of ``Optimization``), one can rewrite the
expressions for this purpose::

    >>> from sympy import Symbol, exp, log
    >>> from sympy.codegen.rewriting import optimize, optims_c99
    >>> x = Symbol('x')
    >>> optimize(3*exp(2*x) - 3, optims_c99)
    3*expm1(2*x)
    >>> optimize(exp(2*x) - 1 - exp(-33), optims_c99)
    expm1(2*x) - exp(-33)
    >>> optimize(log(3*x + 3), optims_c99)
    log1p(x) + log(3)
    >>> optimize(log(2*x + 3), optims_c99)
    log(2*x + 3)

The ``optims_c99`` imported above is tuple containing the following instances
(which may be imported from ``sympy.codegen.rewriting``):

- ``expm1_opt``
- ``log1p_opt``
- ``exp2_opt``
- ``log2_opt``
- ``log2const_opt``


é    )Ú
expand_log)ÚS)ÚWild)Úsign)ÚexpÚlog)ÚMaxÚMin)ÚcosÚsinÚsinc)ÚQÚask)Úlog1pÚlog2Úexp2Úexpm1)ÚMatrixSolve)ÚUnevaluatedExpr)ÚPow)Ú	logaddexpÚ
logaddexp2)Úcosm1Úpowm1)ÚMul)ÚMatrixSymbol)Úsiftc                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚOptimizationzí Abstract base class for rewriting optimization.

    Subclasses should implement ``__call__`` taking an expression
    as argument.

    Parameters
    ==========
    cost_function : callable returning number
    priority : number

    Né   c                 ó"   — || _         || _        d S ©N)Úcost_functionÚpriority)Úselfr#   r$   s      úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/codegen/rewriting.pyÚ__init__zOptimization.__init__@   s   € Ø*ˆÔØˆŒˆˆó    c                 ó.   — t          || j        ¬¦  «        S )N)Úkey)Úminr#   )r%   Úargss     r&   ÚcheapestzOptimization.cheapestD   s   € Ý�4˜TÔ/Ð0Ñ0Ô0Ð0r(   )Nr    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   r-   © r(   r&   r   r   4   sA   € € € € € ð
ð 
ðð ð ð ð1ð 1ð 1ð 1ð 1r(   r   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚReplaceOptimaÕ   Rewriting optimization calling replace on expressions.

    Explanation
    ===========

    The instance can be used as a function on expressions for which
    it will apply the ``replace`` method (see
    :meth:`sympy.core.basic.Basic.replace`).

    Parameters
    ==========

    query :
        First argument passed to replace.
    value :
        Second argument passed to replace.

    Examples
    ========

    >>> from sympy import Symbol
    >>> from sympy.codegen.rewriting import ReplaceOptim
    >>> from sympy.codegen.cfunctions import exp2
    >>> x = Symbol('x')
    >>> exp2_opt = ReplaceOptim(lambda p: p.is_Pow and p.base == 2,
    ...     lambda p: exp2(p.exp))
    >>> exp2_opt(2**x)
    exp2(x)

    c                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S )Nr2   )Úsuperr'   ÚqueryÚvalue)r%   r7   r8   ÚkwargsÚ	__class__s       €r&   r'   zReplaceOptim.__init__h   s2   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ØˆŒ
ˆ
ˆ
r(   c                 óB   — |                      | j        | j        ¦  «        S r"   )Úreplacer7   r8   )r%   Úexprs     r&   Ú__call__zReplaceOptim.__call__m   s   € Ø�|Š|˜DœJ¨¬
Ñ3Ô3Ð3r(   )r.   r/   r0   r1   r'   r>   Ú__classcell__©r:   s   @r&   r4   r4   H   sQ   ø€ € € € € ðð ð>ð ð ð ð ð
4ð 4ð 4ð 4ð 4ð 4ð 4r(   r4   c                 óˆ   — t          |d„ d¬¦  «        D ]-} || ¦  «        }|j        €|} Œ|                     | |¦  «        } Œ.| S )aë   Apply optimizations to an expression.

    Parameters
    ==========

    expr : expression
    optimizations : iterable of ``Optimization`` instances
        The optimizations will be sorted with respect to ``priority`` (highest first).

    Examples
    ========

    >>> from sympy import log, Symbol
    >>> from sympy.codegen.rewriting import optims_c99, optimize
    >>> x = Symbol('x')
    >>> optimize(log(x+3)/log(2) + log(x**2 + 1), optims_c99)
    log1p(x**2) + log2(x + 3)

    c                 ó   — | j         S r"   )r$   )Úopts    r&   ú<lambda>zoptimize.<locals>.<lambda>†   s   € °s´|€ r(   T)r*   Úreverse)Úsortedr#   r-   )r=   ÚoptimizationsÚoptimÚnew_exprs       r&   ÚoptimizerJ   q   s]   € õ* ˜Ð+CÐ+CÈTÐRÑRÔRð 2ð 2ˆØ�5˜‘;”;ˆØÔÐ&ØˆDˆDà—>’> $¨Ñ1Ô1ˆDˆDØ€Kr(   c                 ó&   — | j         o
| j        dk    S )Né   )Úis_PowÚbase©Úps    r&   rD   rD   �   s   € ˆaŒhÐ&˜1œ6 Qš;€ r(   c                 ó*   — t          | j        ¦  «        S r"   )r   r   rO   s    r&   rD   rD   ‘   s   € �d�1”5‰kŒk€ r(   Údc                 ó   — | j         S r"   )Úis_Dummy©Úxs    r&   rD   rD   •   s   €  Q¤Z€ r(   )Ú
propertiesÚuc                 ó"   — | j          o| j         S r"   )Ú	is_numberÚis_AddrU   s    r&   rD   rD   –   s   € ¨¬ _Ð%E¸Q¼X¸€ r(   ÚvÚwÚnc                 ó   — | j         S r"   ©rZ   rU   s    r&   rD   rD   ™   s   €  Q¤[€ r(   rL   c                 ó.   — |                       d„ ¦  «        S )Nc                 ó†   — | j         r| j        j        p.t          | t          t
          f¦  «        o| j        d         j         S )Nr   )rM   r   Úis_negativeÚ
isinstancer   r   r,   rZ   ©Úes    r&   rD   z<lambda>.<locals>.<lambda>¤   s>   € Ø	ŒÐ&�Q”UÔ&ð 	DÝ�q�3¥˜+Ñ&Ô&ÐB¨q¬v°a¬yÔ/BÐ+Bð r(   )Úcount)r=   s    r&   rD   rD   £   s%   € ÐSW×S]ÒS]ðEð EñTô T€ r(   ©r#   c                 óè   — t          | t          ¦  «        o]| j        d         j        oKt	          | j        d         j        ¦  «        dk    o(t          d„ | j        d         j        D ¦   «         ¦  «        S )Nr   rL   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S r"   )rd   r   )Ú.0Úts     r&   ú	<genexpr>z<lambda>.<locals>.<genexpr>°   s,   è è € ÐBÐB¨a•z !¥SÑ)Ô)ÐBÐBÐBÐBÐBÐBr(   )rd   r   r,   r[   ÚlenÚall©Úls    r&   rD   rD   ­   sm   € �z˜!�SÑ!Ô!ð CØ”6˜!”9Ô#ðCå�q”v˜a”y”~Ñ&Ô&¨!Ò+ðCõ ÐBÐB°1´6¸!´9´>ÐBÑBÔBÑBÔBð r(   c           
      óÄ   — t          d„ | j        d         j        D ¦   «         Ž t          t          t	          d„ | j        d         j        D ¦   «         Ž ¦  «        ¦  «        z   S )Nc                 ó(   — g | ]}|j         d          ‘ŒS ©r   ©r,   ©rk   rf   s     r&   ú
<listcomp>z<lambda>.<locals>.<listcomp>²   s   € Ð0Ð0Ð0˜AˆaŒf�QŒiÐ0Ð0Ð0r(   r   c                 ó(   — g | ]}|j         d          ‘ŒS rt   ru   rv   s     r&   rw   z<lambda>.<locals>.<listcomp>³   s   € Ð:Ð:Ð: a˜œ˜qœ	Ð:Ð:Ð:r(   )r	   r,   r   r   r
   rp   s    r&   rD   rD   ±   sZ   € ÝÐ0Ð0 ¤¨¤¤Ð0Ñ0Ô0Ð1Ý�c•#Ð:Ð:¨1¬6°!¬9¬>Ð:Ñ:Ô:Ð;Ñ<Ô<Ñ=Ô=ñ	>ð r(   c                   ó:   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zˆ fd„Zˆ xZS )ÚFuncMinusOneOptimaí  Specialization of ReplaceOptim for functions evaluating "f(x) - 1".

    Explanation
    ===========

    Numerical functions which go toward one as x go toward zero is often best
    implemented by a dedicated function in order to avoid catastrophic
    cancellation. One such example is ``expm1(x)`` in the C standard library
    which evaluates ``exp(x) - 1``. Such functions preserves many more
    significant digits when its argument is much smaller than one, compared
    to subtracting one afterwards.

    Parameters
    ==========

    func :
        The function which is subtracted by one.
    func_m_1 :
        The specialized function evaluating ``func(x) - 1``.
    opportunistic : bool
        When ``True``, apply the transformation as long as the magnitude of the
        remaining number terms decreases. When ``False``, only apply the
        transformation if it completely eliminates the number term.

    Examples
    ========

    >>> from sympy import symbols, exp
    >>> from sympy.codegen.rewriting import FuncMinusOneOptim
    >>> from sympy.codegen.cfunctions import expm1
    >>> x, y = symbols('x y')
    >>> expm1_opt = FuncMinusOneOptim(exp, expm1)
    >>> expm1_opt(exp(x) + 2*exp(5*y) - 3)
    expm1(x) + 2*expm1(5*y)


    Tc                 ó–   •‡‡— dŠt          ¦   «                              d„ | j        ˆˆfd„¬¦  «         || _        ‰| _        || _        d S )Né
   c                 ó   — | j         S r"   )r[   re   s    r&   rD   z,FuncMinusOneOptim.__init__.<locals>.<lambda>á   s   €  1¤8€ r(   c                 ó^   •— |                       ¦   «         ‰|                      ‰¦  «        z  z
  S r"   )Ú	count_opsrg   )r=   Úfunc_m_1Úweights    €€r&   rD   z,FuncMinusOneOptim.__init__.<locals>.<lambda>â   s(   ø€ °D·N²NÑ4DÔ4DÀvÈdÏjÊjÐYaÑNbÔNbÑGbÑ4b€ r(   rh   )r6   r'   Úreplace_in_AddÚfuncr€   Úopportunistic)r%   rƒ   r€   r„   r�   r:   s     ` @€r&   r'   zFuncMinusOneOptim.__init__ß   sd   øøø€ ØˆÝ‰Œ×ÒÐ+Ð+¨TÔ-@Ø'bÐ'bÐ'bÐ'bÐ'bð 	ñ 	dô 	dð 	dàˆŒ	Ø ˆŒØ*ˆÔÐÐr(   c                 ó’   ‡ — t          |j        d„ d¬¦  «        \  }}t          |¦  «        }t          |ˆ fd„d¬¦  «        \  }}|||fS )Nc                 ó   — | j         S r"   r`   ©Úargs    r&   rD   z4FuncMinusOneOptim._group_Add_terms.<locals>.<lambda>è   s   € °c´m€ r(   T©Úbinaryc                 ó8   •— |                       ‰j        ¦  «        S r"   )Úhasrƒ   ©rˆ   r%   s    €r&   rD   z4FuncMinusOneOptim._group_Add_terms.<locals>.<lambda>ê   s   ø€ ¸3¿7º7À4Ä9Ñ;MÔ;M€ r(   )r   r,   Úsum)r%   ÚaddÚnumbersÚnon_numÚnumsumÚterms_with_funcÚothers   `      r&   Ú_group_Add_termsz"FuncMinusOneOptim._group_Add_termsç   s^   ø€ Ý ¤Ð*CÐ*CÈDÐQÑQÔQÑˆ�Ý�W‘”ˆÝ!% gÐ/MÐ/MÐ/MÐ/MÐVZÐ![Ñ![Ô![Ñˆ˜Ø�¨Ð-Ð-r(   c                 óÀ  ‡ — ‰                       |¦  «        \  }}}|dk    r|S g g }}|D �]#}|j        rWt          |j        ˆ fd„d¬¦  «        \  }}	t	          |¦  «        dk    r$t	          |	¦  «        dk    r|d         |	d         }	}n$d}	n!|j        ‰ j        k    r|t          j        }	}nd}	|	�Š|	j        rƒt          |	¦  «        t          |¦  «         k    rb‰ j
        r$t          |	|z   ¦  «        t          |¦  «        k     }
n	|	|z   dk    }
|
r,||	z  }|                     |	 ‰ j        |j        Ž z  ¦  «         �Œ|                     |¦  «         �Œ% |j        |g|¢|¢|¢R Ž S )z1 passed as second argument to Basic.replace(...) r   c                 ó$   •— | j         ‰j         k    S r"   )rƒ   r�   s    €r&   rD   z2FuncMinusOneOptim.replace_in_Add.<locals>.<lambda>õ   s   ø€ ¸s¼xÈ4Ì9Ò?T€ r(   Tr‰   r    N)r•   Úis_Mulr   r,   rn   rƒ   r   ÚOnerZ   r   r„   ÚabsÚappendr€   )r%   rf   r’   r“   Úother_non_num_termsÚsubstitutedÚ	untouchedÚ	with_funcrƒ   ÚcoeffÚdo_substitutes   `          r&   r‚   z FuncMinusOneOptim.replace_in_Addí   sœ  ø€ à7;×7LÒ7LÈQÑ7OÔ7OÑ4ˆ�Ð!4Ø�QŠ;ˆ;ØˆHØ!# R�YˆØ(ð 	(ñ 	(ˆIØÔð 	Ý" 9¤>Ð3TÐ3TÐ3TÐ3TÐ]aÐbÑbÔb‘��eÝ�t‘9”9 ’>�>¥c¨%¡j¤j°A¢o oØ"& q¤'¨5°¬8˜%�D�Dà �E�EØ” 4¤9Ò,Ð,Ø'­¬�e��à�àÐ  U¤_Ð ½¸e¹¼ÍÈfÉÌÈÒ9UÐ9UØÔ%ð 6Ý$'¨¨f©Ñ$5Ô$5½¸F¹¼Ò$C�M�Mà$)¨&¡L°AÒ$5�Mà ð Ø˜e‘O�FØ×&Ò& u¨]¨T¬]¸D¼IÐ-FÑ'FÑGÔGÐGÙØ×Ò˜YÑ'Ô'Ð'Ñ'àˆqŒv�fÐM˜{ÐM¨YÐMÐ9LÐMÐMÐMÐMr(   c                 óØ   •— t          ¦   «                              |¦  «        }t          ¦   «                              |                     ¦   «         ¦  «        }|                      ||¦  «        S r"   )r6   r>   Úfactorr-   )r%   r=   Úalt1Úalt2r:   s       €r&   r>   zFuncMinusOneOptim.__call__  sM   ø€ Ý‰wŒw×Ò Ñ%Ô%ˆÝ‰wŒw×Ò §¢¡¤Ñ.Ô.ˆØ�}Š}˜T 4Ñ(Ô(Ð(r(   )T)	r.   r/   r0   r1   r'   r•   r‚   r>   r?   r@   s   @r&   rz   rz   ¸   sƒ   ø€ € € € € ð$ð $ðL+ð +ð +ð +ð +ð +ð.ð .ð .ðNð Nð Nð@)ð )ð )ð )ð )ð )ð )ð )ð )r(   rz   c                 ó,   — t          | t          ¦  «        S r"   )rd   r   re   s    r&   rD   rD     s   € �j˜�CÑ Ô € r(   c                 óÊ   — t          |                      t          d„ ¦  «        ¦  «                             t          t          dz   ¦  «        t	          t          ¦  «        ¦  «        S )Nc                 óD   — t          |                      ¦   «         ¦  «        S r"   )r   r£   r‡   s    r&   rD   z<lambda>.<locals>.<lambda>  s   € �˜SŸZšZ™\œ\Ñ*Ô*€ r(   r    )r   r<   r   Ú_ur   rp   s    r&   rD   rD     sK   € �j˜ŸšÝÐ*Ð*ñô ñ ô ç‚w�s•2�a‘4‰yŒy�%¥™)œ)Ñ$Ô$ð r(   c                 ó   — | j         S r"   )Ú	is_symbol)Úbs    r&   rD   rD     s   € ÀÄ€ r(   )Úbase_reqc                ó0   ‡ ‡— t          ˆˆ fd„d„ ¦  «        S )a   Creates an instance of :class:`ReplaceOptim` for expanding ``Pow``.

    Explanation
    ===========

    The requirements for expansions are that the base needs to be a symbol
    and the exponent needs to be an Integer (and be less than or equal to
    ``limit``).

    Parameters
    ==========

    limit : int
         The highest power which is expanded into multiplication.
    base_req : function returning bool
         Requirement on base for expansion to happen, default is to return
         the ``is_symbol`` attribute of the base.

    Examples
    ========

    >>> from sympy import Symbol, sin
    >>> from sympy.codegen.rewriting import create_expand_pow_optimization
    >>> x = Symbol('x')
    >>> expand_opt = create_expand_pow_optimization(3)
    >>> expand_opt(x**5 + x**3)
    x**5 + x*x*x
    >>> expand_opt(x**5 + x**3 + sin(x)**3)
    x**5 + sin(x)**3 + x*x*x
    >>> opt2 = create_expand_pow_optimization(3, base_req=lambda b: not b.is_Function)
    >>> opt2((x+1)**2 + sin(x)**2)
    sin(x)**2 + (x + 1)*(x + 1)

    c                 óz   •— | j         o3 ‰| j        ¦  «        o#| j        j        ot	          | j        ¦  «        ‰k    S r"   )rM   rN   r   Ú
is_Integerrš   )rf   r­   Úlimits    €€r&   rD   z0create_expand_pow_optimization.<locals>.<lambda>B  s7   ø€ �!”(Ð\˜x˜x¨¬Ñ/Ô/Ð\°A´EÔ4DÐ\ÍÈQÌUÉÌÐW\ÒI\€ r(   c                 ó¾   — | j         dk    r(t          t          | j        g| j         
 z  ddiŽ¦  «        n*dt          t          | j        g| j          z  ddiŽ¦  «        z  S )Nr   ÚevaluateFr    )r   r   r   rN   rO   s    r&   rD   z0create_expand_pow_optimization.<locals>.<lambda>C  sb   € ØHIÌÐPQÊ	È	�O�C 1¤6 (¨A¬E¨6¡/ÐC¸UÐCÐCÑDÔDÐDØ�o�c Q¤V H¨a¬e¨V¡OÐE¸uÐEÐEÑFÔFÑFð r(   )r4   )r±   r­   s   ``r&   Úcreate_expand_pow_optimizationr´     s2   øø€ õF Ø\Ð\Ð\Ð\Ð\ð	
ð 	
ñô ð r(   c                 ó&  — | j         r‰t          | j        ¦  «        dk    rq| j        \  }}|j        r`|j        d         dk    rO|j        }t          |t          ¦  «        r3t          t          t          j        |j        ¦  «        ¦  «        ¦  «        S dS )NrL   r    F)Ú	is_MatMulrn   r,   Ú
is_InverseÚshaperˆ   rd   r   Úboolr   r   Úfullrank©r=   ÚleftÚrightÚinv_args       r&   Ú_matinv_predicater¿   I  sƒ   € à„~ð 7�#˜dœi™.œ.¨AÒ-Ð-Ø”i‰ˆˆeØŒ?ð 	7˜uœ{¨1œ~°Ò2Ð2Ø”hˆGÝ˜'¥<Ñ0Ô0ð 7Ý�C¥¤
¨4¬8Ñ 4Ô 4Ñ5Ô5Ñ6Ô6Ð6àˆ5r(   c                 óD   — | j         \  }}|j        }t          ||¦  «        S r"   )r,   rˆ   r   r»   s       r&   Ú_matinv_transformrÁ   T  s$   € Ø”)�K€Dˆ%ØŒh€GÝ�w Ñ&Ô&Ð&r(   N)Jr1   Úsympy.core.functionr   Úsympy.core.singletonr   Úsympy.core.symbolr   Ú$sympy.functions.elementary.complexesr   Ú&sympy.functions.elementary.exponentialr   r   Ú(sympy.functions.elementary.miscellaneousr	   r
   Ú(sympy.functions.elementary.trigonometricr   r   r   Úsympy.assumptionsr   r   Úsympy.codegen.cfunctionsr   r   r   r   Úsympy.codegen.matrix_nodesr   Úsympy.core.exprr   Úsympy.core.powerr   Úsympy.codegen.numpy_nodesr   r   Úsympy.codegen.scipy_nodesr   r   Úsympy.core.mulr   Ú"sympy.matrices.expressions.matexprr   Úsympy.utilities.iterablesr   r   r4   rJ   Úexp2_optÚ_dr©   Ú_vÚ_wÚ_nÚ	sinc_opt1Ú	sinc_opt2Ú	sinc_optsÚlog2_optÚlog2const_optÚlogsumexp_2terms_optrz   Ú	expm1_optÚ	cosm1_optÚ	powm1_optÚ	log1p_optr´   r¿   rÁ   Ú
matinv_optÚlogaddexp_optÚlogaddexp2_optÚ
optims_c99Úoptims_numpyÚoptims_scipyr2   r(   r&   ú<module>rè      s  ððð ð@ +Ð *Ð *Ð *Ð *Ð *Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø +Ð +Ð +Ð +Ð +Ð +Ø  Ð  Ð  Ð  Ð  Ð  Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø *Ð *Ð *Ð *Ð *Ð *ð1ð 1ð 1ð 1ð 1ñ 1ô 1ð 1ð(&4ð &4ð &4ð &4ð &4�<ñ &4ô &4ð &4ðRð ð ð< ˆ<Ø&Ð&ØÐñô €ð 
€Tˆ#Ð/Ð/Ð0Ð1Ñ1Ô1€Ø	€Tˆ#ÐEÐEÐFÐGÑGÔG€Ø	€Tˆ#�Y„Y€Ø	€Tˆ#�Y„Y€Ø	€Tˆ#Ð0Ð0Ð1Ð2Ñ2Ô2€àˆLØ€Cˆ�G„GˆB�J���R‘”ñô €	ð ˆLØ€Cˆˆ2‰�J„Jˆr�M�2�d�d˜2˜b™5‘k”k‘>ñô €	ð ˜	Ð"€	àˆ<˜˜3˜3˜r™7œ7™
 3 3 q¡6¤6Ñ)¨2¨d¨d°2©h¬h©;ð Gð Gð ñ ô €ð �˜S˜S ™VœV D D¨¡H¤H™_¨c¨c°"©g¬gÑ6Ô6€à#�|ðDð Dðð ñ	ô 	Ð ðX)ð X)ð X)ð X)ð X)˜ñ X)ô X)ð X)ðv Ð˜c 5Ñ)Ô)€	ØÐ˜c 5Ñ)Ô)€	ØÐ˜c 5Ñ)Ô)€	àˆLØ Ð ð%ð %ñô €	ð 7LÐ6Kð (ð (ð (ð (ð (ðV	ð 	ð 	ð'ð 'ð 'ð ˆ\Ð+Ð->Ñ?Ô?€
ð �˜S˜S   R¡¤¨¨¨R©¬¡Ñ1Ô1°9°9¸RÀÑ3DÔ3DÑEÔE€Ø�˜c˜c # # a¨¡*¤*¨S¨S°°B©Z¬ZÑ"7Ñ8Ô8¸*¸*ÀRÈÑ:LÔ:LÈSÈSÐQRÉVÌVÑ:SÑTÔT€ð ˜ H¨h¸ÐF€
à˜]¨NÐ<Ñ<¸yÑH€à˜9Ð%€€€r(   