§
    bŠtj™7  ã                   ó¼  — d Z ddlmZ ddlmZmZ ddlZddlm	Z	m
Z
 g d¢ZdZdZd	„  ee¦  «        D ¦   «         Zd
„ Z e	d¦  «        ej        dd„¦   «         ¦   «         Zej        d„ ¦   «         Z e	d¦  «         ej        d¬¦  «        d„ ¦   «         ¦   «         Z e	d¦  «        ej        d„ ¦   «         ¦   «         Z e	d¦  «        ej        d„ ¦   «         ¦   «         ZdS )z*Functions for analyzing triads of a graph.é    )Údefaultdict)ÚcombinationsÚpermutationsN)Únot_implemented_forÚpy_random_state)Útriadic_censusÚis_triadÚ
all_triadsÚtriads_by_typeÚ
triad_type)@é   é   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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   é   )Ú003Ú012Ú102Ú021DÚ021UÚ021CÚ111DÚ111UÚ030TÚ030CÚ201Ú120DÚ120UÚ120CÚ210Ú300c                 ó6   — i | ]\  }}|t           |d z
           “ŒS )r   )ÚTRIAD_NAMES)Ú.0ÚiÚcodes      úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/networkx/algorithms/triads.pyú
<dictcomp>r3   r   s'   € ÐOÐOÐO±°°4�1•k $¨¡(Ô+ÐOÐOÐOó    c                 ón   ‡ — ||df||df||df||df||df||dff}t          ˆ fd„|D ¦   «         ¦  «        S )zñReturns the integer code of the given triad.

    This is some fancy magic that comes from Batagelj and Mrvar's paper. It
    treats each edge joining a pair of `v`, `u`, and `w` as a bit in
    the binary representation of an integer.

    r   r   r   r   r   é    c              3   ó8   •K  — | ]\  }}}|‰|         v ¯|V — Œd S ©N© )r/   ÚuÚvÚxÚGs       €r2   ú	<genexpr>z_tricode.<locals>.<genexpr>~   s1   øè è € Ð4Ð4‘W�Q˜˜1¨!¨q°¬t¨)¨)ˆq¨)¨)¨)¨)Ð4Ð4r4   )Úsum)r=   r;   r:   ÚwÚcomboss   `    r2   Ú_tricoderB   u   s^   ø€ ð �!�Qˆi˜!˜Q ˜ Q¨¨1 I°°1°a¨y¸1¸aÀ¸*ÀqÈ!ÈRÀjÐQ€FÝÐ4Ð4Ð4Ð4 Ð4Ñ4Ô4Ñ4Ô4Ð4r4   Ú
undirectedc           	      óœ  ‡ ‡‡‡‡— t          ‰                      |¦  «        ¦  «        Š|�/t          |¦  «        t          ‰¦  «        k    rt          d¦  «        ‚t          ‰ ¦  «        Š‰t          ‰¦  «        z
  }d„ t	          ‰¦  «        D ¦   «         }|r8‰ j        ‰z
  }|                     ˆfd„t	          |¦  «        D ¦   «         ¦  «         ˆ fd„‰ D ¦   «         }ˆ fd„‰ D ¦   «         Š|rPˆ fd„|D ¦   «         Št          ˆˆfd„|D ¦   «         ¦  «        }|d	z  }t          ˆˆfd
„|D ¦   «         ¦  «        }|d	z  }	d„ t          D ¦   «         }
‰D �]®}||         }‰|         }|rdx}x}x}}|D �]Y}||         ||         k    rŒ||         }||z  ||hz
  }|D ]m}||         ||         k     s,||         ||         cxk     r||         k     r:n Œ6|||         vr-t          ‰ |||¦  «        }|
t          |         xx         dz  cc<   Œn||v r$|
dxx         ‰t          |¦  «        z
  d	z
  z  cc<   n#|
dxx         ‰t          |¦  «        z
  d	z
  z  cc<   |rt|‰vrp‰|         }|t          ||‰z
  z  ¦  «        z  }|t          ||z
  ‰z
  ¦  «        z  }‰|         }|t          ||‰z
  z  ¦  «        z  }|t          ||z
  ‰z
  ¦  «        z  }�Œ[|r2|
dxx         |||d	z  z   z
  z  cc<   |
dxx         |	||d	z  z   z
  z  cc<   �Œ°‰‰dz
  z  ‰d	z
  z  dz  }||dz
  z  |d	z
  z  dz  }||z
  }|t          |
                     ¦   «         ¦  «        z
  |
d<   |
S )am  Determines the triadic census of a directed graph.

    The triadic census is a count of how many of the 16 possible types of
    triads are present in a directed graph. If a list of nodes is passed, then
    only those triads are taken into account which have elements of nodelist in them.

    Parameters
    ----------
    G : digraph
       A NetworkX DiGraph
    nodelist : list
        List of nodes for which you want to calculate triadic census

    Returns
    -------
    census : dict
       Dictionary with triad type as keys and number of occurrences as values.

    Examples
    --------
    >>> G = nx.DiGraph([(1, 2), (2, 3), (3, 1), (3, 4), (4, 1), (4, 2)])
    >>> triadic_census = nx.triadic_census(G)
    >>> for key, value in triadic_census.items():
    ...     print(f"{key}: {value}")
    003: 0
    012: 0
    102: 0
    021D: 0
    021U: 0
    021C: 0
    111D: 0
    111U: 0
    030T: 2
    030C: 2
    201: 0
    120D: 0
    120U: 0
    120C: 0
    210: 0
    300: 0

    Notes
    -----
    This algorithm has complexity $O(m)$ where $m$ is the number of edges in
    the graph.

    For undirected graphs, the triadic census can be computed by first converting
    the graph into a directed graph using the ``G.to_directed()`` method.
    After this conversion, only the triad types 003, 102, 201 and 300 will be
    present in the undirected scenario.

    Raises
    ------
    ValueError
        If `nodelist` contains duplicate nodes or nodes not in `G`.
        If you want to ignore this you can preprocess with `set(nodelist) & G.nodes`

    See also
    --------
    triad_graph

    References
    ----------
    .. [1] Vladimir Batagelj and Andrej Mrvar, A subquadratic triad census
        algorithm for large sparse networks with small maximum degree,
        University of Ljubljana,
        http://vlado.fmf.uni-lj.si/pub/networks/doc/triads/triads.pdf

    Nz3nodelist includes duplicate nodes or nodes not in Gc                 ó   — i | ]\  }}||“Œ	S r9   r9   )r/   r0   Úns      r2   r3   z"triadic_census.<locals>.<dictcomp>Ñ   s   € Ð-Ð-Ð-‘$�!�QˆˆAÐ-Ð-Ð-r4   c              3   ó,   •K  — | ]\  }}||‰z   fV — Œd S r8   r9   )r/   r0   rF   ÚNs      €r2   r>   z!triadic_census.<locals>.<genexpr>Õ   s/   øè è € Ð?Ð?¡  1�!�Q˜‘U�Ð?Ð?Ð?Ð?Ð?Ð?r4   c                 ó�   •— i | ]B}|‰j         |                              ¦   «         ‰j        |                              ¦   «         z  “ŒCS r9   ©ÚpredÚkeysÚsucc©r/   rF   r=   s     €r2   r3   z"triadic_census.<locals>.<dictcomp>Ú   s@   ø€ Ð>Ð>Ð>°qˆAˆqŒv�aŒy�~Š~ÑÔ !¤&¨¤)§.¢.Ñ"2Ô"2Ñ2Ð>Ð>Ð>r4   c                 ó�   •— i | ]B}|‰j         |                              ¦   «         ‰j        |                              ¦   «         z  “ŒCS r9   rJ   rN   s     €r2   r3   z"triadic_census.<locals>.<dictcomp>Û   s@   ø€ ÐBÐBÐB¸1��1”6˜!”9—>’>Ñ#Ô# a¤f¨Q¤i§n¢nÑ&6Ô&6Ñ6ÐBÐBÐBr4   c                 ó�   •— i | ]B}|‰j         |                              ¦   «         ‰j        |                              ¦   «         z  “ŒCS r9   rJ   rN   s     €r2   r3   z"triadic_census.<locals>.<dictcomp>Þ   s@   ø€ ÐPÐPÐP¸q�A�q”v˜a”y—~’~Ñ'Ô'¨!¬&°¬)¯.ª.Ñ*:Ô*:Ñ:ÐPÐPÐPr4   c              3   ó:   •K  — | ]}‰|         D ]
}|‰v¯d V — ŒŒdS ©r   Nr9   )r/   rF   ÚnbrÚnodesetÚsgl_nbrss      €€r2   r>   z!triadic_census.<locals>.<genexpr>à   ó>   øè è € ÐVÐV˜°H¸Q´KÐVÐV¨SÀ3ÈgÐCUÐCU�!ÐCUÐCUÐCUÐCUÐCUÐVÐVr4   r   c              3   ó:   •K  — | ]}‰|         D ]
}|‰v¯d V — ŒŒdS rR   r9   )r/   rF   rS   Údbl_nbrsrT   s      €€r2   r>   z!triadic_census.<locals>.<genexpr>â   rV   r4   c                 ó   — i | ]}|d “ŒS )r   r9   )r/   Únames     r2   r3   z"triadic_census.<locals>.<dictcomp>æ   s   € Ð.Ð.Ð.˜$ˆd�AÐ.Ð.Ð.r4   r   r   r   r   r   r   )ÚsetÚnbunch_iterÚlenÚ
ValueErrorÚ	enumerateÚnodesÚupdater?   r.   rB   ÚTRICODE_TO_NAMEÚvalues) r=   ÚnodelistÚNnotÚmÚnot_nodesetÚnbrsÚsglÚsgl_edges_outsideÚdblÚdbl_edges_outsideÚcensusr;   ÚvnbrsÚ	dbl_vnbrsÚsgl_unbrs_bdyÚsgl_unbrs_outÚdbl_unbrs_bdyÚdbl_unbrs_outr:   ÚunbrsÚ	neighborsr@   r1   Ú	sgl_unbrsÚ	dbl_unbrsÚtotal_trianglesÚtriangles_without_nodesetÚtotal_censusrH   rX   rT   rU   s    `                           @@@@r2   r   r   �   sQ  øøøøø€ õP �!—-’- Ñ)Ô)Ñ*Ô*€GØÐ¥ H¡¤µ°W±´Ò =Ð =ÝÐNÑOÔOÐOåˆA‰Œ€AØ�s�7‰|Œ|Ñ€Dð 	.Ð-�) GÑ,Ô,Ð-Ñ-Ô-€AØð @à”g Ñ'ˆØ	�ŠÐ?Ð?Ð?Ð?­	°+Ñ(>Ô(>Ð?Ñ?Ô?Ñ?Ô?Ð?ð
 ?Ð>Ð>Ð>¸AÐ>Ñ>Ô>€DØBÐBÐBÐBÀÐBÑBÔB€Hàð %ØPÐPÐPÐPÀKÐPÑPÔPˆåÐVÐVÐVÐVÐV˜[ÐVÑVÔVÑVÔVˆØ 1™HÐÝÐVÐVÐVÐVÐV˜[ÐVÑVÔVÑVÔVˆØ 1™HÐð /Ð.¥+Ð.Ñ.Ô.€Fàð %Vñ %VˆØ�Q”ˆØ˜Q”Kˆ	Øð 	NàLMÐMˆMÐM˜MÐM¨M¸MØð 	Bñ 	BˆAØ�Œt�q˜”tŠ|ˆ|ØØ˜”GˆEØ ™¨1¨a¨&Ñ0ˆIàð 7ð 7�Ø�Q”4˜!˜Aœ$’;�; 1 Q¤4¨!¨A¬$Ð#5Ð#5Ò#5Ð#5°°1´Ò#5Ð#5Ð#5Ð#5Ð#5¸!À4ÈÄ7Ð:JÐ:JÝ# A q¨!¨QÑ/Ô/�DØ�?¨4Ô0Ð1Ð1Ô1°QÑ6Ð1Ð1Ñ1øð �Iˆ~ˆ~Ø�u��” ¥S¨¡^¤^Ñ!3°aÑ!7Ñ7��‘�à�u��” ¥S¨¡^¤^Ñ!3°aÑ!7Ñ7��‘ð
 ð B˜ Ð(Ð(Ø$ QœK�	Ø¥ Y°¸±Ñ%@Ñ!AÔ!AÑA�Ø¥ Y°Ñ%6¸Ñ%@Ñ!AÔ!AÑA�Ø$ QœK�	Ø¥ Y°¸±Ñ%@Ñ!AÔ!AÑA�Ø¥ Y°Ñ%6¸Ñ%@Ñ!AÔ!AÑA�ùàð 	Và�5ˆMˆMŒMÐ.°-À-ÐSTÑBTÑ2TÑUÑUˆMˆM‰MØ�5ˆMˆMŒMÐ.°-À-ÐSTÑBTÑ2TÑUÑUˆMˆM‰Mùð ˜A ™E‘{ a¨!¡eÑ,°Ñ2€OØ!%¨°©Ñ!2°d¸Q±hÑ!?ÀAÑ EÐØ"Ð%>Ñ>€LØ ¥3 v§}¢}¡¤Ñ#7Ô#7Ñ7€Fˆ5�Mà€Mr4   c                 óò   ‡ — t          ‰ t          j        ¦  «        r[‰                      ¦   «         dk    rCt          j        ‰ ¦  «        r/t          ˆ fd„‰                      ¦   «         D ¦   «         ¦  «        sdS dS )at  Returns True if the graph G is a triad, else False.

    Parameters
    ----------
    G : graph
       A NetworkX Graph

    Returns
    -------
    istriad : boolean
       Whether G is a valid triad

    Examples
    --------
    >>> G = nx.DiGraph([(1, 2), (2, 3), (3, 1)])
    >>> nx.is_triad(G)
    True
    >>> G.add_edge(0, 1)
    >>> nx.is_triad(G)
    False
    r   c              3   óH   •K  — | ]}||f‰                      ¦   «         v V — Œd S r8   )ÚedgesrN   s     €r2   r>   zis_triad.<locals>.<genexpr>2  s4   øè è € Ð>Ð>¨q˜˜1�v §¢¡¤Ð*Ð>Ð>Ð>Ð>Ð>Ð>r4   TF)Ú
isinstanceÚnxÚGraphÚorderÚis_directedÚanyr`   )r=   s   `r2   r	   r	     so   ø€ õ. �!•R”XÑÔð Ø�7Š7‰9Œ9˜Š>ˆ>�bœn¨QÑ/Ô/ˆ>ÝÐ>Ð>Ð>Ð>°A·G²G±I´IÐ>Ñ>Ô>Ñ>Ô>ð Ø�tØˆ5r4   T)Úreturns_graphc              #   óª   K  — t          |                      ¦   «         d¦  «        }|D ]+}|                      |¦  «                             ¦   «         V — Œ,dS )a  A generator of all possible triads in G.

    Parameters
    ----------
    G : digraph
       A NetworkX DiGraph

    Returns
    -------
    all_triads : generator of DiGraphs
       Generator of triads (order-3 DiGraphs)

    Examples
    --------
    >>> G = nx.DiGraph([(1, 2), (2, 3), (3, 1), (3, 4), (4, 1), (4, 2)])
    >>> for triad in nx.all_triads(G):
    ...     print(triad.edges)
    [(1, 2), (2, 3), (3, 1)]
    [(1, 2), (4, 1), (4, 2)]
    [(3, 1), (3, 4), (4, 1)]
    [(2, 3), (3, 4), (4, 2)]

    r   N)r   r`   ÚsubgraphÚcopy)r=   ÚtripletsÚtriplets      r2   r
   r
   7  s_   è è € õ4 ˜AŸGšG™IœI qÑ)Ô)€HØð )ð )ˆØ�jŠj˜Ñ!Ô!×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(ð)ð )r4   c                 óª   — t          | ¦  «        }t          t          ¦  «        }|D ],}t          |¦  «        }||                              |¦  «         Œ-|S )aþ  Returns a list of all triads for each triad type in a directed graph.
    There are exactly 16 different types of triads possible. Suppose 1, 2, 3 are three
    nodes, they will be classified as a particular triad type if their connections
    are as follows:

    - 003: 1, 2, 3
    - 012: 1 -> 2, 3
    - 102: 1 <-> 2, 3
    - 021D: 1 <- 2 -> 3
    - 021U: 1 -> 2 <- 3
    - 021C: 1 -> 2 -> 3
    - 111D: 1 <-> 2 <- 3
    - 111U: 1 <-> 2 -> 3
    - 030T: 1 -> 2 -> 3, 1 -> 3
    - 030C: 1 <- 2 <- 3, 1 -> 3
    - 201: 1 <-> 2 <-> 3
    - 120D: 1 <- 2 -> 3, 1 <-> 3
    - 120U: 1 -> 2 <- 3, 1 <-> 3
    - 120C: 1 -> 2 -> 3, 1 <-> 3
    - 210: 1 -> 2 <-> 3, 1 <-> 3
    - 300: 1 <-> 2 <-> 3, 1 <-> 3

    Refer to the :doc:`example gallery </auto_examples/graph/plot_triad_types>`
    for visual examples of the triad types.

    Parameters
    ----------
    G : digraph
       A NetworkX DiGraph

    Returns
    -------
    tri_by_type : dict
       Dictionary with triad types as keys and lists of triads as values.

    Examples
    --------
    >>> G = nx.DiGraph([(1, 2), (1, 3), (2, 3), (3, 1), (5, 6), (5, 4), (6, 7)])
    >>> dict = nx.triads_by_type(G)
    >>> dict["120C"][0].edges()
    OutEdgeView([(1, 2), (1, 3), (2, 3), (3, 1)])
    >>> dict["012"][0].edges()
    OutEdgeView([(1, 2)])

    References
    ----------
    .. [1] Snijders, T. (2012). "Transitivity and triads." University of
        Oxford.
        https://web.archive.org/web/20170830032057/http://www.stats.ox.ac.uk/~snijders/Trans_Triads_ha.pdf
    )r
   r   Úlistr   Úappend)r=   Úall_triÚtri_by_typeÚtriadrZ   s        r2   r   r   V  s[   € õn ˜‰mŒm€GÝ�dÑ#Ô#€KØð (ð (ˆÝ˜%Ñ Ô ˆØ�DÔ× Ò  Ñ'Ô'Ð'Ð'ØÐr4   c                 ó:  — t          | ¦  «        st          j        d¦  «        ‚t          |                      ¦   «         ¦  «        }|dk    rdS |dk    rdS |dk    r‰|                      ¦   «         \  }}t          |¦  «        t          |¦  «        k    rdS |d         |d         k    rdS |d         |d         k    rd	S |d         |d         k    s|d         |d         k    rd
S dS |dk    rút          |                      ¦   «         d¦  «        D ]Õ\  }}}t          |¦  «        t          |¦  «        k    r|d         |v r dS  dS t          |¦  «                             t          |¦  «        ¦  «        t          |¦  «        k    r_|d         |d         |d         h|d         |d         |d         hcxk    r%t          |                      ¦   «         ¦  «        k    rn n dS  dS ŒÖdS |dk    �r t          |                      ¦   «         d¦  «        D ]û\  }}}}t          |¦  «        t          |¦  «        k    rÔt          |¦  «        t          |¦  «        k    r dS |d         h|d         hcxk    r3t          |¦  «         	                    t          |¦  «        ¦  «        k    rn n dS |d         h|d         hcxk    r3t          |¦  «         	                    t          |¦  «        ¦  «        k    rn n dS |d         |d         k    r dS ŒüdS |dk    rdS |dk    rdS dS )aø  Returns the sociological triad type for a triad.

    Parameters
    ----------
    G : digraph
       A NetworkX DiGraph with 3 nodes

    Returns
    -------
    triad_type : str
       A string identifying the triad type

    Examples
    --------
    >>> G = nx.DiGraph([(1, 2), (2, 3), (3, 1)])
    >>> nx.triad_type(G)
    '030C'
    >>> G.add_edge(1, 3)
    >>> nx.triad_type(G)
    '120C'

    Notes
    -----
    There can be 6 unique edges in a triad (order-3 DiGraph) (so 2^^6=64 unique
    triads given 3 nodes). These 64 triads each display exactly 1 of 16
    topologies of triads (topologies can be permuted). These topologies are
    identified by the following notation:

    {m}{a}{n}{type} (for example: 111D, 210, 102)

    Here:

    {m}     = number of mutual ties (takes 0, 1, 2, 3); a mutual tie is (0,1)
              AND (1,0)
    {a}     = number of asymmetric ties (takes 0, 1, 2, 3); an asymmetric tie
              is (0,1) BUT NOT (1,0) or vice versa
    {n}     = number of null ties (takes 0, 1, 2, 3); a null tie is NEITHER
              (0,1) NOR (1,0)
    {type}  = a letter (takes U, D, C, T) corresponding to up, down, cyclical
              and transitive. This is only used for topologies that can have
              more than one form (eg: 021D and 021U).

    References
    ----------
    .. [1] Snijders, T. (2012). "Transitivity and triads." University of
        Oxford.
        https://web.archive.org/web/20170830032057/http://www.stats.ox.ac.uk/~snijders/Trans_Triads_ha.pdf
    z"G is not a triad (order-3 DiGraph)r   r   r   r   r   r   r    r!   r"   r   r$   r#   r&   r%   r   r'   r(   r)   r*   r   r+   r   r,   N)
r	   r   ÚNetworkXAlgorithmErrorr]   r}   r[   r   Úsymmetric_differencer`   Úintersection)r=   Ú	num_edgesÚe1Úe2Úe3Úe4s         r2   r   r   •  s4  € õf �A‰;Œ;ð NÝÔ'Ð(LÑMÔMÐMÝ�A—G’G‘I”I‘”€IØ�A‚~€~ØˆuØ	�aŠˆØˆuØ	�aŠˆØ—’‘”‰ˆˆBÝˆr‰7Œ7•c˜"‘g”gÒÐØ�5Ø�ŒU�b˜”eŠ^ˆ^Ø�6Ø�ŒU�b˜”eŠ^ˆ^Ø�6Ø�ŒU�b˜”eŠ^ˆ^˜r !œu¨¨1¬š~˜~Ø�6ð  .˜~à	�aŠˆÝ& q§w¢w¡y¤y°!Ñ4Ô4ð 
	ð 
	‰JˆB��BÝ�2‰wŒw�#˜b™'œ'Ò!Ð!Ø�a”5˜B�;�;Ø!˜6˜6à�v�vÝ�R‘”×-Ò-­c°"©g¬gÑ6Ô6½#¸b¹'¼'ÒAÐAØ�q”E˜2˜aœ5 " Q¤%Ð(¨R°¬U°B°q´E¸2¸a¼5Ð,AÐSÐSÒSÐSÅSÈÏÊÉÌÁ^Ä^ÒSÐSÐSÐSÐSØ!˜6˜6à�v�vð	 Bð
	ð 
	ð 
�aŠ‰Ý*¨1¯7ª7©9¬9°aÑ8Ô8ð 
	"ð 
	"‰NˆB��B˜Ý�2‰wŒw�#˜b™'œ'Ò!Ð!å�r‘7”7�c "™gœgÒ%Ð%Ø ˜5˜5Ø�q”E�7˜r !œu˜gÐFÐFÒFÐF­¨R©¬×)=Ò)=½cÀ"¹g¼gÑ)FÔ)FÒFÐFÐFÐFÐFØ!˜6˜6Ø�q”E�7˜r !œu˜gÐFÐFÒFÐF­¨R©¬×)=Ò)=½cÀ"¹g¼gÑ)FÔ)FÒFÐFÐFÐFÐFØ!˜6˜6Ø�a”5˜B˜qœE’>�>Ø!˜6˜6øð
	"ð 
	"ð 
�aŠˆØˆuØ	�aŠˆØˆuð 
ˆr4   r8   )Ú__doc__Úcollectionsr   Ú	itertoolsr   r   Únetworkxr   Únetworkx.utilsr   r   Ú__all__ÚTRICODESr.   r_   rb   rB   Ú_dispatchabler   r	   r
   r   r   r9   r4   r2   ú<module>r¡      sÅ  ðð
 1Ð 0à #Ð #Ð #Ð #Ð #Ð #Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à Ð Ð Ð Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð €ðA€ðJ€ð* PÐO¸9¸9ÀXÑ;NÔ;NÐOÑOÔO€ð	5ð 	5ð 	5ð Ð�\Ñ"Ô"ØÔðSð Sð Sñ Ôñ #Ô"ðSðl Ôðð ñ Ôðð: Ð�\Ñ"Ô"Ø€Ô Ð%Ñ%Ô%ð)ð )ñ &Ô%ñ #Ô"ð)ð: Ð�\Ñ"Ô"ØÔð:ð :ñ Ôñ #Ô"ð:ðz Ð�\Ñ"Ô"ØÔð]ð ]ñ Ôñ #Ô"ð]ð ]ð ]r4   