ÿØÿà 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
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
2aȐ                 @   s  d Z ddlmZmZmZ ddlmZ ddlZddlZddl	Z
ddlmZ ddlmZ ddlmZ ddlZddlZddlZdd	d
ddddddddddddgZdadadd Zdd Zdd Zdd Zeadadejddd fd!d
Zd5d"dZd6d#dZ d$d Z!d%d& Z"d'd Z#G d(d dZ$G d)d	 d	Z%ejfd*dZ&d7d+dZ'ejfd,dZ(d-d Z)d.d Z*d/d Z+d0d Z,d8d1dZ-d2d3 Z.e/d4kre&  dS )9z2.6    )StringIOBytesIOTextIOWrapper)MappingN)
FeedParser)Message)warnMiniFieldStorageFieldStorageparseparse_qs	parse_qslparse_multipartparse_headertestprint_exceptionprint_environ
print_formprint_directoryprint_argumentsprint_environ_usageescape c              G   sH   t r.t r.ytt daW n tk
r,   Y nX ts8tantat|   d S )Na)logfilelogfpopenOSErrornologlogdolog)allargs r"   (/opt/alt/python36/lib64/python3.6/cgi.pyinitlog:   s    
r$   c             G   s   t j| | d  d S )N
)r   write)Zfmtargsr"   r"   r#   r    ]   s    r    c              G   s   d S )Nr"   )r!   r"   r"   r#   r   a   s    r   c               C   s   da trtj  d atad S )Nr   )r   r   closer$   r   r"   r"   r"   r#   closeloge   s
    r)   &c       
      C   sZ  | d krt j} t| dr | j}nd}t| tr4| j} d|krDd|d< |d dkrt|d \}}|dkrtt| |S |dkrt	|d	 }t
r|t
krtd
| j|j|}	nd}	d|kr|	r|	d }	|	|d  }	n*t jdd   r|	r|	d }	|	t jd  }	|	|d< n<d|kr|d }	n(t jdd  r8t jd }	nd}	|	|d< tjj|	||||dS )Nencodingzlatin-1REQUEST_METHODGETPOSTCONTENT_TYPEzmultipart/form-dataz!application/x-www-form-urlencodedCONTENT_LENGTHzMaximum content length exceededr   QUERY_STRINGr*      )r+   	separator)sysstdinhasattrr+   
isinstancer   bufferr   r   intmaxlen
ValueErrorreaddecodeargvurllibr   r   )
fpenvironkeep_blank_valuesstrict_parsingr3   r+   ctypepdictclengthqsr"   r"   r#   r   x   sH    


  


c             C   s   t dtd tjj| ||S )Nz=cgi.parse_qs is deprecated, use urllib.parse.parse_qs instead   )r   DeprecationWarningr?   r   r   )rG   rB   rC   r"   r"   r#   r      s    c             C   s   t dtd tjj| ||S )Nz?cgi.parse_qsl is deprecated, use urllib.parse.parse_qsl insteadrH   )r   rI   r?   r   r   )rG   rB   rC   r"   r"   r#   r      s    c             C   s  dd l }d}d|kr|d }t|s2td|f d| }d| d }i }d}x||krd}d }	|r|jj| }
|
jd}|ryt|}W n tk
r   Y nX |dkrtr|tkrtd| j|}	nd}	g }xD| j	 }|s|}P |j
dr|j }|||fkrP |j| qW |	d kr&qR|dk r|r|d }|dd  d
kr^|d d }n|dd  dkr||d d }||d< dj|}	|
d }|sqRt|\}}|dkrqRd|krR|d }nqR||kr|| j|	 qR|	g||< qRW |S )Nr       boundaryz&Invalid boundary in multipart form: %rs   --r2   zcontent-lengthzMaximum content length exceededrH   s   
   
zcontent-dispositionz	form-datanamerN   rO   rN   rN   rN   )Zhttp.clientvalid_boundaryr;   ZclientZparse_headersgetr9   r:   r<   readline
startswithrstripappendjoinr   )r@   rE   ZhttprK   ZnextpartZlastpartZpartdict
terminatorbytesdataheadersrF   lineslinekeyparamsrM   r"   r"   r#   r      s|    







c             c   s   x| d d dkr| dd  } | j d}x<|dkrd| jdd|| jdd| d rd| j d|d }q*W |dk rvt| }| d | }|j V  | |d  } qW d S )Nr2   ;r   "z\"rH   )findcountlenstrip)sendfr"   r"   r#   _parseparam1  s    
*
rh   c             C   s   t d|  }|j }i }x|D ]}|jd}|dkr|d | j j }||d d  j }t|dkr|d |d
   kodkn  r|dd }|jddjd	d}|||< qW ||fS )Nr_   =r   r2   rH   r`   z\\\z\"rN   rN   )rh   __next__ra   rd   lowerrc   replace)r\   partsr]   rE   pirM   valuer"   r"   r#   r   =  s    

,c               @   s<   e Zd ZdZdZdZdZi ZdZi Z	i Z
dd Zdd ZdS )r	   Nc             C   s   || _ || _d S )N)rM   rq   )selfrM   rq   r"   r"   r#   __init__c  s    zMiniFieldStorage.__init__c             C   s   d| j | jf S )NzMiniFieldStorage(%r, %r))rM   rq   )rr   r"   r"   r#   __repr__i  s    zMiniFieldStorage.__repr__)__name__
__module____qualname__filenamelisttypefiletype_optionsdispositiondisposition_optionsrZ   rs   rt   r"   r"   r"   r#   r	   U  s   c               @   s   e Zd ZdddejdddddddfddZd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zd;ddZd<ddZdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& ZdZd'd( Zd)d* Zd=Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: ZdS )>r
   NrJ   r   zutf-8rm   r*   c             C   sR  d}|| _ || _|
| _|| _d|kr0|d j }d | _|dksF|dkrd|krX|d }ntjdd  rrtjd }nd}|jt	j
 d}t|}|d krdd	i}|d kri }|d
krd	|d< d|kr|d |d< d|kr|d | _d|kr|d |d< nt|ttfstd|| _|d kr*tjj| _n<t|tr@|j| _n&t|doTt|ds`td|| _|| _|	| _t|tstdt|j || _d| _|| _di  }}d| jkrt| jd \}}|| _|| _ d | _!d|kr|d | _!d | _"d|kr
|d | _"| j"d k	| _#d| jkr6t| jd \}}n(| jsH|d
krTdi  }}n
d	i  }}|| _|| _$d|kr|d j| j| _%nd| _%d}d| jkryt&| jd }W n t'k
r   Y nX t(r|t(krt'd|| _)| jd kr|r|| _d  | _*| _+d| _,|d	kr$| j-  n*|d d dkrF| j.||| n| j/  d S )Nr-   r,   ZHEADr1   r2   r   surrogateescapezcontent-typez!application/x-www-form-urlencodedr.   r/   r0   zcontent-lengthz?headers must be mapping or an instance of email.message.Messager<   rR   zfp must be file pointerz#outerboundary must be bytes, not %sr   zcontent-dispositionrM   rx   z
text/plainrK   rJ   zMaximum content length exceeded
   z
multipart/rN   )0rB   rC   max_num_fieldsr3   upper
qs_on_postr4   r>   encodelocalegetpreferredencodingr   r7   r   r   	TypeErrorrZ   r5   r8   r@   r   r6   r+   errorsrX   rz   ru   outerboundary
bytes_readlimitr   r}   r~   rM   rx   _binary_filer|   innerboundaryr9   r;   r:   lengthry   r{   doneread_urlencoded
read_multiread_single)rr   r@   rZ   r   rA   rB   rC   r   r+   r   r   r3   methodrG   ZcdisprE   rD   Zclenr"   r"   r#   rs     s    /












zFieldStorage.__init__c             C   s(   y| j j  W n tk
r"   Y nX d S )N)r{   r(   AttributeError)rr   r"   r"   r#   __del__=  s    zFieldStorage.__del__c             C   s   | S )Nr"   )rr   r"   r"   r#   	__enter__C  s    zFieldStorage.__enter__c             G   s   | j j  d S )N)r{   r(   )rr   r'   r"   r"   r#   __exit__F  s    zFieldStorage.__exit__c             C   s   d| j | j| jf S )NzFieldStorage(%r, %r, %r))rM   rx   rq   )rr   r"   r"   r#   rt   I  s    zFieldStorage.__repr__c             C   s   t | j S )N)iterkeys)rr   r"   r"   r#   __iter__N  s    zFieldStorage.__iter__c             C   sT   |dkrt || jr:| jjd | jj }| jjd n| jd k	rL| j}nd }|S )Nrq   r   )r   r{   seekr<   ry   )rr   rM   rq   r"   r"   r#   __getattr__Q  s    

zFieldStorage.__getattr__c             C   sb   | j d krtdg }x"| j D ]}|j|kr|j| qW |sFt|t|dkrZ|d S |S d S )Nznot indexabler2   r   )ry   r   rM   rU   KeyErrorrc   )rr   r]   founditemr"   r"   r#   __getitem__^  s    

 zFieldStorage.__getitem__c             C   s8   || kr0| | }t |tr(dd |D S |jS n|S d S )Nc             S   s   g | ]
}|j qS r"   )rq   ).0xr"   r"   r#   
<listcomp>q  s    z)FieldStorage.getvalue.<locals>.<listcomp>)r7   ry   rq   )rr   r]   defaultrq   r"   r"   r#   getvaluel  s    
zFieldStorage.getvaluec             C   s4   || kr,| | }t |tr$|d jS |jS n|S d S )Nr   )r7   ry   rq   )rr   r]   r   rq   r"   r"   r#   getfirstw  s    

zFieldStorage.getfirstc             C   s:   || kr2| | }t |tr(dd |D S |jgS ng S d S )Nc             S   s   g | ]
}|j qS r"   )rq   )r   r   r"   r"   r#   r     s    z(FieldStorage.getlist.<locals>.<listcomp>)r7   ry   rq   )rr   r]   rq   r"   r"   r#   getlist  s    

zFieldStorage.getlistc             C   s*   | j d krtdt tdd | j D S )Nznot indexablec             s   s   | ]}|j V  qd S )N)rM   )r   r   r"   r"   r#   	<genexpr>  s    z$FieldStorage.keys.<locals>.<genexpr>)ry   r   set)rr   r"   r"   r#   r     s    
zFieldStorage.keysc                s*   | j d krtdt fdd| j D S )Nznot indexablec             3   s   | ]}|j  kV  qd S )N)rM   )r   r   )r]   r"   r#   r     s    z,FieldStorage.__contains__.<locals>.<genexpr>)ry   r   any)rr   r]   r"   )r]   r#   __contains__  s    
zFieldStorage.__contains__c             C   s   t | j S )N)rc   r   )rr   r"   r"   r#   __len__  s    zFieldStorage.__len__c             C   s   | j d krtdt| j S )NzCannot be converted to bool.)ry   r   bool)rr   r"   r"   r#   __bool__  s    
zFieldStorage.__bool__c          	   C   s   | j j| j}t|ts0td| j t|jf |j| j	| j
}| jrT|d| j 7 }tjj|| j| j| j	| j
| j| jd}dd |D | _| j  d S )Nz%s should return bytes, got %sr*   )r+   r   r   r3   c             S   s   g | ]\}}t ||qS r"   )r	   )r   r]   rq   r"   r"   r#   r     s    z0FieldStorage.read_urlencoded.<locals>.<listcomp>)r@   r<   r   r7   rX   r;   rz   ru   r=   r+   r   r   r?   r   r   rB   rC   r   r3   ry   
skip_lines)rr   rG   queryr"   r"   r#   r     s    

zFieldStorage.read_urlencodedc             C   s@  | j }t|std|f g | _| jrftjj| j| j| j	| j
| j| j| jd}| jjdd |D  | jpp| j}| jj }t|tstd| jt|jf |  jt|7  _x6|j d| j  kr|r| jj }|  jt|7  _qW | j}|d k	r|t| j8 }x*t }	d}
x$| jj }|
|7 }
|j sP qW |
sBP |  jt|
7  _|	j|
j| j
| j |	j }d|kr|d= || j|||||| j| j | j
| j|| j}|d k	r|d	8 }|jr|t|j8 }|d
k rtd|  j|j7  _| jj| |j s,| j| j!  ko$d
kn  r
P q
W | j"  d S )Nz&Invalid boundary in multipart form: %r)r+   r   r   r3   c             s   s   | ]\}}t ||V  qd S )N)r	   )r   r]   rq   r"   r"   r#   r     s    z*FieldStorage.read_multi.<locals>.<genexpr>z%s should return bytes, got %ss   --rJ   zcontent-lengthr2   r   zMax number of fields exceeded)#r   rP   r;   ry   r   r?   r   r   rB   rC   r+   r   r   r3   extendFieldStorageClass	__class__r@   rR   r7   rX   rz   ru   r   rc   rd   r   Zfeedr=   r(   r   rU   r   r   r   )rr   rA   rB   rC   Zibr   klassZ
first_liner   parserZhdr_textrY   rZ   partr"   r"   r#   r     sh    








(zFieldStorage.read_multic             C   s4   | j dkr| j  | j  n| j  | jjd d S )Nr   )r   read_binaryr   
read_linesr{   r   )rr   r"   r"   r#   r     s
    

zFieldStorage.read_single   i   c             C   s   | j  | _| j}|dkrxx|dkr| jjt|| j}t|tsXt	d| jt
|jf |  jt|7  _|svd| _P | jj| |t| }qW d S )Nr   z%s should return bytes, got %sr2   rN   )	make_filer{   r   r@   r<   minbufsizer7   rX   r;   rz   ru   r   rc   r   r&   )rr   ZtodorY   r"   r"   r#   r     s    


zFieldStorage.read_binaryc             C   s@   | j rt  | _| _nt  | _| _| jr4| j  n| j  d S )N)r   r   r{   _FieldStorage__filer   r   read_lines_to_outerboundaryread_lines_to_eof)rr   r"   r"   r#   r     s    
zFieldStorage.read_linesc             C   sv   | j d k	rF| j j t| dkrF| j | _| j j }| jj| d | _ | jrZ| jj| n| jj|j| j	| j
 d S )Ni  )r   tellrc   r   r{   r   r&   r   r=   r+   r   )rr   r\   rY   r"   r"   r#   Z__write  s    


zFieldStorage.__writec             C   s>   x8| j jd}|  jt|7  _|s,d| _P | j| qW d S )Nr2      i   rN   )r@   rR   r   rc   r   _FieldStorage__write)rr   r\   r"   r"   r#   r   -  s    zFieldStorage.read_lines_to_eofc       	      C   s,  d| j  }|d }d}d}d}x|| jkr.P | jjd}|  jt|7  _|t|7 }|sdd| _P |dkrx|| }d}|jdr|r|j }||krP ||krd| _P |}|j	drd}|d d }d}nJ|j	d
rd
}|d d }d}n*|j	drd}|d d }d}nd}d}| j
||  q"W d S )Ns   --rJ   Tr   r2   r      s   
rH   rL   Fi   rN   rO   rN   rN   )r   r   r@   rR   r   rc   r   rS   rT   endswithr   )	rr   next_boundarylast_boundaryZdelimlast_line_lfendZ_readr\   strippedlineZodelimr"   r"   r#   r   7  sP    



z(FieldStorage.read_lines_to_outerboundaryc             C   s   | j  s| jrd S d| j  }|d }d}xh| jjd}|  jt|7  _|sTd| _P |jdr|r|j }||krtP ||krd| _P |jd}q*W d S )Ns   --Tr2   r   rL   i   rN   )r   r   r@   rR   r   rc   r   rd   )rr   r   r   r   r\   r   r"   r"   r#   r   h  s&    
zFieldStorage.skip_linesc             C   s&   | j rtjdS tjd| jddS d S )Nzwb+zw+r%   )r+   newline)r   tempfileZTemporaryFiler+   )rr   r"   r"   r#   r   ~  s    
zFieldStorage.make_file)N)Ni    ) ru   rv   rw   osrA   rs   r   r   r   rt   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
   n  s>   + "

C	
1c             C   s   t d t   tjt_yNt }t  t  t| t|  t	  dd }|fdd}t d |  W n   t
  Y nX t d day&t }t  t  t| t|  W n   t
  Y nX d S )	NzContent-type: text/htmlc               S   s   t d d S )Nz,testing print_exception() -- <I>italics?</I>)execr"   r"   r"   r#   rg     s    ztest.<locals>.fc             S   s
   |   d S )Nr"   )rg   r"   r"   r#   g  s    ztest.<locals>.gz9<H3>What follows is a test, not an actual exception:</H3>z*<H1>Second try with a small maxlen...</H1>2   )printr4   stdoutstderrr
   r   r   r   r   r   r   r:   )rA   formrg   r   r"   r"   r#   r     s4    
c             C   sx   | d krt j \} }}dd l}t  td |j|||j| | }tdtjdj|d d tj|d f  ~d S )Nr   z+<H3>Traceback (most recent call last):</H3>z<PRE>%s<B>%s</B></PRE>r   r2   rN   rN   )	r4   exc_info	tracebackr   	format_tbformat_exception_onlyhtmlr   rV   )rz   rq   tbr   r   ry   r"   r"   r#   r     s    
c             C   s`   t | j }t  td td x*|D ]"}tdtj|dtj| |  q(W td t  d S )Nz<H3>Shell Environment:</H3>z<DL>z<DT>z<DD>z</DL>)sortedr   r   r   r   )rA   r   r]   r"   r"   r#   r     s    
"c             C   s   t | j }t  td |s&td td xb|D ]Z}tdtj| d dd | | }tdtjtt| d	  td
tjt|  q4W td t  d S )Nz<H3>Form Contents:</H3>z<P>No form fields.z<DL>z<DT>: )rf   z<i>z</i>z<DD>z</DL>)r   r   r   r   r   reprrz   )r   r   r]   rq   r"   r"   r#   r     s    
c              C   sj   t   t d ytj } W n6 tk
rP } zt dtjt| W Y d d }~X nX t tj|  t   d S )Nz#<H3>Current Working Directory:</H3>zOSError:)r   r   getcwdr   r   r   str)pwdmsgr"   r"   r#   r     s    &c               C   s(   t   t d t   t tj t   d S )Nz <H3>Command Line Arguments:</H3>)r   r4   r>   r"   r"   r"   r#   r     s
    
c               C   s   t d d S )Na  
<H3>These environment variables could have been set:</H3>
<UL>
<LI>AUTH_TYPE
<LI>CONTENT_LENGTH
<LI>CONTENT_TYPE
<LI>DATE_GMT
<LI>DATE_LOCAL
<LI>DOCUMENT_NAME
<LI>DOCUMENT_ROOT
<LI>DOCUMENT_URI
<LI>GATEWAY_INTERFACE
<LI>LAST_MODIFIED
<LI>PATH
<LI>PATH_INFO
<LI>PATH_TRANSLATED
<LI>QUERY_STRING
<LI>REMOTE_ADDR
<LI>REMOTE_HOST
<LI>REMOTE_IDENT
<LI>REMOTE_USER
<LI>REQUEST_METHOD
<LI>SCRIPT_NAME
<LI>SERVER_NAME
<LI>SERVER_PORT
<LI>SERVER_PROTOCOL
<LI>SERVER_ROOT
<LI>SERVER_SOFTWARE
</UL>
In addition, HTTP headers sent by the server may be passed in the
environment as well.  Here are some common variable names:
<UL>
<LI>HTTP_ACCEPT
<LI>HTTP_CONNECTION
<LI>HTTP_HOST
<LI>HTTP_PRAGMA
<LI>HTTP_REFERER
<LI>HTTP_USER_AGENT
</UL>
)r   r"   r"   r"   r#   r     s    'c             C   sF   t dtdd | jdd} | jdd} | jdd	} |rB| jd
d} | S )Nz1cgi.escape is deprecated, use html.escape insteadrH   )
stacklevelr*   z&amp;<z&lt;>z&gt;r`   z&quot;)r   rI   rm   )re   Zquoter"   r"   r#   r   2  s    
c             C   s(   dd l }t| trd}nd}|j|| S )Nr   s   ^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)rer7   rX   match)re   r   Z_vb_patternr"   r"   r#   rP   >  s
    
rP   __main__)r   r   )r   r   )NNNN)N)0__version__ior   r   r   collectionsr   r4   r   Zurllib.parser?   Zemail.parserr   Zemail.messager   warningsr   r   r   r   __all__r   r   r$   r    r   r)   r   r:   rA   r   r   r   r   rh   r   r	   r
   r   r   r   r   r   r   r   r   rP   ru   r"   r"   r"   r#   <module>   s`   #	H

d    6'
/

