Ë
    š„j]e  ã            
      óì  — 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
Z
d dlZd dlZd dlZd dlmZ d dlmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZ dd	l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d
dddœZ'e'd   Z(e'jS                  «       D � �ci c]  \  } }|| “Œ
 c}} Z* ejV                  d«      Z,dZ- ejV                  de-› d�«      Z.dZ/e/› de(› d�Z0ejb                  d„ «       Z2d„ Z3ejb                  d„ «       Z4dddddddd d!d"œ	Z5i e6jo                  e5«      ¥e6jo                  d#gd$„ e5D «       ¢d%«      ¥d&d'd(d)d*œ¥Z8d+„ Z9d,„ Z:d-„ Z;d.„ Z<d/„ Z=d6d0„Z>e G d1„ d2«      «       Z? G d3„ d4«      Z@d5„ ZAd4gZByc c}} w )7é    )ÚannotationsN)Ú	dataclass)Úzipimporteré   )ÚRequest)Ú	HTTPErrorÚnetwork_exceptions)Ú
NO_DEFAULTÚPopenÚdeprecation_warningÚformat_fieldÚ
remove_endÚshell_quoteÚsystem_identifierÚversion_tuple)ÚCHANNELÚORIGINÚRELEASE_GIT_HEADÚUPDATE_HINTÚVARIANTÚ__version__zyt-dlp/yt-dlpzyt-dlp/yt-dlp-nightly-buildszyt-dlp/yt-dlp-master-builds)ÚstableÚnightlyÚmasterr   z(\d+\.)*\d+z[\da-f]{40}z7Generated from: https://(?:[^/?#]+/){3}commit/(?P<hash>ú)zhttps://api.github.com/reposú/z	/releasesc                 ó°  — t        t        dd«      �rut        j                  } t        t        d«      sd| fS t	        j
                  d«      x}rd|fS t        j                  t        j                  j                  | «      › d�k(  s0t        j                  t        j                  j                  | «      k(  rd}nd	}t        t        j                  d
«      }|dk(  r1t        t        j                  «       d   «      dk  rdnd}d|› d|› �| fS |dk(  rt        j                  «       d   dk7  rd}dt        j                  «       j                  «       › �}t        j                   dkD  }|dd dv r|sdnd}n|dd dk(  r|sd}|› |› d|› �| fS t        j                  j                  t"        «      } t%        t&        t(        «      r"dt        j                  j+                  | d«      fS t        j                  j-                  t        j.                  d   «      dv rAt        j                  j1                  t        j                  j+                  | d«      «      rd| fS d | fS )!z#@returns (variant, executable_path)ÚfrozenFÚ_MEIPASSÚpy2exeÚSTATICX_PROG_PATHÚlinux_static_exez
/_internalÚdirÚexeÚ32Údarwinr   )é
   é   Ú_legacyÚ Ú_ÚlinuxÚglibcÚ	musllinuxl        r   N)Úx86Úx86_64Úamd64Úi386Úi686Ú_x86Úaarch64Ú_armv7lÚzipz..)z__main__.pyz-mz../.git/HEADÚsourceÚunknown)ÚgetattrÚsysÚ
executableÚhasattrÚosÚgetenvr   ÚpathÚdirnamer   Úplatformr   Úmac_verÚlibc_verÚmachineÚlowerÚmaxsizeÚ__file__Ú
isinstanceÚ
__loader__r   ÚjoinÚbasenameÚargvÚexists)r@   Ústatic_exe_pathÚsuffixÚsystem_platformrE   Ú	is_64bitss         úD/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/update.pyÚ _get_variant_and_executable_pathrT   8   s  € ô Œs�H˜eÕ$Ü�~‰~ˆô ”s˜JÔ'Ø˜T�>Ð!ô
 !Ÿi™iÐ(;Ó<Ð<ˆ?Ð<Ø% Ð6Ð6ô �L‰LœrŸw™wŸ™¨tÓ4Ð5°ZÐ@Ò@ä�|‰|œrŸw™wŸ™¨tÓ4Ò4à‰FàˆFä$¤S§\¡\°4Ó8ˆà˜hÒ&ä#0´×1AÑ1AÓ1CÀAÑ1FÓ#GÈ(Ò#R‘iÐXZˆGØ˜G˜9 A f XÐ.°Ð4Ð4à˜gÒ%¬(×*;Ñ*;Ó*=¸aÑ*@ÀGÒ*KØ)ˆOà”h×&Ñ&Ó(×.Ñ.Ó0Ð1Ð2ˆÜ—K‘K %Ñ'ˆ	à�1�2ˆ;ÐDÑDÙ$-‘f°2‰Gð �Q�Rˆ[˜IÒ%©iØˆGà!Ð" 7 )¨1¨V¨HÐ5°tÐ;Ð;ä�7‰7�?‰?œ8Ó$€DÜ”*œkÔ*Ø”b—g‘g—l‘l 4¨Ó.Ð.Ð.Ü
�'‰'×
Ñ
œ3Ÿ8™8 A™;Ó
'Ð+@Ñ
@Ü�g‰g�n‰nœRŸW™WŸ\™\¨$°Ó?Ô@Ø˜ˆ~ÐØ�dˆ?Ðó    c                 ó,   — t         xs t        «       d   S )Nr   )r   rT   © rU   rS   Údetect_variantrX   s   s   € ÜÒ;Ô6Ó8¸Ñ;Ð;rU   c            
     óì  — t        «       dk7  ry t        j                  t        «      5  t	        j
                  g d¢dt        j                  j                  t        j                  j                  t        «      «      t        j                  t        j                  ¬«      \  } }}t        j                  d| j                  «       «      r| j                  «       cd d d «       S 	 d d d «       y # 1 sw Y   y xY w)Nr8   )Úgitz	rev-parsez--shortÚHEADT)ÚtextÚcwdÚstdoutÚstderrz	[0-9a-f]+)rX   Ú
contextlibÚsuppressÚ	Exceptionr   Úrunr>   r@   rA   ÚabspathrH   Ú
subprocessÚPIPEÚreÚ	fullmatchÚstrip)r^   r+   s     rS   Úcurrent_git_headrj   w   s¤   € äÓ˜8Ò#ØÜ	×	Ñ	œYÓ	'ñ "Ü—y‘yÚ3Øœ2Ÿ7™7Ÿ?™?¬2¯7©7¯?©?¼8Ó+DÓEÜ—?‘?¬:¯?©?ô<‰ˆ��1ô �<‰<˜ V§\¡\£^Ô4Ø—<‘<“>÷"ñ "ð
 5÷"÷ "ñ "ús   ¨B.C*Ã*C3r*   z.exez_x86.exez
_arm64.exeÚ_macosÚ_linuxÚ_linux_aarch64Ú
_musllinuxÚ_musllinux_aarch64)	r7   Úwin_exeÚwin_x86_exeÚwin_arm64_exeÚ
darwin_exeÚ	linux_exeÚlinux_aarch64_exeÚmusllinux_exeÚmusllinux_aarch64_exeÚlinux_armv7l_dirc              #  óP   K  — | ]  }|j                  d «      sŒ|dd › d�–— Œ  y­w)Ú_exeNéüÿÿÿÚ_dir)Úendswith)Ú.0Úvariants     rS   ú	<genexpr>r€   “   s,   è ø€ Òo¸ÐV]×VfÑVfÐgmÕVn '¨#¨2 , ¨tÔ4Ñoùs   ‚&™&zWAuto-update is not supported for unpackaged executables; Re-download the latest releasezJpy2exe is no longer supported by yt-dlp; This executable cannot be updatedzSYou cannot update when running from source code; Use git to pull the latest changeszVYou installed yt-dlp from a manual build or with a package manager; Use that to updatezGYou are using an unofficial build of yt-dlp; Build the executable again)r    r8   r9   Úotherc                 ó€   — t         rt         S t        j                  t        «       t        t        rd   «      S d   «      S )Nr9   r�   )r   Ú_NON_UPDATEABLE_REASONSÚgetrX   r   rW   rU   rS   Úis_non_updateabler…   œ   sB   € ÝÜÐÜ"×&Ñ&ÜÓÔ1½w°)ÑTóVð VØLSÑTóVð VrU   c                 ó:   — t        t        t        «       dd d ¬«      S )Nzyt-dlp%s)ÚtemplateÚignoreÚdefault)r   Ú_FILE_SUFFIXESrX   rW   rU   rS   Ú_get_binary_namer‹   £   s   € Üœ¬Ó(8À:ÐVZÐdhÔiÐirU   c                 óˆ  — d\  } }t         j                  |kD  ry t         j                  d d \  }}ddj                  t        t        |«      «      › d�}t         j                  | k  rd|› d|› d|› �S t        «       dv r<t        j                  d	«      sy t        j                  «       j                  d
«      r	 yy d|› d|› d|› �S )N))é   r'   )r�   é   é   zPlease update to Python ú.z	 or abovezPython version z is no longer supported! )rp   rq   úyt-dlp/)z	Windows-8zWindows-2012ServerzÁSupport for Windows 8.x and Windows Server 2012 has been deprecated. See  https://github.com/yt-dlp/yt-dlp/issues/16917  for details.
You may stop receiving updates on this version at any time!zSupport for Python version z has been deprecated. )	r;   Úversion_inforK   ÚmapÚstrrX   r   Ú
startswithrB   )ÚMIN_SUPPORTEDÚMIN_RECOMMENDEDÚmajorÚminorÚ
PYTHON_MSGs        rS   Ú_get_system_deprecationr›   §   sÝ   € Ø%5Ñ"€M�?ä
×Ñ˜/Ò)Øä×#Ñ# B QÐ'�L€Eˆ5Ø+¨C¯H©H´S¼¸oÓ5NÓ,OÐ+PÐPYÐZ€Jä
×Ñ˜-Ò'Ø    q¨¨Ð/HÈÈÐUÐUô ÓÐ5Ñ5ä× Ñ  Ô+ØÜ×ÑÓ×)Ñ)Ð*MÔNðNðOð à(¨¨¨q°°Ð7MÈjÈ\ÐZÐZrU   c                 óú  — t        j                  d«      sy t        j                  t        «      5  t        j                  t        t        «      d d Ž } | t
        j                  j                  t
        j                  j                  «      j                  «       t        j                  d¬«      z
  k  r5dj                  dt        › d�dt        «       xs d	› d
�df«      cd d d «       S 	 d d d «       y # 1 sw Y   y xY w)Nr‘   r�   éZ   )Údaysz

         zYour yt-dlp version (z) is older than 90 days!z<It is strongly recommended to always use the latest version.z.Run "yt-dlp --update" or "yt-dlp -U" to updater�   zATo suppress this warning, add --no-update to your command/config.)r   r•   r`   ra   rb   ÚdtÚdater   r   ÚdatetimeÚnowÚtimezoneÚutcÚ	timedeltarK   r…   )Úlast_updateds    rS   Ú_get_outdated_warningr§   Â   sÙ   € ä×Ñ˜YÔ'Øä	×	Ñ	œYÓ	'ñ WÜ—w‘w¤¬kÓ :¸2¸AÐ >Ð?ˆØœ"Ÿ+™+Ÿ/™/¬"¯+©+¯/©/Ó:×?Ñ?ÓAÄBÇLÁLÐVXÔDYÑYÒYØ!×&Ñ&Ø'¬ }Ð4LÐMØNÜ$Ó&Ò^Ð*^Ð_Ð_`ÐaØSð	(Uó V÷Wñ WàY÷Wð ÷Wð ús   °B-C1Ã1C:c                óh  ‡‡— t        j                  «       }t        t        d«      «      Št	        t
        j                  j                  | «      dd¬«      5 Št        ˆˆfd„d«      D ]  }|j                  ‰d | «       Œ 	 d d d «       |j                  «       S # 1 sw Y   |j                  «       S xY w)Ni   Úrbr   )Ú	bufferingc                 ó&   •— ‰ j                  ‰«      S ©N)Úreadinto)ÚfÚmvs   €€rS   ú<lambda>z_sha256_file.<locals>.<lambda>Ö   s   ø€ ˜aŸj™j¨›n€ rU   )ÚhashlibÚsha256Ú
memoryviewÚ	bytearrayÚopenr>   r@   ÚrealpathÚiterÚupdateÚ	hexdigest)r@   ÚhÚnr®   r¯   s      @@rS   Ú_sha256_filer¼   Ò   s�   ù€ Ü�‰Ó€AÜ	”I˜jÓ)Ó	*€BÜ	Œb�g‰g×Ñ˜tÓ$ d°aÔ	8ð ¸AÜÔ,¨aÓ0ò 	ˆAØ�H‰H�R˜˜�VÕñ	÷ð �;‰;‹=Ð÷ð �;‰;‹=Ðús   Á*BÂB1c                ó‚   — ||k7  r|r
| › d|› d|› �S | › d|› �S t         j                  | «      x}r
|› d|› d| › �S | › d|› �S )Nú@z build ú from )Ú_INVERSE_UPDATE_SOURCESr„   )ÚoriginÚtagÚversionÚchannels       rS   Ú_make_labelrÅ   Û   sr   € Ø
ˆg‚~ÙØ�X˜Q˜s˜e 7¨7¨)Ð4Ð4Ø�˜˜3˜%Ð Ð ä)×-Ñ-¨fÓ5Ð5€wÐ5Ø�˜!˜C˜5  v hÐ/Ð/ØˆX�Q�s�eÐÐrU   c                  ól   — e Zd ZU dZded<   dZded<   dZded<   dZded<    e«       Z	ded	<   dZ
ded
<   y)Ú
UpdateInfoaÅ  
    Update target information

    Can be created by `query_update()` or manually.

    Attributes:
        tag                 The release tag that will be updated to. If from query_update,
                            the value is after API resolution and update spec processing.
                            The only property that is required.
        version             The actual numeric version (if available) of the binary to be updated to,
                            after API resolution and update spec processing. (default: None)
        requested_version   Numeric version of the binary being requested (if available),
                            after API resolution only. (default: None)
        commit              Commit hash (if available) of the binary to be updated to,
                            after API resolution and update spec processing. (default: None)
                            This value will only match the RELEASE_GIT_HEAD of prerelease builds.
        binary_name         Filename of the binary to be updated to. (default: current binary name)
        checksum            Expected checksum (if available) of the binary to be
                            updated to. (default: None)
    r”   rÂ   Nú
str | NonerÃ   Úrequested_versionÚcommitÚbinary_nameÚchecksum)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rÃ   rÉ   rÊ   r‹   rË   rÌ   rW   rU   rS   rÇ   rÇ   æ   sD   … ñð( 
ƒHØ€GˆZÓØ$(Ð�zÓ(Ø€FˆJÓá.Ó0€K�Ó0Ø€HˆjÔrU   rÇ   c                  óð   — e Zd ZeZeZeZddd„Z	e
d„ «       Ze
d„ «       Zdd„Zd„ Zdd„Zd„ Zdd	„Zdd
„Zddœdd„Zefd„Zej.                  d„ «       Zej.                  d„ «       Zd„ Zd„ Zdd„Zd„ Zdd„Zy)ÚUpdaterNc                óÞ  — || _         |xs | j                  j                  d«      \  | _        }| _        |s?d| j                  v s| j                  | j
                  v r| j                  | _        d | _        n/| j                  s#| j                  j                  d«      d   | _        t        |«      xr || j                  k7  | _        | j                  sd| _        d| _        d| j                  v ró| j                  | _	        | j                  j                  d«      �s7| j                  | j                  k7  �r| j                   j                  d| j                   j                  dd	«      › d
| j                   j                  | j                  | j                   j                  j                  «      › d| j                   j                  dd«      › �«       | j!                  d«       nq| j
                  j#                  | j                  «      | _	        | j                  s;| j%                  d| j                  ›ddj'                  | j
                  «      › �d«       t)        «       › dt+        «       › �| _        y )Nr¾   r   r   ÚlatestFr‘   zYou are switching to an Ú
unofficialÚredz executable from z. Run zat your own riskz	light redzLAutomatically restarting into custom builds is disabled for security reasonszInvalid update channel z requested. Valid channels are z, Tú )ÚydlÚ_channelÚ
rpartitionÚrequested_channelÚrequested_tagÚ_update_sourcesÚ	partitionÚboolÚ_exactÚrequested_repor•   Ú_originÚreport_warningÚ_format_errÚStylesÚEMPHASISÚ_block_restartr„   Ú_report_errorrK   rX   r   Ú_identifier)ÚselfrÙ   ÚtargetÚseps       rS   Ú__init__zUpdater.__init__  s!  € ØˆŒà;AÒ;RÀTÇ]Á]×:^Ñ:^Ð_bÓ:cÑ7ˆÔ  TÔ%7á˜˜t×1Ñ1Ñ1°T×5GÑ5GÈ4×K_ÑK_Ñ5_Ø%)×%7Ñ%7ˆDÔ"Ø&*ˆDÕØ×'Ò'à%)§]¡]×%<Ñ%<¸SÓ%AÀ!Ñ%DˆDÔ"ô ˜6“lÒ> v°·±Ñ'>ˆŒØ×!Ò!à!)ˆDÔØˆDŒKà�$×(Ñ(Ñ(à"&×"8Ñ"8ˆDÔØ×&Ñ&×1Ñ1°)Õ<À×ATÑATÐX\×XdÑXdÓAdØ—‘×'Ñ'Ø.¨t¯x©x×/CÑ/CÀLÐRWÓ/XÐ.Yð ZØ ŸH™H×0Ñ0°×1DÑ1DÀdÇhÁhÇoÁo×F^ÑF^Ó_Ð`ð aØŸ8™8×/Ñ/Ð0BÀKÓPÐQðSôTð ×#Ñ#Ð$rÕsð #'×"6Ñ"6×":Ñ":¸4×;QÑ;QÓ"RˆDÔØ×&Ò&Ø×"Ñ"Ø-¨d×.DÑ.DÐ-Gð H*Ø*.¯)©)°D×4HÑ4HÓ*IÐ)JðLØMQôSô -Ó.Ð/¨qÔ1BÓ1DÐ0EÐFˆÕrU   c                ó   — t         S )zCurrent version)r   ©rë   s    rS   Úcurrent_versionzUpdater.current_version1  s
   € ô ÐrU   c                ó   — t         S )zCurrent commit hash)r   rð   s    rS   Úcurrent_commitzUpdater.current_commit6  s
   € ô  ÐrU   c                óô   — |s| j                   }|dk(  rdnd|› �}d| j                  › d|› d|› �}| j                  j                  d|› d|› �«       | j                  j	                  |«      j                  «       S )	NrÕ   zlatest/downloadz	download/zhttps://github.com/ú
/releases/r   zDownloading r¿   )rÝ   râ   rÙ   Úwrite_debugÚurlopenÚread)rë   ÚnamerÂ   r@   Úurls        rS   Ú_download_assetzUpdater._download_asset;  s�   € ÙØ×$Ñ$ˆCà$'¨8¢OÑ ¸9ÀSÀEÐ9JˆØ# D×$7Ñ$7Ð#8¸
À4À&ÈÈ$ÈÐPˆØ�‰×Ñ˜|¨D¨6°¸°uÐ=Ô>Ø�x‰x×Ñ Ó$×)Ñ)Ó+Ð+rU   c                ó8  — |dk7  rd|› �n|}t         › d| j                  › d|› �}| j                  j                  d|› �«       t	        j
                  | j                  j                  t        |dddd	œ¬
«      «      j                  «       j                  «       «      S )NrÕ   ztags/r   rõ   zFetching release info: zapplication/vnd.github+jsonzyt-dlpz
2026-03-10)ÚAcceptz
User-AgentzX-GitHub-Api-Version)Úheaders)
ÚAPI_BASE_URLrâ   rÙ   rö   ÚjsonÚloadsr÷   r   rø   Údecode)rë   rÂ   rú   s      rS   Ú	_call_apizUpdater._call_apiD  s•   € Ø" hš��c�U‰m°CˆÜ�˜a × 3Ñ 3Ð4°J¸s¸eÐDˆØ�‰×ÑÐ6°s°eÐ<Ô=Ü�z‰z˜$Ÿ(™(×*Ñ*¬7°3Ø3Ø"Ø$0ñA
ô ,ó ÷ ‰D‹F—6‘6“8ó	ð 	rU   c                ó  — t         j                  |«      r|d fS | j                  |«      }|dk(  r|d   }nMt        j                  dt         j
                  › d�|j                  dd«      «      }|r|j                  d«      nd }t        j                  t        |j                  dd«      «      r|d   }n:t        j                  |j                  d	d«      «      }|r|j                  d
«      nd }|s|s| j                  dd¬«       ||fS )NrÕ   Útag_namez\s+(?P<version>z)$rù   r*   rÃ   Útarget_commitishÚbodyÚhashzEOne of either version or commit hash must be available on the releaseT©Úexpected)Ú_VERSION_RErh   r  rg   ÚsearchÚpatternr„   ÚgroupÚ_HASH_PATTERNÚ
_COMMIT_REÚmatchré   )rë   rÂ   Úapi_inforÉ   r  r  s         rS   Ú_get_version_infozUpdater._get_version_infoN  sõ   € Ü× Ñ  Ô%Ø˜�9Ðà—>‘> #Ó&ˆà�(Š?Ø (¨Ñ 4Ñä—I‘I ´×1DÑ1DÐ0EÀRÐHÈ(Ï,É,ÐW]Ð_aÓJbÓcˆEÙ:? §¡¨IÔ 6ÀTÐä�<‰<œ x§|¡|Ð4FÈÓ'KÔLØ'Ð(:Ñ;Ñä×$Ñ$ X§\¡\°&¸"Ó%=Ó>ˆEÙ6;˜uŸ{™{¨6Ô2ÀÐá!Ñ%5Ø×ÑÐfÐquÐÔvà Ð"2Ð2Ð2rU   c                óN  — |D ]%  }	 | j                  d|¬«      j                  «       c S  | j                  d| j                  › d| j                  › �d«       y # t        $ rC}t        |t        «      r|j
                  dk(  rY d }~Œ‚| j                  d|› �«       Y d }~ y d }~ww xY w)NÚ_update_spec©rÂ   é”  zfetch update spec: úThe requested tag z does not exist for T)
rû   r  r	   rI   r   ÚstatusÚ_report_network_errorré   rÝ   râ   )rë   Úsource_tagsrÂ   Úerrors       rS   Ú_download_update_speczUpdater._download_update_spece  s®   € Øò 	ˆCðØ×+Ñ+¨NÀÐ+ÓD×KÑKÓMÒMð	ð 	×ÑØ  ×!3Ñ!3Ð 4Ð4HÈ×I\ÑI\ÐH]Ð^Ð`dô	fàøô &ò Ü˜e¤YÔ/°E·L±LÀCÒ4GÜØ×*Ñ*Ð-@ÀÀÐ+HÔIÝûð	ús   ‡ AÁ	B$Á!BÂBÂB$c                ó  — |j                  «       }t        d„ |D «       «      }|D ]Ý  }|r8|j                  d| j                  › d�«      sŒ%|j	                  dd«      \  }}}}n(|j                  d«      sŒO|j	                  dd«      \  }}}t        j                  || j                  «      sŒ†t        j                  |«      r&| j                  s|c S | j                  ||«      r
|c S ||k7  rŒÇ| j                  d|› d�d	«        y  |S )
Nc              3  ó>   K  — | ]  }|j                  d «      –— Œ y­w)úlockV2 N)r•   )r~   Úlines     rS   r€   z/Updater._process_update_spec.<locals>.<genexpr>u  s   è ø€ ÒG¸˜$Ÿ/™/¨)×4ÑGùs   ‚r   rØ   r�   zlock r�   zyt-dlp cannot be updated to zm since you are on an older Python version or your operating system is not compatible with the requested buildT)Ú
splitlinesÚanyr•   râ   Úsplitrg   r  rê   r  rh   rá   Ú_version_compareré   )	rë   ÚlockfileÚresolved_tagÚlinesÚis_version2r!  r+   rÂ   r  s	            rS   Ú_process_update_speczUpdater._process_update_specs  s  € Ø×#Ñ#Ó%ˆÜÑGÀÔGÓGˆàò 	ˆDÙØ—‘¨°×1DÑ1DÐ0EÀQÐ'GÔHØØ%)§Z¡Z°°QÓ%7Ñ"��1�c™7à—‘ wÔ/ØØ"&§*¡*¨S°!Ó"4‘��3˜ä�x‰x˜ ×!1Ñ!1Õ2Ü×(Ñ(¨Ô-ØŸ;š;Ø"š
Ø×.Ñ.¨s°LÔAØ+Ò+Ø˜LÒ(Øà×"Ñ"Ø2°<°.ð AZð ZØ[_ôañ ð-	ð0 ÐrU   c                ón   — t         j                  |› d|› �«      rt        |«      t        |«      k\  S ||k(  S )zp
        Compare two version strings

        This function SHOULD NOT be called if self._exact == True
        r�   )r  rh   r   )rë   ÚaÚbs      rS   r%  zUpdater._version_compare‘  s:   € ô × Ñ  A 3 a¨ s Ô,Ü  Ó#¤}°QÓ'7Ñ7Ð7Ø�A‰vˆrU   F©Ú_outputc               ó²  — | j                   s| j                  d«       y	 | j                  | j                  «      \  }}| j                  r| j                  | j                   k7  rd}nP|r:| j                  r| j                  |k7  }n2| j                  | j                  |«       }n|r|| j                  k7  }nd}| j                  d	k(  r|n| j                  }t        | j                  | j                  j                  d
«      d   xs | j                  | j                  «      }t        | j                   ||«      }| j                  d	k(  rdnd› d|› �}	|s$|r!| j                  j                  |	› d|› d�«       y| j!                  |rdnd«      }
|
sy| j#                  |
|«      }|r|| j                  k(  ry||k(  r|}nt$        j'                  |«      r|}nd}d}t)        «       s‚	 | j+                  d|«      }|j-                  «       j/                  «       D ]0  }|j1                  t3        «       «      sŒ|j5                  «       d   } n |s| j                  j7                  d«       	 |rEt        | j                   ||«      }| j                  j                  d|› d|	› �||k7  rd|› �ndz   «       t?        |||||k(  r||¬«      S d|¬«      S # t        $ r!}| j                  d|› d�d¬«       Y d}~yd}~ww xY w# t        $ r]}t9        |t:        «      r|j<                  dk7  r| j                  d|› �«       Y d}~y| j                  j7                  d«       Y d}~Œòd}~ww xY w)z~Fetches info about the available update
        @returns   An `UpdateInfo` if there is an update available, else None
        z3No target repository could be determined from inputNzobtain version info (r   z; Please try again later or)ÚdelimTFrÕ   r¾   r�   ÚLatestÚ	Requestedz
 version: z
yt-dlp is up to date ()rÕ   Nr¬   zSHA2-256SUMSr   zGThe hash could not be found in the checksum file, skipping verificationr  zfetch checksums: z@No hash information found for the release, skipping verificationzCurrent version: ú
z
Upgradable to: r*   )rÂ   rÃ   rÉ   rÊ   rÌ   ) râ   ré   r  rÝ   r	   r  rá   rã   rñ   r%  ró   rÅ   rÚ   rß   rÙ   Ú	to_screenr  r*  r  rh   r…   rû   r  r"  r}   r‹   r$  rä   rI   r   r  rÇ   )rë   r/  rÉ   r  ÚeÚ
has_updater'  Úcurrent_labelÚrequested_labelÚlatest_or_requestedÚupdate_specÚ
result_tagÚresult_versionrÌ   ÚhashesÚlnr  Úupdate_labels                     rS   Úquery_updatezUpdater.query_update›  sp  € ð ×"Ò"Ø×ÑÐTÔUØð	Ø26×2HÑ2HÈ×I[ÑI[Ó2\Ñ/ÐÐ/ð
 �;Š;˜4Ÿ<™<¨4×+>Ñ+>Ò>Ø‰JÙØ�{Š{Ø!×1Ñ1Ð5FÑF‘
à!%×!6Ñ!6°t×7KÑ7KÐM^Ó!_Ð_‘
ÙØ)¨T×-@Ñ-@Ñ@‰JàˆJà,0×,>Ñ,>À(Ò,JÑ(ÐPT×PbÑPbˆÜ# D§L¡L°$·-±-×2IÑ2IÈ#Ó2NÈqÑ2QÒ2iÐUY×UiÑUiÐko×kÑkó  AˆÜ% d×&9Ñ&9¸<ÐIZÓ[ˆØ-1×-?Ñ-?À8Ò-K¡ÐQ\Ð ]Ð]gÐhwÐgxÐyÐÙÙØ—‘×"Ñ"Ð&9Ð%:Ð:RÐS`ÐRaÐabÐ#cÔdØà×0Ñ0ÑEVÑ1AÐ\cÓdˆÙØà×.Ñ.¨{¸LÓIˆ
Ù˜Z¨4×+?Ñ+?Ò?ØØ˜<Ò'Ø.‰NÜ×"Ñ" :Ô.Ø'‰Nà!ˆNàˆä Ô"ðwØ×-Ñ-¨n¸jÓI�ð !Ÿ-™-›/×4Ñ4Ó6ò �BØ—{‘{Ô#3Ó#5Õ6Ø#%§8¡8£:¨a¡=˜Ùðñ  Ø—H‘H×+Ñ+Ð,uÕváÜ& t×':Ñ':¸JÈÓWˆLØ�H‰H×ÑØ# M ?°"Ð5HÐ4IÐJØ9EÈÒ9XÐ& | nÑ5Ð^`ñbôcô ØØ"Ø/Ø'1°\Ò'AÐ#Øôð 	ð HLØôð 	øô "ò 	Ø×&Ñ&Ð)>¸q¸cÀÐ'CÐKhÐ&ÔiÜûð	ûôX &ò lÜ! %¬Ô3°u·|±|ÀsÒ7JØ×.Ñ.Ð1BÀ5À'Ð/JÔKÜØ—‘×'Ñ'Ð(j×kÑkûð	lús5    K ÇK0 Ë	K-ËK(Ë(K-Ë0	MË93MÌ1MÍMc                óh
  — |t         u r| j                  d¬«      }|syt        «       }|r| j                  |d«       y| j                  j                  dt        | j                  «      › �«       t        | j                  |j                  |j                  «      }| j                  j                  d|› d�«       t        j                  j                  | j                  «      }t        j                  | j                  t        j                   «      s| j#                  | j                  «      S t        j                  |t        j                   «      s| j#                  |«      S | j                  › d�| j                  › d�}}t%        «       d	k(  r| j                  d
}}	 t        j                  j'                  |xs d«      rt        j(                  |«       	 | j-                  |j.                  |j                  «      }|j:                  s| j=                  d«       nMt?        j@                  |«      jC                  «       |j:                  k7  r| j9                  d|j                  ¬«      S 	 tE        |d«      5 }	|	jG                  |«       d
d
d
«       |rkt        jH                  | j                  «      jJ                  }
	 t        jL                  | j                  |«       	 t        jL                  || j                  «       t%        «       }|jO                  d«      r?tQ        jR                  tT        d|› d�dtV        jX                  tV        jX                  ¬«       n9|r7	 t        j(                  |«       	 t        jZ                  | j                  
«       | j                  j                  d|› �«       y# t*        $ r | j                  d«      cY S w xY w# t0        $ r{}t3        |t4        «      rA|j6                  dk(  r2| j                  d| j                  › d|j                  › d�d«      cY d
}~S | j9                  d|› �|j                  ¬«      cY d
}~S d
}~ww xY w# 1 sw Y   �ŒÐxY w# t*        $ r | j#                  |«      cY S w xY w# t*        $ r | j                  d«      cY S w xY w# t*        $ r4 | j                  d«       t        jL                  || j                  «      cY S w xY w# t*        $ r | j                  d«       Y �Œ‘w xY w# t*        $ r* | j                  dt]        | j                  «      › �«      cY S w xY w)z…Update yt-dlp executable to the latest version
        @param update_info  `UpdateInfo | None` as returned by query_update()
        Tr.  FzCurrent Build Hash: zUpdating to z ...z.newz.oldr7   Nr*   z Unable to remove the old versionr  r  r¾   z does not existzfetch updates: r  zPAutomatically restarting into unverified builds is disabled for security reasonszverify the new executableÚwbzUnable to move current versionz#Unable to overwrite current versionÚwinz&ping 127.0.0.1 -n 5 -w 1000 & del /F "ú")Úshellr^   r_   z0Unable to set permissions. Run: sudo chmod a+rx zUpdated yt-dlp to )/r
   rA  r…   ré   rÙ   r5  r¼   ÚfilenamerÅ   râ   rÂ   rÃ   r>   r@   rA   ÚaccessÚW_OKÚ_report_permission_errorrX   rN   ÚremoveÚOSErrorrû   rË   r	   rI   r   r  r  rÌ   rè   r±   r²   r¹   rµ   ÚwriteÚstatÚst_modeÚrenamer•   ÚatexitÚregisterr   re   ÚDEVNULLÚchmodr   )rë   Úupdate_infoÚerrr@  Ú	directoryÚnew_filenameÚold_filenameÚ
newcontentr6  ÚoutfÚmaskr   s               rS   r¸   zUpdater.updateë  sd  € ð œ*Ñ$Ø×+Ñ+°DÐ+Ó9ˆKÙØäÓ!ˆÙØ×Ñ˜s DÔ)Øà�‰×ÑÐ1´,¸t¿}¹}Ó2MÐ1NÐOÔPä" 4×#6Ñ#6¸¿¹È×I\ÑI\Ó]ˆØ�‰×Ñ˜\¨,¨°tÐ<Ô=ä—G‘G—O‘O D§M¡MÓ2ˆ	Ü�y‰y˜Ÿ™¬¯©Ô0Ø×0Ñ0°·±Ó?Ð?Ü—‘˜9¤b§g¡gÔ.Ø×0Ñ0°Ó;Ð;à(,¯© °dÐ%;ÀÇÁ¸ÈdÐ=S�lˆÜÓ˜uÒ$Ø)-¯©¸˜,ˆLð	JÜ�w‰w�~‰~˜lÒ0¨bÔ1Ü—	‘	˜,Ô'ð	ZØ×-Ñ-¨k×.EÑ.EÀ{ÇÁÓWˆJð ×#Ò#Ø×ÑÐ rÕsÜ�^‰^˜JÓ'×1Ñ1Ó3°{×7KÑ7KÒKØ×-Ñ-Ð.IÈ{ÏÉÐ-Ó_Ð_ð	?Ü�l DÓ)ð '¨TØ—
‘
˜:Ô&÷'ñ
 Ü—7‘7˜4Ÿ=™=Ó)×1Ñ1ˆDðLÜ—	‘	˜$Ÿ-™-¨Ô6ð>Ü—	‘	˜,¨¯©Ô6ô
 !Ó"ˆØ×Ñ˜eÔ$Ü�O‰OœEÐ%KÈLÈ>ÐYZÐ#[Ø"&¬z×/AÑ/AÌ*×J\ÑJ\ö^áðGÜ—	‘	˜,Ô'ðeÜ—‘˜Ÿ™¨Ô-ð
 	�‰×ÑÐ/°¨~Ð>Ô?Øøôi ò 	JØ×%Ñ%Ð&HÓIÒIð	Jûô
 "ò 	ZÜ˜!œYÔ'¨A¯H©H¸ªOØ×)Ñ)Ø(¨×)<Ñ)<Ð(=¸Q¸{¿¹Ð>OÈÐ_Ðaeógõ gà×-Ñ-°À¸sÐ.CÈÏÉÐ-ÓYÕYûð		Zú÷'ñ 'ûäò 	?Ø×0Ñ0°Ó>Ò>ð	?ûô ò LØ×)Ñ)Ð*JÓKÒKðLûô
 ò >Ø×"Ñ"Ð#HÔIÜ—y‘y ¨t¯}©}Ó=Ò=ð>ûô ò GØ×"Ñ"Ð#E×FðGûô
 ò eØ×)Ñ)ØFÄ{ÐSW×S`ÑS`ÓGaÐFbÐcóeò eðeús¯   Æ8N) Ç&O	 É$Q É0QÊQ Ê6 Q= Ë R ÍS Í* S> Î)OÏOÏ		QÏAQÐQÐ#QÑQÑQÑQÑQ ÑQ:Ñ9Q:Ñ=RÒRÒ:SÓSÓS;Ó:S;Ó>0T1Ô0T1c                óV   — t         j                  j                  t        «       d   «      S )zFilename of the executabler   )r>   r@   r¶   rT   rð   s    rS   rG  zUpdater.filenameA  s"   € ô �w‰w×ÑÔ @Ó BÀ1Ñ EÓFÐFrU   c                ó¾   — t         j                  }|s!t        t         dd«      rt         j                  }|r't	        j
                  d«      r| j                  g|dd ¢}|S )z0The command-line to run the executable, if knownr   Fr!   r   N)r;   Ú	orig_argvr:   rM   r>   r?   rG  )rë   rM   s     rS   ÚcmdzUpdater.cmdF  sO   € ô �}‰}ˆáœ¤ X¨uÔ5Ü—8‘8ˆDá”B—I‘IÐ1Ô2Ø—M‘MÐ- D¨¨ HÐ-ˆDØˆrU   c                óÔ   — | j                   sJ d«       ‚| j                  j                  dt        | j                   «      › �«       t	        j
                  | j                   «      \  }}}|S )zRestart the executablezUnable to determine argvzRestarting: )r`  rÙ   rö   r   r   rc   )rë   r+   Ú
returncodes      rS   ÚrestartzUpdater.restartR  sV   € à�xŠxÐ3Ð3Ó3ˆxØ�‰×Ñ˜|¬K¸¿¹Ó,AÐ+BÐCÔDÜ Ÿ9™9 T§X¡XÓ.Ñˆˆ1ˆjØÐrU   c                ó"   ‡ ‡— ˆˆ fd„}|‰ _         y )Nc                 ó\   •— ‰j                  ‰ › d�d¬«       ‰j                  j                  S )Nz+. Restart yt-dlp to use the updated versionTr	  )ré   rÙ   Ú_download_retcode)Úmsgrë   s   €€rS   Úwrapperz'Updater._block_restart.<locals>.wrapperZ  s/   ø€ Ø×Ñ # Ð&QÐRÐ]aÐÔbØ—8‘8×-Ñ-Ð-rU   )rc  )rë   rg  rh  s   `` rS   rè   zUpdater._block_restartY  s   ù€ õ	.ð ˆ�rU   c                óh   — | j                   j                  ||rdnd ¬«       d| j                   _        y )NF)Útbéd   )rÙ   Úreport_errorrf  )rë   rg  r
  s      rS   ré   zUpdater._report_error_  s)   € Ø�‰×Ñ˜c©x¡e¸TÐÔBØ%(ˆ�‰Õ"rU   c                ó0   — | j                  d|› d�d«       y )NzUnable to write to z; try running as administratorT)ré   )rë   Úfiles     rS   rJ  z Updater._report_permission_errorc  s   € Ø×ÑÐ0°°Ð6TÐUÐW[Õ\rU   c           	     ó†   — |s| j                   }|dk(  r|nd|› �}| j                  d|› |› d| j                  › d|› �d«       y )NrÕ   ztag/z
Unable to z visit  https://github.com/rõ   T)rÝ   ré   râ   )rë   Úactionr1  rÂ   r@   s        rS   r  zUpdater._report_network_errorf  s]   € ÙØ×$Ñ$ˆCØ˜X’o‰s¨T°#°¨<ˆØ×ÑØ˜˜  ð ("Ø"&×"5Ñ"5Ð!6°jÀÀðHØIMõ	OrU   r¬   )rì   rÈ   )rÂ   r”   Úreturnztuple[str | None, str | None])r&  r”   r'  r”   )r,  r”   r-  r”   )rq  zUpdateInfo | None)F)ú;N)rÍ   rÎ   rÏ   r   rÚ   r   rã   ÚUPDATE_SOURCESrÞ   rî   Úpropertyrñ   ró   rû   r  r  r  r*  r%  rA  r
   r¸   Ú	functoolsÚcached_propertyrG  r`  rc  rè   ré   rJ  r  rW   rU   rS   rÓ   rÓ     sÇ   „ à€HØ€GØ$€Oô$GðL ñó ðð ñ ó ð ó,òó3ò.óó<ð ',õ Nð` ",ó Tðl ×ÑñGó ðGð ×Ññ	ó ð	òòó)ò]ôOrU   rÓ   c                óJ   — t        d«       t        | «      j                  «       S )z’Update the program file with the latest version from the repository
    @returns    Whether there was a successful update (No update = False)
    z‡"yt_dlp.update.run_update(ydl)" is deprecated and may be removed in a future version. Use "yt_dlp.update.Updater(ydl).update()" instead)r   rÓ   r¸   )rÙ   s    rS   Ú
run_updaterx  o  s&   € ô ð	<ô=ô �3‹<×ÑÓ Ð rU   r¬   )CÚ
__future__r   rQ  r`   r¡   rŸ   ru  r±   r   r>   rB   rg   re   r;   Údataclassesr   Ú	zipimportr   Ú
networkingr   Únetworking.exceptionsr   r	   Úutilsr
   r   r   r   r   r   r   r   rÃ   r   r   r   r   r   r   rs  Ú
REPOSITORYÚitemsrÀ   Úcompiler  r  r  rÿ   ÚAPI_URLÚcacherT   rX   rj   rŠ   ÚdictÚfromkeysrƒ   r…   r‹   r›   r§   r¼   rÅ   rÇ   rÓ   rx  Ú__all__)ÚkeyÚvalues   00rS   ú<module>r‰     sä  ðÝ "ã Û Û Û Û Û Û 	Û Û 	Û Û 
Ý !Ý !å ß @÷	÷ 	ó 	÷÷ ð Ø-Ø+ñ€ð
 ˜HÑ%€
Ø8F×8LÑ8LÓ8N×O©*¨#¨u˜5 #™:ÓOÐ àˆb�j‰j˜Ó(€Ø€ØˆR�Z‰ZÐTÐUbÐTcÐcdÐeÓf€
à-€ð ˆN˜!˜J˜< yÐ
1€ð ‡�ñ7ó ð7òt<ð ‡�ñ	"ó ð	"ð ØØØ!ØØØ)Ø!Ø1ñ
€ð	Ø
‡m�m�NÓ#ð	à
‡m�mØ	ÐpÑoÀNÔoÐpØaócð	ð
 [ØcØgØVò	Ð òVòjò[ò6ò óð ÷ ð  ó ð ÷<gOñ gOòT!ð ˆ+�ùó[ Ps   ÂE0