§
    w“&b“q  ã                   ó<  — 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	  eed¦  «        sd dlmZ ee_        n# eef$ r ej        e_        Y nw xY wd dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ g d¢Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$ e$¦   «         Z% G d„ de&¦  «        Z' G d„ de&¦  «        Z( G d„ de&¦  «        Z) G d„ de&¦  «        Z* G d„ de&¦  «        Z+ G d„ de,¦  «        Z-d„ Z.d„ Z/d„ Z0d e
j1        d          z  Z2d!„ Z3dS )"é    )Úprint_functionNÚ	monotonic)r   )ÚOrderedDict)Ú	find_uidsÚTaskStatsNetlinkÚProcessListÚStatsÚsysctl_task_delayacct)Ú
ThreadInfo)ÚVERSION)Úioprio)ÚIoprioSetError)ÚBÚKÚMÚGÚTÚPÚEc                 óÒ   — | dk    rd}n| dk     rd}|  } ndS t          t          j        | dz  d¦  «        dz  ¦  «        }d|t          | ¦  «        dd|z  z  z  t          |         fz  S )	Nr   Ú ú-z0.00 Bé   é
   z	%s%.2f %sé   )ÚintÚmathÚlogÚfloatÚUNITS)ÚsizeÚsignÚexpos      ú*/usr/lib/python3/dist-packages/iotop/ui.pyÚ
human_sizer%   ;   s�   € Øˆa‚x€xØˆˆØ	�ŠˆØˆØˆuˆˆàˆxå�tŒx˜˜q™ !Ñ$Ô$ rÑ)Ñ*Ô*€DØØ�u�T‰{Œ{˜a B¨¡IÑ.Ñ/µ%¸´+ð?ñ ?ð ?ó    c                 ó>   — | j         rd|dz  z  S t          |¦  «        S )Nz%.2f Kg      �@)Ú	kilobytesr%   )ÚoptionsÚbytess     r$   Úformat_sizer+   I   s*   € ØÔð +Ø˜5 6™>Ñ*Ð*Ý�eÑÔÐr&   c                 óL   — t          | |ot          |¦  «        |z  ¦  «        dz   S )Nz/s)r+   r   )r)   r!   Údurations      r$   Úformat_bandwidthr.   O   s'   € Ý�w Ð ?­¨t©¬°xÑ)?Ñ@Ô@À4ÑGÐGr&   c                 óJ  ‡ ‡— ˆfd„}‰ j         r(|j        }ˆ fd„}t          j        ¦   «         |j        z
  Šn|j        }ˆ fd„} ||j        ¦  «        } ||j        ¦  «        } ||j        ‰¦  «        }|j	        |j
        z
  }	t          d|	¦  «        }	 ||	‰¦  «        }
||||
fS )Nc                 ó6   •— dt          d| ‰dz  z  ¦  «        z  S )Nz%.2f %%g�Âõ(\ÿX@g    ÐcA)Úmin)Údelayr-   s    €r$   Údelay2percentz#format_stats.<locals>.delay2percentV   s"   ø€ Ø�3˜u e¨x¸*Ñ/DÑ&EÑFÔFÑFÐFr&   c                 ó$   •— t          ‰| ¦  «        S ©N)r+   ©r!   r-   r)   s     €r$   ú<lambda>zformat_stats.<locals>.<lambda>Z   s   ø€ µ¸GÀTÑ0JÔ0J€ r&   c                 ó&   •— t          ‰| |¦  «        S r5   )r.   r6   s     €r$   r7   zformat_stats.<locals>.<lambda>^   s   ø€ Õ0@Ø7>ÀÀhñ1Pô 1P€ r&   r   )ÚaccumulatedÚstats_accumÚtimer   Ústats_accum_timestampÚstats_deltaÚblkio_delay_totalÚswapin_delay_totalÚ
read_bytesÚwrite_bytesÚcancelled_write_bytesÚmax)r)   Úprocessr-   r3   ÚstatsÚdisplay_formatÚio_delayÚswapin_delayr@   Úwritten_bytesrA   s   ` `        r$   Úformat_statsrJ   S   sô   øø€ ðGð Gð Gð Gð GàÔð PØÔ#ˆØJÐJÐJÐJˆÝ”>Ñ#Ô# gÔ&CÑCˆˆàÔ#ˆðPð Pð Pð Pˆàˆ}˜UÔ4Ñ5Ô5€HØ �= Ô!9Ñ:Ô:€LØ� Ô 0°(Ñ;Ô;€JØÔ%¨Ô(CÑC€MÝ˜˜=Ñ)Ô)€MØ �. °Ñ9Ô9€KØ�\ :¨{Ð:Ð:r&   c                  óÒ   — 	 t          t          d¦  «                             ¦   «                              ¦   «         ¦  «        S # t          $ r} t          | ¦  «         Y d } ~ dS d } ~ ww xY w)Nz/proc/sys/kernel/pid_maxé   )ÚlenÚopenÚreadÚstripÚ	ExceptionÚprint)Úes    r$   Úget_max_pid_widthrT   i   sm   € ðÝ•4Ð2Ñ3Ô3×8Ò8Ñ:Ô:×@Ò@ÑBÔBÑCÔCÐCøÝð ð ð Ýˆa‰Œˆàˆqˆqˆqˆqˆqøøøøðøøøs   ‚?A Á
A&ÁA!Á!A&c                   ó   — e Zd ZdS )ÚCancelInputN©Ú__name__Ú
__module__Ú__qualname__© r&   r$   rV   rV   x   ó   € € € € € Ø€Dr&   rV   c                   ó   — e Zd ZdS )Ú
InvalidIntNrW   r[   r&   r$   r^   r^   |   r\   r&   r^   c                   ó   — e Zd ZdS )Ú
InvalidPidNrW   r[   r&   r$   r`   r`   €   r\   r&   r`   c                   ó   — e Zd ZdS )Ú
InvalidTidNrW   r[   r&   r$   rb   rb   „   r\   r&   rb   c                   ó   — e Zd ZdS )ÚInvalidIoprioDataNrW   r[   r&   r$   rd   rd   ˆ   r\   r&   rd   c            	       óÆ   — e Zd Zd„ dfd„ dfd„ dfd„ dfd„ dfd„ dfd	„ dfd
„ dfgZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dd„Z
dd„Zd„ Zd„ Zd„ Zd„ Zd d„Zd!d„Zd„ Zd„ Zd„ Zd„ ZdS )"ÚIOTopUIc                 ó   — | j         S r5   )Úpid©ÚpÚss     r$   r7   zIOTopUI.<lambda>“   s   € �a”e€ r&   Fc                 ó*   — |                       ¦   «         S r5   )Úioprio_sort_keyri   s     r$   r7   zIOTopUI.<lambda>”   s   € �a×'Ò'Ñ)Ô)€ r&   c                 ó*   — |                       ¦   «         S r5   )Úget_userri   s     r$   r7   zIOTopUI.<lambda>•   s   € �a—j’j‘l”l€ r&   c                 ó   — |j         S r5   )r@   ri   s     r$   r7   zIOTopUI.<lambda>–   s   € �a”l€ r&   Tc                 ó    — |j         |j        z
  S r5   )rA   rB   ri   s     r$   r7   zIOTopUI.<lambda>—   s   € �a”m aÔ&=Ñ=€ r&   c                 ó   — |j         S r5   )r?   ri   s     r$   r7   zIOTopUI.<lambda>˜   s	   € �aÔ*€ r&   c                 óJ   — |j         pt          |j        p|j          ¦  «        S r5   )r>   r   r@   rA   ri   s     r$   r7   zIOTopUI.<lambda>›   s,   € �aÔ)ð CÝ !¤,Ð"?°!´-Ð@ÐAÑBÔBð r&   c                 ó*   — |                       ¦   «         S r5   )Úget_cmdlineri   s     r$   r7   zIOTopUI.<lambda>�   s   € �a—m’m‘o”o€ r&   c                 óh  — || _         || _        d| _        t          j        | j                 d         | _        | j        j        sn|| _        |                      ¦   «          	 t          j
        ¦   «          t          j        ¦   «          t          j        d¦  «         d S # t          j        $ r Y d S w xY wd S )Né   r   r   )Úprocess_listr)   Úsorting_keyrf   Úsorting_keysÚsorting_reverseÚbatchÚwinÚresizeÚcursesÚuse_default_colorsÚstart_colorÚcurs_setÚerror)Úselfr}   rx   r)   s       r$   Ú__init__zIOTopUI.__init__    s»   € Ø(ˆÔØˆŒØˆÔÝ&Ô3°DÔ4DÔEÀaÔHˆÔØŒ|Ô!ð 
	ØˆDŒHØ�KŠK‰MŒMˆMðÝÔ)Ñ+Ô+Ð+ÝÔ"Ñ$Ô$Ð$Ý” Ñ"Ô"Ð"Ð"Ð"øÝ”<ð ð ð ð ��ðøøøð
	ð 
	s   Á :B ÂB/Â.B/c                 óR   — | j                              ¦   «         \  | _        | _        d S r5   )r}   ÚgetmaxyxÚheightÚwidth©r„   s    r$   r~   zIOTopUI.resize±   s"   € Ø"&¤(×"3Ò"3Ñ"5Ô"5ÑˆŒ�T”Z�Z�Zr&   c                 ó  — d}t          j        ¦   «         }| j        j        sI|                     t
          j                             ¦   «         t           j        t           j	        z  ¦  «         | j        j
        �|| j        j
        k     �r|| j                             ¦   «         \  }}|                      |dk    ||| j        j        ¦  «         | j        j
        �|dz  }|| j        j
        k    rd S n|dk    rd}	 |                     | j        j        dz  ¦  «        }nB# t           j        $ r0}|j        r|j        d         t$          j        k    rg }n‚ Y d }~nd }~ww xY w|D ]5\  }}|t           j        t           j        z  z  rt          j        d¦  «         Œ6| j        j        s|                      ¦   «          |r.| j                             ¦   «         }	|                      |	¦  «         | j        j
        �®i|| j        j
        k     �°zd S d S )Nr   r   g     @�@)ÚselectÚpollr)   r|   ÚregisterÚsysÚstdinÚfilenoÚPOLLINÚPOLLPRIÚ
iterationsrx   Úrefresh_processesÚrefresh_displayr-   Údelay_secondsrƒ   ÚargsÚerrnoÚEINTRÚPOLLERRÚPOLLHUPÚexitr~   r}   ÚgetchÚ
handle_key)
r„   r”   r�   ÚtotalÚcurrentÚeventsrS   ÚfdÚeventÚkeys
             r$   ÚrunzIOTopUI.run´   s  € Øˆ
ÝŒ{‰}Œ}ˆØŒ|Ô!ð 	NØ�MŠM�#œ)×*Ò*Ñ,Ô,­f¬m½f¼nÑ.LÑMÔMÐMØŒlÔ%Ð-Ø˜4œ<Ô2Ò2Ñ2Ø!Ô.×@Ò@ÑBÔB‰NˆE�7Ø× Ò  ¨q¢°%¸Ø!%Ô!2Ô!;ñ=ô =ð =àŒ|Ô&Ð2Ø˜a‘�
Ø ¤Ô!8Ò8Ð8Ø�Eð 9à˜q’�Ø�
ðØŸš 4¤<Ô#=ÀÑ#FÑGÔG��øÝ”<ð ð ð Ø”6ð ˜aœf Qœi­5¬;Ò6Ð6Ø�F�Fàð �F�F�F�Føøøøðøøøð
  &ð  ð  ‘��UØ�FœN­V¬^Ñ;Ñ<ð  Ý”H˜Q‘K”K�KøØ”<Ô%ð Ø—’‘”�Øð %Ø”h—n’nÑ&Ô&�Ø—’ Ñ$Ô$Ð$ð5 ŒlÔ%Ñ-Ø˜4œ<Ô2Ò2Ñ2Ð2Ð2Ð2Ð2s   Ã7"D ÄEÄ)&EÅEc                 ó    — | j          | _         d S r5   )r{   rŠ   s    r$   Úreverse_sortingzIOTopUI.reverse_sortingÕ   s   € Ø#'Ô#7Ð7ˆÔÐÐr&   c                 ó¦   — | j         }|                      |¦  «        | _         || j         k    r$t          j        | j                  d         | _        d S d S ©Nr   )ry   Úget_sorting_keyrf   rz   r{   )r„   ÚdeltaÚorig_sorting_keys      r$   Úadjust_sorting_keyzIOTopUI.adjust_sorting_keyØ   sU   € ØÔ+ÐØ×/Ò/°Ñ6Ô6ˆÔØ˜tÔ/Ò/Ð/Ý#*Ô#7¸Ô8HÔ#IÈ!Ô#LˆDÔ Ð Ð ð 0Ð/r&   c                 óÊ   — | j         }||z  }t          d|¦  «        }t          t          t          j        ¦  «        dz
  |¦  «        }| j        s|dv r|dk    rd}n|dk    rd}|S )Nr   r   ©rL   rw   é   é   )ry   rC   r1   rM   rf   rz   Úhas_swapin_io)r„   r¬   Únew_sorting_keys      r$   r«   zIOTopUI.get_sorting_keyÞ   s|   € ØÔ*ˆØ˜5Ñ ˆÝ˜a Ñ1Ô1ˆÝ�c¥'Ô"6Ñ7Ô7¸!Ñ;¸_ÑMÔMˆØÔ!ð 	(Ø &Ð(Ð(Ø˜A’:�:Ø&'�O�OØ˜Q’Y�YØ&'�OØÐr&   Nc                 ó  — | j                              ddt          d¦  «        t          j        z  | j        ¦  «         | j                              dd|t          j        ¦  «         | j                              ¦   «          t          j	        ¦   «          t          j
        d¦  «         | j                              dt          |¦  «        ¦  «        }t          j
        d¦  «         t          j        ¦   «          |dvr|S |rt          ¦   «         ‚|S )Nr   r   ú )Nr   )r}   ÚhlineÚordr   ÚA_NORMALr‰   ÚaddstrÚA_BOLDÚrefreshÚechor‚   ÚgetstrrM   ÚnoechorV   ©r„   ÚpromptÚdefaultÚempty_is_cancelÚinps        r$   Ú
prompt_strzIOTopUI.prompt_strí   sÓ   € ØŒ�Š�q˜!�S ™XœX­¬Ñ7¸¼ÑDÔDÐDØŒ�Š˜˜1˜f¥f¤mÑ4Ô4Ð4ØŒ×ÒÑÔÐÝŒ‰ŒˆÝŒ˜ÑÔÐØŒh�oŠo˜a¥ V¡¤Ñ-Ô-ˆÝŒ˜ÑÔÐÝŒ‰ŒˆØ�jÐ Ð ØˆJØð 	 Ý‘-”-ÐØˆr&   c                 óˆ   — |                       |||¦  «        }	 t          |¦  «        S # t          $ r t          ¦   «         ‚w xY wr5   )rÅ   r   Ú
ValueErrorr^   rÀ   s        r$   Ú
prompt_intzIOTopUI.prompt_intü   sL   € Ø�oŠo˜f g¨Ñ?Ô?ˆð	Ý�s‘8”8ˆOøÝð 	ð 	ð 	Ý‘,”,Ðð	øøøs	   ™( ¨Ac                 óz   — 	 |                       d¦  «        S # t          $ r t          ¦   «         ‚t          $ r ‚ w xY w)NzPID to ionice: )rÈ   r^   r`   rV   rŠ   s    r$   Ú
prompt_pidzIOTopUI.prompt_pid  óT   € ð	Ø—?’?Ð#4Ñ5Ô5Ð5øÝð 	ð 	ð 	Ý‘,”,ÐÝð 	ð 	ð 	Øð	øøøó   ‚ —#:c                 óz   — 	 |                       d¦  «        S # t          $ r t          ¦   «         ‚t          $ r ‚ w xY w)NzTID to ionice: )rÈ   r^   rb   rV   rŠ   s    r$   Ú
prompt_tidzIOTopUI.prompt_tid  rË   rÌ   c                 óÞ   — 	 |�|                       d|z  |d¦  «        }n|                       dd d¦  «        }n# t          $ r t          ¦   «         ‚w xY w|dk     s|dk    rt          ¦   «         ‚|S )Nz'I/O priority data (0-7, currently %s): FzI/O priority data (0-7): r   r²   )rÈ   r^   rd   )r„   Úioprio_datarÄ   s      r$   Úprompt_datazIOTopUI.prompt_data  s–   € ð	&ØÐ&Ø—o’oÐ&OØ(3ñ'4Ø5@À%ñIô I��ð —o’oÐ&AÀ4ÈÑOÔO�øøÝð 	&ð 	&ð 	&Ý#Ñ%Ô%Ð%ð	&øøøà�Š7ˆ7�c˜A’g�gÝ#Ñ%Ô%Ð%Øˆ
s	   ‚47 ·Ac           	      ó  — 	 |                      |¦  «        }n# t          $ r d}Y nw xY wt          |¦  «        dz
  }	 | j                             ddt          d¦  «        t          j        z  | j        ¦  «         | j         	                    dd|t          j
        ¦  «         t          |¦  «        }t          |¦  «        D ]V\  }}d|z  }	||u rt          j        }
nt          j        }
| j         	                    d||	|
¦  «         |t          |	¦  «        z  }ŒW	 | j                             ¦   «         }|t          j        t          d¦  «        fv r|dk    r|dz  }n­|t          j        t          d¦  «        fv r||k     r|dz  }n„|t          j        t          d	¦  «        t          d
¦  «        fv r||         S |dt          j        t          j        t          j        t          d¦  «        t          d¦  «        fv rt)          ¦   «         ‚Œï�ŒÊ)Néÿÿÿÿr   Tr   r¶   ú %s ÚlÚrú
úé   ÚqÚQ)ÚindexrÇ   rM   r}   r·   r¸   r   r¹   r‰   Úinsstrr»   Ú	enumerateÚ	A_REVERSErž   ÚKEY_LEFTÚ	KEY_RIGHTÚ	KEY_ENTERÚ
KEY_CANCELÚ	KEY_CLOSEÚKEY_EXITrV   )r„   rÁ   Údisplay_listÚret_listÚselectedÚset_lenÚoffsetÚiÚitemÚdisplayÚattrr¥   s               r$   Ú
prompt_setzIOTopUI.prompt_set   s÷  € ð	Ø—~’~ hÑ/Ô/ˆHˆHøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøå�lÑ#Ô# aÑ'ˆð	(ØŒH�NŠN˜1˜a¥ S¡¤­F¬OÑ!;¸T¼ZÑHÔHÐHØŒH�OŠO˜A˜q &­&¬-Ñ8Ô8Ð8Ý˜‘[”[ˆFÝ$ \Ñ2Ô2ð 'ð '‘��4Ø  4™-�Ø˜�=�=Ý!Ô+�D�Då!œ?�DØ”—’  6¨7°DÑ9Ô9Ð9Ø�#˜g™,œ,Ñ&��ð(Ø”h—n’nÑ&Ô&�Ø�6œ?­C°©H¬HÐ5Ð5Ð5¸(ÀQº,¸,Ø ‘M�HØØ�fÔ.µ°C±´Ð9Ð9Ð9Ø Ò(Ð(Ø ‘M�HØØ�VÔ-­s°4©y¬y½#¸d¹)¼)ÐDÐDÐDØ# HÔ-Ð-Ø˜R¥Ô!2µFÔ4DÝ#œ_­c°#©h¬h½¸C¹¼ðBð Bð Bå%™-œ-Ð'ð(ñ	(s   ‚ ˜'¦'c                 óR   — d}g d¢}g d¢}|€d}|                       ||||¦  «        }|S )NzI/O priority class: )z	Real-timezBest-effortÚIdle)ÚrtÚbeÚidler   )rï   )r„   Úioprio_classrÁ   Úclasses_promptÚclasses_retrÄ   s         r$   Úprompt_classzIOTopUI.prompt_classA  sI   € Ø'ˆØ=Ð=Ð=ˆØ*Ð*Ð*ˆØÐØˆLØ�oŠo˜f nØ)¨<ñ9ô 9ˆàˆ
r&   úError!c                 ó,  — | j                              ddt          d¦  «        t          j        z  | j        ¦  «         | j                              ddd|z  t          j        ¦  «         | j                              ¦   «          t          j
        d¦  «         d S )Nr   r   r¶   z  %s  )r}   r·   r¸   r   r¹   r‰   rÝ   rß   r¼   r;   Úsleep)r„   rƒ   s     r$   Úprompt_errorzIOTopUI.prompt_errorK  sr   € ØŒ�Š�q˜!�S ™XœX­¬Ñ7¸¼ÑDÔDÐDØŒ�Š˜˜1˜h¨Ñ.µÔ0@ÑAÔAÐAØŒ×ÒÑÔÐÝŒ
�1‰Œˆˆˆr&   c                 ó°   — | j                              ddt          d¦  «        t          j        z  | j        ¦  «         | j                              ¦   «          d S )Nr   r   r¶   )r}   r·   r¸   r   r¹   r‰   r¼   rŠ   s    r$   Úprompt_clearzIOTopUI.prompt_clearQ  sE   € ØŒ�Š�q˜!�S ™XœX­¬Ñ7¸¼ÑDÔDÐDØŒ×ÒÑÔÐÐÐr&   c                 ó†  ‡ — ˆ fd„}ˆ fd„}ˆ fd„}ˆ fd„}i t          d¦  «        d„ “t          d¦  «        d„ “t          d	¦  «        ˆ fd
„“t          d¦  «        ˆ fd„“t          d¦  «        |“t          d¦  «        |“t          d¦  «        |“t          d¦  «        |“t          d¦  «        |“t          d¦  «        |“t          d¦  «        |“t          d¦  «        |“t          j        ˆ fd„“t          j        ˆ fd„“t          j        ˆ fd„“t          j        ˆ fd„“}|                     |d„ ¦  «        } |¦   «          d S )Nc                  ó2   •— ‰ j         xj        dz  c_        d S ©NT)r)   r9   rŠ   s   €r$   Útoggle_accumulatedz.IOTopUI.handle_key.<locals>.toggle_accumulatedV  s   ø€ ØŒLÐ$Ô$¨Ñ,Ð$Ô$Ð$Ð$r&   c                  ó2   •— ‰ j         xj        dz  c_        d S r  )r)   ÚonlyrŠ   s   €r$   Útoggle_only_ioz*IOTopUI.handle_key.<locals>.toggle_only_ioY  s   ø€ ØŒLÐÔ Ñ%ÐÔÐÐr&   c                  ó–   •— ‰ j         xj        dz  c_        ‰ j                             ¦   «          ‰ j                             ¦   «          d S r  )r)   Ú	processesrx   Úclearr•   rŠ   s   €r$   Útoggle_processesz,IOTopUI.handle_key.<locals>.toggle_processes\  sI   ø€ ØŒLÐ"Ô" dÑ*Ð"Ô"ØÔ×#Ò#Ñ%Ô%Ð%ØÔ×/Ò/Ñ1Ô1Ð1Ð1Ð1r&   c                  ó  •— 	 ‰j         j        r/‰                     ¦   «         } ‰j                             | ¦  «        }n.‰                     ¦   «         }t          |‰j        j        ¦  «        }|                     ¦   «         }t          j
        |¦  «        \  }}‰                     |¦  «        }|dk    rd}n‰                     |¦  «        }|                     ||¦  «         ‰j                             ¦   «          ‰j                             ¦   «          ‰                     ¦   «          d S # t"          $ r(}‰                     d|j        z  ¦  «         Y d }~d S d }~wt(          $ r ‰                     d¦  «         Y d S t*          $ r ‰                     d¦  «         Y d S t,          $ r ‰                     d¦  «         Y d S t.          $ r ‰                     d¦  «         Y d S t0          $ r ‰                     ¦   «          Y d S w xY w)Nrô   r   zError setting I/O priority: %szInvalid process id!zInvalid thread id!zInvalid I/O priority data!zInvalid integer!)r)   r  rÊ   rx   Úget_processrÎ   r   Útaskstats_connectionÚ
get_ioprior   Úto_class_and_datarø   rÑ   Ú
set_ioprior  r•   rþ   r   rü   Úerrr`   rb   rd   r^   rV   )rh   Ú	exec_unitÚtidÚioprio_valuerõ   rÐ   rS   r„   s          €r$   Úionicez"IOTopUI.handle_key.<locals>.ionicea  sd  ø€ ð $Ø”<Ô)ð PØŸ/š/Ñ+Ô+�CØ $Ô 1× =Ò =¸cÑ BÔ B�I�IàŸ/š/Ñ+Ô+�CÝ *¨3Ø(,Ô(9Ô(Nñ!Pô !P�Ià(×3Ò3Ñ5Ô5�å)/Ô)AÀ,Ñ)OÔ)Oñ ,�˜{à#×0Ò0°Ñ>Ô>�Ø 6Ò)Ð)Ø"#�K�Kà"&×"2Ò"2°;Ñ"?Ô"?�KØ×$Ò$ \°;Ñ?Ô?Ð?ØÔ!×'Ò'Ñ)Ô)Ð)ØÔ!×3Ò3Ñ5Ô5Ð5ð ×!Ò!Ñ#Ô#Ð#Ð#Ð#øõ "ð Lð Lð LØ×!Ò!Ð"BÀQÄUÑ"JÑKÔKÐKÐKÐKÐKÐKÐKÐKøøøøÝð 9ð 9ð 9Ø×!Ò!Ð"7Ñ8Ô8Ð8Ð8Ð8Ð8Ýð 8ð 8ð 8Ø×!Ò!Ð"6Ñ7Ô7Ð7Ð7Ð7Ð7Ý$ð @ð @ð @Ø×!Ò!Ð">Ñ?Ô?Ð?Ð?Ð?Ð?Ýð 6ð 6ð 6Ø×!Ò!Ð"4Ñ5Ô5Ð5Ð5Ð5Ð5Ýð $ð $ð $Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#Ð#ð$øøøs6   ƒDD( Ä(
G>Ä2EÅ"G>Å:G>ÆG>Æ<G>ÇG>Ç=G>rÚ   c                  ó*   — t          j        d¦  «        S ©Nr   ©r�   r�   r[   r&   r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>†  ó   € �œ ™œ€ r&   rÛ   c                  ó*   — t          j        d¦  «        S r  r  r[   r&   r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>ˆ  r  r&   rÖ   c                  ó,   •— ‰                       ¦   «         S r5   ©r¨   rŠ   s   €r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>Š  ó   ø€ ˜×,Ò,Ñ.Ô.€ r&   ÚRc                  ó,   •— ‰                       ¦   «         S r5   r  rŠ   s   €r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>Œ  r  r&   ÚaÚAÚoÚOrj   r   rë   ÚIc                  ó.   •— ‰                       d¦  «        S )NrÓ   ©r®   rŠ   s   €r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>ž  s   ø€ ˜×/Ò/°Ñ3Ô3€ r&   c                  ó.   •— ‰                       d¦  «        S rª   r%  rŠ   s   €r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>   s   ø€ ˜×/Ò/°Ñ2Ô2€ r&   c                  ó^   •— ‰                       t          t          j        ¦  «         ¦  «        S r5   ©r®   rM   rf   rz   rŠ   s   €r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>¢  s#   ø€ ˜×/Ò/µµWÔ5IÑ1JÔ1JÐ0JÑKÔK€ r&   c                  ó\   •— ‰                       t          t          j        ¦  «        ¦  «        S r5   r(  rŠ   s   €r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>¤  s    ø€ ˜×/Ò/µµGÔ4HÑ0IÔ0IÑJÔJ€ r&   c                  ó   — d S r5   r[   r[   r&   r$   r7   z$IOTopUI.handle_key.<locals>.<lambda>§  s   € ¨t€ r&   )r¸   r   rà   rá   ÚKEY_HOMEÚKEY_ENDÚget)r„   r¥   r  r  r	  r  Úkey_bindingsÚactions   `       r$   rŸ   zIOTopUI.handle_keyU  sô  ø€ ð	-ð 	-ð 	-ð 	-ð 	-ð	&ð 	&ð 	&ð 	&ð 	&ð	2ð 	2ð 	2ð 	2ð 	2ð
!	$ð !	$ð !	$ð !	$ð !	$ðF!
Ý�‰HŒHØ#Ð#ð!
õ �‰HŒHØ#Ð#ð	!
õ
 �‰HŒHØ.Ð.Ð.Ð.ð!
õ �‰HŒHØ.Ð.Ð.Ð.ð!
õ �‰HŒHØ"ð!
õ �‰HŒHØ"ð!
õ �‰HŒHØð!
õ �‰HŒHØð!!
õ" �‰HŒHØ ð%!
õ& �‰HŒHØ ð)!
õ* �‰HŒHØð-!
õ. �‰HŒHØð1!
õ2 ŒOØ3Ð3Ð3Ð3ð5!
õ6 ÔØ2Ð2Ð2Ð2ð9!
õ: ŒOØKÐKÐKÐKð=!
õ> ŒNØJÐJÐJÐJðA!
ˆðF ×!Ò! # | |Ñ4Ô4ˆØˆ‰Œˆˆˆr&   c                 óh  ‡ ‡‡— ˆ fd„}ˆ fd„}t          t          |‰ j        j                             ¦   «         ¦  «        ¦  «        }t
          j        ‰ j                 d         Š‰ j        j	        rd„ Šnd„ Š| 
                    ˆˆfd„‰ j        ¬¦  «         t          t          ||¦  «        ¦  «        S )Nc                 ó¸  •— t          ‰j        | ‰j        j        ¦  «        }|\  }}}}dt          z  }| j        f}|dz  }||                      ¦   «         fz  }|dz  }||                      ¦   «         d d…         fz  }|dz  }|||fz  }‰j        r|dz  }|||fz  }n‰j        j	        r
|dz  }|dz  }|d	z  }||z  }|  
                    ¦   «         }	‰j        j	        s]‰j        t          |¦  «        z
  }
d
|
cxk     rt          |	¦  «        k     r,n n)|
dz
  d
z  }|
|z
  dz
   }|	d |…         dz   |	|d …         z   }	||	z  }‰j        j	        s|d ‰j        …         }|S )Nz%%%ddz %4sz %-8sé   z
 %11s %11sz %7s %7srÔ   )z?unavailable?r¶   r   r   ú~)rJ   r)   rx   r-   ÚMAX_PID_WIDTHrh   r  ro   r³   r|   ru   r‰   rM   )rj   rE   rG   rH   r@   rA   ÚformatÚparamsÚlineÚcmdlineÚremaining_lengthÚlen1Úoffset2r„   s                €r$   r5  z IOTopUI.get_data.<locals>.format«  sº  ø€ Ý  ¤¨q°$Ô2CÔ2LÑMÔMˆEØ>CÑ;ˆH�l J°Ø�}Ñ,ˆFØ”U�VˆFØ�fÑˆFØ�a—l’l‘n”n�oÑ%ˆFØ�gÑˆFØ�a—j’j‘l”l 2 A 2Ô&Ð'Ñ'ˆFØ�lÑ"ˆFØ�j +Ð-Ñ-ˆFØÔ!ð +Ø˜*Ñ$�Ø˜,¨Ð0Ñ0��Ø”Ô#ð +Ø˜&Ñ �ØÐ*Ñ*�Ø�c‰MˆFØ˜VÑ$ˆDØ—m’m‘o”oˆGØ”<Ô%ð GØ#'¤:µ°D±	´	Ñ#9Ð ØÐ'Ð6Ð6Ò6Ð6­#¨g©,¬,Ò6Ð6Ð6Ð6Ð6Ø,¨qÑ0°QÑ6�DØ 0°4Ñ 7¸!Ñ ;Ð<�GØ% e t eœn¨sÑ2°W¸W¸X¸XÔ5FÑF�GØ�G‰OˆDØ”<Ô%ð )Ø˜K˜TœZ˜KÔ(�ØˆKr&   c                 ó\   •— ‰j         j         p|                      ‰j         j        ¦  «        S r5   )r)   r  Údid_some_ior9   )rj   r„   s    €r$   Úshould_formatz'IOTopUI.get_data.<locals>.should_formatÊ  s,   ø€ Ø”|Ô(Ð(ð ;Ø—=’= ¤Ô!9Ñ:Ô:ð;r&   r   c                 ó   — | j         S r5   )r:   ©rj   s    r$   r7   z"IOTopUI.get_data.<locals>.<lambda>Ò  ó   €  Q¤]€ r&   c                 ó   — | j         S r5   )r=   r@  s    r$   r7   z"IOTopUI.get_data.<locals>.<lambda>Ô  rA  r&   c                 ó.   •—  ‰|  ‰| ¦  «        ¦  «        S r5   r[   )rj   r¥   Ústats_lambdas    €€r$   r7   z"IOTopUI.get_data.<locals>.<lambda>Õ  s   ø€  S S¨¨L¨L¸©O¬OÑ%<Ô%<€ r&   )r¥   Úreverse)ÚlistÚfilterrx   r  Úvaluesrf   rz   ry   r)   r9   Úsortr{   Úmap)r„   r5  r>  r  r¥   rD  s   `   @@r$   Úget_datazIOTopUI.get_dataª  së   øøø€ ð	ð 	ð 	ð 	ð 	ð>	;ð 	;ð 	;ð 	;ð 	;õ � Ø $Ô 1Ô ;× BÒ BÑ DÔ DñFô Fñ Gô Gˆ	åÔ" 4Ô#3Ô4°QÔ7ˆØŒ<Ô#ð 	3Ø2Ð2ˆLˆLà2Ð2ˆLØ�ŠÐ<Ð<Ð<Ð<Ð<Ø#Ô3ð 	ñ 	5ô 	5ð 	5å•C˜ 	Ñ*Ô*Ñ+Ô+Ð+r&   c                 óü  ‡ ‡ ‡!‡"‡#— dt          ‰ j        |d         |¦  «                             d¦  «        ›dt          ‰ j        |d         |¦  «                             d¦  «        ›�dt          ‰ j        |d         |¦  «                             d¦  «        ›dt          ‰ j        |d         |¦  «                             d¦  «        ›�g}t          dt          dz
  ¦  «        d	z  }‰ j        j        r|d
z  }n|dz  }|dddddddg}t          j        ‰ _        ‰ j        rt          ¦   «         dk    rd‰ _        ‰  
                    d¦  «         ‰                      ¦   «         }‰ j        j        r6dg|z   }t          j        d¦  «        Š ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }‰ j        j        r—‰ j        j        dk    rS|D ]}	t!          |	¦  «         Œ‰ j        j        t#          |¦  «        k    r"t!          d                     |¦  «        ¦  «         |D ]}
t!          |
¦  «         Œt&          j                             ¦   «          d S ‰ j                             ¦   «          ‰ j        rd }nd}g }g }‰ j        j        �rÊ‰                      d¦  «        }‰                      d¦  «        }t5          ddddd ‰ j        j        rd!nd"fd#‰ j        j        rd$nd%fd&‰ j        j        rd'nd(fd)d*‰ j        rd+nd,fd-||                              ¦   «         fd.||                              ¦   «         fd/|d                              ¦   «         fd0|d                              ¦   «         fg¦  «        }d}|                     ¦   «         D ]Ê\  }}|rd1|d2|g}d|d3k    rdnt@          j!        ddg}n	d1|d4g}g d5¢}|rI|rGtE          d                     ||         ¦  «        d                     |¦  «        z   ¦  «        ‰ j#        k    r0| $                    |¦  «         | $                    |¦  «         |dz  }Œª||xx         |z  cc<   ||xx         |z  cc<   ŒËtE          |¦  «        Š"t#          tK          |¦  «        ¦  «        Š#t#          tK          |¦  «        ¦  «        }tE          |¦  «        }‰ j&        ‰"z
  ‰#z
  |z
  |z
  }|d6k     rg }dŠ#|d7k     rg }dŠ"|d8k     rd }d}|d9k     rg }g }d}‰ j&        ‰"z
  ‰#z
  |z
  |z
  }tO          tE          |¦  «        |¦  «        }tQ          |¦  «        D ].\  Š!}	‰ j         )                    ‰!d|	d ‰ j#        …         ¦  «         Œ/|r<‰ j         *                    ‰"dtW          d	¦  «        t@          j,        z  ‰ j#        ¦  «         d}‰ j#        }t[          tE          |¦  «        ¦  «        D ]¬Š!‰ j        s‰!d:v rŒt@          j,        }|‰!         }‰!‰ j.        k    r
|dd …         }‰!‰ j.        k    r|t@          j/        z  }|‰ j        rd;pd<z  }|d |…         }|tE          |¦  «        z  }|r‰ j         )                    ‰"|||¦  «         |tE          |¦  «        z  }Œ­t[          |¦  «        D ]gŠ!	 ˆ!ˆ"ˆ#ˆ fd=„}	  ||‰!         ¦  «         n4# t`          $ r'  ||‰!          1                    d>¦  «        ¦  «         Y nw xY wŒS# t@          j2        $ r Y Œdw xY wt[          |¦  «        D ]Õ}‰ j&        |z
  |z
  |z   }‰ j         *                    |dtW          d	¦  «        t@          j,        z  ‰ j#        ¦  «         d}t[          tE          ||         ¦  «        ¦  «        D ]bŠ!‰ j         3                    ||||         ‰!         t@          j,        ||         ‰!         z  ¦  «         |tE          ||         ‰!         ¦  «        z  }ŒcŒÖ|r/‰ j         3                    ‰ j&        dz
  d|t@          j/        ¦  «         ‰ j         4                    ¦   «          d S )?NzTotal DISK READ:   r   é   z | Total DISK WRITE:   r   zCurrent DISK READ: z | Current DISK WRITE: é   r¶   ÚPIDÚTIDz  PRIOz  USERz     DISK READz  DISK WRITEz  SWAPINz      IOz    COMMANDFz    TIMEz	%H:%M:%S c                 ó   •— g | ]}‰|z   ‘ŒS r[   r[   )Ú.0rÕ   Úcurrent_times     €r$   ú
<listcomp>z+IOTopUI.refresh_display.<locals>.<listcomp>÷  s   ø€ Ð5Ð5Ð5¨!�\ AÑ%Ð5Ð5Ð5r&   c                 ó   •— g | ]}‰|z   ‘ŒS r[   r[   )rR  rk   rS  s     €r$   rT  z+IOTopUI.refresh_display.<locals>.<listcomp>ø  s   ø€ Ð9Ð9Ð9¨A�| aÑ'Ð9Ð9Ð9r&   r   r   zoCONFIG_TASK_DELAY_ACCT and kernel.task_delayacct sysctl not enabled in kernel, cannot determine SWAPIN and IO %rÓ   )Úkeysr   )Úanyr¼   )rÚ   Úquit)rë   r  r!  ÚallÚactiverj   ÚthreadsÚprocsr  Ú	bandwidthÚaccum)rI  r   rÖ   ÚascÚdescÚleftÚrightÚhomeÚendz  z: rW  ú:)r   r   r   rL   rw   r²   r2  r°   ú>ú<c                 óL   •— ‰j                              ‰‰z   ‰z   d| ¦  «         d S r  )r}   rº   )r7  rë   Úlen_summaryÚ
len_titlesr„   s    €€€€r$   Ú
print_linez+IOTopUI.refresh_display.<locals>.print_line]  s*   ø€ ØœŸš¨¨K©¸*Ñ(DÀaÈÑNÔNÐNÐNÐNr&   zutf-8)5r.   r)   ÚrjustrC   r4  r  r	   Úhas_blkio_delay_totalr³   r
   r®   rK  r;   Ústrftimer|   ÚquietrR   r   Újoinr�   ÚstdoutÚflushr}   ÚeraseÚhelpr«   r   r  r9   r{   rP   Úitemsr   ÚA_UNDERLINErM   r‰   ÚappendÚboolrˆ   r1   rÞ   rº   r·   r¸   rß   Úrangery   r»   ÚUnicodeEncodeErrorÚencoderƒ   rÝ   r¼   )$r„   Ú
first_timer    r¡   r-   Úsummaryrh   ÚtitlesÚlinesrk   rÕ   Ú
status_msgÚ
help_linesÚ
help_attrsÚprevÚnextrt  Ú	help_liner¥   Ú	help_itemÚ	help_attrÚlen_status_msgÚlen_helpÚ	max_linesÚ	num_linesÚposÚremaining_colsrî   Útitlerk  Úlnr7  rS  rë   ri  rj  s$   `                               @@@@r$   r–   zIOTopUI.refresh_displayÙ  s 	  øøøøø€ € õ ! ¤¨u°Q¬x¸ÑBÔB×HÒHÈÑLÔLÐLÐLÝ  ¤¨u°Q¬x¸ÑBÔB×HÒHÈÑLÔLÐLðNð Nõ ! ¤¨w°q¬z¸8ÑDÔD×JÒJÈ2ÑNÔNÐNÐNÝ  ¤¨w°q¬z¸8ÑDÔD×JÒJÈ2ÑNÔNÐNðPð	
ˆõ �!•m aÑ'Ñ)Ô)¨CÑ/ˆØŒ<Ô!ð 	Ø�5‰LˆCˆCà�5‰LˆCØ�x Ð+;¸^Ø˜j¨-ð9ˆå"Ô8ˆÔØÔð 	+õ
 %Ñ&Ô&¨%Ò/Ð/Ø%*�Ô"Ø×Ò Ñ"Ô"Ð"Ø—’‘”ˆØŒ<Ôð 	:Ø �\ FÑ*ˆFÝœ=¨Ñ5Ô5ˆLØ5Ð5Ð5Ð5¨uÐ5Ñ5Ô5ˆEØ9Ð9Ð9Ð9°Ð9Ñ9Ô9ˆGØŒ<Ôð x	ØŒ|Ô! QÒ&Ð&Ø ð ð �AÝ˜!‘H”H�H�HØ”<Ô%­¨Z©¬Ò8Ð8Ý˜"Ÿ'š' &™/œ/Ñ*Ô*Ð*Øð ð �Ý�a‘”��ÝŒJ×ÒÑÔÐÐÐàŒH�NŠNÑÔÐàÔ!ð BØ!�
�
ðA�
ð
 ˆJØˆJØŒ|Ô ñ  ;Ø×+Ò+¨BÑ/Ô/�Ø×+Ò+¨AÑ.Ô.�Ý"Ø Ø&Ø!Ø#Ø 4¤<Ô#4ÐB˜%˜%¸(ÐCØ t¤|Ô'=ÐJ˜)˜)À7ÐKØ¨¬Ô)AÐN˜+˜+ÀwÐOØ Ø 4Ô#7ÐC˜%˜%¸VÐDØ˜V Dœ\×/Ò/Ñ1Ô1Ð2Ø˜f Tœl×0Ò0Ñ2Ô2Ð3Ø˜V AœYŸ_š_Ñ.Ô.Ð/Ø˜F 2œJ×,Ò,Ñ.Ô.Ð/ð$ñ ô �ð �	Ø!%§¢¡¤ð ;ð ;‘I�C˜Øð .Ø%)¨3°°dÐ$;˜	Ø%&¨S°Eª\¨\¨¨½vÔ?QÐSTÐVWÐ$X˜	˜	à%)¨3°Ð$4˜	Ø$- I I˜	Ø%ð ;¨Tð ;µS¸¿ºÀÈIÔAVÑ9WÔ9WÐZ\×ZaÒZaÐbkÑZlÔZlÑ9lÑ5mÔ5mÐptÔpzÒ5zÐ5zØ"×)Ò)¨)Ñ4Ô4Ð4Ø"×)Ò)¨)Ñ4Ô4Ð4Ø! Q™˜	˜	à" 9Ð-Ð-Ô-°Ñ:Ð-Ð-Ñ-Ø" 9Ð-Ð-Ô-°Ñ:Ð-Ð-Ñ-Ð-å˜g™,œ,ˆKÝ�T &™\œ\Ñ*Ô*ˆJÝ ¥ jÑ!1Ô!1Ñ2Ô2ˆNÝ˜:‘”ˆHØœ kÑ1°JÑ>ÀÑOÐRZÑZˆIØ˜1Š}ˆ}Ø�Ø�
Ø˜1Š}ˆ}Ø�Ø�Ø˜1Š}ˆ}Ø!�
Ø!"�Ø˜1Š}ˆ}Ø�
Ø�
Ø�Øœ kÑ1°JÑ>ÀÑOÐRZÑZˆIÝ�C ™JœJ¨	Ñ2Ô2ˆIå! 'Ñ*Ô*ð 6ð 6‘��1Ø”—’  1 a¨¨¬¨¤nÑ5Ô5Ð5Ð5Øð XØ”—’˜{¨A­s°3©x¬x½&Ô:JÑ/JÈDÌJÑWÔWÐWØˆCØ!œZˆNÝ�3˜v™;œ;Ñ'Ô'ð "ð "�ØÔ)ð ¨a°6¨k¨kØÝÔ'�Ø˜qœ	�Ø˜Ô(Ò(Ð(Ø! ! " "œI�EØ˜Ô(Ò(Ð(Ø�FœMÑ)�DØ˜TÔ1Ð9°cÐ@¸SÑ@�EØ˜o˜~˜oÔ.�Ø¥# e¡*¤*Ñ,�Øð CØ”H—O’O K°°e¸TÑBÔBÐBØ•s˜5‘z”zÑ!��Ý˜9Ñ%Ô%ð ð �ð
ðOð Oð Oð Oð Oð Oð Oð Oð=Ø"˜
 5¨¤8Ñ,Ô,Ð,Ð,øÝ-ð =ð =ð =ð #˜
 5¨¤8§?¢?°7Ñ#;Ô#;Ñ<Ô<Ð<Ð<Ð<ð=øøøøøõ ”|ð ð ð Ø�Dðøøøå˜H‘o”oð 2ð 2�Ø”{ ^Ñ3°hÑ>ÀÑC�Ø”—’˜t Q­¨C©¬µ6Ô3CÑ(CÀTÄZÑPÔPÐPØ�Ý�s :¨b¤>Ñ2Ô2Ñ3Ô3ð 2ð 2�AØ”H—O’O D¨#¨z¸"¬~¸aÔ/@Å&ÔBRÐU_Ð`bÔUcÐdeÔUfÑBfÑgÔgÐgØ�3˜z¨"œ~¨aÔ0Ñ1Ô1Ñ1�C�Cð2ð ð /Ø”—’ ¤¨a¡°°JÝ &¤ñ/ô /ð /àŒH×ÒÑÔÐÐÐs6   Ù(Z8Ù1ZÚZ8Ú.Z4Ú1Z8Ú3Z4Ú4Z8Ú8[
Û	[
r  r5   )rù   )rX   rY   rZ   rz   r…   r~   r¦   r¨   r®   r«   rÅ   rÈ   rÊ   rÎ   rÑ   rï   rø   rü   rþ   rŸ   rK  r–   r[   r&   r$   rf   rf   �   s°  € € € € € ð 
Ð	˜UÐ#Ø	)Ð	)¨5Ð1Ø	"Ð	" EÐ*Ø	"Ð	" DÐ)Ø	=Ð	=¸tÐDØ	*Ð	*¨DÐ1ð
Cð 
CØDHð	Jà	%Ð	% uÐ-ð€Lðð ð ð"6ð 6ð 6ð%ð %ð %ðB8ð 8ð 8ðMð Mð Mðð ð ðð ð ð ðð ð ð ðð ð ðð ð ðð ð ð(ð (ð (ðBð ð ð ðð ð ð ðð ð ðSð Sð Sðj-,ð -,ð -,ð^Xð Xð Xð Xð Xr&   rf   c                 ór  — |j         r*t          j        t          j        t          j        ¦  «         nAd„ }t          j        t          j        |¦  «         t          j        t          j        |¦  «         t          |¦  «        }t          ||¦  «        }t          | ||¦  «        }| 	                    ¦   «          d S )Nc                  ó.   — t          j        d¦  «         d S r  r  )r˜   Úkwargss     r$   Ú
clean_exitz$run_iotop_window.<locals>.clean_exitx  s   € ÝŒH�Q‰KŒKˆKˆKˆKr&   )
r|   ÚsignalÚSIGPIPEÚSIG_DFLÚSIGINTÚSIGTERMr   r   rf   r¦   )r}   r)   r“  r  rx   Úuis         r$   Úrun_iotop_windowrš  t  sœ   € Ø„}ð 2ÝŒ•f”n¥f¤nÑ5Ô5Ð5Ð5ð	ð 	ð 	åŒ•f”m ZÑ0Ô0Ð0ÝŒ•f”n jÑ1Ô1Ð1Ý+¨GÑ4Ô4ÐÝÐ3°WÑ=Ô=€LÝ	��l GÑ	,Ô	,€BØ‡F‚F�H„H€H€H€Hr&   c                 ó~  — 	 | j         rt          d | ¦  «        S t          j        t          | ¦  «        S # t          j        $ r;}t          d|t          j        ¬¦  «         t          j        d¦  «         Y d }~d S d }~wt          $ r·}|j
        t          j        k    rJt          |t          j        ¬¦  «         t          dt          j        ¬¦  «         t          j        d¦  «         |j
        t          j        k    r7t          |t          j        ¬¦  «         t          dt          j        ¬¦  «         n‚ Y d }~d S d }~ww xY w)Nziotop interface error:)Úfiler   a“  
The Linux kernel interfaces that iotop relies on now require root privileges
or the NET_ADMIN capability. This change occurred because a security issue
(CVE-2011-2494) was found that allows leakage of sensitive data across user
boundaries. If you require the ability to run iotop as a non-root user, please
configure sudo to allow you to run iotop as root.

Please do not file bugs on iotop about this.a/  
The Linux kernel interfaces that iotop relies on for process I/O statistics
were not found. Please enable CONFIG_TASKSTATS in your Linux kernel build
configuration, use iotop outside a container and or share the host's
network namespace with the container.

Please do not file bugs on iotop about this.)r|   rš  r   Úwrapperrƒ   rR   r�   Ústderrr�   ÚOSErrorr™   ÚEPERMÚENOENT)r)   rS   s     r$   Ú	run_iotopr¢  ‚  sp  € ðØŒ=ð 	=Ý# D¨'Ñ2Ô2Ð2å”>Õ"2°GÑ<Ô<Ð<øÝŒ<ð ð ð ÝÐ&¨µ´
Ð;Ñ;Ô;Ð;ÝŒ�‰ŒˆˆˆˆˆˆˆøøøøÝð ð ð ØŒ7•e”kÒ!Ð!Ý�!�#œ*Ð%Ñ%Ô%Ð%Ýð 0õ 7:´jðBñ Bô Bð Bõ ŒH�Q‰KŒKˆKØŒ7•e”lÒ"Ð"Ý�!�#œ*Ð%Ñ%Ô%Ð%Ýð 0õ 7:´jðBñ Bô Bð Bð Bð ðBð Bð Bð Bð Bð Bøøøøðøøøs&   ‚3 ™3 ³D<Á0A8Á8D<ÂB,D7Ä7D<c                 ó˜  — d}	 dd l }dd l}t          d¦  «         |                     dt	          ¦   «         t          ¦   «         |¦  «         |                     |¦  «        }n�# t          $ rt dd l}dd l	}| 
                    |d¬¦  «        }t          d¦  «         |                     | ¦  «         |                     ¦   «          |j                             |¦  «        }Y nw xY w|                     ¦   «          |                     dd	¦  «         |                     d
¦  «         |                     d
¦  «         t'          j        |¦  «         d S )Nz
iotop.profr   zProfiling using cProfilezcontinuation()r   )Ú
lineeventszProfiling using hotshotr;   Úcallsé2   )ÚcProfileÚpstatsrR   ÚrunctxÚglobalsÚlocalsr	   ÚImportErrorÚhotshotÚhotshot.statsÚProfileÚruncallÚcloserE   ÚloadÚ
strip_dirsÚ
sort_statsÚprint_statsÚprint_calleesÚosÚremove)ÚcontinuationÚ	prof_filer§  r¨  rE   r­  Úprofs          r$   Ú_profiler¼  ¨  sU  € Ø€Ið.ØˆˆˆØˆˆˆÝÐ(Ñ)Ô)Ð)Ø�ŠÐ(­'©)¬)µV±X´X¸yÑIÔIÐIØ—’˜YÑ'Ô'ˆˆøÝð .ð .ð .ØˆˆˆØÐÐÐØ�Š˜y°QˆÑ7Ô7ˆÝÐ'Ñ(Ô(Ð(Ø�Š�\Ñ"Ô"Ð"Ø�
Š
‰ŒˆØ”×"Ò" 9Ñ-Ô-ˆˆˆð.øøøð 
×ÒÑÔÐØ	×Ò�V˜WÑ%Ô%Ð%Ø	×Ò�bÑÔÐØ	×Ò˜ÑÔÐÝ„IˆiÑÔÐÐÐs   „AA! Á!A;CÃCaF  %s [OPTIONS]

DISK READ and DISK WRITE are the block I/O bandwidth used during the sampling
period. SWAPIN and IO are the percentages of time the thread spent respectively
while swapping in and waiting on I/O more generally. PRIO is the I/O priority
at which the thread is running (set using the ionice command).

Controls: left and right arrows to change the sorting column, r to invert the
sorting order, o to toggle the --only option, p to toggle the --processes
option, a to toggle the --accumulated option, i to change I/O priority, q to
quit, any other key to force a refresh.c            	      óø  ‡‡— 	 t          j        t           j        d¦  «         n$# t           j        $ r t	          d¦  «         Y nw xY wt          j        t          dt          z   ¬¦  «        } |  	                    ddddd	d
¬¦  «         |  	                    ddddd¬¦  «         |  	                    dddddd¬¦  «         |  	                    ddddddd¬¦  «         |  	                    d d!dd"d#d$d%¬&¦  «         |  	                    d'd(d)d*d#d+d,¬&¦  «         |  	                    d-d.dd/d	d0¬¦  «         |  	                    d1d2dd3d	d4¬¦  «         |  	                    d5d6dd7d	d8¬¦  «         |  	                    d9d:dd;d<¬¦  «         |  	                    d=d>d?d@dAdB¬¦  «         |  	                    dCddDd	t
          j
        ¬¦  «         |  	                    dEdFdGdHdI¬¦  «         |                      ¦   «         \  Š}|r+|                      dJdK                     |¦  «        z   ¦  «         t          ‰¦  «         ‰j        pg ‰_        ‰j        p‰j        p‰j        ‰_        ˆfdL„Š‰j        rˆfdM„}t)          |¦  «         d S  ‰¦   «          d S )NNr   z8unable to set locale, falling back to the default localeziotop )ÚusageÚversionz-oz--onlyÚ
store_truer  Fz1only show processes or threads actually doing I/O)r/  ÚdestrÂ   rt  z-bz--batchr|   znon-interactive mode)r/  rÁ  rt  z-nz--iterr   r”   ÚNUMz-number of iterations before ending [infinite])ÚtyperÁ  Úmetavarrt  z-dz--delayr   r—   z#delay between iterations [1 second]ÚSECr   )rÃ  rÁ  rt  rÄ  rÂ   z-pz--pidÚpidsrw  z"processes/threads to monitor [all]rO  )rÃ  rÁ  r/  rt  rÄ  z-uz--userÚstrÚuserszusers to monitor [all]ÚUSERz-Pz--processesr  z$only show processes, not all threadsz-az--accumulatedr9   z)show accumulated I/O instead of bandwidthz-kz--kilobytesr(   z.use kilobytes instead of a human friendly unitz-tz--timer;   z.add a timestamp on each line (implies --batch)z-qz--quietÚcountro  r   z/suppress some lines of header (implies --batch)z	--profileÚprofilez	--no-helpÚstore_falsert  Tzsuppress listing of shortcutszUnexpected arguments: r¶   c                  ó"   •— t          ‰ ¦  «        S r5   )r¢  )r)   s   €r$   r7   zmain.<locals>.<lambda>þ  s   ø€ �	 'Ñ*Ô*€ r&   c                  ó@   •— 	  ‰ ¦   «          d S # t           $ r Y d S w xY wr5   )rQ   )Ú	main_loops   €r$   Úsafe_main_loopzmain.<locals>.safe_main_loop  s9   ø€ ðØ�	‘”���øÝð ð ð Ø��ðøøøs   ƒ
 �
œ)ÚlocaleÚ	setlocaleÚLC_ALLÚErrorrR   ÚoptparseÚOptionParserÚUSAGEr   Ú
add_optionÚSUPPRESS_HELPÚ
parse_argsrƒ   rp  r   rÆ  r|   r;   ro  rË  r¼  )Úparserr˜   rÐ  rÏ  r)   s      @@r$   ÚmainrÜ  Ï  s‘  øø€ ðJÝÔ�œ¨Ñ+Ô+Ð+Ð+øÝŒ<ð Jð Jð JÝÐHÑIÔIÐIÐIÐIðJøøøåÔ"­¸Å7Ñ8JÐKÑKÔK€FØ
×Ò�d˜H¨\Ø!¨5ØNð ñ Pô Pð Pð ×Ò�d˜I¨lÀØ1ð ñ 3ô 3ð 3à
×Ò�d˜H¨5°|Ø#ØJð ñ Lô Lð Lð ×Ò�d˜I¨G¸/Ø@Ø#¨Qð ñ 0ô 0ð 0ð ×Ò�d˜G¨%°fÀXØ?Èð ñ Pô Pð Pà
×Ò�d˜H¨5°wØ%Ð,DØ$ð ñ &ô &ð &ð ×Ò�d˜M°,Ø&°ØAð ñ Cô Cð Cð ×Ò�d˜O°LØ(°%ØFð ñ Hô Hð Hð ×Ò�d˜M°,Ø&°ØKð ñ Mô Mð Mð ×Ò�d˜H¨\ÀØKð ñ Mô Mð Mà
×Ò�d˜I¨g¸GÈQØLð ñ Nô Nð Nà
×Ò�k¨,¸YØ#­(Ô*@ð ñ Bô Bð Bà
×Ò�k¨-¸fÈdØ:ð ñ <ô <ð <ð ×%Ò%Ñ'Ô'�M€GˆTØð @Ø�ŠÐ-°·²¸±´Ñ>Ñ?Ô?Ð?ÝˆgÑÔÐØ”<Ð% 2€G„LØ”MÐB W¤\ÐB°W´]€G„Mà*Ð*Ð*Ð*€Ià„ð ð	ð 	ð 	ð 	ð 	õ
 	�Ñ Ô Ð Ð Ð àˆ	‰Œˆˆˆs   „$ ¤AÁA)4Ú
__future__r   r   r™   rÑ  r   rÕ  r·  rŒ   r”  r�   r;   Úhasattrr   r¬  ÚRuntimeErrorÚcollectionsr   Ú
iotop.datar   r   r   r	   r
   r   Úiotop.versionr   Úiotopr   Úiotop.ioprior   r    r%   r+   r.   rJ   rT   r4  rQ   rV   r^   r`   rb   rd   Úobjectrf   rš  r¢  r¼  Úargvr×  rÜ  r[   r&   r$   ú<module>rç     s'  ðð( &Ð %Ð %Ð %Ð %Ð %à €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø €€€ðØˆ7�4˜Ñ%Ô%ð #Ø'Ð'Ð'Ð'Ð'Ð'Ø"ˆŒøøØ�\Ð"ð ð ð Ø”Y€D„N€N€Nðøøøð $Ð #Ð #Ð #Ð #Ð #à ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ð ]Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ð 	,Ð+Ð+€ð?ð ?ð ?ðð ð ðHð Hð Hð;ð ;ð ;ð,ð ð ð "Ð!Ñ#Ô#€ð	ð 	ð 	ð 	ð 	�)ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	˜	ñ 	ô 	ð 	ðað að að að aˆfñ aô að aðHð ð ðð ð ðLð ð ð4
	+ð .1¬X°a¬[ñ
	9€ð9ð 9ð 9ð 9ð 9s   °A
 Á
A ÁA 