Ë
    Fêñiá?  ã                  ó¾  — d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	  ed¬«      d5d„«       Z
 G d„ d	«      Zed
k(  �rd dlZ ed«        e ed«      d¬«      D ]  Z ej                   d«       Œ  ed«        eddd¬«      Z ed«      D ]H  Z ej                   d«       ej%                  d«       edz  dk(  sŒ/ej'                  dedz  dz   › �«       ŒJ ej)                  «         ed«        edd¬«      Z ed«      D ]D  Z ej                   d«       ej%                  d«       edz  d k(  sŒ/ej+                  edz   d!¬"«       ŒF ej)                  «         ed#«        ed$d%d&d'¬(«      5 Z ed)«      D ](  Z ej                   d*«       ej%                  d+ez  «       Œ* 	 ddd«        ed,«       d-„ Z e e«       d.d/¬«      D ]  Z ej                   d*«       Œ  ed0«       d1„ Z ed2d¬«      Z e«       Z ee«      D ]<  \  ZZ ej                   d3«       ej%                  d«       ej'                  d4e› �«       Œ> ej)                  «        yy# 1 sw Y   Œ°xY w)6é    )ÚannotationsN)Ú	lru_cache)ÚIOÚAnyé   )Úmaxsizec                 óN   — dt         j                  v xs dt         j                  v S )z5Check for known non-interactive console environments.ÚGITHUB_ACTIONSÚRUNPOD_POD_ID)ÚosÚenviron© ó    úX/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/ultralytics/utils/tqdm.pyÚis_noninteractive_consoler      s!   € ð œrŸz™zÐ)ÒJ¨_ÄÇ
Á
Ð-JÐJr   c                  ó  — e Zd ZdZdZdZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z	dd	„Z
edd
„«       Zddd„Zd d„Zd!d"d„Z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ed+d,d„«       Zy)-ÚTQDMaõ  Lightweight zero-dependency progress bar for Ultralytics.

    Provides clean, rich-style progress bars suitable for various environments including Weights & Biases, console
    outputs, and other logging systems. Features zero external dependencies, clean single-line output, rich-style
    progress bars with Unicode block characters, context manager support, iterator protocol support, and dynamic
    description updates.

    Attributes:
        iterable (Any): Iterable to wrap with progress bar.
        desc (str): Prefix description for the progress bar.
        total (int | None): Expected number of iterations.
        disable (bool): Whether to disable the progress bar.
        unit (str): String for units of iteration.
        unit_scale (bool): Auto-scale units flag.
        unit_divisor (int): Divisor for unit scaling.
        leave (bool): Whether to leave the progress bar after completion.
        mininterval (float): Minimum time interval between updates.
        initial (int): Initial counter value.
        n (int): Current iteration count.
        closed (bool): Whether the progress bar is closed.
        bar_format (str | None): Custom bar format string.
        file (IO[str]): Output file stream.

    Methods:
        update: Update progress by n steps.
        set_description: Set or update the description.
        set_postfix: Set postfix for the progress bar.
        close: Close the progress bar and clean up.
        refresh: Refresh the progress bar display.
        clear: Clear the progress bar from display.
        write: Write a message without breaking the progress bar.

    Examples:
        Basic usage with iterator:
        >>> for i in TQDM(range(100)):
        ...     time.sleep(0.01)

        With custom description:
        >>> pbar = TQDM(range(100), desc="Processing")
        >>> for i in pbar:
        ...     pbar.set_description(f"Processing item {i}")

        Context manager usage:
        >>> with TQDM(total=100, unit="B", unit_scale=True) as pbar:
        ...     for i in range(100):
        ...         pbar.update(1)

        Manual updates:
        >>> pbar = TQDM(total=100, desc="Training")
        >>> for epoch in range(100):
        ...     # Do work
        ...     pbar.update(1)
        >>> pbar.close()
    g{®Gáz„?g333333Ó?i@B g      N@Nc                óÂ  — |€!	 ddl m}m} | xs |j                  «       dkD  }|| _        |xs d| _        |xs t        |d«      rt        |«      ndxs d| _	        || _
        || _        |	| _        |
| _        || _        t        «       | _        | j                   rt#        || j$                  «      n|| _        || _        || _        |xs t,        j.                  | _        | j(                  | _        | j(                  | _        t7        j6                  «       | _        t7        j6                  «       | _        d| _        d| _        |	xr |d	v | _         | j@                  rg d
¢n4dd| j                  › d�fdd| j                  › d�fdd| j                  › d�fg| _!        | j                  s+| j                  r| j                   s| jE                  «        yyyy# t        $ r d}Y �Œ¹w xY w)a‡  Initialize the TQDM progress bar with specified configuration options.

        Args:
            iterable (Any, optional): Iterable to wrap with progress bar.
            desc (str, optional): Prefix description for the progress bar.
            total (int, optional): Expected number of iterations.
            leave (bool, optional): Whether to leave the progress bar after completion.
            file (IO[str], optional): Output file stream for progress display.
            mininterval (float, optional): Minimum time interval between updates (default 0.1s, 60s in GitHub Actions).
            disable (bool, optional): Whether to disable the progress bar. Auto-detected if None.
            unit (str, optional): String for units of iteration (default "it" for items).
            unit_scale (bool, optional): Auto-scale units for bytes/data units.
            unit_divisor (int, optional): Divisor for unit scaling (default 1000).
            bar_format (str, optional): Custom bar format string.
            initial (int, optional): Initial counter value.
            **kwargs (Any): Additional keyword arguments for compatibility (ignored).
        Nr   )ÚLOGGERÚVERBOSEé   FÚ Ú__len__ç        >   ÚBÚbytes))i   @zGB/s)é   zMB/s)é   zKB/sg    eÍÍAÚGú/sg    €„.AÚMg     @�@ÚK)#Úultralytics.utilsr   r   ÚgetEffectiveLevelÚImportErrorÚiterableÚdescÚhasattrÚlenÚtotalÚdisableÚunitÚ
unit_scaleÚunit_divisorÚleaver   ÚnoninteractiveÚmaxÚNONINTERACTIVE_MIN_INTERVALÚminintervalÚinitialÚ
bar_formatÚsysÚstdoutÚfileÚnÚlast_print_nÚtimeÚlast_print_tÚstart_tÚ	last_rateÚclosedÚis_bytesÚscalesÚ_display)Úselfr&   r'   r*   r/   r8   r3   r+   r,   r-   r.   r5   r4   Úkwargsr   r   s                   r   Ú__init__zTQDM.__init__P   s¿  € ðD ˆ?ð ß=à%˜+ÒH¨×)AÑ)AÓ)CÀbÑ)H�ð !ˆŒØ’J˜BˆŒ	ØÒ_´¸À)Ô0Lœs 8œ}ÐRVÒ_Ð[_ˆŒ
ØˆŒØˆŒ	Ø$ˆŒØ(ˆÔØˆŒ
Ü7Ó9ˆÔØQU×QdÒQdœ3˜{¨D×,LÑ,LÔMÐjuˆÔØˆŒð %ˆŒàÒ&œCŸJ™JˆŒ	ð —‘ˆŒØ ŸL™LˆÔÜ ŸI™I›KˆÔÜ—y‘y“{ˆŒØˆŒØˆŒØ"Ò= t¨~Ð'=ˆŒð �}Š}ó Fà˜!˜DŸI™I˜; bÐ)Ð*¨S°A°d·i±i°[ÀÐ2CÐ,DÀsÈaÐPT×PYÑPYÈ{ÐZ\ÐL]ÐF^Ð_ð 	Œð �|Š| §
¢
°4×3FÒ3FØ�M‰M�Oð 4G 
ˆ|øôE ò  Ø“ð ús   „ G ÇGÇGc                óþ   ‡— ‰dk  ry‰rd‰z  nd}|r)|dkD  r$| j                   r|d›d�S |d›d| j                  › �S | j                   r‰d›d�n‰d›| j                  › d	�}t        ˆfd
„| j                  D «       |«      S )zHFormat rate with units, switching between it/s and s/it for readability.r   r   r   Nú.1fzs/Bzs/zB/sr    c              3  óD   •K  — | ]  \  }}‰|k\  sŒ‰|z  d ›|› �–— Œ y­w)rG   Nr   )Ú.0ÚtÚuÚrates      €r   ú	<genexpr>z$TQDM._format_rate.<locals>.<genexpr>©   s*   øè ø€ ÒO©d¨a°ÀTÈQÃY˜˜q™ �~ a SÔ)ÑOùs   ƒ ‘ )r@   r,   ÚnextrA   )rC   rL   Úinv_rateÚfallbacks    `  r   Ú_format_ratezTQDM._format_rateœ   s–   ø€ à�1Š9Øá#�1�t’8¨ˆñ ˜ 1šØ+/¯=ª=�h˜s�^ 3Ð'Ð\ÀÈ#ÀÈbÐQU×QZÑQZÐP[Ð>\Ð\ð (,§}¢}�d˜3�Z˜sÑ#¸TÀ#¸JÀtÇyÁyÀkÐQSÐ:TˆÜÓO°d·k±kÔOÐQYÓZÐZr   c                óØ   — | j                   r| j                  st        |«      S dD ]=  }t        |«      | j                  k  r|r
|d›|› d�c S |d›d�c S || j                  z  }Œ? |d›d�S )z)Format number with optional unit scaling.)r   r"   r!   r   ÚTz3.1fr   ú.0frG   ÚPB)r-   r@   ÚstrÚabsr.   )rC   Únumr,   s      r   Ú_format_numzTQDM._format_num«   s{   € à�Š d§m¢mÜ�s“8ˆOà,ò 	%ˆDÜ�3‹x˜$×+Ñ+Ò+Ù/3˜#˜d˜ D 6¨Ð+ÒF¸CÀ¸9ÀA¸ÒFØ�4×$Ñ$Ñ$‰Cð	%ð �c�˜"ˆ~Ðr   c                ó¬   — | dk  r| d›d�S | dk  rt        | dz  «      › d| dz  d›�S t        | dz  «      t        | dz  dz  «      }}|› d|d›d| dz  d›�S )zFormat time duration.é<   rG   Úsi  ú:z02.0fÚ02d)Úint)ÚsecondsÚhÚms      r   Ú_format_timezTQDM._format_time¶   sƒ   € ð �RŠ<Ø˜c�] !Ð$Ð$Ø�tŠ^Ü˜' R™-Ó(Ð)¨¨7°R©<¸Ð*>Ð?Ð?ä�w $‘Ó'¬¨g¸©nÀÑ-CÓ)DˆqˆAØ�S˜˜!˜C˜  '¨B¡,¨uÐ!5Ð6Ð6r   c                ó  — | j                   €| j                  rd|z  S d|z  S t        d| j                  | j                   z  «      }t	        ||z  «      }d|z  d||z
  z  z   }||k  r||z  |z
  dkD  r|d| › d||dz   d › �}|S )zGenerate progress bar.Nu   â”�u   â”€g      ð?g      à?u   â•¸r   )r*   r?   Úminr9   r_   )rC   ÚwidthÚfracÚfilledÚbars        r   Ú_generate_barzTQDM._generate_barÁ   s¡   € à�:‰:ÐØ$(§K¢K�5˜5‘=ÐB°U¸U±]ÐBä�3˜Ÿ™ §¡Ñ+Ó,ˆÜ�T˜E‘\Ó"ˆØ�f‰n˜u¨°©Ñ7Ñ7ˆØ�EŠ>˜d U™l¨VÑ3°cÒ9Ø˜˜&�\�N # c¨&°1©*¨,Ð&7Ð%8Ð9ˆCØˆ
r   c                ó�   — | j                   ry| j                  duxr | j                  | j                  k\  xs || j                  k\  S )zCheck if display should update.FN)r0   r*   r9   r3   )rC   ÚdtÚdns      r   Ú_should_updatezTQDM._should_updateÍ   s?   € à×ÒØØ—
‘
 $Ð&Ò?¨4¯6©6°T·Z±ZÑ+?Ò\ÀRÈ4×K[ÑK[ÑE[Ð\r   c                ó‚  — | j                   s| j                  r|syt        j                  «       }|| j                  z
  }| j                  | j
                  z
  }|s| j                  ||«      sy|| j                  kD  rV|r||z  nd}|| j                  k  rJ| j                  |z  d| j                  z
  | j                  z  z   | _
        | j                  }n| j                  }| j                  r<| j                  | j                  k\  r#|| j                  z
  }|dkD  r| j                  |z  }| j                  | _        || _        || j                  z
  }d}| j                  rhd| j                  cxk  r| j                  k  rIn nF|dkD  rA|xs | j                  |z  }	d| j                  | j                  | j                  z
  |	z  «      › �}| j                  r{| j                  | j                  z  dz  }
| j                  | j                  «      }| j                  | j                  «      }| j                  r<|d   |d   k(  r1|j!                  d	«      }nd}
| j                  | j                  «      d
}}| j                  |«      }| j#                  |«      xs% |dkD  r| j#                  | j                  |z  «      nd}| j%                  «       }| j                  rh| j                  r8| j                  | j                  k\  r| j&                  › d|
d›d|› d|› d|› d|› �}n>| j&                  › d|
d›d|› d|› d|› d|› d|› |› �}n| j&                  › d|› d|› d|› d|› �	}	 | j(                  r| j*                  j-                  |«       n| j*                  j-                  d|› �«       | j*                  j/                  «        y# t0        $ r Y yw xY w)zDisplay progress bar.Nr   r   r   r   ú<éd   éþÿÿÿÚKMGTPBú?z: rT   z% ú ú/ú[K)r+   r?   r;   r<   r9   r:   rn   ÚMIN_RATE_CALC_INTERVALÚMAX_SMOOTHED_RATEÚRATE_SMOOTHING_FACTORr>   r*   r=   rc   rY   r@   ÚrstriprQ   rj   r'   r0   r8   ÚwriteÚflushÚ	Exception)rC   ÚfinalÚcurrent_timerl   rm   rL   Úoverall_elapsedÚelapsedÚremaining_strÚest_rateÚpercentÚn_strÚt_strÚelapsed_strÚrate_strri   Úprogress_strs                    r   rB   zTQDM._displayÓ   su  € à�<Š<˜DŸKšK±Øä—y‘y“{ˆØ˜D×-Ñ-Ñ-ˆØ�V‰V�d×'Ñ'Ñ'ˆá˜T×0Ñ0°°RÔ8Øð �×+Ñ+Ò+Ù �2˜’7 cˆDà�d×,Ñ,Ò,Ø!%×!;Ñ!;¸dÑ!BÀaÈ$×JdÑJdÑFdÐhl×hvÑhvÑEvÑ!v�”Ø—~‘~‘à—>‘>ˆDð �:Š:˜$Ÿ&™& D§J¡JÒ.Ø*¨T¯\©\Ñ9ˆOØ Ò"Ø—v‘v Ñ/�ð !ŸF™FˆÔØ(ˆÔØ §¡Ñ-ˆð ˆØ�:Š:˜!˜dŸf™fÔ1 t§z¡zÕ1°gÀ²kØÒ1 §¡¨Ñ 0ˆHØ × 1Ñ 1°4·:±:ÀÇÁÑ3FÈ(Ñ2RÓ SÐTÐUˆMð �:Š:Ø—v‘v §
¡
Ñ*¨cÑ1ˆGØ×$Ñ$ T§V¡VÓ,ˆEØ×$Ñ$ T§Z¡ZÓ0ˆEØ�}Š}  r¡¨e°B©iÒ!7ØŸ™ XÓ.‘àˆGØ×+Ñ+¨D¯F©FÓ3°S�5ˆEà×'Ñ'¨Ó0ˆØ×$Ñ$ TÓ*ÒjÐV]Ð`aÒVa¨t×/@Ñ/@ÀÇÁÈ'ÑAQÔ/RÐgiˆà× Ñ Ó"ˆð �:Š:Ø�}Š} §¡¨4¯:©:Ò!5à"&§)¡) ¨B¨w°s¨m¸2¸c¸UÀ!ÀEÀ7È!ÈHÈ:ÐUVÐWbÐVcÐd‘ð —y‘y�k  G¨C =°°3°%°q¸¸¸qÀÀÀqÈÈ
ÐRSÐT_ÐS`ÐanÐ`oÐpñ ð #Ÿi™i˜[¨¨3¨%¨q°°°q¸¸
À!ÀKÀ=ÐQˆLð		Ø×"Ò"à—	‘	—‘ Õ-ð —	‘	—‘ (¨<¨.Ð 9Ô:Ø�I‰I�O‰OÕøÜò 	Ùð	ús   ÍA N2 Î2	N>Î=N>c                ó‚   — | j                   s3| j                  s&| xj                  |z  c_        | j                  «        yyy)zUpdate progress by n steps.N)r+   r?   r9   rB   )rC   r9   s     r   ÚupdatezTQDM.update"  s,   € à�|Š| D§K¢KØ�FŠF�a‰K�FØ�M‰M�Oð %0ˆ|r   c                óT   — |xs d| _         | j                  s| j                  «        yy)zSet description.r   N)r'   r+   rB   )rC   r'   s     r   Úset_descriptionzTQDM.set_description(  s"   € à’J˜BˆŒ	Ø�|Š|Ø�M‰M�Oð r   c                óò   — |rudj                  d„ |j                  «       D «       «      }d| j                  v r| j                  j                  d«      d   n| j                  }| j	                  |› d|› �«       yy)z%Set postfix (appends to description).z, c              3  ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)ú=Nr   )rI   ÚkÚvs      r   rM   z#TQDM.set_postfix.<locals>.<genexpr>1  s   è ø€ ÒF©t¨q°! 1 # Q q c¤
ÑFùs   ‚z | r   N)ÚjoinÚitemsr'   ÚsplitrŽ   )rC   rD   ÚpostfixÚ	base_descs       r   Úset_postfixzTQDM.set_postfix.  se   € áØ—i‘iÑF°v·|±|³~ÔFÓFˆGØ5:¸d¿i¹iÑ5G˜Ÿ	™	Ÿ™¨Ó.¨qÒ1ÈTÏYÉYˆIØ× Ñ  I ;¨c°'°Ð!;Õ<ð r   c                ó  — | j                   ryd| _         | j                  sÓ| j                  rV| j                  | j                  k\  r=| j                  | _        | j                  | j                  k7  r%| j                  d¬«       n| j                  d¬«       | j                  r| j                  j                  d«       n| j                  j                  d«       	 | j                  j                  «        yy# t        $ r Y yw xY w)zClose progress bar.NT)r   ú
rw   )r?   r+   r*   r9   r:   rB   r/   r8   r|   r}   r~   ©rC   s    r   Úclosez
TQDM.close5  s¾   € à�;Š;ØàˆŒà�|Š|à�zŠz˜dŸf™f¨¯
©
Ò2ØŸ™�”Ø—6‘6˜T×.Ñ.Ò.Ø—M‘M¨�MÕ-à—‘ D�Ô)ð �zŠzØ—	‘	—‘ Õ%à—	‘	—‘ 
Ô+ðØ—	‘	—‘Õ!ð! øô" ò Ùðús   ÃC5 Ã5	DÄ Dc                ó   — | S )zEnter context manager.r   rœ   s    r   Ú	__enter__zTQDM.__enter__P  s   € àˆr   c                ó$   — | j                  «        y)z,Exit context manager and close progress bar.N)r�   )rC   Úargss     r   Ú__exit__zTQDM.__exit__T  s   € à�
‰
�r   c              #  óÔ   K  — | j                   €t        d«      ‚	 | j                   D ]  }|–— | j                  d«       Œ 	 | j                  «        y# | j                  «        w xY w­w)z8Iterate over the wrapped iterable with progress updates.Nz!'NoneType' object is not iterabler   )r&   Ú	TypeErrorrŒ   r�   )rC   Úitems     r   Ú__iter__zTQDM.__iter__X  sX   è ø€ à�=‰=Ð ÜÐ?Ó@Ð@ð	ØŸ™ò �Ø’
Ø—‘˜A•ñð �J‰J�LøˆD�J‰J�Lüs   ‚A(›&A ÁA(ÁA%Á%A(c                óD   — 	 | j                  «        y# t        $ r Y yw xY w)zDestructor to ensure cleanup.N)r�   r~   rœ   s    r   Ú__del__zTQDM.__del__d  s"   € ð	Ø�J‰J�LøÜò 	Ùð	ús   ‚ “	žc                ó>   — | j                   s| j                  «        yy)zRefresh display.N)r+   rB   rœ   s    r   ÚrefreshzTQDM.refreshk  s   € à�|Š|Ø�M‰M�Oð r   c                ó¨   — | j                   s7	 | j                  j                  d«       | j                  j                  «        yy# t        $ r Y yw xY w)zClear progress bar.rw   N)r+   r8   r|   r}   r~   rœ   s    r   Úclearz
TQDM.clearp  sE   € à�|Š|ðØ—	‘	—‘ 
Ô+Ø—	‘	—‘Õ!ð øô ò Ùðús   Ž5A Á	AÁAc                ó”   — |xs t         j                  }	 |j                  | |z   «       |j                  «        y# t        $ r Y yw xY w)z5Static method to write without breaking progress bar.N)r6   r7   r|   r}   r~   )r\   r8   Úends      r   r|   z
TQDM.writey  sB   € ð Ò!”s—z‘zˆð	Ø�J‰J�q˜3‘wÔØ�J‰J�LøÜò 	Ùð	ús   –$; »	AÁA)NNNTNçš™™™™™¹?NÚitTiè  Nr   )r&   r   r'   ú
str | Noner*   z
int | Noner/   Úboolr8   úIO[str] | Noner3   Úfloatr+   zbool | Noner,   rV   r-   r²   r.   r_   r5   r±   r4   r_   ÚreturnÚNone)rL   r´   rµ   rV   )rX   zint | floatrµ   rV   )r`   r´   rµ   rV   )é   )rf   r_   rµ   rV   )rl   r´   rm   r_   rµ   r²   )F)r   r²   rµ   r¶   )r   )r9   r_   rµ   r¶   )r'   r±   rµ   r¶   )rD   r   rµ   r¶   )rµ   r¶   )rµ   r   )r¡   r   rµ   r¶   )rµ   r   )Nr›   )r\   rV   r8   r³   r®   rV   rµ   r¶   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rx   rz   ry   r2   rE   rQ   rY   Ústaticmethodrc   rj   rn   rB   rŒ   rŽ   r™   r�   rŸ   r¢   r¦   r¨   rª   r¬   r|   r   r   r   r   r      sS  „ ñ5ðp "ÐØÐØÐØ"&Ðð ØØ ØØ#Ø Ø#ØØØ Ø!%ØðJàðJð ðJð ð	Jð
 ðJð ðJð ðJð ðJð ðJð ðJð ðJð ðJð ðJð 
óJóX[ó	ð ò7ó ð7ô
ó]ôMô^óó=óó6óó
óóó
ð óó ñr   r   Ú__main__z'1. Basic progress bar with known total:é   zKnown total)r'   gš™™™™™©?z$
2. Manual updates with known total:i,  zManual updatesÚfiles)r*   r'   r,   g¸…ëQ¸ž?é
   é	   zProcessing batch z$
3. Progress bar with unknown total:zUnknown totalr•   )r'   r,   é   g{®Gáz´?é   é   ÚOK)Ú	processedÚstatusz'
4. Context manager with unknown total:zProcessing streamr   Tr   )r'   r,   r-   r.   é   r¯   r   z!
5. Iterator with unknown length:c               #  ób   K  — ddl } t        | j                  dd«      «      D ]	  }d|› �–— Œ y­w)z)Simulate a data stream of unknown length.r   NrÀ   r   Údata_chunk_)ÚrandomÚrangeÚrandint)rË   Úis     r   Údata_streamrÏ   ¥  s5   è ø€ ãä�v—~‘~ b¨"Ó-Ó.ò 	$ˆAØ ˜sÐ#Ó#ñ	$ùs   ‚-/zStream processingÚchunksz.
6. File processing simulation (unknown size):c                 óF   — t        d«      D � cg c]  } d| › d�‘Œ
 c} S c c} w )z+Simulate processing files of unknown count.é   Úfile_z.txt)rÌ   )rÎ   s    r   Úprocess_filesrÔ   ±  s"   € ä).¨r«Ö3 A�%˜�s˜$’Ò3Ð3ùÒ3s   ŽzScanning filesg¸…ëQ¸®?zProcessing )rµ   r²   )Ú
__future__r   r   r6   r;   Ú	functoolsr   Útypingr   r   r   r   r¸   ÚprintrÌ   rÎ   ÚsleepÚpbarrŒ   rŽ   r�   r™   rÏ   ÚchunkrÔ   r¿   Ú	enumerateÚfilenamer   r   r   ú<module>rÞ      s�  ðõ #ã 	Û 
Û Ý ß ñ �1ÔòKó ðK÷
oñ oðd ˆzÓÛá	Ð
3Ô4Ù‘%˜“( Ô/ò ˆØˆ�
‰
�4Õðñ 
Ð
1Ô2Ù�cÐ 0°wÔ?€DÙ�3‹Zò DˆØˆ�
‰
�4ÔØ�‰�AŒØˆr‰6�Q‹;Ø× Ñ Ð#4°Q¸"±W¸q±[°MÐ!BÕCð	Dð
 	‡J�J„Lá	Ð
1Ô2Ù�_¨7Ô3€DÙ�2‹Yò ;ˆØˆ�
‰
�4ÔØ�‰�AŒØˆq‰5�A‹:Ø×Ñ q¨1¡u°TÐÕ:ð	;ð
 	‡J�J„Lá	Ð
4Ô5Ù	Ð&¨S¸TÐPTÔ	Uð )ÐY]Ù�r“ò 	)ˆAØˆD�J‰J�sŒOØ�K‰K˜ a™Õ(ñ	)÷)ñ
 
Ð
.Ô/ò$ñ ‘k“mÐ*=ÀHÔMò ˆØˆ�
‰
�3�ðñ 
Ð
;Ô<ò4ñ Ð%¨GÔ4€DÙ‹O€EÙ  Ó'ò 7‰ˆˆ8Øˆ�
‰
�4ÔØ�‰�AŒØ×Ñ˜{¨8¨*Ð5Õ6ð7ð 	‡J�J…Lðo ÷4)ð )ús   Å/4IÉI