
    hc                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJ r   S SK!J"r"  S SK#J$r$J%r%  S SK&J'r'  \'" S\RP                  5      r) " S S\ 5      r* " S S\+5      r, " S S5      r- " S S\-5      r. " S S\-5      r/ " S S\/5      r0 " S S\.5      r1 " S S \15      r2 " S! S"\15      r3 " S# S$\.5      r4 " S% S&\.5      r5 " S' S(\.5      r6 " S) S*\.5      r7 " S+ S,\.5      r8 " S- S.\.5      r9 " S/ S0\.5      r: " S1 S2\;5      r< " S3 S4\.5      r=g)5    N)Header)	responses)urlparse)async_to_syncsync_to_async)settings)signalssigning)DisallowedRedirect)DjangoJSONEncoder)SimpleCookie)timezone)CaseInsensitiveMapping)
iri_to_uri)content_disposition_header	http_date)_lazy_re_compilez ;\s*charset=(?P<charset>[^\s;]+)c                   @    \ rS rSrS rS
S jrS rS rSS jrS r	S	r
g)ResponseHeaders    c                 ^    0 U l         U(       a  U R                  U5       H	  u  p#X0U'   M     gg)zU
Populate the initial data using __setitem__ to ensure values are
correctly encoded.
N)_store_unpack_items)selfdataheadervalues       F/var/www/html/env/lib/python3.13/site-packages/django/http/response.py__init__ResponseHeaders.__init__!   s1    
 !%!3!3D!9$V ":     c                 z    [        U[        5      (       a  UR                  U5        OC[        U[        5      (       a  UR	                  U5      nO[        U5      nUR                  U5        SU;   d  SU;   a  [        SU< S35      e U$ ! [         a  n[        U[        5      (       a  SU;   d'  SU;   d!  [        U[        5      (       a  SU;   d  SU;   a  [        SU< S35      UeU(       a-  [        US[        R                  S9R                  5       n S
nAU$ U=R                  S	U-  -  sl
        e S
nAff = f)z
Convert headers key/value to ascii/latin-1 native strings.
`charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and
`value` can't be represented in the given charset, apply MIME-encoding.

z*Header values can't contain newlines (got )   
   zutf-8)
maxlinelenz,, HTTP response headers must be in %s formatN)
isinstancestrencodebytesdecodeBadHeaderErrorUnicodeErrorr   sysmaxsizereason)r   r   charsetmime_encodees        r   _convert_to_charset#ResponseHeaders._convert_to_charset+   s$   	%%%W%E5))W-E
W%u}$@	K  !.( !  	
 5%((eun5#&&DEMTU]$@	K ug#++FMMO  JWTT	s   BB 
D:BD5D55D:c                 &    U R                  U5        g N)pop)r   keys     r   __delitem__ResponseHeaders.__delitem__R   s    r!   c                     U R                  US5      nU R                  USSS9nX4U R                  UR                  5       '   g )Nasciilatin-1T)r4   )r6   r   lowerr   r;   r   s      r   __setitem__ResponseHeaders.__setitem__U   sA    &&sG4((	t(L$'<CIIK r!   Nc                 V    U R                   R                  UR                  5       U5      $ r9   )r   r:   rA   )r   r;   defaults      r   r:   ResponseHeaders.popZ   s    {{syy{G44r!   c                     X;  a  X U'   g g r9    rB   s      r   
setdefaultResponseHeaders.setdefault]   s    ?I r!   )r   )Fr9   )__name__
__module____qualname____firstlineno__r   r6   r<   rC   r:   rJ   __static_attributes__rI   r!   r   r   r       s!    %%N0
5r!   r   c                       \ rS rSrSrg)r.   b   rI   NrL   rM   rN   rO   rP   rI   r!   r   r.   r.   b       r!   r.   c                   @   \ rS rSrSrSr S S jr\S 5       r\R                  S 5       r\S 5       r
\
R                  S	 5       r
S
 r\r\S 5       rS rS rS rS r\rS rS!S jr        S"S jrS rS#S jrS$S jrS rS rS rS rS rS rS rS r S r!Sr"g)%HttpResponseBasef   z
An HTTP response base class with dictionary-accessed headers.

This class doesn't handle content. It should not be used directly.
Use the HttpResponse and StreamingHttpResponse subclasses instead.
   Nc                    [        U5      U l        X@l        SU R                  ;  a!  Uc  SU R                   3nXR                  S'   OU(       a  [	        S5      e/ U l        S U l        [        5       U l        SU l	        Ub5   [        U5      U l        SU R                  s=::  a  S::  d  O  [	        S5      eX0l        g ! [        [        4 a    [        S5      ef = f)	NContent-Typeztext/html; charset=zX'headers' must not contain 'Content-Type' when the 'content_type' parameter is provided.Fz$HTTP status code must be an integer.d   iW  z4HTTP status code must be an integer from 100 to 599.)r   headers_charsetr3   
ValueError_resource_closers_handler_classr   cookiesclosedintstatus_code	TypeError_reason_phrase)r   content_typestatusr2   r3   r\   s         r   r   HttpResponseBase.__init__p   s     'w/-#!4T\\NC+7LL(8  "$ ##~H#&v;  $**1c1 !WXX$ 	* H FGGHs   B= =Cc                 v    U R                   b  U R                   $ [        R                  " U R                  S5      $ )NzUnknown Status Code)rf   r   getrd   r   s    r   reason_phraseHttpResponseBase.reason_phrase   s4    *&&& }}T--/DEEr!   c                     Xl         g r9   )rf   r   r   s     r   rm   rn      s    #r!   c                     U R                   b  U R                   $ U R                  R                  S5      =n(       a1  [        R	                  U5      =n(       a  US   R                  SS5      $ [        R                  $ )NrZ   r3   " )r]   r\   rk   _charset_from_content_type_researchreplacer   DEFAULT_CHARSET)r   rg   matcheds      r   r3   HttpResponseBase.charset   sn    ==$==   <<++N;;<;7>>|LLwL
 y)11#r::'''r!   c                     Xl         g r9   )r]   rp   s     r   r3   ry      s    r!   c           
          SR                  U R                  R                  5        VVs/ s H+  u  pUR                  S5      S-   UR                  S5      -   PM-     snn5      $ s  snnf )zHTTP headers as a bytestring.s   
r?   s   : r@   )joinr\   itemsr+   rB   s      r   serialize_headers"HttpResponseBase.serialize_headers   s`    || #',,"4"4"6"6JC 

7#e+ell9.EE"6
 	
s   2A#
c                 J    SU R                   ;   a  SU R                   S   -  $ S$ )NrZ   z, "%s"rs   r\   rl   s    r   _content_type_for_repr'HttpResponseBase._content_type_for_repr   s2     - t||N33	
 	
r!   c                      X R                   U'   g r9   r   )r   r   r   s      r   rC   HttpResponseBase.__setitem__   s    $Vr!   c                     U R                   U	 g r9   r   r   r   s     r   r<   HttpResponseBase.__delitem__   s    LL r!   c                      U R                   U   $ r9   r   r   s     r   __getitem__HttpResponseBase.__getitem__   s    ||F##r!   c                     XR                   ;   $ )z$Case-insensitive check for a header.r   r   s     r   
has_headerHttpResponseBase.has_header   s    %%r!   c                 6    U R                   R                  5       $ r9   )r\   r}   rl   s    r   r}   HttpResponseBase.items   s    ||!!##r!   c                 8    U R                   R                  X5      $ r9   )r\   rk   )r   r   	alternates      r   rk   HttpResponseBase.get   s    ||22r!   c
                 |   X R                   U'   UGb  [        U[        R                  5      (       a  [        R                  " U5      (       a/  [        R
                  " U[        R                  R                  5      nU[        R                  R                  [        R                  R                  S9-
  n
U
[        R                  " SS9-  n
SnUb  [        S5      e[        SU
R                  S-  U
R                  -   5      nO$X@R                   U   S'   OS	U R                   U   S'   Ub  [        U[        R                  5      (       a  UR                  5       n[        U5      U R                   U   S
'   U(       d1  [        [         R                   " 5       U-   5      U R                   U   S'   Ub  XPR                   U   S'   Ub  X`R                   U   S'   U(       a  SU R                   U   S'   U(       a  SU R                   U   S'   U	(       a1  U	R#                  5       S;  a  [        S5      eXR                   U   S'   gg)aI  
Set a cookie.

``expires`` can be:
- a string in the correct format,
- a naive ``datetime.datetime`` object in UTC,
- an aware ``datetime.datetime`` object in any time zone.
If it is a ``datetime.datetime`` object then calculate ``max_age``.

``max_age`` can be:
- int/float specifying seconds,
- ``datetime.timedelta`` object.
N)tz   )secondsz/'expires' and 'max_age' can't be used together.r   iQ expiresrs   zmax-agepathdomainTsecurehttponly)laxnonestrictz,samesite must be "lax", "none", or "strict".samesite)ra   r)   datetimer   is_naive
make_awareutcnow	timedeltar^   maxdaysr   total_secondsrc   r   timerA   )r   r;   r   max_ager   r   r   r   r   r   deltas              r   
set_cookieHttpResponseBase.set_cookie   s   2 "S'8#4#455$$W--&11'8;L;L;P;PQG("3"3"7"78;L;L;P;P"7"QQ ++A66&$%VWWae!3emm!CD/6S!),+-DLLi('8#5#566!//1+.w<DLLi(/8w9N/OS!),(,LLf%*0LLh'*.DLLh',0DLLj)~~'@@ !OPP,4LLj) r!   c                 :    U R                   R                  X5        g)z,Set a header unless it has already been set.N)r\   rJ   rB   s      r   rJ   HttpResponseBase.setdefault  s    +r!   c                 r    [         R                  " X-   S9R                  U5      nU R                  " X40 UD6$ )N)salt)r
   get_cookie_signersignr   )r   r;   r   r   kwargss        r   set_signed_cookie"HttpResponseBase.set_signed_cookie  s3    ))sz:??Fs4V44r!   c           
          UR                  S5      =(       d    U=(       a    UR                  5       S:H  nU R                  USUUUSUS9  g )N)z	__Secure-z__Host-r   r   zThu, 01 Jan 1970 00:00:00 GMT)r   r   r   r   r   r   )
startswithrA   r   )r   r;   r   r   r   r   s         r   delete_cookieHttpResponseBase.delete_cookie  sW    
  89 
3)V3 	 	3 	 	
r!   c                    [        U[        [        45      (       a  [        U5      $ [        U[        5      (       a$  [        UR	                  U R
                  5      5      $ [        U5      R	                  U R
                  5      $ )z=Turn a value into a bytestring encoded in the output charset.)r)   r,   
memoryviewr*   r+   r3   rp   s     r   
make_bytesHttpResponseBase.make_bytes1  s^     eeZ011<eS!!dll3445z  ..r!   c                     U R                    H  n U" 5         M     U R                   R                  5         SU l        [        R
                  R                  U R                  S9  g ! [         a     Me  f = f)NT)sender)r_   	Exceptionclearrb   r	   request_finishedsendr`   )r   closers     r   closeHttpResponseBase.closeF  sh    ,,F - 	$$&  %%T-@-@%A  s   A%%
A32A3c                 F    [        SU R                  R                  -  5      eNz This %s instance is not writableOSError	__class__rL   r   contents     r   writeHttpResponseBase.writeQ      84>>;R;RRSSr!   c                     g r9   rI   rl   s    r   flushHttpResponseBase.flushT  s    r!   c                 F    [        SU R                  R                  -  5      e)Nz)This %s instance cannot tell its positionr   rl   s    r   tellHttpResponseBase.tellW  s!    7$..:Q:QQ
 	
r!   c                     gNFrI   rl   s    r   readableHttpResponseBase.readable_      r!   c                     gr   rI   rl   s    r   seekableHttpResponseBase.seekableb  r   r!   c                     gr   rI   rl   s    r   writableHttpResponseBase.writablee  r   r!   c                 F    [        SU R                  R                  -  5      er   r   )r   liness     r   
writelinesHttpResponseBase.writelinesh  r   r!   )r]   r`   rf   r_   rb   ra   r\   rd   )NNNNNr9   )rs   NN/NFFN)rs   )r   NN)#rL   rM   rN   rO   __doc__rd   r   propertyrm   setterr3   r~   	__bytes__r   rC   r<   r   r   __contains__r}   rk   r   rJ   r   r   r   r   r   r   r   r   r   r   r   rP   rI   r!   r   rV   rV   f   s    K RV%< F F $ $ ( ( ^^ 
 "I
 
%!$& L$3 >5@,5
(/*	BT
Tr!   rV   c                      ^  \ rS rSrSrSrSU 4S jjrS rS r\r	\
S 5       r\R                  S 5       rS	 rS
 rS rS rS rS rSrU =r$ )HttpResponseil  zg
An HTTP response class with a string as content.

This content can be read, appended to, or replaced.
Fc                 2   > [         TU ]  " U0 UD6  Xl        g r9   )superr   r   )r   r   argsr   r   s       r   r   HttpResponse.__init__u  s    $)&)r!   c                 d    SU R                   R                  U R                  U R                  S.-  $ Nz5<%(cls)s status_code=%(status_code)d%(content_type)s>)clsrd   rg   r   rL   rd   r   rl   s    r   __repr__HttpResponse.__repr__z  s4    F>>**++ 77J
 
 	
r!   c                 B    U R                  5       S-   U R                  -   $ )z6Full HTTP message, including headers, as a bytestring.s   

)r~   r   rl   s    r   	serializeHttpResponse.serialize  s    %%'+5DDr!   c                 8    SR                  U R                  5      $ Nr!   )r|   
_containerrl   s    r   r   HttpResponse.content  s    xx((r!   c                 8  ^  [        US5      (       a_  [        U[        [        [        45      (       d?  SR                  U 4S jU 5       5      n[        US5      (       a   UR                  5         OOT R                  U5      nU/T l	        g ! [         a     Nf = f)N__iter__r!   c              3   F   >#    U  H  nTR                  U5      v   M     g 7fr9   r   ).0chunkr   s     r   	<genexpr>'HttpResponse.content.<locals>.<genexpr>  s     I5%tu555s   !r   )
hasattrr)   r,   r   r*   r|   r   r   r   r   )r   r   r   s   `  r   r   r     s     5*%%jE:s+/
 /
 hhI5IIGug&&KKM ' ooe,G") ! s    B 
BBc                 ,    [        U R                  5      $ r9   )iterr   rl   s    r   r  HttpResponse.__iter__  s    DOO$$r!   c                 X    U R                   R                  U R                  U5      5        g r9   )r   appendr   r   s     r   r   HttpResponse.write  s    tw78r!   c                 ,    [        U R                  5      $ r9   )lenr   rl   s    r   r   HttpResponse.tell  s    4<<  r!   c                     U R                   $ r9   )r   rl   s    r   getvalueHttpResponse.getvalue  s    ||r!   c                     g)NTrI   rl   s    r   r   HttpResponse.writable  s    r!   c                 8    U H  nU R                  U5        M     g r9   )r   )r   r   lines      r   r   HttpResponse.writelines  s    DJJt r!   )r   r   )r!   )rL   rM   rN   rO   r   	streamingr   r   r   r   r   r   r   r  r   r   r  r   r   rP   __classcell__r   s   @r   r   r   l  ss     I

E I) ) ^^$ $ %9! r!   r   c                      ^  \ rS rSrSrSrSU 4S jjrS r\S 5       r	\S 5       r
\
R                  S 5       r
S	 rS
 rS rS rSrU =r$ )StreamingHttpResponsei  a  
A streaming HTTP response class with an iterator as content.

This should only be iterated once, when the response is streamed to the
client. However, it can be appended to or replaced with a new iterator
that wraps the original content (or yields entirely new content).
Tc                 2   > [         TU ]  " U0 UD6  Xl        g r9   )r   r   streaming_content)r   r!  r   r   r   s       r   r   StreamingHttpResponse.__init__  s    $)&) "3r!   c                 d    SU R                   R                  U R                  U R                  S.-  $ r   )r   rN   rd   r   rl   s    r   r   StreamingHttpResponse.__repr__  s4    F>>..++ 77J
 
 	
r!   c                 F    [        SU R                  R                  -  5      e)NzMThis %s instance has no `content` attribute. Use `streaming_content` instead.)AttributeErrorr   rL   rl   s    r   r   StreamingHttpResponse.content  s'    +-1^^-D-DE
 	
r!   c                    ^ ^ T R                   (       a  T R                  mUU 4S jnU" 5       $ [        T R                  T R                  5      $ )Nc                 V   >#    T  S h  vN n TR                  U 5      7v   M   N
 g 7fr9   r  )part	_iteratorr   s    r   awrapper9StreamingHttpResponse.streaming_content.<locals>.awrapper  s&     "+ 0$//$//0)s   )'%')'))is_asyncr+  mapr   )r   r,  r+  s   ` @r   r!  'StreamingHttpResponse.streaming_content  s9    == I0 :t77r!   c                 &    U R                  U5        g r9   )_set_streaming_contentrp   s     r   r!  r0    s    ##E*r!   c                      [        U5      U l        SU l        [        US5      (       a&  U R                  R                  UR                  5        g g ! [         a    [	        U5      U l        SU l         N[f = f)NFTr   )	r  r+  r.  re   aiterr	  r_   r  r   rp   s     r   r2  ,StreamingHttpResponse._set_streaming_content  sh    	!!%[DN!DM 5'""""))%++6 #  	!"5\DN DM	!s   A !A54A5c           	           [        U R                  5      $ ! [         aY    [        R                  " S[
        5        S n[        U R                  [        [        U5      " U R                  5      5      5      s $ f = f)NzStreamingHttpResponse must consume asynchronous iterators in order to serve them synchronously. Use a synchronous iterator instead.c                 T   #    / nU   S h  vN nUR                  U5        M   N
 U$ 7fr9   )r  )r+  as_listr  s      r   to_list/StreamingHttpResponse.__iter__.<locals>.to_list  s,     #, *%NN5)*9s   (%#%(%()
r  r!  re   warningswarnWarningr/  r   r   r+  )r   r9  s     r   r  StreamingHttpResponse.__iter__  sj    	V..// 	VMMP t]7-CDNN-S(TUU	Vs    A A:9A:c                
  #     U R                     S h  vN nU7v   M   N
 g ! [         aR    [        R                  " S[        5        [        [        5      " U R                   5      I S h  vN   H  nU7v   M
      g f = f7f)NzStreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.)r!  re   r;  r<  r=  r   list)r   r*  s     r   	__aiter__StreamingHttpResponse.__aiter__   sr     	"44 d
4 		MMS ,D1$2H2HIII
 J		sJ   B$ " "$ "$ BAB +A.,B =B?B  Bc                 8    SR                  U R                  5      $ r   )r|   r!  rl   s    r   r  StreamingHttpResponse.getvalue  s    xx..//r!   )r+  r.  r!  )rI   )rL   rM   rN   rO   r   r  r   r   r   r   r!  r   r2  r  rA  r  rP   r  r  s   @r   r  r    su     I3
 
 
 8 8 + +	7V&0 0r!   r  c                   L   ^  \ rS rSrSrSrSSS.U 4S jjrU 4S jrS	 rS
r	U =r
$ )FileResponsei  z6
A streaming HTTP response class optimized for files.
i   Frs   )as_attachmentfilenamec                n   > Xl         X l        SU;  =(       d    US   S L U l        [        TU ]  " U0 UD6  g )Nrg   )rG  rH  _no_explicit_content_typer   r   )r   rG  rH  r   r   r   s        r   r   FileResponse.__init__  sA    * &(JF>,Bd,J 	& 	$)&)r!   c                 8  >^ ^ [        US5      (       d  S T l        [        TT ]  U5      $ U=T l        m[        TS5      (       a%  T R                  R                  TR                  5        [        UU 4S jS5      nT R                  T5        [        TT ]  U5        g )Nreadr   c                  :   > T R                  TR                  5      $ r9   )rM  
block_sizefileliker   s   r   <lambda>5FileResponse._set_streaming_content.<locals>.<lambda>*  s    X]]4??;r!   r!   )	r	  file_to_streamr   r2  r_   r  r   r  set_headers)r   r   rQ  r   s   ` @r   r2  #FileResponse._set_streaming_content"  s    uf%%"&D71%88)..h8W%%""))(..9;SA"&u-r!   c                   ^ ^ [        TSS5      n[        U[        5      (       a  UOSn[        TS5      =(       a(    [        TS5      (       + =(       d    TR	                  5       n[        TS5      (       Ga  U(       ac  TR                  5       nTR                  S[        R                  5        TR                  5       U-
  T R                  S'   TR                  U5        GO[        TS5      (       a9  TR                  5       R                  TR                  5       -
  T R                  S'   O[        R                  R                  U5      (       a=  [        R                  R                  U5      TR                  5       -
  T R                  S'   OeU(       a^  [!        [#        UU 4S	 jS5      5      T R                  S'   TR                  [%        T R                  S   5      * [        R                  5        [        R                  R'                  T R(                  =(       d    U5      nT R*                  (       a^  U(       aH  [,        R.                  " U5      u  pVS
SSSSS.R1                  Xe5      nU=(       d    ST R                  S'   OST R                  S'   [3        T R4                  U5      =n(       a  UT R                  S'   gg)z
Set some common response headers (Content-Length, Content-Type, and
Content-Disposition) based on the `filelike` response content.
namers   seekr   r   r   zContent-Length	getbufferc                  L   > [        T R                  TR                  5      5      $ r9   )r  rM  rO  rP  s   r   rR  *FileResponse.set_headers.<locals>.<lambda>H  s    St!?@r!   zapplication/x-brotlizapplication/x-bzipzapplication/x-compresszapplication/gzipzapplication/x-xz)brbzip2compressgzipxzzapplication/octet-streamrZ   zContent-DispositionN)getattrr)   r*   r	  r   r   rY  ioSEEK_ENDr\   rZ  nbytesosr   existsgetsizesumr  rc   basenamerH  rJ  	mimetypes
guess_typerk   r   rG  )r   rQ  rH  r   initial_positionrg   encodingcontent_dispositions   ``      r   rU  FileResponse.set_headers.  s4   
 8VR0)(C888b8V, 
*--D1B1B1D 	 8V$$#+==? a-19CS1S-../;//&&(//(--/A -. ))GGOOH-? -. -0@!D.DLL)* MM3t||,<=>>L77##DMM$=X>)))2)=)=h)G& 11 8.,  #h-  !>$> ^, 0J^,"<#
 
 
 3FDLL./
r!   )rJ  rG  rT  rH  )rL   rM   rN   rO   r   rO  r   r2  rU  rP   r  r  s   @r   rF  rF    s/     J,1B * *
.4F 4Fr!   rF  c                   H   ^  \ rS rSr/ SQrU 4S jr\" S 5      rS rSr	U =r
$ )HttpResponseRedirectBaseie  )httphttpsftpc                    > [         TU ]  " U0 UD6  [        U5      U S'   [        [	        U5      5      nUR
                  (       a3  UR
                  U R                  ;  a  [        SUR
                  -  5      eg g )NLocationz)Unsafe redirect to URL with protocol '%s')r   r   r   r   r*   schemeallowed_schemesr   )r   redirect_tor   r   parsedr   s        r   r   !HttpResponseRedirectBase.__init__h  sl    $)&)%k2Z#k*+==V]]$2F2FF$;fmmK  G=r!   c                     U S   $ )Nrw  rI   rl   s    r   rR  !HttpResponseRedirectBase.<lambda>q  s	    Z 0r!   c                 z    SU R                   R                  U R                  U R                  U R                  S.-  $ )NzD<%(cls)s status_code=%(status_code)d%(content_type)s, url="%(url)s">)r   rd   rg   url)r   rL   rd   r   r  rl   s    r   r   !HttpResponseRedirectBase.__repr__s  s:    R~~..#// $ ; ;xx		
r!   rI   )rL   rM   rN   rO   ry  r   r   r  r   rP   r  r  s   @r   rr  rr  e  s$    .O 0
1C	
 	
r!   rr  c                       \ rS rSrSrSrg)HttpResponseRedirecti  i.  rI   NrL   rM   rN   rO   rd   rP   rI   r!   r   r  r        Kr!   r  c                       \ rS rSrSrSrg)HttpResponsePermanentRedirecti  i-  rI   Nr  rI   r!   r   r  r    r  r!   r  c                   d   ^  \ rS rSrSrU 4S jr\R                  R                  S 5       rSr	U =r
$ )HttpResponseNotModifiedi  i0  c                 ,   > [         TU ]  " U0 UD6  U S	 g )Nzcontent-type)r   r   )r   r   r   r   s      r   r    HttpResponseNotModified.__init__  s    $)&) r!   c                 6    U(       a  [        S5      e/ U l        g )Nz7You cannot set content to a 304 (Not Modified) response)r&  r   rp   s     r   r   HttpResponseNotModified.content  s     I  r!   )r   )rL   rM   rN   rO   rd   r   r   r   r   rP   r  r  s   @r   r  r    s-    K!    !r!   r  c                       \ rS rSrSrSrg)HttpResponseBadRequesti  i  rI   Nr  rI   r!   r   r  r    r  r!   r  c                       \ rS rSrSrSrg)HttpResponseNotFoundi  i  rI   Nr  rI   r!   r   r  r    r  r!   r  c                       \ rS rSrSrSrg)HttpResponseForbiddeni  i  rI   Nr  rI   r!   r   r  r    r  r!   r  c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )HttpResponseNotAllowedi  i  c                 N   > [         TU ]  " U0 UD6  SR                  U5      U S'   g )Nz, Allow)r   r   r|   )r   permitted_methodsr   r   r   s       r   r   HttpResponseNotAllowed.__init__  s(    $)&)		"34Wr!   c                 l    SU R                   R                  U R                  U R                  U S   S.-  $ )NzC<%(cls)s [%(methods)s] status_code=%(status_code)d%(content_type)s>r  )r   rd   rg   methodsr   rl   s    r   r   HttpResponseNotAllowed.__repr__  s;    T>>**++ 77G}	X
 
 	
r!   rI   )	rL   rM   rN   rO   rd   r   r   rP   r  r  s   @r   r  r    s    K5
 
r!   r  c                       \ rS rSrSrSrg)HttpResponseGonei  i  rI   Nr  rI   r!   r   r  r    r  r!   r  c                       \ rS rSrSrSrg)HttpResponseServerErrori  i  rI   Nr  rI   r!   r   r  r    r  r!   r  c                       \ rS rSrSrg)Http404i  rI   NrS   rI   r!   r   r  r    rT   r!   r  c                   6   ^  \ rS rSrSr\SS4U 4S jjrSrU =r$ )JsonResponsei  a   
An HTTP response class that consumes data to be serialized to JSON.

:param data: Data to be dumped into json. By default only ``dict`` objects
  are allowed to be passed due to a security flaw before ECMAScript 5. See
  the ``safe`` parameter for more information.
:param encoder: Should be a json encoder class. Defaults to
  ``django.core.serializers.json.DjangoJSONEncoder``.
:param safe: Controls if only ``dict`` objects may be serialized. Defaults
  to ``True``.
:param json_dumps_params: A dictionary of kwargs passed to json.dumps().
TNc                    > U(       a   [        U[        5      (       d  [        S5      eUc  0 nUR                  SS5        [        R
                  " U4SU0UD6n[        TU ]  " SSU0UD6  g )NzTIn order to allow non-dict objects to be serialized set the safe parameter to False.rg   zapplication/jsonr   r   rI   )r)   dictre   rJ   jsondumpsr   r   )r   r   encodersafejson_dumps_paramsr   r   s         r   r   JsonResponse.__init__  ss     
4..+  $ ".*<=zz$AGA/@A000r!   rI   )	rL   rM   rN   rO   r   r   r   rP   r  r  s   @r   r  r    s      "1 1r!   r  )>r   rc  r  rk  rf  rer0   r   r;  email.headerr   http.clientr   urllib.parser   asgiref.syncr   r   django.confr   django.corer	   r
   django.core.exceptionsr   django.core.serializers.jsonr   django.http.cookier   django.utilsr   django.utils.datastructuresr   django.utils.encodingr   django.utils.httpr   r   django.utils.regex_helperr   Irt   r   r^   r.   rV   r   r  rF  rr  r  r  r  r  r  r  r  r  r  r   r  r  rI   r!   r   <module>r     sK    	   	 	 
    ! ! 5   ( 5 : + ! > , C 6 0'! 
?, ?D	Z 	CT CTLA# AH`0, `0FOF( OFd
| 
43 $< l  \ < L 
\ 
 | l 	i 	1< 1r!   