+
    ¨ÚživE  ã                   ó  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H	t
 ^ RI	Ht ^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHtHtHtHtHt ^ RIt^ RIt]P8                  ! 4         ! R	 R
]4      t ! R R4      tR t R t!R.R lt"R t#R/R lt$R t%R t&R t'R t(R t)R t* ! R R]4      t+R.R lt,R.R lt-R t.R t/R t0R t1R.R  lt2R! t3R.R" lt4R.R# lt5R$ t6R% t7R& t8R' t9R( t:R) t;R* t<]=R+8X  d   ]6! RR,R-4       R# R# )0é    N)Úcopy)Úgettext)Úngettext)Úceil)ÚS_IMODEÚS_IXUSRÚST_MODE)Úurlsplit)ÚProxyHandlerÚRequestÚbuild_openerÚinstall_openerÚurlopenc                   ó:   a € ] tR t^4t o RtRR ltR tR tRtV t	R# )ÚExecutionTimez¦
Helper that can be used in with statements to have a simple
measure of the timing of a particular block of code, e.g.
with ExecutionTime("db flush"):
    db.flush()
c                ó   € Wn         R # ©N)Úinfo)Úselfr   s   &&Ú:/usr/lib/python3/dist-packages/UpdateManager/Core/utils.pyÚ__init__ÚExecutionTime.__init__<   s   € ØŽ	ó    c                ó:   € \         P                   ! 4       V n        R # r   )ÚtimeÚnow©r   s   &r   Ú	__enter__ÚExecutionTime.__enter__?   s   € Ü—9’9“;ˆŽr   c                ó†   € \        V P                  : R \        P                  ! 4       V P                  ,
          : 24       R# )z: N)Úprintr   r   r   )r   ÚtypeÚvalueÚstacks   &&&&r   Ú__exit__ÚExecutionTime.__exit__B   s"   € Ü˜$Ÿ)œ)¤T§Y¢Y£[°4·8±8×%;Ð<Ö=r   )r   r   N)Ú )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r%   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   4   s   ø‡ € ñôò÷>ð >r   r   c                   ó2   € ] tR t^Ft^ t^t^t^t^t^t	^t
RtR# )ÚSoftwarePropertiesPage© N)r(   r)   r*   r+   Úubuntu_softwareÚother_softwareÚupdatesÚauthenticationÚadditional_driversÚdeveloper_optionsÚ
ubuntu_pror-   r3   r   r   r2   r2   F   s'   † Ø€OØ€NØ€GØ€NØÐØÐØ„Jr   r2   c                 óL  € \        V 4      p\        VP                  4      pVP                  '       d,   VP                  P	                  VP                  R 4      Vn        VP
                  '       d,   VP                  P	                  VP
                  R4      Vn        \        V4      # )zhidden-uzhidden-p)r   r
   ÚuriÚusernameÚreplaceÚpasswordÚstr)ÚentryÚtmpÚ	url_partss   &  r   Ú)get_string_with_no_auth_from_source_entryrD   P   sr   € Ü
ˆu‹+€CÜ˜Ÿ™Ó!€IØ××ÐØ—'‘'—/‘/ )×"4Ñ"4°jÓAˆŒØ××ÐØ—'‘'—/‘/ )×"4Ñ"4°jÓAˆŒÜˆs‹8€Or   c                 ó¦   € Rp  ^ RI pVP                  4       pVP                  R4      p V #   \         d    \        P
                  ! R4        T # i ; i)z)return True if Unity is currently runningFNzcom.canonical.Unityz&could not check for Unity dbus service)ÚdbusÚ
SessionBusÚname_has_ownerÚ	ExceptionÚloggingÚ	exception)Úunity_runningrF   Úbuss      r   Úis_unity_runningrN   Z   s]   € à€MðDÛà�o‰oÓˆØ×*Ñ*Ð+@ÓAˆð Ðøô ô DÜ×ÒÐBÕCØÐðDús   „%+ «!AÁAc                 óº  € V'       g   \         P                  ! 4       pV^ 8”  d¤   RV,          p\        V4      ;_uu_ 4       pVP                  4       pRRR4       XP	                  R4      ^,          P                  R4      ^ ,          pWP8X  d   R# \        VP                  R4      ^,          P                  4       ^,          4      pKª  R#   + '       g   i     L€; i)r   z/proc/%s/statNÚ(Ú)TF)ÚosÚgetpidÚopenÚreadÚ	partitionÚ
rpartitionÚintÚsplit)ÚprocessnameÚpidÚ	stat_fileÚstat_fÚstatÚcommands   &&    r   Úis_child_of_process_namer`   g   s›   € ßÜ�iŠi‹kˆØ
�Œ'Ø# cÕ)ˆ	Ü�)�_Œ_ Ø—;‘;“=ˆD÷ ð —.‘. Ó% aÕ(×3Ñ3°CÓ8¸Õ;ˆØÔ!Ùä�$—/‘/ #Ó& qÕ)×/Ñ/Ó1°!Õ4Ó5ŠÙ÷ �_ús   ÁC
Ã
C	c                 óô   € \         P                  P                  R4      '       d&   \         P                  P                  R4      '       g   R# \         P                  ! R4      \         P                  ! R4      8g  # )z&returns True if we are inside a chrootz/procz/proc/1TÚ/z/proc/1/root)rR   ÚpathÚexistsr^   r3   r   r   Úinside_chrootre   w   sH   € ô �7‰7�>‰>˜'×"Ò"¬"¯'©'¯.©.¸×*CÒ*CÙä�7Š7�3‹<œ2Ÿ7š7 >Ó2Ñ2Ð2r   c                óâ   € RpV P                  4        FX  p\        V4      VP                  R4      ,
          \        V4      ,           V8”  d   VRV,           ,          pW4R,           ,          pKZ  	  V# )z�helpers inspired after textwrap - unfortunately
we can not use textwrap directly because it break
packagenames with "-" in them into new lines
r'   Ú
Ú )rY   ÚlenÚrfind)ÚtÚwidthÚsubsequent_indentÚoutÚss   &&&  r   Úwraprp   €   s]   € ð
 €CØ�W‰WŽYˆÜ�‹H�s—y‘y “Õ&¬#¨a«&Õ0°5Ô8Ø�4Ð+Õ+Õ+ˆCØ�3�w�Šñ ð €Jr   c                 ót   € R pV P                  R4      pV F  p\        V3/ VB p W R,           ,          pK   	  V# )r'   rg   )rY   rp   )ro   ÚkwargsÚmsgÚparasÚpars   &,   r   Útwraprv   �   s?   € Ø
€CØ�G‰G�D‹M€EÛˆÜ�Ñ˜ÑˆØ�4�x�Šñ ð €Jr   c                 ól  € . p \         P                  P                  R4      '       g   . # \        P                  ! R.\        P
                  RR7      pVP                  4       ^ ,          P                  R4      pV^  V F3  pV'       g   K  V P                  VP                  4       ^ ,          4       K5  	  V # )z;return list of loaded modules (or [] if lsmod is not found)z/sbin/lsmodT©ÚstdoutÚuniversal_newlinesrg   )	rR   rc   rd   Ú
subprocessÚPopenÚPIPEÚcommunicaterY   Úappend)ÚmodulesÚpÚlinesÚlines       r   Úlsmodr„   –   sŒ   € à€Gä�7‰7�>‰>˜-×(Ò(Øˆ	Ü×ÒØ	ˆ¤
§¡ÀDô	€Að �M‰M‹O˜AÕ×$Ñ$ TÓ*€Eàˆaˆãˆß‰4Ø�N‰N˜4Ÿ:™:›<¨�?Ö+ñ ð €Nr   c                ó  € \         P                  P                  V 4      '       g   R# \        \         P                  ! V 4      \
        ,          4      pV\        ,          \        8X  g$   \         P                  ! W\        ,          4       R# R# )zAcheck if a given binary has the executable bit and if not, add itN)rR   rc   rd   r   r^   r	   r   Úchmod)rc   Úmodes   & r   Úcheck_and_fix_xbitrˆ   ©   sP   € ä�7‰7�>‰>˜$×ÒÙÜ”2—7’7˜4“=¤Õ)Ó*€DØ”G�^¤Ô'Ü
�Š�œg•~Ö&ñ (r   c                 ó–  € RR/p R\         P                  9  d   R# \         P                  R,          P                  4       pVR,          V 9   d   WR,          ,          # RV9   dW   VP                  R4      ^ ,          P                  R4      ^,          pRV9   d   VP                  R4      ^ ,          pVR,           # VR,          R,           # )	z8helper to get the country mirror from the current localeÚcr'   ÚLANG:Né   NÚ_Ú.Ú@:Né   N)rR   ÚenvironÚlowerrY   )Úlang_mirrorÚlangÚcountrys      r   Úcountry_mirrorr–   ²   s§   € ð ˜�)€Kà”R—Z‘ZÔÙÜ�:‰:�fÕ×#Ñ#Ó%€DàˆB…x�;ÔØ �8Õ$Ð$à
ˆd„{Ø—*‘*˜S“/ !Õ$×*Ñ*¨3Ó/°Õ2ˆØ�'Œ>Ø—m‘m CÓ(¨Õ+ˆGØ˜�}Ðà�B�x˜#�~Ðr   c                 óÜ   € \         P                  P                  R4      p V '       d    \        P                  ! RV ,          4       V # \
        P                  ! 4       pVP                  RR4      # )z0return the codename of the current runing distroÚMETA_RELEASE_FAKE_CODENAMEzQusing fake release name '%s' (because of META_RELEASE_FAKE_CODENAME environment) ÚVERSION_CODENAMEúunknown distribution©rR   r‘   ÚgetrJ   ÚwarningÚplatformÚfreedesktop_os_release)ÚdistÚ
os_releases     r   Úget_distr¢   È   s[   € ô �:‰:�>‰>Ð6Ó7€DßÜ�Šð7Ø9=õ>ô	
ð ˆä×0Ò0Ó2€JØ�>‰>Ð,Ð.DÓEÐEr   c                 óÜ   € \         P                  P                  R4      p V '       d    \        P                  ! RV ,          4       V # \
        P                  ! 4       pVP                  RR4      # )z0return the version of the current running distroÚMETA_RELEASE_FAKE_VERSIONzSusing fake release version '%s' (because of META_RELEASE_FAKE_VERSION environment) Ú
VERSION_IDrš   r›   )Údescr¡   s     r   Úget_dist_versionr§   ×   sZ   € ô �:‰:�>‰>Ð5Ó6€DßÜ�Šð6Ø8<õ=ô	
ð ˆä×0Ò0Ó2€JØ�>‰>˜,Ð(>Ó?Ð?r   c                   ó&   a € ] tR t^æt o R tRtV tR# )ÚHeadRequestc                ó   € R # )ÚHEADr3   r   s   &r   Ú
get_methodÚHeadRequest.get_methodç   s   € Ùr   r3   N)r(   r)   r*   r+   r¬   r-   r.   r/   s   @r   r©   r©   æ   s   ø‡ € ÷ð r   r©   c                ó<  € V'       g   R  V! RV ,          4       \        V 4      w  r#rEpV! RV: RV: RV: RV: RV: R24       VR9   d;    \        \        V 4      4      pVP                  4        VP                  ^È8X  d   R	# R
# VR8X  d¶   ^ RIp	 V	P                  V4      p
V
P                  4        V
P                  \        P                  P                  V4      4       V
P                  \        P                  P                  V4      4      pV
P                  4        V'       d   V! RV,          4       V^ 8w  d   R	#  R
# R
#   \
         d   pT! RT,          4        Rp?R
# Rp?ii ; i  \
         d#   pT'       d   T! RT,          4        Rp?R
# Rp?ii ; i)z¾
helper that checks if the given uri exists and is downloadable
(supports optional debug_func function handler to support
 e.g. logging)

Supports http (via HEAD) and ftp (via size request)
c                 ó   € R # )Tr3   )Úxs   &r   Ú<lambda>Ú"url_downloadable.<locals>.<lambda>ô   s   € ‘$r   zurl_downloadable: %szs='z' n='z' p='z' q='z' f='Ú'TFzerror from httplib: '%s'NÚftpzftplib.size() returned: %szerror from ftplib: '%s')ÚhttpÚhttps)r
   r   r©   ÚcloseÚcoderI   ÚftplibÚFTPÚloginÚcwdrR   rc   ÚdirnameÚsizeÚbasenameÚquit)r<   Ú
debug_funcÚschemeÚnetlocrc   ÚquerryÚfragmentÚ	http_fileÚer¹   Úfr¾   s   &&          r   Úurl_downloadablerÉ   ë   sO  € ÷ ÚÙÐ%¨Õ+Ô,Ü/7¸«}Ñ,€V�T 8Úã“6›4£«ð	3ôð Ð"Ô"ð	Ü¤¨CÓ 0Ó1ˆIØ�O‰OÔØ�~‰~ Ô$ÙÙð 
�5ŒÛð	Ø—
‘
˜6Ó"ˆAØ�G‰GŒIØ�E‰E”"—'‘'—/‘/ $Ó'Ô(Ø—6‘6œ"Ÿ'™'×*Ñ*¨4Ó0Ó1ˆDØ�F‰FŒHßÙÐ7¸$Õ>Ô?Ø�qŒyÙð ó øô) ô 	ÙÐ1°AÕ5Ô6Ýûð	ûô  ô 	ßÙÐ4°qÕ8Ô9Ýûð	ús7   Á5E ÂBE. Ä)E. ÅE+ÅE&Å&E+Å.FÅ9FÆFc                óN  € Rp/ p\         P                  P                  R4      R8w  d$   \         P                  P                  R4      VR&   M³\        P                  P                  V4      '       d�   \         P                  ! 4       p\         P                  ! W14       VP                  RR4      pV'       dJ   VP                  R4      p\        VP                  R4      4      pV'       d   V'       d   R	V: R
V: R2VR&   \         P                  P                  R4      R8w  d$   \         P                  P                  R4      VR&   MRV9   d   VR,          VR&   V'       dÅ   VP                  4        FE  p\        P                  ! RV4      '       d   K"  \        RV,          \        P                   R7        R# 	  \#        V4      p\%        V4      p	\'        V	4       RV9   d   \        P(                  ! RVR,          4       RV9   d   \        P(                  ! RVR,          4       V# )z¶init proxy settings

* use apt.conf http proxy if present,
* otherwise look into synaptics config file,
* otherwise the default behavior will use http_proxy environment
  if present
z/root/.synaptic/synaptic.confzAcquire::http::Proxyr'   rµ   zSynaptic::useProxyFzSynaptic::httpProxyzSynaptic::httpProxyPortzhttp://Ú:rb   zAcquire::https::Proxyr¶   zhttps?://\w+zproxy '%s' looks invalid)ÚfileNÚ
http_proxyÚhttps_proxy)Úapt_pkgÚconfigÚfindrR   rc   rd   ÚConfigurationÚread_config_fileÚfind_br@   Úfind_iÚvaluesÚreÚmatchr!   ÚsysÚstderrr   r   r   Úputenv)
Ú	gsettingsÚSYNAPTIC_CONF_FILEÚproxiesÚcnfÚ	use_proxyÚ
proxy_hostÚ
proxy_portÚproxyÚproxy_supportÚopeners
   &         r   Ú
init_proxyræ     s˜  € ð 9ÐØ€Gä‡~�~×ÑÐ1Ó2°bÔ8Ü!Ÿ.™.×-Ñ-Ð.DÓEˆ�Šä	�‰�‰Ð*×	+Ò	+Ü×#Ò#Ó%ˆÜ× Ò  Ô9Ø—J‘JÐ3°UÓ;ˆ	ßØŸ™Ð"7Ó8ˆJÜ˜SŸZ™ZÐ(AÓBÓCˆJßŸj˜jÛ5?ÃÐ"L�˜‘Ü‡~�~×ÑÐ2Ó3°rÔ9Ü"Ÿ>™>×.Ñ.Ð/FÓGˆ�ÒØ	�7Ô	Ø" 6�?ˆ�Ñçà—^‘^Ö%ˆEÜ—8’8˜O¨U×3Ô3ÜÐ0°5Õ8¼s¿z¹zÕJÚñ &ô % WÓ-ˆÜ˜mÓ,ˆÜ�vÔØ�WÔÜ�IŠI�l G¨F¥OÔ4Ø�gÔÜ�IŠI�m W¨WÕ%5Ô6Ø€Nr   c                 óÌ  €  ^ RI p V P                  V P                  P                  4      p VP                  RR4      pV P	                  VR4      pVP                  RR4      #   T P                  P                   dU   pRpTP                  T8w  d   h TP                  RR4      pT P	                  TR4      pTP                  RR	4      u Rp?# Rp?ii ; i  \         d     R
# i ; i)z�
Check via dbus if the system is running on battery.
This function is using UPower per default, if UPower is not
available it falls-back to DeviceKit.Power.
Nzorg.freedesktop.UPowerz/org/freedesktop/UPowerzorg.freedesktop.DBus.PropertiesÚ	OnBatteryz)org.freedesktop.DBus.Error.ServiceUnknownzorg.freedesktop.DeviceKit.Powerz /org/freedesktop/DeviceKit/PowerÚ
on_batteryF)
rF   ÚBusÚTYPE_SYSTEMÚ
get_objectÚ	InterfaceÚGetÚ
exceptionsÚDBusExceptionÚ_dbus_error_namerI   )rF   rM   ÚdevobjÚdevrÇ   Úerror_unknowns         r   ré   ré   E  sá   € ðÛà�h‰h�t—x‘x×+Ñ+Ó,ˆð	LØ—^‘^Ø(Ð*CóˆFð —.‘. Ð)JÓKˆCØ—7‘7Ð3°[ÓAÐAøØ�‰×,Ñ,ô 		LØGˆMØ×!Ñ! ]Ô2ØØ—^‘^Ø1Ø2óˆFð —.‘. Ð)JÓKˆCØ—7‘7Ð<¸lÓKÕKûð		Lûô ô ò ðús;   ‚)C ¬5A" Á"CÁ=A	CÃCÃC ÃCÃC ÃC#Ã"C#c                 ó:  €  ^ RI Hp Hp V P                  V P                  P
                  4      pVP                  RRRRVP                  RR
4      R^ RRR4
      w  r4V P                  VP                  4       V^ ,          ,          R7      pV#   \         d     R	# i ; i)zv
Send a dbus signal to logind to not suspend the system, it will be
released when the return value drops out of scope
)ÚGioÚGLibzorg.freedesktop.login1z/org/freedesktop/login1zorg.freedesktop.login1.ManagerÚInhibitz(ssss)N)ÚfdF)ÚsleepÚUpdateManagerzUpdating SystemÚblockéÿÿÿÿ)Úgi.repositoryrö   r÷   Úbus_get_syncÚBusTypeÚSYSTEMÚcall_with_unix_fd_list_syncÚVariantÚUnixInputStreamÚ	steal_fdsrI   )rö   r÷   Ú
connectionÚvarÚfdlistÚ	inhibitors         r   Úinhibit_sleepr
  e  s¦   € ð
ß+à×%Ñ% c§k¡k×&8Ñ&8Ó9ˆ
à ×<Ñ<Ø$Ø%Ø,ØØ�L‰LØðóð ØØØØó%
‰ˆð( ×'Ñ'¨6×+;Ñ+;Ó+=¸cÀ!½fÕ+EÐ'ÓFˆ	àÐøÜô âðús   ‚BB ÂBÂBc                 óB   € V R 8X  g   V P                  4       R8X  d   R# R# )Ú0ÚFALSEFT)Úupper)r@   s   &r   Ústr_to_boolr  ‹  s   € Ø
ˆc„z�S—Y‘Y“[ GÔ+ÙÙr   c                  ó†   € ^ RI p  \        P                  ! 4       w  rV#   \         d    T P                  ! R4        R# i ; i)r   Nzgedefaultlocale() failed)rJ   ÚlocaleÚgetdefaultlocalerI   rK   )rJ   Úlocale_sÚencodings      r   Úget_langr  ‘  sA   € ÛðÜ%×6Ò6Ó8ÑˆØˆøÜô Ø×ÒÐ4Ô5Úðús   † ŸA ¿A c                óL   € \        V R7      pVP                  R^4      ^ ,          # )z4try to guess the flavor based on the running desktop©ÚcacheÚ-)Úget_ubuntu_flavor_packagerY   )r  Úpkgs   & r   Úget_ubuntu_flavorr  œ  s$   € ô
 $¨%Ô
0€CØ�9‰9�S˜!Ó˜QÕÐr   c                  óB   € ^ RI Hp  V ! R4      pVP                  RR4      # )r   )ÚDistUpgradeConfigz"/usr/share/ubuntu-release-upgraderÚDistroÚMetaPkgs)Ú#DistUpgrade.DistUpgradeConfigParserr  Úgetlist)r  Úparsers     r   Ú_load_meta_pkg_listr$  ¥  s$   € õ FáÐCÓD€FØ�>‰>˜( JÓ/Ð/r   c                ó>  € R.p VP                  \        \        4       4      4       V f   \
        P                  ! 4       p V F3  pW09   d	   W,          MRpV'       g   K  VP                  '       g   K1  Vu # 	  R#   \         d   p\	        RT4        Rp?LpRp?ii ; i)z@try to guess the flavor metapackage based on the running desktopzubuntu-desktopz%Could not load list of meta packages:N)ÚextendÚsortedr$  rI   r!   ÚaptÚCacheÚis_installed)r  Ú	meta_pkgsrÇ   Úmeta_pkgÚ	cache_pkgs   &    r   r  r  ®  sŒ   € ð
 "Ð"€Ið:Ø×ÑœÔ 3Ó 5Ó6Ô7ð ‚}Ü—	’	“ˆÛˆØ'/Ô'8�E–O¸dˆ	ß‰9˜×/×/Ò/ØŠOñ ñ øô ô :ÜÐ5°q×9Ñ9ûð:ús   …"A; Á;BÂBÂBc                ó&  € \        V R7      pRR/pW9   d	   W!,          # VP                  R4      '       d#   \        VP                  R^4      ^ ,          4      # VP                  R4      '       d#   \        VP                  R^4      ^ ,          4      # R# )z9try to guess the flavor name based on the running desktopr  zubuntustudio-desktopzUbuntu Studioz-desktopz-netbookÚUbuntu)r  ÚendswithÚcapitalize_first_wordÚrsplit)r  r  Úlookups   &  r   Úget_ubuntu_flavor_namer4  Ã  sz   € ä
#¨%Ô
0€CØ$ oÐ6€FØ
„}Ø�{ÐØ	�‰�j×	!Ò	!Ü$ S§Z¡Z°
¸AÓ%>¸qÕ%AÓBÐBØ	�‰�j×	!Ò	!Ü$ S§Z¡Z°
¸AÓ%>¸qÕ%AÓBÐBár   c                 óþ  € ^ RI pVP                  RR4       ^ RIHpHp VP                  V VP                  P                  VP                  P                  VP                  P                  R7      pVP                  RV: RV: 24       VP                  4        VP                  4       P                  VP                   P"                  4       VP%                  R4       VP'                  4        VP)                  4        R	# )
r   NÚGtkz3.0)ÚGdkr6  )ÚparentÚflagsr"   Úbuttonsz<big><b>z</b></big>

r'   F)ÚgiÚrequire_versionrþ   r7  r6  ÚMessageDialogÚDialogFlagsÚMODALÚMessageTypeÚERRORÚButtonsTypeÚCLOSEÚ
set_markupÚrealizeÚ
get_windowÚset_functionsÚ
WMFunctionÚMOVEÚ	set_titleÚrunÚdestroy)r8  ÚsummaryÚmessager;  r7  r6  Úds   &&&    r   ÚerrorrP  Ò  s±   € Ûà×Ñ�u˜eÔ$ß&à×ÑØØ�o‰o×#Ñ#Ø�_‰_×"Ñ"Ø—‘×%Ñ%ð	 	ó 	€Að ‡L‚L³º'ÐBÔCØ‡I�I„KØ‡L�LƒN× Ñ  §¡×!4Ñ!4Ô5Ø‡K�K�„OØ‡E�E„GØ‡I�I„KÙr   c                óà   € V R8  d;   \        \        V \        R4      ,          4      4      p\        RRV4      RV/,          # \        P
                  ! \        R4      V R,          R,          4      # )z?
Convert a given size in bytes to a nicer better readable unit
iè  z%(size).0f kBr¾   z%.1f MBg     @�@i@B )rX   r   Úfloatr   r  Úformat_stringr�   )ÚbytesÚ
size_in_kbs   & r   Úhumanize_sizerV  ç  si   € ð
 ˆ{Ôô œ˜e¤e¨D£kÕ1Ó2Ó3ˆ
ä˜¨¸*ÓEØ�JðI
õ 
ð 	
ô
 ×#Ò#¤A i£L°%¸&µ.À6Õ2IÓJÐJr   c                  ó@   € \         P                  P                  R 4      # )zAPT::Architecture)rÏ   rÐ   rÑ   r3   r   r   Úget_archrX  ù  s   € Ü�>‰>×ÑÐ2Ó3Ð3r   c                óŠ  € ^p^pRp\        R4      ;_uu_ 4       pVP                  4        Fx  pVP                  4       pV'       g   K  VP                  4       pWb,          pWs8w  d   K=  Wa,          P                  R4      ^,          p\	        V^4      p	W�8X  g   Ko   RRR4       R# 	  RRR4       R#   + '       g   i     R# ; i)z>check if the current system is listening on the given tcp portÚ0Az/proc/net/tcprË   NTF)rT   Ú	readlinesÚstriprY   rX   )
ÚportÚINDEX_LOCAL_ADDRÚINDEX_STATEÚSTATE_LISTENINGÚnet_tcprƒ   rÖ   ÚstateÚlocal_port_strÚ
local_ports
   &         r   Úis_port_already_listeningre  ý  s®   € ð Ðà€Kà€Oä	ˆo×	Ô	 'Ø×%Ñ%Ö'ˆDØ—:‘:“<ˆDßÙð —Z‘Z“\ˆFØÕ'ˆEØÔ'ÙØ#Õ5×;Ñ;¸CÓ@ÀÕCˆNÜ˜^¨RÓ0ˆJØÖ!Ø÷ 
Ñ	Ù'÷ 
ñ  ÷! 
Ö	ñ  ús   šA;B1ÂB1Â%B1Â1C	c                 ó.  € Rp \         P                  ! 4       ^ 8w  d   \        R4      h\         P                  P	                  R4      '       g   R# \
        P                  ! RR.\
        P                  RR7      P                  4       ^ ,          pW8X  d   R# R# )	z!Return True if iptables is activezøChain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
z%Need root to check the iptables statez/sbin/iptablesFÚiptablesz-nLTrx   )	rR   ÚgetuidÚOSErrorrc   rd   r{   r|   r}   r~   )Úiptables_emptyrn   s     r   Úiptables_activerk    sx   € ð€Nô 
‡y‚yƒ{�aÔÜÐ=Ó>Ð>Ü�7‰7�>‰>Ð*×+Ò+ÙÜ
×
Ò
Ø	�UÐ¤J§O¡OÈôç�kƒm�Aõ€Cð ÔÙÙr   c                óä   € \        V 4      ^8”  d`   V ^ ,          P                  4       '       dC   V ^ ,          P                  4       '       g&   V ^ ,          P                  4       V R,          ,           # V # )z-this uppercases the first word's first letter:é   NN)ri   ÚisalphaÚisupperÚ
capitalize)Ústrings   &r   r1  r1  1  sR   € ä
ˆ6ƒ{�Q„˜6 !�9×,Ñ,×.Ò.°v¸aµy×7HÑ7H×7JÒ7JØ�a�y×#Ñ#Ó%¨¨r­
Õ2Ð2Ø€Mr   c                óF   € \        V P                  RR4      p\        V4      # )zKthis takes a package synopsis and uppercases the first word's
first letter
rM  r'   )ÚgetattrÚ	candidater1  )r  Únames   & r   Úget_package_labelrv  8  s!   € ô �3—=‘= )¨RÓ0€DÜ  Ó&Ð&r   Ú__main__ÚbarÚbazr   )éF   r'   )>r  rJ   rR   rž   r×   r{   rÙ   r   r   r   r�   r   Úmathr   r^   r   r   r	   Úurllib.parser
   Úurllib.requestr   r   r   r   r   r(  rÏ   Úinit_configÚobjectr   r2   rD   rN   r`   re   rp   rv   r„   rˆ   r–   r¢   r§   r©   rÉ   ræ   ré   r
  r  r  r  r$  r  r4  rP  rV  rX  re  rk  r1  rv  r(   r3   r   r   Ú<module>r€     s$  ðó0 Û Û 	Û Û 	Û Û 
Û Ý Ý  Ý Ý ß *Ñ *Ý !÷õ ó Û à × Ò Ô ô>�Fô >÷$ñ òò
ôò 3ô
òòò&'òò,Fò@ô�'ô ô
+ô\)òXò@#òLòô ò0ôô*òò*Kò$4òò8ò0ò'ð ˆzÔñ
 
ˆ$��uÖñ r   