grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i1ã@sÈdZddlZddlmZmZddlmZddlmZm Z ddl m Z m Z m Z e eƒdZddlmZd d „Zd d „Zd d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „ZdS)!z%Michael Felt éN)ÚenvironÚpath)Ú executable)Úc_void_pÚsizeof)ÚPopenÚPIPEÚDEVNULLé)Úmaxsizecs‡fdd„}tt|ƒ|d�S)NcsJ| ˆ¡}g}z|r*| dt| ¡ƒ¡qWnty>Yn0|pHtgS)Nr)ÚsplitÚinsertÚintÚpopÚ ValueErrorr )ZlibnameÚpartsZnums©Úsep©ú#/usr/lib64/python3.9/ctypes/_aix.pyÚ _num_version>s  z#_last_version.._num_version)Úkey)ÚmaxÚreversed)ZlibnamesrrrrrÚ _last_version=s rcCs:d}|jD]*}| d¡r|}q d|vr | d¡Sq dS)N)ú/z./z../ZINDEXÚ )ÚstdoutÚ startswithÚrstrip)ÚpÚ ld_headerÚlinerrrÚ get_ld_headerJs  r#cCs0g}|jD] }t d|¡r&| |¡q q,q |S)Nz[0-9])rÚreÚmatchÚappend)r Úinfor"rrrÚget_ld_header_infoTs    r(cCs\g}tddt›�d|gdttd�}t|ƒ}|rF| |t|ƒf¡q"qFq"|j ¡|  ¡|S)Nz /usr/bin/dumpz-Xz-HT)Úuniversal_newlinesrÚstderr) rÚAIX_ABIrr r#r&r(rÚcloseÚwait)ÚfileZ ldr_headersr r!rrrÚget_ld_headersas ÿ r/cCs6g}|D](\}}d|vr| || d¡d…¡q|S)Nú[éÿÿÿÿ)r&Úindex)Z ld_headersZsharedr"Ú_rrrÚ get_sharedys  r4csJdˆ›d�‰ttd‡fdd„|Dƒƒƒ}t|ƒdkrB|d d¡SdSdS)Nz\[(z)\]c3s|]}t ˆ|¡VqdS)N)r$Úsearch)Ú.0r"©ÚexprrrÚ �óz get_one_match..ér)ÚlistÚfilterÚlenÚgroup)r8ÚlinesÚmatchesrr7rÚ get_one_match‰s   rBcCsJtdkr d}t||ƒ}|rF|Sn&dD] }tt |¡|ƒ}|r$|Sq$dS)Né@z shr4?_?64\.o)zshr.ozshr4.o)r+rBr$Úescape)Úmembersr8ÚmemberÚnamerrrÚ get_legacy—s  rHcCsfd|›d�d|›d�g}|D]D}g}|D]$}t ||¡}|r(| | d¡¡q(|rt|dƒSqdS)NÚlibz\.so\.[0-9]+[0-9.]*z_?64\.so\.[0-9]+[0-9.]*rÚ.)r$r5r&r?r)rGrEZexprsr8Zversionsr"ÚmrrrÚ get_version®s  ÿ rLcCsbd|›d�}t||ƒ}|r|Stdkr/s&      &