Ë
    *Càe�‘  ã                   ó0  — d Z ddlZddlZddlZddlmZ ddlZddlmZ ddl	m
Z
mZmZ ddlmZmZ  ej                   d«      Zd	Z	 dd
lmZ ddlmZ ddlmZ  G d„ de«      ZdZ G d„ dej8                  «      Zy# e$ r  ej6                  d«       Y Œ/w xY w)znetplan status command lineé    N)ÚNetplanRouteé   )Úutils)ÚNetplanConfigStateÚSystemConfigStateÚJSON)ÚDiffJSONEncoderÚNetplanDiffStatez\[([a-z0-9]+)\].*\[\/\1\]F)ÚConsole)ÚRegexHighlighter)ÚThemec                   ó   — e Zd ZdZddgZy)ÚNetplanHighlighterznetplan.z"(^|[\s\/])(?P<int>\d+)([\s:]?\s|$)z(?P<str>(\"|\').+(\"|\'))N)Ú__name__Ú
__module__Ú__qualname__Ú
base_styleÚ
highlights© ó    ú5/usr/share/netplan/netplan_cli/cli/commands/status.pyr   r   '   s   „ Øˆ
à1Ø(ð‰
r   r   Tz4python3-rich not found, falling back to plain outputc            	       ó\  ‡ — e Zd Zˆ fd„Zd„ Zd„ Zdefd„Zdefd„Z	de
de
d	e
dee
   fd
„Zde
de
d	e
de
fd„Zde
de
d	e
defd„Zde
de
d	e
defd„Zdee
   fd„Zdee
   fd„Zdee
   fd„Zdee
   fd„Zdee
   fd„Zde
fd„Zdee   fd„Zdee   fd„Zdefd„Zdefd„Zde
fd„Zde
fd„Zde
fd„Zde
fd„Zde
fd„Z de
fd„Z!dee
   fd„Z"dee
   fd„Z#defd „Z$defd!„Z%d"„ Z&de
fd#„Z'de
fd$„Z(de
fd%„Z)de
fd&„Z*d'„ Z+d(„ Z,d)„ Z-d*„ Z.d+„ Z/de
fd,„Z0d-„ Z1d.„ Z2d/„ Z3d5d1e4d2e5dd0fd3„Z6d4„ Z7ˆ xZ8S )6ÚNetplanStatusc                 óT   •— t         ‰| �  ddd¬«       d| _        d | _        i | _        y )NÚstatusz,Query networking state of the running systemT)Ú
command_idÚdescriptionÚleafF)ÚsuperÚ__init__ÚallÚ
state_diffÚroute_lookup_table_names)ÚselfÚ	__class__s    €r   r    zNetplanStatus.__init__3   s5   ø€ Ü‰Ñ HØ%SØ"ð 	ô 	$ð ˆŒØˆŒØ(*ˆÕ%r   c                 ó  — | j                   j                  ddt        d d¬«       | j                   j                  dddd¬	«       | j                   j                  d
ddd¬	«       | j                   j                  dddd¬«       | j                   j                  ddd¬	«       | j                   j                  ddd¬	«       | j                   j                  dd¬«       | j                  | _        | j                  «        | j                  «        y )NÚifnameú?zShow only this interface)ÚnargsÚtypeÚdefaultÚhelpz-az--allÚ
store_truez(Show all interface data (incl. inactive))Úactionr,   z-vz	--verbosezShow extra informationz-fz--formatÚtabularz2Output in machine readable `json` or `yaml` format)r+   r,   z--diffz>Show the differences between the system's and netplan's statesz--diff-onlyzCOnly show the differences between the system's and netplan's statesz
--root-dirzBSearch for configuration files in this root directory instead of /)r,   )ÚparserÚadd_argumentÚstrÚcommandÚfuncÚ
parse_argsÚrun_command©r$   s    r   ÚrunzNetplanStatus.run;   s  € Ø�‰× Ñ  °¼3ÈØ&@ð 	!ô 	Bà�‰× Ñ   w°|Ø&Pð 	!ô 	Rà�‰× Ñ   {¸<Ø&>ð 	!ô 	@à�‰× Ñ   z¸9Ø&Zð 	!ô 	\à�‰× Ñ  °,Ø&hð 	!ô 	jà�‰× Ñ  °|Ø&mð 	!ô 	oà�‰× Ñ  Ø&jð 	!ô 	lð —L‘LˆŒ	Ø�‰ÔØ×ÑÕr   c           
      óØ   — t         rWt        ddddddddœ«      }| j                  rt        ddddddddœ«      }t        t	        «       ||d	¬
«      }|j
                  }|S | j                  }|S )Nz	bold cyanÚyellowÚgrey62z
green boldzred boldzyellow boldÚbold)znetplan.intznetplan.strÚmutedÚonlineÚofflineÚunknownÚ	highlightF)ÚhighlighterÚthemeÚwidthÚemoji)ÚRICH_OUTPUTr   Údiffr   r   ÚprintÚplain_print)r$   Ú_console_widthrC   ÚconsoleÚpprints        r   Ú_create_pretty_printz"NetplanStatus._create_pretty_printO   s’   € ÝäØ*Ø'Ø!Ø&Ø%Ø(Ø#ñó ˆEð �yŠyÜØ#+Ø#+Ø%Ø*Ø)Ø,Ø!'ñó �ô Ô*<Ó*>ÀeØ$2¸%ôAˆGà—]‘]ˆFð ˆð ×%Ñ%ˆFàˆr   Úreturnc                 ó¦   — | j                   rD| j                   d   j                  |«      x}r$|j                  d«      s|j                  d«      r|S i S )NÚ
interfacesÚsystem_stateÚnetplan_state©r"   Úget©r$   r'   rG   s      r   Ú_get_interface_diffz!NetplanStatus._get_interface_diffn   sI   € Ø�?Š?Ø—‘ |Ñ4×8Ñ8¸Ó@Ð@ˆtÐ@Ø—8‘8˜NÔ+¨t¯x©x¸Ô/HØ�KØˆ	r   c                 ó`   — | j                   r"| j                   j                  d«      x}r||v ryy)NÚmissing_interfaces_netplanTFrS   )r$   r'   Úmissings      r   Ú _is_interface_missing_in_netplanz.NetplanStatus._is_interface_missing_in_netplanu   s2   € Ø�?Š?ØŸ/™/×-Ñ-Ð.JÓKÐKˆwÐKØ˜WÑ$ØØr   r'   ÚstateÚpropertyc                 ó¢   — | j                   rB| j                   d   j                  |«      x}r"|j                  |i «      j                  |g «      S g S ©NrP   rS   ©r$   r'   r[   r\   rG   s        r   Ú_get_missing_property_listz(NetplanStatus._get_missing_property_list|   sK   € Ø�?Š?Ø—‘ |Ñ4×8Ñ8¸Ó@Ð@ˆtÐ@Ø—x‘x  rÓ*×.Ñ.¨x¸Ó<Ð<Øˆ	r   c                 ó    — | j                   rB| j                   d   j                  |«      x}r"|j                  |i «      j                  |d«      S y)NrP   Ú rS   r_   s        r   Ú_get_missing_property_strz'NetplanStatus._get_missing_property_str‚   sI   € Ø�?Š?Ø—‘ |Ñ4×8Ñ8¸Ó@Ð@ˆtÐ@Ø—x‘x  rÓ*×.Ñ.¨x¸Ó<Ð<Ør   c                 óÂ   — | j                   rJ| j                   d   j                  |«      x}r*|j                  |i «      j                  |t        «       «      S t        «       S r^   )r"   rT   Úsetr_   s        r   Ú_get_missing_property_setz'NetplanStatus._get_missing_property_setˆ   sO   € Ø�?Š?Ø—‘ |Ñ4×8Ñ8¸Ó@Ð@ˆtÐ@Ø—x‘x  rÓ*×.Ñ.¨x¼»Ó?Ð?Ü‹uˆr   c                 ó    — | j                   rB| j                   d   j                  |«      x}r"|j                  |i «      j                  |d«      S y)NrP   FrS   r_   s        r   Ú_get_missing_property_boolz(NetplanStatus._get_missing_property_boolŽ   sI   € Ø�?Š?Ø—‘ |Ñ4×8Ñ8¸Ó@Ð@ˆtÐ@Ø—x‘x  rÓ*×.Ñ.¨x¸Ó?Ð?Ør   c                 ó(   — | j                  |dd«      S )NrR   Úmissing_addresses©r`   ©r$   r'   s     r   Ú_get_missing_netplan_addressesz,NetplanStatus._get_missing_netplan_addresses”   s   € Ø×.Ñ.¨v°ÐH[Ó\Ð\r   c                 ó(   — | j                  |dd«      S )NrQ   Úmissing_nameservers_addressesrk   rl   s     r   Ú_get_missing_system_nameserversz-NetplanStatus._get_missing_system_nameservers—   s   € Ø×.Ñ.¨v°~ÐGfÓgÐgr   c                 ó(   — | j                  |dd«      S )NrR   ro   rk   rl   s     r   Ú _get_missing_netplan_nameserversz.NetplanStatus._get_missing_netplan_nameserversš   s   € Ø×.Ñ.¨v°ÐHgÓhÐhr   c                 ó(   — | j                  |dd«      S )NrR   Úmissing_nameservers_searchrk   rl   s     r   Ú_get_missing_netplan_searchz)NetplanStatus._get_missing_netplan_search�   s   € Ø×.Ñ.¨v°ÐHdÓeÐer   c                 ó(   — | j                  |dd«      S )NrQ   rt   rk   rl   s     r   Ú_get_missing_system_searchz(NetplanStatus._get_missing_system_search    s   € Ø×.Ñ.¨v°~ÐGcÓdÐdr   c                 ó(   — | j                  |dd«      S )NrQ   Úmissing_macaddress©rc   rl   s     r   Ú_get_missing_system_macaddressz,NetplanStatus._get_missing_system_macaddress£   s   € Ø×-Ñ-¨f°nÐFZÓ[Ð[r   c                 ó(   — | j                  |dd«      S )NrR   Úmissing_routes©rf   rl   s     r   Ú_get_missing_netplan_routesz)NetplanStatus._get_missing_netplan_routes¦   s   € Ø×-Ñ-¨f°oÐGWÓXÐXr   c                 ó(   — | j                  |dd«      S )NrQ   r}   r~   rl   s     r   Ú_get_missing_system_routesz(NetplanStatus._get_missing_system_routes©   s   € Ø×-Ñ-¨f°nÐFVÓWÐWr   c                 ó(   — | j                  |dd«      S )NrQ   Úmissing_dhcp4_address©rh   rl   s     r   Ú_is_missing_dhcp4_addressz'NetplanStatus._is_missing_dhcp4_address¬   ó   € Ø×.Ñ.¨v°~ÐG^Ó_Ð_r   c                 ó(   — | j                  |dd«      S )NrQ   Úmissing_dhcp6_addressr„   rl   s     r   Ú_is_missing_dhcp6_addressz'NetplanStatus._is_missing_dhcp6_address¯   r†   r   c                 ó(   — | j                  |dd«      S )NrQ   Úmissing_bond_linkrz   rl   s     r   Ú_get_missing_system_bond_linkz+NetplanStatus._get_missing_system_bond_link²   s   € Ø×-Ñ-¨f°nÐFYÓZÐZr   c                 ó(   — | j                  |dd«      S )NrR   r‹   rz   rl   s     r   Ú_get_missing_netplan_bond_linkz,NetplanStatus._get_missing_netplan_bond_linkµ   s   € Ø×-Ñ-¨f°oÐGZÓ[Ð[r   c                 ó(   — | j                  |dd«      S )NrQ   Úmissing_bridge_linkrz   rl   s     r   Ú_get_missing_system_bridge_linkz-NetplanStatus._get_missing_system_bridge_link¸   s   € Ø×-Ñ-¨f°nÐF[Ó\Ð\r   c                 ó(   — | j                  |dd«      S )NrR   r�   rz   rl   s     r   Ú _get_missing_netplan_bridge_linkz.NetplanStatus._get_missing_netplan_bridge_link»   s   € Ø×-Ñ-¨f°oÐG\Ó]Ð]r   c                 ó(   — | j                  |dd«      S )NrQ   Úmissing_vrf_linkrz   rl   s     r   Ú_get_missing_system_vrf_linkz*NetplanStatus._get_missing_system_vrf_link¾   s   € Ø×-Ñ-¨f°nÐFXÓYÐYr   c                 ó(   — | j                  |dd«      S )NrR   r•   rz   rl   s     r   Ú_get_missing_netplan_vrf_linkz+NetplanStatus._get_missing_netplan_vrf_linkÁ   s   € Ø×-Ñ-¨f°oÐGYÓZÐZr   c                 ó(   — | j                  |dd«      S )NrR   Úmissing_interfacesrk   rl   s     r   Ú_get_missing_netplan_membersz*NetplanStatus._get_missing_netplan_membersÄ   s   € Ø×.Ñ.¨v°ÐH\Ó]Ð]r   c                 ó(   — | j                  |dd«      S )NrQ   rš   rk   rl   s     r   Ú_get_missing_system_membersz)NetplanStatus._get_missing_system_membersÇ   s   € Ø×.Ñ.¨v°~ÐG[Ó\Ð\r   c                 óV   — | j                   r| j                   j                  di «      S i S )NÚmissing_interfaces_systemrS   r7   s    r   Ú_get_missing_system_interfacesz,NetplanStatus._get_missing_system_interfacesÊ   s&   € Ø�?Š?Ø—?‘?×&Ñ&Ð'BÀBÓGÐGØˆ	r   c                 óÆ   — | j                  |«      ry| j                  rC| j                  d   j                  |«      x}r#|j                  d«      s|j                  d«      ryy)NTrP   rQ   rR   F)rZ   r"   rT   rU   s      r   Ú	_has_diffzNetplanStatus._has_diffÏ   sV   € Ø×0Ñ0°Ô8ØØ�?Š?Ø—‘ |Ñ4×8Ñ8¸Ó@Ð@ˆtÐ@Ø—8‘8˜NÔ+¨t¯x©x¸Ô/HØØr   c           
      óÂ  — |j                  di «      }| j                  d| j                  z   dz   j                  d|j                  dd«      rdnd¬	«      «       |j                  d
i «      }|j                  dg «      }|j                  d«      }|j                  dg «      }|r`t	        |«      D ]R  \  }}| j                  d| j                  z   dz   j                  |dk(  rdnd||rdj                  |«      nd¬«      «       ŒT |rLt	        |«      D ]>  \  }}| j                  d| j                  z   dz   j                  |dk(  rdnd|¬	«      «       Œ@ | j                  «        y )Núnetplan-global-stateú{title:>ú	} {value}zOnline state:r>   Fz[online]online[/online]z[offline]offline[/offline]©ÚtitleÚvalueÚnameserversÚ	addressesÚmodeÚsearchz} {value}[muted]{mode}[/muted]r   úDNS Addresses:rb   ú ({}))r¨   r©   r¬   úDNS Search:)rT   rL   ÚPADÚformatÚ	enumerate)	r$   ÚdataÚglobal_stateÚnsÚdns_addrÚdns_modeÚ
dns_searchÚiÚvals	            r   Ú_display_global_statez#NetplanStatus._display_global_stateØ   sd  € Ø—x‘xÐ 6¸Ó;ˆØ�‰�Z §¡Ñ(¨Ñ4×<Ñ<Ø!Ø/;×/?Ñ/?ÀÈ%Ô/PÑ+ÐVrð =ó ô 	ð ×Ñ˜m¨RÓ0ˆØŸ™ ¨RÓ0ˆØŸ™˜v›ˆØŸ6™6 (¨BÓ/ˆ
ÙÜ# HÓ-ò ‘��3Ø—‘˜Z¨¯©Ñ0Ð1QÑQ×YÑYØ./°1ªfÑ*¸"ØÙ5=˜Ÿ™¨Ô1À2ð Zó õ ðñ Ü# JÓ/ò ‘��3Ø—‘˜Z¨¯©Ñ0°Ñ<×DÑDØ+,°ª6™-°rØð Eó õ ðð
 	�‰�r   c                 ó6  — |j                  dd«      dz   |j                  dd«      z   }d}|dk(  rd}d}n	|d	k(  rd
}d}|j                  dd«      }|j                  d«      }|j                  d«      }|dk(  r|r|d|z   dz   z  }n|dk(  r
|r|d|z   z  }d}|j                  d«      r dj                  |j                  d«      «      nd}	d}
d}| j                  rZ| j                  |«      r| j                  }d}|dz  }n5d}|j                  d«      r dj                  |j                  d«      «      nd}	| j
                  r| j                  |«      rJ| j                  |j                  |||j                  dd«      ||||j                  dd«      |	|
¬ «	      «       y y )!NÚ	operstateÚUNKNOWNú/Ú
adminstater@   zUP/UPÚUPr>   z	DOWN/DOWNÚDOWNr?   r*   ÚotherÚssidÚtunnel_modeÚwifiz/"ú"ÚtunneluU   [{col}]â—�[/{col}] {idx:>2}: {name} {type} [{col}]{state}[/{col}] ({backend}{netdef})Úidz: [highlight]{}[/highlight]rb   uC   {sign} [{col}]â—�[/{col}] {idx:>2}: [green][highlight]{name} {type}z? [{col}]{state}[/{col}] ({backend}{netdef})[/highlight][/green]uH     [muted]â—� {idx:>2}: {name} {type} {state} ({backend}{netdef})[/muted]z: {}Úindexr(   ÚbackendÚ	unmanaged)	ÚsignÚcolÚidxÚnamer*   r[   rÌ   ÚnetdefÚextra)rT   r²   rG   rZ   ÚPLUSÚ	diff_onlyr¢   rL   )r$   r'   r´   r[   ÚscolorÚ	full_typerÅ   rÆ   r²   rÒ   rÓ   rÎ   s               r   Ú_display_interface_headerz'NetplanStatus._display_interface_headerñ   s¢  € Ø—‘˜ iÓ0°3Ñ6¸¿¹À,ÐPYÓ9ZÑZˆØˆØ�GÒØˆEØ‰FØ�kÒ!ØˆEØˆFØ—H‘H˜V WÓ-ˆ	Ø�x‰x˜ÓˆØ—h‘h˜}Ó-ˆØ˜Ò¡4Ø˜$ ™+¨Ñ+Ñ,‰IØ˜(Ò"¡{Ø˜# Ñ+Ñ,ˆIàhˆØIMÏÉÐRVÌÐ.×5Ñ5°d·h±h¸t³nÔEÐ]_ˆØˆØˆØ�9Š9Ø×4Ñ4°VÔ<Ø—y‘y�Ø^�ØÐ[Ñ[‘àc�Ø:>¿(¹(À4¼.˜Ÿ™ t§x¡x°£~Ô6Èb�à�~Š~ §¡°Ô!7Ø�K‰K˜Ÿ™ØØØ—H‘H˜W cÓ*ØØØØŸ™ ¨KÓ8ØØð &ó 
õ 
ð "8r   c                 óì  — |j                  d«      x}�r`d}| j                  |«      }d| j                  z   dz   }d}| j                  r#|s!d| j                  z   dz   }| j                  r/d}n,| j                  r |r| j
                  }d	| j                  z   d
z   }|sÛ| j                  |j                  |d||j                  d«      r!dj                  |j                  dd«      «      nd¬«      «       | j                  rx|ru| j                  }d	| j                  z   dz   }| j                  |j                  |d||j                  d«      r!dj                  |j                  dd«      «      nd¬«      «       y y y y y )NÚ
macaddressFr¥   z} {mac}[muted]{vendor}[/muted]rb   ú  [muted]{title:>z} {mac}{vendor}[/muted]Tú{sign} {title:>z5} [green][highlight]{mac}{vendor}[/highlight][/green]zMAC Address:Úvendorr¯   )rÎ   r¨   ÚmacrÝ   z1} [red][highlight]{mac}{vendor}[/highlight][/red])	rT   r{   r±   rG   rÕ   rÔ   rL   r²   ÚMINUS)r$   r'   r´   rÚ   Úhide_macaddressÚmissing_system_macaddressr²   rÎ   s           r   Ú_display_mac_addressz"NetplanStatus._display_mac_address  sh  € ØŸ™ ,Ó/Ð/ˆ:Ñ/Ø#ˆOØ(,×(KÑ(KÈFÓ(SÐ%Ø §¡Ñ(Ð)IÑIˆFØˆDØ�yŠyÑ!:Ø,¨T¯X©XÑ5Ð6OÑO�Ø—>’>Ø&*‘OØ—’Ñ8Ø—y‘y�Ø*¨4¯8©8Ñ3Ð4kÑk�á"Ø—‘˜VŸO™OØØ(Ø"ØEIÇXÁXÈhÔEW˜7Ÿ>™>¨$¯(©(°8¸RÓ*@ÔAÐ]_ð	 ,ó ô ð —9’9Ñ!:ØŸ:™:�DØ.¨t¯x©xÑ7Ð8kÑk�FØ—K‘K §¡Ø!Ø Ø5ØIMÏÉÐRZÔI[˜wŸ~™~¨d¯h©h°xÀÓ.DÔEÐacð	 !0ó !õ ð ";�9ð #ð 0r   c                 ó  — |j                  dg «      }d}|�rR| j                  |«      }|D �];  }d}d}t        |j                  «       «      d   \  }	}
|
j                  dd«      }g }|
j                  d«      r|
j                  dg «      }d}d}|rd|v rd}d	}|	› d
|› �}| j                  r)||vr%d| j
                  z   dz   }d}d}| j                  rHd}nE| j                  r'||v r#| j                  }d| j
                  z   dz   }d}d	}nd| j
                  z   dz   }|rŒð| j                  |j                  ||dk(  rdnd|	||rddj                  |«      z   dz   nd||¬«      «       |dz  }�Œ> | j                  |«      x}�r| j                  }|j                  di «      j                  d«      x}rF|D ]A  }	| j                  d| j
                  z   dz   j                  ||dk(  rdnd|	¬«      «       |dz  }ŒC | j                  |«      r>| j                  d| j
                  z   dz   j                  ||dk(  rdnd¬«      «       |dz  }| j                  |«      r:| j                  d| j
                  z   dz   j                  ||dk(  rdnd¬«      «       y y y )Nr«   r   rb   FÚprefixÚflagsÚdhcpú[highlight]ú[/highlight]rÀ   rÛ   z*} {start}{ip}/{prefix}{end}{extra}[/muted]TrÜ   z1} [green]{start}{ip}/{prefix}{extra}{end}[/green]r¥   z1} {start}{ip}/{prefix}{end}[muted]{extra}[/muted]z
Addresses:ú (ú, ú))rÎ   r¨   Úiprä   rÓ   ÚstartÚendé   rQ   rj   z(} [highlight][red]{ip}[/red][/highlight]©rÎ   r¨   rì   z4} [highlight][red]0.0.0.0/0 (dhcp)[/red][/highlight])rÎ   r¨   z/} [highlight][red]::/0 (dhcp)[/red][/highlight])rT   rm   ÚlistÚitemsrG   r±   rÕ   rÔ   rL   r²   ÚjoinrV   rß   r…   r‰   )r$   r'   r´   ÚlstÚaddresses_displayedÚmissing_netplan_addressesÚobjrÎ   Úhide_addressrì   rÓ   rä   rå   Úhighlight_startÚhighlight_endÚaddressr²   rG   rj   s                      r   Ú_display_ip_addressesz#NetplanStatus._display_ip_addresses<  sô  € Ø—H‘H˜[¨"Ó-ˆØÐÚØ(,×(KÑ(KÈFÓ(SÐ%Øó '-�Ø�Ø$�Ü  §¡£Ó-¨aÑ0‘	��EØŸ™ 8¨RÓ0�Ø�Ø—9‘9˜WÔ%Ø!ŸI™I g¨rÓ2�EØ"$�Ø "�Ù ¨%¡Ø&3�OØ$2�Mà˜D  & Ð*�Ø—9’9 Ð0IÑ!IØ0°·±Ñ9Ð:fÑf�FØ&(�OØ$&�MØ—~’~Ø'+™Ø—Y’Y 7Ð.GÑ#GØŸ9™9�DØ.¨t¯x©xÑ7Ð8kÑk�FØ&3�OØ$2‘Mà'¨¯©Ñ0Ð1dÑd�Fâ#Ø—K‘K §¡Ø!Ø.AÀQÒ.F™lÈBØØ%Ù;@˜d 4§9¡9¨UÓ#3Ñ3°CÒ7ÀbØ-Ø)ð !0ó !ô ð (¨1Ñ,Ò'ðO'-ðR ×+Ñ+¨FÓ3Ð3ˆ4Ñ3Ø—:‘:ˆDØ$(§H¡H¨^¸RÓ$@×$DÑ$DÐEXÓ$YÐYÐ ÐYØ+ò -�BØ—K‘KÐ!2°4·8±8Ñ!;Ð<fÑ!f× nÑ nØ!Ø.AÀQÒ.F™lÈBØð !oó !ô ð
 (¨1Ñ,Ñ'ð-ð ×-Ñ-¨fÔ5Ø—‘Ð.¨t¯x©xÑ7Ð8nÑn×vÑvØØ*=ÀÒ*B™,Èð wó ô ð $ qÑ(Ð#Ø×-Ñ-¨fÔ5Ø—‘Ð.¨t¯x©xÑ7Ð8iÑi×qÑqØØ*=ÀÒ*B™,Èð ró õ ð 6ð! 4r   c           
      ó¼  — |j                  dg «      }d}|rÎ| j                  |«      }|D ]¸  }d}d}| j                  r)||vr%d| j                  z   dz   }	d}
d}| j                  rLd}nI| j                  r'||v r#| j
                  }d| j                  z   d	z   }	d
}
d}nd| j                  z   dz   }	d}
d}|rŒˆ| j                  |	j                  ||dk(  rdnd||
|¬«      «       |dz  }Œº | j                  |«      rg| j                  |«      x}rS| j                  }|D ]A  }| j                  d| j                  z   dz   j                  ||dk(  rdnd|¬«      «       |dz  }ŒC y y y )NÚdns_addressesr   rb   FrÛ   ú} {value}[/muted]TrÜ   ú$} [green]{start}{value}{end}[/green]rç   rè   r¥   r¦   r®   ©rÎ   r¨   r©   rí   rî   rï   z(} [red][highlight]{ip}[/highlight][/red]rð   )rT   rr   rG   r±   rÕ   rÔ   rL   r²   r¢   rp   rß   )r$   r'   r´   rô   Únameservers_displayedÚmissing_netplan_nameserversr»   rÎ   Úhide_nameserverr²   rù   rú   ro   rì   s                 r   Ú_display_dns_addressesz$NetplanStatus._display_dns_addresses€  s±  € Ø�h‰h�¨Ó+ˆØ !ÐÙØ*.×*OÑ*OÐPVÓ*WÐ'Øò /�Ø�Ø"'�Ø—9’9 Ð,GÑ!GØ0°·±Ñ9Ð:MÑM�FØ&(�OØ$&�MØ—~’~Ø*.™Ø—Y’Y 3Ð*EÑ#EØŸ9™9�DØ.¨t¯x©xÑ7Ð8^Ñ^�FØ&3�OØ$2‘Mà'¨¯©Ñ0°Ñ<�FØ&(�OØ$&�Mâ&Ø—K‘K §¡Ø!Ø2GÈ1Ò2LÑ.ÐRTØ!Ø-Ø)ð !0ó !ô ð *¨QÑ.Ñ)ð7/ð: �>‰>˜&Ô!Ø04×0TÑ0TÐU[Ó0\Ð\Ð,Ð\Ø—z‘z�Ø7ò /�BØ—K‘KÐ!2°4·8±8Ñ!;Ð<fÑ!f× nÑ nØ!Ø2GÈ1Ò2LÑ.ÐRTØð !oó !ô ð
 *¨QÑ.Ñ)ñ/ð ]ð "r   c           
      óÔ  — |j                  dg «      }d}|rÚ| j                  |«      }t        |«      D ]»  \  }}d}d}	| j                  r)||vr%d| j                  z   dz   }
d}d}| j
                  rLd}	nI| j                  r'||v r#| j                  }d| j                  z   d	z   }
d
}d}nd| j                  z   dz   }
d}d}|	rŒ‹| j                  |
j                  ||dk(  rdnd|||¬«      «       |dz  }Œ½ | j                  |«      rg| j                  |«      x}rS| j                  }|D ]A  }| j                  d| j                  z   dz   j                  ||dk(  rdnd|¬«      «       |dz  }ŒC y y y )Nr¹   r   rb   FrÛ   rÿ   TrÜ   r   rç   rè   r¥   r¦   r°   r  rï   z,} [red][highlight]{domain}[/highlight][/red])rÎ   r¨   Údomain)rT   ru   r³   rG   r±   rÕ   rÔ   rL   r²   r¢   rw   rß   )r$   r'   r´   rô   Úsearches_displayedÚmissing_netplan_searchrº   r»   rÎ   Úhide_searchr²   rù   rú   rt   r  s                  r   Ú_display_dns_searchz!NetplanStatus._display_dns_search­  s³  € Ø�h‰h�| RÓ(ˆØÐÙØ%)×%EÑ%EÀfÓ%MÐ"Ü# C›.ò ,‘��3Ø�Ø#�Ø—9’9 Ð,BÑ!BØ0°·±Ñ9Ð:MÑM�FØ&(�OØ$&�MØ—~’~Ø&*™Ø—Y’Y 3Ð*@Ñ#@ØŸ9™9�DØ.¨t¯x©xÑ7Ð8^Ñ^�FØ&3�OØ$2‘Mà'¨¯©Ñ0°Ñ<�FØ&(�OØ$&�Mâ"Ø—K‘K §¡Ø!Ø/AÀQÒ/F™mÈBØ!Ø-Ø)ð !0ó !ô ð '¨!Ñ+Ñ&ð7,ð: �>‰>˜&Ô!Ø-1×-LÑ-LÈVÓ-TÐTÐ)ÐTØ—z‘z�Ø8ò ,�FØ—K‘KÐ!2°4·8±8Ñ!;Ð<jÑ!j× rÑ rØ!Ø/AÀQÒ/F™mÈBØ%ð !só !ô ð
 '¨!Ñ+Ñ&ñ,ð Uð "r   c                 óÐ	  — |j                  dg «      }| j                  |«      }| j                  |«      }d}|�rÛ| j                  st	        j
                  «       | _        t        d d «      }|D �cg c]  }|j                  |«      ‘Œ }	}| j                  st        d„ |	«      }	|	D �]m  }d}
d}d}|j                  dk(  rd}d}d}|j                  rd	|j                  z   }d}|j                  rd
|j                  z   }d}|j                  t        j                  k  rdt!        |j                  «      z   }d}| j                  rN|j"                  dkD  r?dj%                  | j                  j                  |j"                  |j"                  «      «      }g }|j&                  r,|j&                  dk7  r|j&                  }|j)                  |«       |j*                  r,|j*                  dk7  r|j*                  }|j)                  |«       |j,                  r,|j,                  dk7  r|j,                  }|j)                  |«       d}| j.                  r)||vr%d| j0                  z   dz   }d}d}| j2                  rId}
nF| j.                  r(||v r$| j4                  }d| j0                  z   dz   }|dz  }nd| j0                  z   dz   }|
r�Œ| j7                  |j%                  ||dk(  rdnd|j                  |||||rddj9                  |«      z   dz   nd||¬«
      «       |dz  }�Œp | j.                  �rÀ|D �]¹  }d}|j                  rd	|j                  z   }d}|j                  rd
|j                  z   }d}|j                  t        j                  k  rdt!        |j                  «      z   }d}| j                  rN|j"                  dkD  r?dj%                  | j                  j                  |j"                  |j"                  «      «      }g }|j*                  r,|j*                  dk7  r|j*                  }|j)                  |«       |j,                  r,|j,                  dk7  r|j,                  }|j)                  |«       | j:                  }d| j0                  z   dz   }| j7                  |j%                  ||dk(  rdnd|j                  |||||rddj9                  |«      z   dz   nddd¬«
      «       |dz  }�Œ¼ y y c c}w )NÚroutesr   c                 ó    — | j                   dk(  S )Néþ   )Útable)Úrs    r   ú<lambda>z/NetplanStatus._display_routes.<locals>.<lambda>ç  s   € ¨!¯'©'°S©.€ r   Frb   r+   rç   rè   z via z from z metric z	 table {}ÚkernelÚglobalÚunicastrÛ   z:} {start}{to}{via}{src}{metric}{table}{end}{extra}[/muted]TrÜ   z1} [green][highlight]{start}{to}{via}{src}{metric}z'{table}{end}{extra}[/highlight][/green]r¥   zA} {start}{to}{via}{src}{metric}{table}{end}[muted]{extra}[/muted]zRoutes:ré   rê   rë   )
rÎ   r¨   ÚtoÚviaÚsrcÚmetricr  rÓ   rí   rî   rï   z=} {start}[red]{to}{via}{src}{metric}{table}{extra}[/red]{end})rT   r   r�   r#   r   Úroute_table_lookupr
   Ú_system_route_to_netplanÚverboseÚfilterr  r  Ú	from_addrr  r   Ú_METRIC_UNSPEC_r2   r  r²   ÚprotocolÚappendÚscoper*   rG   r±   rÕ   rÔ   rL   ró   rß   )r$   r'   r´   rô   Úmissing_netplan_routesÚmissing_system_routesÚroutes_displayedÚ
diff_stateÚrouter  Ú
hide_routeÚdefault_startÚdefault_endr  r  r  r  rÓ   Úprotor"  r*   rÎ   r²   s                          r   Ú_display_routeszNetplanStatus._display_routesÚ  s†  € Ø�h‰h�x Ó$ˆØ!%×!AÑ!AÀ&Ó!IÐØ $× ?Ñ ?ÀÓ GÐØÐÚØ×0Ò0Ü05×0HÑ0HÓ0J�Ô-ä)¨$°Ó5ˆJØNQÖRÀU�j×9Ñ9¸%Õ@ÐRˆFÐRØ—<’<äÑ 8¸&ÓA�Øó 9*�Ø"�
Ø "�Ø �Ø—8‘8˜yÒ(Ø$1�MØ"0�KØ�Ø—9’9Ø! E§I¡IÑ-�CØ�Ø—?’?Ø" U§_¡_Ñ4�CØ�Ø—<‘<¤,×">Ñ">Ò>Ø'¬#¨e¯l©lÓ*;Ñ;�FØ�Ø—<’< E§K¡K°!¢OØ'×.Ñ.¨t×/LÑ/L×/PÑ/PÐQV×Q\ÑQ\Ð^c×^iÑ^iÓ/jÓk�Eà�Ø—>’> e§n¡n¸Ò&@Ø!ŸN™N�EØ—L‘L Ô'Ø—;’; 5§;¡;°(Ò#:Ø!ŸK™K�EØ—L‘L Ô'Ø—:’: %§*¡*°	Ò"9Ø Ÿ:™:�DØ—L‘L Ô&à�Ø—9’9 Ð.DÑ!DØ0°·±Ñ9Ð:vÑv�FØ$&�MØ"$�KØ—~’~Ø%)™
Ø—Y’Y 5Ð,BÑ#BØŸ9™9�DØ.¨t¯x©xÑ7Ð8kÑk�FØÐGÑG‘Fà'¨¯©Ñ0Ð1tÑt�Fã!Ø—K‘K §¡Ø!Ø+;¸qÒ+@™iÀbØ Ÿ8™8ØØØ%Ø#Ù;@˜d 4§9¡9¨UÓ#3Ñ3°CÒ7ÀbØ+Ø'ð !.ó 
!)ô 
*ð %¨Ñ)Ò$ðs9*ðv �9‹9Ø.ó #&�Ø�Ø—9’9Ø! E§I¡IÑ-�CØ�Ø—?’?Ø" U§_¡_Ñ4�CØ�Ø—<‘<¤,×">Ñ">Ò>Ø'¬#¨e¯l©lÓ*;Ñ;�FØ�Ø—<’< E§K¡K°!¢OØ'×.Ñ.¨t×/LÑ/L×/PÑ/PÐQV×Q\ÑQ\Ð^c×^iÑ^iÓ/jÓk�Eà�Ø—;’; 5§;¡;°(Ò#:Ø!ŸK™K�EØ—L‘L Ô'Ø—:’: %§*¡*°	Ò"9Ø Ÿ:™:�DØ—L‘L Ô&à—z‘z�Ø*¨4¯8©8Ñ3Ð4sÑs�Ø—‘˜FŸM™MØØ'7¸1Ò'<™)À"Ø—x‘xØØØ!ØÙ7<˜$˜tŸy™y¨Ó/Ñ/°Ò3À"Ø'Ø&ð *ó 
(ô 
)ð ! AÑ%Ò ñG#&ð ùò Ss   Á/S#c                 ó&  — |j                  d«      }|r©| j                  |«      }d| j                  z   dz   }d}d}| j                  r#|s!d| j                  z   dz   }| j                  r1d}n.| j                  r"|r | j
                  }d	| j                  z   d
z   }|}|s#| j                  |j                  |d|¬«      «       | j                  |«      x}rB| j                  }d	| j                  z   dz   }| j                  |j                  |d|¬«      «       y y )NÚbridger¥   r¦   rb   FrÛ   rÿ   TrÜ   ú/} [highlight][green]{value}[/green][/highlight]zBridge:©rÎ   r¨   r©   ú+} [highlight][red]{value}[/red][/highlight])
rT   r“   r±   rG   rÕ   rÔ   rL   r²   r‘   rß   )	r$   r'   r´   r»   Úmissing_netplan_bridge_linkr²   rÎ   Úhide_bridgeÚmissing_system_bridge_links	            r   Ú_display_bridgezNetplanStatus._display_bridgeI  s!  € Ø�h‰h�xÓ ˆÙØ*.×*OÑ*OÐPVÓ*WÐ'Ø §¡Ñ(¨Ñ4ˆFØˆDØˆKØ�yŠyÑ!<Ø,¨T¯X©XÑ5Ð6IÑI�Ø—>’>Ø"&‘KØ—’Ñ:Ø—y‘y�Ø*¨4¯8©8Ñ3Ð4eÑe�Ø1�áØ—‘˜VŸO™OØØ#Øð ,ó ô ð
 *.×)MÑ)MÈfÓ)UÐUÐ%ÐUØ—:‘:ˆDØ& t§x¡xÑ/Ð0]Ñ]ˆFØ�K‰K˜Ÿ™ØØØ0ð (ó õ ð Vr   c                 ó&  — |j                  d«      }|r©| j                  |«      }d| j                  z   dz   }d}d}| j                  r#|s!d| j                  z   dz   }| j                  r1d}n.| j                  r"|r | j
                  }d	| j                  z   d
z   }|}|s#| j                  |j                  |d|¬«      «       | j                  |«      x}rB| j                  }d	| j                  z   dz   }| j                  |j                  |d|¬«      «       y y )NÚbondr¥   r¦   rb   FrÛ   rÿ   TrÜ   r/  zBond:r0  r1  )
rT   rŽ   r±   rG   rÕ   rÔ   rL   r²   rŒ   rß   )	r$   r'   r´   r»   Úmissing_netplan_bond_linkr²   rÎ   Ú	hide_bondÚmissing_system_bond_links	            r   Ú_display_bondzNetplanStatus._display_bondh  s   € Ø�h‰h�vÓˆÙØ(,×(KÑ(KÈFÓ(SÐ%Ø §¡Ñ(¨Ñ4ˆFØˆDØˆIØ�yŠyÑ!:Ø,¨T¯X©XÑ5Ð6IÑI�Ø—>’>Ø $‘IØ—’Ñ8Ø—y‘y�Ø*¨4¯8©8Ñ3Ð4eÑe�Ø/�áØ—‘˜VŸO™OØØ!Øð ,ó ô ð
 (,×'IÑ'IÈ&Ó'QÐQÐ#ÐQØ—:‘:ˆDØ& t§x¡xÑ/Ð0]Ñ]ˆFØ�K‰K˜Ÿ™ØØØ.ð (ó õ ð Rr   c                 ó&  — |j                  d«      }|r©| j                  |«      }d| j                  z   dz   }d}d}| j                  r#|s!d| j                  z   dz   }| j                  r1d}n.| j                  r"|r | j
                  }d	| j                  z   d
z   }|}|s#| j                  |j                  |d|¬«      «       | j                  |«      x}rB| j                  }d	| j                  z   dz   }| j                  |j                  |d|¬«      «       y y )NÚvrfr¥   r¦   rb   FrÛ   rÿ   TrÜ   r/  zVRF:r0  r1  )
rT   r˜   r±   rG   rÕ   rÔ   rL   r²   r–   rß   )	r$   r'   r´   r»   Úmissing_netplan_vrf_linkr²   rÎ   Úhide_vrfÚmissing_system_vrf_links	            r   Ú_display_vrfzNetplanStatus._display_vrf‡  s  € Ø�h‰h�u‹oˆÙØ'+×'IÑ'IÈ&Ó'QÐ$Ø §¡Ñ(¨Ñ4ˆFØˆDØˆHØ�yŠyÑ!9Ø,¨T¯X©XÑ5Ð6IÑI�Ø—>’>Ø#‘HØ—’Ñ7Ø—y‘y�Ø*¨4¯8©8Ñ3Ð4eÑe�Ø.�áØ—‘˜VŸO™OØØ Øð ,ó ô ð
 '+×&GÑ&GÈÓ&OÐOÐ"ÐOØ—:‘:ˆDØ& t§x¡xÑ/Ð0]Ñ]ˆFØ�K‰K˜Ÿ™ØØØ-ð (ó õ ð Pr   c           
      ó¼  — |j                  dg «      }d}|rÎ| j                  |«      }|D ]¸  }d}d}| j                  r)||vr%d| j                  z   dz   }	d}
d}| j                  rLd}nI| j                  r'||v r#| j
                  }d| j                  z   d	z   }	d
}
d}nd| j                  z   dz   }	d}
d}|rŒˆ| j                  |	j                  ||dk(  rdnd||
|¬«      «       |dz  }Œº | j                  |«      rg| j                  |«      x}rS| j                  }|D ]A  }| j                  d| j                  z   dz   j                  ||dk(  rdnd|¬«      «       |dz  }ŒC y y y )NrP   r   rb   FrÛ   rÿ   TrÜ   r   rç   rè   r¥   r¦   zInterfaces:r  rï   z,} [red][highlight]{member}[/highlight][/red])rÎ   r¨   Úmember)rT   r›   rG   r±   rÕ   rÔ   rL   r²   r¢   r�   rß   )r$   r'   r´   rô   Úmembers_displayedÚmissing_netplan_interfacesr»   rÎ   Úhide_memberr²   rù   rú   Úmissing_membersrC  s                 r   Ú_display_memberszNetplanStatus._display_members¦  sª  € Ø�h‰h�| RÓ(ˆØÐÙØ)-×)JÑ)JÈ6Ó)RÐ&Øò +�Ø�Ø#�Ø—9’9 Ð,FÑ!FØ0°·±Ñ9Ð:MÑM�FØ&(�OØ$&�MØ—~’~Ø&*™Ø—Y’Y 3Ð*DÑ#DØŸ9™9�DØ.¨t¯x©xÑ7Ð8^Ñ^�FØ&3�OØ$2‘Mà'¨¯©Ñ0°Ñ<�FØ&(�OØ$&�Mâ"Ø—K‘K §¡Ø!Ø/@ÀAÒ/E™mÈ2Ø!Ø-Ø)ð !0ó !ô ð &¨Ñ*Ñ%ð7+ð: �>‰>˜&Ô!Ø"&×"BÑ"BÀ6Ó"JÐJˆÐJØ—z‘z�Ø-ò +�FØ—K‘KÐ!2°4·8±8Ñ!;Ð<jÑ!j× rÑ rØ!Ø/@ÀAÒ/E™mÈ2Ø%ð !só !ô ð
 &¨Ñ*Ñ%ñ+ð Kð "r   c                 ó�   — |j                  d«      }|r3| j                  d| j                  z   dz   j                  d|¬«      «       y y )NÚactivation_moder¥   r¦   zActivation Mode:r§   )rT   rL   r±   r²   )r$   r´   r»   s      r   Ú_display_activation_modez&NetplanStatus._display_activation_modeÓ  sL   € Ø�h‰hÐ(Ó)ˆÙØ�K‰K˜ D§H¡HÑ,¨[Ñ8×@Ñ@Ø(Øð Aó õ ð r   c                 ó~  — | j                  «       }| j                  }t        |j                  «       d«      D ]„  \  }\  }}| j                  r| j                  |k7  rŒ%| j                  dj                  |dd||j                  d«      ¬«      «       |t        |«      k7  sŒh| j                  rŒu| j                  «        Œ† y )Nrï   u1   {sign} [{col}]â—� {idx:>2}  {name} {type}[/{col}]Úredrb   r*   )rÎ   rÏ   rÐ   rÑ   r*   )	r    rß   r³   rò   r'   rL   r²   rT   Úlen)r$   rš   rÎ   rË   Ú	interfaceÚ
propertiess         r   Ú_display_missing_interfacesz)NetplanStatus._display_missing_interfacesÛ  s±   € Ø!×@Ñ@ÓBÐØ�z‰zˆÜ.7Ð8J×8PÑ8PÓ8RÐTUÓ.Vò 	Ñ*ˆEÑ*�I˜zà�{Š{˜tŸ{™{¨iÒ7Øà�K‰KÐK×RÑRØØØØØ—^‘^ FÓ+ð Só ô ð œÐ.Ó/Ó/¸¿»à—‘•ñ	r   c                 ó   — t        |«      ryt        |«      }t        j                  |d   «      D ]H  }|d   j	                  dj                  |«      d«      j	                  dj                  |«      d«      |d<   ŒJ t        |i |¤ŽS t        |i |¤ŽS )Nr   z[{}]rb   z[/{}])rN  rñ   Ú
MATCH_TAGSÚfindallÚreplacer²   rH   )r$   ÚargsÚkwargsrô   Útags        r   rI   zNetplanStatus.plain_printï  s�   € ÜˆtŒ9Ü�t“*ˆCÜ!×)Ñ)¨#¨a©&Ó1ò A�à˜Q™Ÿ™¨¯©°cÓ(:¸BÓ?ß '¡¨¯©°sÓ(;¸RÓ @ð �A’ðAô ˜#Ð( Ñ(Ð(Ü�dÐ%˜fÑ%Ð%r   Nr´   Útotalc                 ó  ‡ — ‰ j                  |«      ‰ _        d‰ _        d‰ _        d‰ _        ‰ j
                  rd‰ _        ‰ j
                  s‰ j                  |«       |D �cg c]  }|dk7  sŒ	|||   f‘Œ }}‰ j                  rt        t        ˆ fd„|«      «      }‰ j                  «       }t        |d«      D �]E  \  }\  }}	‰ j                  r‰ j                  |k7  rŒ&‰ j                  ||	«       ‰ j                  ||	«       ‰ j                  ||	«       ‰ j!                  ||	«       ‰ j#                  ||	«       ‰ j%                  ||	«       ‰ j'                  ||	«       ‰ j)                  ||	«       ‰ j+                  ||	«       ‰ j-                  ||	«       ‰ j/                  |	«       ‰ j                  r‰ j1                  |«      s�Œ
|t3        |«      k7  st3        |«      dkD  s�Œ(‰ j                  r�Œ6‰ j                  «        �ŒH ‰ j
                  r‰ j5                  «        |t3        |«      z
  }
|
dkD  r,‰ j
                  s ‰ j                  d	j7                  |
«      «       ‰ j
                  r‰ j                  s‰ j                  d
«       y y y c c}w )Nz[green]+[/green]z[red]-[/red]Ú18Ú20r¤   c                 ó,   •— ‰j                  | d   «      S )Nr   )r¢   )rº   r$   s    €r   r  z,NetplanStatus.pretty_print.<locals>.<lambda>  s   ø€ ¨t¯~©~¸aÀ¹dÓ/C€ r   rï   r   z8
{} inactive interfaces hidden. Use "--all" to show all.zn
Use [yellow]"--diff-only"[/yellow] to omit the information that is consistent between the system and Netplan.)rM   rL   rÔ   rß   r±   rG   r¼   rÕ   rñ   r  r    r³   r'   rØ   râ   rü   r  r  r,  r5  r;  rA  rH  rK  r¢   rN  rQ  r²   )r$   r´   rY  rJ   ÚkeyrP   rš   rË   r'   ÚifconfigÚhiddens   `          r   Úpretty_printzNetplanStatus.pretty_printù  s5  ø€ Ø×/Ñ/°Ó?ˆŒØ&ˆŒ	Ø#ˆŒ
ØˆŒØ�9Š9ð ˆDŒHð �yŠyØ×&Ñ& tÔ,ð 37ÖX¨3¸#ÐAWÓ:W�s˜D ™IÒ&ÐXˆ
ÐXØ�>Š>äœfÓ%CÀZÓPÓQˆJà!×@Ñ@ÓBÐÜ)2°:¸qÓ)Aó 	"Ñ%ˆEÑ%�F˜Hà�{Š{˜tŸ{™{¨fÒ4Øà×*Ñ*¨6°8Ô<Ø×%Ñ% f¨hÔ7Ø×&Ñ& v¨xÔ8Ø×'Ñ'¨°Ô9Ø×$Ñ$ V¨XÔ6Ø× Ñ  ¨Ô2Ø× Ñ  ¨Ô2Ø×Ñ˜v xÔ0Ø×Ñ˜f hÔ/Ø×!Ñ! &¨(Ô3Ø×)Ñ)¨(Ô3à—>’> T§^¡^°FÖ%;àœS ›_Ò,´Ð4FÓ0GÈ!Ô0KÐUY×U`ÔU`Ø—K‘K–Mð)	"ð, �9Š9Ø×,Ñ,Ô.àœ˜Z›Ñ(ˆØ�AŠ:˜dŸišiØ�K‰KÐS×ZÑZÐ[aÓbÔcà�9Š9˜TŸ^š^Ø�K‰Kð Bõð ,ˆ9ùòG Ys   Á!
JÁ,	Jc                 óœ  — | j                   rd| _        | j                  rd| _        t        | j                  | j                  «      }| j
                  j                  «       }| j                  rÒt        | j                  ¬«      }t        ||«      }|j                  | j                  «      | _        |dk(  r/t        t        j                  | j                  t        ¬«      «       y |dk(  rWt        j                  | j                  t        ¬«      }t        t!        j"                  t        j$                  |«      «      «       y |dk(  r-t        t        j                  |j'                  «       «      «       y |dk(  r-t        t!        j"                  |j'                  «       «      «       y | j)                  |j'                  «       |j*                  «       y )NT)ÚrootdirÚjson)ÚclsÚyaml)rÕ   rG   r!   r   r'   r²   Úlowerr   Úroot_dirr
   Úget_diffr"   rH   rd  Údumpsr	   rf  ÚdumpÚloadsÚget_datara  Únumber_of_interfaces)r$   rQ   Úoutput_formatrR   r&  Ú
serializeds         r   r3   zNetplanStatus.command0  s;  € à�>Š>ØˆDŒIð �9Š9ØˆDŒHä(¨¯©°d·h±hÓ?ˆàŸ™×)Ñ)Ó+ˆà�9Š9Ü.°t·}±}ÔEˆMÜ)¨,¸ÓFˆJà(×1Ñ1°$·+±+Ó>ˆDŒOà Ò&Ü”d—j‘j §¡´oÔFÔGØØ &Ò(Ü!ŸZ™Z¨¯©¼_ÔM�
Ü”d—i‘i¤§
¡
¨:Ó 6Ó7Ô8Øà˜FÒ"Ü”$—*‘*˜\×2Ñ2Ó4Ó5Õ6Ø˜fÒ$Ü”$—)‘)˜L×1Ñ1Ó3Ó4Õ5à×Ñ˜l×3Ñ3Ó5°|×7XÑ7XÕYr   )N)9r   r   r   r    r8   rM   ÚdictrV   ÚboolrZ   r2   rñ   r`   rc   re   rf   rh   rm   rp   rr   ru   rw   r{   r   r   r�   r…   r‰   rŒ   rŽ   r‘   r“   r–   r˜   r›   r�   r    r¢   r¼   rØ   râ   rü   r  r  r,  r5  r;  rA  rH  rK  rQ  rI   r   Úintra  r3   Ú__classcell__)r%   s   @r   r   r   2   s†  ø„ ô+òò(ð>¨Tó ð¸$ó ð°ð ¸Sð ÈCð ÐTXÐY\ÑT]ó ð°ð ¸Cð È3ð ÐSVó ð°ð ¸Cð È3ð ÐSVó ð°ð ¸Sð ÈCð ÐTXó ð]¸¸S¹	ó ]ðh¸¸c¹ó hði¸$¸s¹)ó iðf°T¸#±Yó fðe°D¸±Ió eð\¸ó \ðY°S¸Ñ5Fó YðX°C¸Ñ4Eó Xð`°4ó `ð`°4ó `ð[°só [ð\¸ó \ð]¸ó ]ð^¸#ó ^ðZ°có Zð[°só [ð^°d¸3±ió ^ð]°T¸#±Yó ]ð°ó ð
 4ó òð2)°ó )ðV¨3ó ð@B¨Có BðH+/¨Só +/òZ+,òZm&ò^ò>ò>ð>++ só ++òZòò(&ñ5 ð 5¨cð 5È4ó 5ön Zr   r   )Ú__doc__rd  ÚloggingÚreÚnetplan.netdefr   rf  rb   r   r[   r   r   r   r"   r	   r
   ÚcompilerS  rF   Úrich.consoler   Úrich.highlighterr   Ú
rich.themer   r   ÚImportErrorÚdebugÚNetplanCommandr   r   r   r   ú<module>r€     s˜   ðñ$ "ã Û Û 	Ý 'ã å ß ?Ñ ?ß :ð ˆR�Z‰ZÐ4Ó5€
Ø€ðJÝ$Ý1Ý ôÐ-ô ð €Kô
^Z�E×(Ñ(õ ^Zøð	 ò JØ€G‡M�MÐHÖIðJús   ÁA; Á;BÂB