§
    ¹eîiq5 ã                  ó,  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlZd dlZd dlZd dlZd dlZd dlZd dlmZmZ d dlmZmZ d dlmZmZ d dlmZmZ d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d d	l(m)Z) d dl*Z*d dl+Z+d d
l,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= e#rd dl>m?Z? d dl@mAZA  ejB        eC¦  «        ZDe#rd dlEmFZF e!eGef         ZHe%d         ZIde2› d�ZJde1› d�ZKde2› d�ZLdZMdZNejO         P                    dd¦  «        ZQdZRdeSd<   ddgZTdeSd<   d e6› d!�ZUd"ZVejW         X                    d#¬$¦  «        ZYe G d%„ d&¦  «        ¦   «         ZZ G d'„ d(¦  «        Z[ G d)„ d*¦  «        Z\d+Z]d,Z^d-Z_ G d.„ d/¦  «        Z` G d0„ d1¦  «        Za G d2„ d3eb¦  «        Zce G d4„ d5ec¦  «        ¦   «         Zde G d6„ d7ecee¦  «        ¦   «         ZfdÐd<„Zge G d=„ d>¦  «        ¦   «         Zhe G d?„ d@eh¦  «        ¦   «         Zie G dA„ dBeh¦  «        ¦   «         Zje G dC„ dDeh¦  «        ¦   «         Zk edE¬F¦  «         G dG„ dH¦  «        ¦   «         ZldIdJgZmdÑdM„Zn edE¬F¦  «         G dN„ dO¦  «        ¦   «         ZodPZpdQZqdRZrdÒdT„ZsdÓdX„ZtdYddZœdÔd_„Zud`daœdÕdb„ZvdÖde„Zw G df„ dgex¦  «        Zyd×dj„ZzdØdk„Z{dÙdo„Z|dÚds„Z}e G dt„ du¦  «        ¦   «         Z~e G dv„ dw¦  «        ¦   «         Ze	 dÛdÜd|„¦   «         Z€e	 dÛdÝd~„¦   «         Z�dÞdƒ„Z‚dßd…„Zƒd-Z„d†Z…d‡Z†g dˆ¢Z‡g d‰¢Zˆ e+j‰        dŠd‹¬Œ¦  «        ZŠdàdŽ„Z‹g fdád‘„ZŒg fdâd”„Z�	 	 dãdädŸ„ZŽg d œdåd¡„Z�g d œ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³„Z˜dìd´„Z™dïdµ„Zšdíd¶„Z›dðd¹„Zœdñd»„Z�dòd¾„ZždódÀ„ZŸ edE¬F¦  «         G dÁ„ d½el¦  «        ¦   «         Z  edE¬F¦  «         G dÂ„ d¿el¦  «        ¦   «         Z¡ edE¬F¦  «         G dÃ„ dÄ¦  «        ¦   «         Z¢ edE¬F¦  «         G dÅ„ dÆ¦  «        ¦   «         Z£dôdÈ„Z¤dõdÊ„Z¥död÷dÏ„Z¦dS )øé    )ÚannotationsN)ÚPath)ÚasynccontextmanagerÚcontextmanager)ÚdatetimeÚtimezone)Ú	dataclassÚfield)Úcached_propertyÚpartial)
ÚAnyÚAsyncIteratorÚ	AwaitableÚDictÚIteratorÚTYPE_CHECKINGÚOptionalÚLiteralÚCallableÚUnion)Ú	urlencode)Úaconnect_sseÚconnect_sse)ÚAuthCredentialsÚFAL_QUEUE_RUN_HOSTÚFAL_RUN_HOSTÚMissingCredentialsErrorÚfetch_auth_credentials)Ú__version__)ÚPriorityÚadd_priority_headerÚadd_timeout_headerÚadd_hint_headerÚREQUEST_TIMEOUT_TYPE_HEADERÚREQUEST_TIMEOUT_HEADER)ÚWebSocketClientProtocol)Ú
Connection)ÚImage)Úfal_v3ÚcdnÚfalzhttps://ú/zwss://zhttps://rest.fal.aizhttps://v3.fal.mediaÚFAL_CDN_HOSTzhttps://fal.mediar)   ÚUploadRepositoryIdÚDEFAULT_UPLOAD_REPOSITORYr*   r+   úlist[UploadRepositoryId]Ú"DEFAULT_UPLOAD_FALLBACK_REPOSITORYzfal-client/z	 (python)é   ÚFAL_CLIENT_EXECUTOR)Úthread_name_prefixc                  ó@   — e Zd ZU ded<   ded<   ded<   ded<   dd	„Zd
S )ÚCDNTokenÚstrÚtokenÚ
token_typeÚbase_upload_urlr   Ú
expires_atÚreturnÚboolc                óP   — t          j        t          j        ¦  «        | j        k    S ©N)r   Únowr   Úutcr;   ©Úselfs    úU/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/fal_client/client.pyÚ
is_expiredzCDNToken.is_expired]   s   € ÝŒ|�HœLÑ)Ô)¨T¬_Ò<Ð<ó    N)r<   r=   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__rE   © rF   rD   r6   r6   V   sT   € € € € € € à€J€J�JØ€O€O�OØÐÐÑØÐÐÑð=ð =ð =ð =ð =ð =rF   r6   c                  ó&   — e Zd Zd
d„Zdd„Zdd„Zd	S )ÚCDNTokenManagerÚauthr   r<   ÚNonec                ó  — || _         t          dddt          j                             t
          j        ¬¦  «        ¬¦  «        | _        t          j	        ¦   «         | _
        t          › d�| _        | j         j        dddœ| _        d S ©NÚ )Útzinfo©r8   r9   r:   r;   z+/storage/auth/token?storage_type=fal-cdn-v3úapplication/json©ÚAuthorizationÚAcceptúContent-Type)Ú_authr6   r   ÚminÚreplacer   rA   Ú_tokenÚ	threadingÚLockÚ_lockÚREST_URLÚ_urlÚheader_valueÚ_headers©rC   rN   s     rD   Ú__init__zCDNTokenManager.__init__b   s�   € ØˆŒ
Ý (ØØØÝ”|×+Ò+µ8´<Ð+Ñ@Ô@ð	!
ñ !
ô !
ˆŒõ &/¤^Ñ%5Ô%5ˆŒ
ÝÐLÐLÐLˆŒ	à!œZÔ4Ø(Ø.ð
ð 
ˆŒˆˆrF   r6   c           	     óf  — t          j        ¦   «         5 }|                     | j        | j        i ¬¦  «        }|                     ¦   «          |                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          |d         |d         |d         t          j	        |d         ¦  «        ¬¦  «        S ©N©ÚheadersÚjsonr8   r9   Úbase_urlr;   rT   )
ÚhttpxÚClientÚpostrb   rd   Úraise_for_statusrk   r6   r   Úfromisoformat©rC   ÚclientÚresponseÚdatas       rD   Ú_refresh_tokenzCDNTokenManager._refresh_tokenr   sÝ   € ÝŒ\‰^Œ^ð 	#˜vØ—{’{ 4¤9°d´mÈ"�{ÑMÔMˆHØ×%Ò%Ñ'Ô'Ð'Ø—=’=‘?”?ˆDð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ
 Ø�w”-Ø˜LÔ)Ø  Ô,ÝÔ-¨d°<Ô.@ÑAÔAð	
ñ 
ô 
ð 	
s   ”AA+Á+A/Á2A/c                ó¶   — | j         5  | j                             ¦   «         r|                      ¦   «         | _        | j        cd d d ¦  «         S # 1 swxY w Y   d S r?   ©r`   r]   rE   rv   rB   s    rD   Ú	get_tokenzCDNTokenManager.get_token   sœ   € ØŒZð 	ð 	ØŒ{×%Ò%Ñ'Ô'ð 4Ø"×1Ò1Ñ3Ô3�”Ø”;ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ˆ9AÁAÁAN©rN   r   r<   rO   ©r<   r6   ©rG   rH   rI   rf   rv   ry   rK   rF   rD   rM   rM   a   óP   € € € € € ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð rF   rM   c                  ó&   — e Zd Zd
d„Zdd„Zdd„Zd	S )ÚAsyncCDNTokenManagerrN   r   r<   rO   c                ó  — || _         t          dddt          j                             t
          j        ¬¦  «        ¬¦  «        | _        t          j	        ¦   «         | _
        t          › d�| _        | j         j        dddœ| _        d S rQ   )rZ   r6   r   r[   r\   r   rA   r]   Úasyncior_   r`   ra   rb   rc   rd   re   s     rD   rf   zAsyncCDNTokenManager.__init__‡   s   € ØˆŒ
Ý (ØØØÝ”|×+Ò+µ8´<Ð+Ñ@Ô@ð	!
ñ !
ô !
ˆŒõ $+¤<¡>¤>ˆŒ
ÝÐLÐLÐLˆŒ	à!œZÔ4Ø(Ø.ð
ð 
ˆŒˆˆrF   r6   c           	   ƒ  óš  K  — t          j        ¦   «         4 ƒd {V —†}|                     | j        | j        i ¬¦  «        ƒ d {V —†}|                     ¦   «          |                     ¦   «         }d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   t          |d         |d         |d         t          j	        |d         ¦  «        ¬¦  «        S rh   )
rm   ÚAsyncClientro   rb   rd   rp   rk   r6   r   rq   rr   s       rD   rv   z#AsyncCDNTokenManager._refresh_token—   sQ  è è € ÝÔ$Ñ&Ô&ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#¨&Ø#Ÿ[š[¨¬¸D¼MÐPR˜[ÑSÔSÐSÐSÐSÐSÐSÐSˆHØ×%Ò%Ñ'Ô'Ð'Ø—=’=‘?”?ˆDð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ
 Ø�w”-Ø˜LÔ)Ø  Ô,ÝÔ-¨d°<Ô.@ÑAÔAð	
ñ 
ô 
ð 	
s   œAA?Á?
B	ÂB	c              ƒ  óê   K  — | j         4 ƒd {V —† | j                             ¦   «         r|                      ¦   «         ƒ d {V —†| _        | j        cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S r?   rx   rB   s    rD   ry   zAsyncCDNTokenManager.get_token¤   s  è è € Ø”:ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ØŒ{×%Ò%Ñ'Ô'ð :Ø$(×$7Ò$7Ñ$9Ô$9Ð9Ð9Ð9Ð9Ð9Ð9�”Ø”;ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   �?A"Á"
A,Á/A,Nrz   r{   r|   rK   rF   rD   r   r   †   r}   rF   r   i  @i    é
   c                  óÂ   — e Zd Zddddœd!d„Zed"d„¦   «         Zed"d„¦   «         Zed#d„¦   «         Zd„ Zd$d„Z	d"d„Z
eddddœd%d„¦   «         Zeddddœd&d „¦   «         ZdS )'ÚMultipartUploadN©Ú
chunk_sizeÚcontent_typeÚmax_concurrencyÚ	file_namer7   rs   úhttpx.ClientÚtoken_managerrM   r‰   ú
int | NonerŠ   ú
str | Noner‹   r<   rO   c               ó¤   — || _         || _        || _        |pt          | _        |pd| _        |pt          | _        d | _        d | _	        g | _
        d S ©Núapplication/octet-stream©rŒ   Ú_clientÚ_token_managerÚMULTIPART_CHUNK_SIZEr‰   rŠ   ÚMULTIPART_MAX_CONCURRENCYr‹   Ú_access_urlÚ
_upload_idÚ_parts©rC   rŒ   rs   rŽ   r‰   rŠ   r‹   s          rD   rf   zMultipartUpload.__init__±   ó]   € ð #ˆŒØˆŒØ+ˆÔØ$Ð<Õ(<ˆŒØ(ÐFÐ,FˆÔØ.ÐKÕ2KˆÔØ'+ˆÔØ&*ˆŒØ"$ˆŒˆˆrF   c                ó<   — | j         st          d¦  «        ‚| j         S ©NzUpload not initiated©r™   Ú
ValueErrorrB   s    rD   Ú
access_urlzMultipartUpload.access_urlÅ   ó%   € àÔð 	5ÝÐ3Ñ4Ô4Ð4ØÔÐrF   c                ó<   — | j         st          d¦  «        ‚| j         S rŸ   ©rš   r¡   rB   s    rD   Ú	upload_idzMultipartUpload.upload_idË   ó#   € àŒð 	5ÝÐ3Ñ4Ô4Ð4ØŒÐrF   údict[str, str]c                ó\   — | j                              ¦   «         }|j        › d|j        › �ddœS ©NÚ z	fal/0.1.0©rW   z
User-Agent©r–   ry   r9   r8   ©rC   r8   s     rD   Úauth_headerszMultipartUpload.auth_headersÑ   s>   € àÔ#×-Ò-Ñ/Ô/ˆà %Ô 0Ð@Ð@°5´;Ð@Ð@Ø%ð
ð 
ð 	
rF   c           
     ó  — | j                              ¦   «         }|j        › d�}t          | j        d|i | j        ¥d| j        | j        dœ¥¬¦  «        }|                     ¦   «         }|d         | _	        |d         | _
        d S ©Nz/files/upload/multipartÚPOSTrU   )rX   rY   úX-Fal-File-Name©rj   r¢   ÚuploadId)r–   ry   r:   Ú_maybe_retry_requestr•   r¯   rŠ   rŒ   rk   r™   rš   )rC   r8   Úurlrt   Úresults        rD   ÚcreatezMultipartUpload.createÙ   sŸ   € ØÔ#×-Ò-Ñ/Ô/ˆØÔ&Ð?Ð?Ð?ˆÝ'ØŒLØØðØÔ#ðà,Ø $Ô 1Ø#'¤>ð	ð ð ð	

ñ 

ô 

ˆð —’‘”ˆØ! ,Ô/ˆÔØ  Ô,ˆŒˆˆrF   Úpart_numberÚintru   Úbytesc           	     óØ   — | j         › d| j        › d|› �}t          | j        d|i | j        ¥| j        ddœ¥|d ¬¦  «        }|j        d         }| j                             ||dœ¦  «         d S ©	Nú/multipart/r,   ÚPUTÚidentity)rY   zAccept-Encoding)rj   ÚcontentÚtimeoutÚetag)Ú
partNumberrÄ   )	r¢   r¦   Ú_requestr•   r¯   rŠ   rj   r›   Úappend)rC   rº   ru   r·   rt   rÄ   s         rD   Úupload_partzMultipartUpload.upload_partë   s³   € Ø”ÐKÐK¨T¬^ÐKÐK¸kÐKÐKˆåØŒLØØðØÔ#ðà $Ô 1Ø#-ðð ð ð
 Øð
ñ 
ô 
ˆð Ô Ô'ˆØŒ×Òà)Øðð ñ	
ô 	
ð 	
ð 	
ð 	
rF   c                ó~   — | j         › d| j        › d�}t          | j        d|| j        d| j        i¬¦  «         | j         S ©Nr¿   z	/completer²   Úpartsri   )r¢   r¦   r¶   r•   r¯   r›   )rC   r·   s     rD   ÚcompletezMultipartUpload.complete  sX   € Ø”ÐFÐF¨T¬^ÐFÐFÐFˆÝØŒLØØØÔ%Ø˜4œ;Ð'ð	
ñ 	
ô 	
ð 	
ð ŒÐrF   ©rŠ   r‰   r‹   c          	     ón  — dd l } | ||||||¬¦  «        }	|	                     ¦   «          t          j        t	          |¦  «        |	j        z  ¦  «        }
|j                             |	j        ¬¦  «        5 }g }t          d|
dz   ¦  «        D ]P}|dz
  |	j        z  }||||	j        z   …         }| 
                    |                     |	j        ||¦  «        ¦  «         ŒQ|j                             |¦  «        D ]}|                     ¦   «          Œ	 d d d ¦  «         n# 1 swxY w Y   |	                     ¦   «         S )Nr   ©rŒ   rs   rŽ   r‰   rŠ   r‹   ©Úmax_workersr2   )Úconcurrent.futuresr¹   ÚmathÚceilÚlenr‰   ÚfuturesÚThreadPoolExecutorr‹   ÚrangerÇ   ÚsubmitrÈ   Úas_completedr¸   rÌ   )Úclsrs   rŽ   rŒ   ru   rŠ   r‰   r‹   Ú
concurrentÚ	multipartrË   ÚexecutorrÖ   rº   ÚstartÚfutures                   rD   ÚsavezMultipartUpload.save  s¥  € ð 	"Ð!Ð!Ð!à�CØØØ'Ø!Ø%Ø+ð
ñ 
ô 
ˆ	ð 	×ÒÑÔÐÝ”	�#˜d™)œ) iÔ&:Ñ:Ñ;Ô;ˆØÔ×2Ò2Ø!Ô1ð 3ñ 
ô 
ð 	 àØˆGÝ$ Q¨°©	Ñ2Ô2ð ð �Ø$ q™¨IÔ,@Ñ@�Ø˜E E¨IÔ,@Ñ$@Ð@ÔA�Ø—’Ø—O’O IÔ$9¸;ÈÑMÔMñô ð ð ð %Ô,×9Ò9¸'ÑBÔBð  ð  �Ø—’‘”��ð ð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ×!Ò!Ñ#Ô#Ð#s   Á3BDÄDÄDÚ	file_pathú
str | Pathc               ó˜  ‡‡— dd l }t          j                             ‰¦  «        }t          j                             ‰¦  «        }	 | ||||||¬¦  «        Š‰                     ¦   «          t          j        |	‰j        z  ¦  «        }
|j	         
                    ‰j        ¬¦  «        5 }g }t          d|
dz   ¦  «        D ]2}d
ˆˆfd	„}|                     |                     ||¦  «        ¦  «         Œ3|j	                             |¦  «        D ]}|                     ¦   «          Œ	 d d d ¦  «         n# 1 swxY w Y   ‰                     ¦   «         S )Nr   rÏ   rÐ   r2   Úpnr»   r<   rO   c                óþ   •— t          ‰d¦  «        5 }| dz
  ‰j        z  }|                     |¦  «         |                     ‰j        ¦  «        }‰                     | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©NÚrbr2   ©Úopenr‰   ÚseekÚreadrÈ   )rå   Úfrß   ru   râ   rÝ   s       €€rD   Ú_upload_partz/MultipartUpload.save_file.<locals>._upload_partS  s¾   ø€ Ý˜i¨Ñ.Ô.ð 8°!Ø!# a¡¨9Ô+?Ñ ?˜ØŸš˜u™œ˜Ø Ÿvšv iÔ&:Ñ;Ô;˜Ø!×-Ò-¨b°$Ñ7Ô7Ð7ð	8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8s   ’AA2Á2A6Á9A6)rå   r»   r<   rO   )rÒ   ÚosÚpathÚbasenameÚgetsizer¹   rÓ   rÔ   r‰   rÖ   r×   r‹   rØ   rÇ   rÙ   rÚ   r¸   rÌ   )rÛ   rs   rŽ   râ   r‰   rŠ   r‹   rÜ   rŒ   ÚsizerË   rÞ   rÖ   rº   rî   rà   rÝ   s      `            @rD   Ú	save_filezMultipartUpload.save_file4  s¸  øø€ ð 	"Ð!Ð!Ð!å”G×$Ò$ YÑ/Ô/ˆ	ÝŒw�Š˜yÑ)Ô)ˆØ�CØØØ'Ø!Ø%Ø+ð
ñ 
ô 
ˆ	ð 	×ÒÑÔÐÝ”	˜$ Ô!5Ñ5Ñ6Ô6ˆØÔ×2Ò2Ø!Ô1ð 3ñ 
ô 
ð 	 àØˆGÝ$ Q¨°©	Ñ2Ô2ð 	Kð 	K�ð8ð 8ð 8ð 8ð 8ð 8ð 8ð —’˜xŸš¨|¸[ÑIÔIÑJÔJÐJÐJØ$Ô,×9Ò9¸'ÑBÔBð  ð  �Ø—’‘”��ð ð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð  ×!Ò!Ñ#Ô#Ð#s   Â&A:D-Ä-D1Ä4D1)rŒ   r7   rs   r�   rŽ   rM   r‰   r�   rŠ   r�   r‹   r�   r<   rO   ©r<   r7   ©r<   r¨   ©rº   r»   ru   r¼   r<   rO   )rs   r�   rŽ   rM   rŒ   r7   ru   r¼   rŠ   r�   r‰   r�   r‹   r�   )rs   r�   rŽ   rM   râ   rã   r‰   r�   rŠ   r�   r‹   r�   r<   r7   ©rG   rH   rI   rf   Úpropertyr¢   r¦   r¯   r¹   rÈ   rÌ   Úclassmethodrá   rô   rK   rF   rD   r‡   r‡   °   s?  € € € € € ð "&Ø#'Ø&*ð%ð %ð %ð %ð %ð %ð( ð ð  ð  ñ „Xð ð
 ðð ð ñ „Xðð
 ð
ð 
ð 
ñ „Xð
ð-ð -ð -ð$
ð 
ð 
ð 
ð0	ð 	ð 	ð 	ð ð $(Ø!%Ø&*ð#$ð #$ð #$ð #$ð #$ñ „[ð#$ðJ ð "&Ø#'Ø&*ð($ð ($ð ($ð ($ð ($ñ „[ð($ð ($ð ($rF   r‡   c                  óÂ   — e Zd Zddddœd!d„Zed"d„¦   «         Zed"d„¦   «         Zed#d„¦   «         Zd„ Zd$d„Z	d"d„Z
eddddœd%d„¦   «         Zeddddœd&d „¦   «         ZdS )'ÚAsyncMultipartUploadNrˆ   rŒ   r7   rs   úhttpx.AsyncClientrŽ   r   r‰   r�   rŠ   r�   r‹   r<   rO   c               ó¤   — || _         || _        || _        |pt          | _        |pd| _        |pt          | _        d | _        d | _	        g | _
        d S r’   r”   rœ   s          rD   rf   zAsyncMultipartUpload.__init__a  r�   rF   c                ó<   — | j         st          d¦  «        ‚| j         S rŸ   r    rB   s    rD   r¢   zAsyncMultipartUpload.access_urlu  r£   rF   c                ó<   — | j         st          d¦  «        ‚| j         S rŸ   r¥   rB   s    rD   r¦   zAsyncMultipartUpload.upload_id{  r§   rF   r¨   c              ƒ  ól   K  — | j                              ¦   «         ƒ d {V —†}|j        › d|j        › �ddœS rª   r­   r®   s     rD   r¯   z!AsyncMultipartUpload.auth_headers�  sT   è è € àÔ)×3Ò3Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ˆà %Ô 0Ð@Ð@°5´;Ð@Ð@Ø%ð
ð 
ð 	
rF   c           
   ƒ  ó2  K  — | j                              ¦   «         ƒ d {V —†}|j        › d�}| j        ƒ d {V —†}t	          | j        d|i |¥d| j        | j        dœ¥¬¦  «        ƒ d {V —†}|                     ¦   «         }|d         | _	        |d         | _
        d S r±   )r–   ry   r:   r¯   Ú_async_maybe_retry_requestr•   rŠ   rŒ   rk   r™   rš   )rC   r8   r·   rj   rt   r¸   s         rD   r¹   zAsyncMultipartUpload.create‰  sê   è è € ØÔ)×3Ò3Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ˆØÔ&Ð?Ð?Ð?ˆØÔ)Ð)Ð)Ð)Ð)Ð)Ð)ˆÝ3ØŒLØØðØðà,Ø $Ô 1Ø#'¤>ð	ð ð ð	

ñ 

ô 

ð 

ð 

ð 

ð 

ð 

ð 

ˆð —’‘”ˆØ! ,Ô/ˆÔØ  Ô,ˆŒˆˆrF   rº   r»   ru   r¼   c           	   ƒ  óø   K  — | j         › d| j        › d|› �}| j        ƒ d {V —†}t          | j        d|i |¥| j        ddœ¥|d ¬¦  «        ƒ d {V —†}|j        d         }| j                             ||dœ¦  «         d S r¾   )	r¢   r¦   r¯   Ú_async_requestr•   rŠ   rj   r›   rÇ   )rC   rº   ru   r·   rj   rt   rÄ   s          rD   rÈ   z AsyncMultipartUpload.upload_partœ  sì   è è € Ø”ÐKÐK¨T¬^ÐKÐK¸kÐKÐKˆØÔ)Ð)Ð)Ð)Ð)Ð)Ð)ˆå'ØŒLØØðØðà $Ô 1Ø#-ðð ð ð
 Øð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð Ô Ô'ˆØŒ×Òà)Øðð ñ	
ô 	
ð 	
ð 	
ð 	
rF   c              ƒ  óž   K  — | j         › d| j        › d�}| j        ƒ d {V —†}t          | j        d||d| j        i¬¦  «        ƒ d {V —† | j         S rÊ   )r¢   r¦   r¯   r  r•   r›   )rC   r·   rj   s      rD   rÌ   zAsyncMultipartUpload.completeµ  s‘   è è € Ø”ÐFÐF¨T¬^ÐFÐFÐFˆØÔ)Ð)Ð)Ð)Ð)Ð)Ð)ˆÝ(ØŒLØØØØ˜4œ;Ð'ð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð ŒÐrF   rÍ   c             ƒ  ó´  ‡‡
‡‡‡K  —  | ||||||¬¦  «        Š‰                      ¦   «         ƒ d {V —† t          j        t          ‰¦  «        ‰j        z  ¦  «        }dˆˆfd„Šˆfd„t          d|dz   ¦  «        D ¦   «         }	t          j        ‰j        ¦  «        Šˆfd	„Š
t          j	        ˆ
fd
„|	D ¦   «         Ž ƒ d {V —† ‰ 
                    ¦   «         ƒ d {V —†S )NrÏ   rº   r»   r<   rO   c              “  ó‚   •K  — | dz
  ‰j         z  }‰||‰j         z   …         }‰                     | |¦  «        ƒ d {V —† d S )Nr2   )r‰   rÈ   )rº   rß   Úchunkru   rÝ   s      €€rD   rÈ   z.AsyncMultipartUpload.save.<locals>.upload_partØ  s]   øè è € Ø  1‘_¨	Ô(<Ñ<ˆEØ˜ ¨Ô)=Ñ!=Ð=Ô>ˆEØ×'Ò'¨°UÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;rF   c                óJ   •— g | ]}t          j         ‰|¦  «        ¦  «        ‘Œ S rK   ©r�   Úcreate_task©Ú.0rº   rÈ   s     €rD   ú
<listcomp>z-AsyncMultipartUpload.save.<locals>.<listcomp>Ý  ó>   ø€ ð 
ð 
ð 
àõ Ô  ¨KÑ 8Ô 8Ñ9Ô9ð
ð 
ð 
rF   r2   c              “  óv   •K  — ‰4 ƒd {V —† | ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S r?   rK   ©ÚtaskÚsems    €rD   Úbounded_uploadz1AsyncMultipartUpload.save.<locals>.bounded_uploadå  óÜ   øè è € Øð ð ð ð ð ð ð ð Ø�
�
�
�
�
�
�
ðð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð ó   Œ	(¨
2µ2c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rK   rK   ©r  r  r  s     €rD   r  z-AsyncMultipartUpload.save.<locals>.<listcomp>é  ó#   ø€ ÐFÐFÐF¸˜~˜~¨dÑ3Ô3ÐFÐFÐFrF   ©rº   r»   r<   rO   )r¹   rÓ   rÔ   rÕ   r‰   rØ   r�   Ú	Semaphorer‹   ÚgatherrÌ   )rÛ   rs   rŽ   rŒ   ru   rŠ   r‰   r‹   rË   Útasksr  rÝ   r  rÈ   s       `     @@@@rD   rá   zAsyncMultipartUpload.saveÁ  sY  øøøøøè è € ð �CØØØ'Ø!Ø%Ø+ð
ñ 
ô 
ˆ	ð ×ÒÑ Ô Ð Ð Ð Ð Ð Ð Ð Ý”	�#˜d™)œ) iÔ&:Ñ:Ñ;Ô;ˆð	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð

ð 
ð 
ð 
å$ Q¨°©	Ñ2Ô2ð
ñ 
ô 
ˆõ Ô 	Ô 9Ñ:Ô:ˆð	ð 	ð 	ð 	ð 	õ ŒnÐFÐFÐFÐFÀÐFÑFÔFÐGÐGÐGÐGÐGÐGÐGÐGØ×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)rF   râ   rã   c             ƒ  ó  ‡‡‡‡‡K  — t           j                             ‰¦  «        }t           j                             ‰¦  «        } | ||||||¬¦  «        Š‰                     ¦   «         ƒ d {V —† t          j        |‰j        z  ¦  «        }	dˆˆfd„Šˆfd„t          d|	dz   ¦  «        D ¦   «         }
t          j
        ‰j        ¦  «        Šˆfd	„Št          j        ˆfd
„|
D ¦   «         Ž ƒ d {V —† ‰                     ¦   «         ƒ d {V —†S )NrÏ   rº   r»   r<   rO   c              “  ó  •K  — t          ‰d¦  «        5 }| dz
  ‰j        z  }|                     |¦  «         |                     ‰j        ¦  «        }‰                     | |¦  «        ƒ d {V —† d d d ¦  «         d S # 1 swxY w Y   d S rç   ré   )rº   rí   rß   ru   râ   rÝ   s       €€rD   rÈ   z3AsyncMultipartUpload.save_file.<locals>.upload_part  sÔ   øè è € Ý�i Ñ&Ô&ð ?¨!Ø$ q™¨IÔ,@Ñ@�Ø—’�u‘”�Ø—v’v˜iÔ2Ñ3Ô3�Ø×+Ò+¨K¸Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð	?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?ð ?ð ?s   ”AA:Á:A>ÂA>c                óJ   •— g | ]}t          j         ‰|¦  «        ¦  «        ‘Œ S rK   r  r  s     €rD   r  z2AsyncMultipartUpload.save_file.<locals>.<listcomp>  r  rF   r2   c              “  óv   •K  — ‰4 ƒd {V —† | ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S r?   rK   r  s    €rD   r  z6AsyncMultipartUpload.save_file.<locals>.bounded_upload  r  r  c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rK   rK   r  s     €rD   r  z2AsyncMultipartUpload.save_file.<locals>.<listcomp>  r  rF   r  )rï   rð   rñ   rò   r¹   rÓ   rÔ   r‰   rØ   r�   r  r‹   r  rÌ   )rÛ   rs   rŽ   râ   r‰   rŠ   r‹   rŒ   ró   rË   r  r  rÝ   r  rÈ   s      `       @@@@rD   rô   zAsyncMultipartUpload.save_fileì  s{  øøøøøè è € õ ”G×$Ò$ YÑ/Ô/ˆ	ÝŒw�Š˜yÑ)Ô)ˆØ�CØØØ'Ø!Ø%Ø+ð
ñ 
ô 
ˆ	ð ×ÒÑ Ô Ð Ð Ð Ð Ð Ð Ð Ý”	˜$ Ô!5Ñ5Ñ6Ô6ˆð	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð
ð 
ð 
ð 
å$ Q¨°©	Ñ2Ô2ð
ñ 
ô 
ˆõ Ô 	Ô 9Ñ:Ô:ˆð	ð 	ð 	ð 	ð 	õ ŒnÐFÐFÐFÐFÀÐFÑFÔFÐGÐGÐGÐGÐGÐGÐGÐGØ×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)rF   )rŒ   r7   rs   rý   rŽ   r   r‰   r�   rŠ   r�   r‹   r�   r<   rO   rõ   rö   r÷   )rs   rý   rŽ   r   rŒ   r7   ru   r¼   rŠ   r�   r‰   r�   r‹   r�   r<   r7   )rs   rý   rŽ   r   râ   rã   r‰   r�   rŠ   r�   r‹   r�   r<   r7   rø   rK   rF   rD   rü   rü   `  s?  € € € € € ð "&Ø#'Ø&*ð%ð %ð %ð %ð %ð %ð( ð ð  ð  ñ „Xð ð
 ðð ð ñ „Xðð
 ð
ð 
ð 
ñ „Xð
ð-ð -ð -ð&
ð 
ð 
ð 
ð2
ð 
ð 
ð 
ð ð $(Ø!%Ø&*ð(*ð (*ð (*ð (*ð (*ñ „[ð(*ðT ð "&Ø#'Ø&*ð+*ð +*ð +*ð +*ð +*ñ „[ð+*ð +*ð +*rF   rü   c                  ó   — e Zd ZdS )ÚFalClientErrorN©rG   rH   rI   rK   rF   rD   r%  r%    s   € € € € € Ø€DrF   r%  c                  óN   — e Zd ZU ded<   ded<   ded<   ded<   d	Zd
ed<   dd„Zd	S )ÚFalClientHTTPErrorr7   Úmessager»   Ústatus_coder¨   Úresponse_headersúhttpx.Responsert   Nr�   Ú
error_typer<   c                ó   — | j         › S r?   )r)  rB   s    rD   Ú__str__zFalClientHTTPError.__str__'  s   € Ø”,Ð Ð rF   rõ   )rG   rH   rI   rJ   r-  r/  rK   rF   rD   r(  r(    sh   € € € € € € à€L€L�LØÐÐÑØ$Ð$Ð$Ñ$ØÐÐÑØ!€JÐ!Ð!Ð!Ñ!ð!ð !ð !ð !ð !ð !rF   r(  c                  ó0   — e Zd ZU ded<   dZded<   d	d„ZdS )
ÚFalClientTimeoutErrorÚfloatrÃ   NúOptional[str]Ú
request_idr<   r7   c                óL   — | j         €d| j        › d�S d| j         › d| j        › d�S )NzRequest timed out after z secondszRequest z timed out after )r4  rÃ   rB   s    rD   r/  zFalClientTimeoutError.__str__0  s:   € ØŒ?Ð"ØD¨d¬lÐDÐDÐDÐDàV˜dœoÐVÐVÀÄÐVÐVÐVÐVrF   rõ   )rG   rH   rI   rJ   r4  r/  rK   rF   rD   r1  r1  +  sJ   € € € € € € à€N€N�NØ $€JÐ$Ð$Ð$Ñ$ðWð Wð Wð Wð Wð WrF   r1  rt   r,  r<   rO   c                óÚ  — 	 |                       ¦   «          d S # t          j        $ rÃ}d }| j        }	 |                      ¦   «         }n# t
          $ r d }Y nw xY wt          |t          ¦  «        r0|                     d| j        ¦  «        }|                     d¦  «        }|€| j	                             d¦  «        }t          || j        t          | j	        ¦  «        | |¬¦  «        |‚d }~ww xY w)NÚdetailr-  zx-fal-error-type)rt   r-  )rp   rm   ÚHTTPStatusErrorÚtextrk   r¡   Ú
isinstanceÚdictÚgetrj   r(  r*  )rt   Úexcr-  ÚmsgÚbodys        rD   Ú_raise_for_statusr@  7  s  € ðØ×!Ò!Ñ#Ô#Ð#Ð#Ð#øÝÔ ð ð ð Øˆ
ØŒmˆð	Ø—=’=‘?”?ˆDˆDøÝð 	ð 	ð 	ØˆDˆDˆDð	øøøõ �d�DÑ!Ô!ð 	0Ø—(’(˜8 X¤]Ñ3Ô3ˆCØŸš ,Ñ/Ô/ˆJàÐØ!Ô)×-Ò-Ð.@ÑAÔAˆJå ØØÔ õ �Ô!Ñ"Ô"ØØ!ð
ñ 
ô 
ð ð	øøøøð!øøøs8   ‚ ˜C*§	C%±AÁC%ÁAÁC%ÁAÁBC%Ã%C*c                  ó   — e Zd ZdS )ÚStatusNr&  rK   rF   rD   rB  rB  U  s   € € € € € ØˆcrF   rB  c                  ó   — e Zd ZU dZded<   dS )ÚQueuedz�Indicates the request is enqueued and waiting to be processed. The position
    field indicates the relative position in the queue (0-indexed).r»   ÚpositionN)rG   rH   rI   Ú__doc__rJ   rK   rF   rD   rD  rD  Y  s'   € € € € € € ðGð Gð €M€M�M€M€MrF   rD  c                  ó2   — e Zd ZU dZ e¦   «         Zded<   dS )Ú
InProgressz´Indicates the request is currently being processed. If the status operation called
    with the `with_logs` parameter set to True, the logs field will be a list of
    log objects.úlist[dict[str, Any]] | NoneÚlogsN)rG   rH   rI   rF  r
   rJ  rJ   rK   rF   rD   rH  rH  a  s5   € € € € € € ðð ð
 ).¨©¬€DÐ/Ð/Ð/Ñ/Ð/Ð/rF   rH  c                  ó”   — e Zd ZU dZ e¦   «         Zded<    e¦   «         Zded<    ed¬¦  «        Zded	<    ed¬¦  «        Z	ded
<   dS )Ú	Completeda2  Indicates the request has been completed and the result can be gathered. The logs field will
    contain the logs if the status operation was called with the `with_logs` parameter set to True. Metrics
    might contain the inference time, and other internal metadata (number of tokens
    processed, etc.).rI  rJ  údict[str, Any]ÚmetricsN)Údefaultr�   Úerrorr-  )
rG   rH   rI   rF  r
   rJ  rJ   rN  rP  r-  rK   rF   rD   rL  rL  k  sˆ   € € € € € € ðð ð
 ).¨©¬€DÐ/Ð/Ð/Ñ/Ø#˜e™gœg€GÐ%Ð%Ð%Ñ%Ø˜ dÐ+Ñ+Ô+€EÐ+Ð+Ð+Ñ+Ø"˜U¨4Ð0Ñ0Ô0€JÐ0Ð0Ð0Ñ0Ð0Ð0rF   rL  T)Úfrozenc                  óˆ   — e Zd ZU ded<    ed¬¦  «        Zded<    ed¬¦  «        Zded<    ed¬¦  «        Zded<   dd„ZdS )Ú_BaseRequestHandler7   r4  F©ÚreprÚresponse_urlÚ
status_urlÚ
cancel_urlru   ÚAnyJSONr<   rB  c                ó|  — |d         dk    rt          |d         ¬¦  «        S |d         dk    rt          |d         ¬¦  «        S |d         dk    rU|                     d	i ¦  «        }t          |d         ||                     d
¦  «        |                     d¦  «        ¬¦  «        S t	          d|d         › �¦  «        ‚)NÚstatusÚIN_QUEUEÚqueue_position)rE  ÚIN_PROGRESSrJ  )rJ  Ú	COMPLETEDrN  rP  r-  )rJ  rN  rP  r-  zUnknown status: )rD  rH  r<  rL  r¡   )rC   ru   rN  s      rD   Ú_parse_statusz _BaseRequestHandle._parse_status  sÊ   € Ø�Œ>˜ZÒ'Ð'Ý 4Ð(8Ô#9Ð:Ñ:Ô:Ð:Ø�(Œ^˜}Ò,Ð,Ý 4¨¤<Ð0Ñ0Ô0Ð0Ø�(Œ^˜{Ò*Ð*à—h’h˜y¨"Ñ-Ô-ˆGÝØ˜&”\ØØ—h’h˜wÑ'Ô'ØŸ8š8 LÑ1Ô1ð	ñ ô ð õ Ð@°°X´Ð@Ð@ÑAÔAÐArF   N)ru   rY  r<   rB  )	rG   rH   rI   rJ   r
   rV  rW  rX  r`  rK   rF   rD   rS  rS  x  s“   € € € € € € à€O€O�OØ˜ 5Ð)Ñ)Ô)€LÐ)Ð)Ð)Ñ)Ø�e Ð'Ñ'Ô'€JÐ'Ð'Ð'Ñ'Ø�e Ð'Ñ'Ô'€JÐ'Ð'Ð'Ñ'ðBð Bð Bð Bð Bð BrF   rS  Ú	workflowsÚcomfyÚidr7   c                óð   — dd l }|                      d¦  «        }t          |¦  «        dk    r| S |                     d| ¦  «        }|r|                     ¦   «         \  }}|› d|› �S t          d| › d�¦  «        ‚)Nr   r,   r2   z^([0-9]+)-([a-zA-Z0-9-]+)$zInvalid app id: z*. Must be in the format <appOwner>/<appId>)ÚreÚsplitrÕ   ÚmatchÚgroupsr¡   )rc  re  rË   rg  Ú	app_ownerÚapp_ids         rD   Ú_ensure_app_id_formatrk  ”  sŠ   € Ø€I€I€Ià�HŠH�S‰MŒM€EÝ
ˆ5�z„z�A‚~€~Øˆ	à�HŠHÐ2°BÑ7Ô7€EØð 'Ø!ŸLšL™NœNÑˆ	�6ØÐ&Ð&˜fÐ&Ð&Ð&å
ÐV¨ÐVÐVÐVÑ
WÔ
WÐWrF   c                  óP   — e Zd ZU ded<   ded<   ded<   ded<   edd	„¦   «         Zd
S )ÚAppIdr7   ÚownerÚaliasr3  rð   Ú	namespaceÚendpoint_idr<   c           	     óT  — t          |¦  «        }|                     d¦  «        }|d         t          v r> | |d         |d         d                     |dd …         ¦  «        pd |d         ¬¦  «        S  | |d         |d         d                     |dd …         ¦  «        pd d ¬¦  «        S )Nr,   r   r2   é   é   )rn  ro  rð   rp  )rk  rf  ÚAPP_NAMESPACESÚjoin)rÛ   rq  Únormalized_idrË   s       rD   Úfrom_endpoint_idzAppId.from_endpoint_idª  sÃ   € å-¨kÑ:Ô:ˆØ×#Ò# CÑ(Ô(ˆà�Œ8•~Ð%Ð%Ø�3Ø˜A”hØ˜A”hØ—X’X˜e A B BœiÑ(Ô(Ð0¨DØ œ(ð	ñ ô ð ð ˆsØ˜”(Ø˜”(Ø—’˜%   œ)Ñ$Ô$Ð,¨Øð	
ñ 
ô 
ð 	
rF   N)rq  r7   r<   rm  )rG   rH   rI   rJ   rú   rx  rK   rF   rD   rm  rm  £  s^   € € € € € € à€J€J�JØ€J€J�JØÐÐÑØÐÐÑàð
ð 
ð 
ñ „[ð
ð 
ð 
rF   rm  éx   g     €V@)r2   é<   rj  c                óx   — | j         r
| j         › d�nd}| j        r
d| j        › �nd}|› | j        › d| j        › |› �S )Nr,   rR   )rp  rð   rn  ro  )rj  ÚprefixÚsuffixs      rD   Ú_format_app_pathr~  Ä  s^   € Ø'-Ô'7Ð?�Ô Ð#Ð#Ð#Ð#¸R€FØ"(¤+Ð5Ð�”ÐÐÐ°2€FØÐ;�f”lÐ;Ð; V¤\Ð;°6Ð;Ð;Ð;rF   Úvaluer�   r�   c                ó†   — | €d S t           \  }}|| cxk    r|k    sn t          d|› d|› d�¦  «        ‚t          | ¦  «        S )Nzmax_buffering must be between z and z (inclusive))ÚREALTIME_MAX_BUFFERINGr¡   r7   )r  Ú	min_valueÚ	max_values      rD   Ú_serialize_max_bufferingr„  Ê  sk   € Ø€}Øˆtå1Ñ€IˆyØ˜Ð+Ð+Ò+Ð+ )Ò+Ð+Ð+Ð+ÝØT¨YÐTÐT¸YÐTÐTÐTñ
ô 
ð 	
õ ˆu‰:Œ:ÐrF   rR   ©rð   Úmax_bufferingÚapplicationr8   rð   r†  c               ó  — t                                | ¦  «        }t          |¦  «        }t          › |› �}|r|d|                     d¦  «        z   z  }i }|r||d<   t          |¦  «        }|�||d<   |r|› dt          |¦  «        › �S |S )Nr,   Úfal_jwt_tokenr†  ú?)rm  rx  r~  ÚREALTIME_URL_FORMATÚlstripr„  r   )	r‡  r8   rð   r†  rj  Úapp_pathr·   ÚqueryÚserialized_bufferings	            rD   Ú_build_runner_ws_urlr�  Ö  sµ   € õ ×#Ò# KÑ0Ô0€FÝ Ñ'Ô'€HÝ Ð
, (Ð
,Ð
,€CØð &Øˆs�T—[’[ Ñ%Ô%Ñ%Ñ%ˆØ€EØð 'Ø!&ˆˆoÑÝ3°MÑBÔBÐØÐ'Ø!5ˆˆoÑØð +ØÐ*Ð*�	 %Ñ(Ô(Ð*Ð*Ð*Ø€JrF   Úrealtime©rð   c               ó(   — t          | |||¬¦  «        S )Nr…  )r�  )r‡  r8   r†  rð   s       rD   Ú_build_realtime_urlr”  í  s'   € õ  ØØØØ#ð	ñ ô ð rF   ru   r   c                ó8  — t          | t          ¦  «        r| S t          | t          ¦  «        r`t          |                      d¦  «        t          ¦  «        r| d         S t          |                      d¦  «        t          ¦  «        r| d         S t	          d¦  «        ‚)Nr8   r7  z)Unexpected realtime token response format)r:  r7   r;  r<  ÚRuntimeError)ru   s    rD   Ú_parse_token_responser—  ü  sŠ   € Ý�$�ÑÔð ØˆÝ�$�ÑÔð "Ý�d—h’h˜wÑ'Ô'­Ñ-Ô-ð 	!Ø˜”=Ð Ý�d—h’h˜xÑ(Ô(­#Ñ.Ô.ð 	"Ø˜”>Ð!Ý
ÐBÑ
CÔ
CÐCrF   c                  ó*   ‡ — e Zd ZdZ	 	 d
dˆ fd	„Zˆ xZS )ÚRealtimeErrorz9Raised when the realtime endpoint sends an error payload.NrP  r7   Úreasonr�   ÚpayloadúOptional[dict[str, Any]]c                ó¦   •— || _         |pd| _        |pi | _        | j        s|n|› d| j        › �}t          ¦   «                              |¦  «         d S )NrR   z: )rP  rš  r›  Úsuperrf   )rC   rP  rš  r›  r)  Ú	__class__s        €rD   rf   zRealtimeError.__init__
  s`   ø€ ð ˆŒ
Ø�l ˆŒØ�} "ˆŒØ#œ{ÐI�%�%°5Ð0IÐ0I¸D¼KÐ0IÐ0IˆÝ‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!rF   )NN)rP  r7   rš  r�   r›  rœ  )rG   rH   rI   rF  rf   Ú__classcell__)rŸ  s   @rD   r™  r™    sP   ø€ € € € € ØCÐCð
 "Ø,0ð	
"ð 
"ð 
"ð 
"ð 
"ð 
"ð 
"ð 
"ð 
"ð 
"ð 
"rF   r™  r)  r¼   c                ó8   — dd l }|                     | d¬¦  «        S )Nr   F)Úraw)ÚmsgpackÚunpackb©r)  r£  s     rD   Úmsgpack_decode_messager¦    s!   € Ø€N€N€Nà�?Š?˜7¨ˆ?Ñ.Ô.Ð.rF   c                ó8   — dd l }|                     | d¬¦  «        S )Nr   T)Úuse_bin_type)r£  Úpackbr¥  s     rD   Úmsgpack_encode_messagerª    s!   € Ø€N€N€Nà�=Š=˜¨tˆ=Ñ4Ô4Ð4rF   Údecode_messageúCallable[[bytes], Any] | Noneúdict[str, Any] | Nonec                ó   — t          | t          ¦  «        r|                      ¦   «         } t          | t          t          f¦  «        r|pt
          } || ¦  «        S t          | t          ¦  «        r�	 t          j        | ¦  «        }n# t          j	        $ r d| dœcY S w xY w| 
                    d¦  «        }|dk    r8t          | 
                    dd¦  «        | 
                    d¦  «        |¦  «        ‚|dk    rd S |S d	| iS )
Nr9  )Útyper›  r¯  zx-fal-errorrP  ÚUNKNOWN_ERRORrš  zx-fal-messager›  )r:  Ú
memoryviewÚtobytesr¼   Ú	bytearrayr¦  r7   rk   ÚloadsÚJSONDecodeErrorr<  r™  )r)  r«  Údecoder›  Úmsg_types        rD   Ú_decode_realtime_messager¸  #  s$  € õ �'�:Ñ&Ô&ð $Ø—/’/Ñ#Ô#ˆå�'�E¥9Ð-Ñ.Ô.ð ØÐ9Õ#9ˆØˆv�g‰ŒÐå�'�3ÑÔð ð	8Ý”j Ñ)Ô)ˆGˆGøÝÔ#ð 	8ð 	8ð 	8Ø"¨wÐ7Ð7Ð7Ð7Ð7ð	8øøøð —;’;˜vÑ&Ô&ˆØ�}Ò$Ð$ÝØ—’˜G _Ñ5Ô5Ø—’˜HÑ%Ô%Øñô ð ð
 �Ò&Ð&à�4Øˆà�wÐÐs   Á0B ÂBÂBrM  Úencode_messageúCallable[[Any], bytes] | Nonec                ó*   — |pt           } || ¦  «        S r?   )rª  )r)  r¹  Úencodes      rD   Ú_encode_realtime_messager½  B  s   € ð Ð5Õ5€FØˆ6�'‰?Œ?ÐrF   c                  ób   — e Zd ZU dZded<   dZded<   dZded<   dd„Zdd„Zdd„Z	dd„Z
dd„ZdS )ÚRealtimeConnectionz(Synchronous realtime connection wrapper.z'Connection'Ú_wsNrº  Ú_encode_messager¬  Ú_decode_messageÚ	argumentsrM  r<   rO   c                ód   — t          || j        ¦  «        }| j                             |¦  «         d S r?   ©r½  rÁ  rÀ  Úsend©rC   rÃ  r›  s      rD   rÆ  zRealtimeConnection.sendR  s.   € Ý*¨9°dÔ6JÑKÔKˆØŒ�Š�gÑÔÐÐÐrF   r­  c                ó,  — 	 	 | j                              ¦   «         }n_# t          $ rR}ddlm}m} t          ||¦  «        rY d }~d S t          ||¦  «        rt          dt          |¦  «        ¦  «        |‚‚ d }~ww xY wt          || j
        ¦  «        }|€Œ“|S ©NTr   )ÚConnectionClosedÚConnectionClosedOKÚCONNECTION_CLOSED©rÀ  ÚrecvÚ	ExceptionÚwebsockets.exceptionsrÊ  rË  r:  r™  r7   r¸  rÂ  ©rC   rt   r=  rÊ  rË  Údecodeds         rD   rÎ  zRealtimeConnection.recvV  s×   € ð	ðØœ8Ÿ=š=™?œ?��øÝð 
ð 
ð 
ðð ð ð ð ð ð ð õ
 ˜cÐ#5Ñ6Ô6ð  Ø˜4˜4˜4˜4˜4Ý˜cÐ#3Ñ4Ô4ð PÝ'Ð(;½SÀ¹X¼XÑFÔFÈCÐOØøøøøð
øøøõ /¨x¸Ô9MÑNÔNˆGØˆØØˆNs   ƒ �
A9§A4Á/A4Á4A9c                óh   — t          | j        dd ¦  «        }t          |¦  «        r |¦   «          d S d S ©NÚclose©ÚgetattrrÀ  Úcallable©rC   rÕ  s     rD   rÕ  zRealtimeConnection.closej  s<   € Ý˜œ '¨4Ñ0Ô0ˆÝ�E‰?Œ?ð 	ØˆE‰GŒGˆGˆGˆGð	ð 	rF   c                ó   — | S r?   rK   rB   s    rD   Ú	__enter__zRealtimeConnection.__enter__o  s   € ØˆrF   c                ó.   — |                       ¦   «          d S r?   ©rÕ  ©rC   Úexc_typer=  Útbs       rD   Ú__exit__zRealtimeConnection.__exit__r  s   € Ø�
Š
‰ŒˆˆˆrF   ©rÃ  rM  r<   rO   ©r<   r­  ©r<   rO   )r<   r¿  )rG   rH   rI   rF  rJ   rÁ  rÂ  rÆ  rÎ  rÕ  rÛ  rá  rK   rF   rD   r¿  r¿  J  s®   € € € € € € à2Ð2àÐÐÑØ59€OÐ9Ð9Ð9Ñ9Ø59€OÐ9Ð9Ð9Ñ9ðð ð ð ðð ð ð ð(ð ð ð ð
ð ð ð ðð ð ð ð ð rF   r¿  c                  ób   — e Zd ZU dZded<   dZded<   dZded<   dd„Zdd„Zdd„Z	dd„Z
dd„ZdS )ÚAsyncRealtimeConnectionz)Asynchronous realtime connection wrapper.z'WebSocketClientProtocol'rÀ  Nrº  rÁ  r¬  rÂ  rÃ  rM  r<   rO   c              ƒ  ót   K  — t          || j        ¦  «        }| j                             |¦  «        ƒ d {V —† d S r?   rÅ  rÇ  s      rD   rÆ  zAsyncRealtimeConnection.send~  sD   è è € Ý*¨9°dÔ6JÑKÔKˆØŒh�mŠm˜GÑ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$rF   r­  c              ƒ  ó<  K  — 	 	 | j                              ¦   «         ƒ d {V —†}n_# t          $ rR}ddlm}m} t          ||¦  «        rY d }~d S t          ||¦  «        rt          dt          |¦  «        ¦  «        |‚‚ d }~ww xY wt          || j
        ¦  «        }|€Œ™|S rÉ  rÍ  rÑ  s         rD   rÎ  zAsyncRealtimeConnection.recv‚  sí   è è € ð	ðØ!%¤§¢¡¤Ð0Ð0Ð0Ð0Ð0Ð0��øÝð 
ð 
ð 
ðð ð ð ð ð ð ð õ
 ˜cÐ#5Ñ6Ô6ð  Ø˜4˜4˜4˜4˜4Ý˜cÐ#3Ñ4Ô4ð PÝ'Ð(;½SÀ¹X¼XÑFÔFÈCÐOØøøøøð
øøøõ /¨x¸Ô9MÑNÔNˆGØˆØØˆNs   …% ¥
B¯A<Á/A<Á<Bc              ƒ  óx   K  — t          | j        dd ¦  «        }t          |¦  «        r |¦   «         ƒ d {V —† d S d S rÔ  rÖ  rÙ  s     rD   rÕ  zAsyncRealtimeConnection.close–  sL   è è € Ý˜œ '¨4Ñ0Ô0ˆÝ�E‰?Œ?ð 	Ø�%‘'”'ˆMˆMˆMˆMˆMˆMˆMˆMˆMð	ð 	rF   c              ƒ  ó
   K  — | S r?   rK   rB   s    rD   Ú
__aenter__z"AsyncRealtimeConnection.__aenter__›  s   è è € ØˆrF   c              ƒ  ó>   K  — |                       ¦   «         ƒ d {V —† d S r?   rÝ  rÞ  s       rD   Ú	__aexit__z!AsyncRealtimeConnection.__aexit__ž  s,   è è € Ø�jŠj‰lŒlÐÐÐÐÐÐÐÐÐrF   râ  rã  rä  )r<   ræ  )rG   rH   rI   rF  rJ   rÁ  rÂ  rÆ  rÎ  rÕ  rë  rí  rK   rF   rD   ræ  ræ  v  s®   € € € € € € à3Ð3à"Ð"Ð"Ñ"Ø59€OÐ9Ð9Ð9Ñ9Ø59€OÐ9Ð9Ð9Ñ9ð%ð %ð %ð %ðð ð ð ð(ð ð ð ð
ð ð ð ðð ð ð ð ð rF   ræ  r·   rj   údict[str, str] | NoneúIterator['Connection']c              #  óŒ   K  — ddl m} |                     | |t          d ¬¦  «        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )rs   ©Úadditional_headersÚopen_timeoutÚmax_size)Úwebsockets.syncrs   ÚconnectÚREALTIME_OPEN_TIMEOUT)r·   rj   rs   Úwss       rD   Ú_connect_sync_wsrù  ¢  s¬   è è € ð 'Ð&Ð&Ð&Ð&Ð&à	�ŠØØ"Ý*Øð	 
ñ 
ô 
ð ð
 
Øˆˆˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   §9¹=Á =ú(AsyncIterator['WebSocketClientProtocol']c               ó°   K  — dd l }|                     | |t          d ¬¦  «        4 ƒd {V —†	 }|W V — d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Nr   rñ  )Ú
websocketsrö  r÷  )r·   rj   rü  rø  s       rD   Ú_connect_async_wsrý  ±  s	  è è € ð ÐÐÐà×!Ò!ØØ"Ý*Øð	 "ñ ô ð ð ð ð ð ð ð ð ð
 
Øˆˆˆˆðð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ¬AÁ
AÁArs   r�   ÚmethodÚkwargsc                óB   —  | j         ||fi |¤Ž}t          |¦  «         |S r?   ©Úrequestr@  ©rs   rþ  r·   rÿ  rt   s        rD   rÆ   rÆ   À  s2   € ð ˆvŒ~˜f cÐ4Ð4¨VÐ4Ð4€HÝ�hÑÔÐØ€OrF   rý   c              ‹  óR   K  —  | j         ||fi |¤Žƒ d {V —†}t          |¦  «         |S r?   r  r  s        rD   r  r  È  sH   è è € ð $�V”^ F¨CÐ:Ð:°6Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:€HÝ�hÑÔÐØ€OrF   çš™™™™™¹?é   )i˜  i™  i­  )iö  i÷  éø  ç      ^@g      >@)rö  r=   c                óR   — | j         t          vrdS d| j        v rdS d| j        v rdS dS )z-Tell apart ingress errors from client errors.Fzx-fal-request-idÚnginxT)r*  ÚINGRESS_ERROR_CODESrj   r9  )rt   s    rD   Ú_is_ingress_errorr  Ý  sD   € ð ÔÕ#6Ð6Ð6Øˆuà˜XÔ-Ð-Ð-àˆuð �(”-ÐÐØˆtàˆ5rF   Úextra_retry_codesú	list[int]c                ó²   — | j         dk    r!| j                             t          ¦  «        rdS t	          | ¦  «        rdS | j         t
          v s	| j         |v rdS dS )Nr  FT)r*  rj   r<  r$   r  ÚRETRY_CODES)rt   r  s     rD   Ú_should_retry_responser  î  so   € ð
 Ô˜sÒ"Ð" xÔ'7×';Ò';Ý#ñ(ô (Ð"ð ˆuå˜Ñ"Ô"ð ØˆtàÔ�{Ð*Ð*¨hÔ.BÐFWÐ.WÐ.WØˆtàˆ5rF   r=  rÏ  c                óh  — t          | t          j        ¦  «        rE	 | j        }t          |t          j        ¦  «        rt
          |j        v rdS n# t          $ r Y nw xY wdS t          | t          j        ¦  «        rdS t          | t          j	        t          f¦  «        rt          | j        |¦  «        S dS )NFT)r:  rm   ÚTimeoutExceptionr  ÚRequestr%   rj   r–  ÚTransportErrorr8  r(  r  rt   )r=  r  r  s      rD   Ú_should_retryr    s½   € å�#•uÔ-Ñ.Ô.ð 	ð	Ø”kˆGå˜'¥5¤=Ñ1Ô1ð !Ý)¨W¬_Ð<Ð<Ø ˜5øøÝð 	ð 	ð 	ØˆDð	øøøàˆtå�#•uÔ+Ñ,Ô,ð Øˆtå�#�Ô-Õ/AÐBÑCÔCð GÝ% c¤lÐ4EÑFÔFÐFàˆ5s   œ/A Á
AÁAÚexponentialFÚ	num_retryr»   Ú
base_delayr2  Ú	max_delayÚbackoff_typeúLiteral['exponential', 'fixed']Újitterc                ó¶   — |dk    rt          |d| dz
  z  z  |¦  «        }nt          ||¦  «        }|r|t          j        dd¦  «        z  }t          ||¦  «        S )Nr  rs  r2   g      à?g      ø?)r[   ÚrandomÚuniform)r  r  r  r  r  Údelays         rD   Ú_get_retry_delayr"    sk   € ð �}Ò$Ð$Ý�J !¨	°A©Ñ"6Ñ7¸ÑCÔCˆˆå�J 	Ñ*Ô*ˆàð *Ø•”  SÑ)Ô)Ñ)ˆåˆu�iÑ Ô Ð rF   )r  c               ó°  — t          dt          dz   ¦  «        D ]¯}	 t          | ||fi |¤Žc S # t          j        t
          f$ rƒ}t          ||¦  «        rm|t          k     rbt          |t          t          dd¦  «        }t                               d|› d|› dt          |z
  › d�¦  «         t          j        |¦  «         Y d }~Œ§‚ d }~ww xY wt          d¦  «        ‚)	Nr2   r  TúRetrying request to ú due to ú (ú attempts left)úFailed to perform request)rØ   ÚMAX_ATTEMPTSrÆ   rm   Ú	HTTPErrorr(  r  r"  Ú
BASE_DELAYÚ	MAX_DELAYÚloggerÚdebugÚtimeÚsleepr–  ©rs   rþ  r·   r  rÿ  Úattemptr=  r!  s           rD   r¶   r¶   )  s  € õ ˜�L¨1Ñ,Ñ-Ô-ð ð ˆð	Ý˜F F¨CÐ:Ð:°6Ð:Ð:Ð:Ð:Ð:øÝ”Õ!3Ð4ð 
	ð 
	ð 
	Ý˜SÐ"3Ñ4Ô4ð ¸Å<Ò9OÐ9OÝ(Ø�Z­°MÀ4ñô �õ —’Øf¨3ÐfÐf¸ÐfÐf½|ÈgÑ?UÐfÐfÐfñô ð õ ”
˜5Ñ!Ô!Ð!Ø����Øøøøøð
	øøøõ Ð2Ñ
3Ô
3Ð3s   œ-­CÁA8CÃ CÃCc             ‹  ó¸  K  — t          dt          dz   ¦  «        D ]±}	 t          | ||fi |¤Žƒ d {V —†c S # t          j        t
          f$ r}t          ||¦  «        ri|t          k     r^t          |dddd¦  «        }t           	                    d|› d|› dt          |z
  › d	�¦  «         t          j        |¦  «        ƒ d {V —† Y d }~Œ©‚ d }~ww xY wt          d
¦  «        ‚)Nr2   r  r…   r  Tr$  r%  r&  r'  r(  )rØ   r)  r  rm   r*  r(  r  r"  r-  r.  r�   r0  r–  r1  s           rD   r  r  C  s2  è è € õ ˜�L¨1Ñ,Ñ-Ô-ð ð ˆð
	Ý'¨°¸ÐFÐF¸vÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFøÝ”Õ!3Ð4ð 	ð 	ð 	Ý˜SÐ"3Ñ4Ô4ð ¸Å<Ò9OÐ9OÝ(¨°#°r¸=È$ÑOÔO�Ý—’Øf¨3ÐfÐf¸ÐfÐf½|ÈgÑ?UÐfÐfÐfñô ð õ ”m EÑ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ø����Øøøøøð	øøøõ Ð2Ñ
3Ô
3Ð3s   ž5µC
ÁA4CÃCÃC
rN   r   c                ó^   — | j                              ¦   «         dk    r
d| j        › �S | j        S )NÚkeyzBearer )ÚschemeÚlowerr8   rc   ©rN   s    rD   Ú_cdn_auth_headerr9  [  s4   € Ø„{×ÒÑÔ˜eÒ#Ð#Ø%˜œÐ%Ð%Ð%ØÔÐrF   rŠ   rŒ   r¨   c                ó8   — |t          | ¦  «        dœ}|�||d<   |S )N)rY   rW   r³   )r9  )rN   rŠ   rŒ   rj   s       rD   Ú_cdn_upload_headersr;  a  s0   € ð  ,Õ>NÈtÑ>TÔ>TÐUÐU€GØÐØ%.ˆÐ!Ñ"Ø€NrF   c                ó   — | j         dddœS )NrU   rV   )rc   r8  s    rD   Ú_storage_upload_headersr=  j  s   € àÔ*Ø$Ø*ðð ð rF   Ú
repositoryúUploadRepositoryId | NoneÚfallback_repositoryú4UploadRepositoryId | list[UploadRepositoryId] | Nonec                óÜ   — h d£}| €t           } |€t          }nt          |t          ¦  «        s|g}| g|¢}g }|D ]2}||vrt	          d|› d�¦  «        ‚||vr|                     |¦  «         Œ3|S )N>   r*   r+   r)   zUnsupported upload repository 'ú')r/   r1   r:  Úlistr¡   rÇ   )r>  r@  ÚallowedÚorderedÚdedupedÚentrys         rD   Ú_normalize_upload_repositoriesrI  r  s¯   € ð 'Ð&Ð&€GØÐÝ.ˆ
àÐ"Ý@ÐÐÝÐ+­TÑ2Ô2ð 4Ø2Ð3ÐàÐ0Ð/Ð0€GØ(*€GØð "ð "ˆØ˜ÐÐÝÐG¸uÐGÐGÐGÑHÔHÐHØ˜ÐÐØ�NŠN˜5Ñ!Ô!Ð!øØ€NrF   c                ó   — | pd|dœS )Nú
upload.bin©rŒ   rŠ   rK   rL  s     rD   Ú_storage_upload_payloadrM  ‰  s   € àÐ. ,Ø$ðð ð rF   c          	     óê   — t          | dt          › d�t          ||¦  «        t          |¦  «        ¬¦  «        }|                     ¦   «         }|d         }|d         }t          | d||d|id ¬¦  «         |S ©	Nr²   z)/storage/upload/initiate?storage_type=gcs)rk   rj   Ú
upload_urlÚfile_urlrÀ   rY   )rÂ   rj   rÃ   )r¶   ra   rM  r=  rk   ©	rs   rN   ru   rŠ   rŒ   Úinit_responseÚinit_resultrP  rQ  s	            rD   Ú_upload_via_storagerU  �  sž   € õ )ØØÝÐ>Ð>Ð>Ý$ Y°Ñ=Ô=Ý'¨Ñ-Ô-ðñ ô €Mð  ×$Ò$Ñ&Ô&€KØ˜\Ô*€JØ˜:Ô&€HÝØØØØØ Ð.Øðñ ô ð ð €OrF   c          	   ƒ  ó  K  — t          | dt          › d�t          ||¦  «        t          |¦  «        ¬¦  «        ƒ d {V —†}|                     ¦   «         }|d         }|d         }t          | d||d|id ¬¦  «        ƒ d {V —† |S rO  )r  ra   rM  r=  rk   rR  s	            rD   Ú_async_upload_via_storagerW  ­  sÞ   è è € õ 5ØØÝÐ>Ð>Ð>Ý$ Y°Ñ=Ô=Ý'¨Ñ-Ô-ðñ ô ð ð ð ð ð ð €Mð  ×$Ò$Ñ&Ô&€KØ˜\Ô*€JØ˜:Ô&€HÝ
$ØØØØØ Ð.Øðñ ô ð ð ð ð ð ð ð ð €OrF   c               ón   — t          | dt          dz   ||¬¦  «        }|                     ¦   «         d         S ©Nr²   z/files/upload)rÂ   rj   r¢   )r¶   ÚCDN_URLrk   ©rs   ru   rj   rt   s       rD   Ú
_upload_v3r\  Ê  sA   € õ $ØØÝ�/Ñ!ØØðñ ô €Hð �=Š=‰?Œ?˜<Ô(Ð(rF   c               óŒ   — t          | dt          dz   |t          |||¦  «        ¬¦  «        }|                     ¦   «         d         S rY  )r¶   ÚFAL_CDN_FALLBACK_URLr;  rk   ©rs   rN   ru   rŠ   rŒ   rt   s         rD   Ú_upload_cdnr`  Ú  sM   € õ $ØØÝ˜Ñ.ØÝ# D¨,¸	ÑBÔBðñ ô €Hð �=Š=‰?Œ?˜<Ô(Ð(rF   c             ƒ  ó~   K  — t          | dt          dz   ||¬¦  «        ƒ d {V —†}|                     ¦   «         d         S rY  )r  rZ  rk   r[  s       rD   Ú_async_upload_v3rb  ì  sc   è è € õ 0ØØÝ�/Ñ!ØØðñ ô ð ð ð ð ð ð €Hð �=Š=‰?Œ?˜<Ô(Ð(rF   c             ƒ  óœ   K  — t          | dt          dz   |t          |||¦  «        ¬¦  «        ƒ d {V —†}|                     ¦   «         d         S rY  )r  r^  r;  rk   r_  s         rD   Ú_async_upload_cdnrd  ü  so   è è € õ 0ØØÝ˜Ñ.ØÝ# D¨,¸	ÑBÔBðñ ô ð ð ð ð ð ð €Hð �=Š=‰?Œ?˜<Ô(Ð(rF   Úattemptsú#list[tuple[str, Callable[[], str]]]c           	     ó  — t          | ¦  «        D ]n\  }\  }}	  |¦   «         c S # t          $ rM}|t          | ¦  «        dz
  k    r‚ t                               d|| |dz            d         |¦  «         Y d }~Œgd }~ww xY wt          d¦  «        ‚©Nr2   z+Upload failed to %s, falling back to %s: %sr   zUpload attempts were exhausted)Ú	enumeraterÏ  rÕ   r-  Úwarningr–  )re  ÚidxÚlabelr2  r=  s        rD   Ú_try_upload_with_fallbackrm    sÎ   € õ "+¨8Ñ!4Ô!4ð ð ÑˆÑˆe�Wð
	Ø�7‘9”9ÐÐÐøÝð 	ð 	ð 	Ø•c˜(‘m”m aÑ'Ò'Ð'ØÝ�NŠNØ=ØØ˜˜q™Ô! !Ô$Øñ	ô ð ð ð ð ð ð øøøøð	øøøõ Ð7Ñ
8Ô
8Ð8s   ™	%¥
A<¯AA7Á7A<ú#list[tuple[str, Callable[[], Any]]]c           	   ƒ  ó`  K  — t          | ¦  «        D ]Ž\  }\  }}	  |¦   «         }t          j        |¦  «        r
|ƒ d {V —†c S |c S # t          $ rM}|t	          | ¦  «        dz
  k    r‚ t
                               d|| |dz            d         |¦  «         Y d }~Œ‡d }~ww xY wt          d¦  «        ‚rh  )ri  r�   ÚiscoroutinerÏ  rÕ   r-  rj  r–  )re  rk  rl  r2  r¸   r=  s         rD   Ú_async_try_upload_with_fallbackrq     sÿ   è è € õ "+¨8Ñ!4Ô!4ð ð ÑˆÑˆe�Wð	Ø�W‘Y”YˆFÝÔ" 6Ñ*Ô*ð $Ø#�|�|�|�|�|�|Ð#Ð#Ð#ØˆMˆMˆMøÝð 	ð 	ð 	Ø•c˜(‘m”m aÑ'Ò'Ð'ØÝ�NŠNØ=ØØ˜˜q™Ô! !Ô$Øñ	ô ð ð ð ð ð ð øøøøð	øøøõ Ð7Ñ
8Ô
8Ð8s   ›%AÁAÁ
BÁABÂBÚhandleÚSyncRequestHandlec                óR   — 	 |                       ¦   «          d S # t          $ r Y d S w xY wr?   ©ÚcancelrÏ  ©rr  s    rD   Ú_maybe_cancel_requestrx  5  s:   € ðØ�Š‰ŒˆˆˆøÝð ð ð Øˆˆðøøøs   ‚ ˜
&¥&ÚAsyncRequestHandlec              ƒ  ób   K  — 	 |                       ¦   «         ƒ d {V —† d S # t          $ r Y d S w xY wr?   ru  rw  s    rD   Ú_async_maybe_cancel_requestr{  <  sS   è è € ðØ�mŠm‰oŒoÐÐÐÐÐÐÐÐÐøÝð ð ð Øˆˆðøøøs   „   
.­.c                  óx   — e Zd ZU  ed¬¦  «        Zded<   edd	„¦   «         Zdd
œdd„Zdddœdd„Z	dd„Z
dd„ZdS )rs  FrT  r�   rs   r‡  r7   r4  r<   c                óÂ   — t                                |¦  «        }|j        r
|j        › d�nd}t          › |› |j        › d|j        › d|› �} | |||dz   |dz   |¬¦  «        S ©Nr,   rR   z
/requests/z/statusz/cancel©r4  rV  rW  rX  rs   ©rm  rx  rp  ÚQUEUE_URL_FORMATrn  ro  ©rÛ   rs   r‡  r4  rj  r|  rl   s          rD   Úfrom_request_idz!SyncRequestHandle.from_request_idG  ó‘   € õ ×'Ò'¨Ñ4Ô4ˆØ+1Ô+;ÐC�FÔ$Ð'Ð'Ð'Ð'ÀˆÝ&Ðc¨Ðc°´ÐcÐc¸v¼|ÐcÐcÐWaÐcÐcˆØˆsØ!Ø!Ø )Ñ+Ø )Ñ+Øð
ñ 
ô 
ð 	
rF   ©Ú	with_logsr†  r=   rB  c               ó¸   — t          | j        d| j        d|it          ¬¦  «        }t	          |¦  «         |                      |                     ¦   «         ¦  «        S )úÊReturns the status of the request (which can be one of the following:
        Queued, InProgress, Completed). If `with_logs` is True, logs will be included
        for InProgress and Completed statuses.ÚGETrJ  ©ÚparamsrÃ   )r¶   rs   rW  ÚQUEUE_POLL_TIMEOUTr@  r`  rk   ©rC   r†  rt   s      rD   r[  zSyncRequestHandle.statusY  s`   € õ
 (ØŒKØØŒOà˜	ðõ 'ð
ñ 
ô 
ˆõ 	˜(Ñ#Ô#Ð#à×!Ò! (§-¢-¡/¤/Ñ2Ô2Ð2rF   r  ©r†  Úintervalr�  r2  úIterator[Status]c             #  ó”   K  — 	 |                       |¬¦  «        }|V — t          |t          ¦  «        rdS t          j        |¦  «         ŒF©z¼Continuously poll for the status of the request and yield it at each interval till
        the request is completed. If `with_logs` is True, logs will be included in the response.
        Tr…  N)r[  r:  rL  r/  r0  ©rC   r†  r�  r[  s       rD   Úiter_eventszSyncRequestHandle.iter_eventsk  sS   è è € ð	!Ø—[’[¨9�[Ñ5Ô5ˆFØˆLˆLˆLÝ˜&¥)Ñ,Ô,ð Ø�åŒJ�xÑ Ô Ð ð	!rF   rY  c                ó¾   — |                       d¬¦  «        D ]}Œt          | j        d| j        t          ¬¦  «        }t          |¦  «         |                     ¦   «         S )zOWait till the request is completed and return the result of the inference call.Fr…  r‰  ©rÃ   )r”  r¶   rs   rV  rŒ  r@  rk   ©rC   Ú_rt   s      rD   r<  zSyncRequestHandle.getz  sf   € à×!Ò!¨EÐ!Ñ2Ô2ð 	ð 	ˆAØå'ØŒK˜ Ô 1Õ;Mð
ñ 
ô 
ˆõ 	˜(Ñ#Ô#Ð#Ø�}Š}‰ŒÐrF   rO   c                óh   — t          | j        d| j        t          ¬¦  «        }t	          |¦  «         dS ©zCancel the request.rÀ   r–  N)r¶   rs   rX  rŒ  r@  ©rC   rt   s     rD   rv  zSyncRequestHandle.cancel…  s<   € å'ØŒKØØŒOÝ&ð	
ñ 
ô 
ˆõ 	˜(Ñ#Ô#Ð#Ð#Ð#rF   N)rs   r�   r‡  r7   r4  r7   r<   rs  ©r†  r=   r<   rB  )r†  r=   r�  r2  r<   r�  ©r<   rY  rä  ©rG   rH   rI   r
   rs   rJ   rú   rƒ  r[  r”  r<  rv  rK   rF   rD   rs  rs  C  sÂ   € € € € € € à ˜5 eÐ,Ñ,Ô,€FÐ,Ð,Ð,Ñ,àð
ð 
ð 
ñ „[ð
ð" +0ð 3ð 3ð 3ð 3ð 3ð 3ð& $)¸Cð!ð !ð !ð !ð !ð !ð	ð 	ð 	ð 	ð$ð $ð $ð $ð $ð $rF   c                  óx   — e Zd ZU  ed¬¦  «        Zded<   edd	„¦   «         Zdd
œdd„Zdddœdd„Z	dd„Z
dd„ZdS )ry  FrT  rý   rs   r‡  r7   r4  r<   c                óÂ   — t                                |¦  «        }|j        r
|j        › d�nd}t          › |› |j        › d|j        › d|› �} | |||dz   |dz   |¬¦  «        S r~  r€  r‚  s          rD   rƒ  z"AsyncRequestHandle.from_request_id”  r„  rF   r…  r†  r=   rB  c             ƒ  óÈ   K  — t          | j        d| j        d|it          ¬¦  «        ƒ d{V —†}t	          |¦  «         |                      |                     ¦   «         ¦  «        S )rˆ  r‰  rJ  rŠ  N)r  rs   rW  rŒ  r@  r`  rk   r�  s      rD   r[  zAsyncRequestHandle.status¦  s‚   è è € õ
 4ØŒKØØŒOà˜	ðõ 'ð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ 	˜(Ñ#Ô#Ð#à×!Ò! (§-¢-¡/¤/Ñ2Ô2Ð2rF   r  rŽ  r�  r2  úAsyncIterator[Status]c              ó®   K  — 	 |                       |¬¦  «        ƒ d{V —†}|W V — t          |t          ¦  «        rdS t          j        |¦  «        ƒ d{V —† ŒSr’  )r[  r:  rL  r�   r0  r“  s       rD   r”  zAsyncRequestHandle.iter_events¸  sy   è è € ð	*ØŸ;š;°˜;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;ˆFØˆLˆLˆLˆLÝ˜&¥)Ñ,Ô,ð Ø�å”- Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð	*rF   rY  c              ƒ  óÚ   K  — |                       d¬¦  «        2 3 d{V —†}Œ6 t          | j        d| j        t          ¬¦  «        ƒ d{V —†}t          |¦  «         |                     ¦   «         S )z9Wait till the request is completed and return the result.Fr…  Nr‰  r–  )r”  r  rs   rV  rŒ  r@  rk   r—  s      rD   r<  zAsyncRequestHandle.getÇ  sª   è è € à×'Ò'°%Ð'Ñ8Ô8ð 	ð 	ð 	ð 	ð 	ð 	ð 	�!Øð 9õ 4ØŒKØØÔÝ&ð	
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ 	˜(Ñ#Ô#Ð#Ø�}Š}‰ŒÐs   ™!rO   c              ƒ  óx   K  — t          | j        d| j        t          ¬¦  «        ƒ d{V —†}t	          |¦  «         dS rš  )r  rs   rX  rŒ  r@  r›  s     rD   rv  zAsyncRequestHandle.cancelÕ  s^   è è € å3ØŒKØØŒOÝ&ð	
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ 	˜(Ñ#Ô#Ð#Ð#Ð#rF   N)rs   rý   r‡  r7   r4  r7   r<   ry  rœ  )r†  r=   r�  r2  r<   r¢  r�  rä  rž  rK   rF   rD   ry  ry  �  sÂ   € € € € € € à % ¨5Ð 1Ñ 1Ô 1€FÐ1Ð1Ð1Ñ1àð
ð 
ð 
ñ „[ð
ð" 16ð 3ð 3ð 3ð 3ð 3ð 3ð& $)¸Cð*ð *ð *ð *ð *ð *ðð ð ð ð$ð $ð $ð $ð $ð $rF   c            
      ó¶  — e Zd ZU  edd¬¦  «        Zded<   dZded<   edad„¦   «         Zdad„Z	dbd„Z
edcd„¦   «         Zeddd„¦   «         Zddd„Zedœded„Zddddi dœdfd$„Zddddi dd%œdgd*„Zddddddi ddd+œ	dhd3„Zdid5„Zdd6œdjd8„Zdkd9„Zdld;„Zd<dd=œdmd@„Z	 dndddAœdodJ„ZdddAœdpdL„Z	 dqdddAœdrdQ„ZedRdSdedddTœdsd]„¦   «         ZedRdded^œdtd`„¦   «         ZdS )urƒ   NF©rO  rU  r�   r5  r  r2  Údefault_timeoutr<   r   c                óV   — | j         €t          ¦   «         S t          d| j         ¦  «        S ©NÚKey©r5  r   r   rB   s    rD   rZ   zAsyncClient._authå  ó(   € àŒ8ÐÝ)Ñ+Ô+Ð+Ý˜u d¤hÑ/Ô/Ð/rF   c                ó   — | j         S r?   ©rZ   rB   s    rD   Ú	_get_authzAsyncClient._get_authë  ó
   € ØŒzÐrF   r7   c                ó�   — |                       ¦   «         }|j                             ¦   «         dk    rt          d¦  «        ‚|j        S ©Nr5  zZKey credentials are required for this operation. Set FAL_KEY or FAL_KEY_ID/FAL_KEY_SECRET.©r°  r6  r7  r   r8   re   s     rD   Ú_get_keyzAsyncClient._get_keyî  óI   € Ø�~Š~ÑÔˆØŒ;×ÒÑÔ %Ò'Ð'Ý)Ølñô ð ð ŒzÐrF   r   c                óD   — t          |                      ¦   «         ¦  «        S r?   )r   r°  rB   s    rD   r–   zAsyncClient._token_managerö  s   € å# D§N¢NÑ$4Ô$4Ñ5Ô5Ð5rF   rý   c                óz   — |                       ¦   «         }t          j        |j        t          dœ| j        ¬¦  «        S )Nr¬   ©rj   rÃ   )r°  rm   rƒ   rc   Ú
USER_AGENTr¨  re   s     rD   r•   zAsyncClient._clientú  sF   € à�~Š~ÑÔˆÝÔ à!%Ô!2Ý(ðð ð Ô(ð
ñ 
ô 
ð 	
rF   c              ƒ  ó¨   K  — | j                              ¦   «         ƒ d {V —†}t          j        |j        › d|j        › �t          dœ| j        ¬¦  «        S ©Nr«   r¬   r¹  )r–   ry   rm   rƒ   r9   r8   rº  r¨  r®   s     rD   Ú_get_cdn_clientzAsyncClient._get_cdn_client  sq   è è € ØÔ)×3Ò3Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5ˆÝÔ à$)Ô$4Ð!DÐ!D°u´{Ð!DÐ!DÝ(ðð ð Ô(ð
ñ 
ô 
ð 	
rF   ©Útoken_expirationr‡  r¿  r»   c             ƒ  óÚ   K  — t                                |¦  «        j        g|dœ}t          | j        dt
          › d�|¬¦  «        ƒ d {V —†}t          |                     ¦   «         ¦  «        S ©N)Úallowed_appsr¿  r²   z/tokens/)rk   )rm  rx  ro  r  r•   ra   r—  rk   ©rC   r‡  r¿  r›  rt   s        rD   Ú_get_realtime_tokenzAsyncClient._get_realtime_token  s‘   è è € õ #×3Ò3°KÑ@Ô@ÔFÐGØ 0ð
ð 
ˆõ 4ØŒLØÝÐ!Ð!Ð!Øð	
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ % X§]¢]¡_¤_Ñ5Ô5Ð5rF   rR   ©rð   rÃ   Ústart_timeoutÚhintrj   rÃ  rY  rð   rÃ   úOptional[Union[int, float]]rÆ  rÇ  rj   r¨   c             ƒ  ó*  K  — t           |z   }|r|d|                     d¦  «        z   z  }i |¥}	|�t          ||	¦  «         |�t          ||	¦  «         t	          | j        d||||	¬¦  «        ƒ d{V —†}
t          |
¦  «         |
                     ¦   «         S )ad  Run an application with the given arguments (which will be JSON serialized). The path parameter can be used to
        specify a subpath when applicable. This method will return the result of the inference call directly.

        Args:
            timeout: Client-side HTTP timeout in seconds. Controls how long the HTTP
                client waits for a response. Defaults to the client's default_timeout.
            start_timeout: Server-side request timeout in seconds. Limits total time spent
                waiting before processing starts. Does not apply once the application begins processing.
        r,   Nr²   ©rk   rÃ   rj   )ÚRUN_URL_FORMATrŒ  r#   r"   r  r•   r@  rk   ©rC   r‡  rÃ  rð   rÃ   rÆ  rÇ  rj   r·   rd   rt   s              rD   ÚrunzAsyncClient.run!  sÐ   è è € õ* ˜{Ñ*ˆØð 	*Ø�3˜Ÿš SÑ)Ô)Ñ)Ñ)ˆCà#. g ;ˆð ÐÝ˜D (Ñ+Ô+Ð+àÐ$Ý˜}¨hÑ7Ô7Ð7å3ØŒLØØØØØð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ 	˜(Ñ#Ô#Ð#Ø�}Š}‰ŒÐrF   ©rð   rÇ  Úwebhook_urlÚpriorityrj   rÆ  rÏ  rÐ  úOptional[Priority]ry  c             ƒ  óì  K  — t           |z   }	|r|	d|                     d¦  «        z   z  }	|�|	dt          d|i¦  «        z   z  }	i |¥}
|�t          ||
¦  «         |�t	          ||
¦  «         |�t          ||
¦  «         t          | j        d|	|| j        |
¬¦  «        ƒ d{V —†}t          |¦  «         | 
                    ¦   «         }t          |d         |d         |d	         |d
         | j        ¬¦  «        S )aP  Submit an application with the given arguments (which will be JSON serialized). The path parameter can be used to
        specify a subpath when applicable. This method will return a handle to the request that can be used to check the status
        and retrieve the result of the inference call when it is done.

        Args:
            start_timeout: Server-side request timeout in seconds. Limits total time spent
                waiting before processing starts (includes queue wait, retries, and
                routing). Does not apply once the application begins processing.
        r,   NrŠ  Úfal_webhookr²   rÊ  r4  rV  rW  rX  r  )r�  rŒ  r   r#   r!   r"   r  r•   r¨  r@  rk   ry  ©rC   r‡  rÃ  rð   rÇ  rÏ  rÐ  rj   rÆ  r·   rd   rt   ru   s                rD   rÙ   zAsyncClient.submitO  sF  è è € õ,  Ñ,ˆØð 	*Ø�3˜Ÿš SÑ)Ô)Ñ)Ñ)ˆCàÐ"Ø�3� M°;Ð#?Ñ@Ô@Ñ@Ñ@ˆCà#. g ;ˆð ÐÝ˜D (Ñ+Ô+Ð+àÐÝ ¨(Ñ3Ô3Ð3àÐ$Ý˜}¨hÑ7Ô7Ð7å3ØŒLØØØØÔ(Øð
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ 	˜(Ñ#Ô#Ð#à�}Š}‰ŒˆÝ!Ø˜LÔ)Ø˜nÔ-Ø˜LÔ)Ø˜LÔ)Ø”<ð
ñ 
ô 
ð 	
rF   ©	rð   rÇ  r†  Ú
on_enqueueÚon_queue_updaterÐ  rj   rÆ  Úclient_timeoutr†  r=   rÖ  ú1Optional[Callable[[str], None | Awaitable[None]]]r×  ú4Optional[Callable[[Status], None | Awaitable[None]]]rØ  c       	      ƒ  ó¶  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡K  — |�.‰
€|Š
n)‰
|k    r#t          j        d‰
› d|› d�t          d¬¦  «         dgŠdˆˆˆˆ	ˆˆˆˆˆˆ ˆ
ˆfd	„}|€ |¦   «         ƒ d{V —†S 	 t          j         |¦   «         |¬
¦  «        ƒ d{V —†S # t          j        $ r?}d}‰d         }|�|j        }t          |¦  «        ƒ d{V —† t          ||¬¦  «        |‚d}~ww xY w)á<  Subscribe to an application and wait for the result.

        Args:
            start_timeout: Server-side request timeout in seconds. Limits total time spent
                waiting before processing starts (includes queue wait, retries, and
                routing). Does not apply once the application begins processing.
            client_timeout: Client-side total timeout in seconds. Limits the total time
                spent waiting for the entire request to complete (including queue wait
                and processing). If not set, waits indefinitely.
        Nústart_timeout (ú"s) is larger than client_timeout (úTs). The request may timeout on the client before the server-side timeout is reached.rs  ©Ú
stacklevelr<   rY  c            	   “  óv  •K  — ‰                      ‰‰‰
‰‰‰‰¬¦  «        ƒ d {V —†} | ‰d<   ‰�, ‰| j        ¦  «        }t          j        |¦  «        r|ƒ d {V —† ‰	�F|                      ‰¬¦  «        2 3 d {V —†} ‰	|¦  «        }t          j        |¦  «        r|ƒ d {V —† Œ/6 |                      ¦   «         ƒ d {V —†S ©N)rð   rÇ  rÐ  rj   rÆ  r   r…  )rÙ   r4  ÚinspectÚisawaitabler”  r<  )rr  r¸   Úeventr‡  rÃ  Ú
handle_refrj   rÇ  rÖ  r×  rð   rÐ  rC   rÆ  r†  s      €€€€€€€€€€€€rD   Ú_do_subscribez,AsyncClient.subscribe.<locals>._do_subscribe±  s4  øè è € ØŸ;š;ØØØØØ!ØØ+ð 'ñ ô ð ð ð ð ð ð ˆFð #ˆJ�q‰MàÐ%Ø#˜ FÔ$5Ñ6Ô6�ÝÔ& vÑ.Ô.ð !Ø �L�L�L�L�L�L�LàÐ*Ø#)×#5Ò#5À	Ð#5Ñ#JÔ#Jð %ð %ð %ð %ð %ð %ð %˜%Ø,˜_¨UÑ3Ô3�FÝÔ*¨6Ñ2Ô2ð %Ø$˜˜˜˜˜˜˜øð $Kð
  Ÿš™œÐ%Ð%Ð%Ð%Ð%Ð%Ð%s   Á1B r–  r   ©rÃ   r4  r�  )	ÚwarningsÚwarnÚUserWarningr�   Úwait_forÚTimeoutErrorr4  r{  r1  )rC   r‡  rÃ  rð   rÇ  r†  rÖ  r×  rÐ  rj   rÆ  rØ  rè  Úer4  rr  rç  s   ```````````     @rD   Ú	subscribezAsyncClient.subscribe‹  s±  øøøøøøøøøøøøè è € ð2 Ð%ØÐ$Ø .��Ø Ò/Ð/Ý”ðg mð gð gÐWeð gð gð gåØ ð	ñ ô ð ð ;?¸ˆ
ð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð2 Ð!Ø&˜™œÐ(Ð(Ð(Ð(Ð(Ð(Ð(ð	Ý Ô)¨-¨-©/¬/À>ÐRÑRÔRÐRÐRÐRÐRÐRÐRÐRøÝÔ#ð 
	ð 
	ð 
	ØˆJØ ”]ˆFØÐ!Ø#Ô.�
Ý1°&Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9å'Ø&Ø%ðñ ô ð ðøøøøð
	øøøs   Á&#B
 Â
CÂ:CÃCr4  c                óD   — t                                | j        ||¦  «        S r?   )ry  rƒ  r•   ©rC   r‡  r4  s      rD   Ú
get_handlezAsyncClient.get_handleÛ  s   € Ý!×1Ò1°$´,ÀÈZÑXÔXÐXrF   r…  rB  c             ƒ  ój   K  — |                       ||¦  «        }|                     |¬¦  «        ƒ d {V —†S ©Nr…  ©ró  r[  ©rC   r‡  r4  r†  rr  s        rD   r[  zAsyncClient.statusÞ  sA   è è € ð —’ ¨jÑ9Ô9ˆØ—]’]¨Y�]Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7rF   c              ƒ  óf   K  — |                       ||¦  «        }|                     ¦   «         ƒ d {V —†S r?   ©ró  r<  ©rC   r‡  r4  rr  s       rD   r¸   zAsyncClient.resultä  s9   è è € Ø—’ ¨jÑ9Ô9ˆØ—Z’Z‘\”\Ð!Ð!Ð!Ð!Ð!Ð!Ð!rF   rO   c              ƒ  ój   K  — |                       ||¦  «        }|                     ¦   «         ƒ d {V —† d S r?   ©ró  rv  rú  s       rD   rv  zAsyncClient.cancelè  s?   è è € Ø—’ ¨jÑ9Ô9ˆØ�mŠm‰oŒoÐÐÐÐÐÐÐÐÐrF   ú/stream©rð   rÃ   úfloat | NoneúAsyncIterator[dict[str, Any]]c              óL  K  — t           |z   }|r|d|                     d¦  «        z   z  }t          | j        d|||¬¦  «        4 ƒd{V —†	 }|                     ¦   «         2 3 d{V —†}|                     ¦   «         W V — Œ6 	 ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS ©ay  Stream the output of an application with the given arguments (which will be JSON serialized). This is only supported
        at a few select applications at the moment, so be sure to first consult with the documentation of individual applications
        to see if this is supported.

        The function will iterate over each event that is streamed from the server.
        r,   r²   )rk   rÃ   N)rË  rŒ  r   r•   Ú	aiter_sserk   ©rC   r‡  rÃ  rð   rÃ   r·   Úeventsræ  s           rD   ÚstreamzAsyncClient.streamì  st  è è € õ ˜{Ñ*ˆØð 	*Ø�3˜Ÿš SÑ)Ô)Ñ)Ñ)ˆCåØŒLØØØØð
ñ 
ô 
ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð Ø%×/Ò/Ñ1Ô1ð #ð #ð #ð #ð #ð #ð #�eØ—j’j‘l”lÐ"Ð"Ð"Ð"Ð"ð  2Ð1ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   Á
BÁA>Á%BÂ
BÂ B©r>  r@  ru   ústr | bytesrŠ   rŒ   r>  r?  r@  rA  c             ƒ  óN  K  — |                       ¦   «         }t          |t          ¦  «        r|                     d¦  «        }t	          ||¦  «        }t          |¦  «        t          k    rT|d         dk    rH|€d}|                      ¦   «         ƒ d{V —†}t           	                    || j
        |||¬¦  «        ƒ d{V —†S d|i}	|�||	d<   g }
|D ]Å}|dk    rH|                      ¦   «         ƒ d{V —†}|
                     dt          t          |||	¬	¦  «        f¦  «         ŒP|d
k    r5|
                     d
t          t          | j        ||||¬¦  «        f¦  «         Œ‹|dk    r4|
                     dt          t           | j        ||||¬¦  «        f¦  «         ŒÆt#          |
¦  «        ƒ d{V —†S ©z¶Upload the given data blob to the CDN and return the access URL. The content type should be specified
        as the second argument. Use upload_file or upload_image for convenience.úutf-8r   r)   NrK  )rs   rŽ   rŒ   ru   rŠ   rY   r³   )ru   rj   r*   )ru   rŠ   rŒ   r+   )r°  r:  r7   r¼  rI  rÕ   ÚMULTIPART_THRESHOLDr½  rü   rá   r–   rÇ   r   rb  rd  r•   rW  rq  ©rC   ru   rŠ   rŒ   r>  r@  rN   Úrepository_chainrs   rj   re  Úrepos               rD   ÚuploadzAsyncClient.upload	  sL  è è € ð �~Š~ÑÔˆå�d�CÑ Ô ð 	(Ø—;’;˜wÑ'Ô'ˆDå9ØÐ+ñ
ô 
Ðõ ˆt‰9Œ9Õ*Ò*Ð*Ð/?ÀÔ/BÀhÒ/NÐ/NØÐ Ø(�	Ø×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1ˆFÝ-×2Ò2ØØ"Ô1Ø#ØØ)ð 3ñ ô ð ð ð ð ð ð ð ð " <Ð0ˆØÐ Ø)2ˆGÐ%Ñ&à8:ˆØ$ð $	ð $	ˆDØ�xÒÐØ#×3Ò3Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5�Ø—’à ÝÕ 0°&¸tÈWÐUÑUÔUðñô ð ð ð ˜’�Ø—’àÝÝ-Ø œLØ Ø!%Ø)5Ø&/ðñ ô ð
ñô ð ð ð ˜’�Ø—’àÝÝ5Ø œLØ Ø!%Ø)5Ø&/ðñ ô ð
ñô ð øõ 5°XÑ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>rF   úos.PathLikec             ƒ  óV  K  — t          j        |¦  «        \  }}|€d}t          ||¦  «        }t          j                             |¦  «        t          k    r\|d         dk    rP|                      ¦   «         ƒ d{V —†}t           	                    t          |¦  «        || j        |¬¦  «        ƒ d{V —†S t          |d¦  «        5 }|                      |                     ¦   «         |t          j                             |¦  «        ||¬¦  «        ƒ d{V —†cddd¦  «         S # 1 swxY w Y   dS ©zMUpload a file from the local filesystem to the CDN and return the access URL.Nr“   r   r)   )râ   rs   rŽ   rŠ   rè   )rŒ   r>  r@  )Ú	mimetypesÚ
guess_typerI  rï   rð   rò   r  r½  rü   rô   r7   r–   rê   r  rì   rñ   ©	rC   rð   r>  r@  Ú	mime_typer˜  r  rs   Úfiles	            rD   Úupload_filezAsyncClient.upload_fileX  sª  è è € õ !Ô+¨DÑ1Ô1‰ˆ	�1ØÐØ2ˆIå9ØÐ+ñ
ô 
Ðõ ŒG�OŠO˜DÑ!Ô!Õ$7Ò7Ð7Ø  Ô# xÒ/Ð/à×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1ˆFÝ-×7Ò7Ý˜d™)œ)ØØ"Ô1Ø&ð	 8ñ ô ð ð ð ð ð ð ð õ �$˜ÑÔð 	 ØŸšØ—	’	‘”ØÝœ'×*Ò*¨4Ñ0Ô0Ø%Ø$7ð %ñ ô ð ð ð ð ð ð ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÃADÄD"Ä%D"ÚjpegÚimageúImage.ImageÚformatc             ƒ  óö   K  — t          j        ¦   «         5 }|                     ||¬¦  «         |                      |                     ¦   «         d|› �||¬¦  «        ƒ d{V —†cddd¦  «         S # 1 swxY w Y   dS ©zBUpload a pillow image object to the CDN and return the access URL.©r  úimage/r  N©ÚioÚBytesIOrá   r  Úgetvalue©rC   r  r  r>  r@  Úbuffers         rD   Úupload_imagezAsyncClient.upload_image  sÝ   è è € õ ŒZ‰\Œ\ð 	˜VØ�JŠJ�v fˆJÑ-Ô-Ð-ØŸšØ—’Ñ!Ô!Ø!˜Ð!Ð!Ø%Ø$7ð	 %ñ ô ð ð ð ð ð ð ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   –AA.Á.A2Á5A2Tú	/realtime©Úuse_jwtrð   r†  r¿  r¹  r«  r+  r†  r�   r¹  rº  r«  r¬  ú&AsyncIterator[AsyncRealtimeConnection]c              ó`  K  — d }d }	|r|                       ||¬¦  «        ƒ d {V —†}	n#|                      ¦   «         }
|
j        t          dœ}t	          ||	||¬¦  «        }t          ||¬¦  «        4 ƒd {V —†}t          |||¬¦  «        W V — d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S ©Nr¾  r¬   r’  r´   )rÁ  rÂ  )rÄ  r°  rc   rº  r”  rý  ræ  ©rC   r‡  r+  rð   r†  r¿  r¹  r«  rj   r8   rN   r·   rø  s                rD   r‘  zAsyncClient.realtime”  s�  è è € ð *.ˆØ ˆØð 	UØ×2Ò2ØÐ.>ð 3ñ ô ð ð ð ð ð ð ˆEˆEð —>’>Ñ#Ô#ˆDØ(,Ô(9ÍÐTÐTˆGå! +¨u°mÈ$ÐOÑOÔOˆÝ$ S°'Ð:Ñ:Ô:ð 	ð 	ð 	ð 	ð 	ð 	ð 	¸bÝ)Ø NÀNðñ ô ð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á4BÂ
B'Â*B'©r+  rð   r†  r¿  rú  c              ó@  K  — d }d }|r|                       ||¬¦  «        ƒ d {V —†}n#|                      ¦   «         }|j        t          dœ}t	          ||||¬¦  «        }	t          |	|¬¦  «        4 ƒd {V —†}
|
W V — d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S ©Nr¾  r¬   r…  r´   )rÄ  r°  rc   rº  r�  rý  ©rC   r‡  r+  rð   r†  r¿  rj   r8   rN   r·   rø  s              rD   Ú
ws_connectzAsyncClient.ws_connect°  sw  è è € ð *.ˆØ ˆØð 	UØ×2Ò2ØÐ.>ð 3ñ ô ð ð ð ð ð ð ˆEˆEð —>’>Ñ#Ô#ˆDØ(,Ô(9ÍÐTÐTˆGå"ØØØØ'ð	
ñ 
ô 
ˆõ % S°'Ð:Ñ:Ô:ð 	ð 	ð 	ð 	ð 	ð 	ð 	¸bØˆHˆHˆHˆHð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á4BÂ
BÂB©r<   r   rõ   )r<   r   )r<   rý   ©r‡  r7   r¿  r»   r<   r7   ©r‡  r7   rÃ  rY  rð   r7   rÃ   rÈ  rÆ  rÈ  rÇ  r�   rj   r¨   r<   rY  )r‡  r7   rÃ  rY  rð   r7   rÇ  r�   rÏ  r�   rÐ  rÑ  rj   r¨   rÆ  rÈ  r<   ry  )r‡  r7   rÃ  rY  rð   r7   rÇ  r�   r†  r=   rÖ  rÙ  r×  rÚ  rÐ  rÑ  rj   r¨   rÆ  rÈ  rØ  rÈ  r<   rY  )r‡  r7   r4  r7   r<   ry  ©r‡  r7   r4  r7   r†  r=   r<   rB  ©r‡  r7   r4  r7   r<   rY  ©r‡  r7   r4  r7   r<   rO   )
r‡  r7   rÃ  rY  rð   r7   rÃ   rÿ  r<   r   r?   ©ru   r  rŠ   r7   rŒ   r�   r>  r?  r@  rA  r<   r7   ©rð   r  r>  r?  r@  rA  r<   r7   ©r  ©
r  r  r  r7   r>  r?  r@  rA  r<   r7   )r‡  r7   r+  r=   rð   r7   r†  r�   r¿  r»   r¹  rº  r«  r¬  r<   r,  )r‡  r7   r+  r=   rð   r7   r†  r�   r¿  r»   r<   rú  )rG   rH   rI   r
   r5  rJ   r¨  r   rZ   r°  rµ  r–   r•   r½  Ú!REALTIME_TOKEN_EXPIRATION_SECONDSrÄ  rÍ  rÙ   rð  ró  r[  r¸   rv  r  r  r  r(  r   r‘  r4  rK   rF   rD   rƒ   rƒ   à  sC  € € € € € € à�e D¨uÐ5Ñ5Ô5€CÐ5Ð5Ð5Ñ5Ø"€OÐ"Ð"Ð"Ñ"àð0ð 0ð 0ñ „_ð0ð
ð ð ð ðð ð ð ð ð6ð 6ð 6ñ „_ð6ð ð
ð 
ð 
ñ „_ð
ð
ð 
ð 
ð 
ð !Bð	6ð 6ð 6ð 6ð 6ð 6ð. Ø/3Ø59ØØ"$ð,ð ,ð ,ð ,ð ,ð ,ðf ØØ"&Ø'+Ø"$Ø59ð:
ð :
ð :
ð :
ð :
ð :
ðB ØØØHLØPTØ'+Ø"$Ø59Ø6:ðNð Nð Nð Nð Nð Nð`Yð Yð Yð Yð GLð8ð 8ð 8ð 8ð 8ð 8ð"ð "ð "ð "ðð ð ð ð Ø $ð#ð #ð #ð #ð #ð #ðB !%ð	M?ð 15ð ðM?ð M?ð M?ð M?ð M?ð M?ðf 15ð ð%ð %ð %ð %ð %ð %ðT ðð
 15ð ðð ð ð ð ð ð* ð
 ØØ$(Ø AØ8<Ø8<ðð ð ð ð ñ Ôðð6 ð
 ØØ$(Ø Aðð ð ð ð ñ Ôðð ð rF   rƒ   c            
      óÎ  — e Zd ZU  edd¬¦  «        Zded<   dZded<   edcd„¦   «         Zdcd„Z	ddd„Z
eded„¦   «         Zedfd„¦   «         Zedgd„¦   «         Zded„Zedœdhd„Zddddi dœdid&„Zddddi dd'œdjd,„Zddddddi ddd-œ	dkd5„Zdld7„Zdd8œdmd:„Zdnd;„Zdod=„Zd>dd?œdpdB„Z	 dqdddCœdrdL„ZdddCœdsdN„Z	 dtdddCœdudS„ZedTdUdedddVœdvd_„¦   «         ZedTdded`œdwdb„¦   «         ZdS )xÚ
SyncClientNFr§  r�   r5  r  r2  r¨  r<   r   c                óV   — | j         €t          ¦   «         S t          d| j         ¦  «        S rª  r¬  rB   s    rD   rZ   zSyncClient._authÓ  r­  rF   c                ó   — | j         S r?   r¯  rB   s    rD   r°  zSyncClient._get_authÙ  r±  rF   r7   c                ó�   — |                       ¦   «         }|j                             ¦   «         dk    rt          d¦  «        ‚|j        S r³  r´  re   s     rD   rµ  zSyncClient._get_keyÜ  r¶  rF   r�   c                ó|   — |                       ¦   «         }t          j        |j        t          dœ| j        d¬¦  «        S )Nr¬   T)rj   rÃ   Úfollow_redirects)r°  rm   rn   rc   rº  r¨  re   s     rD   r•   zSyncClient._clientä  sH   € à�~Š~ÑÔˆÝŒ|à!%Ô!2Ý(ðð ð Ô(Ø!ð
ñ 
ô 
ð 	
rF   rM   c                óD   — t          |                      ¦   «         ¦  «        S r?   )rM   r°  rB   s    rD   r–   zSyncClient._token_managerð  s   € å˜tŸ~š~Ñ/Ô/Ñ0Ô0Ð0rF   ú%concurrent.futures.ThreadPoolExecutorc                ó   — t           S r?   )ÚEXECUTORrB   s    rD   Ú	_executorzSyncClient._executorô  s   € åˆrF   c                ó˜   — | j                              ¦   «         }t          j        |j        › d|j        › �t          dœ| j        ¬¦  «        S r¼  )r–   ry   rm   rn   r9   r8   rº  r¨  r®   s     rD   r½  zSyncClient._get_cdn_clientø  sZ   € ØÔ#×-Ò-Ñ/Ô/ˆÝŒ|à$)Ô$4Ð!DÐ!D°u´{Ð!DÐ!DÝ(ðð ð Ô(ð
ñ 
ô 
ð 	
rF   r¾  r‡  r¿  r»   c               óÊ   — t                                |¦  «        j        g|dœ}t          | j        dt
          › d�|¬¦  «        }t          |                     ¦   «         ¦  «        S rÁ  )rm  rx  ro  r¶   r•   ra   r—  rk   rÃ  s        rD   rÄ  zSyncClient._get_realtime_token  so   € õ #×3Ò3°KÑ@Ô@ÔFÐGØ 0ð
ð 
ˆõ (ØŒLØÝÐ!Ð!Ð!Øð	
ñ 
ô 
ˆõ % X§]¢]¡_¤_Ñ5Ô5Ð5rF   rR   rÅ  rÃ  rY  rð   rÃ   rÈ  rÆ  rÇ  rj   r¨   c               ó  — t           |z   }|r|d|                     d¦  «        z   z  }i |¥}	|�t          ||	¦  «         |�t          ||	¦  «         t	          | j        d||||	¬¦  «        }
t          |
¦  «         |
                     ¦   «         S )aÔ  Run an application with the given arguments (which will be JSON serialized).

        Args:
            timeout: Client-side HTTP timeout in seconds. Controls how long the HTTP
                client waits for a response. Defaults to the client's default_timeout.
            start_timeout: Server-side request timeout in seconds. Limits total time spent
                waiting before processing starts. Does not apply once the application begins processing.
        r,   Nr²   rÊ  )rË  rŒ  r#   r"   r¶   r•   r@  rk   rÌ  s              rD   rÍ  zSyncClient.run  s¬   € õ( ˜{Ñ*ˆØð 	*Ø�3˜Ÿš SÑ)Ô)Ñ)Ñ)ˆCà#. g ;ˆØÐÝ˜D (Ñ+Ô+Ð+àÐ$Ý˜}¨hÑ7Ô7Ð7å'ØŒLØØØØØð
ñ 
ô 
ˆõ 	˜(Ñ#Ô#Ð#Ø�}Š}‰ŒÐrF   rÎ  rÏ  rÐ  rÑ  rs  c               óÜ  — t           |z   }	|r|	d|                     d¦  «        z   z  }	|�|	dt          d|i¦  «        z   z  }	i |¥}
|�t          ||
¦  «         |�t	          ||
¦  «         |�t          ||
¦  «         t          | j        d|	|| j        |
¬¦  «        }t          |¦  «         | 
                    ¦   «         }t          |d         |d         |d	         |d
         | j        ¬¦  «        S )ag  Submit an application with the given arguments (which will be JSON serialized).

        Args:
            start_timeout: Server-side request timeout in seconds. Limits total time spent
                waiting before processing starts (includes queue wait, retries, and
                routing). Does not apply once the application begins processing.
        r,   NrŠ  rÓ  r²   rÊ  r4  rV  rW  rX  r  )r�  rŒ  r   r#   r!   r"   r¶   r•   r¨  r@  rk   rs  rÔ  s                rD   rÙ   zSyncClient.submit>  s"  € õ(  Ñ,ˆØð 	*Ø�3˜Ÿš SÑ)Ô)Ñ)Ñ)ˆCàÐ"Ø�3� M°;Ð#?Ñ@Ô@Ñ@Ñ@ˆCà#. g ;ˆàÐÝ˜D (Ñ+Ô+Ð+àÐÝ ¨(Ñ3Ô3Ð3àÐ$Ý˜}¨hÑ7Ô7Ð7å'ØŒLØØØØÔ(Øð
ñ 
ô 
ˆõ 	˜(Ñ#Ô#Ð#à�}Š}‰ŒˆÝ Ø˜LÔ)Ø˜nÔ-Ø˜LÔ)Ø˜LÔ)Ø”<ð
ñ 
ô 
ð 	
rF   rÕ  r†  r=   rÖ  úOptional[Callable[[str], None]]r×  ú"Optional[Callable[[Status], None]]rØ  c       	        ó¼  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡— |�.‰
€|Š
n)‰
|k    r#t          j        d‰
› d|› d�t          d¬¦  «         dgŠdˆˆˆˆ	ˆˆˆˆˆˆ ˆ
ˆfd	„}|€
 |¦   «         S ‰ j                             |¦  «        }	 |                     |¬
¦  «        S # t          j        j        $ r9}d}‰d         }|�|j	        }t          |¦  «         t          ||¬¦  «        |‚d}~ww xY w)rÜ  NrÝ  rÞ  rß  rs  rà  r<   rY  c            	     óÞ   •— ‰                      ‰‰‰	‰‰
‰‰¬¦  «        } | ‰d<   ‰� ‰| j        ¦  «         ‰�$|                      ‰¬¦  «        D ]} ‰|¦  «         Œ|                      ¦   «         S rã  )rÙ   r4  r”  r<  )rr  ræ  r‡  rÃ  rç  rj   rÇ  rÖ  r×  rð   rÐ  rC   rÆ  r†  s     €€€€€€€€€€€€rD   rè  z+SyncClient.subscribe.<locals>._do_subscribe�  s›   ø€ Ø—[’[ØØØØØ!ØØ+ð !ñ ô ˆFð #ˆJ�q‰MàÐ%Ø�
˜6Ô,Ñ-Ô-Ð-àÐ*Ø#×/Ò/¸)Ð/ÑDÔDð +ð +�EØ#�O EÑ*Ô*Ð*Ð*à—:’:‘<”<ÐrF   r–  r   ré  r�  )rê  rë  rì  rK  rÙ   r¸   rÜ   rÖ   rî  r4  rx  r1  )rC   r‡  rÃ  rð   rÇ  r†  rÖ  r×  rÐ  rj   rÆ  rØ  rè  rà   rï  r4  rr  rç  s   ```````````      @rD   rð  zSyncClient.subscribew  s‡  øøøøøøøøøøøø€ ð2 Ð%ØÐ$Ø .��Ø Ò/Ð/Ý”ðg mð gð gÐWeð gð gð gåØ ð	ñ ô ð ð :>¸ˆ
ð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð* Ð!Ø �=‘?”?Ð"à”×&Ò& }Ñ5Ô5ˆð	Ø—=’=¨�=Ñ8Ô8Ð8øÝÔ!Ô.ð 
	ð 
	ð 
	ØˆJØ ”]ˆFØÐ!Ø#Ô.�
Ý% fÑ-Ô-Ð-å'Ø&Ø%ðñ ô ð ðøøøøð
	øøøs   Á8B ÂCÂ"4CÃCr4  c                óD   — t                                | j        ||¦  «        S r?   )rs  rƒ  r•   rò  s      rD   ró  zSyncClient.get_handleÄ  s   € Ý ×0Ò0°´¸{ÈJÑWÔWÐWrF   r…  rB  c               óZ   — |                       ||¦  «        }|                     |¬¦  «        S rõ  rö  r÷  s        rD   r[  zSyncClient.statusÇ  s+   € ð —’ ¨jÑ9Ô9ˆØ�}Š} yˆ}Ñ1Ô1Ð1rF   c                óV   — |                       ||¦  «        }|                     ¦   «         S r?   rù  rú  s       rD   r¸   zSyncClient.resultÍ  s#   € Ø—’ ¨jÑ9Ô9ˆØ�zŠz‰|Œ|ÐrF   rO   c                óZ   — |                       ||¦  «        }|                     ¦   «          d S r?   rü  rú  s       rD   rv  zSyncClient.cancelÑ  s&   € Ø—’ ¨jÑ9Ô9ˆØ�Š‰ŒˆˆˆrF   rý  rþ  rÿ  úIterator[dict[str, Any]]c             #  ó  K  — t           |z   }|r|d|                     d¦  «        z   z  }t          | j        d|||¬¦  «        5 }|                     ¦   «         D ]}|                     ¦   «         V — Œ	 ddd¦  «         dS # 1 swxY w Y   dS r  )rË  rŒ  r   r•   Úiter_sserk   r  s           rD   r  zSyncClient.streamÕ  sî   è è € õ ˜{Ñ*ˆØð 	*Ø�3˜Ÿš SÑ)Ô)Ñ)Ñ)ˆCåØŒL˜& #¨I¸wð
ñ 
ô 
ð 	#àØŸšÑ*Ô*ð #ð #�Ø—j’j‘l”lÐ"Ð"Ð"Ð"ð#ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   Á.A?Á?BÂBr  ru   r  rŠ   rŒ   r>  r?  r@  rA  c               ó  — |                       ¦   «         }t          |t          ¦  «        r|                     d¦  «        }t	          ||¦  «        }t          |¦  «        t          k    rH|d         dk    r<|€d}|                      ¦   «         }t           	                    || j
        |||¬¦  «        S d|i}	|�||	d<   g }
|D ]¿}|dk    rB|                      ¦   «         }|
                     dt          t          |||	¬	¦  «        f¦  «         ŒJ|d
k    r5|
                     d
t          t          | j        ||||¬¦  «        f¦  «         Œ…|dk    r4|
                     dt          t           | j        ||||¬¦  «        f¦  «         ŒÀt#          |
¦  «        S r
  )r°  r:  r7   r¼  rI  rÕ   r  r½  r‡   rá   r–   rÇ   r   r\  r`  r•   rU  rm  r  s               rD   r  zSyncClient.uploadî  só  € ð �~Š~ÑÔˆå�d�CÑ Ô ð 	(Ø—;’;˜wÑ'Ô'ˆDå9ØÐ+ñ
ô 
Ðõ ˆt‰9Œ9Õ*Ò*Ð*Ð/?ÀÔ/BÀhÒ/NÐ/NØÐ Ø(�	Ø×)Ò)Ñ+Ô+ˆFÝ"×'Ò'ØØ"Ô1Ø#ØØ)ð (ñ ô ð ð " <Ð0ˆØÐ Ø)2ˆGÐ%Ñ&à8:ˆØ$ð $	ð $	ˆDØ�xÒÐØ×-Ò-Ñ/Ô/�Ø—’à Ý¥
¨F¸ÀwÐOÑOÔOðñô ð ð ð ˜’�Ø—’àÝÝ'Ø œLØ Ø!%Ø)5Ø&/ðñ ô ð
ñô ð ð ð ˜’�Ø—’àÝÝ/Ø œLØ Ø!%Ø)5Ø&/ðñ ô ð
ñô ð øõ )¨Ñ2Ô2Ð2rF   r  c               ó.  — t          j        |¦  «        \  }}|€d}t          ||¦  «        }t          j                             |¦  «        t          k    rP|d         dk    rD|                      ¦   «         }t           	                    t          |¦  «        || j        |¬¦  «        S t          |d¦  «        5 }|                      |                     ¦   «         |t          j                             |¦  «        ||¬¦  «        cddd¦  «         S # 1 swxY w Y   dS r  )r  r  rI  rï   rð   rò   r  r½  r‡   rô   r7   r–   rê   r  rì   rñ   r  s	            rD   r  zSyncClient.upload_file=	  sX  € õ !Ô+¨DÑ1Ô1‰ˆ	�1ØÐØ2ˆIå9ØÐ+ñ
ô 
Ðõ ŒG�OŠO˜DÑ!Ô!Õ$7Ò7Ð7Ø  Ô# xÒ/Ð/à×)Ò)Ñ+Ô+ˆFÝ"×,Ò,Ý˜d™)œ)ØØ"Ô1Ø&ð	 -ñ ô ð õ �$˜ÑÔð 	 Ø—;’;Ø—	’	‘”ØÝœ'×*Ò*¨4Ñ0Ô0Ø%Ø$7ð ñ ô ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Â4A	D
Ä
DÄDr  r  r  r  c               óæ   — t          j        ¦   «         5 }|                     ||¬¦  «         |                      |                     ¦   «         d|› �||¬¦  «        cddd¦  «         S # 1 swxY w Y   dS r  r"  r&  s         rD   r(  zSyncClient.upload_imaged	  s»   € õ ŒZ‰\Œ\ð 	˜VØ�JŠJ�v fˆJÑ-Ô-Ð-Ø—;’;Ø—’Ñ!Ô!Ø!˜Ð!Ð!Ø%Ø$7ð	 ñ ô ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ”AA&Á&A*Á-A*Tr)  r*  r+  r†  r�   r¹  rº  r«  r¬  úIterator[RealtimeConnection]c             #  ó.  K  — d }d }	|r|                       ||¬¦  «        }	n#|                      ¦   «         }
|
j        t          dœ}t	          ||	||¬¦  «        }t          ||¬¦  «        5 }t          |||¬¦  «        V — d d d ¦  «         d S # 1 swxY w Y   d S r.  )rÄ  r°  rc   rº  r”  rù  r¿  r/  s                rD   r‘  zSyncClient.realtimey	  s  è è € ð *.ˆØ ˆØð 	UØ×,Ò,ØÐ.>ð -ñ ô ˆEˆEð —>’>Ñ#Ô#ˆDØ(,Ô(9ÍÐTÐTˆGå! +¨u°mÈ$ÐOÑOÔOˆÝ˜c¨7Ð3Ñ3Ô3ð 	°rÝ$Ø NÀNðñ ô ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á(B
Â
BÂBr0  rï  c             #  ó  K  — d }d }|r|                       ||¬¦  «        }n#|                      ¦   «         }|j        t          dœ}t	          ||||¬¦  «        }	t          |	|¬¦  «        5 }
|
V — d d d ¦  «         d S # 1 swxY w Y   d S r2  )rÄ  r°  rc   rº  r�  rù  r3  s              rD   r4  zSyncClient.ws_connect•	  sý   è è € ð *.ˆØ ˆØð 	UØ×,Ò,ØÐ.>ð -ñ ô ˆEˆEð —>’>Ñ#Ô#ˆDØ(,Ô(9ÍÐTÐTˆGå"ØØØØ'ð	
ñ 
ô 
ˆõ ˜c¨7Ð3Ñ3Ô3ð 	°rØˆHˆHˆHð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á(A:Á:A>ÂA>r5  rõ   )r<   r�   )r<   rM   )r<   rH  r6  r7  )r‡  r7   rÃ  rY  rð   r7   rÇ  r�   rÏ  r�   rÐ  rÑ  rj   r¨   rÆ  rÈ  r<   rs  )r‡  r7   rÃ  rY  rð   r7   rÇ  r�   r†  r=   rÖ  rP  r×  rQ  rÐ  rÑ  rj   r¨   rÆ  rÈ  rØ  rÈ  r<   rY  )r‡  r7   r4  r7   r<   rs  r8  r9  r:  )
r‡  r7   rÃ  rY  rð   r7   rÃ   rÿ  r<   rX  r?   r;  r<  r=  r>  )r‡  r7   r+  r=   rð   r7   r†  r�   r¿  r»   r¹  rº  r«  r¬  r<   r^  )r‡  r7   r+  r=   rð   r7   r†  r�   r¿  r»   r<   rï  ) rG   rH   rI   r
   r5  rJ   r¨  r   rZ   r°  rµ  r•   r–   rù   rK  r½  r?  rÄ  rÍ  rÙ   rð  ró  r[  r¸   rv  r  r  r  r(  r   r‘  r4  rK   rF   rD   rA  rA  Î  s`  € € € € € € à�e D¨uÐ5Ñ5Ô5€CÐ5Ð5Ð5Ñ5Ø"€OÐ"Ð"Ð"Ñ"àð0ð 0ð 0ñ „_ð0ð
ð ð ð ðð ð ð ð ð	
ð 	
ð 	
ñ „_ð	
ð ð1ð 1ð 1ñ „_ð1ð ðð ð ñ „Xðð
ð 
ð 
ð 
ð !Bð	6ð 6ð 6ð 6ð 6ð 6ð. Ø/3Ø59ØØ"$ð(ð (ð (ð (ð (ð (ð^ ØØ"&Ø'+Ø"$Ø59ð7
ð 7
ð 7
ð 7
ð 7
ð 7
ð| ØØØ6:Ø>BØ'+Ø"$Ø59Ø6:ðKð Kð Kð Kð Kð KðZXð Xð Xð Xð GLð2ð 2ð 2ð 2ð 2ð 2ðð ð ð ðð ð ð ð Ø $ð#ð #ð #ð #ð #ð #ð: !%ð	M3ð 15ð ðM3ð M3ð M3ð M3ð M3ð M3ðf 15ð ð%ð %ð %ð %ð %ð %ðT ðð
 15ð ðð ð ð ð ð ð* ð
 ØØ$(Ø AØ8<Ø8<ðð ð ð ð ñ „^ðð6 ð
 ØØ$(Ø Aðð ð ð ð ñ „^ðð ð rF   rA  r  c                ó®   — t          | t          ¦  «        r|                      d¦  «        } d|› dt          j        | ¦  «                             ¦   «         › �S )zIEncode the given data blob to a data URL with the specified content type.r  zdata:z;base64,)r:  r7   r¼  Úbase64Ú	b64encoder¶  )ru   rŠ   s     rD   r¼  r¼  ³	  sR   € å�$�ÑÔð $Ø�{Š{˜7Ñ#Ô#ˆàJ�<ÐJÐJ­Ô)9¸$Ñ)?Ô)?×)FÒ)FÑ)HÔ)HÐJÐJÐJrF   r  c                óÐ   — t          j        | ¦  «        \  }}|€d}t          | d¦  «        5 }t          |                     ¦   «         |¦  «        cddd¦  «         S # 1 swxY w Y   dS )zUEncode a file from the local filesystem to a data URL with the inferred content type.Nr“   rè   )r  r  rê   r¼  rì   )rð   r  r˜  r  s       rD   Úencode_filere  »	  s§   € åÔ'¨Ñ-Ô-�L€IˆqØÐØ.ˆ	å	ˆd�DÑ	Ô	ð .˜TÝ�d—i’i‘k”k 9Ñ-Ô-ð.ð .ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s   ¬"AÁAÁ"Ar  r  r  r  c                óÔ   — t          j        ¦   «         5 }|                      ||¬¦  «         t          |                     ¦   «         d|› �¦  «        cddd¦  «         S # 1 swxY w Y   dS )zEEncode a pillow image object to a data URL with the specified format.r   r!  N)r#  r$  rá   r¼  r%  )r  r  r'  s      rD   Úencode_imagerg  Å	  s¥   € å	Œ‰Œð <˜Ø�
Š
�6 &ˆ
Ñ)Ô)Ð)Ý�f—o’oÑ'Ô'Ð):°&Ð):Ð):Ñ;Ô;ð<ð <ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <s   ”<AÁA!Á$A!)rt   r,  r<   rO   )rc  r7   r<   r7   )rj  rm  r<   r7   )r  r�   r<   r�   )
r‡  r7   r8   r�   rð   r7   r†  r�   r<   r7   )
r‡  r7   r8   r�   r†  r�   rð   r7   r<   r7   )ru   r   r<   r7   )r)  r¼   r<   r   )r)  r   r<   r¼   )r)  r   r«  r¬  r<   r­  )r)  rM  r¹  rº  r<   r¼   r?   )r·   r7   rj   rî  r<   rï  )r·   r7   rj   rî  r<   rú  )
rs   r�   rþ  r7   r·   r7   rÿ  r   r<   r,  )
rs   rý   rþ  r7   r·   r7   rÿ  r   r<   r,  )rt   r,  r<   r=   )rt   r,  r  r  r<   r=   )r=  rÏ  r  r  r<   r=   )r  F)r  r»   r  r2  r  r2  r  r  r  r=   r<   r2  )rs   r�   rþ  r7   r·   r7   r  r  rÿ  r   r<   r,  )rs   rý   rþ  r7   r·   r7   r  r  rÿ  r   r<   r,  )rN   r   r<   r7   )rN   r   rŠ   r7   rŒ   r�   r<   r¨   )rN   r   r<   r¨   )r>  r?  r@  rA  r<   r0   )rŒ   r�   rŠ   r7   r<   r¨   )rs   r�   rN   r   ru   r¼   rŠ   r7   rŒ   r�   r<   r7   )rs   rý   rN   r   ru   r¼   rŠ   r7   rŒ   r�   r<   r7   )rs   r�   ru   r¼   rj   r¨   r<   r7   )rs   rý   ru   r¼   rj   r¨   r<   r7   )re  rf  r<   r7   )re  rn  r<   r7   )rr  rs  r<   rO   )rr  ry  r<   rO   )ru   r  rŠ   r7   r<   r7   )rð   r  r<   r7   r=  )r  r  r  r7   r<   r7   )§Ú
__future__r   rä  r#  rk   rÓ   rï   r  r�   Úpathlibr   r  r/  rb  r^   ÚloggingrÒ   rÜ   Ú
contextlibr   r   r   r   Údataclassesr	   r
   Ú	functoolsr   r   Útypingr   r   r   r   r   r   r   r   r   r   Úurllib.parser   rê  rm   Ú	httpx_sser   r   Úfal_client.authr   r   r   r   r   Úfal_client._versionr   Úfal_client._headersr    r!   r"   r#   r$   r%   Úwebsockets.clientr&   Úwebsockets.sync.connectionr'   Ú	getLoggerrG   r-  ÚPILr(   r7   rY  r.   rË  r�  r‹  ra   rZ  Úenvironr<  r^  r/   rJ   r1   rº  ÚMIN_REQUEST_TIMEOUT_SECONDSrÖ   r×   rJ  r6   rM   r   r  r—   r˜   r‡   rü   rÏ  r%  r(  rî  r1  r@  rB  rD  rH  rL  rS  ru  rk  rm  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  ÚTimeoutrŒ  r  r  r  r"  r¶   r  r9  r;  r=  rI  rM  rU  rW  r\  r`  rb  rd  rm  rq  rx  r{  rs  ry  rƒ   rA  r¼  re  rg  rK   rF   rD   ú<module>r{     sU  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "Ø €€€à €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 6Ø9Ð9Ð9Ð9Ð9Ð9Ø5Ð5Ð5Ð5Ð5Ð5à	ˆÔ	˜8Ñ	$Ô	$€àð ØÐÐÐÐÐà
ˆs�CˆxŒ.€ØÐ3Ô4Ð à+˜LÐ+Ð+Ð+€Ø3Ð0Ð3Ð3Ð3Ð Ø.˜|Ð.Ð.Ð.Ð Ø €Ø
 €Ø”z—~’~ nÐ6IÑJÔJÐ Ø08Ð Ð 8Ð 8Ð 8Ñ 8Ø@EÀu¸~Ð "Ð MÐ MÐ MÑ MØ1˜;Ð1Ð1Ð1€
àÐ ð Ô×0Ò0Ø,ð 1ñ ô €ð
 ð=ð =ð =ð =ð =ñ =ô =ñ „ð=ð"ð "ð "ð "ð "ñ "ô "ð "ðJ"ð "ð "ð "ð "ñ "ô "ð "ðJ (Ð Ø'Ð ØÐ ðm$ð m$ð m$ð m$ð m$ñ m$ô m$ð m$ð`x*ð x*ð x*ð x*ð x*ñ x*ô x*ð x*ðv	ð 	ð 	ð 	ð 	�Yñ 	ô 	ð 	ð ð!ð !ð !ð !ð !˜ñ !ô !ñ „ð!ð ðWð Wð Wð Wð W˜N¨Lñ Wô Wñ „ðWðð ð ð ð< Ø Ð Ð Ð Ð Ñ Ô ñ „Ø ð ðð ð ð ð ˆVñ ô ñ „ðð ð0ð 0ð 0ð 0ð 0�ñ 0ô 0ñ „ð0ð ð	1ð 	1ð 	1ð 	1ð 	1�ñ 	1ô 	1ñ „ð	1ð €�$ÐÑÔðBð Bð Bð Bð Bñ Bô Bñ ÔðBð0 ˜wÐ'€ðXð Xð Xð Xð €�$ÐÑÔð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ Ôð
ð6 %(Ð !ØÐ Ø Ð ð<ð <ð <ð <ð	ð 	ð 	ð 	ð  Ø $ðð ð ð ð ð ð8 ðð ð ð ð ð ðDð Dð Dð Dð"ð "ð "ð "ð "�Lñ "ô "ð "ð /ð /ð /ð /ð5ð 5ð 5ð 5ð ð  ð  ð  ð>ð ð ð ð ð(ð (ð (ð (ð (ñ (ô (ñ „ð(ðV ð(ð (ð (ð (ð (ñ (ô (ñ „ð(ðV à/3ðð ð ð ñ „ðð à/3ðð ð ð ñ Ôððð ð ð ðð ð ð ð €Ø€
Ø€	Øˆoˆo€Ø%�o�oÐ ð #�U”] 5°$Ð7Ñ7Ô7Ð ðð ð ð ð& $&ðð ð ð ð ð& BDð ð ð ð ð ð4 5BØð!ð !ð !ð !ð !ð. $&ð4ð 4ð 4ð 4ð 4ð 4ð> $&ð4ð 4ð 4ð 4ð 4ð 4ð0ð ð ð ðð ð ð ðð ð ð ðð ð ð ð.ð ð ð ðð ð ð ð:ð ð ð ð:)ð )ð )ð )ð )ð )ð )ð )ð$)ð )ð )ð )ð )ð )ð )ð )ð$9ð 9ð 9ð 9ð$9ð 9ð 9ð 9ð*ð ð ð ðð ð ð ð €�$ÐÑÔðI$ð I$ð I$ð I$ð I$Ð*ñ I$ô I$ñ ÔðI$ðX €�$ÐÑÔðL$ð L$ð L$ð L$ð L$Ð+ñ L$ô L$ñ ÔðL$ð^ €�$ÐÑÔðjð jð jð jð jñ jô jñ ÔðjðZ €�$ÐÑÔðað að að að añ aô añ ÔðaðHKð Kð Kð Kð.ð .ð .ð .ð<ð <ð <ð <ð <ð <ð <rF   