U ��.e*�@spddlZddlZddlZddlZddlmZddlmZddlm Z m Z m Z dd�Z dd �Z Gd d �d e�ZdS) �N)�msgpack)�CaseInsensitiveDict�)� HTTPResponse�pickle� text_typecCst�|�d��S)N�ascii)�base64Z b64decode�encode)�b�r �F/usr/lib/python3.8/site-packages/pip/_vendor/cachecontrol/serialize.py�_b64_decode_bytes srcCst|��d�S)N�utf8)r�decode)�sr r r �_b64_decode_strsrc@sNeZdZddd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z dS)� SerializerNc Cs�t|j�}|dkr*|jdd�}t�|�|_d|tdd�|j��D��|j|j t |j �|j |j d�i}i|d<d|kr�|d�d�}|D]:}t |���}|j�|d�}|dk r�t |�}||d|<q�d �d tj|d d �g�S) NF)�decode_content�responsecss"|]\}}t|�t|�fVqdS�N)r��.0�k�vr r r � 2sz#Serializer.dumps..)�body�headers�status�version�reason�strictr�vary�,�,scc=4T)Z use_bin_type)rr�read�io�BytesIOZ_fp�dict�itemsrrrr r!r�split�strip�get�joinr�dumps) �self�requestrrZresponse_headers�dataZvaried_headers�headerZ header_valuer r r r.s4  ��� zSerializer.dumpscCs�|sdSz|�dd�\}}Wntk r4d}YnX|dd�dkrR||}d}|�dd�d�d�}zt|d �|��||�WStk r�YdSXdS) Nr$rscc=0�scc=�=�����rz _loads_v{})r*� ValueErrorr�getattr�format�AttributeError)r/r0r1Zverr r r �loadsJs zSerializer.loadscCs�d|�di�krdS|�di���D] \}}|j�|d�|kr$dSq$|d�d�}t|ddd�}|�dd �d kr�|�d�||dd<zt�|�}Wn$tk r�t�|�d ��}YnXt f|d d �|d��S)z`Verify our vary headers match and construct a real urllib3 HTTPResponse object. �*r"Nrrr)r1ztransfer-encoding�ZchunkedrF)rZpreload_content) r,r)r�poprr&r'� TypeErrorr r)r/r0�cachedr2�valueZbody_rawrrr r r �prepare_responsehs  zSerializer.prepare_responsecCsdSrr �r/r0r1r r r � _loads_v0�szSerializer._loads_v0cCs2zt�|�}Wntk r$YdSX|�||�Sr)rr:r6rA�r/r0r1r?r r r � _loads_v1�s zSerializer._loads_v1c Cs�zt�t�|��d��}Wnttjfk r6YdSXt|dd�|dd<tdd�|dd� �D��|dd<t |dd�|dd<tdd�|d � �D��|d <|� ||�S) Nrrrcss"|]\}}t|�t|�fVqdSr�rrr r r r�s�z'Serializer._loads_v2..rr css.|]&\}}t|�|dk r t|�n|fVqdSrrFrr r r r�s�r") �jsonr:�zlib� decompressrr6�errorrr(r)rrArDr r r � _loads_v2�s� � zSerializer._loads_v2cCsdSrr rBr r r � _loads_v3�szSerializer._loads_v3cCs6ztj|dd�}Wntk r(YdSX|�||�S)Nzutf-8)�encoding)rr:r6rArDr r r � _loads_v4�s zSerializer._loads_v4)N) �__name__� __module__� __qualname__r.r:rArCrErKrLrNr r r r rs 4$r)r r&rGrHZ pip._vendorrZpip._vendor.requests.structuresr�compatrrrrr�objectrr r r r �s