
    O&i[                     R   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ ddl m!Z! 	 ddl"m#Z# n# e$$ r	 ddl%m#Z# Y nw xY wddl&m'Z' ddl(m)Z) ddl*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? dd
l@mZA ddlBmCZC ddlDmEZE ddlFmGZG ddlHmIZImJZJ erddlKmLZL ddlMmNZN  eEjO        eP          ZQddiZR G d  d!          ZSd"d#d$e)d%dfd&ZTd"d#d%eeUe	f         fd'ZVdS )(zSphinx component registry.    N)import_module)
MethodType)
TYPE_CHECKINGAnyCallableDictIteratorListOptionalTupleTypeUnion)nodes)	Publisher)Input)ElementNodeTextElement)Parser)	Directive)	Transform)entry_points)Builder)Config)RemovedInSphinx60WarningRemovedInSphinx70Warning)DomainIndexObjType)GenericObjectTarget)BuildEnvironment)ExtensionErrorSphinxErrorVersionRequirementError)	Extension)create_publisher)__)XRefRole)logging)prefixed_warnings)RoleFunctionTitleGetter)Sphinx)
Documenterzsphinxjp.themecorez1.2c                   4   e Zd ZdSdZdTdee         deddfdZdd	d
eddfdZ		 dUdd	d
ede
e         defdZdTdee         deddfdZdedefdZdedee         fdZ	 dTded
edee         deddf
dZ	 dTded
edeeef         deddf
dZ	 dTdedee         deddfdZddddg dfdededede
e         de
ee                  dedededdfd Z	 	 	 	 dVdededede
ee                  dededdfd!ZdTd"ed#ededdfd$ZdTd%ee          deddfd&Z!d#edee          fd'Z"de#eee          f         fd(Z$dd	d)ede fd*Z%d#ede
ee&                  fd+Z'	 dTd
ed,ee(j)                 deddfd-Z*d.ee+         d/e,eef         ddfd0Z-dedee(j)                 fd1Z.ded2e/de(j)        fd3Z0d4ee1         ddfd5Z2deee1                  fd6Z3d4ee1         ddfd7Z4deee1                  fd8Z5d9ed:ed;         ddfd<Z6d=ed>ee/ee/ge/f         ddfd?Z7d)ed@e/ddfdAZ8d)ed@e/ddfdBZ9d
edefdCZ:dTd
edDedEeddfdFZ;	 dWd.ee<         dGedHe
e=         deddf
dIZ>d
edJe,eef         dKe,eef         ddfdLZ?d
edMeddfdNZ@dd	dOeddfdPZAdd	de#eef         fdQZBdd	d#edeCfdRZDdS )XSphinxComponentRegistryreturnNc                 d   i | _         i | _        i | _        g | _        i | _        i | _        i | _        i | _        i | _        i | _	        i | _
        i | _        d| _        i | _        g | _        g | _        g | _        g | _        i | _        i | _        i | _        i | _        i | _        g | _        i | _        d S )Nper_page)autodoc_attrgettrsbuildersdocumenters	css_filesdomainsdomain_directivesdomain_indicesdomain_object_typesdomain_rolesenumerable_nodeshtml_inline_math_renderershtml_block_math_renderershtml_assets_policyhtml_themesjs_fileslatex_packageslatex_packages_after_hyperrefpost_transformssource_parserssource_inputssource_suffixtranslatorstranslation_handlers
transforms
publishersselfs    \/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/registry.py__init__z SphinxComponentRegistry.__init__5   s    NP 35 9; <> 13 =? =? CE  RT LN QS'OQ& (2 ,. ;= 68DF* 79 8: 68 .0 @B VX! 24 13    Fbuilderoverridec                 N   t                               d|           t          |d          st          t	          d          |z            |j        | j        v r=|s;t          t	          d          |j        | j        |j                 j        fz            || j        |j        <   d S )Nz[app] adding builder: %rnamez(Builder class %s has no "name" attributez(Builder %r already exists (in module %s))loggerdebughasattrr#   r(   rV   r6   
__module__)rO   rS   rT   s      rP   add_builderz#SphinxComponentRegistry.add_builder   s    /999w'' 	[ $N!O!ORY!YZZZ<4=((( $N!O!O"),gl0K0V!W"X Y Y Y&-gl###rR   appr.   rV   c                     |d S || j         vrit          d          }	 ||         }n2# t          $ r%}t          t	          d          |z            |d }~ww xY w|                     ||j                   d S d S )Nzsphinx.builders)groupz?Builder name %s not registered or available through entry point)r6   r   KeyErrorr$   r(   load_extensionmodule)rO   r\   rV   builder_entry_pointsentry_pointexcs         rP   preload_builderz'SphinxComponentRegistry.preload_builder   s    <Ft}$$#/6G#H#H#H N248 N N N!" &< #= #=?C#D E EJMNN [%788888 %$s   ( 
A AAenvc                 @   || j         vrt          t          d          |z            	  | j         |         ||          S # t          $ rR t	          j        d| dt          d            | j         |         |          }||                    |           |cY S w xY w)NzBuilder name %s not registeredzThe custom builder z defines a custom __init__ method without the 'env'argument. Report this bug to the developers of your custom builder, this is likely not a issue with Sphinx. The 'env' argument will be required from Sphinx 7.   )
stacklevel)r6   r$   r(   	TypeErrorwarningswarnr   set_environment)rO   r\   rV   rf   rS   s        rP   create_builderz&SphinxComponentRegistry.create_builder   s    t}$$b!ABBTIJJJ	&4=&sC000 		 		 		M"d " " " $<	K K K K
 *dmD)#..G'',,,NNN		s   A ABBdomainc                     t                               d|           |j        | j        v r&|s$t	          t          d          |j        z            || j        |j        <   d S )Nz[app] adding domain: %rzdomain %s already registered)rW   rX   rV   r9   r#   r(   )rO   ro   rT   s      rP   
add_domainz"SphinxComponentRegistry.add_domain   s]    .777;$,&&x& $B!C!Cfk!QRRR$*V[!!!rR   c                     || j         v S N)r9   )rO   ro   s     rP   
has_domainz"SphinxComponentRegistry.has_domain   s    %%rR   c              #   P  K   | j                                         D ]} ||          }|j                            | j                            |j        i                      |j                            | j                            |j        i                      |j	        
                    | j                            |j        g                      | j                            |j        i                                           D ]\  }}|                    ||           |V  
d S rs   )r9   values
directivesupdater:   getrV   rolesr=   indicesextendr;   r<   itemsadd_object_type)rO   rf   DomainClassro   rV   objtypes         rP   create_domainsz&SphinxComponentRegistry.create_domains   s     <..00 
	 
	K [%%F $$T%;%?%?R%P%PQQQL 1 5 5fk2 F FGGGN!!$"5"9"9&+r"J"JKKK!%!9!=!=fk2!N!N!T!T!V!V 6 6g&&tW5555LLLL
	 
	rR   clsc                     t                               d|||f           || j        vrt          t	          d          |z            | j                            |i           }||v r#|s!t          t	          d          ||fz            |||<   d S )Nz$[app] adding directive to domain: %rdomain %s not yet registeredz3The %r directive is already registered to domain %s)rW   rX   r9   r#   r(   r:   
setdefault)rO   ro   rV   r   rT   rw   s         rP   add_directive_to_domainz/SphinxComponentRegistry.add_directive_to_domain   s    ;fdC=PQQQ%% $B!C!Cf!LMMM+66vrBB
:h $Y!Z!Z"&"0 1 1 1
4rR   rolec                     t                               d|||f           || j        vrt          t	          d          |z            | j                            |i           }||v r#|s!t          t	          d          ||fz            |||<   d S )Nz[app] adding role to domain: %rr   z.The %r role is already registered to domain %s)rW   rX   r9   r#   r(   r=   r   )rO   ro   rV   r   rT   rz   s         rP   add_role_to_domainz*SphinxComponentRegistry.add_role_to_domain   s     	6t8LMMM%% $B!C!Cf!LMMM!,,VR885=== $T!U!U"&"0 1 1 1drR   indexc                 H   t                               d||f           || j        vrt          t	          d          |z            | j                            |g           }||v r(|s&t          t	          d          |j        |fz            |                    |           d S )Nz [app] adding index to domain: %rr   z/The %r index is already registered to domain %s)	rW   rX   r9   r#   r(   r;   r   rV   append)rO   ro   r   rT   r{   s        rP   add_index_to_domainz+SphinxComponentRegistry.add_index_to_domain   s    7&%III%% $B!C!Cf!LMMM%00<<GH $U!V!V"'*f!5"6 7 7 7urR    directivenamerolenameindextemplate
parse_noderef_nodeclassobjnamedoc_field_typesc	           
         t                               d|||||||f           t          |t          t          f|t          |          |d          }	|                     d||	           |                     d|t          |                     | j	        
                    di           }
||
v r!|st          t          d          |z            t          |p||          |
|<   d S )Nz[app] adding object type: %r)r   r   r   stdinnernodeclassz(The %r object_type is already registered)rW   rX   typer    objectstaticmethodr   r   r)   r<   r   r#   r(   r   )rO   r   r   r   r   r   r   r   rT   	directiveobject_typess              rP   r~   z'SphinxComponentRegistry.add_object_type   s    	3#X}j#Wo?	@ 	@ 	@
 '0+8(4Z(@(@-<> >? ?	 	$$UM9EEEx1W1W1WXXX/::5"EEL((( $N!O!O!."/ 0 0 0&-g.F&Q&Q]###rR   c                    t                               d|||||f           t          |t          t          fd|i          }|                     d||           |                     d|t          |                     | j        	                    di           }||v r!|st          t          d          |z            t          |p||          ||<   d S )Nz[app] adding crossref type: %rr   r   r   z*The %r crossref_type is already registered)rW   rX   r   r!   r   r   r   r)   r<   r   r#   r(   r   )	rO   r   r   r   r   r   rT   r   r   s	            rP   add_crossref_typez)SphinxComponentRegistry.add_crossref_type  s     	5#X}mWU	W 	W 	W  &))=9; ;	 	$$UM9EEEx1W1W1WXXX/::5"EEL((( $P!Q!Q!."/ 0 0 0&-g.F&Q&Q]###rR   suffixfiletypec                     t                               d||           || j        v r!|st          t	          d          |z            || j        |<   d S )Nz"[app] adding source_suffix: %r, %rz&source_suffix %r is already registered)rW   rX   rI   r#   r(   )rO   r   r   rT   s       rP   add_source_suffixz)SphinxComponentRegistry.add_source_suffix   s\    968LLLT'''' $L!M!MPV!VWWW)1Dv&&&rR   parserc                     t                               d|           |j        D ]6}|| j        v r!|st	          t          d          |z            || j        |<   7d S )Nz%[app] adding search source_parser: %rz*source_parser for %r is already registered)rW   rX   	supportedrG   r#   r(   )rO   r   rT   r   s       rP   add_source_parserz)SphinxComponentRegistry.add_source_parser'  s    <fEEE ( 	7 	7H4...x.$R(T%U%U%-&. / / / 17#H--	7 	7rR   c                     	 | j         |         S # t          $ r%}t          t          d          |z            |d }~ww xY w)Nz#Source parser for %s not registered)rG   r_   r$   r(   )rO   r   rd   s      rP   get_source_parserz)SphinxComponentRegistry.get_source_parser2  sX    	]&x00 	] 	] 	]b!FGG(RSSY\\	]s    
> 9>c                     | j         S rs   )rG   rN   s    rP   get_source_parsersz*SphinxComponentRegistry.get_source_parsers8  s    ""rR   filenamec                     |                      |          } |            }t          |t                    r|                    |           |S rs   )r   
isinstanceSphinxParserset_application)rO   r\   r   parser_classr   s        rP   create_source_parserz,SphinxComponentRegistry.create_source_parser;  sK    --h77fl++ 	(""3'''rR   c                     t          j        dt                     	 | j        |         S # t          $ r# 	 | j        d         cY S # t          $ r Y Y d S w xY ww xY w)Nz9SphinxComponentRegistry.get_source_input() is deprecated.*)rk   rl   r   rH   r_   )rO   r   s     rP   get_source_inputz(SphinxComponentRegistry.get_source_inputB  s    Q.	0 	0 	0	%h// 	 	 	)#....   ttt		s,   ) 
AA A
AAAA
translatorc                     t                               d|           || j        v r!|st          t	          d          |z            || j        |<   d S )Nz.[app] Change of translator for the %s builder.z Translator for %r already exists)rW   rX   rJ   r#   r(   )rO   rV   r   rT   s       rP   add_translatorz&SphinxComponentRegistry.add_translatorO  sY    EtLLL4###H# $F!G!G$!NOOO!+rR   nodekwargsc                 4   t                               d||           |                                D ]f\  }}| j                            |i           }	 |\  }}||f||j        <   3# t          $ r'}t          t          d          ||fz            |d }~ww xY wd S )Nz)[app] adding translation_handlers: %r, %rzEkwargs for add_node() must be a (visit, depart) function tuple: %r=%r)	rW   rX   r}   rK   r   __name__
ValueErrorr#   r(   )	rO   r   r   builder_namehandlersrK   visitdepartrd   s	            rP   add_translation_handlersz0SphinxComponentRegistry.add_translation_handlersV  s    @$OOO&,llnn 		 		"L(#'#<#G#GVX#Y#Y  (v7<fo$T]33   $ / 0 03?2JK  		 		s   A$$
B."BBc                 L    | j                             |j        |j                  S rs   )rJ   ry   rV   default_translator_class)rO   rS   s     rP   get_translator_classz,SphinxComponentRegistry.get_translator_classd  s*    ##GL$+$DF F 	FrR   argsc           	         |                      |          }|sJ d|j        z               || }| j                            |j        d           }| | j                            |j        i           }|                                D ]N\  }\  }}t          |d|z   t          ||                     |r"t          |d|z   t          ||                     O|S )Nztranslator not found for %svisit_depart_)r   rV   rK   ry   formatr}   setattrr   )	rO   rS   r   translator_classr   r   rV   r   r   s	            rP   create_translatorz)SphinxComponentRegistry.create_translatorh  s    44W==MM!>!MMMM%%t,
 ,00tDD044W^RHHH%-^^%5%5 	V 	V!D/5&J4E:1N1NOOO V
I$4j6T6TUUUrR   	transformc                 p    t                               d|           | j                            |           d S )Nz[app] adding transform: %r)rW   rX   rL   r   rO   r   s     rP   add_transformz%SphinxComponentRegistry.add_transformz  s3    19===y)))))rR   c                     | j         S rs   )rL   rN   s    rP   get_transformsz&SphinxComponentRegistry.get_transforms~  s
    rR   c                 p    t                               d|           | j                            |           d S )Nz[app] adding post transform: %r)rW   rX   rF   r   r   s     rP   add_post_transformz*SphinxComponentRegistry.add_post_transform  s4    6	BBB##I.....rR   c                     | j         S rs   )rF   rN   s    rP   get_post_transformsz+SphinxComponentRegistry.get_post_transforms  s    ##rR   r   
documenterr/   c                     || j         |<   d S rs   )r7   )rO   r   r   s      rP   add_documenterz&SphinxComponentRegistry.add_documenter  s    $.!!!rR   typ
attrgetterc                     || j         |<   d S rs   )r5   )rO   r   r   s      rP   add_autodoc_attrgetterz.SphinxComponentRegistry.add_autodoc_attrgetter  s    '1$$$rR   
attributesc                 >    | j                             ||f           d S rs   )r8   r   rO   r   r   s      rP   add_css_filesz%SphinxComponentRegistry.add_css_files  s#    x455555rR   c                 v    t                               d||           | j                            ||f           d S )Nz[app] adding js_file: %r, %r)rW   rX   rC   r   r   s      rP   add_js_filez#SphinxComponentRegistry.add_js_file  s:    3XzJJJh
344444rR   c                 X    | j         | j        z   }t          fd|D                       S )Nc                 ,    g | ]}|d          k    |S )r    ).0xrV   s     rP   
<listcomp>z=SphinxComponentRegistry.has_latex_package.<locals>.<listcomp>  s"    9991AaDDLLQLLLrR   )rD   rE   bool)rO   rV   packagess    ` rP   has_latex_packagez)SphinxComponentRegistry.has_latex_package  s6    &)KK9999999:::rR   optionsafter_hyperrefc                    |                      |          rt                              d|           t                              d|           |r| j                            ||f           d S | j                            ||f           d S )Nz#latex package '%s' already includedz[app] adding latex package: %r)r   rW   warningrX   rE   r   rD   )rO   rV   r   r   s       rP   add_latex_packagez)SphinxComponentRegistry.add_latex_package  s    !!$'' 	HNN@$GGG5t<<< 	8.55tWoFFFFF&&g77777rR   figtypetitle_getterc                     t                               d|||           || j        v r!|st          t	          d          |z            ||f| j        |<   d S )Nz*[app] adding enumerable node: (%r, %r, %r)z%enumerable_node %r already registered)rW   rX   r>   r#   r(   )rO   r   r   r   rT   s        rP   add_enumerable_nodez+SphinxComponentRegistry.add_enumerable_node  se     	A4R^___4(((( $K!L!Lt!STTT'.&=d###rR   inline_renderersblock_renderersc                     t                               d|||           || j        v rt          t	          d          |z            || j        |<   || j        |<   d S )Nz+[app] adding html_math_renderer: %s, %r, %rz&math renderer %s is already registered)rW   rX   r?   r#   r(   r@   )rO   rV   r   r   s       rP   add_html_math_rendererz.SphinxComponentRegistry.add_html_math_renderer  sp     	B+_	> 	> 	>4222 $L!M!MPT!TUUU0@'-/>&t,,,rR   
theme_pathc                     || j         |<   d S rs   )rB   )rO   rV   r   s      rP   add_html_themez&SphinxComponentRegistry.add_html_theme  s    !+rR   extnamec                    ||j         v rdS |t          v r6t                              t	          d          |t          |                    dS t	          d          |z  }t          |          5  	 t          |          }nn# t          $ ra}t                              t	          d          t          j
                    z              t          t	          d          |z  |          |d}~ww xY wt          |dd          }|+t                              t	          d          |           i }nA	  ||          }n4# t          $ r'}t          t	          d          ||fz            |d}~ww xY w|i }n?t          |t                    s*t                              t	          d	          |           i }t!          ||fi ||j         |<   ddd           dS # 1 swxY w Y   dS )
zLoad a Sphinx extension.Nz\the extension %r was already merged with Sphinx since version %s; this extension is ignored.zwhile setting up extension %s:zOriginal exception:
zCould not import extension %ssetupzMextension %r has no setup() function; is it really a Sphinx extension module?zpThe %s extension used by this project needs at least Sphinx v%s; it therefore cannot be built with this version.zuextension %r returned an unsupported object from its setup() function; it should return None or a metadata dictionary)
extensionsEXTENSION_BLACKLISTrW   r   r(   r+   r   ImportErrorverbose	traceback
format_excr#   getattrr%   r   dictr&   )rO   r\   r   prefixmoderrr  metadatas           rP   r`   z&SphinxComponentRegistry.load_extension  s   cn$$F)))NN2 G H H"$7$@B B B F 455?v&&  	J  	J3#G,, 3 3 3r"9::Y=Q=S=SSTTT$R(G%H%H7%R%(* */233
 C$//E}r #?  @  @AHJ J J+-$uSzzHH.   1 & ' '*138  	 $// r #8  9  9:AC C C &/&I&I&I&ICN7#A 	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	Js]   ,G.A>=G>
C)AC$$C))AG+D76G7
E("E##E((AGGGc                 b    ddl m} d |j                                        D             }||d<   |S )Nr   )ENV_VERSIONc                 h    i | ]/}|j                             d           |j        |j         d          0S )env_version)r  ry   rV   )r   exts     rP   
<dictcomp>z:SphinxComponentRegistry.get_envversion.<locals>.<dictcomp>  sG     : : :))-88:ch] ; : : :rR   sphinx)sphinx.environmentr  r  rv   )rO   r\   r  
envversions       rP   get_envversionz&SphinxComponentRegistry.get_envversion  sO    222222: :s~G\G\G^G^ : : :
*
8rR   c                 v    	 | j         |         S # t          $ r Y nw xY wt          ||          }|| j         |<   |S rs   )rM   r_   r'   )rO   r\   r   	publishers       rP   get_publisherz%SphinxComponentRegistry.get_publisher  sU    	?8,, 	 	 	D	$S(33	$-!s    
)r2   N)Frs   )r   Nr   F)NF)Er   rZ   __qualname__rQ   r   r   r   r[   strre   r   r"   rn   r   rq   rt   r	   r   r   r   r   r,   r)   r   r   r   r   r   r
   r~   r   r   r   r   r   r   r   r   r   r   r   NodeVisitorr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   r   r   r   r`   r  r   r  r   rR   rP   r1   r1   4   s$       N3 N3 N3 N3`. .4= .D .T . . . .98 93 94 9 9 9 9 :> ( # $%56BI   $+ +f + +$ + + + +& & & & & &"2 x7G     HM
 
c 
 
%))_
@D
QU
 
 
 
 RW
 
 
C 
!&|X'=!>
JN
 $
 
 
 
 .3	 	# 	d5k 	&*	7;	 	 	 	  )-59 "R RR R 	R
 X&R  [ 12R R R R 
R R R RF  59R RR R 	R
  [ 12R R R 
R R R R42 2 2s 2d 2W[ 2 2 2 2	7 	7V 	7 	7QU 	7 	7 	7 	7]# ]$v, ] ] ] ]#Dd6l):$; # # # # C F     $u+1F     )., ,3 ,D9J4K ,!%,26, , , ,T'] +081C+DIM   FG FU=N8O F F F F  AR    $*tI *4 * * * *T)_ 5    /DO / / / / /$T$y/%: $ $ $ $/c /tL7I /d / / / /2$ 2+3S#sOS4H+I2NR2 2 2 26c 6 6 6 6 6 65C 5s 5t 5 5 5 5;c ;d ; ; ; ;8 8c 8C 8 8Z^ 8 8 8 8 FK		> 	>4j	> 	> {+		> ?C		>
 
	> 	> 	> 	>	?3 	?16x7I1J	?05h6H0I	?NR	? 	? 	? 	?,3 ,C ,D , , , ,,J( ,JS ,JT ,J ,J ,J ,J\( tCH~     S Y      rR   r1   r\   r.   configr2   c                     | j         j                                        D ]D\  }}|| j        j        vr|| j        j        |<   #| j        j        |         || j        j        |<   E| j        j        | j         _        dS )zDMerge any user-specified source_suffix with any added by extensions.N)registryrI   r}   r  )r\   r  r   r   s       rP   merge_source_suffixr!    s    L6<<>> 8 8111/7CJ$V,,Z%f-5 08CJ$V, "%!9CLrR   c                 H    |                      dt          d           ddddS )Nzconfig-initedi   )prioritybuiltinT)versionparallel_read_safeparallel_write_safe)connectr!  )r\   s    rP   r  r  
  s5    KK!4sKCCC "#  rR   )W__doc__r  rk   	importlibr   typesr   typingr   r   r   r   r	   r
   r   r   r   r   docutilsr   docutils.corer   docutils.ior   docutils.nodesr   r   r   docutils.parsersr   docutils.parsers.rstr   docutils.transformsr   importlib_metadatar   r  importlib.metadatasphinx.buildersr   sphinx.configr   sphinx.deprecationr   r   sphinx.domainsr   r   r   sphinx.domains.stdr    r!   r  r"   sphinx.errorsr#   r$   r%   sphinx.extensionr&   	sphinx.ior'   sphinx.localer(   sphinx.parsersr   sphinx.rolesr)   sphinx.utilr*   sphinx.util.loggingr+   sphinx.util.typingr,   r-   sphinx.applicationr.   sphinx.ext.autodocr/   	getLoggerr   rW   r  r1   r!  r  r  r   rR   rP   <module>rG     s            # # # # # #                                    # # # # # #       5 5 5 5 5 5 5 5 5 5 # # # # # # * * * * * * ) ) ) ) ) )0/////// 0 0 0////////0 $ # # # # #             Q Q Q Q Q Q Q Q 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 / / / / / / N N N N N N N N N N & & & & & & & & & & & &       1 1 1 1 1 1 ! ! ! ! ! !       1 1 1 1 1 1 8 8 8 8 8 8 8 8 .))))))------		8	$	$
 % 
E E E E E E E EP:X :v :$ : : : :x DcN      s   A% %A32A3