
    iW                     <   d dl Z d dlmZ d dlmZ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mZ d dl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 Ze j:                  j=                  dg dg dg dg      d        Ze j:                  j@                  e j:                  j=                  ddg      e j:                  j=                  ddddgddgddfdddgddgddfd dd!ddd"fd dd#ddd"fg      e j:                  j=                  d$d%d&d'd(dd)fd*d+d'd(dd)fd%d,d'd-d.fd*d/d'd-d.fg      d0                             Z!d1 Z"d2Z#d3g d4d5d6d7d8fd9g d:d6d5d7d8fgZ$e j:                  j=                  d;d<      d=        Z%d> Z&d? Z'd@ Z(dA Z)dB Z*dCZ+dD Z,dEZ-dF Z.dG Z/dH Z0y)I    N)assert_array_equal)Configget_current_ops)util)English)MaxoutWindowEncoderMultiHashEmbedbuild_Tok2Vec_model)Tok2VecTok2VecListener)Doc)Example)registry)Vocab   )add_vecs_to_vocab	get_batchmake_tempdirc            	      (   d} d}t               }t        |g       }t        t        | ||||gdg d      t	        | ddd	
            }|j                          |j                  |g      \  }}t        |      dk(  sJ |d   j                  d| fk(  sJ y )N     )wordsFNORMPREFIXSUFFIXSHAPEwidthrowsinclude_static_vectorsattrs         r   depthwindow_sizemaxout_piecesr   )	r   r   r
   r	   r   
initializebegin_updatelenshape)r   
embed_sizevocabdoctok2vecvectorsbackprops          r/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/tests/pipeline/test_tok2vec.pytest_empty_docr5      s    EJGE
e2
C!j*jA#(7		
 	%qaqQG ,,cU3GXw<11:5z)))    zbatch_size,width,embed_size)r$   r   r   )r   r   r   )r%      ?   c           	      L   t        |       }t        t        ||gdz  dg d      t        |ddd            }|j	                          |j                  |      \  }}t        |      t        |      k(  sJ t        ||      D ]!  \  }}|j                  t        |      |fk(  r!J  y )Nr#   Fr   r   r$   r%   r&   )	r   r
   r	   r   r*   r+   r,   zipr-   )	
batch_sizer   r.   batchr1   r2   r3   doc_vecr0   s	            r4   test_tok2vec_batch_sizesr>   )   s     j!E!!#(7		
 	%qaqQG ,,U3GXw<3u:%%%GU+ 2}}S5 11112r6   r   r7   zembed_arch,embed_configzspacy.MultiHashEmbed.v1d   r   LOWERF)r    r"   r!      ORTHr   zspacy.CharacterEmbed.v1@   )r    nMnCr!      z&tok2vec_arch,encode_arch,encode_configzspacy.Tok2Vec.v1zspacy.MaxoutWindowEncoder.v1r$   r%   )r(   r)   r'   spacy.Tok2Vec.v2zspacy.MaxoutWindowEncoder.v2zspacy.MishWindowEncoder.v1   )r(   r'   zspacy.MishWindowEncoder.v2c                    t        j                  d|      }t        j                  d|      }t        j                  d|      }| |d<   | |d<   t        d      }	 | |di | |di |      }
|
j                  |	       |
j	                  |	      \  }}t        |      t        |	      k(  sJ |d   j                  t        |	d         | fk(  sJ  ||       y )Narchitecturesr   r%   r    )r   getr   r*   r+   r,   r-   )r   tok2vec_arch
embed_archembed_configencode_archencode_configembedencodetok2vec_modeldocsr1   r2   r3   s                r4   test_tok2vec_configsrV   >   s    ~ LL*5E\\/;7FLL,?M!L"M'Q<DE1L163JM3JKGt,,T2GXw<3t9$$$1:DGe4444Wr6   c                      t               } | j                  d      }|j                  g k(  sJ | j                          |j                  j                  d      sJ y )Nr1   nO)r   add_pipe	listenersr*   modelget_dim)nlpr1   s     r4   test_init_tok2vecr^      sM    
)Cll9%G"""NN==  &&&r6   a  
    [nlp]
    lang = "en"
    pipeline = ["tok2vec","tagger"]

    [components]

    [components.tagger]
    factory = "tagger"

    [components.tagger.model]
    @architectures = "spacy.Tagger.v2"
    nO = null

    [components.tagger.model.tok2vec]
    @architectures = "spacy.Tok2VecListener.v1"
    width = ${components.tok2vec.model.encode.width}

    [components.tok2vec]
    factory = "tok2vec"

    [components.tok2vec.model]
    @architectures = "spacy.Tok2Vec.v2"

    [components.tok2vec.model.embed]
    @architectures = "spacy.MultiHashEmbed.v1"
    width = ${components.tok2vec.model.encode.width}
    rows = [2000, 1000, 1000, 1000]
    attrs = ["NORM", "PREFIX", "SUFFIX", "SHAPE"]
    include_static_vectors = false

    [components.tok2vec.model.encode]
    @architectures = "spacy.MaxoutWindowEncoder.v2"
    width = 96
    depth = 4
    window_size = 1
    maxout_pieces = 3
    I like green eggsNVJra         ?        )
preference
imperative)tagscatsEat blue hamrb   rc   ra   with_vectors)FTc           	      
   t               j                  t              }| |d   d   d   d   d<   t        j                  |dd      }| rt               }d|j                  g d	      fd
|j                  g d      fd|j                  g d      fd|j                  g d      fd|j                  g d      fg}t        |j                  |       |j                  ddgk(  sJ |j                  d      }|j                  d      }|j                  j                  d      }t        |t              sJ t        |t              sJ g t         D ]Z  }j#                  t%        j&                  |j)                  |d         |d                |d   d   D ]  }	|j+                  |	        \ |j-                  fd      }
|j.                  |gk(  sJ t1        d      D ]  }i }|j3                  |
|         |d      }|j5                  |g      d   }t               }t7        |j9                  |j:                        |j9                  |              |d      }|j=                  d       |j                  dgk(  sJ  |d       y )N
componentsr1   r[   rR   r!   T	auto_fillvalidateapple)r$   r   r%   orange)and)rt   rt   rt   juice)   ry   
   pie)   g333333@g!@taggerr   r$   rh   c                       S NrK   train_exampless   r4   <lambda>z'test_tok2vec_listener.<locals>.<lambda>       ~ r6   ry   sgdlossesz Running the pipeline as a whole. )disablez9Running the pipeline with the Tok2Vec component disabled.)r   from_str
cfg_stringr   load_model_from_configr   asarrayr   r/   
pipe_namesget_piper[   get_ref
isinstancer   r   
TRAIN_DATAappendr   	from_dictmake_doc	add_labelr*   rZ   rangeupdatepredictr   to_numpytensorselect_pipes)rl   orig_configr]   opsr2   r}   r1   tagger_tok2vecttag	optimizerir   r0   
doc_tensorr   s                  @r4   test_tok2vec_listenerr      sk   (##J/K i(1':;ST 
%
%kTD
QCckk),-s{{<01CKK-.ckk*-.CKK./
 	#))W->>i2222\\(#Fll9%G\\)))4Ngw'''no666N "g//QqT0BAaDIJQ4< 	"CS!	"" 56I 00001X A

>y
@A 0
1C''.q1J

Cs||CJJ/j1IJ b'C Y'>>hZ'''CDr6   c            	         t               j                  t              } t        j                  | dd      }|j
                  ddgk(  sJ |j                  d      }|j                  d      }|j                  d      g}|j                  j                  |       |D cg c]  }dD cg c]  }d c} }}}|j                  j                  j                  |d	
      g}|j                  j                  ||       |j                  d      g}|j                  |D 	cg c]  }	t        j                  |	i        c}	       |j                  j                  |      \  }
} ||
      J y c c}w c c}}w c c}	w )NTro   r1   r}   zA random sentence)X)rb   Zrd   float32)dtype)r   Yz Another entirely random sentence)r   r   r   r   r   r   r   r   r[   r*   r   r   r   r   r   r+   )r   r]   r}   r1   rU   wordr   
gold_arraylabel_samplexr   get_dXs               r4   test_tok2vec_listener_callbackr      sD   (##J/K

%
%kTD
QC>>i2222\\(#Fll9%GLL,-.DMMt$:>?$*-33-?J?LL$$,,Zy,IJL
LLdl3LL;<=DNNd;G%%a,;<))$/IAv!9    .? <s   	E0'	E+0E0E6+E0c            	      |   t               j                  t              } t        j                  | dd      }g t
        D ]<  }j                  t        j                  |j                  |d         |d                > |j                  fd      }t        d      D ]  }i }|j                  ||dg	        d
   dk  sJ d} ||      }|d   j                  dk(  sJ |d   j                  dk(  sJ |d   j                  dk(  sJ |d   j                  dk(  sJ t               5 }|j                  |       t        j                   |      }	 |	|      }
|
d   j                  dk(  sJ |
d   j                  dk(  sJ |
d   j                  dk(  sJ |
d   j                  dk(  sJ 	 ddd       y# 1 sw Y   yxY w)ziTest that a pipeline with a listener properly overfits, even if 'tok2vec' is in the annotating componentsTro   r   r$   c                       S r   rK   r   s   r4   r   z3test_tok2vec_listener_overfitting.<locals>.<lambda>      N r6   get_examples2   r1   )r   r   	annotatesr}   gh㈵>I like blue eggsra   rb   r   rc   r%   Nr   r   r   r   r   r   r   r   r   r   r*   r   r   tag_r   to_diskload_model_from_pathr   r]   r   r   r   r   	test_textr0   tmp_dirnlp2doc2r   s              @r4   !test_tok2vec_listener_overfittingr     s   (##J/K

%
%kTD
QCN Kg//QqT0BAaDIJK,BCI2Y X

>yI;
WX (g%%% #I
i.Cq6;;#q6;;#q6;;#q6;;# 
 #7G((1IAw||s"""Aw||s"""Aw||s"""Aw||s"""# # #s   )A?F22F;c            	         t               j                  t              } t        j                  | dd      }g t
        D ]<  }j                  t        j                  |j                  |d         |d                > |j                  fd      }t        d      D ]>  }i }t        j                  t        d	      5  |j                  ||d
g       ddd       @ y# 1 sw Y   KxY w)z]Test that a pipeline with a frozen tok2vec raises an error when the tok2vec is not annotatingTro   r   r$   c                       S r   rK   r   s   r4   r   z4test_tok2vec_frozen_not_annotating.<locals>.<lambda>7  r   r6   r   r   z*the tok2vec embedding layer is not updated)matchr1   )r   r   excludeN)r   r   r   r   r   r   r   r   r   r   r*   r   pytestraises
ValueErrorr   )r   r]   r   r   r   r   r   s         @r4   "test_tok2vec_frozen_not_annotatingr   0  s    (##J/K

%
%kTD
QCN Kg//QqT0BAaDIJK,BCI1X ]]K
 	 JJIfyk  	 		 	s   >C  C)	c            	         t               j                  t              } t        j                  | dd      }g t
        D ]<  }j                  t        j                  |j                  |d         |d                > |j                  fd      }t        d      D ]  }i }|j                  ||dgdg	        d
   dk  sJ d} ||      }|d   j                  dk(  sJ |d   j                  dk(  sJ |d   j                  dk(  sJ |d   j                  dk(  sJ t               5 }|j                  |       t        j                   |      }	 |	|      }
|
d   j                  dk(  sJ |
d   j                  dk(  sJ |
d   j                  dk(  sJ |
d   j                  dk(  sJ 	 ddd       y# 1 sw Y   yxY w)zITest that a pipeline with a frozen & annotating tok2vec can still overfitTro   r   r$   c                       S r   rK   r   s   r4   r   z1test_tok2vec_frozen_overfitting.<locals>.<lambda>J  r   r6   r   r?   r1   )r   r   r   r   r}   g-C6?r   ra   rb   r   rc   r%   Nr   r   s              @r4   test_tok2vec_frozen_overfittingr   C  s   (##J/K

%
%kTD
QCN Kg//QqT0BAaDIJK,BCI3Z 


K k 	 	

 (f$$$ #I
i.Cq6;;#q6;;#q6;;#q6;;# 
 #7G((1IAw||s"""Aw||s"""Aw||s"""Aw||s"""# # #s   +A?F44F=c                     t               j                  t              } t        j                  | dd      }t        j                  |j                  d      dddgi      g|j                  fd       |j                  d      }|j                  d	      }t        |j                  j                  d
   t              sJ |j                  d	   d
   |j                  j                  d
   k(  sJ |j                  d   d   d   d   dk(  sJ |j                  d   d	   d   d   d   dk(  sJ |j!                  dd	dg       t        |j                  j                  d
   t              rJ |j                  d   d   d   }|d   dk(  sJ |j                  d   d	   d   d   |k(  sJ t#        j$                  t&              5  |j!                  dd	dg       d d d        t#        j$                  t&              5  |j!                  dddg       d d d        t#        j$                  t&              5  |j!                  dd	dg       d d d        t#        j$                  t&              5  |j!                  dd	ddg       d d d        |j                  fd      }t)        d      D ],  }i }|j+                  ||       |d   dk(  sJ |d	   dkD  r,J  y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w)NTro   x yrh   rb   r   c                       S r   rK   exampless   r4   r   z(test_replace_listeners.<locals>.<lambda>n      8 r6   r1   r}   r   rn   r[   @architecturesrG   spacy.Tok2VecListener.v1model.tok2vecinvalidparserz
model.yoloc                       S r   rK   r   s   r4   r   z(test_replace_listeners.<locals>.<lambda>  s    x r6   r   r   re   )r   r   r   r   r   r   r   r   r*   r   r   r[   layersr   listener_mapconfigreplace_listenersr   r   r   r   r   )	r   r]   r1   r}   t2v_cfgr   r   r   r   s	           @r4   test_replace_listenersr   j  s   (##J/K

%
%kTD
QC!!#,,u"5c
7KLMHNN#$ll9%G\\(#Ffll))!,o>>>)!,0C0CA0FFFF

< +G45EF		 	

< *73I>?OP%	&	& )X/@A&,,--a0/BBBjj&y1':G#$(::::::l#H-g6yAWLLL	z	" FiO3DEF	z	" FiO3DEF	z	" CiL>BC	z	" TiO\3RST /0I1X &

86
:i C'''h#%%%	&F FF FC CT Ts0   =K3K)K$K0KK!$K-0K9a  
    [nlp]
    lang = "en"
    pipeline = ["tok2vec","tagger", "ner"]

    [components]

    [components.tagger]
    factory = "tagger"

    [components.tagger.model]
    @architectures = "spacy.Tagger.v2"
    nO = null

    [components.tagger.model.tok2vec]
    @architectures = "spacy.Tok2VecListener.v1"
    width = ${components.tok2vec.model.encode.width}

    [components.ner]
    factory = "ner"

    [components.ner.model]
    @architectures = "spacy.TransitionBasedParser.v2"

    [components.ner.model.tok2vec]
    @architectures = "spacy.Tok2VecListener.v1"
    width = ${components.tok2vec.model.encode.width}

    [components.tok2vec]
    factory = "tok2vec"

    [components.tok2vec.model]
    @architectures = "spacy.Tok2Vec.v2"

    [components.tok2vec.model.embed]
    @architectures = "spacy.MultiHashEmbed.v1"
    width = ${components.tok2vec.model.encode.width}
    rows = [2000, 1000, 1000, 1000]
    attrs = ["NORM", "PREFIX", "SUFFIX", "SHAPE"]
    include_static_vectors = false

    [components.tok2vec.model.encode]
    @architectures = "spacy.MaxoutWindowEncoder.v2"
    width = 96
    depth = 4
    window_size = 1
    maxout_pieces = 3
    c                     t               j                  t              } t        j                  | d      }ddgddgd}t        j                  |j                  d      |      g|j                  fd	       |j                  d
      }|j                  d      }|j                  d      }|j                  ddgk(  sJ t        d |j                  j                         D              sJ t        d |j                  j                         D              sJ t               5 }|j                  |       t!        |      }dg ddd|i|ddgd|dd|dddd}t        j                  |d      }	d d d        	j                  fd       |	j                  d
      }|	j                  d      }|	j                  d      }d|	j"                  vsJ d|	j"                  vsJ |j                  ddgk(  sJ t        d |j                  j                         D              sJ t        d |j                  j                         D              rJ |	j$                  d   d
   d   }
|
d   d k(  sJ |	j$                  d   d   d   d
   |
k(  sJ |	j$                  d   d   d   d
   d   d!k(  sJ |	j$                  d   d   d   d
   d   d!k(  sJ y # 1 sw Y   YxY w)"NT)rp   rb   r   )r   r$   A)r$   r   B)rh   entitiesr   c                       S r   rK   r   s   r4   r   z4test_replace_listeners_from_config.<locals>.<lambda>  r   r6   r1   r}   nerc              3   <   K   | ]  }t        |t                y wr   r   r   .0nodes     r4   	<genexpr>z5test_replace_listeners_from_config.<locals>.<genexpr>       NTz$0N   c              3   <   K   | ]  }t        |t                y wr   r   r   s     r4   r   z5test_replace_listeners_from_config.<locals>.<genexpr>  s     QTz$0Qr   en)r1   tagger2ner3tagger4)langpipelinesourcer   )r   	componentr   )r   r   )r]   rn   c                       S r   rK   r   s   r4   r   z4test_replace_listeners_from_config.<locals>.<lambda>  s    x r6   r   r   r   c              3   <   K   | ]  }t        |t                y wr   r   r   s     r4   r   z5test_replace_listeners_from_config.<locals>.<genexpr>  r   r   c              3   <   K   | ]  }t        |t                y wr   r   r   s     r4   r   z5test_replace_listeners_from_config.<locals>.<genexpr>  s     U:dO4Ur   rn   r[   r   rG   r   )r   r   cfg_string_multir   r   r   r   r   r*   r   listening_componentsanyr[   walkr   r   strr   r   )r   r]   annotsr1   r}   r   dir_path
base_model
new_confignew_nlpr   r   s              @r4   "test_replace_listeners_from_configr    s   (##$45K

%
%kT
BCCj{K.HIF!!#,,u"5v>?HNN#$ll9%G\\(#F
,,u
C''He+<<<<NSYY^^=MNNNNQV\\=N=N=PQQQQ	 J8H]
 E
 %j1(!)*9): )!&
 )!)

, --jDI3J4 '(y)Gi(F


6
"C*****7-----''FI+>>>>NSYY^^=MNNNNUARARATUUUUnn\*95g>G#$(::::>>,'	27;IF'QQQ|$V,W5i@AQR%	&	& 	|$Y/8CDTU%	&	&WJ Js   !AKKa  
    [nlp]
    lang = "en"
    pipeline = ["tok2vec","textcat_multilabel","tagger"]

    [components]

    [components.textcat_multilabel]
    factory = "textcat_multilabel"

    [components.textcat_multilabel.model]
    @architectures = "spacy.TextCatEnsemble.v2"
    nO = null

    [components.textcat_multilabel.model.tok2vec]
    @architectures = "spacy.Tok2VecListener.v1"
    width = ${components.tok2vec.model.encode.width}

    [components.textcat_multilabel.model.linear_model]
    @architectures = "spacy.TextCatBOW.v1"
    exclusive_classes = false
    ngram_size = 1
    no_output_layer = false

    [components.tagger]
    factory = "tagger"

    [components.tagger.model]
    @architectures = "spacy.Tagger.v2"
    nO = null

    [components.tagger.model.tok2vec]
    @architectures = "spacy.Tok2VecListener.v1"
    width = ${components.tok2vec.model.encode.width}

    [components.tok2vec]
    factory = "tok2vec"

    [components.tok2vec.model]
    @architectures = "spacy.Tok2Vec.v2"

    [components.tok2vec.model.embed]
    @architectures = "spacy.MultiHashEmbed.v1"
    width = ${components.tok2vec.model.encode.width}
    rows = [2000, 1000, 1000, 1000]
    attrs = ["NORM", "PREFIX", "SUFFIX", "SHAPE"]
    include_static_vectors = false

    [components.tok2vec.model.encode]
    @architectures = "spacy.MaxoutWindowEncoder.v2"
    width = 96
    depth = 4
    window_size = 1
    maxout_pieces = 3
    c            	      >   t               j                  t              } t        j                  | dd      }|j
                  g dk(  sJ |j                  d      }|j                  d      }|j                  d      }|j                  j                  d      }|j                  j                  d      }t        |t              sJ t        |t              sJ t        |t              sJ g t        D ]<  }j                  t        j                  |j!                  |d         |d                > |j#                  fd	      }t%        d
      D ]  }	i }
|j'                  ||
        t)        |j+                  ddg            }|d   j,                  }|d   dk  sJ |d   dkD  sJ |d   j,                  }|d   dkD  sJ |d   dk  sJ |d   D cg c]  }|j.                   c}g dk(  sJ |d   D cg c]  }|j.                   c}g dk(  sJ y c c}w c c}w )NTro   )r1   textcat_multilabelr}   r}   r  r1   r   r$   c                       S r   rK   r   s   r4   r   z0test_tok2vec_listeners_textcat.<locals>.<lambda>H  r   r6   r   r   rj   r_   rf   g?rg   g?rk   r`   )r   r   cfg_string_multi_textcatr   r   r   r   r[   r   r   r   r   r   r   r   r   r   r*   r   r   listpiperi   r   )r   r]   r}   textcatr1   r   textcat_tok2vecr   r   r   r   rU   cats0cats1r   s                 @r4   test_tok2vec_listeners_textcatr  8  s   (##$<=K

%
%kTD
QC>>HHHH\\(#Fll/0Gll9%G\\)))4Nmm++I6Ogw'''no666o777N Kg//QqT0BAaDIJK 56I2Y A

>y
@A .*=>?@DGLLE$$$$$$GLLE$$$$$$ G$qAFF$777 G$qAFF$(<<<< %$s   H7Hc                     t               j                  t              } t        j                  | dd      }|j                  d      j                  ddgk(  sJ t               }|j                  d|       |j                  dd|       |j                  d      j                  |j                  d      j                  cxk(  rdk(  sJ  J |j                  d      j                  dgk(  sJ |j                  dd	|       |j                  d      j                  dd	gk(  sJ |j                  d	       |j                  d      j                  dgk(  sJ |j                  d       |j                  d      j                  g k(  sJ |j                  d      j                  g k(  sJ |j                  d
       |j                  d      j                  ddgk(  sJ |j                  d
       |j                  d      j                  g k(  sJ y)zvThe component's internal name and the tok2vec listener map correspond
    to the most recently modified pipeline.
    Tro   r1   r}   r   r   r   namer   r   sentencizerN)r   r   r   r   r   r   r   r   rY   r  remove_piper   nlp1r   s      r4   &test_tok2vec_listener_source_link_namer  X  s    (##$45K&&{dTRD==#88Xu<MMMM9DMM)DM)MM(4M8 =="''4==+C+H+HUIUUUUU ==#88YKGGGMM%fTM2==#88Y<OOOOV==#88YKGGGY==#88B>>> ==#88B>>> 	MM- ==#88Xu<MMMM 	MM- ==#88B>>>r6   c                  f   t               j                  t              } t        j                  | dd      }|j                  d      j                  ddgk(  sJ |j                  dddg       |j                  d      j                  dgk(  sJ t               }|j                  d|       |j                  d      j                  g k(  sJ |j                  d|       |j                  d      j                  g k(  sJ |j                  dd|	       |j                  d      j                  dgk(  sJ y )
NTro   r1   r}   r   r   r  ner2r  )
r   r   r   r   r   r   r   r   r   rY   r  s      r4   .test_tok2vec_listener_source_replace_listenersr  ~  s   (##$45K&&{dTRD==#88Xu<MMMM9h0AB==#88UGCCC9DMM)DM)==#88B>>>MM(4M(==#88B>>>MM%fTM2==#88VHDDDr6   )1r   numpy.testingr   	thinc.apir   r   spacyr   spacy.lang.enr   spacy.ml.models.tok2vecr   r	   r
   spacy.pipeline.tok2vecr   r   spacy.tokensr   spacy.trainingr   
spacy.utilr   spacy.vocabr   r   r   r   r5   markparametrizer>   slowrV   r^   r   r   r   r   r   r   r   r   r   r  r  r  r  r  rK   r6   r4   <module>r)     sZ    , -  ! 
 <  "   = =*( !NNJ#O22$ 1#& &c
!7+*/	
 &b	 (+*/	
 &!uM	

 &!uM	
+> , *A>	
 *A>	
 (*	
 (*	
!67? ' x$'%
R 	%cQT/UV
 	 C*PQ	
 71E 81Eh!$#B&$#N$&N/ d9x6 r=@#?LEr6   