§
    bŠtjö�  ã                   ó>  — d Z ddlZddlZddlmZmZmZmZmZ ddl	Z
ddlmZ g d¢Z edd¬¦  «        dd„¦   «         Zdd„Z edd¬¦  «         e
j        dd
¬¦  «        dd„¦   «         ¦   «         Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ ZdS )aS  Read and write graphs in GEXF format.

.. warning::
    This parser uses the standard xml library present in Python, which is
    insecure - see :external+python:mod:`xml` for additional information.
    Only parse GEFX files you trust.

GEXF (Graph Exchange XML Format) is a language for describing complex
network structures, their associated data and dynamics.

This implementation does not support mixed graphs (directed and
undirected edges together).

Format
------
GEXF is an XML format.  See http://gexf.net/schema.html for the
specification and http://gexf.net/basic.html for examples.
é    N)ÚElementÚElementTreeÚ
SubElementÚregister_namespaceÚtostring)Ú	open_file)Ú
write_gexfÚ	read_gexfÚrelabel_gexf_graphÚgenerate_gexfé   Úwb)Úmodeúutf-8Tú1.2draftc                 ó~   — t          |||¬¦  «        }|                     | ¦  «         |                     |¦  «         dS )aÂ  Write G in GEXF format to path.

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Node attributes are checked according to the version of the GEXF
    schemas used for parameters which are not user defined,
    e.g. visualization 'viz' [2]_. See example for usage.

    .. warning::

       The `GEXF specification <https://gexf.net/schema.html>`_ reserves some
       keywords (e.g. ``id``, ``pid``, ``label``, etc.) for specifying node/edge
       metadata in the file format. Ensure NetworkX node/edge attribute names
       do not use these special keywords to guarantee all attributes are preserved
       as expected when roundtripping to/from GEXF format.

    Parameters
    ----------
    G : graph
       A NetworkX graph
    path : file or string
       File or file name to write.
       File names ending in .gz or .bz2 will be compressed.
    encoding : string (optional, default: 'utf-8')
       Encoding for text data.
    prettyprint : bool (optional, default: True)
       If True use line breaks and indenting in output XML.
    version: string (optional, default: '1.2draft')
       The version of GEXF to be used for nodes attributes checking

    Examples
    --------
    >>> G = nx.path_graph(4)
    >>> nx.write_gexf(G, "test.gexf")

    # visualization data
    >>> G.nodes[0]["viz"] = {"size": 54}
    >>> G.nodes[0]["viz"]["position"] = {"x": 0, "y": 1}
    >>> G.nodes[0]["viz"]["color"] = {"r": 0, "g": 0, "b": 256}


    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    The node id attribute is set to be the string of the node label.
    If you want to specify an id use set it as node data, e.g.
    node['a']['id']=1 to set the id of node 'a' to 1.

    References
    ----------
    .. [1] GEXF File Format, http://gexf.net/
    .. [2] GEXF schema, http://gexf.net/schema.html
    ©ÚencodingÚprettyprintÚversionN)Ú
GEXFWriterÚ	add_graphÚwrite)ÚGÚpathr   r   r   Úwriters         úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/networkx/readwrite/gexf.pyr	   r	   $   sE   € õt  °{ÈGÐTÑTÔT€FØ
×Ò�QÑÔÐØ
‡L‚L�ÑÔÐÐÐó    c              #   ó¦   K  — t          |||¬¦  «        }|                     | ¦  «         t          |¦  «                             ¦   «         E d{V —† dS )aÌ  Generate lines of GEXF format representation of G.

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Parameters
    ----------
    G : graph
    A NetworkX graph
    encoding : string (optional, default: 'utf-8')
    Encoding for text data.
    prettyprint : bool (optional, default: True)
    If True use line breaks and indenting in output XML.
    version : string (default: 1.2draft)
    Version of GEFX File Format (see http://gexf.net/schema.html)
    Supported values: "1.1draft", "1.2draft"


    Examples
    --------
    >>> G = nx.path_graph(4)
    >>> linefeed = chr(10)  # linefeed=

    >>> s = linefeed.join(nx.generate_gexf(G))
    >>> for line in nx.generate_gexf(G):  # doctest: +SKIP
    ...     print(line)

    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    The node id attribute is set to be the string of the node label.
    If you want to specify an id use set it as node data, e.g.
    node['a']['id']=1 to set the id of node 'a' to 1.

    References
    ----------
    .. [1] GEXF File Format, https://gephi.org/gexf/format/
    r   N)r   r   ÚstrÚ
splitlines)r   r   r   r   r   s        r   r   r   c   sa   è è € õP  °{ÈGÐTÑTÔT€FØ
×Ò�QÑÔÐÝ�6‰{Œ{×%Ò%Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'r   Úrb)ÚgraphsÚreturns_graphFc                 ót   — t          ||¬¦  «        }|rt           || ¦  «        ¦  «        }n || ¦  «        }|S )a|  Read graph in GEXF format from path.

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Parameters
    ----------
    path : file or string
       Filename or file handle to read.
       Filenames ending in .gz or .bz2 will be decompressed.
    node_type: Python type (default: None)
       Convert node ids to this type if not None.
    relabel : bool (default: False)
       If True relabel the nodes to use the GEXF node "label" attribute
       instead of the node "id" attribute as the NetworkX node label.
    version : string (default: 1.2draft)
    Version of GEFX File Format (see http://gexf.net/schema.html)
       Supported values: "1.1draft", "1.2draft"

    Returns
    -------
    graph: NetworkX graph
        If no parallel edges are found a Graph or DiGraph is returned.
        Otherwise a MultiGraph or MultiDiGraph is returned.

    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    References
    ----------
    .. [1] GEXF File Format, http://gexf.net/
    )Ú	node_typer   )Ú
GEXFReaderr   )r   r&   Úrelabelr   Úreaderr   s         r   r
   r
   �   sH   € õJ  )°WÐ=Ñ=Ô=€FØð Ý˜v˜v d™|œ|Ñ,Ô,ˆˆàˆF�4‰LŒLˆØ€Hr   c            	       óÞ   — e Zd Zdddd                     ddg¦  «        ddœdd	dd                     dd
g¦  «        ddœdddd                     ddg¦  «        ddœdœZd„ ZdddddddddœZd„ ZdS )ÚGEXFzhttp://www.gexf.net/1.1draftz http://www.gexf.net/1.1draft/vizz)http://www.w3.org/2001/XMLSchema-instanceú z%http://www.gexf.net/1.1draft/gexf.xsdú1.1)ÚNS_GEXFÚNS_VIZÚNS_XSIÚSCHEMALOCATIONÚVERSIONzhttp://www.gexf.net/1.2draftz http://www.gexf.net/1.2draft/vizz%http://www.gexf.net/1.2draft/gexf.xsdz1.2zhttp://gexf.net/1.3zhttp://gexf.net/1.3/vizz%http://w3.org/2001/XMLSchema-instancezhttp://gexf.net/1.3/gexf.xsdú1.3)z1.1draftr   r3   c                 ó4  — t           dft          dft          dft          dft          dft          dft           dft
          dft
          dft
          dfg
}	 d	d l}|j        df|j        df|j	        df|j
        d
f|j        d
f|j        d
f|j        d
f|j        d
f|j        d
f|j        d
f|j        d
f|j        d
f|j
        d
f|j        d
f|j        d
fg|z   }n# t*          $ r Y nw xY wt	          |¦  «        | _        t	          d„ |D ¦   «         ¦  «        | _        d S )NÚintegerÚfloatÚdoubleÚbooleanÚstringÚlongÚ
liststringÚanyURIr   Úintc              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N)Úreversed)Ú.0Úas     r   ú	<genexpr>z'GEXF.construct_types.<locals>.<genexpr>  s(   è è € Ð;Ð;°¥¨¡¤Ð;Ð;Ð;Ð;Ð;Ð;r   )r=   r6   ÚboolÚlistÚdictr    ÚnumpyÚfloat64Úfloat32Úfloat16Úint_Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64ÚintcÚintpÚImportErrorÚxml_typeÚpython_type)ÚselfÚtypesÚnps      r   Úconstruct_typeszGEXF.construct_typeså   sh  € å�)ÐÝ�GÐÝ�HÐÝ�9ÐÝ�8ÐÝ�8ÐÝ�&ˆMÝ�,ÐÝ�(ˆOÝ�(ˆOð
ˆð	ØÐÐÐð ”˜WÐ%Ø”˜WÐ%Ø”˜WÐ%Ø”˜%Ð Ø”˜%Ð Ø”˜5Ð!Ø”˜5Ð!Ø”˜5Ð!Ø”˜5Ð!Ø”˜EÐ"Ø”˜EÐ"Ø”˜EÐ"Ø”˜%Ð Ø”˜%Ð Ø”˜%Ð ðð  ñ!ˆEˆEøõ	 ð 	ð 	ð 	ØˆDð	øøøõ, ˜U™œˆŒÝÐ;Ð;°UÐ;Ñ;Ô;Ñ;Ô;ˆÔÐÐs   ÁC Ã
C#Ã"C#TF)ÚtrueÚfalseÚTrueÚFalseÚ0r   Ú1r   c                 óþ   — | j                              |¦  «        }|€t          j        d|› d�¦  «        ‚|d         | _        |d         | _        |d         | _        |d         | _        |d         | _        || _	        d S )NzUnknown GEXF version ú.r.   r/   r0   r1   r2   )
ÚversionsÚgetÚnxÚNetworkXErrorr.   r/   r0   r1   r2   r   )rY   r   Úds      r   Úset_versionzGEXF.set_version  s~   € ØŒM×Ò˜gÑ&Ô&ˆØˆ9ÝÔ"Ð#E¸7Ð#EÐ#EÐ#EÑFÔFÐFØ˜”|ˆŒØ˜”kˆŒØ˜”kˆŒØÐ 0Ô1ˆÔØ˜”|ˆŒØˆŒˆˆr   N)Ú__name__Ú
__module__Ú__qualname__Újoinre   r\   Úconvert_boolrj   © r   r   r+   r+   ½   s  € € € € € ð 6Ø8ØAØ!Ÿhšhà2Ø;ðñô ð ð
ð 
ð 6Ø8ØAØ!Ÿhšhà2Ø;ðñô ð ð
ð 
ð -Ø/Ø=Ø!Ÿhšhà)Ø2ðñô ð ð
ð 
ð3%ð %€HðN(<ð (<ð (<ðX ØØØØØØØð	ð 	€Lð	ð 	ð 	ð 	ð 	r   r+   c                   óh   — e Zd Z	 d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d„ZdS )r   Nr   Tr   c                 óR  — |                       ¦   «          || _        || _        |                      |¦  «         t	          d| j        | j        | j        | j        dœ¦  «        | _	        t	          d¦  «        }dt          j        › �}|t          |d¦  «        _        |                     dt          j        d¦  «        ¦  «         | j	                             |¦  «         t%          d| j        ¦  «         t)          j        ¦   «         | _        t)          j        ¦   «         | _        t          ¦   «         | _        i | _        i | j        d	<   i | j        d
<   i | j        d	         d<   i | j        d	         d<   i | j        d
         d<   i | j        d
         d<   |�|                      |¦  «         d S d S )NÚgexf)Úxmlnsz	xmlns:xsizxsi:schemaLocationr   Úmetaz	NetworkX ÚcreatorÚlastmodifieddatez%Y-%m-%dÚvizÚnodeÚedgeÚdynamicÚstatic)r\   r   r   rj   r   r.   r0   r1   r2   Úxmlrg   Ú__version__r   ÚtextÚsetÚtimeÚstrftimeÚappendr   r/   Ú	itertoolsÚcountÚedge_idÚattr_idÚall_edge_idsÚattrr   )rY   Úgraphr   r   r   Úmeta_elementÚsubelement_texts          r   Ú__init__zGEXFWriter.__init__*  s–  € ð 	×ÒÑÔÐØ&ˆÔØ ˆŒØ×Ò˜Ñ!Ô!Ð!ÝØàœØ!œ[Ø&*Ô&9Øœ<ð	ð ñ
ô 
ˆŒõ ˜v‘”ˆØ6¥b¤nÐ6Ð6ˆØ3B�
�< Ñ+Ô+Ô0Ø×ÒÐ+­T¬]¸:Ñ-FÔ-FÑGÔGÐGØŒ�Š˜Ñ%Ô%Ð%å˜5 $¤+Ñ.Ô.Ð.õ !”Ñ(Ô(ˆŒÝ ”Ñ(Ô(ˆŒÝ™EœEˆÔàˆŒ	ØˆŒ	�&ÑØˆŒ	�&ÑØ')ˆŒ	�&Ô˜)Ñ$Ø&(ˆŒ	�&Ô˜(Ñ#Ø')ˆŒ	�&Ô˜)Ñ$Ø&(ˆŒ	�&Ô˜(Ñ#àÐØ�NŠN˜5Ñ!Ô!Ð!Ð!Ð!ð Ðr   c                 ó    — | j         r|                      | j        ¦  «         t          | j        ¦  «                             | j        ¦  «        }|S r?   )r   Úindentr}   r   Údecoder   )rY   Úss     r   Ú__str__zGEXFWriter.__str__U  sE   € ØÔð 	"Ø�KŠK˜œÑ!Ô!Ð!Ý�T”XÑÔ×%Ò% d¤mÑ4Ô4ˆØˆr   c                 ó*  — |                      d¬¦  «        D ]D\  }}}|                     d¦  «        }|�'| j                             t	          |¦  «        ¦  «         ŒE|j                             d¦  «        dk    rd}nd}|                     ¦   «         rd}nd}|j                             d	d
¦  «        }t          d|||¬¦  «        }	|	| _        |  	                    ||	¦  «         |  
                    ||	¦  «         | j                             |	¦  «         d S )NT©ÚdataÚidr   r{   r|   ÚdirectedÚ
undirectedÚnameÚ rŠ   )Údefaultedgetyper   r™   )Úedgesrf   rˆ   Úaddr    rŠ   Úis_directedr   Úgraph_elementÚ	add_nodesÚ	add_edgesr}   rƒ   )
rY   r   ÚuÚvÚddÚeidr   Údefaultr™   rŸ   s
             r   r   zGEXFWriter.add_graph[  s  € àŸš T˜Ñ*Ô*ð 	0ð 	0‰HˆAˆq�"Ø—&’&˜‘,”,ˆCØˆØÔ!×%Ò%¥c¨#¡h¤hÑ/Ô/Ð/øàŒ7�;Š;�vÑÔ )Ò+Ð+ØˆDˆDàˆDà�=Š=‰?Œ?ð 	#Ø ˆGˆGà"ˆGØŒw�{Š{˜6 2Ñ&Ô&ˆÝ ¸ÀtÐRVÐWÑWÔWˆØ*ˆÔØ�Š�q˜-Ñ(Ô(Ð(Ø�Š�q˜-Ñ(Ô(Ð(ØŒ�Š˜Ñ&Ô&Ð&Ð&Ð&r   c                 ój  — t          d¦  «        }|                     d¬¦  «        D �]ö\  }}|                     ¦   «         }t          |                     d|¦  «        ¦  «        }d|i}t          |                     d|¦  «        ¦  «        }	|	|d<   	 |                     d¦  «        }
t          |
¦  «        |d<   n# t
          $ r Y nw xY w	 |                     d¦  «        }t          |¦  «        |d<   |                      |¦  «         n# t
          $ r Y nw xY w	 |                     d¦  «        }t          |¦  «        |d<   |                      |¦  «         n# t
          $ r Y nw xY wt          di |¤Ž}|j                             d
i ¦  «        }|  	                    ||¦  «        }| j
        dk    r|                      ||¦  «        }n|                      ||¦  «        }|                      ||¦  «        }|                      d	|||¦  «        }|                     |¦  «         �Œø|                     |¦  «         d S )NÚnodesTr”   r–   ÚlabelÚpidÚstartÚendry   Únode_defaultr-   )ry   )r   r¨   Úcopyr    ÚpopÚKeyErrorÚalter_graph_mode_timeformatrŠ   rf   Úadd_parentsr2   Ú
add_slicesÚ
add_spellsÚadd_vizÚadd_attributesrƒ   )rY   r   rŸ   Únodes_elementry   r•   Ú	node_dataÚnode_idÚkwr©   rª   r«   r¬   Únode_elementr¦   s                  r   r    zGEXFWriter.add_nodesr  sU  € Ý Ñ(Ô(ˆØŸ'š' t˜'Ñ,Ô,ð "	/ñ "	/‰JˆD�$ØŸ	š	™œˆIÝ˜)Ÿ-š-¨¨dÑ3Ô3Ñ4Ô4ˆGØ˜�ˆBÝ˜	Ÿš g¨tÑ4Ô4Ñ5Ô5ˆEØˆBˆw‰KðØ—m’m EÑ*Ô*�Ý ™HœH��5‘	�	øÝð ð ð Ø�ðøøøðØ!Ÿš gÑ.Ô.�Ý! %™jœj��7‘Ø×0Ò0°Ñ7Ô7Ð7Ð7øÝð ð ð Ø�ðøøøðØ—m’m EÑ*Ô*�Ý ™HœH��5‘	Ø×0Ò0°Ñ5Ô5Ð5Ð5øÝð ð ð Ø�ðøøøõ #Ð0Ð0¨RÐ0Ð0ˆLà”g—k’k .°"Ñ5Ô5ˆGØ×(Ò(¨°yÑAÔAˆIØŒ|˜uÒ$Ð$Ø ŸOšO¨L¸)ÑDÔD�	�	à ŸOšO¨L¸)ÑDÔD�	ØŸš \°9Ñ=Ô=ˆIØ×+Ò+¨F°LÀ)ÈWÑUÔUˆIØ× Ò  Ñ.Ô.Ð.Ñ.Ø×Ò˜]Ñ+Ô+Ð+Ð+Ð+s6   Â'B8Â8
CÃCÃ	<DÄ
DÄDÄ<EÅ
E!Å E!c                 ó6  ‡ — ˆ fd„}t          d¦  «        } ||¦  «        D �]a\  }}}}dt          |¦  «        i}		 |                     d¦  «        }
t          |
¦  «        |	d<   n# t          $ r Y nw xY w	 |                     d¦  «        }t          |¦  «        |	d<   n# t          $ r Y nw xY w	 |                     d¦  «        }t          |¦  «        |	d<   n# t          $ r Y nw xY w	 |                     d¦  «        }t          |¦  «        |	d<   ‰                      |¦  «         n# t          $ r Y nw xY w	 |                     d¦  «        }t          |¦  «        |	d<   ‰                      |¦  «         n# t          $ r Y nw xY wt          |j        |                              d|¦  «        ¦  «        }t          |j        |                              d|¦  «        ¦  «        }t          d||d
œ|	¤Ž}|j                             di ¦  «        }‰ j        dk    r‰  	                    ||¦  «        }n‰  
                    ||¦  «        }‰                      ||¦  «        }‰                      d	|||¦  «        }|                     |¦  «         �Œc|                     |¦  «         d S )Nc              3   ó˜  •K  — |                       ¦   «         ræ|                      dd¬¦  «        D ]Ì\  }}}}|                     ¦   «         }|                     |¬¦  «         |                     dd ¦  «        }|€{t          ‰j        ¦  «        }t          |¦  «        ‰j        v r*t          ‰j        ¦  «        }t          |¦  «        ‰j        v °*‰j         	                    t          |¦  «        ¦  «         ||||fV — ŒÍd S |                      d¬¦  «        D ]µ\  }}}|                     ¦   «         }|                     dd ¦  «        }|€{t          ‰j        ¦  «        }t          |¦  «        ‰j        v r*t          ‰j        ¦  «        }t          |¦  «        ‰j        v °*‰j         	                    t          |¦  «        ¦  «         ||||fV — Œ¶d S )NT)r•   Úkeys)Úkeyr–   r”   )
Úis_multigraphrœ   r®   Úupdater¯   Únextr†   r    rˆ   r�   )r   r¢   r£   r¿   r•   Ú	edge_datar†   rY   s          €r   Úedge_key_dataz+GEXFWriter.add_edges.<locals>.edge_key_dataš  sÔ  øè è € à�ŠÑ Ô ð 3Ø'(§w¢w°D¸t wÑ'DÔ'Dð 	3ð 	3‘O�A�q˜#˜tØ $§	¢	¡¤�IØ×$Ò$¨Ð$Ñ-Ô-Ð-Ø'Ÿmšm¨D°$Ñ7Ô7�GØ�Ý"& t¤|Ñ"4Ô"4˜Ý! '™lœl¨dÔ.?Ð?Ð?Ý&*¨4¬<Ñ&8Ô&8˜Gõ " '™lœl¨dÔ.?Ð?Ð?àÔ)×-Ò-­c°'©l¬lÑ;Ô;Ð;Ø˜Q ¨Ð2Ð2Ð2Ð2Ð2ð	3ð 	3ð #$§'¢'¨t 'Ñ"4Ô"4ð 3ð 3‘J�A�q˜$Ø $§	¢	¡¤�IØ'Ÿmšm¨D°$Ñ7Ô7�GØ�Ý"& t¤|Ñ"4Ô"4˜Ý! '™lœl¨dÔ.?Ð?Ð?Ý&*¨4¬<Ñ&8Ô&8˜Gõ " '™lœl¨dÔ.?Ð?Ð?àÔ)×-Ò-­c°'©l¬lÑ;Ô;Ð;Ø˜Q ¨Ð2Ð2Ð2Ð2Ð2ð3ð 3r   rœ   r–   r©   ÚweightÚtyper«   r¬   rz   )ÚsourceÚtargetÚedge_defaultr-   )rz   )r   r    r¯   r°   r±   r¨   rf   rŠ   r2   r³   r´   rµ   r¶   rƒ   )rY   r   rŸ   rÄ   Úedges_elementr¢   r£   r¿   rÃ   rº   Ú
edge_labelÚedge_weightÚ	edge_typer«   r¬   Ú	source_idÚ	target_idÚedge_elementr¦   s   `                  r   r¡   zGEXFWriter.add_edges™  sð  ø€ ð	3ð 	3ð 	3ð 	3ð 	3õ0   Ñ(Ô(ˆØ$1 M°!Ñ$4Ô$4ð '	/ñ '	/Ñ ˆAˆq�#�yØ�˜C™œÐ!ˆBðØ&Ÿ]š]¨7Ñ3Ô3�
Ý! *™oœo��7‘�øÝð ð ð Ø�ðøøøðØ'Ÿmšm¨HÑ5Ô5�Ý" ;Ñ/Ô/��8‘�øÝð ð ð Ø�ðøøøðØ%ŸMšM¨&Ñ1Ô1�	Ý  ™^œ^��6‘
�
øÝð ð ð Ø�ðøøøðØ!Ÿš gÑ.Ô.�Ý! %™jœj��7‘Ø×0Ò0°Ñ7Ô7Ð7Ð7øÝð ð ð Ø�ðøøøðØ—m’m EÑ*Ô*�Ý ™HœH��5‘	Ø×0Ò0°Ñ5Ô5Ð5Ð5øÝð ð ð Ø�ðøøøå˜AœG AœJŸNšN¨4°Ñ3Ô3Ñ4Ô4ˆIÝ˜AœG AœJŸNšN¨4°Ñ3Ô3Ñ4Ô4ˆIÝ"ÐT°)ÀIÐTÐTÐQSÐTÐTˆLØ”g—k’k .°"Ñ5Ô5ˆGØŒ|˜uÒ$Ð$Ø ŸOšO¨L¸)ÑDÔD�	�	à ŸOšO¨L¸)ÑDÔD�	ØŸš \°9Ñ=Ô=ˆIØ×+Ò+¨F°LÀ)ÈWÑUÔUˆIØ× Ò  Ñ.Ô.Ð.Ñ.Ø×Ò˜]Ñ+Ô+Ð+Ð+Ð+sY   »'A#Á#
A0Á/A0Á4'BÂ
B)Â(B)Â-'CÃ
C"Ã!C"Ã&<D#Ä#
D0Ä/D0Ä4<E1Å1
E>Å=E>c                 ó  — t          d¦  «        }t          |¦  «        dk    r|S d}|                     ¦   «         D �]º\  }}|dk    rd}t          |¦  «        }	|	| j        vrt          d|	› �¦  «        ‚t          |t          ¦  «        �rY|D ]G\  }
}}t          |
¦  «        }	|€|�.d}|                      |¦  «         |                      |¦  «          nŒH|  	                    t          |¦  «        | j        |	         |||¦  «        }|D ]Ù\  }
}}t          d¦  «        }||j        d	<   t          |
¦  «        |j        d
<   |	t          u rS|j        d
         dk    rd|j        d
<   n7|j        d
         dk    rd|j        d
<   n|j        d
         dk    r
d|j        d
<   |�t          |¦  «        |j        d<   |�t          |¦  «        |j        d<   |                     |¦  «         ŒÚ�Œ§d}|  	                    t          |¦  «        | j        |	         |||¦  «        }t          d¦  «        }||j        d	<   t          |t          ¦  «        r*t          |¦  «                             ¦   «         |j        d
<   nst          |¦  «        |j        d
<   |	t          u rS|j        d
         dk    rd|j        d
<   n7|j        d
         dk    rd|j        d
<   n|j        d
         dk    r
d|j        d
<   |                     |¦  «         �Œ¼|                     |¦  «         |S )NÚ	attvaluesr   r|   r¿   Únetworkx_keyz%attribute value type is not allowed: r{   ÚattvalueÚforÚvalueÚinfÚINFÚnanÚNaNz-infz-INFr«   r¬   )r   ÚlenÚitemsrÆ   rW   Ú	TypeErrorÚ
isinstancerE   r±   Úget_attr_idr    Úattribr6   rƒ   rD   Úlower)rY   Únode_or_edgeÚxml_objr•   r¦   rÒ   r   Úkr£   Úval_typeÚvalr«   r¬   r‡   Úes                  r   r¶   zGEXFWriter.add_attributesÝ  s@  € å˜KÑ(Ô(ˆ	Ýˆt‰9Œ9˜Š>ˆ>ØˆKØˆØ—J’J‘L”Lð 8	$ñ 8	$‰DˆAˆqà�EŠzˆzØ"�Ý˜A‘w”wˆHØ˜tœ}Ð,Ð,ÝÐ RÈÐ RÐ RÑSÔSÐSÝ˜!�TÑ"Ô"ñ 1$à'(ð ð ‘O�C˜ Ý# C™yœy�HØÐ(¨C¨OØ(˜Ø×8Ò8¸Ñ?Ô?Ð?Ø×8Ò8¸Ñ=Ô=Ð=Ø˜ð	 -<ð
 ×*Ò*Ý˜‘F”F˜DœM¨(Ô3°\À7ÈDñô �ð ()ð (ð (‘O�C˜ Ý 
Ñ+Ô+�AØ&-�A”H˜U‘OÝ(+¨C©¬�A”H˜WÑ%à¥5Ð(Ð(Øœ8 GÔ,°Ò5Ð5Ø05˜AœH WÑ-Ð-ØœX gÔ.°%Ò7Ð7Ø05˜AœH WÑ-Ð-ØœX gÔ.°&Ò8Ð8Ø06˜AœH WÑ-ØÐ(Ý,/°©J¬J˜œ Ñ)Ø�Ý*-¨c©(¬(˜œ ™Ø×$Ò$ QÑ'Ô'Ð'Ð'ñ!(ð&  �Ø×*Ò*Ý˜‘F”F˜DœM¨(Ô3°\À7ÈDñô �õ ˜JÑ'Ô'�Ø")�”˜‘Ý˜a¥Ñ&Ô&ð 7Ý(+¨A©¬¯ª©¬�A”H˜WÑ%Ð%å(+¨A©¬�A”H˜WÑ%à¥5Ð(Ð(Øœ8 GÔ,°Ò5Ð5Ø05˜AœH WÑ-Ð-ØœX gÔ.°%Ò7Ð7Ø05˜AœH WÑ-Ð-ØœX gÔ.°&Ò8Ð8Ø06˜AœH WÑ-Ø× Ò  Ñ#Ô#Ð#Ñ#Ø�Š�yÑ!Ô!Ð!Øˆr   c                 óÂ  — 	 | j         |         |         |         S # t          $ �r6 t          t          | j        ¦  «        ¦  «        }|| j         |         |         |<   |||dœ}t          d
i |¤Ž}|                     |¦  «        }	|	�8t          d¦  «        }
t          |	¦  «        |
_        |                     |
¦  «         d }| j	         
                    d¦  «        D ];}|                     d¦  «        }|                     dd¦  «        }||k    r||k    r|}Œ<|€,||dœ}t          di |¤Ž}| j	                             d	|¦  «         |                     |¦  «         Y nw xY w|S )N)r–   ÚtitlerÆ   Ú	attributer¦   Ú
attributesÚclassr   r|   )r   rì   r   )rê   )rë   )r‰   r°   r    rÂ   r‡   r   rf   r   rƒ   rŸ   ÚfindallÚinsert)rY   ré   Ú	attr_typeÚedge_or_noder¦   r   Únew_idÚattr_kwargsrê   Údefault_titleÚdefault_elementÚattributes_elementrB   Úa_classÚa_modes                  r   rß   zGEXFWriter.get_attr_id  s”  € ð	1Ø”9˜\Ô*¨4Ô0°Ô7Ð7øÝð 	1ñ 	1ð 	1å�˜dœlÑ+Ô+Ñ,Ô,ˆFØ39ˆDŒI�lÔ# DÔ)¨%Ñ0Ø!'°%ÀÐKÐKˆKÝÐ;Ð;¨{Ð;Ð;ˆIà#ŸKšK¨Ñ.Ô.ˆMØÐ(Ý")¨)Ñ"4Ô"4�Ý'*¨=Ñ'9Ô'9�Ô$Ø× Ò  Ñ1Ô1Ð1à!%ÐØÔ'×/Ò/°Ñ=Ô=ð +ð +�àŸ%š% ™.œ.�ØŸš˜v xÑ0Ô0�Ø˜lÒ*Ð*¨v¸ª~¨~Ø)*Ð&øØ!Ð)à'+°lÐCÐC�Ý%,Ð%IÐ%I¸[Ð%IÐ%IÐ"ØÔ"×)Ò)¨!Ð-?Ñ@Ô@Ð@Ø×%Ò% iÑ0Ô0Ð0Ð0Ð0ð3	1øøøð4 ˆs   ‚ ›D>EÅEc                 óœ  — |                      dd¦  «        }|�r2|                     d¦  «        }|��;| j        dk    r}t          d| j        › d�t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        t          |                     d	¦  «        ¦  «        ¬
¦  «        }nžt          d| j        › d�t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        t          |                     d	¦  «        ¦  «        t          |                     dd¦  «        ¦  «        ¬¦  «        }|                     |¦  «         |                     d¦  «        }|�<t          d| j        › d�t          |¦  «        ¬¦  «        }|                     |¦  «         |                     d¦  «        }|�<t          d| j        › d�t          |¦  «        ¬¦  «        }|                     |¦  «         |                     d¦  «        }|�z|                     d¦  «        r)t          d| j        › d�dt          |¦  «        ¬¦  «        }n't          d| j        › d�t          |¦  «        ¬¦  «        }|                     |¦  «         |                     d¦  «        }	|	�‘t          d| j        › d�t          |	                     d¦  «        ¦  «        t          |	                     d¦  «        ¦  «        t          |	                     d¦  «        ¦  «        ¬¦  «        }|                     |¦  «         |S )Nrx   FÚcolorr-   Ú{ú}colorÚrÚgÚb©rü   rý   rþ   rB   g      ð?©rü   rý   rþ   rB   Úsizeú}size)rÖ   Ú	thicknessú
}thicknessÚshapeÚhttpú}shapeÚimage)rÖ   ÚuriÚpositionú	}positionÚxÚyÚz©r  r  r  )r¯   rf   r2   r   r/   r    rƒ   Ú
startswith)
rY   Úelementr¸   rx   rù   rç   r  r  r  r
  s
             r   rµ   zGEXFWriter.add_viz?  s  € Ø�mŠm˜E 5Ñ)Ô)ˆØñ 0	"Ø—G’G˜GÑ$Ô$ˆEØÑ Ø”< 5Ò(Ð(ÝØ1˜Tœ[Ð1Ð1Ð1Ý˜eŸiši¨™nœnÑ-Ô-Ý˜eŸiši¨™nœnÑ-Ô-Ý˜eŸiši¨™nœnÑ-Ô-ð	ñ ô �A�Aõ  Ø1˜Tœ[Ð1Ð1Ð1Ý˜eŸiši¨™nœnÑ-Ô-Ý˜eŸiši¨™nœnÑ-Ô-Ý˜eŸiši¨™nœnÑ-Ô-Ý˜eŸiši¨¨SÑ1Ô1Ñ2Ô2ðñ ô �Að —’˜qÑ!Ô!Ð!à—7’7˜6‘?”?ˆDØÐÝÐ4 ¤Ð4Ð4Ð4½CÀ¹I¼IÐFÑFÔF�Ø—’˜qÑ!Ô!Ð!àŸš Ñ,Ô,ˆIØÐ$ÝÐ9 ¤Ð9Ð9Ð9ÅÀYÁÄÐPÑPÔP�Ø—’˜qÑ!Ô!Ð!à—G’G˜GÑ$Ô$ˆEØÐ Ø×#Ò# FÑ+Ô+ð MÝØ1˜Tœ[Ð1Ð1Ð1¸ÅcÈ%ÁjÄjðñ ô �A�Aõ  Ð 9 T¤[Ð 9Ð 9Ð 9ÅÀUÁÄÐLÑLÔL�AØ—’˜qÑ!Ô!Ð!à—w’w˜zÑ*Ô*ˆHØÐ#ÝØ0˜œÐ0Ð0Ð0Ý˜(Ÿ,š, sÑ+Ô+Ñ,Ô,Ý˜(Ÿ,š, sÑ+Ô+Ñ,Ô,Ý˜(Ÿ,š, sÑ+Ô+Ñ,Ô,ð	ñ ô �ð —’˜qÑ!Ô!Ð!ØÐr   c                 óþ   — |                      dd¦  «        }|rdt          d¦  «        }|D ]=}t          d¦  «        }t          |¦  «        |j        d<   |                     |¦  «         Œ>|                     |¦  «         |S )NÚparentsFÚparentrÕ   )r¯   r   r    rà   rƒ   )rY   r»   r¸   r  Úparents_elementÚprç   s          r   r²   zGEXFWriter.add_parentst  sˆ   € Ø—-’- 	¨5Ñ1Ô1ˆØð 	1Ý% iÑ0Ô0ˆOØð *ð *�Ý˜HÑ%Ô%�Ý"% a¡&¤&�”˜‘Ø×&Ò& qÑ)Ô)Ð)Ð)Ø×Ò Ñ0Ô0Ð0ØÐr   c                 ó  — |                      dd¦  «        }|rmt          d¦  «        }|D ]F\  }}t          dt          |¦  «        t          |¦  «        ¬¦  «        }|                     |¦  «         ŒG|                     |¦  «         |S )NÚslicesFÚslice)r«   r¬   )r¯   r   r    rƒ   )rY   Únode_or_edge_elementÚnode_or_edge_datar  Úslices_elementr«   r¬   rç   s           r   r³   zGEXFWriter.add_slices  s�   € Ø"×&Ò& x°Ñ7Ô7ˆØð 	8Ý$ XÑ.Ô.ˆNØ$ð )ð )‘
��sÝ˜G­3¨u©:¬:½3¸s¹8¼8ÐDÑDÔD�Ø×%Ò% aÑ(Ô(Ð(Ð(Ø ×'Ò'¨Ñ7Ô7Ð7Ø Ð r   c                 óŽ  — |                      dd¦  «        }|r¬t          d¦  «        }|D ]…\  }}t          d¦  «        }|�,t          |¦  «        |j        d<   |                      |¦  «         |�,t          |¦  «        |j        d<   |                      |¦  «         |                     |¦  «         Œ†|                     |¦  «         |S )NÚspellsFÚspellr«   r¬   )r¯   r   r    rà   r±   rƒ   )rY   r  r  r  Úspells_elementr«   r¬   rç   s           r   r´   zGEXFWriter.add_spells‰  sÓ   € Ø"×&Ò& x°Ñ7Ô7ˆØð 	8Ý$ XÑ.Ô.ˆNØ$ð )ð )‘
��sÝ˜GÑ$Ô$�ØÐ$Ý(+¨E©
¬
�A”H˜WÑ%Ø×4Ò4°UÑ;Ô;Ð;Ø�?Ý&)¨#¡h¤h�A”H˜U‘OØ×4Ò4°SÑ9Ô9Ð9Ø×%Ò% aÑ(Ô(Ð(Ð(Ø ×'Ò'¨Ñ7Ô7Ð7Ø Ð r   c                 ór  — |�²t          |t          ¦  «        rd}nDt          |t          ¦  «        rd}n,t          |t          ¦  «        rd}nt	          j        d¦  «        ‚| j                             d|¦  «         | j                             d¦  «        dk    r| j                             dd¦  «         d S d S d S )	NÚdater7   r:   z2timeformat should be of the type int, float or strÚ
timeformatr   r|   r{   )	rÞ   r    r6   r=   rg   rh   rŸ   r€   rf   )rY   Ústart_or_endr#  s      r   r±   z&GEXFWriter.alter_graph_mode_timeformat™  sÑ   € àÐ#Ý˜,­Ñ,Ô,ð 	Ø#�
�
Ý˜L­%Ñ0Ô0ð Ø%�
�
Ý˜L­#Ñ.Ô.ð Ø#�
�
åÔ&ØHñô ð ð Ô×"Ò" <°Ñ<Ô<Ð<àÔ!×%Ò% fÑ-Ô-°Ò9Ð9ØÔ"×&Ò& v¨yÑ9Ô9Ð9Ð9Ð9ð $Ð#ð :Ð9r   c                 óª   — | j         r|                      | j        ¦  «         t          | j        ¦  «        }|                     || j        d¬¦  «         d S )NT)r   Úxml_declaration)r   r�   r}   r   r   r   )rY   ÚfhÚdocuments      r   r   zGEXFWriter.write«  sP   € àÔð 	"Ø�KŠK˜œÑ!Ô!Ð!Ý˜tœxÑ(Ô(ˆØ�Š�r D¤MÀ4ˆÑHÔHÐHÐHÐHr   r   c                 óÂ  — dd|z  z   }t          |¦  «        rš|j        r|j                             ¦   «         s
|dz   |_        |j        r|j                             ¦   «         s||_        |D ]}|                      ||dz   ¦  «         Œ|j        r|j                             ¦   «         s	||_        d S d S |r)|j        r|j                             ¦   «         s||_        d S d S d S )Nú
z  r   )rÛ   r   ÚstripÚtailr�   )rY   ÚelemÚlevelÚis       r   r�   zGEXFWriter.indent²  s  € à�4˜%‘<ÑˆÝˆt‰9Œ9ð 	Ø”9ð % D¤I§O¢OÑ$5Ô$5ð %Ø ™H�”	Ø”9ð  D¤I§O¢OÑ$5Ô$5ð Ø�”	Øð -ð -�Ø—’˜D %¨!¡)Ñ,Ô,Ð,Ð,Ø”9ð  D¤I§O¢OÑ$5Ô$5ð Ø�”	�	�	ðð ð ð ˜dœið ¨t¬y¯ªÑ/@Ô/@ð Ø�”	�	�	ðð ð ð r   )Nr   Tr   )r   )rk   rl   rm   r�   r’   r   r    r¡   r¶   rß   rµ   r²   r³   r´   r±   r   r�   rp   r   r   r   r   '  s  € € € € € ð GQð)"ð )"ð )"ð )"ðVð ð ð'ð 'ð 'ð.%,ð %,ð %,ðNB,ð B,ð B,ðH@ð @ð @ðDð ð ð@3ð 3ð 3ðj	ð 	ð 	ð!ð !ð !ð!ð !ð !ð :ð :ð :ð$Ið Ið Iðð ð ð ð ð r   r   c                   óZ   — e Zd Zdd„Zd„ Zd„ Zdd„Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ ZdS )r'   Nr   c                 ót   — |                       ¦   «          || _        d| _        |                      |¦  «         d S )NT)r\   r&   Úsimple_graphrj   )rY   r&   r   s      r   r�   zGEXFReader.__init__Æ  s=   € Ø×ÒÑÔÐØ"ˆŒà ˆÔØ×Ò˜Ñ!Ô!Ð!Ð!Ð!r   c                 ó~  — t          |¬¦  «        | _        | j                             d| j        › d�¦  «        }|�|                      |¦  «        S | j        D ]S}|                      |¦  «         | j                             d| j        › d�¦  «        }|�|                      |¦  «        c S ŒTt          j        d¦  «        ‚)N)Úfilerú   z}graphz No <graph> element in GEXF file.)	r   r}   Úfindr.   Ú
make_graphre   rj   rg   rh   )rY   Ústreamrý   r   s       r   Ú__call__zGEXFReader.__call__Í  sÆ   € Ý FÐ+Ñ+Ô+ˆŒØŒH�MŠMÐ4˜tœ|Ð4Ð4Ð4Ñ5Ô5ˆØˆ=Ø—?’? 1Ñ%Ô%Ð%à”}ð 	*ð 	*ˆGØ×Ò˜WÑ%Ô%Ð%Ø”—’Ð8 4¤<Ð8Ð8Ð8Ñ9Ô9ˆAØˆ}Ø—’ qÑ)Ô)Ð)Ð)Ð)ð åÔÐAÑBÔBÐBr   c                 óF  — |                      dd ¦  «        }|dk    rt          j        ¦   «         }nt          j        ¦   «         }|                      dd¦  «        }|dk    r
||j        d<   |                      d¦  «        }|�
||j        d<   |                      d¦  «        }|�
||j        d<   |                      dd¦  «        }|dk    rd|j        d<   n
d	|j        d<   |                      d
¦  «        | _        | j        dk    rd| _        |                     d| j        › d�¦  «        }i }	i }
i }i }|D ]½}|                      d¦  «        }|dk    rM|                      |¦  «        \  }}|	 	                    |¦  «         |
 	                    |¦  «         |
|j        d<   Œj|dk    rM|                      |¦  «        \  }}| 	                    |¦  «         | 	                    |¦  «         ||j        d<   Œ½‚ ddd	ddœi}i }| 	                    |¦  «         | 	                    |¦  «         ||j        d<   | 
                    d| j        › d�¦  «        }|�8|                     d| j        › d�¦  «        D ]}|                      |||	¦  «         Œ| 
                    d| j        › d�¦  «        }|�8|                     d| j        › d�¦  «        D ]}|                      |||¦  «         Œ| j        r=|                     ¦   «         rt          j        |¦  «        }nt          j        |¦  «        }|S )Nr›   r—   r™   rš   r«   r¬   r   r{   r|   r#  r"  r9   rú   z}attributesrì   ry   r­   rz   rÉ   rÅ   r7   )rÆ   r   ré   ú}nodesú}nodez}edgesz}edge)rf   rg   ÚMultiDiGraphÚ
MultiGraphrŠ   r#  rí   r.   Úfind_gexf_attributesrÁ   r5  Úadd_nodeÚadd_edger2  rž   ÚDiGraphÚGraph)rY   Ú	graph_xmlÚedgedefaultr   Ú
graph_nameÚgraph_startÚ	graph_endÚ
graph_modeÚattributes_elementsÚ	node_attrr­   Ú	edge_attrrÉ   rB   Ú
attr_classÚnaÚndÚeaÚedr·   Únode_xmlrÊ   Úedge_xmls                          r   r6  zGEXFReader.make_graphÚ  sx  € à—m’mÐ$5°tÑ<Ô<ˆØ˜*Ò$Ð$Ý”Ñ!Ô!ˆAˆAå”‘”ˆAð —]’] 6¨2Ñ.Ô.ˆ
Ø˜ÒÐØ(ˆAŒG�F‰OØ—m’m GÑ,Ô,ˆØÐ"Ø*ˆAŒG�GÑØ—M’M %Ñ(Ô(ˆ	ØÐ Ø&ˆAŒG�E‰NØ—]’] 6¨2Ñ.Ô.ˆ
Ø˜Ò"Ð"Ø'ˆAŒG�F‰OˆOà&ˆAŒG�F‰Oð $Ÿ-š-¨Ñ5Ô5ˆŒØŒ?˜fÒ$Ð$Ø&ˆDŒOð (×/Ò/Ð0O°T´\Ð0OÐ0OÐ0OÑPÔPÐàˆ	ØˆØˆ	ØˆØ$ð 	ð 	ˆAØŸš˜w™œˆJØ˜VÒ#Ð#Ø×2Ò2°1Ñ5Ô5‘��BØ× Ò  Ñ$Ô$Ð$Ø×#Ò# BÑ'Ô'Ð'Ø*6�”˜Ñ'Ð'Ø˜vÒ%Ð%Ø×2Ò2°1Ñ5Ô5‘��BØ× Ò  Ñ$Ô$Ð$Ø×#Ò# BÑ'Ô'Ð'Ø*6�”˜Ñ'Ð'àð  °8ÀhÐOÐOÐPˆØˆØ×Ò˜ÑÔÐØ×Ò˜BÑÔÐØ".ˆŒ�Ñð "ŸšÐ'A¨D¬LÐ'AÐ'AÐ'AÑBÔBˆØÐ$Ø)×1Ò1Ð2K°t´|Ð2KÐ2KÐ2KÑLÔLð 6ð 6�Ø—’˜a ¨9Ñ5Ô5Ð5Ð5ð "ŸšÐ'A¨D¬LÐ'AÐ'AÐ'AÑBÔBˆØÐ$Ø)×1Ò1Ð2K°t´|Ð2KÐ2KÐ2KÑLÔLð 6ð 6�Ø—’˜a ¨9Ñ5Ô5Ð5Ð5ð Ôð 	 Ø�}Š}‰Œð  Ý”J˜q‘M”M��å”H˜Q‘K”K�Øˆr   c                 óÆ  — |                       ||¦  «        }|                      ||¦  «        }| j        dk    r|                      ||¦  «        }n|                      ||¦  «        }|                      ||¦  «        }|                      ||¦  «        }|                     d¦  «        }| j        �|                      |¦  «        }|                     d¦  «        }||d<   |                     d|¦  «        }|�||d<   | 	                    d| j
        › d�¦  «        }|�:|                     d| j
        › d�¦  «        D ]}|                      ||||¬¦  «         Œ |j        |fi |¤Ž d S )	Nr-   r–   r©   rª   rú   r:  r;  )Únode_pid)Údecode_attr_elementsr²   r2   r³   r´   rµ   Úadd_start_endrf   r&   r5  r.   rí   r?  )	rY   r   rQ  rJ  rT  r•   r¹   Ú
node_labelÚsubnodess	            r   r?  zGEXFReader.add_node)  sˆ  € ð ×(Ò(¨°HÑ=Ô=ˆØ×Ò  hÑ/Ô/ˆØŒ<˜5Ò Ð Ø—?’? 4¨Ñ2Ô2ˆDˆDà—?’? 4¨Ñ2Ô2ˆDØ�|Š|˜D (Ñ+Ô+ˆØ×!Ò! $¨Ñ1Ô1ˆð —,’,˜tÑ$Ô$ˆØŒ>Ð%Ø—n’n WÑ-Ô-ˆGð —\’\ 'Ñ*Ô*ˆ
Ø"ˆˆW‰ð —<’<  xÑ0Ô0ˆØÐØ"ˆD�‰Kð —=’=Ð!; d¤lÐ!;Ð!;Ð!;Ñ<Ô<ˆØÐØ$×,Ò,Ð-F°$´,Ð-FÐ-FÐ-FÑGÔGð Hð H�Ø—’˜a ¨9¸w�ÑGÔGÐGÐGàˆŒ
�7Ð#Ð#˜dÐ#Ð#Ð#Ð#Ð#r   c                 óÔ   — | j         }|                     d¦  «        }|� | j        |         |¦  «        |d<   |                     d¦  «        }|� | j        |         |¦  «        |d<   |S )Nr«   r¬   )r#  rf   rX   )rY   r•   r}   ÚttypeÚ
node_startÚnode_ends         r   rV  zGEXFReader.add_start_endL  sp   € à”ˆØ—W’W˜WÑ%Ô%ˆ
ØÐ!Ø3˜DÔ,¨UÔ3°JÑ?Ô?ˆD�‰MØ—7’7˜5‘>”>ˆØÐØ1˜$Ô*¨5Ô1°(Ñ;Ô;ˆD�‰KØˆr   c           	      ó`  — i }|                      d| j        › d�¦  «        }|�� | j        dk    rjt          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        dœ|d<   n‹t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        t          |                     d¦  «        ¦  «        t          |                     d	d
¦  «        ¦  «        dœ|d<   |                      d| j        › d�¦  «        }|�%t          |                     d¦  «        ¦  «        |d<   |                      d| j        › d�¦  «        }|�%t          |                     d¦  «        ¦  «        |d<   |                      d| j        › d�¦  «        }|�<|                     d¦  «        |d<   |d         dk    r|                     d¦  «        |d<   |                      d| j        › d�¦  «        }|�lt          |                     dd¦  «        ¦  «        t          |                     dd¦  «        ¦  «        t          |                     dd¦  «        ¦  «        dœ|d<   t          |¦  «        dk    r||d<   |S )Nrú   rû   r-   rü   rý   rþ   rÿ   rù   rB   r   r   r  rÖ   r  r  r  r  r  r  r	  r  r  r   r  r  r  r
  rx   )r5  r/   r2   r=   rf   r6   rÛ   )	rY   r•   rQ  rx   rù   r  r  r  r
  s	            r   rµ   zGEXFReader.add_vizW  sx  € àˆØ—’Ð7 4¤;Ð7Ð7Ð7Ñ8Ô8ˆØÑØŒ|˜uÒ$Ð$å˜UŸYšY s™^œ^Ñ,Ô,Ý˜UŸYšY s™^œ^Ñ,Ô,Ý˜UŸYšY s™^œ^Ñ,Ô,ð ð  ��G‘�õ ˜UŸYšY s™^œ^Ñ,Ô,Ý˜UŸYšY s™^œ^Ñ,Ô,Ý˜UŸYšY s™^œ^Ñ,Ô,Ý˜uŸyšy¨¨aÑ0Ô0Ñ1Ô1ð	 ð  ��G‘ð �}Š}Ð5 $¤+Ð5Ð5Ð5Ñ6Ô6ˆØÐÝ §¢¨Ñ 1Ô 1Ñ2Ô2ˆC�‰Kà—M’MÐ"? t¤{Ð"?Ð"?Ð"?Ñ@Ô@ˆ	ØÐ Ý$ Y§]¢]°7Ñ%;Ô%;Ñ<Ô<ˆC�Ñà—’Ð7 4¤;Ð7Ð7Ð7Ñ8Ô8ˆØÐØ Ÿ9š9 WÑ-Ô-ˆC�‰LØ�7Œ|˜wÒ&Ð&Ø$Ÿyšy¨Ñ/Ô/��G‘à—=’=Ð!= d¤kÐ!=Ð!=Ð!=Ñ>Ô>ˆØÐå˜8Ÿ<š<¨¨QÑ/Ô/Ñ0Ô0Ý˜8Ÿ<š<¨¨QÑ/Ô/Ñ0Ô0Ý˜8Ÿ<š<¨¨QÑ/Ô/Ñ0Ô0ðð ˆC�
‰Oõ ˆs‰8Œ8�aŠ<ˆ<ØˆD�‰KØˆr   c                 óò   — |                      d| j        › d�¦  «        }|�Vg |d<   |                     d| j        › d�¦  «        D ]2}|                     d¦  «        }|d                              |¦  «         Œ3|S )Nrú   z}parentsr  z}parentrÕ   ©r5  r.   rí   rf   rƒ   )rY   r•   rQ  r  r  r  s         r   r²   zGEXFReader.add_parents„  sŠ   € Ø"Ÿ-š-Ð(D¨T¬\Ð(DÐ(DÐ(DÑEÔEˆØÐ&Ø ˆD�‰OØ$×,Ò,Ð-H°$´,Ð-HÐ-HÐ-HÑIÔIð /ð /�ØŸš˜u™œ�Ø�Y”×&Ò& vÑ.Ô.Ð.Ð.Øˆr   c                 ó   — |                      d| j        › d�¦  «        }|�mg |d<   |                     d| j        › d�¦  «        D ]I}|                     d¦  «        }|                     d¦  «        }|d                              ||f¦  «         ŒJ|S )Nrú   z}slicesr  z}slicer«   r¬   r_  )rY   r•   Únode_or_edge_xmlr  r‘   r«   r¬   s          r   r³   zGEXFReader.add_slices�  sŸ   € Ø)×.Ò.Ð/J°D´LÐ/JÐ/JÐ/JÑKÔKˆØÐ%ØˆD�‰NØ#×+Ò+Ð,F°´Ð,FÐ,FÐ,FÑGÔGð 4ð 4�ØŸš˜g™œ�Ø—e’e˜E‘l”l�Ø�X”×%Ò% u¨c lÑ3Ô3Ð3Ð3Øˆr   c                 ó~  — |                      d| j        › d�¦  «        }|�œg |d<   | j        }|                     d| j        › d�¦  «        D ]q} | j        |         |                     d¦  «        ¦  «        } | j        |         |                     d¦  «        ¦  «        }|d                              ||f¦  «         Œr|S )Nrú   z}spellsr  z}spellr«   r¬   )r5  r.   r#  rí   rX   rf   rƒ   )rY   r•   ra  r   rZ  r‘   r«   r¬   s           r   r´   zGEXFReader.add_spells—  sÊ   € Ø)×.Ò.Ð/J°D´LÐ/JÐ/JÐ/JÑKÔKˆØÐ%ØˆD�‰NØ”OˆEØ#×+Ò+Ð,F°´Ð,FÐ,FÐ,FÑGÔGð 4ð 4�Ø/˜Ô(¨Ô/°·²°g±´Ñ?Ô?�Ø-�dÔ& uÔ-¨a¯eªe°E©l¬lÑ;Ô;�Ø�X”×%Ò% u¨c lÑ3Ô3Ð3Ð3Øˆr   c                 óê  — |                      d¦  «        }|                     ¦   «         r|dk    rt          j        d¦  «        ‚|                     ¦   «         s|dk    rt          j        d¦  «        ‚|                      d¦  «        }|                      d¦  «        }| j        �*|                      |¦  «        }|                      |¦  «        }|                      ||¦  «        }|                      ||¦  «        }| j        dk    r|                      ||¦  «        }n|  	                    ||¦  «        }|                      d	¦  «        }|�||d	<   | 
                    d
d ¦  «        }	|	�|	}|                      d¦  «        }
|
�t          |
¦  «        |d<   |                      d¦  «        }|�||d<   |                     ||¦  «        rd| _         |j        ||fd|i|¤Ž |dk    r |j        ||fd|i|¤Ž d S d S )NrÆ   r˜   z(Undirected edge found in directed graph.r—   z(Directed edge found in undirected graph.rÇ   rÈ   r-   r–   rÓ   rÅ   r©   Fr¿   Úmutual)rf   rž   rg   rh   r&   rU  rV  r2   r³   r´   r¯   r6   Úhas_edger2  r@  )rY   r   rÐ   rK  Úedge_directionrÇ   rÈ   r•   r†   Úmultigraph_keyrÅ   rË   s               r   r@  zGEXFReader.add_edge¢  s)  € ð &×)Ò)¨&Ñ1Ô1ˆØ�=Š=‰?Œ?ð 	O˜~°Ò=Ð=ÝÔ"Ð#MÑNÔNÐNØ—’‘”ð 	O ^°zÒ%AÐ%AÝÔ"Ð#MÑNÔNÐNð ×!Ò! (Ñ+Ô+ˆØ×!Ò! (Ñ+Ô+ˆØŒ>Ð%Ø—^’^ FÑ+Ô+ˆFØ—^’^ FÑ+Ô+ˆFà×(Ò(¨°LÑAÔAˆØ×!Ò! $¨Ñ5Ô5ˆàŒ<˜5Ò Ð Ø—?’? 4¨Ñ6Ô6ˆDˆDà—?’? 4¨Ñ6Ô6ˆDð
 ×"Ò" 4Ñ(Ô(ˆØÐØ ˆD�‰Jð Ÿš .°$Ñ7Ô7ˆØÐ%Ø$ˆGà×!Ò! (Ñ+Ô+ˆØÐÝ" 6™]œ]ˆD�‰Nà!×%Ò% gÑ.Ô.ˆ
ØÐ!Ø&ˆD�‰Mà�:Š:�f˜fÑ%Ô%ð 	&à %ˆDÔØˆŒ
�6˜6Ð7Ð7 wÐ7°$Ð7Ð7Ð7Ø˜XÒ%Ð%ØˆAŒJ�v˜vÐ;Ð;¨7Ð;°dÐ;Ð;Ð;Ð;Ð;ð &Ð%r   c                 ó
  — i }|                      d| j        › d�¦  «        }|��_|                     d| j        › d�¦  «        D �]?}|                     d¦  «        }	 ||         d         }n+# t          $ r}t          j        d|› d�¦  «        |‚d }~ww xY w||         d         }	|                     d	¦  «        }
|	d
k    r| j        |
         }
n | j        |	         |
¦  «        }
||         d         dk    rˆ| j	        } | j        |         |                     d¦  «        ¦  «        } | j        |         |                     d¦  «        ¦  «        }||v r ||          
                    |
||f¦  «         �Œ/|
||fg||<   �Œ:|
||<   �ŒA|S )Nrú   z
}attvaluesz	}attvaluerÕ   ré   zNo attribute defined for=rd   rÆ   rÖ   r8   r   r{   r«   r¬   )r5  r.   rí   rf   r°   rg   rh   ro   rX   r#  rƒ   )rY   Ú	gexf_keysÚobj_xmlr‰   Úattr_elementrB   r¿   ré   ÚerrÚatyperÖ   rZ  r«   r¬   s                 r   rU  zGEXFReader.decode_attr_elementsÖ  s¾  € àˆà—|’|Ð$B¨¬Ð$BÐ$BÐ$BÑCÔCˆØÑ#à!×)Ò)Ð*G¨t¬|Ð*GÐ*GÐ*GÑHÔHð (ñ (�Ø—e’e˜E‘l”l�ðXØ% cœN¨7Ô3�E�EøÝð Xð Xð XÝÔ*Ð+MÀsÐ+MÐ+MÐ+MÑNÔNÐTWÐWøøøøðXøøøà! #œ vÔ.�ØŸš˜g™œ�Ø˜IÒ%Ð%Ø Ô-¨eÔ4�E�Eà3˜DÔ,¨UÔ3°EÑ:Ô:�EØ˜S”> &Ô)¨YÒ6Ð6ð !œO�EØ3˜DÔ,¨UÔ3°A·E²E¸'±N´NÑCÔC�EØ1˜$Ô*¨5Ô1°!·%²%¸±,´,Ñ?Ô?�CØ �}�}Ø˜Uœ×*Ò*¨E°5¸#Ð+>Ñ?Ô?Ð?Ñ?à(-¨u°cÐ':Ð&;˜˜U™™ð #(�D˜‘K‘KØˆs   ÁA*Á*
BÁ4BÂBc                 óÀ  — i }i }|                      d¦  «        }|                     d| j        › d�¦  «        D ]£}|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|||dœ||<   |                     d| j        › d�¦  «        }	|	�9|d	k    r| j        |	j                 }
n | j        |         |	j        ¦  «        }
|
||<   Œ¤||fS )
Nr   rú   z
}attributer–   ré   rÆ   )ré   rÆ   r   z}defaultr8   )rf   rí   r.   r5  ro   r   rX   )rY   rõ   ÚattrsÚdefaultsr   rä   r‡   ré   rm  r¦   rÖ   s              r   r>  zGEXFReader.find_gexf_attributesø  sø   € àˆØˆØ!×%Ò% fÑ-Ô-ˆØ#×+Ò+Ð,J°´Ð,JÐ,JÐ,JÑKÔKð 	(ð 	(ˆAØ—e’e˜D‘k”kˆGØ—E’E˜'‘N”NˆEØ—E’E˜&‘M”MˆEØ',°eÀTÐJÐJˆE�'‰Nà—f’fÐ9 $¤,Ð9Ð9Ð9Ñ:Ô:ˆGØÐ"Ø˜IÒ%Ð%Ø Ô-¨g¬lÔ;�E�Eà3˜DÔ,¨UÔ3°G´LÑAÔA�EØ"'�˜‘øØ�hˆÐr   )Nr   r?   )rk   rl   rm   r�   r8  r6  r?  rV  rµ   r²   r³   r´   r@  rU  r>  rp   r   r   r'   r'   Ã  sÝ   € € € € € ð"ð "ð "ð "ðCð Cð CðMð Mð Mð^!$ð !$ð !$ð !$ðF	ð 	ð 	ð+ð +ð +ðZð ð ðð ð ð	ð 	ð 	ð2<ð 2<ð 2<ðh ð  ð  ðDð ð ð ð r   r'   c                 ó¸  ‡ ‡— 	 ˆ fd„‰ D ¦   «         Šn'# t           $ r}t          j        d¦  «        |‚d}~ww xY wt          ‰Ž \  }}t	          t          |¦  «        ¦  «        t	          ‰ ¦  «        k    rt          j        d¦  «        ‚t          ‰¦  «        Št          j        ‰ ‰¦  «        }‰ D ]¬}‰|         }||j        |         d<   |j        |          	                    d¦  «         d|j        |         v r'‰‰ j        |         d                  |j        |         d<   d|j        |         v r-ˆfd	„‰ j        |         d         D ¦   «         |j        |         d<   Œ­|S )
a  Relabel graph using "label" node keyword for node label.

    Parameters
    ----------
    G : graph
       A NetworkX graph read from GEXF data

    Returns
    -------
    H : graph
      A NetworkX graph with relabeled nodes

    Raises
    ------
    NetworkXError
        If node labels are missing or not unique while relabel=True.

    Notes
    -----
    This function relabels the nodes in a NetworkX graph with the
    "label" attribute.  It also handles relabeling the specific GEXF
    node attributes "parents", and "pid".
    c                 ó:   •— g | ]}|‰j         |         d          f‘ŒS )r©   )r¨   )rA   r¢   r   s     €r   ú
<listcomp>z&relabel_gexf_graph.<locals>.<listcomp>'  s)   ø€ Ð7Ð7Ð7°�A�q”w˜q”z 'Ô*Ð+Ð7Ð7Ð7r   zFFailed to relabel nodes: missing node labels found. Use relabel=False.NzHFailed to relabel nodes: duplicate node labels found. Use relabel=False.r–   r©   rª   r  c                 ó    •— g | ]
}‰|         ‘ŒS rp   rp   )rA   r  Úmappings     €r   rs  z&relabel_gexf_graph.<locals>.<listcomp>;  s   ø€ Ð$OÐ$OÐ$O°A W¨Q¤ZÐ$OÐ$OÐ$Or   )
r°   rg   rh   ÚziprÛ   r€   rF   Úrelabel_nodesr¨   r¯   )r   rl  r  r  ÚHÚnÚmru  s   `      @r   r   r     sz  øø€ ð2Ø7Ð7Ð7Ð7°QÐ7Ñ7Ô7ˆˆøÝð ð ð ÝÔØTñ
ô 
àð	øøøøðøøøõ �ˆ=�D€A€qÝ
�3ˆq‰6Œ6�{„{•c˜!‘f”fÒÐÝÔØVñ
ô 
ð 	
õ �7‰mŒm€GÝ
Ô˜˜GÑ$Ô$€Aàð Pð PˆØ�AŒJˆØˆŒ�Œ
�4ÑØ	Œ�Œ
�Š�wÑÔÐØ�A”G˜A”JÐÐØ '¨¬°¬
°5Ô(9Ô :ˆAŒG�AŒJ�uÑØ˜œ œ
Ð"Ð"Ø$OÐ$OÐ$OÐ$O¸¼À¼ÀIÔ9NÐ$OÑ$OÔ$OˆAŒG�AŒJ�yÑ!øØ€Hs   „ “
7�2²7)r   Tr   )NFr   )Ú__doc__r„   r�   Úxml.etree.ElementTreer   r   r   r   r   Únetworkxrg   Únetworkx.utilsr   Ú__all__r	   r   Ú_dispatchabler
   r+   r   r'   r   rp   r   r   ú<module>r�     sÛ  ððð ð& Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $à
LÐ
LÐ
L€ð €ˆ1�4ÐÑÔð;ð ;ð ;ñ Ôð;ð|*(ð *(ð *(ð *(ðZ €ˆ1�4ÐÑÔØ€Ô˜¨TÐ2Ñ2Ô2ð(ð (ð (ñ 3Ô2ñ Ôð(ðVgð gð gð gð gñ gô gð gðTYð Yð Yð Yð Y�ñ Yô Yð YðxGð Gð Gð Gð G�ñ Gô Gð GðT
/ð /ð /ð /ð /r   