+
    e;Œj,U  ã                   óÎ   € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH t  ! R R]	4      t
 ! R R4      t ! R R	]4      t ! R
 R]4      t ! R R]4      tR tRRRR. / 3R ltR# )é    N)ÚElementTree)Úgettextc                   ó   € ] tR t^$tRtR# )ÚNoDistroTemplateException© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú3/usr/lib/python3/dist-packages/aptsources/distro.pyr   r   $   s   † Ûr   r   c                   ór   a € ] tR t^(t o . / 3R ltR tRR ltR tR tRR lt	R t
R	 tR
 tR tR tRtV tR# )ÚDistributionc                óˆ   € VP                  4       V n        W n        W0n        W@n        WPn        W`n        RV n        RV n        R# )z0Container for distribution specific informationsÚdebzdeb-srcN)	ÚlowerÚidÚcodenameÚdescriptionÚreleaseÚis_likeÚlike_codenamesÚbinary_typeÚsource_type)Úselfr   r   r   r   r   r   s   &&&&&&&r   Ú__init__ÚDistribution.__init__)   s<   € ð —(‘(“*ˆŒØ ŒØ&ÔØŒØŒØ,Ôà ˆÔØ$ˆÖr   c                óˆ
  € Wn         RV n        . V n        . V n        . V n        . V n        . V n        . V n        . V n        . V n	        RV n
        . V n        RV n        RV n        RV n        . V n        V P                   P                   P"                   FI  pV P%                  VP&                  4      '       g   K&  VP(                  V P*                  8X  g   KC  W n         M	  V P                  f(   \-        RV P*                  : RV P.                  : 24      h. p. p. p. pV P                   P1                  4        EF—  pVP2                  '       Eg“   V P%                  VP4                  4      '       Edq   VP6                  '       Ed^   VP6                  P8                  '       EdA   V P%                  VP6                  P&                  4      '       Ed   VP:                  P=                  R4      '       dK   VP>                  '       g9   V P
                  PA                  V4       VPC                  VPD                  4       EM©VP:                  P=                  R4      '       d0   VP>                  '       d   V P
                  PA                  V4       EMYVPF                  V PH                  8X  de   VP>                  '       gS   V P                  PA                  V4       VPC                  VPD                  4       VPA                  VP:                  4       MÚVPF                  V PH                  8X  d/   VP>                  '       d   V P                  PA                  V4       M‘VPF                  V PJ                  8X  d/   VP>                  '       g   V P                  PA                  V4       MHVPF                  V PJ                  8X  d.   VP>                  '       d   V P                  PA                  V4       VP2                  '       d   EK¾  VP6                  V P                  PL                  9   g   EKæ  VP>                  '       g:   VPF                  V PH                  8X  d   V P                  PA                  V4       EK1  VP>                  '       g:   VPF                  V PJ                  8X  d   V P                  PA                  V4       EK|  V P                  PA                  V4       EKš  	  \O        V4      V n        \O        V4      V n        VPC                  V4       VPC                  V4       \O        V4      V n        \O        V4      V n	        V PQ                  4        R# )zN
Find the corresponding template, main and child sources
for the distribution
NFÚ z2Error: could not find a distribution template for Ú/úcdrom:))ÚsourceslistÚsource_templateÚchild_sourcesÚmain_sourcesÚdisabled_sourcesÚcdrom_sourcesÚdownload_compsÚenabled_compsÚcdrom_compsÚ
used_mediaÚget_source_codeÚsource_code_sourcesÚdefault_serverÚmain_serverÚnearest_serverÚused_serversÚmatcherÚ	templatesÚis_codenameÚnameÚdistributionr   r   r   Úexploded_listÚinvalidÚdistÚtemplateÚofficialÚuriÚ
startswithÚdisabledÚappendÚextendÚcompsÚtyper   r   ÚchildrenÚsetÚget_mirrors)r   r#   r;   ÚmediarB   r+   r*   Úsources   &&      r   Úget_sourcesÚDistribution.get_sources9   sº  € ð 'Ôà#ˆÔØˆÔØˆÔØ "ˆÔØˆÔØ ˆÔØˆÔØˆÔØˆŒØ$ˆÔØ#%ˆÔ ð !ˆÔØˆÔØ ˆÔØˆÔð ×(Ñ(×0Ñ0×:Ô:ˆHØ×Ñ §¡×.Ô.°8×3HÑ3HÈDÏGÉGÖ3Sð (0Ô$Ùñ ;ð ×ÑÒ'Ý+à—7”7˜DŸM›Mð+óð ð ˆØˆØˆØˆà×&Ñ&×4Ñ4×6ˆFà—N—N‘NØ×$Ñ$ V§[¡[×1Ó1Ø—O—O‘OØ—O‘O×,×,Ñ,Ø×$Ñ$ V§_¡_×%9Ñ%9×:Ó:ð —:‘:×(Ñ(¨×2Ò2¸6¿?¿?¸?Ø×&Ñ&×-Ñ-¨fÔ5Ø×&Ñ& v§|¡|Ö4Ø—Z‘Z×*Ñ*¨8×4Ò4¸¿¿¸Ø×&Ñ&×-Ñ-¨fÖ5Ø—[‘[ D×$4Ñ$4Ô4¸V¿_¿_¸_Ø×%Ñ%×,Ñ,¨VÔ4Ø—L‘L §¡Ô.Ø—L‘L §¡Õ,Ø—[‘[ D×$4Ñ$4Ô4¸¿¿¸Ø×)Ñ)×0Ñ0°Õ8Ø—[‘[ D×$4Ñ$4Ô4¸V¿_¿_¸_Ø×,Ñ,×3Ñ3°FÕ;Ø—[‘[ D×$4Ñ$4Ô4¸¿¿¸Ø×)Ñ)×0Ñ0°Ô8Ø—>—>“> f§o¡o¸×9MÑ9M×9VÑ9V×&VØ——�¨6¯;©;¸$×:JÑ:JÔ+JØ×&Ñ&×-Ñ-¨f×5ØŸŸ˜¨V¯[©[¸D×<LÑ<LÔ-LØ×,Ñ,×3Ñ3°F×;à×)Ñ)×0Ñ0°×8ñ? 7ô@ " %›jˆÔÜ˜{Ó+ˆÔØ×Ñ˜UÔ#Ø×Ñ˜[Ô)Ü  Ó/ˆÔÜ˜e›*ˆŒØ×ÑÖr   Nc                ó  € V P                   P                  V n        V P                   F7  pVP	                  R4      '       d   K  V P
                  P                  V4       K9  	  \        V P                  4      ^ 8X  d   V P                  V n	        M"V P                  ^ ,          P                  V n	        / V n        Rp\        P                  P                  V4      '       d¡   \        VR7      p\!        VRR4      f   VP"                  Vn        VP%                  R4      pV F]  p VP&                  R,          p VP&                  R	,          p\*        P,                  ! RV4      V P                  VP/                  4       &   K_  	  RV n        RV n        \        P4                  ! RRR7      p	V	P7                  R4      p
V	P7                  R4      pVR8X  d   \        V	4      pWš^,           V P/                  4       pV'       d   W,          V n        WÀP                  9   d!   V P                  V,          V n        WÀn        R# R#   \(         d    TP&                  R,          p EL%i ; i  \(         d    TP&                  R
,          p EL6i ; i)zB
Provide a set of mirrors where you can get the distribution from
r"   z%/usr/share/xml/iso-codes/iso_3166.xml)ÚfileÚiterNÚiso_3166_entryÚcommon_namer6   Úalpha_2_codeÚalpha_3_codeÚiso_3166ÚLANGÚen_UK)ÚdefaultÚ_Ú.éÿÿÿÿ)r$   Úbase_urir0   r,   r>   r2   r@   Úlenr&   r/   r=   Ú	countriesÚosÚpathÚexistsr   ÚgetattrÚgetiteratorrM   ÚattribÚKeyErrorr   Údgettextr   ÚcountryÚcountry_codeÚgetenvÚfindr1   )r   Úmirror_templateÚmediumÚfnameÚetÚitÚelmÚdescrÚcodeÚlocaleÚaÚzre   s   &&           r   rF   ÚDistribution.get_mirrors�   s  € ð
  ×/Ñ/×8Ñ8ˆÔð —o”oˆFØ×$Ñ$ X×.Ô.à×!Ñ!×(Ñ(¨Ö0ñ &ô
 ˆt× Ñ Ó! QÔ&Ø"&×"2Ñ"2ˆDÕà"&×"3Ñ"3°AÕ"6×":Ñ":ˆDÔð ˆŒØ7ˆÜ�7‰7�>‰>˜%× Ò Ü %Ô(ˆBô �r˜6 4Ó(Ò0ØŸ.™.�”Ø—‘Ð)Ó*ˆBÛ�ð/ØŸJ™J }Õ5�Eð6ØŸ:™: nÕ5�Dô 07×/?Ò/?À
ÈEÓ/R�—‘˜tŸz™z›|Ó,ñ ð ˆŒØ ˆÔÜ—’˜6¨7Ô3ˆØ�K‰K˜ÓˆØ�K‰K˜ÓˆØ�Œ7Ü�F“ˆAØ !�e aÐ(×.Ñ.Ó0ˆçØ"1Õ"@ˆDÔàŸ>™>Ô)ØŸ>™>¨,Õ7ˆDŒLØ ,Öñ *øô+  ô /ØŸJ™J vÕ.“Eð/ûô  ô 6ØŸ:™: nÕ5“Dð6ús$   Ä"H9Ä6IÈ9IÉIÉJ É?J c                ó$  € RpVP                  R4      pVP                  R4      pVR8w  d   VR8w  d   W\        R4      ,           V pW P                  9   d$   \        R4      V P                  V,          ,          # RVP	                  R4      ,          # )zgTry to get a human readable name for the main mirror of a country
Customize for different distributionsNz://z.archive.ubuntu.comúServer for %sú%sú/ rX   )rg   rZ   r[   rV   Úrstrip©r   Úserverrd   ÚiÚlis   &&   r   Ú_get_mirror_nameÚDistribution._get_mirror_nameÇ   s|   € ð ˆØ�K‰K˜ÓˆØ�[‰[Ð.Ó/ˆØ�Œ7�r˜R”xØ¤ U£�^¨bÐ1ˆGØ—n‘nÔ$ä�_Ó%¨¯©°wÕ(?Õ?Ð?à˜&Ÿ-™-¨Ó-Õ-Ð-r   c                óü  € R p. p\        V P                  4      ^8  gE   \        V P                  4      ^8X  d�   V! V P                  ^ ,          V P                  4      '       ds   VP                  \	        R4      V P                  R.4       V P
                  '       d8   VP                  V P                  V P
                  4      V P
                  R.4       V# \        V P                  4      ^8X  dó   V! V P                  ^ ,          V P                  4      '       gÉ   VP                  \	        R4      V P                  R.4       V P                  ^ ,          pV P
                  '       dP   V! W0P
                  4      '       g8   VP                  V P                  V P
                  4      V P
                  R.4       V'       d$   VP                  V P                  V4      VR.4       V# \        V P                  4      ^8”  Ed    VP                  \	        R4      V P                  R.4       V P
                  '       d8   VP                  V P                  V P
                  4      V P
                  R.4       VP                  \	        R4      RR.4       V P                   Fb  pV P                  V4      VR.pV! W0P
                  4      '       g   V! W0P                  4      '       d   KI  WB9  g   KQ  VP                  V4       Kd  	  V# )z+Return a list of used and suggested serversc                ól   € \         P                  ! V P                  R4      VP                  R4      4      # )z[Helper function that handles comaprision of mirror urls
that could contain trailing slashesrw   )ÚreÚmatchÚstriprx   )Úmir1Úmir2s   &&r   Úcompare_mirrorsÚ5Distribution.get_server_list.<locals>.compare_mirrorsØ   s'   € ô —8’8˜DŸJ™J tÓ,¨d¯k©k¸$Ó.?Ó@Ð@r   zMain serverTFzCustom serversN)rZ   r2   r0   r@   rV   r1   r}   )r   r†   Úmirrorsrz   Úmirror_entrys   &    r   Úget_server_listÚDistribution.get_server_listÕ   s’  € ò	Að ˆÜˆt× Ñ Ó! AÔ%Ü�×!Ñ!Ó" aÔ'Ù × 1Ñ 1°!Õ 4°d×6FÑ6F×GÒGà�N‰NœA˜mÓ,¨d×.>Ñ.>ÀÐEÔFØ×"×"Ð"Ø—‘à×-Ñ-¨d×.AÑ.AÓBØ×+Ñ+Øðôðd ˆôW �×"Ñ"Ó# qÔ(±Ø×Ñ˜aÕ  $×"2Ñ"2÷2
ò 2
ð �N‰NœA˜mÓ,¨d×.>Ñ.>ÀÐFÔGà×&Ñ& qÕ)ˆFð ×"×"Ð"Ù& v×/BÑ/B×CÒCØ—N‘Nà ×1Ñ1°$×2EÑ2EÓFØ ×/Ñ/Ø!ðô÷ Ø—‘ × 5Ñ 5°fÓ =¸vÀtÐLÔMð2 ˆô/ �×"Ñ"Ó# aÕ'ð �N‰NœA˜mÓ,¨d×.>Ñ.>ÀÐFÔGØ×"×"Ð"Ø—‘à×-Ñ-¨d×.AÑ.AÓBØ×+Ñ+Øðôð �N‰NœAÐ.Ó/°°tÐ<Ô=Ø×+Ô+�Ø $× 5Ñ 5°fÓ =¸vÀuÐM�Ù" 6×+>Ñ+>×?Ò?Á?Ø×,Ñ,÷Dò Dñ Ø!Ö0Ø—N‘N <Ö0ñ ,ð ˆr   c                óv  € Vf   V P                   pVf   V P                  pVf   \        V P                  4      pVf   V P                  pRpRp\        V P                  4      ;'       g    \        V P                  4       F  pVP                  p M	  V P                  P                  WW4WVVR7      pV P                  '       dv   WP                  8X  dd   V P                  P                  V P                  VVVVVP                  VV P                  P                  P                  V4      ^,           R7       R# R# R# )z#
Add distribution specific sources
N)ÚparentrL   )rL   r�   Úpos)r/   r   Úlistr*   r   Úreversedr%   r&   rL   r#   Úaddr-   r   Úindex)	r   rC   r=   r:   rB   Úcommentr�   rL   Ú
new_sources	   &&&&&&   r   Ú
add_sourceÚDistribution.add_source  s'  € ð Š;à×%Ñ%ˆCØŠ<Ø—=‘=ˆDØŠ=Ü˜×+Ñ+Ó,ˆEØŠ<Ø×#Ñ#ˆDàˆØˆÜ˜t×1Ñ1Ó2×QÐQ´h¸t×?PÑ?PÓ6QÒQˆFØ—;‘;ˆDÙñ Rð ×%Ñ%×)Ñ)Ø�t GÀð *ó 
ˆ
ð
 ××Ð D×,<Ñ,<Ô$<Ø×Ñ× Ñ Ø× Ñ ØØØØØ—_‘_Ø!Ø×$Ñ$×)Ñ)×/Ñ/°
Ó;¸aÕ?ð !ö 	ñ %=Ñr   c                ó\  € \        V.4      pV P                   Fu  pVP                  P                   FX  pVP                  V8X  g   K  VP
                  '       g   K*  VP
                  V9  g   K=  VP                  VP
                  4       KZ  	  Kw  	  V F  pV P                  V4       K  	  R# )z“
Enable a component in all main, child and source code sources
(excluding cdrom based sources)

comp:         the component that should be enabled
N)r�   r&   r;   Ú
componentsr6   Úparent_componentr@   Ú_enable_component)r   ÚcomprB   rH   Úcs   &&   r   Úenable_componentÚDistribution.enable_component?  sƒ   € ô �d�V“ˆà×'Ô'ˆFØ—_‘_×/Ô/�Ø—6‘6˜T–> a×&8×&8Ò&8Ø×)Ñ)°Ö6ØŸ™ Q×%7Ñ%7Ö8ó 0ñ (ó
 ˆAØ×"Ñ" 1Ö%ó r   c                óF  a€ V3R  lp. pVP                  V P                  4       VP                  V P                  4       / p/ pV F{  pVP                  V P                  8X  g   K   VP
                  V9  d   \        4       WFP
                  &   VP                   F$  pWFP
                  ,          P                  V4       K&  	  K}  	  V P                   F{  pVP                  V P                  8X  g   K   VP
                  V9  d   \        4       WVP
                  &   VP                   F$  pWVP
                  ,          P                  V4       K&  	  K}  	  \        V P                  4      ^8  d   V P                  RS,          .R7       M,V F  pV! W„4       K  	  V P                   F  pV! W…4       K  	  V P                  '       d_   \        V P                  4      ^8  d(   V P                  V P                  RS,          .R7       R# V P                   F  pV! W…4       K  	  R# R# )c                óÔ   <€ V P                   V9  d   R# SWP                   ,          9   d   R# V P                  S.,           V n        WP                   ,          P                  S4       R# )z”
Check if we already added the component to the repository, since
a repository could be splitted into different apt lines. If not
add the component
N)r:   rB   r‘   )rH   Úcomps_per_distr›   s   &&€r   Úadd_component_only_onceÚ?Distribution._enable_component.<locals>.add_component_only_onceQ  sO   ø€ ð �{‰{ .Ô0Ùð �~§k¡kÕ2Ô2Ùà!Ÿ<™<¨4¨&Õ0ˆFŒLØŸ;™;Õ'×+Ñ+¨DÖ1r   rv   )rB   )rC   rB   N)rA   r&   r%   rC   r   r:   rE   rB   r‘   r.   r   rZ   r•   r-   )	r   r›   r¢   Úsourcesr¡   Úcomps_per_sdistÚsrœ   rH   s	   &f       r   rš   ÚDistribution._enable_componentP  s¬  ø€ õ	2ð$ ˆØ�‰�t×(Ñ(Ô)Ø�‰�t×)Ñ)Ô*ð ˆØˆÛˆAØ�v‰v˜×)Ñ)Ö)Ø—6‘6 Ô/Ü-0«U�N§6¡6Ñ*ØŸœ�AØ"§6¡6Õ*×.Ñ.¨qÖ1ó !ñ	 ð ×)Ô)ˆAØ�v‰v˜×)Ñ)Ö)Ø—6‘6 Ô0Ü.1«e�O§F¡FÑ+ØŸœ�AØ#§F¡FÕ+×/Ñ/°Ö2ó !ñ	 *ô ˆt× Ñ Ó! AÔ%à�O‰O 4¨$¥; -ˆOÕ0ó "�Ù'¨Ö?ñ "ð ×2Ô2�Ù'¨Ö@ñ 3ð ××ÐÜ�4×+Ñ+Ó,¨qÔ0à—‘ T×%5Ñ%5¸dÀT½k¸]�ÖKð #×6Ô6�FÙ+¨FÖDó 7ñ  r   c                óð  € . pVP                  V P                  4       VP                  V P                  4       VP                  V P                  4       WP                  9   d   . pVP                  V P                  4       V Fo  pWP
                  9   g   K  VP
                  pVP                  V4       WCn        \        VP
                  4      ^8  g   KT  V P                  P                  V4       Kq  	  R# )z`
Disable a component in all main, child and source code sources
(excluding cdrom based sources)
N)	rA   r&   r%   r.   r+   rB   ÚremoverZ   r#   )r   r›   r¤   rH   rB   s   &&   r   Údisable_componentÚDistribution.disable_component�  sµ   € ð
 ˆØ�‰�t×(Ñ(Ô)Ø�‰�t×)Ñ)Ô*Ø�‰�t×/Ñ/Ô0Ø×#Ñ#Ô#ØˆGØ�N‰N˜4×,Ñ,Ô-ÛˆFØ—|‘|Ö#ØŸ™�Ø—‘˜TÔ"Ø$”Ü�v—|‘|Ó$ qÖ(Ø×$Ñ$×+Ñ+¨FÖ3ó r   c                óP  a € V 3R lp. p. pVS n         S P                   F  pV! WQV4       K  	  S P                   FK  pVP                  P                  e(   VP                  P                  VP
                  8w  g   KB  V! WQV4       KM  	  S P                   F  pV! WQV4       K  	  R# )z@Change the server of all distro specific sources to
a given hostc                 ón  <€ Wn         V P                   Ff  pV P                   V P                  V.V9   d   V P                  P                  V4       K>  VP	                  V P                   V P                  V.4       Kh  	  \        V P                  4      ^8  d   SP                  P                  V 4       R# R# )é   N)r=   rB   r:   r©   r@   rZ   r#   )rH   r=   Úseenr›   r   s   &&& €r   Úchange_server_of_sourceÚ;Distribution.change_server.<locals>.change_server_of_source¥  s†   ø€ àŒJØŸœ�Ø—J‘J §¡¨TÐ2°dÔ:Ø—L‘L×'Ñ'¨Ö-à—K‘K §¡¨V¯[©[¸$Ð ?Ö@ñ	 %ô
 �6—<‘<Ó  1Ô$Ø× Ñ ×'Ñ'¨Ö/ñ %r   N)r/   r&   r%   r;   rY   r=   r.   )r   r=   r°   Úseen_binaryÚseen_sourcerH   s   f&    r   Úchange_serverÚDistribution.change_server¡  s”   ø€ õ		0ð ˆØˆØ!ˆÔØ×'Ô'ˆFÙ# F°Ö=ñ (à×(Ô(ˆFð —‘×(Ñ(Ò0Ø—?‘?×+Ñ+¨v¯z©zÖ9á'¨°[ÖAñ )ð ×.Ô.ˆFÙ# F°Ö=ó /r   c                ó*   € WP                   8X  d   R# R# )z/Compare a given name with the release codename.TF)r   ©r   r6   s   &&r   r5   ÚDistribution.is_codename¿  s   € à—=‘=Ô Ùár   )r   r+   r(   r%   r   r[   rd   re   r/   r   r'   r)   r*   r-   r   r   r   r0   r&   r1   r   r.   r$   r   r#   r,   r2   ©N)NNNNr    )r   r	   r
   r   r   rI   rF   r}   rŠ   r•   r�   rš   rª   r´   r5   r   Ú__classdictcell__©Ú__classdict__s   @r   r   r   (   sN   ø‡ € à:<ÈRô%ò Tôl6-òp.òCôJ#òJ&ò";Eòz4ò(>÷<ð r   r   c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚDebianDistributioniÇ  z)Class to support specific Debian featuresc                óL   € WP                   8X  g   V P                  R9   d   R# R# )zuCompare a given name with the release codename and check if
if it can be used as a synonym for a development releasesTF)ÚtestingÚunstable)r   r   r·   s   &&r   r5   ÚDebianDistribution.is_codenameÊ  s    € ð —=‘=Ô  D§L¡LÐ4KÔ$KÙár   c                ó†  € RpVP                  R4      pVP                  R4      pVR8w  d   VR8w  d   W\        R4      ,           V pW P                  9   dU   \        R4      \        P
                  ! RV P                  V,          P                  4       4      P                  4       ,          # RVP                  R4      ,          # )	zQTry to get a human readable name for the main mirror of a country
Debian specificNz://ftp.z.debian.orgru   rR   rv   rw   rX   )rg   rZ   r[   rV   r   rc   rx   ry   s   &&   r   r}   Ú#DebianDistribution._get_mirror_nameÒ  s¥   € ð ˆØ�K‰K˜	Ó"ˆØ�[‰[˜Ó'ˆØ�Œ7�r˜R”xØ¤ Y£Õ/°"Ð5ˆGØ—n‘nÔ$ô �/Ó"Ü×"Ò"Ø §¡¨wÕ 7× >Ñ >Ó @óç‘&“(õðð ˜&Ÿ-™-¨Ó-Õ-Ð-r   c                ó4   € \         P                  V R R7       R# )z http://ftp.%s.debian.org/debian/©rh   N©r   rF   ©r   s   &r   rF   ÚDebianDistribution.get_mirrorså  s   € Ü× Ñ ØÐ"Dð 	!ö 	
r   r   N)
r   r	   r
   r   Ú__doc__r5   r}   rF   r   rº   r»   s   @r   r¾   r¾   Ç  s   ø‡ € Ù3òò.÷&
ð 
r   r¾   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚUbuntuDistributionië  z)Class to support specific Ubuntu featuresc                ó4   € \         P                  V R R7       R# )z$http://%s.archive.ubuntu.com/ubuntu/rÆ   NrÇ   rÈ   s   &r   rF   ÚUbuntuDistribution.get_mirrorsî  s   € Ü× Ñ ØÐ"Hð 	!ö 	
r   r   N©r   r	   r
   r   rÊ   rF   r   rº   r»   s   @r   rÌ   rÌ   ë  s   ø‡ € Ù3÷
ð 
r   rÌ   c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚUbuntuRTMDistributioniô  z-Class to support specific Ubuntu RTM featuresc                ó<   € V P                   P                  V n        R # r¹   )r$   rY   r0   rÈ   s   &r   rF   Ú!UbuntuRTMDistribution.get_mirrors÷  s   € Ø×/Ñ/×8Ñ8ˆÖr   )r0   NrÏ   r»   s   @r   rÑ   rÑ   ô  s   ø‡ € Ù7÷9ð 9r   rÑ   c                 óž  € ^ RI p ^ RIHpHpHp  V! RR.VVRR7      P                  4       ^ ,          pVP                  4        F5  pVP                  R4      '       g   K  VP                  R^4      ^,          u # 	  R#   \         dD   pTP                   T P                  8w  d   \        P                  ! R	T,          4        Rp?R# Rp?ii ; i)
z=Get the current channel from system-image-cli -i if possible.N)ÚDEVNULLÚPIPEÚPopenzsystem-image-cliz-iT)ÚstdoutÚstderrÚuniversal_newlinesz	channel: z: z+system-image-cli failed, using defaults: %s)ÚerrnoÚ
subprocessrÕ   rÖ   r×   ÚcommunicateÚ
splitlinesr>   ÚsplitÚOSErrorÚENOENTÚloggingÚwarning)rÛ   rÕ   rÖ   r×   ÚoutÚlineÚexcs          r   Ú_system_image_channelrç   û  s³   € ãß/Ñ/ðQÙØ Ð&ØØØ#ô	
÷
 ‰+‹-˜õˆð —N‘NÖ$ˆDØ�‰˜{×+Ô+Ø—z‘z $¨Ó*¨1Õ-Ò-ñ %ñ øô ô QØ�9‰9˜Ÿ™Ô$Ü�OŠOÐIÈCÕOÔPûÙûðQús$   �A
A> ÁA> Á:A> Á>CÂ	8CÃCc                óº  € V e   V P                  4       p V '       d   V'       d   V'       d	   V'       gà   \        P                  ! 4       pVR,          p VR,          pVR,          pVP                  R4      pVP                  R. 4      pV F4  pVP                  RVP	                  4       ,          R4      pVf   K0  W…V&   K6  	  V R8X  dL   \        4       p	V	e>   R	V	9   d7   R
p V	P                  R^4      ^,          P                  R^4      ^ ,          pTpTpV R8X  d   \        WW#WE4      # V R
8X  d   \        WW#WE4      # V R8X  d   \        WW#WE4      # \        WW#WE4      # )zº
Check the currently used distribution and return the corresponding
distriubtion class that supports distro specific features.

If no paramter are given the distro will be auto detected
NÚIDÚVERSION_CODENAMEÚPRETTY_NAMEÚ
VERSION_IDÚID_LIKEz%s_VERSION_CODENAMEÚubuntuzubuntu-rtm/z
ubuntu-rtmr!   Ú-Údebian)r   ÚplatformÚfreedesktop_os_releaseÚgetÚupperrç   Úrsplitrß   rÌ   rÑ   r¾   r   )
r   r   r   r   r   r   Ú
os_releaseÚlike_idÚlike_codenameÚchannels
   &&&&&&    r   Ú
get_distrorú     s]  € ð  
‚~Ø�X‰X‹Zˆß—8§·Ü×4Ò4Ó6ˆ
Ø˜ÕˆØÐ0Õ1ˆØ  Õ/ˆØ—.‘. Ó.ˆØ—.‘. ¨BÓ/ˆó ˆGØ&ŸN™NØ%¨¯©«Õ7¸óˆMð Ô(Ø*7˜wÓ'ñ ð �Œ>Ü+Ó-ˆGØÒ" }¸Ô'?Ø!�Ø"Ÿ>™>¨#¨qÓ1°!Õ4×:Ñ:¸3ÀÓBÀ1ÕE�Ø&�Ø"�Ø	ˆX„~Ü!Ø˜+°ó
ð 	
ð 
ˆ\ÔÜ$Ø˜+°ó
ð 	
ð 
ˆxŒÜ!Ø˜+°ó
ð 	
ô ˜B¨+ÀÓXÐXr   )r   râ   r\   rñ   r�   Úxml.etree.ElementTreer   Úapt_pkgrV   Ú	Exceptionr   r   r¾   rÌ   rÑ   rç   rú   r   r   r   Ú<module>rþ      sz   ðó4 Û Û 	Û Û 	Ý -å  ô	 	ô 	÷\ñ \ô~!
˜ô !
ôH
˜ô 
ô9Ð.ô 9òð, ØØØØØö5Yr   