ó
    &+Til=  ã                   óâ   • S SK r S SKrS SKrS SKrS SKrS SKrS SKJr   S SKJ	r	J
r
  S SKr\R                   S:X  a  SOSrSS jrSS jr " S	 S
5      rg! \ a    S SKrS SKJ	r	J
r
  S SKr NAf = f)é    N)ÚBytesIO)ÚurlopenÚRequestÚntéx   éP   c                 ón  ^^• U S:X  a  gU(       a  / SQO/ SQnU(       a  SOSn[        U 5      n0 mU H  nUTU'   Xv-  nM     T(       a  [        U4S jU 5       S 5      OTmT(       a  TO[        U4S jUS S S2    5       S	5      n	[        U5      nUS:  a  SO	US:”  a  SOUn[        TU	   U5      n
[	        U
5      R                  S5      u  p¼U(       a  UR                  S5      OUS:”  a  UR                  US5      OSnSR                  [        U5      U(       d  SU	5      $ SU-   U	5      $ !   S
n N¢= f)NéÿÿÿÿÚUnknown)ÚBÚKiBÚMiBÚGiBÚTiBÚPiB)r   ÚKBÚMBÚGBÚTBÚPBé   iè  c              3   ón   >#   • U  H*  oR                  5       TR                  5       :X  d  M&  Uv •  M,     g 7f©N)Úlower)Ú.0ÚxÚsuffixs     €ÚA/Applications/ProperTree.app/Contents/MacOS/Scripts/downloader.pyÚ	<genexpr>Úget_size.<locals>.<genexpr>#   s$   øé € ÐAšc˜§W¡W£Y°&·,±,³.Ñ%@—1‘1šcùs   ƒ%5¬	5c              3   ó>   >#   • U  H  nTU   S :¼  d  M  Uv •  M     g7f)é   N© )r   r   Ús_dicts     €r   r   r    %   s   øé € Ð)Q²Y°À&ÈÁ)ÈqÁ.¯!©!²Yùs   ƒ”	r   é   r   é   Ú.Ú0Ú z	{:,}{} {})	ÚfloatÚnextÚintÚroundÚstrÚsplitÚrstripÚljustÚformat)Úsizer   Úuse_1024Úround_toÚstrip_zeroesÚextÚdivÚsÚeÚbiggestÚbvalÚaÚbr$   s    `           @r   Úget_sizer?      s   ù€ ð ˆrƒzØæ19Ó
-Ò?]€CÞ‰$ €CÜˆd‹€AØ€FãˆØˆˆq‰	Ø	‰Šñ ö LRŒTÔA™cÓAÀ$ÔGÐW]€Fæ‰f¤DÔ)Q°S¹¸2¸²YÓ)QÐSVÓ$W€Gä�X“ˆà˜q“L‰q¨H°r«M¡b¸x€HÜ�˜‘ (Ó+€Dä
ˆd‹)�/‰/˜#Ó
�C€Aæ%ˆ�‰�ŒÀHÈqÃL¨1¯7©7°8¸CÔ+@ÐVX€AØ×Ñœc !›f®q R¸GÓDÐD°c¸!±e¸GÓDÐDøð �AŠ8ús   ÂD. Ä.D4c                 ó`  • / nS=pg[         R                   " 5       n US:”  aÃ  [        U5      U-  n	[        U	S-  S5      n	[        U5      n
 [        X*R	                  S5      S   5      nSR                  U	5      n[        S-  [        U5      -
  nS	[        XÙS-  -  5      -  n[        R                  R                  S
R                  UU
USU[        U5      -
  -  UUU5      5        O9[        U5      n[        R                  R                  SR                  X¶5      5        [        R                  R                  5          U R                  US9nUS:X  a  [        S5        g UR                  U5        US:”  a  XT* S  nX/S   -  n[         R                   " 5       nU(       Ga1  UU-
  U:¼  Ga'  UnSn[        U5      S:”  Ga   US   S   US   S   nn['        U Vs/ s H  n[        US   5      PM     sn5      nUU-
  nUS:¼  d   eSU-  U-  nSR                  [        USS95      nUS:”  a¤  X-
  U-  nUS-  nUUS-  -
  S-  nUUS-  -
  US-  -
  S-  nUUS-  -
  US-  -
  US-  -
  nUS:”  d  US:X  a  SnOYSR                  U(       a  SR                  [        U5      5      OS[        U5      [        U5      [        [        U5      5      5      n/ nGM¶  !   [        U5      n GNz= f! [         R"                   a    / nSnUS:”  a  SOSn GN‰[$         a    [        S5         g f = fs  snf !    N`= f)Nr)   r   éd   r%   Ú r"   z {:.2f}%é   Ú=z[K{}/{} | {}{}{}{}{}z[K{}{})ÚtimeoutÚDONEz | 0 B/sz
 | ?? leftz	 | ?? B/sr
   ç      ð?z | {}/s)r5   i€Q i  é<   éc   z | {}{:02d}:{:02d}:{:02d} leftz{}:)Útimer*   r-   r?   r/   r2   ÚTERMINAL_WIDTHÚlenr,   ÚsysÚstdoutÚwriteÚflushÚgetÚprintÚappendÚqÚEmptyÚKeyboardInterruptÚsum)ÚqueueÚ
total_sizeÚbytes_so_farÚupdate_intervalÚmax_packetsÚpacketsÚspeedÚ	remainingÚlast_updateÚpercentÚt_sÚb_sÚperc_strÚ	bar_widthÚprogressÚpacketÚupdate_checkÚfirstÚlastr   ÚchunksÚtÚbytes_speedÚseconds_leftÚdaysÚhoursÚminsÚsecss                               r   Ú_process_hookrs   1   sN  € Ø€GØÐ€EÜ—)’)“+€KØ
ð ˜‹>Ü˜LÓ)¨JÑ6ˆGÜ˜G C™K¨Ó+ˆGÜ˜:Ó&ˆCð-Ü˜|¯Y©Y°s«^¸AÑ->Ó?�ð "×(Ñ(¨Ó1ˆHÜ'¨1Ñ,¬c°(«mÑ;ˆIØœS °c©kÑ!:Ó;Ñ;ˆHÜ�J‰J×ÑÐ9×@Ñ@ØØØØ�y¤ X£Ñ.Ñ/ØØØóõ ô ˜<Ó(ˆCÜ�J‰J×Ñ˜^×2Ñ2°3Ó>Ô?Ü�
‰
×ÑÔð	Ø—Y‘Y �YÐ7ˆFð
 ˜ÓÜ�b”	Øð �N‰N˜6Ô"Ø˜Q‹Ø! , -Ð0�à 1™IÑ%ˆLô —y’y“{ˆß�| kÑ1°_ÔDØ&ˆKØˆEÜ�7‹|˜aÔðØ!(¨¡¨A¡¨w°r©{¸1©~˜$�EÜ ±wÓ!?²w°!¤%¨¨!©¦+±wÑ!?Ó@�FØ˜U™
�AØ ›6�M˜6Ø"$ q¡&¨6¡/�KØ%×,Ñ,¬X°kÈ1Ñ-MÓN�Eà! A“~Ø(2Ñ(?À;Ñ'N˜Ø ,°Ñ 5˜Ø!-°°e±Ñ!<ÀÑ E˜Ø!-°°e±Ñ!<ÀÀdÁ
Ñ!KÐPRÑ R˜Ø ,°°U±
Ñ ;¸uÀT¹zÑ JÈdÐSUÉgÑ V˜Ø "›9¨°qÓ(8Ø(4™Ià(H×(OÑ(OÞ;? §¡¬S°«YÔ 7ÀRÜ # E£
Ü # D£	Ü #¤E¨$£KÓ 0ó	)˜Ið �òq øð-Ü˜|Ó,“ûôF �w‰wó 	?ð ˆGØˆEØ(2°Q«™¸B‹IÜ ó 	Ü�"ŒIÙð	üò "@øð*ÙúsP   ÁK Ä= K% Å#K% Æ=L) ÇL$Ç.BL) É4AL) ËK"Ë%"L!Ì
L!Ì L!Ì$L) Ì)L-c                   ób   • \ rS rSrS rSS jrS rSS jrSS jrS r	SS	 jr
SS
 jrSS jrSrg)Ú
Downloaderé�   c                 óô  • UR                  SSS05      U l        S U l        SU l        SU l        SU l        SU l        [        R                  S:X  a  [        R                  " S	5        [        R                  " 5       R                  n [        R                  R                  U5      (       d  S
S KnUR!                  5       n[        R"                  " US9U l        g !   [        R&                  " 5       U l         g = f)NÚ	useragentz
User-AgentÚMozillar   i  @ gš™™™™™¹?g      ø?r   Úcolorr   )Úcafile)rQ   ÚuaÚchunkÚ	min_chunkÚ	max_chunkÚ
chunk_rateÚchunk_growthÚosÚnameÚsystemÚsslÚget_default_verify_pathsÚopenssl_cafileÚpathÚexistsÚcertifiÚwhereÚcreate_default_contextÚssl_contextÚ_create_unverified_context)ÚselfÚkwargsr{   rŠ   s       r   Ú__init__ÚDownloader.__init__‘   sÂ   € Ø—*‘*˜[¨,°yÐ)AÓBˆŒØˆŒ
ØˆŒØ(ˆŒØˆŒØˆÔÜ�7‰7�D‹=œ"Ÿ)š) GÔ,ä×-Ò-Ó/×>Ñ>ˆð	@ä—7‘7—>‘> &×)Ñ)ÛØ Ÿ™›�Ü"×9Ò9ÀÑHˆDÔð 	øð	@ä"×=Ò=Ó?ˆDÕØús   ÂAC ÃC7c                 óz   • [         R                  S:¼  a&  [        U[        5      (       a  UR	                  X#5      $ U$ )N)rC   r   )rM   Úversion_infoÚ
isinstanceÚbytesÚdecode)r�   ÚvalueÚencodingÚerrorss       r   Ú_decodeÚDownloader._decode¦   s0   € ä×Ñ˜uÓ$¬°E¼5×)AÑ)AØ—<‘< Ó0Ð0Øˆó    c                 ób  •  [         R                  R                  [        R                  S   R
                  5      n[         R                  R                  U5      (       d  g [         R                  R                  U5      R                  5       n[         R                  R                  U5      n[         R                  " U5       HR  nUR                  5       U:X  d  M  [         R                  R                  XE5      nU[        R                  S   l        Us  $    g ! [         a
  n S nAg S nAff = f)NÚ__main__)r‚   rˆ   ÚabspathrM   ÚmodulesÚ__file__ÚAttributeErrorÚisfileÚbasenamer   ÚdirnameÚlistdirÚjoin)r�   rˆ   r:   rƒ   ÚfldrÚfÚnew_paths          r   Ú_update_main_nameÚDownloader._update_main_name¬   sÖ   € ð	Ü—7‘7—?‘?¤3§;¡;¨zÑ#:×#CÑ#CÓDˆDô
 �w‰w�~‰~˜d×#Ñ#Øä�w‰w×Ñ Ó%×+Ñ+Ó-ˆÜ�w‰w�‰˜tÓ$ˆô —’˜DÖ!ˆAØ�w‰w‹y˜DÕ äŸ7™7Ÿ<™<¨Ó/�Ø3;”—‘˜JÑ'Ô0Ø’ñ "ð øô% ó 	ô ûð	ús   ‚:D Ä
D.Ä)D.Nc                 ón   • [        U[        5      (       a  UOU R                  n0 nU H	  nX$   X4'   M     U$ r   )r•   Údictr|   )r�   ÚheadersÚtargetÚnew_headersÚks        r   Ú_get_headersÚDownloader._get_headersÉ   s9   € ä& w¬t×4Ñ4‘¸$¿'¹'ˆØˆó ˆAØ#™YˆK‹Nñ àÐr�   c                 óŽ   • U R                  U5      n [        [        XS9U R                  S9nU$ ! [         a
  n S nAg S nAff = f)N)r°   )Úcontext)r´   r   r   r�   Ú	Exception)r�   Úurlr°   Úresponser:   s        r   Úopen_urlÚDownloader.open_urlÓ   sJ   € Ø×#Ñ# GÓ,ˆð	Üœw sÑ<Àd×FVÑFVÑWˆHð ˆøô ó 	äûð	ús   “0 °
A¿Ac                 ó   • [        U0 UD6$ r   )r?   )r�   Úargsr�   s      r   r?   ÚDownloader.get_sizeÝ   s   € Ü˜Ð' Ñ'Ð'r�   c                 óP   • U R                  XX45      nUc  g U R                  U5      $ r   )Ú	get_bytesr›   )r�   r¹   rf   r°   Úexpand_gziprº   s         r   Ú
get_stringÚDownloader.get_stringà   s)   € Ø—>‘> #¨wÓCˆØÑ DØ�|‰|˜HÓ%Ð%r�   c                 óJ  • U R                  X5      nUc  g [        UR                  S   5      nSnS =n=pšU(       aŠ  U(       a  / OS n[        R                  " 5       n	[        R
                  " [        X–4S9n
SU
l        [        R                  S:X  a%  [        [        S5      (       a  U R                  5         U
R                  5          U R                  =(       d    SnU R                  (       + n [        R                  " 5       nUR!                  U5      n[        R                  " 5       U-
  nU(       a/  U	R#                  [        R                  " 5       [%        U5      45        U(       d  O~X~-  nU(       aq  [        [%        U5      U-  U R&                  -  5      n[)        X°R*                  -  5      n[-        [/        U R0                  U5      U5      n[-        UU R2                  5      nMú  UR5                  5         U(       a]  UR                  R7                  S	S
5      R9                  5       S:X  a/  [;        U5      n[<        R>                  " US9nUR!                  5       $ U(       a!  U	R#                  S5        U
RA                  5         U$ !   Sn GN_= f! UR5                  5         f = f)NúContent-Lengthr
   r�   ©r±   r¾   Tr   Úforkingr   zContent-EncodingÚunknownÚgzip)ÚfileobjrF   )!r»   r,   r°   ÚmultiprocessingÚQueueÚProcessrs   Údaemonr‚   rƒ   Úhasattrr¬   Ústartr}   rJ   Úperf_counterÚreadÚputrL   r€   r-   r�   ÚminÚmaxr~   r   ÚcloserQ   r   r   rÊ   ÚGzipFiler¨   )r�   r¹   rf   r°   rÂ   rº   rY   Úchunk_so_farr]   rX   ÚprocessÚ
chunk_sizeÚauto_chunk_sizerl   r}   Ú
chunk_timer€   Úchunk_change_maxÚchunk_rate_clampedrË   Úgfiles                        r   rÁ   ÚDownloader.get_byteså   s  € Ø—=‘= Ó.ˆØÑ DÜ˜h×.Ñ.Ð/?Ñ@ÓAˆZàˆØ$(Ð(ˆÐ(�%Þæ$‘b¨$ˆGÜ#×)Ò)Ó+ˆEä%×-Ò-Ü$ØÐ'ñˆGð "ˆGŒNä�w‰w˜$‹¤7¬?¸9×#EÑ#EØ×&Ñ&Ô(Ø�M‰MŒOð	ØŸ™×+ tˆJØ"&§*¡*œnˆOØÜ×%Ò%Ó'�Ø Ÿ™ jÓ1�Ü!×.Ò.Ó0°Ñ2�
Þà—I‘IœtŸyšy›{¬3¨u«:Ð6Ô7Þ˜eØÑ%�Þ"ä!$¤S¨£Z°*Ñ%<¸t¿¹Ñ%NÓ!O�JÜ',¨Z×:KÑ:KÑ-KÓ'LÐ$Ü),¬S°·±ÀÓ-LÐN^Ó)_Ð&Ü!$Ð%7¸¿¹Ó!H�Jñ ð" �N‰NÔÞ˜8×+Ñ+×/Ñ/Ð0BÀ9ÓM×SÑSÓUÐY_Ó_Ü˜lÓ+ˆGÜ—m’m¨GÑ4ˆEØ—:‘:“<ÐÞà�I‰I�fÔØ�L‰LŒNØÐøð] 	 ˜R“
ûðJ �N‰NÕús   –J ÃD!J ÊJÊJ"c                 óÚ  • U R                  X5      nUc  g Sn[        UR                  S   5      n	S =n
=p¼SnU(       a¦  [        R                  R                  U5      (       a‚  U	S:w  a|  [        R                  " U5      R                  nXé:X  a  U$ Xé:  aP  UR                  5         UnSnU R                  U5      nSR                  U5      nUUS'   U R                  X5      nUc  g U(       a‹  U(       a  / OS n
[        R                  " 5       n[        R                  " [        X¹U4S9nS	Ul        [        R                   S
:X  a%  [#        [        S5      (       a  U R%                  5         UR'                  5         [)        X-5       nU R*                  =(       d    SnU R*                  (       + n  [,        R.                  " 5       nUR1                  U5      n[,        R.                  " 5       U-
  nU[3        U5      -  nU(       a/  UR5                  [,        R,                  " 5       [3        U5      45        U(       d  O�UR7                  U5        U(       ar  [        [3        U5      U-  U R8                  -  5      n[;        UU R<                  -  5      n[?        [A        U RB                  U5      U5      n[?        UU RD                  5      nGM  UR                  5          S S S 5        U(       a!  UR5                  S5        URG                  5         U(       a  U	S:w  a  X‰:w  a  g [        R                  RI                  U5      (       a  U$ S $ !   Sn	 GN= f! UR                  5         f = f! , (       d  f       N�= f)Nr   rÆ   r
   ÚwbÚabz	bytes={}-ÚRangerÇ   Tr   rÈ   r   rF   )%r»   r,   r°   r‚   rˆ   r¤   ÚstatÚst_sizer×   r´   r2   rÌ   rÍ   rÎ   rs   rÏ   rƒ   rÐ   r¬   rÑ   Úopenr}   rJ   rÒ   rÓ   rL   rÔ   rO   r€   r-   r�   rÕ   rÖ   r~   r   r¨   r‰   )r�   r¹   Ú	file_pathrf   r°   Úensure_size_if_presentÚallow_resumerº   rZ   rY   r]   rX   rÚ   ÚmodeÚcurrent_sizer²   Úbyte_stringrª   rÛ   rÜ   rl   r}   rÝ   r€   rÞ   rß   s                             r   Ústream_to_fileÚDownloader.stream_to_file  sÁ  € Ø—=‘= Ó.ˆØÑ DØˆÜ˜h×.Ñ.Ð/?Ñ@ÓAˆZà$(Ð(ˆÐ(�%ØˆÞœBŸG™GŸN™N¨9×5Ñ5¸*ÈÓ:Jô Ÿ7š7 9Ó-×5Ñ5ˆLØÓ)à Ð ØÓ*Ø—‘Ô à+�Ø�ð #×/Ñ/°Ó8�à)×0Ñ0°Ó>�Ø'2�˜GÑ$ØŸ=™=¨Ó:�ØÑ#¨DÞæ$‘b¨$ˆGÜ#×)Ò)Ó+ˆEä%×-Ò-Ü$Ø |Ð4ñˆGð "ˆGŒNä�w‰w˜$‹¤7¬?¸9×#EÑ#EØ×&Ñ&Ô(Ø�M‰MŒOÜ�)Ô! QØŸ™×+ tˆJØ"&§*¡*œnˆOð!ØÜ×)Ò)Ó+�AØ$ŸM™M¨*Ó5�EÜ!%×!2Ò!2Ó!4°QÑ!6�JØ ¤C¨£JÑ.�LÞàŸ	™	¤4§9¢9£;¬s°5«zÐ":Ô;Þ  %Ø—G‘G˜E”NÞ&ä%(¬¨U«°jÑ)@À4Ç?Á?Ñ)RÓ%S˜
Ü+0°¸d×>OÑ>OÑ1OÓ+PÐ(Ü-0´°T·^±^ÀZÓ1PÐRbÓ-cÐ*Ü%(Ð);¸T¿^¹^Ó%L˜
ò ð$ —‘Õ ÷- "ö. à�I‰I�fÔØ�L‰LŒNÞ! j°BÓ&6àÓ)ØÜŸG™GŸN™N¨9×5Ñ5ˆyÐ?¸4Ð?øðI 	 ˜R“
ûðv —‘Õ ú÷- "Õ!ús0   ˜L= Æ'MÆ)DMËMÌ=MÍMÍMÍ
M*)r}   r�   r€   r   r~   r�   r|   )zutf-8Úignorer   )TNT)TNTF)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r‘   r›   r¬   r´   r»   r?   rÃ   rÁ   rï   Ú__static_attributes__r#   r�   r   ru   ru   �   s2   † òô*òô:ôò(ô&ô
2÷hI@r�   ru   )NFr%   F)r   rG   r   )rM   r‚   rJ   r…   rÊ   rÌ   Úior   Úurllib.requestr   r   rX   rT   ÚImportErrorÚurllib2rÍ   rƒ   rK   r?   rs   ru   r#   r�   r   Ú<module>rû      sf   ðß 0× 0× 0Ý ðß/Ûð Ÿ™ ›‘¨2€ô EôD\÷|S@ò S@øðQ ó ãß(Ýð	ús    A ÁA.Á-A.