Ë
    :vžjT  ã                   ó¶  — d dl Z d dlZd dlZd dlmZ d dlZddlm	Z	m
Z
 ddlmZ ddlmZ ddlmZ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 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& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 	 ddl5m6Z6m7Z7 de:e;   fd„Z<de:e;   fd„Z=	 	 	 	 d0d ed!e;dz  d"e	j|                  dz  d#e;dz  d$e?defd%„Z@	 	 	 	 	 d1d ed!e;dz  d"e	j|                  dz  d$e?d&eAdz  d'edz  defd(„ZBdefd)„ZCd2d*„ZDd+e;defd,„ZEdefd-„ZF	 	 	 d3d!e;dz  d"e	j|                  dz  d$e?d'edz  def
d.„ZGeDeDeDeDd/œZHi ZIeIj•                  e$«       eIj•                  e,«       eIj•                  e*«       eIj•                  e&«       eIj•                  e(«       eIj•                  e!«       eIj•                  e#«       eIj•                  e2«       eIj•                  e.«       eIj•                  e0«       eIj•                  e4«       eIj•                  e«       i ZKeKj•                  e«       y# e8$ rZ9 ee9«      Z6de:fd„Z7Y dZ9[9�Œ§dZ9[9ww xY w)4é    N)Údeepcopyé   )Ú	resolversÚutil)ÚTrimesh)ÚExceptionWrapper)ÚGeometryÚ
LoadSource©Ú
PointCloud)ÚSceneÚappend_scenes)ÚHttpSessionLikeÚLoadable)Úlogé   )Úmisc)Ú_binvox_loaders)Ú_cascade_loaders)Ú_collada_loaders)Ú_gltf_loaders)Ú_misc_loaders)Ú_obj_loaders)Ú_off_loaders)Ú_ply_loaders)Ú_stl_loaders)Ú_threedxml_loaders)Ú_three_loaders)Ú_xaml_loaders)Ú_xyz_loaders)Ú	load_pathÚpath_formatsÚreturnc                  ó   — t        «       S ©N)Úset© ó    úf/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/trimesh/exchange/load.pyr"   r"   &   s	   € Ü‹uˆr(   c                  ó~   — t         j                  «       D � �ch c]  \  } }t        |t        «      rŒ| ’Œ c}} S c c}} w )z§
    Get a list of mesh formats available to load.

    Returns
    -----------
    loaders
      Extensions of available mesh loaders
      i.e. `{'stl', 'ply'}`
    )Úmesh_loadersÚitemsÚ
isinstancer   )ÚkÚvs     r)   Úmesh_formatsr0   *   s5   € ô '×,Ñ,Ô.ÔVÑ.‘$�!�Q´jÀÔDTÕ6UŠAÐ.ÒVÐVùÓVs   ˜9±9c                  ó’   — t        «       } | j                  t        «       «       | j                  t        j	                  «       «       | S )z¤
    Get a list of all available loaders


    Returns
    -----------
    loaders
      Extensions of all available loaders
      i.e. `{'stl', 'ply', 'dxf'}`
    )r0   Úupdater"   Úcompressed_loadersÚkeys)Úloaderss    r)   Úavailable_formatsr6   8   s4   € ô ‹n€GØ‡N�N”<“>Ô"Ø‡N�NÔ%×*Ñ*Ó,Ô-à€Nr(   Úfile_objÚ	file_typeÚresolverÚforceÚallow_remotec                 óì  — t        d	| |||dœ|¤Ž}|dk(  r%t        j                  d«       |j                  «       S |dk(  rt        j                  d«       |S |j                  j
                  }h d£}||vrt        |j                  «      dk(  rgt        t        |j                  j                  «       «      «      }	|	j                  j                  |j                  «       t        |	t        «      s|dv r|	S |S )
aû  
    THIS FUNCTION IS DEPRECATED but there are no current plans for it to be removed.

    For new code the typed load functions `trimesh.load_scene` or `trimesh.load_mesh`
    are recommended over `trimesh.load` which is a backwards-compatibility wrapper
    that mimics the behavior of the old function and can return any geometry type.

    Parameters
    -----------
    file_obj : str, or file- like object
      The source of the data to be loadeded
    file_type: str
      What kind of file type do we have (eg: 'stl')
    resolver : trimesh.visual.Resolver
      Object to load referenced assets like materials and textures
    force : None or str
      For 'mesh': try to coerce scenes into a single mesh
      For 'scene': try to coerce everything into a scene
    allow_remote
      If True allow this load call to work on a remote URL.
    kwargs : dict
      Passed to geometry __init__

    Returns
    ---------
    geometry : Trimesh, Path2D, Path3D, Scene
      Loaded geometry as trimesh classes
    )r7   r8   r9   r;   ÚmeshzO`trimesh.load(force='mesh')` is a compatibility wrapper for `trimesh.load_mesh`ÚscenezQ`trimesh.load(force='scene')` is a compatibility wrapper for `trimesh.load_scene`>   ÚglbÚzipÚgltfÚ3dxmlútar.gzr   >	   ÚdxfÚmshÚobjÚoffÚplyÚstlÚsvgÚxamlÚbinvoxr'   )Ú
load_scener   ÚdebugÚto_meshÚsourcer8   ÚlenÚgeometryÚnextÚiterÚvaluesÚmetadatar2   r-   r   )
r7   r8   r9   r:   r;   ÚkwargsÚloadedÚkindÚalways_sceneÚgeoms
             r)   Úloadr\   J   sñ   € ôL ð ØØØØ!ñ	ð
 ñ€Fð �‚ä�	‰	Ø]ô	
ð �~‰~ÓÐØ	�'Ò	ä�	‰	Ø_ô	
ð ˆð �=‰=×"Ñ"€DÚ<€Là�<Ñ¤C¨¯©Ó$8¸AÒ$=Ü”D˜Ÿ™×/Ñ/Ó1Ó2Ó3ˆØ�‰×Ñ˜VŸ_™_Ô-ä�dœJÔ'¨4ð 
4
ñ 
,
ð ˆKà€Mr(   rV   Úsessionc           
      ó8  — t        | ||||¬«      }	 t        | t        «      rt        | «      }�nI|j                  t        «       v r%t        d|j                  |j                  |dœ|¤Ž}�n|j                  t        v rat        |«      }	|	j                  t        |j                     d|j                  |j                  |j                  |dœ|¤Ž«       t        di |	¤Ž}n›|j                  t        v r#t        |j                  fd|j                  i|¤Ž}nf|j                  t        v r;t        |j                     d|j                  |j                  |j                  dœ|¤Ž}nt        d|j                  › d�«      ‚|j                   r|j                  j#                  «        	 t        |t$        «      s||_        t%        |«      }||_        |j(                  j+                  «       D ]	  }
||
_        Œ |S # |j                   r|j                  j#                  «        w w xY w)	a  
    Load geometry into the `trimesh.Scene` container. This may contain
    any `parent.Geometry` object, including `Trimesh`, `Path2D`, `Path3D`,
    or a `PointCloud`.

    Parameters
    -----------
    file_obj : str, or file- like object
      The source of the data to be loadeded
    file_type: str
      What kind of file type do we have (eg: 'stl')
    resolver : trimesh.visual.Resolver
      Object to load referenced assets like materials and textures
    force : None or str
      For 'mesh': try to coerce scenes into a single mesh
      For 'scene': try to coerce everything into a scene
    allow_remote
      If True allow this load call to work on a remote URL.
    session : HttpSessionLike or None
      Optional HTTP session passed through to a `WebResolver` when loading
      from a URL. Accepts `httpx.Client` or `requests.Session`.
    kwargs : dict
      Passed to geometry __init__

    Returns
    ---------
    geometry : Trimesh, Path2D, Path3D, Scene
      Loaded geometry as trimesh classes
    )r7   r8   r9   r;   r]   )r7   r8   rV   )r7   r8   r9   rV   r8   ©r7   r8   r9   zfile_type 'z' not supportedr'   )Ú_parse_file_argsr-   ÚdictÚ_load_kwargsr8   r"   r!   r7   r+   r   r2   r9   r3   Ú_load_compressedÚvoxel_loadersÚNotImplementedErrorÚ
was_openedÚcloser   Ú_sourcerR   rU   )r7   r8   r9   r;   rV   r]   rW   ÚargrX   ÚparsedÚgs              r)   rM   rM   ž   sá  € ôP ØØØØ!Øô€Cð+!Ü�h¤Ô%ä! (Ó+ŠFØ�]‰]œl›nÑ,äð ØŸ™ØŸ-™-Ø!ñð ñ	ŠFð �]‰]œlÑ*ä˜fÓ%ˆFØ�M‰MÜ˜SŸ]™]Ñ+ð Ø Ÿ\™\Ø!Ÿm™mØ Ÿ\™\Ø%ñ	ð
 ñôô "Ñ+ FÑ+‰Fà�]‰]Ô0Ñ0ä% c§l¡lÑV¸c¿m¹mÐVÈvÑV‰FØ�]‰]œmÑ+Ü" 3§=¡=Ñ1ð ØŸ™ØŸ-™-ØŸ™ñð ñ	‰Fô &¨°C·M±M°?À/Ð&RÓSÐSð
 �>Š>Ø�L‰L×ÑÕ ä�fœeÔ$àˆŒÜ�v“ˆð €F„NØ�_‰_×#Ñ#Ö%ˆØˆ�	ð &ð €Møð �>Š>Ø�L‰L×ÑÕ ð ús   ’E&G0 Ç0)Hc                  ó4   — t        | i |¤Žj                  «       S )aJ  
    Load a file into a Trimesh object.

    Parameters
    -----------
    file_obj : str or file object
      File name or file with mesh data
    file_type : str or None
      Which file type, e.g. 'stl'
    kwargs : dict
      Passed to Trimesh constructor

    Returns
    ----------
    mesh
      Loaded geometry data.
    )rM   rO   )ÚargsrW   s     r)   Ú	load_meshrn     s   € ô$ �tÐ&˜vÑ&×.Ñ.Ó0Ð0r(   c           
      ó¸  — t        | ||¬«      }g }t        j                  |j                  |j                  ¬«      }t        j                  |«      }i }|rt        «       }	nl|j                  «       D �
ch c]%  }
t        j                  |
«      j                  «       ’Œ' }}
|j                  t        «       «      rt        «       }	n
t        «       }	|j                  «       D ]t  \  }} 	 t        j                  |«      j                  «       }|dv rddl}Œ3|dk(  rddl} |j$                  | «      ||<   ŒR||	vrŒW|j'                  t)        d
| ||dœ|¤Ž«       Œv |j0                  r|j                  j3                  «        t5        |«      }t7        |t8        «      r|j:                  j=                  |«       |S c c}
w # t*        $ r t-        j.                  dd¬	«       Y Œüw xY w)aÊ  
    Given a compressed archive load all the geometry that
    we can from it.

    Parameters
    ----------
    file_obj : open file-like object
      Containing compressed data
    file_type : str
      Type of the archive file
    mixed : bool
      If False, for archives containing both 2D and 3D
      data will only load the 3D data into the Scene.

    Returns
    ----------
    scene : trimesh.Scene
      Geometry loaded in to a Scene object
    r_   )r7   r8   )ÚyamlÚymlr   NÚjsonzfailed to load file in zipT)Úexc_infor'   )r`   r   Ú
decompressr7   r8   r   ÚZipResolverr6   r4   Úsplit_extensionÚlowerÚ
isdisjointr0   r"   r,   rp   Ú	safe_loadrr   r\   ÚappendrM   ÚBaseExceptionr   rN   rf   rg   r   r-   r   rV   r2   )r7   r8   r9   ÚmixedrW   ri   Ú
geometriesÚarchiveÚmeta_archiveÚ	availableÚnÚcontainsÚ	file_nameÚcompressed_typerp   rr   Úresults                    r)   rc   rc     s»  € ô,  H¸	ÈHÔ
U€Cð €Jô �o‰o s§|¡|¸s¿}¹}ÔM€GÜ×$Ñ$ WÓ-€Hð €Lñ Ü%Ó'‰	ð >F¿]¹]¼_ÓM¹_¸”D×(Ñ(¨Ó+×1Ñ1Õ3¸_ˆÐMà×Ñœ|›~Ô.Ü$›‰Iä$›ˆIà&Ÿ}™}žÑˆ	�8ð	Cä"×2Ñ2°9Ó=×CÑCÓEˆOð  /Ñ1Ûàà  FÒ*Ûà*3¨$¯)©)°HÓ*=�˜YÑ'ØØ ¨	Ñ1àð ×ÑÜð Ø%Ø-Ø%ñð ñ	õð+  /ðF ‡~‚~Ø�‰×ÑÔô ˜:Ó&€Fô �&œ%Ô Ø�‰×Ñ˜|Ô,à€Mùòi NøôJ ò 	CÜ�I‰IÐ2¸T×Bð	Cús*   Á2*F1Ã#+F6ÄF6Ä.F6Ä3F6Æ6 GÇGÚurlc                 ó   — t        d| ddœ|¤ŽS )ar  
    Load a mesh at a remote URL into a local trimesh object.

    This is a thin wrapper around:
      `trimesh.load_scene(file_obj=url, allow_remote=True, **kwargs)`

    Parameters
    ------------
    url
      URL containing mesh file
    **kwargs
      Passed to `load_scene`

    Returns
    ------------
    loaded : Trimesh, Path, Scene
      Loaded result
    T)r7   r;   r'   )rM   )r†   rW   s     r)   Úload_remoterˆ   |  s   € ô& Ð@˜s°Ñ@¸Ñ@Ð@r(   c                  ó¼  ‡— dt         fˆfd„}dt        fˆfd„}ˆfd„}ˆfd„}ˆfd„}t        ‰«      dk(  r&t        | «      dk(  rt        | d   t        «      r| d   Š|d	f|d
f|df|df|dff}‰j                  «       D ��	ci c]  \  }}	|	€Œ	||	“Œ c}	}Š|D ]"  \  }
}t        ˆfd„|D «       «      sŒ |
«       c S  t        d‰j                  «       › �«      ‚c c}	}w )z@
    Load geometry from a properly formatted dict or kwargs
    r#   c                  óè  •‡— ‰	j                  dd«      } ‰	d   j                  «       D ��ci c]  \  }}|t        |«      “Œ }}}| �¦t        «       }|j                  j                  |«       | D ]{  }t        |t        «      r |j                  j
                  di |¤Ž Œ0t        j                  |«      sŒFt        |«      dk(  sŒU |j                  j
                  |d   |d   fi |d   ¤Ž Œ} nt        |«      }‰	j                  d«      }|r||_        ‰	j                  d	«      |_        d
‰	v r‰	d
   |j                  _        ‰	j                  d«      Št        ‰t        «      r |j                  j                  ‰	d   «       |S t        ‰t         «      r6ˆfd„ˆfd„g}|D ]%  }	 |j                  j                   |«       «        |S  |S ‰�t%        j&                  d«       |S c c}}w # t"        $ r Y ŒTw xY w)zæ
        Load a scene from our kwargs.

        class:      Scene
        geometry:   dict, name: Trimesh kwargs
        graph:      list of dict, kwargs for scene.graph.update
        base_frame: str, base frame of graph
        ÚgraphNrR   é   r   r   r   ÚcameraÚcamera_transformÚ
base_framerV   c                  ó.   •— t        j                  ‰ «      S r%   )rr   Úloads©rV   s   €r)   Ú<lambda>z4_load_kwargs.<locals>.handle_scene.<locals>.<lambda>¾  s   ø€ œŸ
™
 8Ô,r(   c                  óN   •— t        j                  ‰ j                  dd«      «      S )NÚ'Ú")rr   r‘   Úreplacer’   s   €r)   r“   z4_load_kwargs.<locals>.handle_scene.<locals>.<lambda>¿  s   ø€ œŸ
™
 8×#3Ñ#3°C¸Ó#=Ô>r(   zunloadable metadatar'   )Úgetr,   rb   r   rR   r2   r-   ra   r‹   r   Úis_sequencerQ   r�   rŽ   r�   rV   Ústrr{   r   Úwarning)
r‹   r.   r/   rR   r>   r�   Ú
candidatesÚcrV   rW   s
           @€r)   Úhandle_scenez"_load_kwargs.<locals>.handle_scene—  sÜ  ù€ ð —
‘
˜7 DÓ)ˆØ39¸*Ñ3E×3KÑ3KÔ3MÔNÑ3M©4¨1¨a�A”| A“Ñ&Ð3MˆÑNàÐÜ“GˆEØ�N‰N×!Ñ! (Ô+Û�Ü˜a¤Ô&Ø&�E—K‘K×&Ñ&Ñ+¨Ó+Ü×%Ñ% aÕ(¬S°«V°q«[Ø&�E—K‘K×&Ñ& q¨¡t¨Q¨q©TÑ:°Q°q±TÓ:ñ	 ô ˜(“OˆEð —‘˜HÓ%ˆÙØ!ˆEŒLØ%+§Z¡ZÐ0BÓ%CˆEÔ"à˜6Ñ!Ø%+¨LÑ%9ˆE�K‰KÔ"Ø—:‘:˜jÓ)ˆÜ�h¤Ô%Ø�N‰N×!Ñ! &¨Ñ"4Ô5ð$ ˆô# ˜¤#Ô&ó
 -Û>ðˆJó  �ðØ—N‘N×)Ñ)©!«#Ô.Øð ˆð  ð ˆð Ð!Ü�K‰KÐ-Ô.àˆùóS OøôH %ò Ùðús   «GÆ  G%Ç%	G1Ç0G1c                  ó¢   •— t        ‰ d   t        «      st        ‰ d   t        «      rt        di t        j                  ‰ «      ¤ŽS t        di ‰ ¤ŽS )zC
        Handle the keyword arguments for a Trimesh object
        ÚverticesÚfacesr'   )r-   ra   r   r   Ú	load_dict©rW   s   €r)   Úhandle_meshz!_load_kwargs.<locals>.handle_meshÌ  sF   ø€ ô
 �f˜ZÑ(¬$Ô/´:¸fÀW¹oÌtÔ3TÜÑ4œTŸ^™^¨FÓ3Ñ4Ð4äÑ ˜Ñ Ð r(   c                  ó®   •— ‰d   ‰d   }} t        | t        «      rt        | «      S |t        v rt	        di t        |   | |¬«      ¤ŽS t        d|› d�«      ‚)z*
        Handle an exported mesh.
        Údatar8   )r8   Ú`z` is not supportedr'   )r-   ra   rb   r+   r   re   )r¦   r8   rW   s     €r)   Úhandle_exportz#_load_kwargs.<locals>.handle_exportÖ  sc   ø€ ð ! ™.¨&°Ñ*=ˆiˆÜ�dœDÔ!Ü Ó%Ð%Øœ,Ñ&ÜÑPœ\¨)Ñ4°TÀYÔOÑPÐPä! A i [Ð0BÐ"CÓDÐDr(   c                  óÄ   •— ddl m} m} t        j                  ‰d   «      }t        |«      dk  r | «       S |d   dk(  r | di ‰¤ŽS |d   dk(  r |di ‰¤ŽS t        d«      ‚)Nr   )ÚPath2DÚPath3Dr    r   rŒ   zVertices must be 2D or 3D!r'   )Úpathrª   r«   ÚnpÚshaperQ   Ú
ValueError)rª   r«   r®   rW   s      €r)   Úhandle_pathz!_load_kwargs.<locals>.handle_pathâ  si   ø€ ß)ä—‘˜ 
Ñ+Ó,ˆÜˆu‹:˜Š>Ù“8ˆOØ�‰8�qŠ=ÙÑ#˜FÑ#Ð#Ø�1‰X˜Š]ÙÑ#˜FÑ#Ð#äÐ9Ó:Ð:r(   c                  ó   •— t        di ‰ ¤ŽS )Nr'   r   r£   s   €r)   Úhandle_pointcloudz'_load_kwargs.<locals>.handle_pointcloudï  s   ø€ ÜÑ#˜FÑ#Ð#r(   r   r   )rR   )r    r¡   )Úentitiesr    )r    )r8   r¦   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr%   r'   )Ú.0ÚirW   s     €r)   Ú	<genexpr>z_load_kwargs.<locals>.<genexpr>  s   øè ø€ Ð-¡H˜qˆq�FŒ{¡Hùs   ƒzunable to determine type: )	r   r   rQ   r-   ra   r,   Úallr¯   r4   )rm   rW   rž   r¤   r¨   r°   r²   Úhandlersr.   r/   ÚfuncÚexpecteds    `          r)   rb   rb   ’  sú   ø€ ð
3œ%õ 3ðj!œõ !ô
Eô;ô$ô
 ˆ6ƒ{�aÒœC ›I¨šN¬z¸$¸q¹'Ä4Ô/HØ�a‘ˆð
 
�}Ð%Ø	Ð+Ð,Ø	Ð.Ð/Ø	˜MÐ*Ø	Ð-Ð.ð€Hð  &Ÿ|™|œ~Ô?™~‘t�q˜!°±ˆa�‰d˜~Ò?€Fã"‰ˆˆhÜÓ-¡HÓ-Õ-á“6ŠMð #ô
 Ð1°&·+±+³-°ÐAÓ
BÐBùó @s   Â
CÂCc                 ó^  — d}d}t        j                  | «      rt        | j                  «       «      } t        j                  | «      r|€t        d«      ‚t        | t        «      �r¥	 t        j                  j                  t        j                  j                  | «      «      }t        j                  j                  |«      }|rB|€t        j                  |«      }|€t        j                  |ddg¬«      }t!        |d«      } d}�nd	| v rd
}t        j"                  | «      } nét$        j&                  j)                  | «      j*                  dv r­|st        d«      ‚t        j                  t$        j&                  j-                  | «      j/                  dd«      d   j/                  d«      d   j1                  «       «      }t        j2                  | |¬«      }t        j"                  |j5                  «       «      } n|€t        d| › d�«      ‚t        |t        «      r�d|v r‰t        j                  j                  t        j                  j                  |«      «      }	t        j                  |«      }t        j                  j7                  |	«      r|	}|€t        j                  |«      }|�|j9                  «       }|€Ot;        | d«      rC| j<                  �7t?        | j<                  «      dkD  rt        j                  | j<                  «      }tA        | ||||¬«      S # t        $ r d}d}Y �Œiw xY w)aë  
    Given a file_obj and a file_type try to magically convert
    arguments to a file-like object and a lowercase string of
    file type.

    Parameters
    -----------
    file_obj : str
      if string represents a file path, returns:
        file_obj:   an 'rb' opened file object of the path
        file_type:  the extension from the file path

     if string is NOT a path, but has JSON-like special characters:
        file_obj:   the same string passed as file_obj
        file_type:  set to 'json'

     if string is a valid-looking URL
        file_obj: an open 'rb' file object with retrieved data
        file_type: from the extension

     if string is none of those:
        raise ValueError as we can't do anything with input

     if file like object:
        ValueError will be raised if file_type is None
        file_obj:  same as input
        file_type: same as input

     if other object: like a shapely.geometry.Polygon, etc:
        file_obj:  same as input
        file_type: if None initially, set to the class name
                    (in lower case), otherwise passed through

    file_type : str
         type of file and handled according to above

    Returns
    -----------
    args
      Populated `_FileArg` message
    NFz)`file_type` must be set for file objects!rC   útar.bz2)ÚspecialÚrbTÚ{rr   )ÚhttpÚhttpsz,unable to load URL with `allow_remote=False`Ú?r   r   Ú/éÿÿÿÿ)r†   r]   zstring is not a file: `r§   Ú.Úname)r7   r8   Ú	file_pathrf   r9   )!r   Ú
is_pathlibrš   ÚabsoluteÚis_filer¯   r-   Úosr¬   ÚabspathÚ
expanduserÚisfiler{   r   ÚFilePathResolverrv   ÚopenÚwrap_as_streamÚurllibÚparseÚurlparseÚschemeÚunquoteÚsplitÚstripÚWebResolverÚget_baseÚexistsrw   ÚhasattrrÇ   rQ   r
   )
r7   r8   r9   r;   r]   rW   rÈ   rf   rÜ   r¬   s
             r)   r`   r`     s¶  € ðd €Ið €Jä‡��xÔ ä�x×(Ñ(Ó*Ó+ˆä‡|�|�HÔ )Ð"3ÜÐDÓEÐEä�(œCÕ ð	äŸ™Ÿ™¬¯©×(:Ñ(:¸8Ó(DÓEˆIä—W‘W—^‘^ IÓ.ˆFñ àÐÜ$×5Ñ5°iÓ@�ð Ð Ü ×0Ñ0°ÀXÈyÐDYÔZ�	ä˜I tÓ,ˆHàŠJà�h‰à"�	Ü×.Ñ.¨xÓ8‘Ü—‘×&Ñ& xÓ0×7Ñ7Ð;LÑLÙ#Ü$Ð%SÓTÐTô !×0Ñ0Ü—L‘L×(Ñ(¨Ó2×8Ñ8¸¸aÓ@ÀÑC×IÑIÈ#ÓNÈrÑR×XÑXÓZó�	ô %×0Ñ0°XÀwÔO�ä×.Ñ.¨x×/@Ñ/@Ó/BÓC‘àÐ"Ü Ð#:¸8¸*ÀAÐ!FÓGÐGä�)œSÔ! c¨YÑ&6ô �w‰w�‰œrŸw™w×1Ñ1°)Ó<Ó=ˆÜ×(Ñ(¨Ó3ˆ	Ü�7‰7�>‰>˜$ÔØˆIØÐÜ$×5Ñ5°iÓ@�ð ÐØ—O‘OÓ%ˆ	ð 	ÐÜ�H˜fÔ%Ø�M‰MÐ%Ü�—‘Ó Ò"ä×-Ñ-¨h¯m©mÓ<ˆäØØØØØôð øô{ ò 	ØˆFØ‹Ið	ús   Á'AL ÌL,Ì+L,)r@   r½   rC   Úbz2)NNNF)NNFNN)NNF)NFN)Lrr   rÌ   Úurllib.parserÓ   Úcopyr   Únumpyr­   Ú r   r   Úbaser   Ú
exceptionsr   Úparentr	   r
   Úpointsr   Úscene.scener   r   Útypedr   r   r   r   rL   r   Úcascader   Údaer   rA   r   r   rF   r   rG   r   rH   r   rI   r   Ú	threedxmlr   Úthreemfr   rK   r   Úxyzr    Úpath.exchange.loadr!   r"   r{   ÚEr&   rš   r0   r6   ÚResolverLikeÚboolr\   ra   rM   rn   rc   rˆ   rb   r`   r3   r+   r2   rd   r'   r(   r)   Ú<module>rò      sÿ  ðÛ Û 	Û Ý ã ç Ý Ý )ß )Ý ß .ß -Ý Ý Ý #Ý %Ý !Ý Ý Ý Ý Ý Ý Ý )Ý #Ý Ý ðß<ðW�c˜#‘hó Wð˜3˜s™8ó ð( !Ø.2ØØñQØðQà�T‰zðQð ×$Ñ$ tÑ+ðQð �‰:ð	Qð
 ðQð óQðl !Ø.2ØØ Ø&*ñgØðgà�T‰zðgð ×$Ñ$ tÑ+ðgð ð	gð
 �T‰kðgð ˜tÑ#ðgð ógðT1 'ó 1ó*\ð~A�Sð A uó Að,wC Xó wCðz /3ØØ&*ñHà�T‰zðHð ×$Ñ$ tÑ+ðHð ð	Hð
 ˜tÑ#ðHð óHðZ ØØØñ	Ð ð €Ø × Ñ �MÔ "Ø × Ñ �LÔ !Ø × Ñ �LÔ !Ø × Ñ �LÔ !Ø × Ñ �LÔ !Ø × Ñ Ð$Ô %Ø × Ñ �MÔ "Ø × Ñ �MÔ "Ø × Ñ Ð&Ô 'Ø × Ñ �NÔ #Ø × Ñ �LÔ !Ø × Ñ Ð$Ô %ð €Ø × Ñ �_Õ %øð_ ò á  Ó#€Ið˜#÷ ñ ûðús   Â$H: È:IÈ?IÉI