ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5d                  	   @   sd  d dl mZ d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dlZd dlmZ d dlmZmZ d dlZd dlZd dlZd dlZd	d
dddddddg	Zzd dlmZ ed dZW n ek
r   dZY nX eefZdZddddddddgZdZdZ G d d	 d	e!Z"G d!d
 d
e"Z#G d"d de"Z$G d#d$ d$e!Z%zd d%l&m'Z' W n ek
rh   dZ'Y nX d&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUdTZVdUZWdVZXdWZYdXZZdYZ[dZZ\d[Z]d\Z^eNeXeYeZgZ_d]Z`d^Zad_Zbd`ZcdaZddbZedcZfddZgdeZhdfZidgZjdhZkdiZldjZmdkZneodldm ep D  G dndo doZqG dpdq dqZrdrds Zsdtdu Ztdvdw Zudxdy ZvG dzd{ d{ZwG d|d} d}Zxdddd~ddZydddd~ddZzdddddddZ{dddddddZ|z0d dlm"Z"m#Z#m$Z$m}Z}m~Z~mZmZmZmZ W n4 ek
r   ewex Z}Z~eyeze{e|f\ZZZZY nX dd Zedkr`d dlZejddZejdedddd ejddddd ejdddd e Zejr&e  n:ejs8e  n(d dlZejD ]ZeeZee qFdS )    )FunctionType)dispatch_table)_extension_registry_inverted_registry_extension_cache)islice)partialN)maxsize)packunpackPickleErrorPicklingErrorUnpicklingErrorPickler	Unpicklerdumpdumpsloadloads)PickleBufferr   TFz4.0z1.0z1.1z1.2z1.3z2.0z3.0z5.0      c                   @   s   e Zd ZdS )r   N__name__
__module____qualname__ r   r   /usr/lib64/python3.8/pickle.pyr   I   s   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r   M   s   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r   T   s   	c                   @   s   e Zd Zdd ZdS )_Stopc                 C   s
   || _ d S N)valueselfr    r   r   r   __init__b   s    z_Stop.__init__N)r   r   r   r#   r   r   r   r   r   a   s   r   )PyStringMap   (   .   0   1   2   F   I   J   K   L   M   N   P   Q   R   S   T   U   V   X   a   b   c   d   }   e   g   h   i   j   l   ]   o   p   q   r   s   t   )   u   Gs   I01
s   I00
                                       B   C                                       c                 C   s   g | ]}t d |r|qS )z[A-Z][A-Z0-9_]+$)rematch).0xr   r   r   
<listcomp>   s      rm   c                   @   sF   e Zd ZdZdZdd Zdd Zdd Zdd
dZdd Z	dd Z
dS )_Framerr   i   c                 C   s   || _ d | _d S r   )
file_writecurrent_frame)r"   ro   r   r   r   r#      s    z_Framer.__init__c                 C   s   t  | _d S r   )ioBytesIOrp   r"   r   r   r   start_framing   s    z_Framer.start_framingc                 C   s*   | j r&| j  dkr&| jdd d | _ d S )Nr   Tforce)rp   tellcommit_framers   r   r   r   end_framing   s    z_Framer.end_framingFc                 C   sf   | j rb| j }| | jks|rb| }| j}t|| jkrP|ttdt|  || t	
 | _ d S )N<Q)rp   rw   _FRAME_SIZE_TARGET	getbufferro   len_FRAME_SIZE_MINFRAMEr
   rq   rr   )r"   rv   fdatawriter   r   r   rx      s    z_Framer.commit_framec                 C   s    | j r| j |S | |S d S r   )rp   r   ro   r"   r   r   r   r   r      s    z_Framer.writec                 C   s,   | j }| jr| jdd || || d S )NTru   )ro   rp   rx   )r"   headerZpayloadr   r   r   r   write_large_bytes   s
    z_Framer.write_large_bytesN)F)r   r   r   r~   r{   r#   rt   ry   rx   r   r   r   r   r   r   rn      s   
rn   c                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )	_UnframerNc                 C   s   || _ || _d | _d S r   )	file_readfile_readlinerp   )r"   r   r   Z	file_tellr   r   r   r#   	  s    z_Unframer.__init__c                 C   s   | j rb| j |}|dkrJt|dkrJd | _ t|}| ||d d < |S |t|k r^td|S t|}| ||d d < |S d S Nr   $pickle exhausted before end of frame)rp   readintor}   r   r   )r"   bufnr   r   r   r     s    z_Unframer.readintoc                 C   sT   | j rF| j |}|s.|dkr.d | _ | |S t||k rBtd|S | |S d S r   )rp   readr   r}   r   r"   r   r   r   r   r   r     s    
z_Unframer.readc                 C   sF   | j r:| j  }|s"d | _ |  S |d dkr6td|S |  S d S )N
   r   )rp   readliner   r   r   r   r   r   r   ,  s    
z_Unframer.readlinec                 C   s2   | j r| j  dkrtdt| || _ d S )N    z4beginning of a new frame before end of current frame)rp   r   r   rq   rr   r   r"   Z
frame_sizer   r   r   
load_frame9  s
    z_Unframer.load_frame)N)r   r   r   r#   r   r   r   r   r   r   r   r   r     s
   
r   c              	   C   sj   | dD ]V}|dkr&td|| z| }t| |} W q
 tk
r^   td|| d Y q
X q
| |fS )N.z<locals>z&Can't get local attribute {!r} on {!r}z Can't get attribute {!r} on {!r})splitAttributeErrorformatgetattr)objnameZsubpathparentr   r   r   _getattributeB  s"      
r   c              	   C   s   t | dd }|d k	r|S tj  D ]X\}}|dks&|dks&|d krHq&z t||d | krf|W   S W q& tk
r|   Y q&X q&dS )Nr   __main__Z__mp_main__r   )r   sysmodulescopyitemsr   r   )r   r   module_namemoduler   r   r   whichmoduleO  s     r   c                 C   sh   | dkrdS |   d? d }| j|ddd}| dk rd|dkrd|d d	krd|d
 d@ dkrd|d d }|S )Nr   r         littleT	byteorderZsignedr         )
bit_lengthto_bytes)rl   nbytesresultr   r   r   encode_longb  s    r   c                 C   s   t j| dddS )Nr   Tr   )int
from_bytes)r   r   r   r   decode_long  s    r   c                   @   s  e Zd Zd;dddddZdd Zdd	 Zd
d Zdd Zdd Zd<ddZ	dd Z
dd Zd=ddZi Zdd Zeeed< dd Zeee< dd Zeee< dd Zeee< d d! Zeee< d"d# Zeee< erd$d% Zeee< d&d' Zeee< d(d) Zeee < d*d+ Z!e!ee"< d,Z#d-d. Z$d/d0 Z%e%ee&< e'dk	r@e%ee'< d1d2 Z(d3d4 Z)e)ee*< d5d6 Z+e+ee,< d>d7d8Z-d9d: Z.e-ee/< e.ee< dS )?_PicklerNTfix_importsbuffer_callbackc                C   s   |d krt }|dk rt}n"d|  kr.tks<n tdt |d k	rT|dk rTtd|| _z|j| _W n tk
r   tdY nX t| j| _	| j	j| _| j	j
| _i | _t|| _|dk| _d| _|o|dk | _d S )Nr   zpickle protocol must be <= %dr   z#buffer_callback needs protocol >= 5z"file must have a 'write' attributer   r   )DEFAULT_PROTOCOLHIGHEST_PROTOCOL
ValueError_buffer_callbackr   _file_writer   	TypeErrorrn   framerr   _write_large_bytesmemor   protobinfastr   )r"   fileprotocolr   r   r   r   r   r#     s*    #



z_Pickler.__init__c                 C   s   | j   d S r   )r   clearrs   r   r   r   
clear_memo  s    z_Pickler.clear_memoc                 C   sr   t | dstd| jjf | jdkr<| ttd| j  | jdkrP| j	  | 
| | t | j  d S )Nr   z2Pickler.__init__() was not called by %s.__init__()   <Br   )hasattrr   	__class__r   r   r   PROTOr
   r   rt   saveSTOPry   r"   r   r   r   r   r     s    





z_Pickler.dumpc                 C   s:   | j r
d S t| j}| | | ||f| jt|< d S r   )r   r}   r   r   putid)r"   r   idxr   r   r   memoize  s
    
z_Pickler.memoizec                 C   sT   | j dkrtS | jr:|dk r*ttd| S ttd| S ntt|d d S d S )Nr      r   <Iascii   
)	r   MEMOIZEr   BINPUTr
   LONG_BINPUTPUTreprencode)r"   r   r   r   r   r     s    
z_Pickler.putc                 C   s@   | j r*|dk rttd| S ttd| S tt|d d S )Nr   r   r   r   r   )r   BINGETr
   LONG_BINGETGETr   r   r"   ir   r   r   get  s
    z_Pickler.getc           
      C   s  | j   | |}|d k	r.|r.| | d S | jt|}|d k	r^| | |d  d S t}t	| dd }|d k	r~||}|tkr@t
|}| j|}|d k	r|| | d S t	| dt|}|d k	r||}njt|t
r| | d S t	|dd }|d k	r|| j}n0t	|dd }|d k	r.| }ntd|j|f t|tr\| || d S t|tsttd| t|}	d|	  krd	ksn td
| | j|d|i d S )Nr   Zreducer_overrider   __reduce_ex__
__reduce__zCan't pickle %r object: %rz%s must return string or tupler      z2Tuple returned by %s must have two to six elementsr   )r   rx   persistent_id	save_persr   r   r   r   NotImplementedr   typedispatchr   
issubclasssave_globalr   r   r   
isinstancestrtupler}   save_reduce)
r"   r   save_persistent_idpidrl   rvreducetr   lr   r   r   r     sZ    









z_Pickler.savec                 C   s   d S r   r   r   r   r   r   r   ]  s    z_Pickler.persistent_idc                 C   sb   | j r | j|dd | t n>z | tt|d d  W n tk
r\   tdY nX d S )NF)r   r   r   2persistent IDs in protocol 0 must be ASCII strings)	r   r   r   	BINPERSIDPERSIDr   r   UnicodeEncodeErrorr   r"   r   r   r   r   r   a  s     z_Pickler.save_persc                 C   s>  t |tstdt|s"td| j}| j}	t|dd}
| jdkr|
dkr|\}}}t|dsntd	|
|d k	r||j
k	rtd		|
| jd
kr|| || || |	t n,t|j|f||}|| |d |	t n| jdkr^|
dkr^|d }t|dstd|d k	r8||j
k	r8td|dd  }|| || |	t n|| || |	t |d k	rt|| jkr|	t| | jt| d   n
| | |d k	r| | |d k	r| | |d k	r:|d kr
|| |	t n0|| || || |	t |	t |	t d S )Nz'args from save_reduce() must be a tuplez(func from save_reduce() must be callabler    r   __newobj_ex____new__z#args[0] from {} args has no __new__z(args[0] from {} args has the wrong classr   r   
__newobj__r   z+args[0] from __newobj__ args has no __new__z0args[0] from __newobj__ args has the wrong classr   )r   r   r   callabler   r   r   r   r   r   r   	NEWOBJ_EXr   r  REDUCENEWOBJr   r   POPr   r   _batch_appends_batch_setitemsBUILDTUPLE2)r"   funcargsstateZ	listitemsZ	dictitemsZstate_setterr   r   r   Z	func_nameclskwargsr   r   r   r   m  sz    







"







z_Pickler.save_reducec                 C   s   |  t d S r   )r   NONEr   r   r   r   	save_none  s    z_Pickler.save_nonec                 C   s4   | j dkr| |rtnt n| |r*tnt d S )Nr   )r   r   NEWTRUENEWFALSETRUEFALSEr   r   r   r   	save_bool  s    
z_Pickler.save_boolc                 C   s.  | j r~|dkrN|dkr.| ttd|  d S |dkrN| ttd|  d S d|  krbdkr~n n| ttd|  d S | jd	krt|}t|}|d
k r| t	td| |  n| t
td| |  d S d|  krdkrn n| tt|d d  n| tt|d d  d S )Nr   r   r     <Hi   i<ir   r   r   r   s   L
)r   r   BININT1r
   BININT2BININTr   r   r}   LONG1LONG4INTr   r   LONGr"   r   Zencodedr   r   r   r   	save_long  s*    
z_Pickler.save_longc                 C   s<   | j r| ttd|  n| tt|d d  d S )N>dr   r   )r   r   BINFLOATr
   FLOATr   r   r   r   r   r   
save_float  s    z_Pickler.save_floatc                 C   s   | j dk r@|s | jtd|d n| jtjt|ddf|d d S t|}|dkrj| tt	d| |  nf|dkr| j dkr| 
tt	d	| | n<|| jjkr| 
tt	d
| | n| tt	d
| |  | | d S )Nr   r   r   latin1r   r       r   rz   r   )r   r   bytescodecsr   r   r}   r   SHORT_BINBYTESr
   r   	BINBYTES8r   r{   BINBYTESr   r"   r   r   r   r   r   
save_bytes  s"    
 z_Pickler.save_bytesc                 C   s   | j dk r:|s | jtd|d n| jtt|f|d d S t|}|| jjkrf| tt	d| | n| 
tt	d| |  d S )Nr   r   r)  rz   )r   r   	bytearrayr,  r}   r   r{   r   
BYTEARRAY8r
   r   r1  r   r   r   save_bytearray)  s    
z_Pickler.save_bytearrayc              	   C   s   | j dk rtd| t}|js*tdd}| jd k	rFt| |}|rp|jr`| |  q| 	|  n| 
t |jr| 
t W 5 Q R X d S )Nr   z0PickleBuffer can only pickled with protocol >= 5zHPickleBuffer can not be pickled when pointing to a non-contiguous bufferT)r   r   raw
contiguousr   boolreadonlyr2  tobytesr5  r   NEXT_BUFFERREADONLY_BUFFER)r"   r   mZin_bandr   r   r   save_picklebuffer8  s    



z_Pickler.save_picklebufferc                 C   s  | j r|dd}t|}|dkrF| jdkrF| ttd| |  nf|dkrp| jdkrp| ttd| | n<|| j	j
kr| ttd| | n| ttd| |  nT|d	d
}|dd}|dd}|dd}|dd}| t|d d  | | d S )Nutf-8surrogatepassr   r   r   r+  rz   r   \z\u005c z\u0000
z\u000az\u000dz\u001araw-unicode-escaper   )r   r   r}   r   r   SHORT_BINUNICODEr
   r   BINUNICODE8r   r{   
BINUNICODEreplaceUNICODEr   r#  r   r   r   save_strR  s&    z_Pickler.save_strc                 C   s:  |s(| j r| t n| tt  d S t|}| j}| j}|dkr| jdkr|D ]}|| qRt	||kr| 
|t	| d }| t| |  n| t|  | | d S | j}|t |D ]}|| qt	||kr$| 
|t	| d }| j r|t|  n|t|d  |  d S |t | | d S )Nr   r   r   r   )r   r   EMPTY_TUPLEMARKTUPLEr}   r   r   r   r   r   r  _tuplesize2coder   POP_MARK)r"   r   r   r   r   Zelementr   r   r   r   r   
save_tuplei  s:    


z_Pickler.save_tuplec                 C   s8   | j r| t n| tt  | | | | d S r   )r   r   
EMPTY_LISTrN  LISTr   r	  r   r   r   r   	save_list  s
    
z_Pickler.save_listi  c                 C   s   | j }| j}| js0|D ]}|| |t qd S t|}tt|| j}t|}|dkr||t	 |D ]}|| qd|t
 n|r||d  |t || jk r8d S q8d S Nr   r   )r   r   r   APPENDiterlistr   
_BATCHSIZEr}   rN  APPENDS)r"   r   r   r   rl   ittmpr   r   r   r   r	    s(    



z_Pickler._batch_appendsc                 C   s<   | j r| t n| tt  | | | |  d S r   )r   r   
EMPTY_DICTrN  DICTr   r
  r   r   r   r   r   	save_dict  s
    
z_Pickler.save_dictc           	      C   s   | j }| j}| js<|D ] \}}|| || |t qd S t|}tt|| j}t|}|dkr|t	 |D ]\}}|| || qp|t
 n(|r|d \}}|| || |t || jk rDd S qDd S rV  )r   r   r   SETITEMrX  rY  r   rZ  r}   rN  SETITEMS)	r"   r   r   r   kvr\  r]  r   r   r   r   r
    s0    



z_Pickler._batch_setitemsc                 C   s   | j }| j}| jdk r0| jtt|f|d d S |t | | t|}tt	|| j
}t|}|dkr|t |D ]}|| qv|t || j
k rJd S qJd S Nr   r)  r   )r   r   r   r   setrY  	EMPTY_SETr   rX  r   rZ  r}   rN  ADDITEMS)r"   r   r   r   r\  Zbatchr   itemr   r   r   save_set  s"    



z_Pickler.save_setc                 C   s   | j }| j}| jdk r0| jtt|f|d d S |t |D ]}|| q<t|| jkr||t	| 
| jt| d   d S |t | | d S re  )r   r   r   r   	frozensetrY  rN  r   r   rQ  r   	FROZENSETr   )r"   r   r   r   ri  r   r   r   save_frozenset  s    

 z_Pickler.save_frozensetc              
   C   sX  | j }| j}|d kr t|dd }|d kr.|j}t||}z(t|dd tj| }t||\}}W n. t	t
tfk
r   td|||f d Y nX ||k	rtd|||f | jdkrt||f}	|	r|	dkr|ttd|	  n0|	d	kr|ttd
|	  n|ttd|	  d S |dd }
||kr6|
}| jdkr`| | | | |t n||k	r|| t||
f n| jdkr|tt|d d t|d d  n| jrtj}tj}||f|kr|||f \}}n||kr|| }z(|tt|d d t|d d  W n, tk
rH   td||| jf d Y nX | | d S )Nr   r   levelz(Can't pickle %r: it's not found as %s.%sz2Can't pickle %r: it's not the same object as %s.%sr   r   r   r  r  r  r   r   r   r?  r   r   z?can't pickle global identifier '%s.%s' using pickle protocol %i) r   r   r   r   r   
__import__r   r   r   ImportErrorKeyErrorr   r   r   r   r   EXT1r
   EXT2EXT4
rpartitionr   STACK_GLOBALr   GLOBALr,  r   _compat_pickleZREVERSE_NAME_MAPPINGZREVERSE_IMPORT_MAPPINGr   r   )r"   r   r   r   r   r   r   Zobj2r   codeZlastnameZr_name_mappingZr_import_mappingr   r   r   r     s    










z_Pickler.save_globalc                 C   s`   |t d kr| jt d|dS |t tkr:| jt tf|dS |t dkrV| jt d|dS | |S )Nr   r)  .).)r   r   r   r   r   r   r   r   	save_typea  s    z_Pickler.save_type)N)T)NNNNN)N)0r   r   r   r#   r   r   r   r   r   r   r   r   r   r   r  r   r  r8  r$  r   r(  floatr2  r,  r5  r3  _HAVE_PICKLE_BUFFERr>  r   rL  r   rR  r   rU  rY  rZ  r	  r`  dictr$   r
  rj  rf  rm  rk  r   r{  r   r   r   r   r   r     sj   9
	
F      
u1		

B	r   c                   @   s  e Zd ZdddddddZdd	 Zd
d Zdd Zi Zdd Zeee	d < dd Z
e
eed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd  Zeeed < d!d" Zeeed < d#d$ Zeeed < d%d& Zeeed < d'd( Z e ee!d < d)d* Z"e"ee#d < d+d, Z$e$ee%d < d-d. Z&e&ee'd < d/d0 Z(d1d2 Z)e)ee*d < d3d4 Z+e+ee,d < d5d6 Z-e-ee.d < d7d8 Z/e/ee0d < d9d: Z1e1ee2d < d;d< Z3e3ee4d < d=d> Z5e5ee6d < d?d@ Z7e7ee8d < dAdB Z9e9ee:d < dCdD Z;e;ee<d < dEdF Z=e=ee>d < dGdH Z?e?ee@d < dIdJ ZAeAeeBd < dKdL ZCeCeeDd < dMdN ZEeEeeFd < dOdP ZGeGeeHd < dQdR ZIeIeeJd < dSdT ZKeKeeLd < dUdV ZMeMeeNd < dWdX ZOeOeePd < dYdZ ZQeQeeRd < d[d\ ZSeSeeTd < d]d^ ZUeUeeVd < d_d` ZWeWeeXd < dadb ZYdcdd ZZeZee[d < dedf Z\e\ee]d < dgdh Z^e^ee_d < didj Z`e`eead < dkdl Zbebeecd < dmdn Zdedeeed < dodp Zfefeegd < dqdr Zheheeid < dsdt Zjejeekd < dudv Zldwdx Zmdydz Zneneeod < d{d| Zpepeeqd < d}d~ Zrereesd < dd Zteteeud < dd Zveveewd < dd Zxexeeyd < dd Zzezee{d < dd Z|e|ee}d < dd Z~e~eed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dS )
_UnpicklerTASCIIstrictNr   encodingerrorsbuffersc                C   sH   |d k	rt |nd | _|j| _|j| _i | _|| _|| _d| _	|| _
d S Nr   )rX  _buffersr   _file_readliner   
_file_readr   r  r  r   r   )r"   r   r   r  r  r  r   r   r   r#   r  s    'z_Unpickler.__init__c              
   C   s   t | dstd| jjf t| j| j| _| jj| _| jj	| _	| jj
| _
g | _g | _| jj| _d| _| j}| j}z&|d}|st||d  |  qtW n, tk
r } z|j W Y S d }~X Y nX d S )Nr  z4Unpickler.__init__() was not called by %s.__init__()r   r   )r   r   r   r   r   r  r  	_unframerr   r   r   	metastackstackappendr   r   EOFErrorr   r    )r"   r   r   keyZstopinstr   r   r   r     s*    




z_Unpickler.loadc                 C   s    | j }| j | _ | j j| _|S r   )r  r  popr  r"   r   r   r   r   pop_mark  s    
z_Unpickler.pop_markc                 C   s   t dd S )Nz%unsupported persistent id encountered)r   r   r   r   r   persistent_load  s    z_Unpickler.persistent_loadc                 C   s:   |  dd }d|  kr"tks0n td| || _d S )Nr   r   zunsupported pickle protocol: %d)r   r   r   r   )r"   r   r   r   r   
load_proto  s    z_Unpickler.load_protor   c                 C   s8   t d| d\}|tjkr(td| | j| d S )Nrz      zframe size > sys.maxsize: %d)r   r   r   r	   r   r  r   r   r   r   r   r     s    
z_Unpickler.load_framec                 C   sL   z|   d d d}W n tk
r6   tdY nX | | | d S )Nr   r   r   )r   decodeUnicodeDecodeErrorr   r  r  r   r   r   r   load_persid  s    
z_Unpickler.load_persidc                 C   s   | j  }| | | d S r   )r  r  r  r  r   r   r   r   load_binpersid  s    
z_Unpickler.load_binpersidc                 C   s   |  d  d S r   r  rs   r   r   r   	load_none  s    z_Unpickler.load_nonec                 C   s   |  d d S )NFr  rs   r   r   r   
load_false  s    z_Unpickler.load_falsec                 C   s   |  d d S )NTr  rs   r   r   r   	load_true  s    z_Unpickler.load_truec                 C   sL   |   }|tdd  krd}n |tdd  kr4d}n
t|d}| | d S )Nr   FTr   )r   r  r  r   r  )r"   r   valr   r   r   load_int  s    
z_Unpickler.load_intc                 C   s   |  td| dd  d S )Nr  r   r   r  r   r   rs   r   r   r   load_binint  s    z_Unpickler.load_binintc                 C   s   |  | dd  d S rV  )r  r   rs   r   r   r   load_binint1  s    z_Unpickler.load_binint1c                 C   s   |  td| dd  d S )Nr  r   r   r  rs   r   r   r   load_binint2  s    z_Unpickler.load_binint2c                 C   s@   |   d d }|r,|d dkr,|d d }| t|d d S )Nr   L   r   )r   r  r   )r"   r  r   r   r   	load_long  s    z_Unpickler.load_longc                 C   s*   |  dd }|  |}| t| d S rV  )r   r  r   r   r   r   r   
load_long1  s    
z_Unpickler.load_long1c                 C   s>   t d| d\}|dk r"td| |}| t| d S )Nr  r   r   z#LONG pickle has negative byte count)r   r   r   r  r   r   r   r   r   
load_long4  s
    
z_Unpickler.load_long4c                 C   s   |  t|  d d  d S Nr   )r  r|  r   rs   r   r   r   
load_float!  s    z_Unpickler.load_floatc                 C   s   |  td| dd  d S )Nr%  r  r   r  rs   r   r   r   load_binfloat%  s    z_Unpickler.load_binfloatc                 C   s"   | j dkr|S || j | jS d S )Nr,  )r  r  r  r!   r   r   r   _decode_string)  s    
z_Unpickler._decode_stringc                 C   sl   |   d d }t|dkrF|d |d krF|d dkrF|dd }ntd| | t|d  d S )Nr   r   r   s   "'r   z)the STRING opcode argument must be quoted)r   r}   r   r  r  r-  escape_decoder   r   r   r   load_string2  s
    (z_Unpickler.load_stringc                 C   s@   t d| d\}|dk r"td| |}| | | d S )Nr  r   r   z(BINSTRING pickle has negative byte count)r   r   r   r  r  r"   r}   r   r   r   r   load_binstring<  s
    
z_Unpickler.load_binstringc                 C   s:   t d| d\}|tkr&tdt | | | d S )Nr   r   z2BINBYTES exceeds system's maximum size of %d bytesr   r   r	   r   r  r"   r}   r   r   r   load_binbytesE  s    z_Unpickler.load_binbytesc                 C   s    |  t|  d d d d S )Nr   rF  )r  r   r   rs   r   r   r   load_unicodeM  s    z_Unpickler.load_unicodec                 C   sB   t d| d\}|tkr&tdt | t| |dd d S )Nr   r   z4BINUNICODE exceeds system's maximum size of %d bytesr?  r@  r   r   r	   r   r  r   r  r   r   r   load_binunicodeQ  s    z_Unpickler.load_binunicodec                 C   sB   t d| d\}|tkr&tdt | t| |dd d S )Nrz   r  z5BINUNICODE8 exceeds system's maximum size of %d bytesr?  r@  r  r  r   r   r   load_binunicode8Y  s    z_Unpickler.load_binunicode8c                 C   s:   t d| d\}|tkr&tdt | | | d S )Nrz   r  z3BINBYTES8 exceeds system's maximum size of %d bytesr  r  r   r   r   load_binbytes8a  s    z_Unpickler.load_binbytes8c                 C   sF   t d| d\}|tkr&tdt t|}| | | | d S )Nrz   r  z4BYTEARRAY8 exceeds system's maximum size of %d bytes)r   r   r	   r   r3  r   r  )r"   r}   br   r   r   load_bytearray8i  s    
z_Unpickler.load_bytearray8c                 C   sL   | j d krtdzt| j }W n tk
r<   tdY nX | | d S )NzLpickle stream refers to out-of-band data but no *buffers* argument was givenznot enough out-of-band buffers)r  r   nextStopIterationr  )r"   r   r   r   r   load_next_buffers  s    
z_Unpickler.load_next_bufferc              	   C   s6   | j d }t|}|js(| | j d< W 5 Q R X d S r  )r  
memoryviewr9  
toreadonly)r"   r   r=  r   r   r   load_readonly_buffer~  s    

z_Unpickler.load_readonly_bufferc                 C   s,   |  dd }|  |}| | | d S rV  )r   r  r  r  r   r   r   load_short_binstring  s    
z_Unpickler.load_short_binstringc                 C   s"   |  dd }| |  | d S rV  )r   r  r  r   r   r   load_short_binbytes  s    z_Unpickler.load_short_binbytesc                 C   s*   |  dd }| t|  |dd d S )Nr   r   r?  r@  )r   r  r   r  r   r   r   load_short_binunicode  s    z _Unpickler.load_short_binunicodec                 C   s   |   }| t| d S r   )r  r  r   r  r   r   r   
load_tuple  s    z_Unpickler.load_tuplec                 C   s   |  d d S )Nr   r  rs   r   r   r   load_empty_tuple  s    z_Unpickler.load_empty_tuplec                 C   s   | j d f| j d< d S r  r  rs   r   r   r   load_tuple1  s    z_Unpickler.load_tuple1c                 C   s$   | j d | j d fg| j dd < d S )Nr   r   r  rs   r   r   r   load_tuple2  s    z_Unpickler.load_tuple2c                 C   s,   | j d | j d | j d fg| j dd < d S )Nr   r   r  rs   r   r   r   load_tuple3  s    z_Unpickler.load_tuple3c                 C   s   |  g  d S r   r  rs   r   r   r   load_empty_list  s    z_Unpickler.load_empty_listc                 C   s   |  i  d S r   r  rs   r   r   r   load_empty_dictionary  s    z _Unpickler.load_empty_dictionaryc                 C   s   |  t  d S r   )r  rf  rs   r   r   r   load_empty_set  s    z_Unpickler.load_empty_setc                 C   s   |   }| t| d S r   )r  r  rk  r  r   r   r   load_frozenset  s    z_Unpickler.load_frozensetc                 C   s   |   }| | d S r   )r  r  r  r   r   r   	load_list  s    z_Unpickler.load_listc                    s4   |     fddtdt dD }| | d S )Nc                    s   i | ]} |  |d   qS )r   r   )rk   r   r   r   r   
<dictcomp>  s    z(_Unpickler.load_dict.<locals>.<dictcomp>r   r   )r  ranger}   r  )r"   dr   r  r   	load_dict  s
    
z_Unpickler.load_dictc              
   C   s   |st |trt|drjz|| }W qt tk
rf } z$td|jt|f t d W 5 d }~X Y qtX n
||}| 	| d S )NZ__getinitargs__zin constructor for %s: %sr   )
r   r   r   r   r   r   r   exc_infor  r  )r"   klassr  r    errr   r   r   _instantiate  s    

z_Unpickler._instantiatec                 C   sL   |   d d d}|   d d d}| ||}| ||   d S )Nr   r   )r   r  
find_classr  r  r"   r   r   r  r   r   r   	load_inst  s    z_Unpickler.load_instc                 C   s"   |   }|d}| || d S r  )r  r  r  )r"   r  r  r   r   r   load_obj  s    
z_Unpickler.load_objc                 C   s2   | j  }| j  }|j|f| }| | d S r   r  r  r  r  )r"   r  r  r   r   r   r   load_newobj  s    

z_Unpickler.load_newobjc                 C   s>   | j  }| j  }| j  }|j|f||}| | d S r   r  )r"   r  r  r  r   r   r   r   load_newobj_ex  s
    


z_Unpickler.load_newobj_exc                 C   sF   |   d d d}|   d d d}| ||}| | d S )Nr   r?  )r   r  r  r  r  r   r   r   load_global  s    z_Unpickler.load_globalc                 C   sJ   | j  }| j  }t|tk	s,t|tk	r4td| | || d S )NzSTACK_GLOBAL requires str)r  r  r   r   r   r  r  )r"   r   r   r   r   r   load_stack_global  s
    

z_Unpickler.load_stack_globalc                 C   s   |  dd }| | d S rV  )r   get_extensionr"   rz  r   r   r   	load_ext1  s    z_Unpickler.load_ext1c                 C   s    t d| d\}| | d S )Nr  r   r   r   r  r  r   r   r   	load_ext2	  s    z_Unpickler.load_ext2c                 C   s    t d| d\}| | d S )Nr  r   r  r  r   r   r   	load_ext4  s    z_Unpickler.load_ext4c                 C   sp   g }t ||}||k	r&| | d S t|}|sP|dkrDtdtd| | j| }|t |< | | d S )Nr   zEXT specifies code <= 0zunregistered extension code %d)r   r   r  r   r   r   r  )r"   rz  Znilr   r  r   r   r   r    s    


z_Unpickler.get_extensionc                 C   s   t d|| | jdk rT| jrT||ftjkr@tj||f \}}n|tjkrTtj| }t|dd | jdkr~tt j	| |d S t
t j	| |S d S )Nzpickle.find_classr   r   rn  r   )r   auditr   r   ry  ZNAME_MAPPINGZIMPORT_MAPPINGrp  r   r   r   )r"   r   r   r   r   r   r  #  s    


z_Unpickler.find_classc                 C   s&   | j }| }|d }|| |d< d S r  r  r  )r"   r  r  r  r   r   r   load_reduce1  s    z_Unpickler.load_reducec                 C   s   | j r| j d= n|   d S r  )r  r  rs   r   r   r   load_pop8  s    
z_Unpickler.load_popc                 C   s   |    d S r   )r  rs   r   r   r   load_pop_mark?  s    z_Unpickler.load_pop_markc                 C   s   |  | jd  d S r  )r  r  rs   r   r   r   load_dupC  s    z_Unpickler.load_dupc                 C   s(   t |  d d }| | j|  d S r  )r   r   r  r   r   r   r   r   load_getG  s    z_Unpickler.load_getc                 C   s"   |  dd }| | j|  d S rV  )r   r  r   r   r   r   r   load_bingetL  s    z_Unpickler.load_bingetc                 C   s&   t d| d\}| | j|  d S )Nr   r   )r   r   r  r   r   r   r   r   load_long_bingetQ  s    z_Unpickler.load_long_bingetc                 C   s8   t |  d d }|dk r$td| jd | j|< d S )Nr   r   znegative PUT argument)r   r   r   r  r   r   r   r   r   load_putV  s    z_Unpickler.load_putc                 C   s2   |  dd }|dk rtd| jd | j|< d S )Nr   r   znegative BINPUT argumentr   )r   r   r  r   r   r   r   r   load_binput]  s    z_Unpickler.load_binputc                 C   s6   t d| d\}|tkr"td| jd | j|< d S )Nr   r   znegative LONG_BINPUT argumentr   )r   r   r	   r   r  r   r   r   r   r   load_long_binputd  s    z_Unpickler.load_long_binputc                 C   s   | j }| jd |t|< d S r  )r   r  r}   )r"   r   r   r   r   load_memoizek  s    z_Unpickler.load_memoizec                 C   s$   | j }| }|d }|| d S r  )r  r  r  )r"   r  r    rY  r   r   r   load_appendp  s    z_Unpickler.load_appendc                 C   sZ   |   }| jd }z
|j}W n tk
r0   Y nX || d S |j}|D ]}|| qHd S r  )r  r  extendr   r  )r"   r   Zlist_objr  r  ri  r   r   r   load_appendsw  s    

z_Unpickler.load_appendsc                 C   s*   | j }| }| }|d }|||< d S r  r  )r"   r  r    r  r~  r   r   r   load_setitem  s
    z_Unpickler.load_setitemc                 C   s@   |   }| jd }tdt|dD ]}||d  ||| < q"d S )Nr   r   r   r   )r  r  r  r}   )r"   r   r~  r   r   r   r   load_setitems  s    
z_Unpickler.load_setitemsc                 C   sD   |   }| jd }t|tr(|| n|j}|D ]}|| q2d S r  )r  r  r   rf  updateadd)r"   r   Zset_objr  ri  r   r   r   load_additems  s    

z_Unpickler.load_additemsc           
      C   s   | j }| }|d }t|dd }|d k	r6|| d S d }t|trXt|dkrX|\}}|r|j}tj}|	 D ]*\}}	t
|tkr|	|||< qp|	||< qp|r|	 D ]\}}	t|||	 qd S )Nr   __setstate__r   )r  r  r   r   r   r}   __dict__r   internr   r   r   setattr)
r"   r  r  instsetstateZ	slotstateZ	inst_dictr  rc  rd  r   r   r   
load_build  s(    
z_Unpickler.load_buildc                 C   s"   | j | j g | _| jj| _d S r   )r  r  r  rs   r   r   r   	load_mark  s    z_Unpickler.load_markc                 C   s   | j  }t|d S r   )r  r  r   r!   r   r   r   	load_stop  s    
z_Unpickler.load_stop)r   r   r   r#   r   r  r  r   r  r   r   r   r  r   r  r   r  r  r  r  r  r  r  r!  r  r  r  r  r  r  r  r"  r  r  r  r   r  r'  r  r&  r  r  STRINGr  	BINSTRINGr  r0  r  rK  r  rI  r  rH  r  r/  r  r4  r  r;  r  r<  r  SHORT_BINSTRINGr  r.  r  rG  r  rO  r  rM  r  TUPLE1r  r  r  TUPLE3r  rS  r  r^  r  rg  r  rl  r  rT  r  r_  r  r  INSTr  OBJr  r  r  r  r  rx  r  rw  r  rs  r  rt  r  ru  r  r  r  r  r  r  r  rQ  r  DUPr  r   r  r   r  r   r  r   r  r   r  r   r  r   r  rW  r  r[  r  ra  r  rb  r  rh  r  r  r  rN  r  r   r   r   r   r   r  p  s*    0				r  r   c                C   s   t ||||d|  d S Nr   )r   r   )r   r   r   r   r   r   r   r   _dump  s
    r  c                C   s*   t  }t||||d|  | }|S r  )rq   rr   r   r   getvalue)r   r   r   r   r   resr   r   r   _dumps  s    r  r  r  r  c                C   s   t | ||||d S )Nr   r  r  r  )r  r   )r   r   r  r  r  r   r   r   _load  s     r  c                C   s2   t | trtdt| }t|||||d S )Nz%Can't load pickle from unicode stringr  )r   r   r   rq   rr   r  r   )sr   r  r  r  r   r   r   r   _loads  s    

 r  )	r   r   r   r   r   r   r   r   r   c                  C   s   dd l } |  S r  )doctestZtestmod)r  r   r   r   _test  s    r  r   z$display contents of the pickle files)Zdescriptionpickle_filebr*zthe pickle file)r   nargshelpz-tz--test
store_truezrun self-test suite)actionr  z-vz)run verbosely; only affects self-test run)N)N)typesr   copyregr   r   r   r   	itertoolsr   	functoolsr   r   r	   Zstructr
   r   ri   rq   r-  ry  __all___pickler   r  r}  rq  r,  r3  Zbytes_typesZformat_versionZcompatible_formatsr   r   	Exceptionr   r   r   r   Zorg.python.corer$   rN  r   r  rQ  r  r'  r!  r  r  r"  r  r  r   r   r  r  r  r  rK  rI  rW  r  rx  r_  r^  r[  r   r   r
  r   rT  rS  r  r   r   r   ra  rO  rM  rb  r&  r  r  r   r  rs  rt  ru  r  r  r	  r  r  r  r   rP  r0  r.  rG  rH  r/  rg  rh  rl  r  rw  r   r   r4  r;  r<  r  dirrn   r   r   r   r   r   r   r  r  r  r  r  r   r   r   r   r   r   r  r   argparseArgumentParserparseradd_argumentZFileType
parse_argsr  Ztestr  Z
print_helpZpprintr   r   r   r   r   r   <module>   sf      


?;     ^    ]	0

     

