
    V|hi3                    @   % S SK Jr  S SKrS SKrS SKrS SKrS SKrSSKJ	r	  SSK
Jr  SSKJrJrJrJrJr  SSKJrJrJrJrJrJr  SS	KJrJr  SS
KJrJr  SSKJ r   \c  \!" S5      e\"" \#" \$\RJ                  " S\RL                  5      SS 5      5      r'\'S:w  a+  S\'s=::  a  S:  d  O  \RL                   S3\l(        \!" S5      eS SK)rS SK*J+r+J,r,   " S S\RZ                  5      r. " S S\5      r/\" SSSS5      \" SSSS5      \" SSSS5      \" SS SS5      \" SS!SS5      \" SS"SS5      \" SS#SS5      \" S$SSS5      \" S$S SS5      \" S%S&S'S(5      \" S%S)S'S5      S*.\" SS+SS5      \" SS,S'S-5      \" SS.S'S-5      \" SS/S'S-5      \" SS0S'S-5      \" S%S1S'S-5      \" S%S2S3S25      S4.\" S%S&S'S-5      \" S%S)S'S-5      \" SS,S'S-5      \" SS.S'S-5      \" SS/S'S-5      \" SS0S'S-5      \" SS5S'S-5      \" SS5SS-5      \" SS6S'S75      \" S8S6S'S-5      \" S%S9S'S75      \" S%S9S3S95      S:.S;\" S8S<S'S-5      0\" S=S>S'S-5      \" S%S?S'S75      \" S%S?S3S?5      \" SS@S'S75      SA.\" S%SBS'SC5      \" S%SBS3SB5      SD.SE.r0SF\1SG'   SHSISJSKSLSMSN.r2\ " SO SP\\	5      5       r3\" \35      SQ 5       r4g)R    )annotationsN   )InstanceStoreMixin   )select_proxy)FeaturesRequestResponseregister_preferenceregister_rh)CertificateVerifyError	HTTPErrorIncompleteRead
ProxyErrorSSLErrorTransportError)ImpersonateRequestHandlerImpersonateTarget)	curl_cfficertifi)int_or_nonezcurl_cffi is not installedz[^\d]+   )r      
   r   r   )r      z (unsupported)zLOnly curl_cffi versions 0.5.10, 0.10.x, 0.11.x, 0.12.x, 0.13.x are supported)	CurlECodeCurlOptc                  B   ^  \ rS rSrSS jrS rSS jrU 4S jrSrU =r	$ )	CurlCFFIResponseReader,   c                V    Xl         UR                  5       U l        SU l        SU l        g )N    r   )	_responseiter_content	_iterator_buffer
bytes_read)selfresponses     U/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/networking/_curlcffi.py__init__CurlCFFIResponseReader.__init__-   s%    !!..0r#   c                    g)NT )r)   s    r+   readableCurlCFFIResponseReader.readable3   s    r#   c                   Sn U R                   (       a  Ub  [        U R                  5      U:  a  [        U R                   S 5      nUc  S U l         OdU =R                  U-  sl        U =R                  [        U5      -  sl        U R                   (       a   Uc  Mj  [        U R                  5      U:  a  M  Uc  [        U R                  5      nU R                  S U nU R                  US  U l        U R                   (       d!  U R                  (       d  U R                  5         SnUU(       a  U R                  5         $ $ ! U(       a  U R                  5         f f = f)NTF)r&   lenr'   nextr(   close)r)   sizeexception_raisedchunkdatas        r+   readCurlCFFIResponseReader.read6   s    	..dlc$,,6G$6NT^^T2=%)DN%3u:- ..dlc$,,6G$6N |4<<(<<&D<<.DL >>$,,

$

  

  s   BD? D? 6A0D? ?Ec                   > U R                   (       d!  U R                  R                  5         SU l        [        TU ]	  5         g )Nr#   )closedr$   r5   r'   super)r)   	__class__s    r+   r5   CurlCFFIResponseReader.closeP   s*    {{NN  "DLr#   )r'   r&   r$   r(   r*   zcurl_cffi.requests.ResponseN)
__name__
__module____qualname____firstlineno__r,   r0   r:   r5   __static_attributes____classcell__r?   s   @r+   r    r    ,   s    4 r#   r    c                  B   ^  \ rS rSr% S\S'   SU 4S jjrSS jrSrU =r$ )	CurlCFFIResponseAdapterW   r    fpc                t   > [         TU ]  [        U5      UR                  UR                  UR
                  S9  g )N)rM   headersurlstatus)r>   r,   r    rO   rP   status_code)r)   r*   r?   s     r+   r,    CurlCFFIResponseAdapter.__init__Z   s6    %h/$$''	 	 	)r#   c                    U R                   R                  U5      $ ! [        R                  R                  R
                   a  nUR                  [        R                  :X  a|  UR                  =(       a.    [        UR                  R                  R                  S5      5      n[        U R                   R                  Ub  X0R                   R                  -
  OS US9Ue[        US9UeS nAff = f)NzContent-Length)partialexpectedcauserW   )rM   r:   r   requestserrorsRequestsErrorcoder   PARTIAL_FILEr*   r   rO   getr   r(   r   )r)   amtecontent_lengths       r+   r:   CurlCFFIResponseAdapter.reada   s    		177<<$$!!((66 	1vv///!"!eAJJ<N<N<R<RSc<d0e$ GG..DRD^^gg.@.@@dh #$$ !q)q0	1s    (C.B$C))C.r/   rA   rB   )	rC   rD   rE   rF   __annotations__r,   r:   rG   rH   rI   s   @r+   rK   rK   W   s    )
1 
1r#   rK   chrome99windows10android12100101104107110edgesafariz15.3macos11z15.5)chrome99chrome99_android	chrome100	chrome101	chrome104	chrome107	chrome110edge99edge101	safari153	safari15511611914120123124z17.0z17.2ios)	chrome116	chrome119	chrome120	chrome123	chrome124	safari170safari172_ios13113315firefoxz18.0)r|   r}   r   r   r   r   	chrome131chrome131_android
chrome133a
firefox133	safari180safari180_ios
firefox135135torz14.5z18.4136)tor145	safari184safari184_ios	chrome136z26.026)	safari260safari260_ios))r   r   )r      r   	   r   r      )r      z3dict[tuple[int, ...], dict[str, ImpersonateTarget]]BROWSER_TARGETS
safari15_3
safari15_5
safari17_0safari17_2_ios
safari18_0safari18_0_ios)r|   r}   r   r   r   r   c                     ^ \ rS rSrSrSr\R                  \R                  4r	Sr
\" \" \R                  R                  S \R#                  5        5       5      S SS95      R#                  5        V VVVVVs0 s Ha  u  pU[$        S	:  a  UON[$        S
:  a  [&        R)                  X5      O/[*        R,                  R.                  [&        R)                  X5         _Mc     snnnnnn rSS jrU4S jrSU4S jjrSS jrSrU=r$ s  snnnnnn f )
CurlCFFIRH   r   )httphttps)r   r   socks4socks4asocks5socks5hc              #  ^   #    U  H#  u  p[         U:  d  M  UR                  5       v   M%     g 7frB   )curl_cffi_versionitems).0versiontargetss      r+   	<genexpr>CurlCFFIRH.<genexpr>   s-      H
$;  G+ GMMOO$;s   --c                    U S   R                   S;  SR                  U S   R                  5      U S   R                  (       a  [	        U S   R                  5      OSU S   R                   4$ )Nr   )r   rh   )r   ro   r   rp   rd   r   )osindexclientr   float)xs    r+   <lambda>CurlCFFIRH.<lambda>   sU    aDGG--:@@1M#$Q4<<E!A$,,QaDGG	
r#   T)keyreverser   r   c                <    [         R                  R                  US9$ )N)cookies)r   rY   Session)r)   	cookiejars     r+   _create_instanceCurlCFFIRH._create_instance   s    !!))))<<r#   c                   > [         TU ]  U5        UR                  SS 5        UR                  SS 5        UR                  SS 5        UR                  SS 5        g )Nimpersonater   timeout
legacy_ssl)r>   _check_extensionspop)r)   
extensionsr?   s     r+   r   CurlCFFIRH._check_extensions   sJ    !*-}d+{D)y$' 	|T*r#   c                   > U R                  U5      n [        TU ]	  U5      nX#R
                  S'   U$ ! [         a  nX$R                  R
                  S'   e S nAff = f)Nr   )_get_request_targetr>   sendr   r*   r   )r)   requesttargetr*   r`   r?   s        r+   r   CurlCFFIRH.send   sb    ))'2	w|G,H .4M*	  	39JJ!!-0	s   3 
AAAc                t
   SnU R                  SUR                  ;  a  U R                  U5      OS S9nU R                  (       a*  UR                  R                  [        R                  S5        U R                  U5      nSU;   a?  UR                  R                  [        R                  US   5        UR                  SS 5        [        UR                  US9nU(       Ga=  UR                  R                  [        R                  U5        [        R                  R!                  UR                  5      R"                  R%                  5       nUS:w  a*  UR                  R                  [        R&                  S5        UR                  R                  [        R(                  [*        R,                  " 5       5        U R.                  (       dT  UR                  R                  [        R0                  S5        UR                  R                  [        R2                  S5        U R5                  U5      nU R6                  (       a  UR                  R                  [        R8                  U R6                  S	   5        U R6                  R;                  S
5      nU R6                  R;                  S5      n	U(       a*  UR                  R                  [        R<                  U5        U	(       a*  UR                  R                  [        R>                  U	5        U RA                  U5      n
UR                  R                  [        RB                  S5        UR                  R                  [        RD                  [F        RH                  " U
5      5         URK                  URL                  UR                  UURN                  U R.                  SX4U RP                  R;                  U RS                  U5      5      U RT                  SS9
n[w        U5      nSURx                  s=::  a  S:  d  O  [{        XS9eU$ ! [V        RX                  RZ                  R\                   a  nUR^                  [`        Rb                  :X  a
  [e        US9UeUR^                  [`        Rf                  :X  a
  [i        US9UeUR^                  [`        Rj                  :X  a  SnURl                  n S nANUR^                  [`        R                  :X  d-  UR^                  [`        Rn                  :X  a  S[q        U5      ;   a
  [s        US9Ue[u        US9UeS nAff = f)NFcookie)r   r   no)proxiesr   r   client_certificateclient_certificate_keyclient_certificate_passwordr   T)
methodrP   rO   r9   verifymax_redirectsr   r   	interfacestreamrX   CONNECT   i,  )redirect_loop)>_get_instancerO   _get_cookiejarverbosecurlsetoptr   VERBOSE_get_proxiesNOPROXYr   r   rP   PROXYurllibparseurlparseschemelowerHTTPPROXYTUNNELPROXY_CAINFOr   wherer   PROXY_SSL_VERIFYPEERPROXY_SSL_VERIFYHOST_get_impersonate_headers_client_certSSLCERTr^   SSLKEY	KEYPASSWD_calculate_timeoutLOW_SPEED_LIMITLOW_SPEED_TIMEmathceilr   r   r9   !_SUPPORTED_IMPERSONATE_TARGET_MAPr   source_addressr   rY   rZ   r[   r\   r   PEER_FAILED_VERIFICATIONr   SSL_CONNECT_ERRORr   TOO_MANY_REDIRECTSr*   
RECV_ERRORstrr   r   rK   rQ   r   )r)   r   max_redirects_exceededsessionr   proxyr   rO   r   r   r   curl_responser`   r*   s                 r+   _sendCurlCFFIRH._send   s   !&.2.@.@6>goo6Ud))'2[_ /A /a <<LL3##G,7?LL?KKd# W[[':LLu5\\**7;;7>>DDFF ##G$;$;Q? LL 4 4gmmoF;;##G$@$@!D##G$@$@!D//8LL1B1BCW1XY%)%6%6%:%:;S%T"*.*;*;*?*?@]*^'%##GNN4JK*##G$5$57RS))'2 	G33Q7G22DIIg4FG	5#OO~~KK\\{{ * BBFF,,W57-- , M@ +=9hoo++HKK1 !!((66 	5vv;;;,151<9666Q'Q.9777)-& !

 )//)FFi222yCF7J q)q0$1-14#	5s!   A3P* *(T7A<T2AT22T7r/   rB   )r   r	   returnr
   )r   r	   )rC   rD   rE   rF   RH_NAME_SUPPORTED_URL_SCHEMESr   NO_PROXY	ALL_PROXY_SUPPORTED_FEATURES_SUPPORTED_PROXY_SCHEMESdictsorted	itertoolschainfrom_iterabler   r   r   _TARGETS_COMPAT_LOOKUPr^   r   rY   BrowserTyper	  r   r   r   r  rG   rH   )r   namer   r   r"  r   r?   s   000000@r+   r   r      s   G.#,,h.@.@AZ #6)//*G*G H
$3$9$9$;H
 +
	
 $   %'") )
"ld	 	%0D;LPV;V'++D7##//0F0J0J40VW	X")%*=+[ [W)s   8A(Dr   c                    g)Nir/   )rhr   s     r+   curl_cffi_preferencer'  ?  s    r#   )5
__future__r   ior  r  reurllib.parser   _helperr   utils.networkingr   commonr   r	   r
   r   r   
exceptionsr   r   r   r   r   r   r   r   r   dependenciesr   r   utilsr   ImportErrortuplemapintsplit__version__r   _yt_dlp__versioncurl_cffi.requestscurl_cffi.constr   r   IOBaser    rK   r   rc   r"  r   r'  r/   r#   r+   <module>r<     sr   " 	   	  ' +   F - 
2
33 #c288Iy7L7L#Mbq#QRS 
"76G+Q'+Q$-$9$9#:.!II
d
ee  .(RYY (V1h 16 &hiF-hiN&x	4H&x	4H&x	4H&x	4H&x	4H#FD)TB$VUItD&x$G&x$G 'x	4H&xF&xF&xF&xF&x$G*8VUFK 'x$G&x$G&xF&xF&xF&xF&xF.x	4P'%$G'	5'4H&x$G*8VUFK 	'	5'4H $E67DA&x$G*8VUFK&xF	 'x$G*8VUFK]2HD 2n %%  K*,> K K\ Z  !r#   