+
    d‚•i4J  ã                   óL  € ^ RI t ] P                  ! RR]4       ^ 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t^ RIt^ RIt^ RIt^ RIHt  ^ R	IHt R
tRt]R,           t ! R R]4      t ! R R]P<                  P>                  4      tR#   ] d    Rt LDi ; i)é    NÚignorezapt API not stable yet)Ú	HTTPError)Úurlopen)Úurlsplit)ÚBadStatusLine)Úgettext)Ú	Launchpadz/var/lib/synaptic/preferencesz.https://changelogs.ubuntu.com/changelogs/pool/z%s/%s/%s/%s_%s/%sc                   ó   € ] tR t^3tRtRtR# )ÚHttpsChangelogsUnsupportedErrorz¡https changelogs with credentials are unsupported because of the
lack of certitifcation validation in urllib2 which allows MITM
attacks to steal the credentials
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú</usr/lib/python3/dist-packages/UpdateManager/Core/MyCache.pyr   r   3   s   † ñó
 	r   r   c                   óÌ   a € ] tR t^<t o RtRR ltR tR tR t]	R 4       t
]	R 4       tR	 t]	R
 4       tR tR tR tR tRR ltR tR tR tRR ltR tR tR tR tRtV tR# )ÚMyCacheÚUbuntuNc                ó@  € \         P                  P                  WV4       W n        \	        V P
                  4      ^ 8X  g   Q hV P                  4       '       d   Q hV P                  4        / V n        / V n	        / V n
        V P                  P                  ^ 8”  d   V P                  4        V P                  P                  ^ 8X  d   V P                  P                  ^ 8X  g   Q hRV n        \         P"                  P%                  R4      pV'       dö   \&        P(                  ! RRP+                  V Uu. uF  pRV,           NK  	  up4      ,           R,           4      V n        \.        P0                  ! RR.R	R
7      P3                  4       p\&        P(                  ! RRP+                  V Uu. uF9  pVP5                  R4      '       g   RV,           R,           V,           MWT,           NK;  	  up4      ,           R,           4      V n        R# RV n        RV n        R# u upi u upi )r   NzAPT::VersionedKernelPackagesÚ(Ú|Ú^Ú)Úunamez-rT)Úuniversal_newlinesz.*)ÚaptÚCacheÚ__init__ÚrootdirÚlenÚreq_reinstall_pkgsÚ_dpkgJournalDirtyÚ_initDepCacheÚall_changesÚall_newsÚpro_versionsÚ	_depcacheÚbroken_countÚsaveDistUpgradeÚ	del_countÚ	launchpadÚapt_pkgÚconfigÚ
value_listÚreÚcompileÚjoinÚversioned_kernel_pkgs_regexpÚ
subprocessÚcheck_outputÚrstripÚ
startswithÚrunning_kernel_pkgs_regexp)ÚselfÚprogressr"   Úapt_versioned_kernel_pkgsÚpÚrunning_kernel_versions   &&&   r   r!   ÚMyCache.__init__@   sá  € Ü�	‰	×Ñ˜4¨7Ô3àŒô �4×*Ñ*Ó+¨qÔ0Ð0Ð0ð ×)Ñ)×+Ò+Ð+Ð+à×ÑÔØˆÔØˆŒØˆÔà�>‰>×&Ñ&¨Ô*Ø× Ñ Ô"à�N‰N×'Ñ'¨1Ô,°·±×1IÑ1IÈQÔ1Nð	
ØNàˆŒä$+§N¡N×$=Ñ$=Ø*ó%
Ð!÷ %Ü02·
²
ØØ—(‘(Ñ-FÓGÑ-F¨˜C !ŸG˜GÑ-FÑGÓHõIàõó1ˆDÔ-ô
 &0×%<Ò%<Ø˜$�°Dô&ç‰f‹hð #ô /1¯jªjØØ—(‘(ñ
 ";ó	ñ ";˜Að  !Ÿ|™|¨D×1Ò1ð ˜q� 4�Ð*@Ö@à4Õ8ò:ñ ";ñ	óõð õ	ó/ˆDÖ+ð 15ˆDÔ-Ø.2ˆDÖ+ùò) Hùòs   Ä1HÆ(HÇ#Hc                ó  € \         P                  P                  \        P                  P                  R4      4      R,           p\         P                  ! V4       F#  p\        P                  ! RV4      '       g   K"   R# 	  R# )zH
test if the dpkg journal is dirty
(similar to debSystem::CheckUpdates)
zDir::State::statusz/updatesz[0-9]+TF)	ÚosÚpathÚdirnamer/   r0   Ú	find_fileÚlistdirr2   Úmatch)r;   ÚdÚfs   &  r   r%   ÚMyCache._dpkgJournalDirtyt   s^   € ô �G‰G�O‰OœGŸN™N×4Ñ4Ð5IÓJÓKØõð 	
ô —’˜A–ˆAÜ�xŠx˜ !×$Ô$Úñ ñ r   c                óþ   € V P                   P                  4        \        P                  P	                  \
        4      '       d    V P                   P                  \
        4       V P                   P                  4        R # ©N)r*   Úread_pinfilerB   rC   ÚexistsÚSYNAPTIC_PINFILEÚinit©r;   s   &r   r&   ÚMyCache._initDepCache‚   sK   € ð 	�‰×#Ñ#Ô%Ü�7‰7�>‰>Ô*×+Ò+Ø�N‰N×'Ñ'Ô(8Ô9Ø�‰×ÑÖr   c                ó&   € V P                  4        R # rL   )r&   rQ   s   &r   ÚclearÚMyCache.clear‹   s   € Ø×ÑÖr   c                óÐ   € \         P                  ! V P                  4      p\         P                  ! 4       pVP	                  W P
                  V P                  4       VP                  # )z:get the size of the packages that are required to download)r/   ÚPackageManagerr*   ÚAcquireÚget_archivesÚ_listÚ_recordsÚfetch_needed)r;   ÚpmÚfetchers   &  r   Úrequired_downloadÚMyCache.required_downloadŽ   sF   € ô ×#Ò# D§N¡NÓ3ˆÜ—/’/Ó#ˆØ
�‰˜§¡¨T¯]©]Ô;Ø×#Ñ#Ð#r   c                ó.   € V P                   P                  # rL   )r*   Ú
inst_countrQ   s   &r   Úinstall_countÚMyCache.install_count–   s   € à�~‰~×(Ñ(Ð(r   c                ó.   € V P                   P                  # rL   )r*   Ú
keep_countrQ   s   &r   rf   ÚMyCache.keep_countš   s   € Ø�~‰~×(Ñ(Ð(r   c                ó.   € V P                   P                  # rL   )r*   r-   rQ   s   &r   r-   ÚMyCache.del_count�   s   € à�~‰~×'Ñ'Ð'r   c                ó"  € V Fˆ  pV'       g   K  RpV Fh  pVP                   VP                  P                  8w  g?   \        P                  ! VP
                  VP                  VP
                  4      '       d   Kf  RpKj  	  V'       g   K‡   R# 	  R# )z<Return True if any of the dependencies in deps match target.TF)ÚnameÚpackageÚ	shortnamer/   Ú	check_depÚversionÚrelation)r;   ÚtargetÚdepsÚdep_orrG   Úbase_deps   &&&   r   Ú_check_dependenciesÚMyCache._check_dependencies¡   sy   € ó ˆFßÙØˆEÛ"�à—M‘M V§^¡^×%=Ñ%=Ô=Ü"×,Ò,ØŸ™¨×(9Ñ(9¸8×;KÑ;K÷ô ð "’Eñ #÷ ‰uÚñ ñ r   c                ó‚  € VP                   pV'       g   R # V  F¢  pVP                  pVf   K  V P                  W$P                  R4      4      '       g   K=  V P                  W$P                  R4      4      '       g   Ke  \        P
                  ! VP                  P                  : RVP                  : R24        R# 	  R # )FÚ	ConflictsÚReplacesz Conflicts/Replaces z; allowing removalT)Ú	installedÚ	candidateru   Úget_dependenciesÚloggingÚinforl   rm   )r;   Úpkgrq   Úcpkgr{   s   &&   r   Úfind_removal_justificationÚ"MyCache.find_removal_justification´   sŸ   € Ø—‘ˆßÙÛˆDØŸ™ˆIØÔ$Ø×+Ñ+Ø×6Ñ6°{ÓC÷ô à×.Ñ.Ø×6Ñ6°zÓB÷ô ô —L’Là$×,Ñ,×6Ô6¸¿¼ðGôò  ñ ñ r   c                óP  € V P                   P                  R4       V P                   P                  pV^ 8”  db   V  Uu. uF  q"P                  '       g   K  VNK  	  ppV\	        V4      8X  g   Q hV F%  pV P                  V4      '       g   K  V^,          pK'  	  V^ 8”  dJ   V P                  4        V P                   P                  ^ 8X  d   V P                   P                  ^ 8X  g   Q hMV P                   P                  ^ 8X  g   Q hV P                   P                  4        V# u upi )z>this functions mimics a upgrade but will never remove anythingT)r*   Úupgrader-   Úmarked_deleter#   r�   rT   r+   )r;   ÚwouldDeleter   Údeleted_pkgss   &   r   r,   ÚMyCache.saveDistUpgradeÇ   sù   € ð 	�‰×Ñ˜tÔ$Ø—n‘n×.Ñ.ˆØ˜Œ?Ù+/ÓE©4 C×3DÕ3DŸC˜C©4ˆLÐEØ¤# lÓ"3Ô3Ð3Ð3Û#�Ø×2Ñ2°3×7Ô7Ø 1Õ$’Kñ $ð ˜Œ?Ø�J‰JŒLà—‘×+Ñ+¨qÔ0Ø—N‘N×,Ñ,°Ô1ðð2Ø1ð —>‘>×.Ñ.°!Ô3Ð3Ð3à�‰×ÑÔ ØÐùò Fs   ½D#ÁD#c                óx   € VP                  R4      p\        V4      ^8”  d   RP                  VR,          4      pV# )zstrip of the epochÚ:Ú :é   NN)Úsplitr#   r4   )r;   ÚverstrÚvers_no_epochs   && r   Ú_strip_epochÚMyCache._strip_epochÞ   s5   € àŸ™ SÓ)ˆÜˆ}Ó Ô!Ø—W‘W˜]¨2Õ.Ó/ˆFØˆr   c                ó  € W,          pVP                   P                  pRpVP                  P                  P	                  VP
                  4      P                  pVP                   P                  p	V P                  V	4      p
VP                  R4      p\        V4      ^8”  d
   V^ ,          pV^ ,          pVP                  R4      '       d   RV^,          ,           pV'       d   TpM\        VVVVV
V3,          p\        V4      pVP                  R8X  d   VP                  '       d   \!        R4      h\#        V4      pRpR\$        P&                  ! V4      ,          p VP)                  4       P+                  RR	4      pVR8X  d    V# \$        P,                  ! VV4      pV'       dÐ   \/        VP0                  R
R4      pV'       d!   RV9   d   VP                  R^4      ^,          pVP3                  ^4      pV'       d!   RV9   d   VP                  R^4      ^,          pV'       d)   V'       d    \4        P6                  ! VV4      ^ 8  d    V# M'V'       d    \4        P6                  ! VV4      ^ 8X  d    V# VV,           pEK%  )z(helper that fetches the file in questionÚmainÚ/ÚlibÚhttpszKhttps locations with username/password are notsupported to fetch changelogsr‹   z^%s \((.*)\)(.*)$zUTF-8Úreplacero   NrŠ   )r{   Úsource_nameÚ_pcacher*   Úget_candidate_verÚ_pkgÚsectionÚsource_versionr�   r�   r#   r9   ÚCHANGELOGS_URIr   ÚschemeÚusernamer   r   r2   ÚescapeÚreadlineÚdecoderG   Úgetattrrz   Úgroupr/   Úversion_compare)r;   rk   ÚfnameÚstrict_versioningÚchangelogs_urir   ÚsrcpkgÚsrc_sectionrœ   Úsrcver_epochÚsrcverÚsplit_sectionÚprefixÚuriÚresÚ	changelogÚalllinesÚregexpÚlinerG   rz   Úchangelogvers   &&&&&                 r   Ú_get_changelog_or_newsÚMyCache._get_changelog_or_newså   s>  € ð
 �jˆð —‘×*Ñ*ˆð ˆà—+‘+×'Ñ'×9Ñ9¸#¿(¹(ÓC×KÑKˆð —}‘}×3Ñ3ˆØ×"Ñ" <Ó0ˆàŸ™ cÓ*ˆÜˆ}Ó Ô!Ø'¨Õ*ˆKð ˜•ˆØ×Ñ˜U×#Ò#Ø˜V A�YÕ&ˆF÷
 Ø ‰Cä ØØØØØØð$õ ˆCô �s‹mˆØ�:‰:˜Ô  S§\§\ \Ü1ð0óð ô ˜C“Lˆ	ð ˆØ&¬"¯)ª)°FÓ*;Õ<ˆàØ×%Ñ%Ó'×.Ñ.¨w¸	ÓBˆDØ�rŒzØðB ˆôA —H’H˜V TÓ*ˆEßô $ C§M¡M°9¸dÓC�	ß ¨	Ô!1Ø )§¡°°QÓ 7¸Õ :�IØ$Ÿ{™{¨1›~�ß C¨<Ô$7Ø#/×#5Ñ#5°c¸1Ó#=¸aÕ#@�L÷ %ç!Ü#×3Ò3°LÀ)ÓLØôð ð ˆø÷ "Ü#×3Ò3°LÀ)ÓLØôð àˆð   $•‹Hr   c                ó"  € \         '       g   \        P                  ! R4       R# W,          P                  pVP                   F]  p\        V4      P                  R9  d   K  \        P                  ! RV4      pVf   K<  VP                  ^4      VP                  ^4      re M	  \        P                  ! R4       R# V P                  f   \         P                  ! RRRR7      V n        V P                  P                  P                  R	V: R
V: 2R7      pVf   \        P                  ! R4       R# VP                  VP                   RVP"                  R7      pV'       g   \        P                  ! R4       R# V^ ,          P%                  4       # )zRReturn the changelog URI from the Launchpad API

Return None in case of an error.
z9Launchpadlib not available, cannot retrieve PPA changelogNzhttp.*/(.*)/(.*)/ubuntu/.*z)Unable to find a valid PPA candidate URL.zupdate-managerÚ
productionÚdevel)ro   Ú~z/ubuntu/)Ú	referencez6Unable to retrieve the archive from the Launchpad API.T)r˜   Úexact_matchro   z;No published sources were retrieved from the Launchpad API.)zppa.launchpad.netzppa.launchpadcontent.net)r	   r}   Úwarningr{   Úurisr   Úhostnamer2   Úsearchr¥   Úerrorr.   Úlogin_anonymouslyÚarchivesÚgetByReferenceÚgetPublishedSourcesr˜   r�   ÚchangelogUrl)	r;   rk   Úcdtr°   rG   ÚuserÚppaÚarchiveÚspphss	   &&       r   Ú_extract_ppa_changelog_uriÚ"MyCache._extract_ppa_changelog_uriH  sV  € ÷
 ‹yÜ�OŠOØKôñ à�j×"Ñ"ˆØ—8”8ˆCÜ˜‹}×%Ñ%ð .ô ñ Ü—I’IÐ:¸CÓ@ˆEØÔ Ø!ŸK™K¨›N¨E¯K©K¸«N�cÙñ ô �MŠMÐEÔFÙð �>‰>Ò!Ü&×8Ò8Ø  ,¸ôˆDŒNð —.‘.×)Ñ)×8Ò8Û)-ªsÐ3ð 9ó 
ˆð Š?Ü�MŠMØHôñ à×+Ñ+ØŸ™ØØ×&Ñ&ð ,ó 
ˆ÷
 Ü�MŠMð!ôñ à�Q�x×$Ñ$Ó&Ð&r   c                óÒ  € W,          pVP                   P                  pVf   R # VP                   P                  P                  R4      pV'       g   R # VP	                  R4      ^ ,          P                  4       pRV9   d)   VP	                  R4      ^,          P                  R4      pMVP                   P                  pVP                  R4      ^ ,          pVRV: RV: R2,           # )NÚSourcer   r   r”   Ú_z
.changelog)	r{   r°   ÚrecordÚgetr�   Ústripr8   r�   Ú
rpartition)r;   rk   r   Údeb_uriÚsrcrecrª   r­   Úbase_uris   &&      r   Ú+_guess_third_party_changelogs_uri_by_sourceÚ3MyCache._guess_third_party_changelogs_uri_by_source  sµ   € Ø�jˆØ—-‘-×#Ñ#ˆØŠ?ÙØ—‘×%Ñ%×)Ñ)¨(Ó3ˆßÙà—‘˜cÓ" 1Õ%×+Ñ+Ó-ˆØ�&Œ=Ø—\‘\ #Ó& qÕ)×0Ñ0°Ó5‰Fà—]‘]×1Ñ1ˆFØ×%Ñ% cÓ*¨1Õ-ˆÙ³»Ð?Õ?Ð?r   c                ó’   € W,          pVP                   P                  pV'       d!   RVP                  R^4      ^ ,          ,          # R# )zKguess changelogs uri based on ArchiveURI by replacing .deb
with .changelog
z%s.changelogÚ.N)r{   r°   Úrsplit)r;   rk   r   r×   s   &&  r   Ú+_guess_third_party_changelogs_uri_by_binaryÚ3MyCache._guess_third_party_changelogs_uri_by_binary�  s;   € ð �jˆØ—-‘-×#Ñ#ˆßØ! G§N¡N°3¸Ó$:¸1Õ$=Õ=Ð=Ùr   c                ón   € V P                  V4       V P                  V4       V'       d   V! V4       R # R # rL   )Úget_newsÚget_changelog)r;   rk   ÚcbÚcb_argss   &&&&r   Úget_news_and_changelogÚMyCache.get_news_and_changelogœ  s+   € Ø�‰�dÔØ×Ñ˜4Ô ßÙˆwŽKñ r   c                ó‚   €  V P                  VRR4      pT'       d   Y P                  T&   R# R#   \         d     R# i ; i)z5get the NEWS.Debian file from the changelogs locationzNEWS.DebianTN)r·   Ú	Exceptionr(   )r;   rk   Únewss   && r   râ   ÚMyCache.get_news¢  sE   € ð	Ø×.Ñ.¨t°]ÀDÓIˆD÷ Ø"&�M‰M˜$Óñ øô ô 	Úð	ús   ‚/ ¯>½>c                ó¼  € R pV F8  pVP                   P                  R4      '       g   K&   V P                  V4      p M	  V P                  V4      pV P                  V4      pRpVVV3 FA  pV'       g   K   V P                  VRRV4      p	V P                  V;;,          V	,          uu&   KC  	  V P                  V;;,          V,          uu&   R #   \         d    \        P
                  ! R4        Kï  i ; i  \        \        3 d    \        R4      p K­  \        \        \        P                   3 d&    \        P
                  ! R4       \        R4      p Kð  i ; i)	NzLP-PPA-z'Unable to connect to the Launchpad API.r‹   r²   FzAThis update does not come from a source that supports changelogs.zerror on changelog fetchingúOFailed to download the list of changes. 
Please check your Internet connection.)Úoriginr9   rÎ   ré   r}   Ú	exceptionrß   rÚ   r·   r'   r   r   rÒ   ÚIOErrorr   ÚsocketrÃ   )
r;   rk   ÚoriginsÚchangelogs_uri_pparî   Úchangelogs_uri_binaryÚchangelogs_uri_sourceÚerror_messager©   r²   s
   &&&       r   Ú(_fetch_changelog_for_third_party_packageÚ0MyCache._fetch_changelog_for_third_party_package«  sW  € à!ÐÛˆFØ�}‰}×'Ñ'¨	×2Ô2ðØ)-×)HÑ)HÈÓ)NÐ&Ùñ	 ð ×<Ñ<¸TÓBð 	ð ×<Ñ<¸TÓBð 	ð ˆàØ!Ø!ó
ˆN÷
 ‰~ðØ $× ;Ñ ;Ø˜k¨5°.ó!�Ið ×$Ñ$ T×*¨iÕ7Õ*ñ
ð0 	×Ñ˜× -Õ/ÕøôI !ô Ü×%Ò%ØA÷ðûô. "Ô#BÐCô ä$%ð;ó%“Mô  ¤´·±Ð=ô ä×%Ò%Ð&CÔDÜ$%ðAó%“Mðús/   ¬CÁ83C8Ã!C5Ã4C5Ã8EÄEÄ5"EÅEc                ó<   € V F  w  r# pW0P                   V&   K  	  R # rL   )r)   )r;   Úpro_pkgsrk   ro   Ú_as   &&   r   Úcreate_pro_cacheÚMyCache.create_pro_cacheÝ  s!   € Û'/Ñ#ˆT˜B Ø&-×Ñ˜dÓ#ó (0r   c                ó¨  € W,          P                   P                  pV P                  P                  WV,          P                   P                  4      p\        R4      V\        W,          P                  RR4      V3,          V P                  V&   V P                  V Uu. uF  qDP                  NK  	  up9  d   V P                  W4       R# W,          P                   P                  pW,          P                   P                  P                  RR4      p V P                  VR4      p\!        V4      ^ 8X  d   \        R4      WV3,          pT P                  T;;,          T,          uu&   R# u upi   \"         d    \        R4      YV3,          p LF\$        \&        \(        P*                  3 d"   p\-        R	T4       \        R
4      p Rp?L�Rp?ii ; i)z2get the changelog file from the changelog locationzFChanges for %s versions:
Installed version: %s
Available version: %s

ro   NrŠ   z%3Ar²   z¬The changelog does not contain any relevant changes.

Please use http://launchpad.net/ubuntu/+source/%s/%s/+changelog
until the changes become available or try again later.z¡The list of changes is not available yet.

Please use http://launchpad.net/ubuntu/+source/%s/%s/+changelog
until the changes become available or try again later.zcaught exception: rí   )r{   rò   r)   rÔ   ro   rÒ   r¤   rz   r'   ÚCHANGELOG_ORIGINrî   r÷   r˜   r�   r—   r·   r#   r   rð   r   rñ   rÃ   Úprint)	r;   rk   rò   ro   Úorª   r¬   r²   Úes	   &&       r   rã   ÚMyCache.get_changelogá  sœ  € à•*×&Ñ&×.Ñ.ˆØ×#Ñ#×'Ñ'¨°4­j×.BÑ.B×.JÑ.JÓKˆÜ!"ð(ó"
ð
 Ü�D•J×(Ñ(¨)°TÓ:Øð
õ	"
ˆ×Ñ˜Ñð × Ñ ¹7Ó(C¹7°a¯¬¹7Ñ(CÔCØ×9Ñ9¸$ÔHÙà•×%Ñ%×1Ñ1ˆØ•z×+Ñ+×:Ñ:×BÑBÀ3ÈÓNˆð	Ø×3Ñ3°D¸+ÓFˆIÜ�9‹~ Ô"ÜðMóð
 Ð*õ+�	ð& 	×Ñ˜× )Õ+Õùò9 )Døô ô 	'ÜðIóð
 Ð&õ'ŠIô œ¬¯©Ð5ô 	ÜÐ&¨Ô*Üð9ó�Iûð	ús*   ÂE,Ä5E1 Å1GÆGÆ/GÆ0GÇG)r'   r(   r.   r)   r"   r:   r5   rL   )FN)NN)r   r   r   r   rÿ   r!   r%   r&   rT   Úpropertyr_   rc   rf   r-   ru   r�   r,   r�   r·   rÎ   rÚ   rß   ræ   râ   r÷   rü   rã   r   Ú__classdictcell__)Ú__classdict__s   @r   r   r   <   s¬   ø‡ € àÐô23òhòòð ñ$ó ð$ð ñ)ó ð)ò)ð ñ(ó ð(òò&ò&ò.ôaòF5'òn@ò"
ôò'ò,0òd.÷),ð ),r   r   ) ÚwarningsÚfilterwarningsÚFutureWarningr   r/   r}   rB   Úurllib.errorr   Úurllib.requestr   Úurllib.parser   Úhttp.clientr   rñ   r6   r2   ÚDistUpgrade.DistUpgradeCacheÚDistUpgrader   rÒ   Úlaunchpadlib.launchpadr	   ÚImportErrorrO   ÚCHANGELOGS_POOLrž   ré   r   ÚDistUpgradeCacher   r   r   r   Ú<module>r     s    ðó. à × Ò ˜Ð":¸MÔ JÛ 
Û Û Û 	å "Ý "Ý !Ý %Û Û Û 	Û #Ý  ðÝ0ð 3Ð ØB€Ø Ð#6Õ6€ô	 iô 	ôN,ˆk×*Ñ*×2Ñ2ö N,øð# ô Ø‚Iðús   ÁB Â	B#Â"B#