§
    Û×j#  ã                   ó  — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ  edd¬¦  «        Z e¦   «         Z e¦   «         ZdadZdZd„ Zd„ Z G d„ de¦  «        ZdS )zKBounded, lazy media previews served through Gradio's authorized file route.é    N)ÚOrderedDict)ÚThreadPoolExecutor)Úsha256)ÚBytesIO)ÚPath)ÚRLock)Úparse_qs)ÚImageÚImageOps)ÚResponse)ÚDisconnectAwareFileResponseé   zGallery image preview)Úmax_workersÚthread_name_prefixi   é   c                 óÂ   — t           5  | t          v r5t                               | ¦  «         dt          |          fcd d d ¦  «         S 	 d d d ¦  «         n# 1 swxY w Y   dS )NT)FN)Ú_lockÚ_cacheÚmove_to_end)Úkeys    úFC:\Users\johnn\OneDrive\Documents\AI\shared\gradio\gallery_previews.pyÚ_cachedr      s¸   € Ý	ð %ð %Ø•&ˆ=ˆ=Ý×Ò˜sÑ#Ô#Ð#Ø� œÐ$ð%ð %ð %ð %ñ %ô %ð %ð %Øð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð ˆ;s   ˆ2AÁAÁAc                 óà  — t          | ¦  «        \  }}|r|S | ^}}}i }t          j        |¦  «        5 }t          |j        ¦  «        }t          |dd¦  «        }	|	sS|dk    rM|                     |j        d¦  «         t          j	        |¦  «        }
|
j        dvr|
 
                    d¦  «        }
dD ]w}d }|	sg||k    ra|
                     ||ft          j        j        ¦  «         t          ¦   «         }|
                     |dd	¬
¦  «         |                     ¦   «         }||||g|¢R <   Œx	 d d d ¦  «         n# 1 swxY w Y   t"          5  |                     ¦   «         D ]`\  }}t&                               |d ¦  «        }t*          |�t-          |¦  «        ndz  a|t&          |<   t*          |�t-          |¦  «        ndz  aŒat*          t.          k    st-          t&          ¦  «        t0          k    rft&                               d¬¦  «        \  }}t*          |�t-          |¦  «        ndz  at*          t.          k    °It-          t&          ¦  «        t0          k    °f||          cd d d ¦  «         S # 1 swxY w Y   d S )NÚis_animatedFé@  )é@  r   )ÚRGBÚRGBAÚLÚLAÚPr   )r   r   ÚPNGé   )ÚformatÚcompress_levelr   )Úlast)r   r
   ÚopenÚmaxÚsizeÚgetattrÚdraftÚmoder   Úexif_transposeÚconvertÚ	thumbnailÚ
ResamplingÚLANCZOSr   ÚsaveÚgetvaluer   Úitemsr   ÚpopÚ_cache_bytesÚlenÚ
_MAX_BYTESÚ_MAX_ENTRIESÚpopitem)r   ÚfoundÚdataÚpathÚ_ÚversionÚpreviewsÚsourceÚsource_edgeÚanimatedÚimageÚedgeÚoutputÚ	cache_keyÚpreviousÚremoveds                   r   Ú_previewrJ   "   sì  € õ ˜#‘,”,�K€Eˆ4Øð ØˆØÐ€Dˆ!ˆgØ€HÝ	Œ�DÑ	Ô	ð 4˜Võ ˜&œ+Ñ&Ô&ˆÝ˜6 =°%Ñ8Ô8ˆØð 	-˜K¨#Ò-Ð-Ø�LŠL˜œ lÑ3Ô3Ð3ÝÔ+¨FÑ3Ô3ˆEØŒzÐ!@Ð@Ð@ØŸš eÑ,Ô,�àð 	4ð 	4ˆDØˆDØð ) ¨dÒ 2Ð 2Ø—’  t ­eÔ.>Ô.FÑGÔGÐGÝ ™œ�Ø—
’
˜6¨%À�
ÑBÔBÐBØ—’Ñ(Ô(�Ø/3ˆH�d˜DÐ+ 7Ð+Ð+Ñ,Ð,ð	4ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4õ& 
ð 	ð 	Ø'Ÿ~š~Ñ/Ô/ð 	Að 	A‰OˆI�tÝ—z’z )¨TÑ2Ô2ˆHÝ¨XÐ-A�C ™MœM˜MÀqÑHˆLØ $�F�9ÑÝ¨Ð)9�C ™IœI˜I¸qÑ@ˆLˆLÝ�ZÒ'Ð'­3­v©;¬;½Ò+EÐ+EÝŸš¨U˜Ñ3Ô3‰JˆAˆwÝ¨GÐ,?�C ™LœL˜LÀQÑFˆLõ �ZÒ'Ð'­3­v©;¬;½Ò+EÐ+Eð ˜Œ}ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s%   ²C5D4Ä4D8Ä;D8ÅDI#É#I'É*I'c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚGalleryFileResponsec              ƒ   óV  •K  — t          |d                              ¦   «         ¦  «                             d¦  «        }|€)t          ¦   «                              |||¦  «        ƒ d {V —†S |dgdgdgfvr" t          dd¬¦  «        |||¦  «        ƒ d {V —†S t          | j        ¦  «        }|dgk    �r^d	d
lm	} d	dl
m} |j                             ¦   «         |vr" t          dd¬¦  «        |||¦  «        ƒ d {V —†S  ||¦  «        ƒ d {V —†}|s" t          dd¬¦  «        |||¦  «        ƒ d {V —†S dt          |¦  «                             ¦   «         z   dz   ddœ}	t!          |d         ¦  «                             d¦  «        |	d                              ¦   «         k    r" t          d|	¬¦  «        |||¦  «        ƒ d {V —†S t%          t'          |¦  «        ¦  «        |	d<    t          |d         dk    rdn|d|	¬¦  «        |||¦  «        ƒ d {V —†S |j                             ¦   «         dvr)t          ¦   «                              |||¦  «        ƒ d {V —†S |                     ¦   «         }
t%          |¦  «        t+          |d	         ¦  «        |
j        |
j        |
j        f}dt          t3          |¦  «                             ¦   «         ¦  «                             ¦   «         z   dz   }|ddœ}	t!          |d         ¦  «        }|                     d¦  «        |                     ¦   «         k    r" t          d|	¬¦  «        |||¦  «        ƒ d {V —†S t5          |¦  «        \  }}|s8t7          j        ¦   «                              t<          t>          |¦  «        ƒ d {V —†}|€C| j          !                    |	¦  «         t          ¦   «                              |||¦  «        ƒ d {V —†S t%          t'          |¦  «        ¦  «        |	d<    t          |d         dk    rdn|d|	¬¦  «        |||¦  «        ƒ d {V —†S )NÚquery_stringÚ__wangp_gallery_previewÚ320Ú1600ÚvideozInvalid gallery preview size.i�  )Ústatus_coder   )Úrender_thumbnail)Ú_VIDEO_EXTENSIONSzInvalid video preview.zVideo preview unavailable.i”  ú"zprivate, no-cache)ÚETagzCache-ControlÚheaderss   if-none-matchrW   i0  )rS   rX   zContent-LengthÚmethodÚHEADó    z
image/jpeg)Ú
media_typerX   )z.pngz.jpgz.jpegz.webpz.bmpz.tifz.tiffz.gifz	image/png)"r	   ÚdecodeÚgetÚsuperÚ__call__r   r   r=   Úshared.deepy.thumbnailsrT   Úshared.deepy.galleryrU   ÚsuffixÚlowerr   Ú	hexdigestÚdictÚencodeÚstrr7   ÚstatÚintÚst_mtime_nsÚst_ctime_nsÚst_sizeÚreprr   ÚasyncioÚget_running_loopÚrun_in_executorÚ_workersrJ   rX   Úupdate)ÚselfÚscopeÚreceiveÚsendrE   r=   rT   rU   r<   rX   ri   r   ÚetagÚrequest_headersr;   Ú	__class__s                  €r   r`   zGalleryFileResponse.__call__J   s  øè è € Ý˜˜nÔ-×4Ò4Ñ6Ô6Ñ7Ô7×;Ò;Ð<UÑVÔVˆØˆ<Ý™œ×)Ò)¨%°¸$Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø˜˜ & ¨G¨9Ð5Ð5Ð5ØS�Ð"AÈsÐSÑSÔSÐTYÐ[bÐdhÑiÔiÐiÐiÐiÐiÐiÐiÐiÝ�D”I‰ŒˆØ�G�9ÒÑØ@Ð@Ð@Ð@Ð@Ð@Ø>Ð>Ð>Ð>Ð>Ð>ØŒ{× Ò Ñ"Ô"Ð*;Ð;Ð;ØP�XÐ&>ÈCÐPÑPÔPÐQVÐX_ÐaeÑfÔfÐfÐfÐfÐfÐfÐfÐfØ)Ð)¨$Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/ˆDØð kØT�XÐ&BÐPSÐTÑTÔTÐUZÐ\cÐeiÑjÔjÐjÐjÐjÐjÐjÐjÐjØ"¥V¨D¡\¤\×%;Ò%;Ñ%=Ô%=Ñ=ÀÑCÐViÐjÐjˆGÝ�E˜)Ô$Ñ%Ô%×)Ò)Ð*:Ñ;Ô;¸wÀv¼×?UÒ?UÑ?WÔ?WÒWÐWØG�X°#¸wÐGÑGÔGÈÈwÐX\Ñ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ý(+­C°©I¬I©¬ˆGÐ$Ñ%Øw�¨¨x¬¸FÒ)BÐ)B # #ÈÐYeÐovÐwÑwÔwÐx}ð  @Gð  IMñ  Nô  Nð  Nð  Nð  Nð  Nð  Nð  Nð  NØŒ;×ÒÑÔÐ&iÐiÐiÝ™œ×)Ò)¨%°¸$Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø�yŠy‰{Œ{ˆÝ�4‰yŒy�#˜d 1œg™,œ,¨Ô(8¸$Ô:JÈDÌLÐYˆØ•V�D ™IœI×,Ò,Ñ.Ô.Ñ/Ô/×9Ò9Ñ;Ô;Ñ;¸cÑAˆØÐ2EÐFÐFˆÝ˜u YÔ/Ñ0Ô0ˆØ×ÒÐ/Ñ0Ô0°D·K²K±M´MÒAÐAØC�¨c¸7ÐCÑCÔCÀEÈ7ÐTXÑYÔYÐYÐYÐYÐYÐYÐYÐYå˜c‘l”l‰ˆˆtØð 	]Ý Ô1Ñ3Ô3×CÒCÅHÍhÐX[Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\ˆDØˆ<ØŒL×Ò Ñ(Ô(Ð(Ý™œ×)Ò)¨%°¸$Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ý$'­¨D©	¬	¡N¤NˆÐ Ñ!Ør•X U¨8¤_¸Ò%>Ð%>˜c˜cÀDÐU`ÐjqÐrÑrÔrÐsxð  {Bð  DHñ  Iô  Ið  Ið  Ið  Ið  Ið  Ið  Ið  	Ir[   )Ú__name__Ú
__module__Ú__qualname__r`   Ú__classcell__)rz   s   @r   rL   rL   I   sA   ø€ € € € € ð%Ið %Ið %Ið %Ið %Ið %Ið %Ið %Ið %Ir[   rL   ) Ú__doc__ro   Úcollectionsr   Úconcurrent.futuresr   Úhashlibr   Úior   Úpathlibr   Ú	threadingr   Úurllib.parser	   ÚPILr
   r   Ústarlette.responsesr   Úshared.utils.http_disconnectr   rr   r   r   r6   r8   r9   r   rJ   rL   © r[   r   ú<module>r‹      si  ðà QÐ QØ €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (à DÐ DÐ DÐ DÐ DÐ Dð Ð¨!Ð@WÐXÑXÔX€Øˆ‰Œ€Ø	ˆ‰Œ€Ø€Ø€
Ø€ðð ð ð$ð $ð $ðN&Ið &Ið &Ið &Ið &IÐ5ñ &Iô &Ið &Ið &Ið &Ir[   