Ë
    ™2ÚiÂ  ã                   óÜ   — d Z ddlZddlZddlZddlmZmZmZ  G d„ de«      Z	 G d„ dej                  «      Z G d„ d	ej                  «      Z G d
„ dej                  «      Z G d„ d«      Zy)a;  
ELF file parser.

This provides a class ``ELFFile`` that parses an ELF executable in a similar
interface to ``ZipFile``. Only the read interface is implemented.

Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca
ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html
é    N)ÚIOÚOptionalÚTuplec                   ó   — e Zd Zy)Ú
ELFInvalidN)Ú__name__Ú
__module__Ú__qualname__© ó    úI/var/www/html/acx/venv/lib/python3.12/site-packages/packaging/_elffile.pyr   r      s   „ Ør   r   c                   ó   — e Zd ZdZdZy)ÚEIClassé   é   N)r   r	   r
   ÚC32ÚC64r   r   r   r   r      ó   „ Ø
€CØ
�Cr   r   c                   ó   — e Zd ZdZdZy)ÚEIDatar   r   N)r   r	   r
   ÚLsbÚMsbr   r   r   r   r      r   r   r   c                   ó    — e Zd ZdZdZdZdZdZy)ÚEMachineé   é   é(   é>   é·   N)r   r	   r
   ÚI386ÚS390ÚArmÚX8664ÚAArc64r   r   r   r   r      s   „ Ø€DØ€DØ
€CØ€EØ�Fr   r   c                   ó\   — e Zd ZdZdee   ddfd„Zdedee	df   fd„Z
edee   fd	„«       Zy)
ÚELFFilez.
    Representation of an ELF executable.
    ÚfÚreturnNc           
      ób  — || _         	 | j                  d«      }t        |d d «      }|dk7  rt	        d|›�«      ‚|d   | _        |d   | _        	 ddd	d
dœ| j                  | j                  f   \  }| _        | _	        	 | j                  |«      \
  }| _        }}| _        }| _        }| _        | _        y # t        j                  $ r t	        d«      ‚w xY w# t        $ r' t	        d| j                  › d| j                  › d�«      ‚w xY w# t        j                  $ r}t	        d«      |‚d }~ww xY w)NÚ16Bzunable to parse identificationé   s   ELFzinvalid magic: é   )z<HHIIIIIHHHz	<IIIIIIII©r   r   r+   )z>HHIIIIIHHHz	>IIIIIIIIr-   )z<HHIQQQIHHHz	<IIQQQQQQ©r   r   r,   )z>HHIQQQIHHHz	>IIQQQQQQr.   ))r   r   )r   r   )r   r   )r   r   zunrecognized capacity (z) or encoding (ú)z/unable to parse machine and section information)Ú_fÚ_readÚstructÚerrorr   ÚbytesÚcapacityÚencodingÚ_p_fmtÚ_p_idxÚKeyErrorÚmachineÚ_e_phoffÚflagsÚ_e_phentsizeÚ_e_phnum)Úselfr'   ÚidentÚmagicÚe_fmtÚ_Úes          r   Ú__init__zELFFile.__init__,   sb  € ØˆŒð	?Ø—J‘J˜uÓ%ˆEô �e˜B˜Q�iÓ ˆØ�JÒÜ˜¨u¨iÐ8Ó9Ð9à˜a™ˆŒØ˜a™ˆŒð	ð
 @Ø?Ø?Ø?ñ	/ð
 �}‰}˜dŸm™mÐ,ñ/.Ñ+ˆE�4”; ¤ð	Wð —
‘
˜5Ó!ñØØ”ØØØ”ØØ”
ØØÔ!Ø•øôI �|‰|ò 	?ÜÐ=Ó>Ð>ð	?ûô& ò 	ÜØ)¨$¯-©-¨ð 9Ø!Ÿ]™]˜O¨1ð.óð ð	ûô& �|‰|ò 	WÜÐNÓOÐUVÐVûð	Wús/   ‰B5 Á.C Á?5D
 Â5CÃ0DÄ
D.ÄD)Ä)D.Úfmt.c                 ó†   — t        j                  || j                  j                  t        j                  |«      «      «      S )N)r2   Úunpackr0   ÚreadÚcalcsize)r?   rF   s     r   r1   zELFFile._readZ   s)   € Ü�}‰}˜S $§'¡'§,¡,¬v¯©¸sÓ/CÓ"DÓEÐEr   c                 ó*  — t        | j                  «      D ]â  }| j                  j                  | j                  | j
                  |z  z   «       	 | j                  | j                  «      }|| j                  d      dk7  rŒj| j                  j                  || j                  d      «       t        j                  | j                  j                  || j                  d      «      «      j                  d«      c S  y# t        j                  $ r Y Œûw xY w)zH
        The path recorded in the ``PT_INTERP`` section header.
        r   r   r   r   ú N)Úranger>   r0   Úseekr;   r=   r1   r7   r2   r3   r8   ÚosÚfsdecoderI   Ústrip)r?   ÚindexÚdatas      r   ÚinterpreterzELFFile.interpreter]   sá   € ô
 ˜4Ÿ=™=Ó)ò 		OˆEØ�G‰G�L‰L˜Ÿ™¨×):Ñ):¸UÑ)BÑBÔCðØ—z‘z $§+¡+Ó.�ð �D—K‘K ‘NÑ# qÒ(ØØ�G‰G�L‰L˜˜dŸk™k¨!™nÑ-Ô.Ü—;‘;˜tŸw™wŸ|™|¨D°·±¸Q±Ñ,@ÓAÓB×HÑHÈÓNÒNð		Oð øô —<‘<ò Ùðús   ÁC<Ã<DÄD)r   r	   r
   Ú__doc__r   r4   rE   Ústrr   Úintr1   Úpropertyr   rT   r   r   r   r&   r&   '   s_   „ ñð,W˜"˜U™)ð ,W¨ó ,Wð\F˜ð F  s¨C x¡ó Fð ð˜X c™]ò ó ñr   r&   )rU   ÚenumrO   r2   Útypingr   r   r   Ú
ValueErrorr   ÚIntEnumr   r   r   r&   r   r   r   ú<module>r]      sc   ðñó Û 	Û ß &Ñ &ô	�ô 	ôˆd�l‰lô ô
ˆT�\‰\ô ô
ˆt�|‰|ô ÷Eò Er   