3 \E�@s�dZddlZddlmZddlmZddlTdddd gZejj d �d d d gZ ejj d�dddgZ dd�Z d+dd�Z d,dd�Zd-dd�Zd.dd�Zd/dd�Zd0dd�Zd1d d!�Zd2d"d#�Zd3d$d%�Zd4d&d�Zd5d'd�Zd(d)�Zed*k�r�e�dS)6z dyld emulation �N)�framework_info)� dylib_info)�*� dyld_find�framework_findrrz~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libcCs.|dkrtj}|j|�}|dkr$gS|jd�S)N�:)�os�environ�get�split)�env�varZrval�r�,/usr/lib64/python3.6/ctypes/macholib/dyld.py�dyld_envs  rcCs|dkrtj}|jd�S)NZDYLD_IMAGE_SUFFIX)rr r )r rrr�dyld_image_suffix'srcCs t|d�S)NZDYLD_FRAMEWORK_PATH)r)r rrr�dyld_framework_path,srcCs t|d�S)NZDYLD_LIBRARY_PATH)r)r rrr�dyld_library_path/srcCs t|d�S)NZDYLD_FALLBACK_FRAMEWORK_PATH)r)r rrr�dyld_fallback_framework_path2srcCs t|d�S)NZDYLD_FALLBACK_LIBRARY_PATH)r)r rrr�dyld_fallback_library_path5srcCs(t|�}|dkr|S||fdd�}|�S)z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNcssJxD|D]<}|jd�r2|dtd� �|dVn ||V|VqWdS)Nz.dylib)�endswith�len)�iterator�suffix�pathrrr�_inject=s    z)dyld_image_suffix_search.._inject)r)rr rrrrr�dyld_image_suffix_search8s rccsdt|�}|dk r6x$t|�D]}tjj||d�VqWx(t|�D]}tjj|tjj|��Vq@WdS)N�name)rrrr�joinr�basename)rr � frameworkrrrr�dyld_override_searchFs r!ccs2|jd�r.|dk r.tjj||td�d��VdS)Nz@executable_path/)� startswithrrrr)r�executable_pathrrr�dyld_executable_path_searchWsr$ccs�|Vt|�}|dk r@t|�}x |D]}tjj||d�Vq$Wt|�}x$|D]}tjj|tjj|��VqNW|dk r�| r�x tD]}tjj||d�Vq�W|s�x$tD]}tjj|tjj|��Vq�WdS)Nr) rrrrrrr�DEFAULT_FRAMEWORK_FALLBACK�DEFAULT_LIBRARY_FALLBACK)rr r Zfallback_framework_pathrZfallback_library_pathrrr�dyld_default_search^s    r'cCsPxs: