
    @6ig              
       X   d dl mZ d dlZej                  j                  dk  reefZneZeZ	dZ
dZd ZdZdZd	Zd
 ZeZdZd Zd Zd Zd Zd Zd dlZd dlZd dlZd dlZ ej:                  d      Zdddddddddd	Zd Z  G d de!      Z" G d d e!      Z#e$d!k(  rd dl%m&Z&  e&jL                         Z'd dlZ e(ejR                  d"         Z*e*jW                         Z, e#e'      Z-e-j]                  e,ejR                  d"          	 e-j_                         Z0e0sy e1e-jd                  e0       'y)#    )
generatorsN   )
CPP_IDCPP_INTEGER	CPP_FLOAT
CPP_STRINGCPP_CHARCPP_WSCPP_COMMENT1CPP_COMMENT2	CPP_POUND
CPP_DPOUNDz+-*/%|&~^<>=!?()[]{}.,;:\'"c                 v    | j                   xj                  | j                  j                  d      z  c_        | S )z\s+
lexerlinenovaluecountts    J/home/azureuser/techstart-app/venv/lib/python3.12/site-packages/ply/cpp.pyt_CPP_WSr   !   &    GGNNaggmmD))NH    z\#z\#\#z[A-Za-z_][\w_]*c                     | S )zA(((((0x)|(0X))[0-9a-fA-F]+)|(\d+))([uU][lL]|[lL][uU]|[uU]|[lL])?) r   s    r   r   r   -   s    Hr   z?((\d+)(\.\d+)(e(\+|-)?(\d+))? | (\d+)e(\+|-)?(\d+))([lL]|[fF])?c                 v    | j                   xj                  | j                  j                  d      z  c_        | S )z\"([^\\\n]|(\\(.|\n)))*?\"r   r   r   s    r   t_CPP_STRINGr   7   r   r   c                 v    | j                   xj                  | j                  j                  d      z  c_        | S )z(L)?\'([^\\\n]|(\\(.|\n)))*?\'r   r   r   s    r   
t_CPP_CHARr!   =   r   r   c                     | j                   j                  d      }| j                  xj                  |z  c_        d| _        |rd|z  | _         | S d| _         | S )z(/\*(.|\n)*?\*/)r   r
    )r   r   r   r   type)r   ncrs     r   t_CPP_COMMENT1r&   C   sL    
''--
CGGNNcNAFsqwH 9<qwHr   c                 "    d| _         d| _        | S )z(//.*?(\n|$))r
   r   )r$   r   r   s    r   t_CPP_COMMENT2r(   L   s     AFqwHr   c                     | j                   d   | _        | j                   d   | _         | j                  j                  d       | S Nr      )r   r$   r   skipr   s    r   t_errorr-   R   s4    WWQZAFggajAGGGLLOHr   z\?\?[=/\'\(\)\!<>\-]#\^[]|{}~)	=/'()!<>-c                 0    t         j                  d |       S )Nc                 6    t         | j                         d      S N)_trigraph_repgroup)gs    r   <lambda>ztrigraph.<locals>.<lambda>|   s    }QWWYr]'C r   )_trigraph_patsub)inputs    r   trigraphrK   {   s    CEJJr   c                       e Zd ZddZy)MacroNc                 b    || _         || _        || _        || _        |r
|d   | _        d | _        y rB   )namer   arglistvariadicvarargsource)selfrO   r   rP   rQ   s        r   __init__zMacro.__init__   s3    	
 !"+DKr   )NF)__name__
__module____qualname__rU   r   r   r   rM   rM      s    r   rM   c                       e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd ZddZd ZddZd Zd Zd Zdi fdZd Zy)PreprocessorNc                 V   |t         j                  }|| _        i | _        g | _        g | _        | j                          t        j                         }| j                  dt        j                  d|      z         | j                  dt        j                  d|      z         d | _
        y )Nz__DATE__ "%s"z%b %d %Yz__TIME__ "%s"z%H:%M:%S)lexr   macrospath	temp_pathlexprobetime	localtimedefinestrftimeparser)rT   r   tms      r   rU   zPreprocessor.__init__   s    =IIE
	 	^^%j(DDE%j(DDEr   c                     g }| j                   j                  |       	 | j                   j                         }|s	 |S |j                  |       1N)r   rJ   tokenappend)rT   texttokenstoks       r   tokenizezPreprocessor.tokenize   sK    

**""$C MM# r   c                 &    t        d|||fz         y )Nz%s:%d %s)print)rT   filelinemsgs       r   errorzPreprocessor.error   s    jDc?*+r   c                 (   | j                   j                  d       | j                   j                         }|r|j                  dk7  rt	        d       n|j
                  | _        | j                   j                  d       | j                   j                         }|rt        |j                        dk7  rt	        d       n+|j
                  | _        t        |j                        | _	        | j                   j                  d       | j                   j                         }|r|j                  dk7  rt	        d       n|j
                  | _
        | j                   j                  d       | j                   j                         }|r|j                  dk7  rd | _        n|j
                  | _        | j                   j                  d	       | j                   j                         }|r|j                  d	k7  rd | _        t	        d
       n|j
                  | _        | j                  | j                  f| _        g d}|D ]W  }| j                   j                  |       | j                   j                         }|r|j                  |k7  sJt	        d|z         Y y )N
identifierz"Couldn't determine identifier type12345i90  zCouldn't determine integer typez
"filename"zCouldn't determine string typez  r   z%Couldn't determine token for newlines)	r=   r>   r.   ##r/   r:   r;   ,.z,Unable to lex '%s' required for preprocessor)r   rJ   ri   r   rp   r$   t_IDint	t_INTEGERt_INTEGER_TYPEt_STRINGt_SPACE	t_NEWLINEt_WS)rT   rm   charscs       r   r`   zPreprocessor.lexprobe   s    	

&jj cii</67DI 	

!jj c#))n-34 XXDN"&syy/D 	

(jj cii>123HHDM 	

jj cii4'DL88DL 	

jj cii4'!DN9: XXDN\\4>>2	 9 	JAJJQ**""$C#))q.DqHI		Jr   c                 :    | j                   j                  |       y rh   )r^   rj   )rT   r^   s     r   add_pathzPreprocessor.add_path  s    		r   c              #     K   | j                   j                         }|j                         D cg c]  }|j                          }}t	        t        |            D ]j  }|dz   }||   j                  d      s|t        |      k  s,||   d d ||   z   ||<   d||<   |dz  }||   j                  d      s\|t        |      k  r?l dj                  |      } |j                  |       d|_	        g }	  |j                         }|sn>|j                  |       |j                  | j                  v rd|j                  v r| g }R|r| y y c c}w w)Nr+   r/   rC    r   )r   clone
splitlinesrstripxrangelenendswithjoinrJ   r   ri   rj   r$   r   r   )	rT   rJ   r\   xlinesijcurrent_linerm   s	            r   group_lineszPreprocessor.group_lines  sQ    jj %*%5%5%7888E
# 	A!A(##D)q3u:~ 8CR=q1aaQ (##D)q3u:~	 		% 		%
#))+C$xx499$):""!   - 9s)   -EE2E9E/E8EBEc                 |   d}|t        |      k  rJ||   j                  | j                  v r/|dz  }|t        |      k  r||   j                  | j                  v r/|d |= t        |      dz
  }|dk\  rA||   j                  | j                  v r&|dz  }|dk\  r||   j                  | j                  v r&||dz   d = |S r*   )r   r$   r   )rT   rl   r   s      r   
tokenstripzPreprocessor.tokenstrip:  s    #f+o&)..DII"=FA #f+o&)..DII"=2A2JKM1f4994FA 1f49941Q34Lr   c                    g }g }g }d}t        |      }d}||k  rA||   j                  | j                  v r&|dz  }||k  r||   j                  | j                  v r&||k  r'||   j                  dk(  r|j	                  |dz          n/| j                  | j                  |d   j                  d       dg g fS |dz  }||k  r||   }|j                  dk(  r|j	                  |       |dz  }n|j                  dk(  rW|dz  }|dk(  r;|r1|j	                  | j                  |             |j	                  |       |dz   ||fS |j	                  |       n\|j                  dk(  r<|dk(  r7|j	                  | j                  |             |j	                  |dz          g }n|j	                  |       |dz  }||k  r| j                  | j                  |d   j                  d       dg g fS )	Nr+   r   r:   zMissing '(' in macro argumentsr;   ry   rC   zMissing ')' in macro arguments)	r   r$   r   r   rj   rt   rS   r   r   )	rT   	tokenlistargs	positionscurrent_argnestingtokenlenr   r   s	            r   collect_argszPreprocessor.collect_argsV  s   	y> 8|)A,"3"3tyy"@FA 8|)A,"3"3tyy"@ Ly|11S8QqS!JJt{{9Q<#6#67WXb"9	Q(l!Aww#~""1%1C1a<"DOOK$@A!((+Q3tI--""1%CGqLDOOK89  1% ""1%FA' (l, 	

4;;y}334TU"Rxr   c                    g |_         g |_        g |_        d}|t        |j                        k  r|j                  |   j
                  | j                  k(  r|j                  |   j                  |j                  v r|j                  j                  |j                  |   j                        }|dkD  r|j                  |dz
     j                  dk(  rt        j                  |j                  |         |j                  |<   | j                  |j                  |   _        |j                  |dz
  = |j                  j                  ||dz
  f       ;|dkD  rW|j                  |dz
     j                  dk(  r8|j                   j                  d||dz
  f       |j                  |dz
  = |dz  }|dz   t        |j                        k  rO|j                  |dz      j                  dk(  r0|j                   j                  d||f       |j                  |dz   = |j                   j                  d||f       n|j                  |   j                  dk(  r|j                  r|dkD  r|j                  |dz
     j                  dk(  r|dz   t        |j                        k  rp|j                  |dz      j
                  | j                  k(  rG|j                  |dz      j                  |j                  k(  r|j                  j                  |dz
         |dz  }|t        |j                        k  r|j                   j                  d d	
       y )Nr   r+   r.   rx   r   ery   c                     | d   S )N   r   )r   s    r   rG   z,Preprocessor.macro_prescan.<locals>.<lambda>  s
    qt r   T)keyreverse)patch	str_patchvar_comma_patchr   r   r$   r{   rP   indexcopyr   rj   rQ   rR   sort)rT   macror   argnums       r   macro_prescanzPreprocessor.macro_prescan  s    "#ekk""{{1~""dii/EKKN4H4HEMM4Y,,U[[^-A-ABq5U[[1-33s:%)YYu{{1~%>EKKN*.--EKKN'AaC(OO**F1Q3<8!eAaC 0 6 6$ >KK&&F1Q3'78AaC(FAsc%++..5;;qs3C3I3IT3QKK&&F1~6AE* KK&&F1~6Q%%->>q1u5;;qs3C3I3IS3PA#U[[!11AaC8H8M8MQUQZQZ8ZQqS)//5<<?))0015FA9 #ekk"": 	^D9r   c                    |j                   D cg c]  }t        j                  |       }}i }|j                  D ]s  \  }}||vrBddj                  ||   D cg c]  }|j                    c}      z  j	                  dd      ||<   t        j                  ||         ||<   ||   ||   _         u d}	|j
                  r|d   s|j                  D ]	  }d ||<   d}	 i }
|j                  D ]C  \  }}}|dk(  r||   |||d	z    |d
k(  s||
vr| j                  ||         |
|<   |
|   |||d	z    E |	r|D cg c]  }|s|	 }}|S c c}w c c}w c c}w )Nz"%s"r   r/   z\\FrC   Tr   r+   r   )	r   r   r   r   replacerQ   r   r   expand_macros)rT   r   r   _xrepstr_expansionr   r   r   comma_patchexpandedptype_is                r   macro_expand_argszPreprocessor.macro_expand_args  s   ',{{3tyy}33  	1IFA]*)/"''DQWL:Yq177:Y2Z)Z(c(cdhio(pf%YYs1v&CF(0CFL		1 >>$r(** #A"#  % 	.E61|!&\Aac
#)'+'9'9$v,'GHV$%f-Aac
	.  #*"r2*C*
K 4 ;Z8 +s   EE6E>Ec           	         |i }d}|t        |      k  r9||   }|j                  | j                  k(  r|j                  | j                  v r|j                  |vrd||j                  <   | j                  |j                     }|j
                  sm| j                  |j                  D cg c]  }t        j                  |       c}|      }|D ]  }|j                  |_         ||||dz    |t        |      z  }n|dz   }	|	t        |      k  rJ||	   j                  | j                  v r/|	dz  }	|	t        |      k  r||	   j                  | j                  v r/|	t        |      k  r|||	   j                  dk(  ri| j                  ||	d        \  }
}}|j                  sqt        |      t        |j
                        k7  rP| j                  | j                  |j                  d|j                  t        |j
                        fz         |	|
z   }n|j                  rt        |      t        |j
                        dz
  k  rt        |j
                        dkD  rM| j                  | j                  |j                  d|j                  t        |j
                        dz
  fz         nL| j                  | j                  |j                  d|j                  t        |j
                        dz
  fz         |	|
z   }n|j                  rt        |      t        |j
                        dz
  k(  r|j                  g        nX||	|t        |j
                        dz
     z   |	|
z   dz
   |t        |j
                        dz
  <   |t        |j
                        d = | j                  ||      }| j                  ||      }|D ]  }|j                  |_         ||||	|
z    |t        |      z  }n|dz  }||j                  = |j                  d	k(  r1| j                   |_        | j#                  |j                        |_        |dz  }|t        |      k  r9|S c c}w )
Nr   Tr+   r:   zMacro %s requires %d argumentsr   z(Macro %s must have at least %d argumentsz'Macro %s must have at least %d argument__LINE__)r   r$   r{   r   r]   rP   r   r   r   r   r   rQ   rt   rS   rj   r   r}   r~   )rT   rl   r   r   r   mr   exr   r   tokcountr   r   r   rs                  r   r   zPreprocessor.expand_macros  s   H#f+oq	Avv"77dkk)aggX.E(,HQWW%AGG,A99!//0Q220QRZ[!# 0A'(xxAH0(*q1SW E#f+o&)..DII2MFA  #f+o&)..DII2Ms6{?vay#/E6:6G6Gqr
6S3HT)#$::#d)AII2N $

4;;qxx@`dedkdklopqpypylzc{@{ |$%L!"D	C		N1<L0L#&qyy>A#5$(JJt{{188Dnrsryry{~  @A  @I  @I  |J  KL  |L  rM  EM  %N$(JJt{{188Dmqrqxqxz}~  H  H  {I  JK  {K  qL  EL  %M$%L#$::'*4yC		N14D'D(,BAG)TWXYXaXaTbcdTdJeHefghpfpqrfrAsS^A-=(>,0QYY,A '+&<&<Qt&D&*&8&8X&F), !8A/0xxAH!87:q8 4 !SX
 FA )WW
*!^^AF"11!((;AGFAu #f+ov c 1Rs   *Qc                 x   d}|t        |      k  rZ||   j                  | j                  k(  r(||   j                  dk(  r|dz   }d}d}|t        |      k  r||   j                  | j                  v r|dz  }/||   j                  | j                  k(  r#||   j                  | j
                  v rd}nd}|sSnf||   j                  dk(  rd}n=||   j                  d	k(  rn>| j                  | j                  ||   j                  d
       |dz  }|t        |      k  r| j                  ||   _        | j                  |      ||   _        ||dz   |dz   = |dz  }|t        |      k  rZ| j                  |      }t        |      D ]  \  }}|j                  | j                  k(  rFt        j                  |      ||<   | j                  ||   _        | j                  d      ||   _        e|j                  | j                  k(  st        j                  |      ||<   t        ||   j                        ||   _        ||   j                  d   dvs||   j                  d d ||   _        ||   j                  d   dvr/ dj                  |D cg c]  }t        |j                         c}      }|j!                  dd      }|j!                  dd      }|j!                  dd      }	 t#        |      }|S c c}w # t$        $ r0 | j                  | j                  |d   j                  d       d}Y |S w xY w)Nr   definedr+   F0L1Lr:   Tr;   zMalformed defined()rC   0123456789abcdefABCDEFr   z&&z and z||z or r<   z not zCouldn't evaluate expression)r   r$   r{   r   r   r]   rt   rS   r   r}   r~   r   	enumerater   strr   r   eval	Exception)	rT   rl   r   r   	needparenresultr   r   exprs	            r   evalexprzPreprocessor.evalexpr1  s    #f+oay~~*vay)/KE!	#f+oay~~2Q 4994!!9??dkk9%)F%)F(%C/$(	C/

4;;vay/?/?@UVFA! #f+o" "&q	"&"5"5f"=q	1Q3qs7OFA3 #f+o4 ##F+V$ 
	;CAavv" IIaLq	!%q	"&"5"5d";q	4>>) IIaLq	"%fQioo"6q	Qioob)1II&,Qioocr&:F1IO Qioob)1II
	; wwf5AGG56||D)||D(||C(	$ZF  6  	JJt{{6!9#3#34RSF	s   K;.L   5L98L9c              #     K   t        |      }| j                  |      }|sd}| j                  d|z         || _        g }d}d}g }|D ]^  }	t	        |	      D ]  \  }
}|j
                  | j                  vs n j                  dk(  r	|	D ];  }|j
                  | j                  v sd|j                  v s+|j                  |       = | j                  |	
dz   d        }|r$|d   j                  }| j                  |dd        }nd}g }|d	k(  r1|s| j                  |      D ]  }|  g }| j                  |       |d
k(  ra|s| j                  |      D ]  }|  g }| j                  d   }| j                  |      D ]  }|  || j                  d<   || _        ^|dk(  r3|sg| j                  |      D ]  }|  g }| j                  |       |dk(  r<|j                  ||f       |s|d   j                  | j                  vrd}d}d}|dk(  r<|j                  ||f       |s|d   j                  | j                  v rd}d}d}|dk(  r4|j                  ||f       |s4| j                  |      }|sd}d}Md}Q|dk(  r]|r/|d   d   sb|rd}h|rl| j                  |      }|sd}d}| j                  | j                  |d   j                   d       |dk(  rH|r|d   d   s|rd}|rd}d}| j                  | j                  |d   j                   d        |dk(  rC|r|j#                         \  }}| j                  | j                  |d   j                   d       HJ|sN|j%                  |	       a | j                  |      D ]  }|  g }y w)Nr   z__FILE__ "%s"TFr.   r   r+   r   rc   include__FILE__undefifdefifndefifelifrC   zMisplaced #elifelsezMisplaced #elseendifzMisplaced #endif)rK   r   rc   rS   r   r$   r   r   rj   r   r   r]   r   r   r   rt   r   popextend)rT   rJ   rS   r   r   chunkenable	iftriggerifstackr   r   rm   	dirtokensrO   r   oldfiler   s                    r   parsegenzPreprocessor.parsegenl  s     UO  #F%./	 f	$A"1 4#88499,e4yyC  *Cxx499,1BS)* !OOAacdG4	$Q<--D??9QR=9DDD8##'#5#5e#< &C"%I& "D)Y&#'#5#5e#< &C"%I& ""&++j"9#'<<#5 &C"%I&29J/&,W_#'#5#5e#< &C"%I& "

4(W_NNF9#56#Aw}};%*F(-I(,IX%NNF9#567==DKK7%*F(-I(,IT\NNF9#56!%t!4%%*F(-I(,IV^"2;q>%).%.)-t)<#).2F04I

4;;y|/B/BCTUV^"2;q>%).%.)-,0	

4;;y|/B/BCTUW_+2;;=(y

4;;y|/B/BCUV  LLOMf	$P %%e, 	CI	se   A3O60O'O6AO5O	A$O/A	O:?O;?O<,O*O4O	AOOA>O1Oc              #     K   |sy |r6|d   j                   dk7  r-|d   j                  | j                  k7  r| j                  |      }|d   j                   dk(  rd}|t	        |      k  r'||   j                   dk(  rn |dz  }|t	        |      k  r't        d       y dj                  |d| D cg c]  }|j                    c}      }| j                  dgz   | j                  z   }nX|d   j                  | j                  k(  r0|d   j                   dd }| j                  dgz   | j                  z   }nt        d       y D ]  }t        j                  j                  |      }	 t        |d	      j                         }t        j                  j                  |      }	|	r| j                  j                  d|	       | j                  ||      D ]  }
|
  |	r| j                  d=  y  t        d
z         y c c}w # t        $ r Y w xY ww)Nr   r=   r+   r>   zMalformed #include <...>r   rC   zMalformed #include statementr   zCouldn't find '%s')r   r$   r   r   r   rp   r   r^   r_   osopenreaddirnameinsertr   IOError)rT   rl   r   r   filenamer^   pinamedatadnamerm   s              r   r   zPreprocessor.include  s    ay#%&)..DMM*I++F3ay#%#f+oay#-FA #f+o
 4577VAa[#AAGG#AByyB4'$..84==0!!9??1R0~~,tyy845 	3AGGLL8,EE#++-.NN))!E2==h7 CIq)	3 &12/ $B(  s>   BHH/G8B"H%BG=&H=	H	HH		Hc           	         t        |t              r| j                  |      }|}	 |d   }t        |      dkD  r|d   }nd }|s0t	        |j
                  g       }|| j                  |j
                  <   y |j                  | j                  v rBt	        |j
                  | j                  |dd              }|| j                  |j
                  <   y |j
                  dk(  r6| j                  |dd        \  }}}d}	|D ]  }
|	rt        d        y dj                  |
D cg c]  }t        |j
                         c}      }|dk(  r(d	}	| j                  |
d   _        d
|
d   _        d	}	|
dd = r|dd  dk(  rS|
d   j                  | j                  k(  r7d	}	|
dd = |
d   j
                  dd  dk(  r|
d   j
                  d d |
d   _        t        |
      dkD  s|
d   j                  | j                  k7  st        d        y  | j                  |d|z   d        }d}|t        |      k  r|dz   t        |      k  rj||   j                  | j                  v r||dz      j
                  dk(  r||= S||   j
                  dk(  r$||dz      j                  | j                  v r||dz   = |dz  }|t        |      k  rt	        |j
                  ||D cg c]  }|d   j
                   c}|	      }| j                  |       || j                  |j
                  <   y t        d       y c c}w c c}w # t         $ r t        d       Y y w xY w)Nr   r+   r   r:   Fz0No more arguments may follow a variadic argumentr   z...T__VA_ARGS__zInvalid macro argumentrx   zBad macro definition)
isinstanceSTRING_TYPESrn   r   rM   r   r]   r$   r   r   r   rp   r   r   r{   r   LookupError)rT   rl   linetokrO   mtyper   r   r   r   rQ   ar   astrmvaluer   r   s                   r   rc   zPreprocessor.define   s   f\*]]6*F9	*1:D7|a
$**R(*+DJJ'tyy($**T__WQR[%AB*+DJJ'#,0,=,=gabk,J)$	  $0APQ77A#>bCM#>?Du}#'$(II!	%2!
#'abE bce+!		TYY0F#'abE Q4::bc?e3)*1CRAaDJ 1vzQqTYY$))%;67-$00 "__WQxZ[-ABFAc&k/Q3V,%ay~~:vac{?P?PTX?X$*1I (!'D!8VAaC[=M=MQUQZQZ=Z$*1Q3KQ c&k/ djjT0J10J8TA&&q)./DKK

+,-E $?< 1K
  	*()	*s]   AL( 2AL( >L( L( L
6B9L( 0L( =B6L( 4L( 	L#2L( L( 
L( (L?>L?c                 \    |d   j                   }	 | j                  |= y # t        $ r Y y w xY w)Nr   )r   r]   r   )rT   rl   ids      r   r   zPreprocessor.undeff  s1    AY__	B 		s    	++c                 @    || _         | j                  ||      | _        y rh   )ignorer   re   )rT   rJ   rS   r   s       r   parsezPreprocessor.parser  s    mmE&1r   c                     	 	 t        | j                        }|j                  | j                  vr|S 0# t        $ r
 d | _        Y y w xY wrh   )nextre   r$   r   StopIteration)rT   rm   s     r   ri   zPreprocessor.token{  sL    	4;;'884;;.s
   	DK	s   /3 3 AArh   )rV   rW   rX   rU   rn   rt   r`   r   r   r   r   r   r   r   r   r   r   rc   r   r   ri   r   r   r   rZ   rZ      so    ,,4JxB	8+j":X'd?P4v{F)3b>*L !%B 2r   rZ   __main__r+   )3
__future__r   sysversion_infomajorr   unicoder   ranger   rl   literalsr   t_CPP_POUNDt_CPP_DPOUNDt_CPP_IDr   t_CPP_INTEGERt_CPP_FLOATr   r!   r&   r(   r-   rer   ra   os.pathr   compilerH   rD   rK   objectrM   rZ   rV   ply.lexr\   r   r   argvfr   rJ   r   r   ri   rm   rp   rS   r   r   r   <module>r     st   " 
 A>LLF
 ,
    Q 
   & 

67
K&F "c6 cJ zCGGIE SXXa[AFFHEUAGGE#((1+
ggiEahh  r   