o
    �õ±jÝ  ã                   @   sJ   d dl Z d dlT d dlmZ G dd„ dƒZG dd„ dƒZG dd	„ d	ƒZdS )
é    N)Ú*)ÚListc                   @   ó8   e Zd Zdd„ Zdd„ Zdd„ Zedd„ ƒZd	d
„ ZdS )ÚMINIDUMP_MEMORY64_LISTc                 C   s   d | _ d | _g | _d S ©N)ÚNumberOfMemoryRangesÚBaseRvaÚMemoryRanges©Úself© r   ú–/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/Memory64ListStream.pyÚ__init__   s   
zMINIDUMP_MEMORY64_LIST.__init__c                 C   s   dt | jƒtƒ  ¡   S ©Né   )Úlenr	   ÚMINIDUMP_MEMORY_DESCRIPTOR64Úget_sizer
   r   r   r   r      s   zMINIDUMP_MEMORY64_LIST.get_sizec                 C   sH   t | jƒjdddd�}|| jjdddd�7 }| jD ]}|| ¡ 7 }q|S ©Né   ÚlittleF)Ú	byteorderÚsigned)r   r	   Úto_bytesr   )r   ÚtÚmemranger   r   r   r      s
   
zMINIDUMP_MEMORY64_LIST.to_bytesc                 C   sŽ   t ƒ }t|  ¡ ƒ}|  | tj¡ tj|  d¡ddd�|_tj|  d¡ddd�|_	t
|jƒD ]}|j t | ¡¡ |  ¡ }||krD |S q.|S r   )r   r   ÚreadÚseekÚioÚSEEK_CURÚintÚ
from_bytesr   r   Úranger	   Úappendr   ÚparseÚtell)ÚbuffÚmmlÚbuffsizeÚ_Úcurposr   r   r   r$      s   ýzMINIDUMP_MEMORY64_LIST.parsec                 C   sJ   d}|d| j  7 }|d| j 7 }t| j ƒD ]}|t| j| ƒd 7 }q|S )Nz== MINIDUMP_MEMORY64_LIST ==
zNumberOfMemoryRanges: %s
zBaseRva: %s
Ú
)r   r   r"   Ústrr	   )r   r   Úir   r   r   Ú__str__,   s   zMINIDUMP_MEMORY64_LIST.__str__N©	Ú__name__Ú
__module__Ú__qualname__r   r   r   Ústaticmethodr$   r.   r   r   r   r   r      s    
r   c                   @   r   )r   c                 C   s   d | _ d | _d S r   )ÚStartOfMemoryRangeÚDataSizer
   r   r   r   r   7   s   
z%MINIDUMP_MEMORY_DESCRIPTOR64.__init__c                 C   s   dS r   r   r
   r   r   r   r   ;   s   z%MINIDUMP_MEMORY_DESCRIPTOR64.get_sizec                 C   s,   | j jdddd�}|| jjdddd�7 }|S r   )r4   r   r5   ©r   r   r   r   r   r   >   s   z%MINIDUMP_MEMORY_DESCRIPTOR64.to_bytesc                 C   s:   t ƒ }tj|  d¡ddd�|_tj|  d¡ddd�|_|S r   )r   r    r!   r   r4   r5   )r&   Úmdr   r   r   r$   C   s   z"MINIDUMP_MEMORY_DESCRIPTOR64.parsec                 C   s    dt | jƒ }|d| j 7 }|S )Nz	Start: %szSize: %s)Úhexr4   r5   r6   r   r   r   r.   J   s   z$MINIDUMP_MEMORY_DESCRIPTOR64.__str__Nr/   r   r   r   r   r   6   s    
r   c                   @   s<   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ ZdS )ÚMinidumpMemory64Listc                 C   s
   g | _ d S r   )Úmemory_segmentsr
   r   r   r   r   P   s   
zMinidumpMemory64List.__init__c                 C   sf   t ƒ }| | jj¡ t | | jj¡¡}t 	|¡}|j
}|jD ]}|j t ||¡¡ ||j7 }q|S r   )r9   r   ÚLocationÚRvar   ÚBytesIOr   r5   r   r$   r   r	   r:   r#   ÚMinidumpMemorySegmentÚ
parse_full)Údirr&   r   ÚchunkÚmtlÚrvaÚmodr   r   r   r$   S   s   

zMinidumpMemory64List.parsec           	      Ã   s|   �t ƒ }| | jj¡I d H  | | jj¡I d H }t |¡}t 	|¡}|j
}|jD ]}t ||¡}|j |¡ ||j7 }q(|S r   )r9   r   r;   r<   r   r5   r   r=   r   r$   r   r	   r>   r?   r:   r#   )	r@   r&   r'   Ú
chunk_datarA   rB   rC   rD   Úmsr   r   r   Úaparse_   s   €


zMinidumpMemory64List.aparsec                 C   s0   g }|  t ¡ ¡ | jD ]	}|  | ¡ ¡ q|S r   )r#   r>   Ú
get_headerr:   Úto_row)r   r   rD   r   r   r   Úto_tablem   s
   
zMinidumpMemory64List.to_tablec                 C   s   dt |  ¡ ƒ S )Nz== MinidumpMemory64List ==
)Úconstruct_tablerJ   r
   r   r   r   r.   t   s   zMinidumpMemory64List.__str__N)	r0   r1   r2   r   r3   r$   rG   rJ   r.   r   r   r   r   r9   O   s    

r9   )r   Úminidump.common_structsÚtypingr   r   r   r9   r   r   r   r   Ú<module>   s   +