Index: /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS.fcm
===================================================================
--- /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS.fcm	(revision 7)
+++ /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS.fcm	(revision 7)
@@ -0,0 +1,33 @@
+# ifort (mpif90) compiler options for NOCS ALTIX cluster nautilus
+# NCDF_INC    netcdf include file
+# NCDF_LIB    netcdf library
+# FC          Fortran compiler command
+# FCFLAGS     Fortran compiler flags
+# FFLAGS      Fortran 77 compiler flags
+# LD          linker
+# LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+# FPPFLAGS    pre-processing flags
+# AR          assembler
+# ARFLAGS     assembler flags
+# MK          make
+# USER_INC    additional include files for the compiler,  e.g. -I<include dir>
+# USER_LIB    additional libraries to pass to the linker, e.g. -l<library>
+
+
+%NCDF_INC            -I/sw/packages/netcdf/3.6.2/x86_64/include
+%NCDF_LIB            -L/sw/packages/netcdf/3.6.2/x86_64/lib -lnetcdf
+%FC                  mpif90
+%FCFLAGS             -r8 -O3 -xT -ip -vec-report0
+%FFLAGS              -r8 -O3 -xT -ip -vec-report0
+%LD                  mpif90
+%FPPFLAGS            -P -C -traditional
+%LDFLAGS
+%AR                  ar 
+%ARFLAGS             -r
+%MK                  gmake
+%USER_INC            %NCDF_INC
+%USER_LIB            %NCDF_LIB
+
+# - if debugging use these flags
+#FCFLAGS             -g -traceback -r8 -O0 -xT -ip -vec-report0
+#FFLAGS              -g -traceback -r8 -O0 -xT -ip -vec-report0
Index: /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS_MPT.fcm
===================================================================
--- /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS_MPT.fcm	(revision 7)
+++ /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS_MPT.fcm	(revision 7)
@@ -0,0 +1,38 @@
+# ifort compiler options for NOCS ALTIX cluster nautilus using NetCDF4 libraries
+# NCDF_HOME   root directory containing lib and include subdirectories for netcdf4
+# HDF5_HOME   root directory containing lib and include subdirectories for HDF5
+# NCDF_INC    netcdf include file
+# NCDF_LIB    netcdf library
+# FC          Fortran compiler command
+# FCFLAGS     Fortran compiler flags
+# FFLAGS      Fortran 77 compiler flags
+# LD          linker
+# LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+# FPPFLAGS    pre-processing flags
+# AR          assembler
+# ARFLAGS     assembler flags
+# MK          make
+# USER_INC    additional include files for the compiler,  e.g. -I<include dir>
+# USER_LIB    additional libraries to pass to the linker, e.g. -l<library>
+
+
+%NCDF_HOME           /noc/users/jeff/packages/netcdf4/netcdf-4.1.1/x86_64/intel10.1
+%HDF5_HOME           /noc/users/jeff/packages/hdf5/hdf5-1.8.4-patch1/x86_64/intel10.1
+%NCDF_INC            -I%NCDF_HOME/include -I%HDF5_HOME/include
+# Note use of -Bstatic because the library root directories are not accessible to the back-end compute nodes
+%NCDF_LIB            -L%HDF5_HOME/lib -L%NCDF_HOME/lib -Bstatic -lnetcdf -lhdf5_fortran -lhdf5_hl -lhdf5 -Bdynamic -lz
+%FC                  ifort
+%FCFLAGS             -r8 -O3 -xT -ip -vec-report0
+%FFLAGS              -r8 -O3 -xT -ip -vec-report0
+%LD                  ifort
+%FPPFLAGS            -P -C -traditional
+%LDFLAGS             -lmpi
+%AR                  ar 
+%ARFLAGS             -r
+%MK                  gmake
+%USER_INC            %NCDF_INC
+%USER_LIB            %NCDF_LIB
+
+# - if debugging use these flags
+#FCFLAGS             -g -traceback -r8 -O0 -xT -ip -vec-report0
+#FFLAGS              -g -traceback -r8 -O0 -xT -ip -vec-report0
Index: /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS_SETTE.fcm
===================================================================
--- /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS_SETTE.fcm	(revision 7)
+++ /trunk/NEMOGCM/ARCH/NOC/arch-ALTIX_NAUTILUS_SETTE.fcm	(revision 7)
@@ -0,0 +1,34 @@
+# ifort compiler options for NOCS ALTIX cluster nautilus using NetCDF4 libraries and minimal optimisation for the purposes of SETTE testing
+# NCDF_HOME   root directory containing lib and include subdirectories for netcdf4
+# HDF5_HOME   root directory containing lib and include subdirectories for HDF5
+# NCDF_INC    netcdf include file
+# NCDF_LIB    netcdf library
+# FC          Fortran compiler command
+# FCFLAGS     Fortran compiler flags
+# FFLAGS      Fortran 77 compiler flags
+# LD          linker
+# LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+# FPPFLAGS    pre-processing flags
+# AR          assembler
+# ARFLAGS     assembler flags
+# MK          make
+# USER_INC    additional include files for the compiler,  e.g. -I<include dir>
+# USER_LIB    additional libraries to pass to the linker, e.g. -l<library>
+
+
+%NCDF_HOME           /noc/users/jeff/packages/netcdf4/netcdf-4.1.1/x86_64/intel10.1
+%HDF5_HOME           /noc/users/jeff/packages/hdf5/hdf5-1.8.4-patch1/x86_64/intel10.1
+%NCDF_INC            -I%NCDF_HOME/include -I%HDF5_HOME/include
+# Note use of -Bstatic because the library root directories are not accessible to the back-end compute nodes
+%NCDF_LIB            -L%HDF5_HOME/lib -L%NCDF_HOME/lib -Bstatic -lnetcdf -lhdf5_fortran -lhdf5_hl -lhdf5 -Bdynamic -lz
+%FC                  ifort
+%FCFLAGS             -r8 -O0
+%FFLAGS              -r8 -O0
+%LD                  ifort
+%FPPFLAGS            -P -C -traditional
+%LDFLAGS             -lmpi
+%AR                  ar 
+%ARFLAGS             -r
+%MK                  gmake
+%USER_INC            %NCDF_INC
+%USER_LIB            %NCDF_LIB
Index: /trunk/NEMOGCM/ARCH/NOC/arch-XT6_HECTORcrayftn.fcm
===================================================================
--- /trunk/NEMOGCM/ARCH/NOC/arch-XT6_HECTORcrayftn.fcm	(revision 7)
+++ /trunk/NEMOGCM/ARCH/NOC/arch-XT6_HECTORcrayftn.fcm	(revision 7)
@@ -0,0 +1,44 @@
+# compiler options for hector CRAY XT6 (using crayftn compiler)
+
+# NCDF_HOME   root directory containing lib and include subdirectories for netcdf4
+# HDF5_HOME   root directory containing lib and include subdirectories for HDF5
+# NCDF_INC    netcdf include file
+# NCDF_LIB    netcdf library
+# FC          Fortran compiler command
+# FCFLAGS     Fortran compiler flags
+# FFLAGS      Fortran 77 compiler flags
+# LD          linker
+# LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+# FPPFLAGS    pre-processing flags
+# AR          assembler
+# ARFLAGS     assembler flags
+# MK          make
+# USER_INC    additional include files for the compiler,  e.g. -I<include dir>
+# USER_LIB    additional libraries to pass to the linker, e.g. -l<library>
+
+
+# PrgEnv-cray (default for hector phase 3)
+# use "module load netcdf/4.1.2" to setup netcdf (defines NETCDF_DIR and HDF5_DIR)
+
+%NCDF_HOME           $NETCDF_DIR
+%HDF5_HOME           $HDF5_DIR
+%NCDF_INC            -I%NCDF_HOME/include -I%HDF5_HOME/include
+%NCDF_LIB            -L%HDF5_HOME/lib -L%NCDF_HOME/lib -lnetcdf -lhdf5_fortran -lhdf5_hl -lhdf5 -lz
+%FC                  ftn
+%FCFLAGS             -em -s integer32 -s real64 -O3
+%FFLAGS              -em -s integer32 -s real64 -O3
+%LD                  ftn
+%FPPFLAGS            -P -C -traditional
+%LDFLAGS
+%AR                  ar 
+%ARFLAGS             -r
+%MK                  gmake
+%USER_INC            %NCDF_INC
+%USER_LIB            %NCDF_LIB
+
+# replacement options for GNU prgenv
+
+# %NCDF_HOME           $CRAY_NETCDF_DIR/netcdf-gnu
+# %HDF5_HOME           $CRAY_HDF5_DIR/hdf5-gnu
+# %FCFLAGS             -fdefault-real-8 -O3
+# %FFLAGS              -fdefault-real-8 -O3
Index: /trunk/NEMOGCM/ARCH/NOC/arch-pgf90_mobius.fcm
===================================================================
--- /trunk/NEMOGCM/ARCH/NOC/arch-pgf90_mobius.fcm	(revision 7)
+++ /trunk/NEMOGCM/ARCH/NOC/arch-pgf90_mobius.fcm	(revision 7)
@@ -0,0 +1,32 @@
+# mpi compiler options for NOCL's cluster Mobius
+# NCDF_INC    netcdf include file
+# NCDF_LIB    netcdf library
+# FC          Fortran compiler command
+# FCFLAGS     Fortran compiler flags
+# FFLAGS      Fortran 77 compiler flags
+# LD          linker
+# LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+# FPPFLAGS    pre-processing flags
+# AR          assembler
+# ARFLAGS     assembler flags
+# MK          make
+# USER_INC    additional include files for the compiler,  e.g. -I<include dir>
+# USER_LIB    additional libraries to pass to the linker, e.g. -l<library>
+
+
+%NCDF_INC             -I/cm/shared/apps/netcdf/pgi/64/4.1.1/include -I/usr/mpi/qlogic/include
+%NCDF_LIB             -L/cm/shared/apps/pgi/7.1-6/linux86-64/7.1-6/lib -L/usr/mpi/qlogic/lib64  -L/cm/shared/apps/netcdf/pgi/64/4.1.1/lib -lnetcdf
+%FC	             mpif90 -c
+%FCFLAGS             -i4 -r8 -O3 -Mfree  
+## FCFLAGS for debugging
+#%FCFLAGS             -i4 -r8 -Mfree -Ktrp=fp -g -C 
+%FFLAGS              %FCFLAGS
+%LD                  mpif90
+%LDFLAGS                  
+%FPPFLAGS            -P -C -traditional
+%AR                  ar
+%ARFLAGS             -rs 
+%MK                  gmake
+%USER_INC            %NCDF_INC
+%USER_LIB            %NCDF_LIB
+
Index: unk/NEMOGCM/ARCH/arch-ALTIX_NAUTILUS.fcm
===================================================================
--- /trunk/NEMOGCM/ARCH/arch-ALTIX_NAUTILUS.fcm	(revision 6)
+++ 	(revision )
@@ -1,33 +1,0 @@
-# ifort compiler options for NOCS ALTIX cluster nautilus
-# NCDF_INC    netcdf include file
-# NCDF_LIB    netcdf library
-# FC          Fortran compiler command
-# FCFLAGS     Fortran compiler flags
-# FFLAGS      Fortran 77 compiler flags
-# LD          linker
-# LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-# FPPFLAGS    pre-processing flags
-# AR          assembler
-# ARFLAGS     assembler flags
-# MK          make
-# USER_INC    additional include files for the compiler,  e.g. -I<include dir>
-# USER_LIB    additional libraries to pass to the linker, e.g. -l<library>
-
-
-%NCDF_INC            -I/sw/packages/netcdf/3.6.2/x86_64/include
-%NCDF_LIB            -L/sw/packages/netcdf/3.6.2/x86_64/lib -lnetcdf
-%FC                  mpif90
-%FCFLAGS             -r8 -O3 -xT -ip -vec-report0
-%FFLAGS              -r8 -O3 -xT -ip -vec-report0
-%LD                  mpif90
-%FPPFLAGS            -P -C -traditional
-%LDFLAGS
-%AR                  ar 
-%ARFLAGS             -r
-%MK                  gmake
-%USER_INC            %NCDF_INC
-%USER_LIB            %NCDF_LIB
-
-# - if debugging use these flags
-#FCFLAGS             -g -traceback -r8 -O0 -xT -ip -vec-report0
-#FFLAGS              -g -traceback -r8 -O0 -xT -ip -vec-report0
Index: unk/NEMOGCM/ARCH/arch-ALTIX_NAUTILUS4.fcm
===================================================================
--- /trunk/NEMOGCM/ARCH/arch-ALTIX_NAUTILUS4.fcm	(revision 6)
+++ 	(revision )
@@ -1,38 +1,0 @@
-# ifort compiler options for NOCS ALTIX cluster nautilus using NetCDF4 libraries
-# NCDF_HOME   root directory containing lib and include subdirectories for netcdf4
-# HDF5_HOME   root directory containing lib and include subdirectories for HDF5
-# NCDF_INC    netcdf include file
-# NCDF_LIB    netcdf library
-# FC          Fortran compiler command
-# FCFLAGS     Fortran compiler flags
-# FFLAGS      Fortran 77 compiler flags
-# LD          linker
-# LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-# FPPFLAGS    pre-processing flags
-# AR          assembler
-# ARFLAGS     assembler flags
-# MK          make
-# USER_INC    additional include files for the compiler,  e.g. -I<include dir>
-# USER_LIB    additional libraries to pass to the linker, e.g. -l<library>
-
-
-%NCDF_HOME           /noc/users/jeff/packages/netcdf4/netcdf-4.1.1/x86_64/intel10.1
-%HDF5_HOME           /noc/users/jeff/packages/hdf5/hdf5-1.8.4-patch1/x86_64/intel10.1
-%NCDF_INC            -I%NCDF_HOME/include -I%HDF5_HOME/include
-# Note use of -Bstatic because the library root directories are not accessible to the back-end compute nodes
-%NCDF_LIB            -L%HDF5_HOME/lib -L%NCDF_HOME/lib -Bstatic -lnetcdf -lhdf5_fortran -lhdf5_hl -lhdf5 -Bdynamic -lz
-%FC                  ifort
-%FCFLAGS             -r8 -O3 -xT -ip -vec-report0
-%FFLAGS              -r8 -O3 -xT -ip -vec-report0
-%LD                  ifort
-%FPPFLAGS            -P -C -traditional
-%LDFLAGS             -lmpi
-%AR                  ar 
-%ARFLAGS             -r
-%MK                  gmake
-%USER_INC            %NCDF_INC
-%USER_LIB            %NCDF_LIB
-
-# - if debugging use these flags
-#FCFLAGS             -g -traceback -r8 -O0 -xT -ip -vec-report0
-#FFLAGS              -g -traceback -r8 -O0 -xT -ip -vec-report0
Index: /trunk/NEMOGCM/ARCH/arch-PW6_C1A.fcm
===================================================================
--- /trunk/NEMOGCM/ARCH/arch-PW6_C1A.fcm	(revision 7)
+++ /trunk/NEMOGCM/ARCH/arch-PW6_C1A.fcm	(revision 7)
@@ -0,0 +1,29 @@
+# POWER 6 at ECMWF
+# NCDF_INC    netcdf include file
+# NCDF_LIB    netcdf library
+# FC          Fortran compiler command
+# FCFLAGS     Fortran compiler flags
+# FFLAGS      Fortran 77 compiler flags
+# LD          linker
+# LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+# FPPFLAGS    pre-processing flags
+# AR          assembler
+# ARFLAGS     assembler flags
+# MK          make  
+# USER_INC    additional include files for the compiler,  e.g. -I<include dir> 
+# USER_LIB    additional libraries to pass to the linker, e.g. -l<library>
+#-g -C -qsigtrap 
+
+%NCDF_INC            -I /usr/local/apps/netcdf/3.6.3/LP64/include
+%NCDF_LIB            -L /usr/local/apps/netcdf/3.6.3/LP64/lib -lnetcdf
+%FC                  mpxlf90_r
+%FCFLAGS             -qfree=f90 -O3 -qrealsize=8 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -qsource
+%FFLAGS              -qfixed -O3 -qrealsize=8 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -qsource
+%LD                  mpxlf90_r
+%LDFLAGS    
+%FPPFLAGS            -P -C
+%AR                  ar  
+%ARFLAGS             rs
+%MK                  gmake 
+%USER_INC            %NCDF_INC
+%USER_LIB            %NCDF_LIB 
Index: /trunk/NEMOGCM/CONFIG/AMM12/EXP00/namelist
===================================================================
--- /trunk/NEMOGCM/CONFIG/AMM12/EXP00/namelist	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/AMM12/EXP00/namelist	(revision 7)
@@ -525,22 +525,27 @@
    ln_traadv_qck    =  .false.  !  QUICKEST scheme                 
 /
-!-----------------------------------------------------------------------
-&namtra_ldf    !   lateral diffusion scheme for tracer 
-!-----------------------------------------------------------------------
-   !                       !  Type of the operator : 
-   ln_traldf_lap    =  .true.   !  laplacian operator       
-   ln_traldf_bilap  =  .false.  !  bilaplacian operator     
-   !                       !  Direction of action  :
-   ln_traldf_level  =  .false.  !  iso-level                
-   ln_traldf_hor    =  .true.   !     horizontal (geopotential)         (require "key_ldfslp" when ln_sco=T)
-   ln_traldf_iso    =  .false.  !     iso-neutral                       (require "key_ldfslp")
-   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")
-   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")
-   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp")
-   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp")
-                         !  Coefficient
-   rn_aht_0         =   50.     !     horizontal eddy diffusivity for tracers [m2/s]
+!----------------------------------------------------------------------------------
+&namtra_ldf    !   lateral diffusion scheme for tracers
+!----------------------------------------------------------------------------------
+   !                       !  Operator type:
+   ln_traldf_lap    =  .true.   !  laplacian operator
+   ln_traldf_bilap  =  .false.  !  bilaplacian operator
+   !                       !  Direction of action:
+   ln_traldf_level  =  .false.  !  iso-level
+   ln_traldf_hor    =  .true.   !  horizontal (geopotential)   (needs "key_ldfslp" when ln_sco=T)
+   ln_traldf_iso    =  .false.  !  iso-neutral                 (needs "key_ldfslp")
+   !		       	   !  Griffies parameters              (all need "key_ldfslp")
+   ln_traldf_grif   =  .false.  !  use griffies triads
+   ln_traldf_gdia   =  .false.  !  output griffies eddy velocities
+   ln_triad_iso     =  .false.  !  pure lateral mixing in ML
+   ln_botmix_grif   =  .false.  !  lateral mixing on bottom
+   !                       !  Coefficients
+   ! Eddy-induced (GM) advection always used with Griffies; otherwise needs "key_traldf_eiv"
+   ! Value rn_aeiv_0 is ignored unless = 0 with Held-Larichev spatially varying aeiv
+   !                                  (key_traldf_c2d & key_traldf_eiv & key_orca_r2, _r1 or _r05)
+   rn_aeiv_0        =     0.    !  eddy induced velocity coefficient [m2/s]
+   rn_aht_0         =    50.    !  horizontal eddy diffusivity for tracers [m2/s]
    rn_ahtb_0        =     0.    !  background eddy diffusivity for ldf_iso [m2/s]
-   rn_aeiv_0        =    0.     !     eddy induced velocity coefficient [m2/s]    (require "key_traldf_eiv")
+   !                                           (normally=0; not used with Griffies)
 /
 !-----------------------------------------------------------------------
@@ -857,5 +862,4 @@
     nitend_han = 75        ! Last time step used for harmonic analysis
     nstep_han  = 15        ! Time step frequency for harmonic analysis
-    nb_ana     = 2         ! Number of harmonics to analyse
     tname(1)   = 'M2'      ! Name of tidal constituents
     tname(2)   = 'K1'
Index: /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/iodef.xml
===================================================================
--- /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/iodef.xml	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/iodef.xml	(revision 7)
@@ -136,5 +136,5 @@
 	<field id="utau"         description="Wind Stress along i-axis"                    unit="N/m2" axis_ref="none" />
 	<field id="uoce"         description="ocean current along i-axis"                  unit="m/s"                  />
-	<field id="uocetr_eff"   description="Effective ocean transport along i-axis"      unit="m3/s"                  />
+	<field id="uocetr_eff"     description="Effective ocean transport along i-axis"    unit="m3/s"                 />
 	<!-- uoce_eiv: available with key_traldf_eiv and key_diaeiv -->
 	<field id="uoce_eiv"     description="EIV ocean current along i-axis"              unit="m/s"                  />
@@ -154,5 +154,5 @@
 	<field id="vtau"         description="Wind Stress along j-axis"                    unit="N/m2" axis_ref="none" />
 	<field id="voce"         description="ocean current along j-axis"                  unit="m/s"                  />
-	<field id="vocetr_eff"   description="Effective ocean transport along j-axis"      unit="m3/s"                  />
+	<field id="vocetr_eff"     description="Effective ocean tra,sport along j-axis"    unit="m3/s"                 />
 	<!-- voce_eiv: available with key_traldf_eiv and key_diaeiv -->
 	<field id="voce_eiv"     description="EIV ocean current along j-axis"              unit="m/s"                  />
@@ -171,5 +171,5 @@
       <group id="grid_W"  axis_ref="depthw" grid_ref="grid_W">
 	<field id="woce"         description="ocean vertical velocity"                     unit="m/s"                  />
-	<field id="wocetr_eff"   description="effective ocean vertical transport"          unit="m3/s"                 />
+	<field id="wocetr_eff"     description="effective ocean vertical transport"          unit="m3/s"                 />
 	<!-- woce_eiv: available with key_traldf_eiv and key_diaeiv -->
 	<field id="woce_eiv"     description="EIV ocean vertical velocity"                 unit="m/s"                  />
@@ -219,29 +219,29 @@
       <!-- ptrc on T grid -->
 
-     <group id="ptrc_T" axis_ref="deptht" grid_ref="grid_T">  
-       <field id="DIC"      description="Dissolved inorganic Concentration"        unit="molC/L" />
-       <field id="Alkalini" description="Total Alkalinity Concentration"           unit="eq/L"    />
-       <field id="O2"       description="Oxygen Concentration"                     unit="molO2/L" />
-       <field id="CaCO3"    description="Calcite Concentration"                    unit="molC/L" />
-       <field id="PO4"      description="Phosphate Concentration"                  unit="molC/L" />
-       <field id="POC"      description="Small organic carbon Concentration"       unit="molC/L" />
-       <field id="Si"       description="Silicate Concentration"                   unit="molSi/L" />
-       <field id="PHY"      description="Nanophytoplankton Concentration"          unit="molC/L" />
-       <field id="ZOO"      description="Microzooplankton Concentration"           unit="molC/L" />
-       <field id="DOC"      description="Dissolved organic Concentration"          unit="molC/L" />
-       <field id="PHY2"     description="Diatoms Concentration"                    unit="molC/L" />
-       <field id="ZOO2"     description="Mesozooplankton Concentration"            unit="molC/L" />
-       <field id="BSi"      description="Diatoms Silicate Concentration"           unit="molC/L" />
-       <field id="Fer"      description="Dissolved Iron Concentration"             unit="molFe/L" />
-       <field id="BFe"      description="Big iron particles Concentration"         unit="molFe/L" />
-       <field id="GOC"      description="Big organic carbon Concentration"         unit="molC/L" />
-       <field id="SFe"      description="Small iron particles Concentration"       unit="molFe/L" />
-       <field id="DFe"      description="Diatoms iron  Concentration"              unit="molFe/L" />
-       <field id="DSi"      description="Sinking biogenic Silicate Concentration"  unit="molC/L" />
-       <field id="NFe"      description="Nano iron Concentration"                  unit="molC/L" />
-       <field id="NCHL"     description="Nano chlorophyl Concentration"            unit="gChl/L" />
-       <field id="DCHL"     description="Diatoms chlorophyl Concentration"         unit="gChl/L" />
-       <field id="NO3"      description="Nitrates Concentration"                   unit="molC/L" />
-       <field id="NH4"      description="Ammonium Concentration"                   unit="molC/L" />
+     <group id="ptrc_T" axis_ref="deptht" grid_ref="grid_T">
+       <field id="DIC"      description="Dissolved inorganic Concentration"        unit="mmol/m3" />
+       <field id="Alkalini" description="Total Alkalinity Concentration"           unit="mmol/m3"    />
+       <field id="O2"       description="Oxygen Concentration"                     unit="mmol/m3" />
+       <field id="CaCO3"    description="Calcite Concentration"                    unit="mmol/m3" />
+       <field id="PO4"      description="Phosphate Concentration"                  unit="mmol/m3" />
+       <field id="POC"      description="Small organic carbon Concentration"       unit="mmol/m3" />
+       <field id="Si"       description="Silicate Concentration"                   unit="mmol/m3" />
+       <field id="PHY"      description="Nanophytoplankton Concentration"          unit="mmol/m3" />
+       <field id="ZOO"      description="Microzooplankton Concentration"           unit="mmol/m3" />
+       <field id="DOC"      description="Dissolved organic Concentration"          unit="mmol/m3" />
+       <field id="PHY2"     description="Diatoms Concentration"                    unit="mmol/m3" />
+       <field id="ZOO2"     description="Mesozooplankton Concentration"            unit="mmol/m3" />
+       <field id="DSi"      description="Diatoms Silicate Concentration"           unit="mmol/m3" />
+       <field id="Fer"      description="Dissolved Iron Concentration"             unit="mmol/m3" />
+       <field id="BFe"      description="Big iron particles Concentration"         unit="mmol/m3" />
+       <field id="GOC"      description="Big organic carbon Concentration"         unit="mmol/m3" />
+       <field id="SFe"      description="Small iron particles Concentration"       unit="mmol/m3" />
+       <field id="DFe"      description="Diatoms iron  Concentration"              unit="mmol/m3" />
+       <field id="GSi"      description="Sinking biogenic Silicate Concentration"  unit="mmol/m3" />
+       <field id="NFe"      description="Nano iron Concentration"                  unit="mmol/m3" />
+       <field id="NCHL"     description="Nano chlorophyl Concentration"            unit="mg/m3" />
+       <field id="DCHL"     description="Diatoms chlorophyl Concentration"         unit="mg/m3" />
+       <field id="NO3"      description="Nitrates Concentration"                   unit="mmol/m3" />
+       <field id="NH4"      description="Ammonium Concentration"                   unit="mmol/m3" />
      </group>
 
@@ -249,30 +249,41 @@
 
      <group id="diad_T" axis_ref="none" grid_ref="grid_T">
-       <field id="PH"          description="PH"                                       unit="-"           axis_ref="deptht" />
-       <field id="CO3"         description="Bicarbonates"                             unit="mol/L"       axis_ref="deptht" />
-       <field id="CO3sat"      description="CO3 saturation"                           unit="mol/L"       axis_ref="deptht" />
-       <field id="PAR"         description="Photosynthetically Available Radiation"   unit="W/m2"        axis_ref="deptht" />
-       <field id="PPPHY"       description="Primary production of nanophyto"          unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPPHY2"      description="Primary production of diatoms"            unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPNEWN"      description="New Primary production of nanophyto"      unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPNEWD"      description="New Primary production of diatoms"        unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PBSi"        description="Primary production of Si diatoms"         unit="molSi/m3/s"  axis_ref="deptht" />
-       <field id="PFeN"        description="Primary production of nano iron"          unit="molFe/m3/s"  axis_ref="deptht" />
-       <field id="PFeD"        description="Primary production of diatoms iron"       unit="molFe/m3/s"  axis_ref="deptht" />
-       <field id="PCAL"        description="Calcite production"                       unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="DCAL"        description="Calcite dissolution"                      unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="GRAZ"        description="Grazing by zooplankton"                   unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="Nfix"        description="Nitrogen fixation at surface"             unit="molN/m2/s"      />
-       <field id="EPC100"      description="Export of carbon particles at 100 m"      unit="molC/m2/s"      />
-       <field id="EPFE100"     description="Export of biogenic iron at 100 m"         unit="molFe/m2/s"     />
-       <field id="EPSI100"     description="Export of Silicate at 100 m"              unit="molSi/m2/s"     />
-       <field id="EPCAL100"    description="Export of Calcite at 100 m"               unit="molC/m2/s"      />
-       <field id="Cflx"        description="DIC flux"                                 unit="molC/m2/s"      />
-       <field id="Oflx"        description="Oxygen flux"                              unit="molC/m2/s"      />
-       <field id="Kg"          description="Gas transfer"                             unit="molC/m2/s/uatm" />
-       <field id="Dpco2"       description="Delta CO2"                                unit="uatm"            />
-       <field id="Dpo2"        description="Delta O2"                                 unit="uatm"            />
-       <field id="Heup"        description="Euphotic layer depth"                     unit="m"               />
-       <field id="Irondep"     description="Iron deposition"                          unit="molFe/m2/s"     />
+       <field id="PH"          description="PH"                                       unit="-"          axis_ref="deptht" />
+       <field id="CO3"         description="Bicarbonates"                             unit="mol/m3"     axis_ref="deptht" />
+       <field id="CO3sat"      description="CO3 saturation"                           unit="mol/m3"     axis_ref="deptht" />
+       <field id="PAR"         description="Photosynthetically Available Radiation"   unit="W/m2"       axis_ref="deptht" />
+       <field id="PPPHY"       description="Primary production of nanophyto"          unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPPHY2"      description="Primary production of diatoms"            unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPNEWN"      description="New Primary production of nanophyto"      unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPNEWD"      description="New Primary production of diatoms"        unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PBSi"        description="Primary production of Si diatoms"         unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PFeN"        description="Primary production of nano iron"          unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PFeD"        description="Primary production of diatoms iron"       unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PCAL"        description="Calcite production"                       unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="DCAL"        description="Calcite dissolution"                      unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="GRAZ"        description="Grazing by zooplankton"                   unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="Mumax"       description="Maximum growth rate"                      unit="s-1"        axis_ref="deptht" />
+       <field id="MuN"         description="Realized growth rate for nanophyto"       unit="s-1"        axis_ref="deptht" />
+       <field id="MuD"         description="Realized growth rate for diatomes"        unit="s-1"        axis_ref="deptht" />
+       <field id="MuNlight"    description="Light limited growth rate for nanophyto"  unit="s-1"        axis_ref="deptht" />
+       <field id="MuDlight"    description="Light limited growth rate for diatomes"   unit="s-1"        axis_ref="deptht" />
+       <field id="LNnut"       description="Nutrient limitation term in Nanophyto"    unit="-"          axis_ref="deptht" />
+       <field id="LDnut"       description="Nutrient limitation term in Diatoms"      unit="-"          axis_ref="deptht" />
+       <field id="LNFe"        description="Iron limitation term in Nanophyto"        unit="-"          axis_ref="deptht" />
+       <field id="LDFe"        description="Iron limitation term in Diatoms"          unit="-"          axis_ref="deptht" />
+       <field id="LNlight"     description="Light limitation term in Nanophyto"       unit="-"          axis_ref="deptht" />
+       <field id="LDlight"     description="Light limitation term in Diatoms"         unit="-"          axis_ref="deptht" />
+       <field id="Nfix"        description="Nitrogen fixation at surface"             unit="mol/m2/s"                     />
+       <field id="EPC100"      description="Export of carbon particles at 100 m"      unit="mol/m2/s"                     />
+       <field id="EPFE100"     description="Export of biogenic iron at 100 m"         unit="mol/m2/s"                     />
+       <field id="EPSI100"     description="Export of Silicate at 100 m"              unit="mol/m2/s"                     />
+       <field id="EPCAL100"    description="Export of Calcite at 100 m"               unit="mol/m2/s"                     />
+       <field id="Cflx"        description="DIC flux"                                 unit="mol/m2/s"                     />
+       <field id="Oflx"        description="Oxygen flux"                              unit="mol/m2/s"                     />
+       <field id="Kg"          description="Gas transfer"                             unit="mol/m2/s/uatm"                />
+       <field id="Dpco2"       description="Delta CO2"                                unit="uatm"                         />
+       <field id="Dpo2"        description="Delta O2"                                 unit="uatm"                         />
+       <field id="Heup"        description="Euphotic layer depth"                     unit="m"                            />
+       <field id="Irondep"     description="Iron deposition"                          unit="mol/m2/s"                     />
      </group>
        
@@ -478,5 +489,5 @@
           <field ref="PHY2"     />
           <field ref="ZOO2"     />
-          <field ref="BSi"      />
+          <field ref="DSi"      />
           <field ref="Fer"      />
           <field ref="BFe"      />
@@ -484,5 +495,5 @@
           <field ref="SFe"      />
           <field ref="DFe"      />
-          <field ref="DSi"      />
+          <field ref="GSi"      />
           <field ref="NFe"      />
           <field ref="NCHL"     />
@@ -507,4 +518,15 @@
           <field ref="DCAL"     />
           <field ref="GRAZ"     />
+          <field ref="Mumax"    />
+          <field ref="MuN"      />
+          <field ref="MuD"      />
+          <field ref="MuNlight" />
+          <field ref="MuDlight" />
+          <field ref="LNnut"    />
+          <field ref="LDnut"    />
+          <field ref="LNFe"     />
+          <field ref="LDFe"     />
+          <field ref="LNlight"  />
+          <field ref="LDlight"  />
           <field ref="EPC100"   />
           <field ref="EPFE100"  />
Index: /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist
===================================================================
--- /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist	(revision 7)
@@ -525,22 +525,27 @@
    ln_traadv_qck    =  .false.  !  QUICKEST scheme                 
 /
-!-----------------------------------------------------------------------
-&namtra_ldf    !   lateral diffusion scheme for tracer 
-!-----------------------------------------------------------------------
-   !                       !  Type of the operator : 
-   ln_traldf_lap    =  .true.   !  laplacian operator       
-   ln_traldf_bilap  =  .false.  !  bilaplacian operator     
-   !                       !  Direction of action  :
-   ln_traldf_level  =  .false.  !  iso-level                
-   ln_traldf_hor    =  .true.   !     horizontal (geopotential)         (require "key_ldfslp" when ln_sco=T)
-   ln_traldf_iso    =  .false.  !     iso-neutral                       (require "key_ldfslp")
-   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")
-   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")
-   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp")
-   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp")
-                         !  Coefficient
-   rn_aht_0         =   50.     !     horizontal eddy diffusivity for tracers [m2/s]
+!----------------------------------------------------------------------------------
+&namtra_ldf    !   lateral diffusion scheme for tracers
+!----------------------------------------------------------------------------------
+   !                       !  Operator type:
+   ln_traldf_lap    =  .true.   !  laplacian operator
+   ln_traldf_bilap  =  .false.  !  bilaplacian operator
+   !                       !  Direction of action:
+   ln_traldf_level  =  .false.  !  iso-level
+   ln_traldf_hor    =  .true.   !  horizontal (geopotential)   (needs "key_ldfslp" when ln_sco=T)
+   ln_traldf_iso    =  .false.  !  iso-neutral                 (needs "key_ldfslp")
+   !		       	   !  Griffies parameters              (all need "key_ldfslp")
+   ln_traldf_grif   =  .false.  !  use griffies triads
+   ln_traldf_gdia   =  .false.  !  output griffies eddy velocities
+   ln_triad_iso     =  .false.  !  pure lateral mixing in ML
+   ln_botmix_grif   =  .false.  !  lateral mixing on bottom
+   !                       !  Coefficients
+   ! Eddy-induced (GM) advection always used with Griffies; otherwise needs "key_traldf_eiv"
+   ! Value rn_aeiv_0 is ignored unless = 0 with Held-Larichev spatially varying aeiv
+   !                                  (key_traldf_c2d & key_traldf_eiv & key_orca_r2, _r1 or _r05)
+   rn_aeiv_0        =     0.    !  eddy induced velocity coefficient [m2/s]
+   rn_aht_0         =    50.    !  horizontal eddy diffusivity for tracers [m2/s]
    rn_ahtb_0        =     0.    !  background eddy diffusivity for ldf_iso [m2/s]
-   rn_aeiv_0        =    0.     !     eddy induced velocity coefficient [m2/s]    (require "key_traldf_eiv")
+   !                                           (normally=0; not used with Griffies)
 /
 !-----------------------------------------------------------------------
@@ -857,5 +862,4 @@
     nitend_han = 75        ! Last time step used for harmonic analysis
     nstep_han  = 15        ! Time step frequency for harmonic analysis
-    nb_ana     = 2         ! Number of harmonics to analyse
     tname(1)   = 'M2'      ! Name of tidal constituents
     tname(2)   = 'K1'
Index: /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist_pisces
===================================================================
--- /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist_pisces	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist_pisces	(revision 7)
@@ -222,5 +222,5 @@
 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    ln_pisdmp    =  .true.     !  Relaxation fo some tracers to a mean value
-   nn_pisdmp    =  5475       !  Frequency of Relaxation 
+   nn_pisdmp    =  210240     !  Frequency of Relaxation 
 /
 !'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Index: /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist_top
===================================================================
--- /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist_top	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/AMM12_PISCES/EXP00/namelist_top	(revision 7)
@@ -13,5 +13,5 @@
 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    nn_dttrc      =  1        !  time step frequency for passive sn_tracers      
-   nn_writetrc   =  10     !  time step frequency for sn_tracer outputs
+   nn_writetrc   =  576     !  time step frequency for sn_tracer outputs
    ln_rsttr      = .false.   !  start from a restart file (T) or not (F)
    nn_rsttr      =   0       !  restart control = 0 initial time step is not compared to the restart file value
@@ -20,9 +20,9 @@
    cn_trcrst_in  = "restart_trc"   !  suffix of pass. sn_tracer restart name (input)
    cn_trcrst_out = "restart_trc"   !  suffix of pass. sn_tracer restart name (output)
-   ln_trcdta     =   .false. !  Initialisation from data input file (T) or not (F)
+   ln_trcdta     =   .true. !  Initialisation from data input file (T) or not (F)
 !
-!              !    name   !           title of the field              !   units    ! initial data ! save   !
-!              !           !                                           !            ! from file    ! or not ! 
-!              !           !                                           !            ! or not       !        !
+!                !    name   !           title of the field              ! initial data ! initial data ! save   !
+!                !           !                                           !  units       ! from file    ! or not ! 
+!                !           !                                           !              ! or not       !        !
    sn_tracer(1)   = 'DIC     ' , 'Dissolved inorganic Concentration      ',  'mol-C/L' ,  .true.     ,  .true.
    sn_tracer(2)   = 'Alkalini' , 'Total Alkalinity Concentration         ',  'eq/L '   ,  .true.     ,  .true.
@@ -37,5 +37,5 @@
    sn_tracer(11)  = 'PHY2    ' , 'Diatoms Concentration                  ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(12)  = 'ZOO2    ' , 'Mesozooplankton Concentration          ',  'mol-C/L' ,  .false.    ,  .true.
-   sn_tracer(13)  = 'BSi     ' , 'Diatoms Silicate Concentration         ',  'mol-C/L' ,  .false.    ,  .true.
+   sn_tracer(13)  = 'DSi     ' , 'Diatoms Silicate Concentration         ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(14)  = 'Fer     ' , 'Dissolved Iron Concentration           ',  'mol-C/L' ,  .true.     ,  .true.
    sn_tracer(15)  = 'BFe     ' , 'Big iron particles Concentration       ',  'mol-C/L' ,  .false.    ,  .true.
@@ -43,5 +43,5 @@
    sn_tracer(17)  = 'SFe     ' , 'Small iron particles Concentration     ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(18)  = 'DFe     ' , 'Diatoms iron  Concentration            ',  'mol-C/L' ,  .false.    ,  .true.
-   sn_tracer(19)  = 'DSi     ' , 'Sinking biogenic Silicate Concentration',  'mol-C/L' ,  .false.    ,  .true.
+   sn_tracer(19)  = 'GSi     ' , 'Sinking biogenic Silicate Concentration',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(20)  = 'NFe     ' , 'Nano iron Concentration                ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(21)  = 'NCHL    ' , 'Nano chlorophyl Concentration          ',  'mol-C/L' ,  .false.    ,  .true.
@@ -130,5 +130,5 @@
 !                          or mixed-layer trends          ('key_trdmld_trc')
 !----------------------------------------------------------------------
-   nn_trd_trc  =  5475      !  time step frequency and tracers trends
+   nn_trd_trc  =  576      !  time step frequency and tracers trends
    nn_ctls_trc =   0        !  control surface type in mixed-layer trends (0,1 or n<jpk)
    rn_ucf_trc  =   1        !  unit conversion factor (=1 -> /seconds ; =86400. -> /day)
@@ -142,5 +142,5 @@
 &namtrc_dia       !   parameters for passive tracer additional diagnostics
 !----------------------------------------------------------------------
-   ln_diatrc     =  .false.  !  save additional diag. (T) or not (F)
-   nn_writedia   =  5475     !  time step frequency for diagnostics
+   ln_diatrc     =  .true.   !  save additional diag. (T) or not (F)
+   nn_writedia   =  576     !  time step frequency for diagnostics
 /
Index: /trunk/NEMOGCM/CONFIG/GYRE/EXP00/namelist
===================================================================
--- /trunk/NEMOGCM/CONFIG/GYRE/EXP00/namelist	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/GYRE/EXP00/namelist	(revision 7)
@@ -531,22 +531,27 @@
    ln_traadv_qck    =  .false.  !  QUICKEST scheme                 
 /
-!-----------------------------------------------------------------------
-&namtra_ldf    !   lateral diffusion scheme for tracer 
-!-----------------------------------------------------------------------
-   !                       !  Type of the operator : 
-   ln_traldf_lap    =  .true.   !  laplacian operator       
-   ln_traldf_bilap  =  .false.  !  bilaplacian operator     
-   !                       !  Direction of action  :
-   ln_traldf_level  =  .false.  !  iso-level                
-   ln_traldf_hor    =  .false.  !  horizontal (geopotential)            (require "key_ldfslp" when ln_sco=T)
-   ln_traldf_iso    =  .true.   !  iso-neutral                          (require "key_ldfslp")
-   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")
-   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")
-   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp")
-   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp")
-   !                       !  Coefficient
+!----------------------------------------------------------------------------------
+&namtra_ldf    !   lateral diffusion scheme for tracers
+!----------------------------------------------------------------------------------
+   !                       !  Operator type:
+   ln_traldf_lap    =  .true.   !  laplacian operator
+   ln_traldf_bilap  =  .false.  !  bilaplacian operator
+   !                       !  Direction of action:
+   ln_traldf_level  =  .false.  !  iso-level
+   ln_traldf_hor    =  .false.  !  horizontal (geopotential)   (needs "key_ldfslp" when ln_sco=T)
+   ln_traldf_iso    =  .true.   !  iso-neutral                 (needs "key_ldfslp")
+   !		       	   !  Griffies parameters              (all need "key_ldfslp")
+   ln_traldf_grif   =  .false.  !  use griffies triads
+   ln_traldf_gdia   =  .false.  !  output griffies eddy velocities
+   ln_triad_iso     =  .false.  !  pure lateral mixing in ML
+   ln_botmix_grif   =  .false.  !  lateral mixing on bottom
+   !                       !  Coefficients
+   ! Eddy-induced (GM) advection always used with Griffies; otherwise needs "key_traldf_eiv"
+   ! Value rn_aeiv_0 is ignored unless = 0 with Held-Larichev spatially varying aeiv
+   !                                  (key_traldf_c2d & key_traldf_eiv & key_orca_r2, _r1 or _r05)
+   rn_aeiv_0        =     0.    !  eddy induced velocity coefficient [m2/s]
    rn_aht_0         =  1000.    !  horizontal eddy diffusivity for tracers [m2/s]
    rn_ahtb_0        =     0.    !  background eddy diffusivity for ldf_iso [m2/s]
-   rn_aeiv_0        =     0.    !  eddy induced velocity coef. [m2/s]   (require "key_traldf_eiv")
+   !                                           (normally=0; not used with Griffies)
 /
 !-----------------------------------------------------------------------
Index: /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist
===================================================================
--- /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist	(revision 7)
@@ -94,22 +94,11 @@
 /
 !-----------------------------------------------------------------------
-&namdta_tem    !   data : temperature                                   ("key_dtatem")
-!-----------------------------------------------------------------------
-!              ! file name ! frequency (hours)    ! variable ! time interp. ! clim  !'yearly' or ! weights  ! rotation !
-!              !           !  (if <0  months)     !   name   !  (logical)   ! (T/F) ! 'monthly'  ! filename ! pairing  !
-   sn_tem = 'data_1m_potential_temperature_nomask', -1,'votemper',  .true.  , .true., 'yearly'   , ''      , ' '
-   !
-   cn_dir       = './'     !  root directory for the location of the runoff files
-/
-!-----------------------------------------------------------------------
-&namdta_sal    !   data : salinity                                      ("key_dtasal")
-!-----------------------------------------------------------------------
-!              ! file name ! frequency (hours)    ! variable ! time interp. ! clim  !'yearly' or ! weights  ! rotation !
-!              !           !  (if <0  months)     !   name   !   (logical)  ! (T/F) ! 'monthly'  ! filename ! pairing  !
-   sn_sal      =  'data_1m_salinity_nomask',  -1  ,'vosaline',    .true.    , .true., 'yearly'   , ''       , ' '
-   !
-   cn_dir      = './'      !  root directory for the location of the runoff files
-/
-
+&namtsd    !   data : Temperature  & Salinity
+!-----------------------------------------------------------------------
+!          ! file name ! frequency (hours)    ! variable ! time interp. ! clim  !'yearly' or ! weights  ! rotation !
+!          !           !  (if <0  months)     !   name   !  (logical)   ! (T/F) ! 'monthly'  ! filename ! pairing  !
+   sn_tem  = 'data_1m_potential_temperature_nomask', -1,'votemper',  .true.  , .true., 'yearly'   , ' '      , ' '
+   sn_sal  = 'data_1m_salinity_nomask'             , -1,'vosaline',  .true.  , .true., 'yearly'   , ''       , ' '
+/
 !!======================================================================
 !!            ***  Surface Boundary Condition namelists  ***
@@ -751,4 +740,5 @@
    nn_bench    =    0      !  Bench mode (1/0): CAUTION use zero except for bench
                            !     (no physical validity of the results)
+   nn_timing =      0
 /
 
@@ -906,2 +896,26 @@
     salfixmin = -9999      !  Minimum salinity after applying the increments
 /
+!-----------------------------------------------------------------------
+&namsbc_wave   ! External fields from wave model
+!-----------------------------------------------------------------------
+!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation !
+!              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  !
+   sn_cdg      =  'cdg_wave' ,        1          , 'drag_coeff' , .true.   , .false. , 'daily'  ,''         , ''
+!
+   cn_dir_cdg  = './'  !  root directory for the location of drag coefficient files
+/
+!-----------------------------------------------------------------------
+&namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed)
+!-----------------------------------------------------------------------
+   ! Suggested lengthscale values are those of Eby & Holloway (1994) for a coarse model
+   ln_neptsimp       = .false.  ! yes/no use simplified neptune
+
+   ln_smooth_neptvel = .false.  ! yes/no smooth zunep, zvnep
+   rn_tslse          =  1.2e4   ! value of lengthscale L at the equator
+   rn_tslsp          =  3.0e3   ! value of lengthscale L at the pole
+   ! Specify whether to ramp down the Neptune velocity in shallow
+   ! water, and if so the depth range controlling such ramping down
+   ln_neptramp       = .true.   ! ramp down Neptune velocity in shallow water
+   rn_htrmin         =  100.0   ! min. depth of transition range
+   rn_htrmax         =  200.0   ! max. depth of transition range
+/
Index: /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef.xml
===================================================================
--- /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef.xml	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/iodef.xml	(revision 7)
@@ -48,4 +48,73 @@
 	<field id="botpres"      description="Pressure at sea floor"                     unit="dbar"                     />
 	<field id="cellthc"      description="Cell thickness"                            unit="m"     axis_ref="deptht"  />
+    <!-- tidal composante -->
+    <field id="M2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="M2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="S2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="S2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="N2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="N2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="K1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="K1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="O1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="O1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="Q1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="Q1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="M4x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="M4y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="K2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="K2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="P1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="P1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="Mfx"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="Mfy"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="Mmx"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="Mmy"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+
+    <field id="M2x_u"          description="M2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="M2y_u"          description="M2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="S2x_u"          description="S2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="S2y_u"          description="S2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="N2x_u"          description="N2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="N2y_u"          description="N2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="K1x_u"          description="K1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="K1y_u"          description="K1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="O1x_u"          description="O1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="O1y_u"          description="O1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Q1x_u"          description="Q1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="Q1y_u"          description="Q1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="M4x_u"          description="M4 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="M4y_u"          description="M4 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="K2x_u"          description="K2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="K2y_u"          description="K2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="P1x_u"          description="P1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="P1y_u"          description="P1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Mfx_u"          description="Mf current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="Mfy_u"          description="Mf current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Mmx_u"          description="Mm current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="Mmy_u"          description="Mm current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+
+    <field id="M2x_v"          description="M2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="M2y_v"          description="M2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="S2x_v"          description="S2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="S2y_v"          description="S2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="N2x_v"          description="N2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="N2y_v"          description="N2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="K1x_v"          description="K1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="K1y_v"          description="K1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="O1x_v"          description="O1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="O1y_v"          description="O1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Q1x_v"          description="Q1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="Q1y_v"          description="Q1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="M4x_v"          description="M4 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="M4y_v"          description="M4 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="K2x_v"          description="K2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="K2y_v"          description="K2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="P1x_v"          description="P1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="P1y_v"          description="P1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Mfx_v"          description="Mf current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="Mfy_v"          description="Mf current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Mmx_v"          description="Mm current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="Mmy_v"          description="Mm current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
      </group>
 
@@ -128,75 +197,4 @@
 	<field id="sntoice_cea"  description="Snow-Ice Formation Rate (cell average)"                       unit="kg/m2/s"  />
 	<field id="ticemel_cea"  description="Rate of Melt at Upper Surface of Sea Ice (cell average)"      unit="kg/m2/s"  />
-
-
-        <!-- tidal composante -->
-        <field id="M2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="M2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="S2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="S2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="N2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="N2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="K1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="K1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="O1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="O1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="Q1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="Q1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="M4x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="M4y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="K2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="K2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="P1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="P1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="Mfx"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="Mfy"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-        <field id="Mmx"          description="M2 Elevation harmonic real part "                             unit="m"        />
-        <field id="Mmy"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
-
-        <field id="M2x_u"          description="M2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="M2y_u"          description="M2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="S2x_u"          description="S2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="S2y_u"          description="S2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="N2x_u"          description="N2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="N2y_u"          description="N2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="K1x_u"          description="K1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="K1y_u"          description="K1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="O1x_u"          description="O1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="O1y_u"          description="O1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="Q1x_u"          description="Q1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="Q1y_u"          description="Q1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="M4x_u"          description="M4 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="M4y_u"          description="M4 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="K2x_u"          description="K2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="K2y_u"          description="K2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="P1x_u"          description="P1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="P1y_u"          description="P1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="Mfx_u"          description="Mf current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="Mfy_u"          description="Mf current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-        <field id="Mmx_u"          description="Mm current barotrope along i-axis harmonic real part "      unit="m/s"        />
-        <field id="Mmy_u"          description="Mm current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
-
-        <field id="M2x_v"          description="M2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="M2y_v"          description="M2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="S2x_v"          description="S2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="S2y_v"          description="S2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="N2x_v"          description="N2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="N2y_v"          description="N2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="K1x_v"          description="K1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="K1y_v"          description="K1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="O1x_v"          description="O1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="O1y_v"          description="O1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="Q1x_v"          description="Q1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="Q1y_v"          description="Q1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="M4x_v"          description="M4 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="M4y_v"          description="M4 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="K2x_v"          description="K2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="K2y_v"          description="K2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="P1x_v"          description="P1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="P1y_v"          description="P1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="Mfx_v"          description="Mf current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="Mfy_v"          description="Mf current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
-        <field id="Mmx_v"          description="Mm current barotrope along j-axis harmonic real part "      unit="m/s"        />
-        <field id="Mmy_v"          description="Mm current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
       </group>
 
@@ -349,4 +347,5 @@
 
         <!-- variables available with key_float, instantaneous fields -->
+<!--
         <file id="floats"  description="floats variables">
             <field ref="traj_lon"   name="floats_longitude"   freq_op="86400" />
@@ -358,5 +357,5 @@
             <field ref="traj_group" name="floats_group"       freq_op="86400" />
         </file>
-
+-->
       </group>
       
@@ -705,4 +704,73 @@
 	<field id="botpres"      description="Pressure at sea floor"                     unit="dbar"                     />
 	<field id="cellthc"      description="Cell thickness"                            unit="m"     axis_ref="deptht"  />
+    <!-- tidal composante -->
+    <field id="M2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="M2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="S2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="S2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="N2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="N2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="K1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="K1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="O1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="O1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="Q1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="Q1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="M4x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="M4y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="K2x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="K2y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="P1x"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="P1y"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="Mfx"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="Mfy"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+    <field id="Mmx"          description="M2 Elevation harmonic real part "                             unit="m"        />
+    <field id="Mmy"          description="M2 Elevation harmonic imaginary part"                         unit="m"        />
+
+    <field id="M2x_u"          description="M2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="M2y_u"          description="M2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="S2x_u"          description="S2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="S2y_u"          description="S2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="N2x_u"          description="N2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="N2y_u"          description="N2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="K1x_u"          description="K1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="K1y_u"          description="K1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="O1x_u"          description="O1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="O1y_u"          description="O1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Q1x_u"          description="Q1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="Q1y_u"          description="Q1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="M4x_u"          description="M4 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="M4y_u"          description="M4 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="K2x_u"          description="K2 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="K2y_u"          description="K2 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="P1x_u"          description="P1 current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="P1y_u"          description="P1 current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Mfx_u"          description="Mf current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="Mfy_u"          description="Mf current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Mmx_u"          description="Mm current barotrope along i-axis harmonic real part "      unit="m/s"        />
+    <field id="Mmy_u"          description="Mm current barotrope along i-axis harmonic imaginary part " unit="m/s"        />
+
+    <field id="M2x_v"          description="M2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="M2y_v"          description="M2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="S2x_v"          description="S2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="S2y_v"          description="S2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="N2x_v"          description="N2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="N2y_v"          description="N2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="K1x_v"          description="K1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="K1y_v"          description="K1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="O1x_v"          description="O1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="O1y_v"          description="O1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Q1x_v"          description="Q1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="Q1y_v"          description="Q1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="M4x_v"          description="M4 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="M4y_v"          description="M4 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="K2x_v"          description="K2 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="K2y_v"          description="K2 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="P1x_v"          description="P1 current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="P1y_v"          description="P1 current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Mfx_v"          description="Mf current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="Mfy_v"          description="Mf current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
+    <field id="Mmx_v"          description="Mm current barotrope along j-axis harmonic real part "      unit="m/s"        />
+    <field id="Mmy_v"          description="Mm current barotrope along j-axis harmonic imaginary part " unit="m/s"        />
      </group>
 
@@ -863,4 +931,15 @@
       </group>
 
+      <!-- variables available with key_float -->
+      <group id="floatvar" axis_ref="nfloat" grid_ref="scalarpoint" zoom_ref="1point">
+        <field id="traj_lon"   description="floats longitude"   unit="deg"   operation="inst(X)" />
+        <field id="traj_lat"   description="floats latitude"    unit="deg"   operation="inst(X)"  />
+        <field id="traj_dep"   description="floats depth"       unit="m"     operation="inst(X)"  />
+        <field id="traj_temp"  description="floats temperature" unit="degC"  operation="inst(X)"  />
+        <field id="traj_salt"  description="floats salinity"    unit="psu"   operation="inst(X)"  />
+        <field id="traj_dens"  description="floats density"     unit="kg/m3" operation="inst(X)"  />
+        <field id="traj_group" description="floats group"       unit="none"  operation="inst(X)"  />
+      </group>
+
     </field_definition>
     
@@ -897,30 +976,29 @@
 ............................................................................................................
     -->
-	<!-- automatic definition of the name based on id="1d_grid_T" 
-	     => this name is used as the radical for all file names of this group
-	     => add a suffix to be sure that all files names of this group are different   -->
-	<group id="1d_grid_T" name="auto" description="ocean T grid variables" >
-	  <!-- mooring: automatic definition of the file name suffix based on id="0n180wT"  -->
-	  <file id="0n180wT" name_suffix="auto" >
-	    <group id="0n180wT" zoom_ref="0n180wT" >    <!-- group of variables sharing the same zoom -->
-	      <field ref="toce" name="votemper"  />
-	      <field ref="uoce" name="vozocrtx"  />     <!-- include a U-grid variable in the list => switch to T-grid -->
-	    </group>
-	  </file>
-	  <!-- Equatorial section: automatic definition of the file name suffix based on id="EqT" -->
+        <!-- automatic definition of the name based on id="1d_grid_T"
+             => this name is used as the radical for all file names of this group
+             => add a suffix to be sure that all files names of this group are different   -->
+        <group id="1d_grid_T" name="auto" description="ocean T grid variables" >
+          <!-- global file with different operations on data   -->
+          <file id="global" >
+            <field ref="sst"    name="sst_1d_ave"                       />     <!-- mean -->
+            <field ref="sst"    name="sst_1d_max"  operation="t_max(X)" />     <!-- max -->
+            <field ref="M2x"     name="M2_x_elev"  />
+            <field ref="M2y"     name="M2_y_elev"  />
+          </file>
+        </group>
+
+        <!-- variables available with key_float, instantaneous fields -->
 <!--
-	  <file id="EqT" name_suffix="auto" >
-	    <group id="EqT" zoom_ref="EqT" >
-	      <field ref="toce" name="votemper"  />
-	    </group>
-	  </file>
--->	  
-	  <!-- global file with different operations on data   -->
-	  <file id="global" >
-	    <field ref="sst"    name="sst_1d_ave"                       />     <!-- mean -->
-	    <field ref="sst"    name="sst_1d_max"  operation="t_max(X)" />     <!-- max -->
-	  </file>
-	</group>
-
+        <file id="floats"  description="floats variables">
+            <field ref="traj_lon"   name="floats_longitude"   freq_op="86400" />
+            <field ref="traj_lat"   name="floats_latitude"    freq_op="86400" />
+            <field ref="traj_dep"   name="floats_depth"       freq_op="86400" />
+            <field ref="traj_temp"  name="floats_temperature" freq_op="86400" />
+            <field ref="traj_salt"  name="floats_salinity"    freq_op="86400" />
+            <field ref="traj_dens"  name="floats_density"     freq_op="86400" />
+            <field ref="traj_group" name="floats_group"       freq_op="86400" />
+        </file>
+-->
       </group>
       
@@ -1049,4 +1127,5 @@
       <axis id="depthw" description="Vertical W levels" unit="m" positive=".false." />
       <axis id="none" description="axe non defini" unit="none" size="1" />
+      <axis id="nfloat" description="Number of float"   unit="no unit" positive=".false." />
     </axis_definition> 
     
Index: /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist
===================================================================
--- /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist	(revision 7)
@@ -526,22 +526,27 @@
    ln_traadv_qck    =  .false.  !  QUICKEST scheme                 
 /
-!-----------------------------------------------------------------------
-&namtra_ldf    !   lateral diffusion scheme for tracer 
-!-----------------------------------------------------------------------
-   !                       !  Type of the operator : 
-   ln_traldf_lap    =  .true.   !  laplacian operator       
-   ln_traldf_bilap  =  .false.  !  bilaplacian operator     
-   !                       !  Direction of action  :
-   ln_traldf_level  =  .false.  !  iso-level                
-   ln_traldf_hor    =  .false.  !  horizontal (geopotential)            (require "key_ldfslp" when ln_sco=T)
-   ln_traldf_iso    =  .true.   !  iso-neutral                          (require "key_ldfslp")
-   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")
-   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")
-   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp")
-   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp")
-                         !  Coefficient
+!----------------------------------------------------------------------------------
+&namtra_ldf    !   lateral diffusion scheme for tracers
+!----------------------------------------------------------------------------------
+   !                       !  Operator type:
+   ln_traldf_lap    =  .true.   !  laplacian operator
+   ln_traldf_bilap  =  .false.  !  bilaplacian operator
+   !                       !  Direction of action:
+   ln_traldf_level  =  .false.  !  iso-level
+   ln_traldf_hor    =  .false.  !  horizontal (geopotential)   (needs "key_ldfslp" when ln_sco=T)
+   ln_traldf_iso    =  .true.   !  iso-neutral                 (needs "key_ldfslp")
+   !		       	   !  Griffies parameters              (all need "key_ldfslp")
+   ln_traldf_grif   =  .false.  !  use griffies triads
+   ln_traldf_gdia   =  .false.  !  output griffies eddy velocities
+   ln_triad_iso     =  .false.  !  pure lateral mixing in ML
+   ln_botmix_grif   =  .false.  !  lateral mixing on bottom
+   !                       !  Coefficients
+   ! Eddy-induced (GM) advection always used with Griffies; otherwise needs "key_traldf_eiv"
+   ! Value rn_aeiv_0 is ignored unless = 0 with Held-Larichev spatially varying aeiv
+   !                                  (key_traldf_c2d & key_traldf_eiv & key_orca_r2, _r1 or _r05)
+   rn_aeiv_0        =  2000.    !  eddy induced velocity coefficient [m2/s]
    rn_aht_0         =  2000.    !  horizontal eddy diffusivity for tracers [m2/s]
    rn_ahtb_0        =     0.    !  background eddy diffusivity for ldf_iso [m2/s]
-   rn_aeiv_0        =  2000.    !  eddy induced velocity coefficient [m2/s]    (require "key_traldf_eiv")
+   !                                           (normally=0; not used with Griffies)
 /
 !-----------------------------------------------------------------------
@@ -852,5 +857,4 @@
     nitend_han = 75        ! Last time step used for harmonic analysis
     nstep_han  = 15        ! Time step frequency for harmonic analysis
-    nb_ana     = 2         ! Number of harmonics to analyse
     tname(1)   = 'M2'      ! Name of tidal constituents
     tname(2)   = 'K1'
Index: /trunk/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/iodef.xml
===================================================================
--- /trunk/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/iodef.xml	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/iodef.xml	(revision 7)
@@ -219,29 +219,29 @@
       <!-- ptrc on T grid -->
 
-     <group id="ptrc_T" axis_ref="deptht" grid_ref="grid_T">  
-       <field id="DIC"      description="Dissolved inorganic Concentration"        unit="molC/L" />
-       <field id="Alkalini" description="Total Alkalinity Concentration"           unit="eq/L"    />
-       <field id="O2"       description="Oxygen Concentration"                     unit="molO2/L" />
-       <field id="CaCO3"    description="Calcite Concentration"                    unit="molC/L" />
-       <field id="PO4"      description="Phosphate Concentration"                  unit="molC/L" />
-       <field id="POC"      description="Small organic carbon Concentration"       unit="molC/L" />
-       <field id="Si"       description="Silicate Concentration"                   unit="molSi/L" />
-       <field id="PHY"      description="Nanophytoplankton Concentration"          unit="molC/L" />
-       <field id="ZOO"      description="Microzooplankton Concentration"           unit="molC/L" />
-       <field id="DOC"      description="Dissolved organic Concentration"          unit="molC/L" />
-       <field id="PHY2"     description="Diatoms Concentration"                    unit="molC/L" />
-       <field id="ZOO2"     description="Mesozooplankton Concentration"            unit="molC/L" />
-       <field id="BSi"      description="Diatoms Silicate Concentration"           unit="molC/L" />
-       <field id="Fer"      description="Dissolved Iron Concentration"             unit="molFe/L" />
-       <field id="BFe"      description="Big iron particles Concentration"         unit="molFe/L" />
-       <field id="GOC"      description="Big organic carbon Concentration"         unit="molC/L" />
-       <field id="SFe"      description="Small iron particles Concentration"       unit="molFe/L" />
-       <field id="DFe"      description="Diatoms iron  Concentration"              unit="molFe/L" />
-       <field id="DSi"      description="Sinking biogenic Silicate Concentration"  unit="molC/L" />
-       <field id="NFe"      description="Nano iron Concentration"                  unit="molC/L" />
-       <field id="NCHL"     description="Nano chlorophyl Concentration"            unit="gChl/L" />
-       <field id="DCHL"     description="Diatoms chlorophyl Concentration"         unit="gChl/L" />
-       <field id="NO3"      description="Nitrates Concentration"                   unit="molC/L" />
-       <field id="NH4"      description="Ammonium Concentration"                   unit="molC/L" />
+     <group id="ptrc_T" axis_ref="deptht" grid_ref="grid_T">
+       <field id="DIC"      description="Dissolved inorganic Concentration"        unit="mmol/m3" />
+       <field id="Alkalini" description="Total Alkalinity Concentration"           unit="mmol/m3"    />
+       <field id="O2"       description="Oxygen Concentration"                     unit="mmol/m3" />
+       <field id="CaCO3"    description="Calcite Concentration"                    unit="mmol/m3" />
+       <field id="PO4"      description="Phosphate Concentration"                  unit="mmol/m3" />
+       <field id="POC"      description="Small organic carbon Concentration"       unit="mmol/m3" />
+       <field id="Si"       description="Silicate Concentration"                   unit="mmol/m3" />
+       <field id="PHY"      description="Nanophytoplankton Concentration"          unit="mmol/m3" />
+       <field id="ZOO"      description="Microzooplankton Concentration"           unit="mmol/m3" />
+       <field id="DOC"      description="Dissolved organic Concentration"          unit="mmol/m3" />
+       <field id="PHY2"     description="Diatoms Concentration"                    unit="mmol/m3" />
+       <field id="ZOO2"     description="Mesozooplankton Concentration"            unit="mmol/m3" />
+       <field id="DSi"      description="Diatoms Silicate Concentration"           unit="mmol/m3" />
+       <field id="Fer"      description="Dissolved Iron Concentration"             unit="mmol/m3" />
+       <field id="BFe"      description="Big iron particles Concentration"         unit="mmol/m3" />
+       <field id="GOC"      description="Big organic carbon Concentration"         unit="mmol/m3" />
+       <field id="SFe"      description="Small iron particles Concentration"       unit="mmol/m3" />
+       <field id="DFe"      description="Diatoms iron  Concentration"              unit="mmol/m3" />
+       <field id="GSi"      description="Sinking biogenic Silicate Concentration"  unit="mmol/m3" />
+       <field id="NFe"      description="Nano iron Concentration"                  unit="mmol/m3" />
+       <field id="NCHL"     description="Nano chlorophyl Concentration"            unit="mg/m3" />
+       <field id="DCHL"     description="Diatoms chlorophyl Concentration"         unit="mg/m3" />
+       <field id="NO3"      description="Nitrates Concentration"                   unit="mmol/m3" />
+       <field id="NH4"      description="Ammonium Concentration"                   unit="mmol/m3" />
      </group>
 
@@ -249,30 +249,41 @@
 
      <group id="diad_T" axis_ref="none" grid_ref="grid_T">
-       <field id="PH"          description="PH"                                       unit="-"           axis_ref="deptht" />
-       <field id="CO3"         description="Bicarbonates"                             unit="mol/L"       axis_ref="deptht" />
-       <field id="CO3sat"      description="CO3 saturation"                           unit="mol/L"       axis_ref="deptht" />
-       <field id="PAR"         description="Photosynthetically Available Radiation"   unit="W/m2"        axis_ref="deptht" />
-       <field id="PPPHY"       description="Primary production of nanophyto"          unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPPHY2"      description="Primary production of diatoms"            unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPNEWN"      description="New Primary production of nanophyto"      unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPNEWD"      description="New Primary production of diatoms"        unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PBSi"        description="Primary production of Si diatoms"         unit="molSi/m3/s"  axis_ref="deptht" />
-       <field id="PFeN"        description="Primary production of nano iron"          unit="molFe/m3/s"  axis_ref="deptht" />
-       <field id="PFeD"        description="Primary production of diatoms iron"       unit="molFe/m3/s"  axis_ref="deptht" />
-       <field id="PCAL"        description="Calcite production"                       unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="DCAL"        description="Calcite dissolution"                      unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="GRAZ"        description="Grazing by zooplankton"                   unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="Nfix"        description="Nitrogen fixation at surface"             unit="molN/m2/s"      />
-       <field id="EPC100"      description="Export of carbon particles at 100 m"      unit="molC/m2/s"      />
-       <field id="EPFE100"     description="Export of biogenic iron at 100 m"         unit="molFe/m2/s"     />
-       <field id="EPSI100"     description="Export of Silicate at 100 m"              unit="molSi/m2/s"     />
-       <field id="EPCAL100"    description="Export of Calcite at 100 m"               unit="molC/m2/s"      />
-       <field id="Cflx"        description="DIC flux"                                 unit="molC/m2/s"      />
-       <field id="Oflx"        description="Oxygen flux"                              unit="molC/m2/s"      />
-       <field id="Kg"          description="Gas transfer"                             unit="molC/m2/s/uatm" />
-       <field id="Dpco2"       description="Delta CO2"                                unit="uatm"            />
-       <field id="Dpo2"        description="Delta O2"                                 unit="uatm"            />
-       <field id="Heup"        description="Euphotic layer depth"                     unit="m"               />
-       <field id="Irondep"     description="Iron deposition"                          unit="molFe/m2/s"     />
+       <field id="PH"          description="PH"                                       unit="-"          axis_ref="deptht" />
+       <field id="CO3"         description="Bicarbonates"                             unit="mol/m3"     axis_ref="deptht" />
+       <field id="CO3sat"      description="CO3 saturation"                           unit="mol/m3"     axis_ref="deptht" />
+       <field id="PAR"         description="Photosynthetically Available Radiation"   unit="W/m2"       axis_ref="deptht" />
+       <field id="PPPHY"       description="Primary production of nanophyto"          unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPPHY2"      description="Primary production of diatoms"            unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPNEWN"      description="New Primary production of nanophyto"      unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPNEWD"      description="New Primary production of diatoms"        unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PBSi"        description="Primary production of Si diatoms"         unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PFeN"        description="Primary production of nano iron"          unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PFeD"        description="Primary production of diatoms iron"       unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PCAL"        description="Calcite production"                       unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="DCAL"        description="Calcite dissolution"                      unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="GRAZ"        description="Grazing by zooplankton"                   unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="Mumax"       description="Maximum growth rate"                      unit="s-1"        axis_ref="deptht" />
+       <field id="MuN"         description="Realized growth rate for nanophyto"       unit="s-1"        axis_ref="deptht" />
+       <field id="MuD"         description="Realized growth rate for diatomes"        unit="s-1"        axis_ref="deptht" />
+       <field id="MuNlight"    description="Light limited growth rate for nanophyto"  unit="s-1"        axis_ref="deptht" />
+       <field id="MuDlight"    description="Light limited growth rate for diatomes"   unit="s-1"        axis_ref="deptht" />
+       <field id="LNnut"       description="Nutrient limitation term in Nanophyto"    unit="-"          axis_ref="deptht" />
+       <field id="LDnut"       description="Nutrient limitation term in Diatoms"      unit="-"          axis_ref="deptht" />
+       <field id="LNFe"        description="Iron limitation term in Nanophyto"        unit="-"          axis_ref="deptht" />
+       <field id="LDFe"        description="Iron limitation term in Diatoms"          unit="-"          axis_ref="deptht" />
+       <field id="LNlight"     description="Light limitation term in Nanophyto"       unit="-"          axis_ref="deptht" />
+       <field id="LDlight"     description="Light limitation term in Diatoms"         unit="-"          axis_ref="deptht" />
+       <field id="Nfix"        description="Nitrogen fixation at surface"             unit="mol/m2/s"                     />
+       <field id="EPC100"      description="Export of carbon particles at 100 m"      unit="mol/m2/s"                     />
+       <field id="EPFE100"     description="Export of biogenic iron at 100 m"         unit="mol/m2/s"                     />
+       <field id="EPSI100"     description="Export of Silicate at 100 m"              unit="mol/m2/s"                     />
+       <field id="EPCAL100"    description="Export of Calcite at 100 m"               unit="mol/m2/s"                     />
+       <field id="Cflx"        description="DIC flux"                                 unit="mol/m2/s"                     />
+       <field id="Oflx"        description="Oxygen flux"                              unit="mol/m2/s"                     />
+       <field id="Kg"          description="Gas transfer"                             unit="mol/m2/s/uatm"                />
+       <field id="Dpco2"       description="Delta CO2"                                unit="uatm"                         />
+       <field id="Dpo2"        description="Delta O2"                                 unit="uatm"                         />
+       <field id="Heup"        description="Euphotic layer depth"                     unit="m"                            />
+       <field id="Irondep"     description="Iron deposition"                          unit="mol/m2/s"                     />
      </group>
        
@@ -478,5 +489,5 @@
           <field ref="PHY2"     />
           <field ref="ZOO2"     />
-          <field ref="BSi"      />
+          <field ref="DSi"      />
           <field ref="Fer"      />
           <field ref="BFe"      />
@@ -484,5 +495,5 @@
           <field ref="SFe"      />
           <field ref="DFe"      />
-          <field ref="DSi"      />
+          <field ref="GSi"      />
           <field ref="NFe"      />
           <field ref="NCHL"     />
@@ -507,4 +518,15 @@
           <field ref="DCAL"     />
           <field ref="GRAZ"     />
+          <field ref="Mumax"    />
+          <field ref="MuN"      />
+          <field ref="MuD"      />
+          <field ref="MuNlight" />
+          <field ref="MuDlight" />
+          <field ref="LNnut"    />
+          <field ref="LDnut"    />
+          <field ref="LNFe"     />
+          <field ref="LDFe"     />
+          <field ref="LNlight"  />
+          <field ref="LDlight"  />
           <field ref="EPC100"   />
           <field ref="EPFE100"  />
Index: /trunk/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_top
===================================================================
--- /trunk/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_top	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_top	(revision 7)
@@ -22,7 +22,7 @@
    ln_trcdta     =   .true. !  Initialisation from data input file (T) or not (F)
 !
-!              !    name   !           title of the field              !   units    ! initial data ! save   !
-!              !           !                                           !            ! from file    ! or not ! 
-!              !           !                                           !            ! or not       !        !
+!                !    name   !           title of the field              ! initial data ! initial data ! save   !
+!                !           !                                           !  units       ! from file    ! or not ! 
+!                !           !                                           !              ! or not       !        !
    sn_tracer(1)   = 'DIC     ' , 'Dissolved inorganic Concentration      ',  'mol-C/L' ,  .true.     ,  .true.
    sn_tracer(2)   = 'Alkalini' , 'Total Alkalinity Concentration         ',  'eq/L '   ,  .true.     ,  .true.
@@ -37,5 +37,5 @@
    sn_tracer(11)  = 'PHY2    ' , 'Diatoms Concentration                  ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(12)  = 'ZOO2    ' , 'Mesozooplankton Concentration          ',  'mol-C/L' ,  .false.    ,  .true.
-   sn_tracer(13)  = 'BSi     ' , 'Diatoms Silicate Concentration         ',  'mol-C/L' ,  .false.    ,  .true.
+   sn_tracer(13)  = 'DSi     ' , 'Diatoms Silicate Concentration         ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(14)  = 'Fer     ' , 'Dissolved Iron Concentration           ',  'mol-C/L' ,  .true.     ,  .true.
    sn_tracer(15)  = 'BFe     ' , 'Big iron particles Concentration       ',  'mol-C/L' ,  .false.    ,  .true.
@@ -43,5 +43,5 @@
    sn_tracer(17)  = 'SFe     ' , 'Small iron particles Concentration     ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(18)  = 'DFe     ' , 'Diatoms iron  Concentration            ',  'mol-C/L' ,  .false.    ,  .true.
-   sn_tracer(19)  = 'DSi     ' , 'Sinking biogenic Silicate Concentration',  'mol-C/L' ,  .false.    ,  .true.
+   sn_tracer(19)  = 'GSi     ' , 'Sinking biogenic Silicate Concentration',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(20)  = 'NFe     ' , 'Nano iron Concentration                ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(21)  = 'NCHL    ' , 'Nano chlorophyl Concentration          ',  'mol-C/L' ,  .false.    ,  .true.
Index: /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/iodef.xml
===================================================================
--- /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/iodef.xml	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/iodef.xml	(revision 7)
@@ -18,28 +18,28 @@
  
      <group id="ptrc_T" axis_ref="deptht" grid_ref="grid_T">
-       <field id="DIC"      description="Dissolved inorganic Concentration"        unit="molC/L" />
-       <field id="Alkalini" description="Total Alkalinity Concentration"           unit="eq/L"    />
-       <field id="O2"       description="Oxygen Concentration"                     unit="molO2/L" />
-       <field id="CaCO3"    description="Calcite Concentration"                    unit="molC/L" />
-       <field id="PO4"      description="Phosphate Concentration"                  unit="molC/L" />
-       <field id="POC"      description="Small organic carbon Concentration"       unit="molC/L" />
-       <field id="Si"       description="Silicate Concentration"                   unit="molSi/L" />
-       <field id="PHY"      description="Nanophytoplankton Concentration"          unit="molC/L" />
-       <field id="ZOO"      description="Microzooplankton Concentration"           unit="molC/L" />
-       <field id="DOC"      description="Dissolved organic Concentration"          unit="molC/L" />
-       <field id="PHY2"     description="Diatoms Concentration"                    unit="molC/L" />
-       <field id="ZOO2"     description="Mesozooplankton Concentration"            unit="molC/L" />
-       <field id="BSi"      description="Diatoms Silicate Concentration"           unit="molC/L" />
-       <field id="Fer"      description="Dissolved Iron Concentration"             unit="molFe/L" />
-       <field id="BFe"      description="Big iron particles Concentration"         unit="molFe/L" />
-       <field id="GOC"      description="Big organic carbon Concentration"         unit="molC/L" />
-       <field id="SFe"      description="Small iron particles Concentration"       unit="molFe/L" />
-       <field id="DFe"      description="Diatoms iron  Concentration"              unit="molFe/L" />
-       <field id="DSi"      description="Sinking biogenic Silicate Concentration"  unit="molC/L" />
-       <field id="NFe"      description="Nano iron Concentration"                  unit="molC/L" />
-       <field id="NCHL"     description="Nano chlorophyl Concentration"            unit="gChl/L" />
-       <field id="DCHL"     description="Diatoms chlorophyl Concentration"         unit="gChl/L" />
-       <field id="NO3"      description="Nitrates Concentration"                   unit="molC/L" />
-       <field id="NH4"      description="Ammonium Concentration"                   unit="molC/L" />
+       <field id="DIC"      description="Dissolved inorganic Concentration"        unit="mmol/m3" />
+       <field id="Alkalini" description="Total Alkalinity Concentration"           unit="mmol/m3"    />
+       <field id="O2"       description="Oxygen Concentration"                     unit="mmol/m3" />
+       <field id="CaCO3"    description="Calcite Concentration"                    unit="mmol/m3" />
+       <field id="PO4"      description="Phosphate Concentration"                  unit="mmol/m3" />
+       <field id="POC"      description="Small organic carbon Concentration"       unit="mmol/m3" />
+       <field id="Si"       description="Silicate Concentration"                   unit="mmol/m3" />
+       <field id="PHY"      description="Nanophytoplankton Concentration"          unit="mmol/m3" />
+       <field id="ZOO"      description="Microzooplankton Concentration"           unit="mmol/m3" />
+       <field id="DOC"      description="Dissolved organic Concentration"          unit="mmol/m3" />
+       <field id="PHY2"     description="Diatoms Concentration"                    unit="mmol/m3" />
+       <field id="ZOO2"     description="Mesozooplankton Concentration"            unit="mmol/m3" />
+       <field id="DSi"      description="Diatoms Silicate Concentration"           unit="mmol/m3" />
+       <field id="Fer"      description="Dissolved Iron Concentration"             unit="mmol/m3" />
+       <field id="BFe"      description="Big iron particles Concentration"         unit="mmol/m3" />
+       <field id="GOC"      description="Big organic carbon Concentration"         unit="mmol/m3" />
+       <field id="SFe"      description="Small iron particles Concentration"       unit="mmol/m3" />
+       <field id="DFe"      description="Diatoms iron  Concentration"              unit="mmol/m3" />
+       <field id="GSi"      description="Sinking biogenic Silicate Concentration"  unit="mmol/m3" />
+       <field id="NFe"      description="Nano iron Concentration"                  unit="mmol/m3" />
+       <field id="NCHL"     description="Nano chlorophyl Concentration"            unit="mg/m3" />
+       <field id="DCHL"     description="Diatoms chlorophyl Concentration"         unit="mg/m3" />
+       <field id="NO3"      description="Nitrates Concentration"                   unit="mmol/m3" />
+       <field id="NH4"      description="Ammonium Concentration"                   unit="mmol/m3" />
      </group>
 
@@ -47,31 +47,42 @@
 
      <group id="diad_T" axis_ref="none" grid_ref="grid_T">
-       <field id="PH"          description="PH"                                       unit="-"           axis_ref="deptht" />
-       <field id="CO3"         description="Bicarbonates"                             unit="mol/L"       axis_ref="deptht" />
-       <field id="CO3sat"      description="CO3 saturation"                           unit="mol/L"       axis_ref="deptht" />
-       <field id="PAR"         description="Photosynthetically Available Radiation"   unit="W/m2"        axis_ref="deptht" />
-       <field id="PPPHY"       description="Primary production of nanophyto"          unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPPHY2"      description="Primary production of diatoms"            unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPNEWN"      description="New Primary production of nanophyto"      unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PPNEWD"      description="New Primary production of diatoms"        unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="PBSi"        description="Primary production of Si diatoms"         unit="molSi/m3/s"  axis_ref="deptht" />
-       <field id="PFeN"        description="Primary production of nano iron"          unit="molFe/m3/s"  axis_ref="deptht" />
-       <field id="PFeD"        description="Primary production of diatoms iron"       unit="molFe/m3/s"  axis_ref="deptht" />
-       <field id="PCAL"        description="Calcite production"                       unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="DCAL"        description="Calcite dissolution"                      unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="GRAZ"        description="Grazing by zooplankton"                   unit="molC/m3/s"   axis_ref="deptht" />
-       <field id="Nfix"        description="Nitrogen fixation at surface"             unit="molN/m2/s"      />
-       <field id="EPC100"      description="Export of carbon particles at 100 m"      unit="molC/m2/s"      />
-       <field id="EPFE100"     description="Export of biogenic iron at 100 m"         unit="molFe/m2/s"     />
-       <field id="EPSI100"     description="Export of Silicate at 100 m"              unit="molSi/m2/s"     />
-       <field id="EPCAL100"    description="Export of Calcite at 100 m"               unit="molC/m2/s"      />
-       <field id="Cflx"        description="DIC flux"                                 unit="molC/m2/s"      />
-       <field id="Oflx"        description="Oxygen flux"                              unit="molC/m2/s"      />
-       <field id="Kg"          description="Gas transfer"                             unit="molC/m2/s/uatm" />
-       <field id="Dpco2"       description="Delta CO2"                                unit="uatm"            />
-       <field id="Dpo2"        description="Delta O2"                                 unit="uatm"            />
-       <field id="Heup"        description="Euphotic layer depth"                     unit="m"               />
-       <field id="Irondep"     description="Iron deposition"                          unit="molFe/m2/s"     />
-     </group>         
+       <field id="PH"          description="PH"                                       unit="-"          axis_ref="deptht" />
+       <field id="CO3"         description="Bicarbonates"                             unit="mol/m3"     axis_ref="deptht" />
+       <field id="CO3sat"      description="CO3 saturation"                           unit="mol/m3"     axis_ref="deptht" />
+       <field id="PAR"         description="Photosynthetically Available Radiation"   unit="W/m2"       axis_ref="deptht" />
+       <field id="PPPHY"       description="Primary production of nanophyto"          unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPPHY2"      description="Primary production of diatoms"            unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPNEWN"      description="New Primary production of nanophyto"      unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PPNEWD"      description="New Primary production of diatoms"        unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PBSi"        description="Primary production of Si diatoms"         unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PFeN"        description="Primary production of nano iron"          unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PFeD"        description="Primary production of diatoms iron"       unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="PCAL"        description="Calcite production"                       unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="DCAL"        description="Calcite dissolution"                      unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="GRAZ"        description="Grazing by zooplankton"                   unit="mol/m3/s"   axis_ref="deptht" />
+       <field id="Mumax"       description="Maximum growth rate"                      unit="s-1"        axis_ref="deptht" />
+       <field id="MuN"         description="Realized growth rate for nanophyto"       unit="s-1"        axis_ref="deptht" />
+       <field id="MuD"         description="Realized growth rate for diatomes"        unit="s-1"        axis_ref="deptht" />
+       <field id="MuNlight"    description="Light limited growth rate for nanophyto"  unit="s-1"        axis_ref="deptht" />
+       <field id="MuDlight"    description="Light limited growth rate for diatomes"   unit="s-1"        axis_ref="deptht" />
+       <field id="LNnut"       description="Nutrient limitation term in Nanophyto"    unit="-"          axis_ref="deptht" />
+       <field id="LDnut"       description="Nutrient limitation term in Diatoms"      unit="-"          axis_ref="deptht" />
+       <field id="LNFe"        description="Iron limitation term in Nanophyto"        unit="-"          axis_ref="deptht" />
+       <field id="LDFe"        description="Iron limitation term in Diatoms"          unit="-"          axis_ref="deptht" />
+       <field id="LNlight"     description="Light limitation term in Nanophyto"       unit="-"          axis_ref="deptht" />
+       <field id="LDlight"     description="Light limitation term in Diatoms"         unit="-"          axis_ref="deptht" />
+       <field id="Nfix"        description="Nitrogen fixation at surface"             unit="mol/m2/s"                     />
+       <field id="EPC100"      description="Export of carbon particles at 100 m"      unit="mol/m2/s"                     />
+       <field id="EPFE100"     description="Export of biogenic iron at 100 m"         unit="mol/m2/s"                     />
+       <field id="EPSI100"     description="Export of Silicate at 100 m"              unit="mol/m2/s"                     />
+       <field id="EPCAL100"    description="Export of Calcite at 100 m"               unit="mol/m2/s"                     />
+       <field id="Cflx"        description="DIC flux"                                 unit="mol/m2/s"                     />
+       <field id="Oflx"        description="Oxygen flux"                              unit="mol/m2/s"                     />
+       <field id="Kg"          description="Gas transfer"                             unit="mol/m2/s/uatm"                />
+       <field id="Dpco2"       description="Delta CO2"                                unit="uatm"                         />
+       <field id="Dpo2"        description="Delta O2"                                 unit="uatm"                         />
+       <field id="Heup"        description="Euphotic layer depth"                     unit="m"                            />
+       <field id="Irondep"     description="Iron deposition"                          unit="mol/m2/s"                     />
+     </group>
 
       <!-- scalar -->
@@ -148,5 +159,5 @@
           <field ref="PHY2"     />
           <field ref="ZOO2"     />
-          <field ref="BSi"      />
+          <field ref="DSi"      />
           <field ref="Fer"      />
           <field ref="BFe"      />
@@ -154,5 +165,5 @@
           <field ref="SFe"      />
           <field ref="DFe"      />
-          <field ref="DSi"      />
+          <field ref="GSi"      />
           <field ref="NFe"      />
           <field ref="NCHL"     />
@@ -177,4 +188,15 @@
           <field ref="DCAL"     />
           <field ref="GRAZ"     />
+          <field ref="Mumax"    />
+          <field ref="MuN"      />
+          <field ref="MuD"      />
+          <field ref="MuNlight" />
+          <field ref="MuDlight" />
+          <field ref="LNnut"    />
+          <field ref="LDnut"    />
+          <field ref="LNFe"     />
+          <field ref="LDFe"     />
+          <field ref="LNlight"  />
+          <field ref="LDlight"  />
           <field ref="EPC100"   />
           <field ref="EPFE100"  />
Index: /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist
===================================================================
--- /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist	(revision 7)
@@ -508,22 +508,27 @@
    ln_traadv_qck    =  .false.  !  QUICKEST scheme
 /
-!-----------------------------------------------------------------------
-&namtra_ldf    !   lateral diffusion scheme for tracer 
-!-----------------------------------------------------------------------
-   !                       !  Type of the operator : 
-   ln_traldf_lap    =  .true.   !  laplacian operator       
-   ln_traldf_bilap  =  .false.  !  bilaplacian operator     
-   !                       !  Direction of action  :
-   ln_traldf_level  =  .false.  !  iso-level                
-   ln_traldf_hor    =  .false.  !  horizontal (geopotential)            (require "key_ldfslp" when ln_sco=T)
-   ln_traldf_iso    =  .true.   !  iso-neutral                          (require "key_ldfslp")
-   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")
-   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")
-   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp")
-   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp")
-                         !  Coefficient
+!----------------------------------------------------------------------------------
+&namtra_ldf    !   lateral diffusion scheme for tracers
+!----------------------------------------------------------------------------------
+   !                       !  Operator type:
+   ln_traldf_lap    =  .true.   !  laplacian operator
+   ln_traldf_bilap  =  .false.  !  bilaplacian operator
+   !                       !  Direction of action:
+   ln_traldf_level  =  .false.  !  iso-level
+   ln_traldf_hor    =  .false.  !  horizontal (geopotential)   (needs "key_ldfslp" when ln_sco=T)
+   ln_traldf_iso    =  .true.   !  iso-neutral                 (needs "key_ldfslp")
+   !		       	   !  Griffies parameters              (all need "key_ldfslp")
+   ln_traldf_grif   =  .false.  !  use griffies triads
+   ln_traldf_gdia   =  .false.  !  output griffies eddy velocities
+   ln_triad_iso     =  .false.  !  pure lateral mixing in ML
+   ln_botmix_grif   =  .false.  !  lateral mixing on bottom
+   !                       !  Coefficients
+   ! Eddy-induced (GM) advection always used with Griffies; otherwise needs "key_traldf_eiv"
+   ! Value rn_aeiv_0 is ignored unless = 0 with Held-Larichev spatially varying aeiv
+   !                                  (key_traldf_c2d & key_traldf_eiv & key_orca_r2, _r1 or _r05)
+   rn_aeiv_0        =  2000.    !  eddy induced velocity coefficient [m2/s]
    rn_aht_0         =  2000.    !  horizontal eddy diffusivity for tracers [m2/s]
    rn_ahtb_0        =     0.    !  background eddy diffusivity for ldf_iso [m2/s]
-   rn_aeiv_0        =  2000.    !  eddy induced velocity coefficient [m2/s]    (require "key_traldf_eiv")
+   !                                           (normally=0; not used with Griffies)
 /
 !-----------------------------------------------------------------------
Index: /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top
===================================================================
--- /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top	(revision 7)
@@ -22,7 +22,7 @@
    ln_trcdta     =   .true. !  Initialisation from data input file (T) or not (F)
 !
-!              !    name   !           title of the field              !   units    ! initial data ! save   !
-!              !           !                                           !            ! from file    ! or not ! 
-!              !           !                                           !            ! or not       !        !
+!                !    name   !           title of the field              ! initial data ! initial data ! save   !
+!                !           !                                           !  units       ! from file    ! or not ! 
+!                !           !                                           !              ! or not       !        !
    sn_tracer(1)   = 'DIC     ' , 'Dissolved inorganic Concentration      ',  'mol-C/L' ,  .true.     ,  .true.
    sn_tracer(2)   = 'Alkalini' , 'Total Alkalinity Concentration         ',  'eq/L '   ,  .true.     ,  .true.
@@ -37,5 +37,5 @@
    sn_tracer(11)  = 'PHY2    ' , 'Diatoms Concentration                  ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(12)  = 'ZOO2    ' , 'Mesozooplankton Concentration          ',  'mol-C/L' ,  .false.    ,  .true.
-   sn_tracer(13)  = 'BSi     ' , 'Diatoms Silicate Concentration         ',  'mol-C/L' ,  .false.    ,  .true.
+   sn_tracer(13)  = 'DSi     ' , 'Diatoms Silicate Concentration         ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(14)  = 'Fer     ' , 'Dissolved Iron Concentration           ',  'mol-C/L' ,  .true.     ,  .true.
    sn_tracer(15)  = 'BFe     ' , 'Big iron particles Concentration       ',  'mol-C/L' ,  .false.    ,  .true.
@@ -43,5 +43,5 @@
    sn_tracer(17)  = 'SFe     ' , 'Small iron particles Concentration     ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(18)  = 'DFe     ' , 'Diatoms iron  Concentration            ',  'mol-C/L' ,  .false.    ,  .true.
-   sn_tracer(19)  = 'DSi     ' , 'Sinking biogenic Silicate Concentration',  'mol-C/L' ,  .false.    ,  .true.
+   sn_tracer(19)  = 'GSi     ' , 'Sinking biogenic Silicate Concentration',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(20)  = 'NFe     ' , 'Nano iron Concentration                ',  'mol-C/L' ,  .false.    ,  .true.
    sn_tracer(21)  = 'NCHL    ' , 'Nano chlorophyl Concentration          ',  'mol-C/L' ,  .false.    ,  .true.
Index: /trunk/NEMOGCM/CONFIG/cfg.txt
===================================================================
--- /trunk/NEMOGCM/CONFIG/cfg.txt	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/cfg.txt	(revision 7)
@@ -4,5 +4,5 @@
 AMM12 OPA_SRC
 ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC
-ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC
 AMM12_PISCES OPA_SRC TOP_SRC
 ORCA2_LIM OPA_SRC LIM_SRC_2 NST_SRC
+ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC
Index: /trunk/NEMOGCM/CONFIG/makenemo
===================================================================
--- /trunk/NEMOGCM/CONFIG/makenemo	(revision 6)
+++ /trunk/NEMOGCM/CONFIG/makenemo	(revision 7)
@@ -69,5 +69,5 @@
 # ==========
 #
-# $Id: makenemo 3219 2011-12-13 10:32:08Z smasson $
+# $Id: makenemo 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/Makefile.lex
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/Makefile.lex	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/Makefile.lex	(revision 7)
@@ -7,4 +7,5 @@
 YACC = byacc -t -v -g
 YACC = bison -t -v -g
+YACC = bison 
 
 
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilFortran.c
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilFortran.c	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilFortran.c	(revision 7)
@@ -511,7 +511,13 @@
             if (headtypewritten == 0)
               {
+/*RB*/
+                sprintf (ligne, "Module_DeclarType_%s.h",curmodulename);
+                module_declar_type = associate(ligne);
+                sprintf (ligne, " ");
+                tofich (module_declar_type, ligne,1);
                 sprintf(ligne,"TYPE :: Agrif_%s",curmodulename);
-                tofich(module_declar,ligne,1);
+                tofich(module_declar_type,ligne,1);
                 headtypewritten = 1;
+/*RBend*/
               }
             changeval = 0;
@@ -522,5 +528,7 @@
                parcours->var->v_pointerdeclare = 1;
              }
-            writevardeclaration(parcours,module_declar,0,0);
+/*RB*/
+            writevardeclaration(parcours,module_declar_type,0,0);
+/*RBend*/
             if (changeval == 1)
               {
@@ -534,12 +542,14 @@
       if (out == 1)
         {
+/*RB*/
                 sprintf(ligne,"END TYPE Agrif_%s",curmodulename);
-                tofich(module_declar,ligne,1);
+                tofich(module_declar_type,ligne,1);
                 sprintf(ligne,"TYPE(Agrif_%s), DIMENSION(:), ALLOCATABLE :: Agrif_%s_var",curmodulename,curmodulename); 
-                tofich(module_declar,ligne,1);
+                tofich(module_declar_type,ligne,1);
                 sprintf(ligne,"PUBLIC :: Agrif_%s",curmodulename); 
-                tofich(module_declar,ligne,1);
+                tofich(module_declar_type,ligne,1);
                 sprintf(ligne,"PUBLIC :: Agrif_%s_var",curmodulename); 
-                tofich(module_declar,ligne,1);
+                tofich(module_declar_type,ligne,1);
+/*RBend*/
         }
    }
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilListe.c
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilListe.c	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/UtilListe.c	(revision 7)
@@ -147,5 +147,7 @@
    Save_Length(curmodulename,6);
    /* Si cette variable a ete initialisee                                     */
-   if (InitialValueGiven == 1 )
+/*RB*/
+   if ( ! strcmp(InitialValueGiven,"=")  ) 
+/*RBend*/
    {
       strcpy(curvar->v_initialvalue,InitValue);
@@ -153,5 +155,7 @@
    }
    /* Si cette variable est declaree en save                                  */
-   if (SaveDeclare == 1 ) {
+/*RB*/
+   if (SaveDeclare == 1 &&  !strcasecmp(curvar->v_typevar,"type")) {
+/*RBend*/
    curvar->v_save = 1;
    }
@@ -399,5 +403,7 @@
          dims = dims->suiv;
       }
-      if ( dimsempty == 1 ) var->v_dimsempty=1;
+/*RB*/
+      if ( dimsempty == 1 || GlobalDeclarationType == 1 ) var->v_dimsempty=1;
+/*RBend*/
    }
    strcpy(var->v_readedlistdimension,listdimension);
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/Writedeclarations.c
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/Writedeclarations.c	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/Writedeclarations.c	(revision 7)
@@ -533,5 +533,7 @@
      if ( newvar->var->v_nbdim == 0 &&
           !strcasecmp(newvar->var->v_subroutinename,subroutinename)  &&
-           newvar->var->v_pointerdeclare == 0
+/*RB*/
+           (newvar->var->v_pointerdeclare == 0  || !strcasecmp(newvar->var->v_typevar,"type"))  
+/*RBend*/
          )
      {
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/decl.h
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/decl.h	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/decl.h	(revision 7)
@@ -248,5 +248,5 @@
  int PrivateDeclare;       /* Variable has been declared as PRIVATE */
  int ExternalDeclare;      /* Variable has been declared as EXTERNAL */
- int InitialValueGiven;    /* An initial value has been given */
+ char InitialValueGiven[LONG_C];  
  int Allocatabledeclare;
  int Targetdeclare;
@@ -265,4 +265,5 @@
  char nameinttypenameback[LONG_C]; 
  int GlobalDeclaration;
+ int GlobalDeclarationType;
  char InitValue[LONG_4C];
  char IntentSpec[LONG_C];
@@ -341,4 +342,5 @@
  FILE *subloop;
  FILE *module_declar;
+ FILE *module_declar_type;
  FILE *allocationagrif;
  FILE *paramout;
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.c
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.c	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.c	(revision 7)
@@ -61,7 +61,7 @@
 /* Substitute the variable and function names.  */
 #define yyparse fortranparse
-#define yylex fortranlex
+#define yylex   fortranlex
 #define yyerror fortranerror
-#define yylval fortranlval
+#define yylval  fortranlval
 #define yychar  fortranchar
 #define yydebug fortrandebug
@@ -449,5 +449,5 @@
 /* Enabling traces.  */
 #ifndef YYDEBUG
-# define YYDEBUG 1
+# define YYDEBUG 0
 #endif
 
@@ -708,5 +708,5 @@
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   5878
+#define YYLAST   6070
 
 /* YYNTOKENS -- Number of terminals.  */
@@ -715,7 +715,7 @@
 #define YYNNTS  184
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  552
+#define YYNRULES  555
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  978
+#define YYNSTATES  982
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
@@ -782,57 +782,57 @@
       25,    29,    32,    35,    39,    43,    46,    49,    52,    54,
       56,    58,    60,    61,    62,    65,    66,    68,    69,    70,
-      72,    73,    78,    81,    87,    91,    94,    96,    97,    99,
-     101,   102,   105,   109,   110,   113,   117,   119,   123,   125,
-     127,   130,   135,   138,   141,   146,   149,   151,   153,   155,
-     157,   159,   161,   163,   165,   167,   169,   174,   178,   182,
-     185,   189,   190,   192,   194,   196,   198,   200,   202,   204,
-     206,   208,   210,   212,   214,   216,   218,   220,   222,   224,
-     226,   228,   230,   232,   234,   236,   238,   240,   242,   246,
-     250,   256,   258,   262,   266,   269,   274,   276,   280,   281,
-     284,   287,   291,   293,   295,   297,   302,   309,   314,   316,
-     320,   323,   327,   333,   337,   339,   340,   343,   345,   350,
-     354,   357,   361,   365,   369,   373,   374,   376,   379,   382,
-     386,   392,   396,   397,   400,   403,   405,   411,   417,   420,
-     424,   427,   431,   433,   437,   440,   444,   450,   452,   455,
-     457,   461,   464,   466,   470,   471,   473,   475,   479,   483,
-     486,   488,   492,   495,   498,   499,   506,   514,   515,   518,
-     521,   525,   529,   531,   532,   535,   540,   544,   548,   553,
-     556,   558,   560,   562,   564,   566,   568,   570,   572,   573,
-     576,   578,   582,   583,   586,   590,   592,   596,   599,   603,
-     605,   607,   609,   611,   612,   616,   617,   620,   625,   627,
-     631,   633,   635,   637,   640,   642,   647,   649,   651,   653,
-     655,   657,   659,   661,   663,   665,   667,   668,   672,   674,
-     678,   680,   682,   685,   688,   692,   694,   696,   698,   702,
-     704,   706,   710,   714,   719,   724,   728,   733,   738,   742,
-     747,   752,   757,   762,   767,   772,   777,   782,   787,   792,
-     797,   802,   807,   811,   816,   821,   826,   831,   833,   837,
-     839,   841,   843,   846,   849,   852,   854,   856,   859,   862,
-     865,   868,   871,   874,   877,   880,   883,   886,   889,   893,
-     896,   900,   903,   906,   909,   912,   915,   918,   921,   922,
-     924,   927,   930,   933,   935,   937,   939,   941,   942,   944,
-     947,   952,   958,   963,   967,   971,   973,   976,   978,   982,
-     984,   986,   990,   996,  1001,  1005,  1008,  1011,  1013,  1015,
-    1017,  1019,  1021,  1023,  1025,  1027,  1030,  1033,  1035,  1038,
-    1040,  1042,  1043,  1045,  1051,  1052,  1054,  1056,  1058,  1059,
-    1063,  1064,  1070,  1073,  1078,  1085,  1092,  1094,  1096,  1098,
-    1102,  1106,  1108,  1112,  1116,  1118,  1120,  1126,  1132,  1137,
-    1139,  1142,  1145,  1148,  1151,  1153,  1156,  1162,  1164,  1166,
-    1169,  1175,  1177,  1180,  1184,  1189,  1191,  1193,  1195,  1197,
-    1199,  1201,  1203,  1205,  1209,  1213,  1217,  1220,  1223,  1224,
-    1230,  1238,  1239,  1242,  1244,  1246,  1247,  1249,  1251,  1253,
-    1255,  1258,  1260,  1262,  1264,  1270,  1276,  1279,  1282,  1285,
-    1288,  1290,  1291,  1296,  1303,  1305,  1309,  1312,  1315,  1318,
-    1319,  1323,  1324,  1326,  1329,  1331,  1333,  1337,  1339,  1342,
-    1344,  1346,  1349,  1352,  1355,  1359,  1362,  1364,  1365,  1367,
-    1370,  1373,  1374,  1377,  1381,  1385,  1389,  1393,  1395,  1399,
-    1401,  1403,  1407,  1409,  1411,  1413,  1416,  1421,  1426,  1429,
-    1432,  1434,  1436,  1438,  1440,  1442,  1444,  1446,  1448,  1450,
-    1454,  1456,  1458,  1462,  1466,  1470,  1474,  1477,  1481,  1484,
-    1487,  1490,  1493,  1497,  1499,  1501,  1503,  1507,  1508,  1510,
-    1513,  1518,  1521,  1524,  1530,  1531,  1533,  1536,  1538,  1540,
-    1542,  1546,  1550,  1554,  1558,  1562,  1566,  1568,  1570,  1572,
-    1576,  1582,  1588,  1594,  1600,  1608,  1610,  1619,  1622,  1624,
-    1626,  1630,  1632,  1634,  1636,  1641,  1643,  1647,  1648,  1653,
-    1655,  1659,  1663
+      72,    73,    78,    81,    88,    93,    96,    98,    99,   101,
+     103,   104,   107,   111,   112,   115,   119,   121,   125,   127,
+     129,   132,   137,   140,   143,   148,   151,   153,   155,   157,
+     159,   161,   163,   165,   167,   169,   171,   176,   180,   184,
+     187,   191,   192,   194,   196,   198,   200,   202,   204,   206,
+     208,   210,   212,   214,   216,   218,   220,   222,   224,   226,
+     228,   230,   232,   234,   236,   238,   240,   242,   244,   248,
+     252,   258,   260,   264,   268,   271,   276,   278,   282,   283,
+     286,   289,   293,   295,   297,   299,   304,   311,   316,   318,
+     322,   325,   329,   335,   339,   341,   342,   345,   347,   352,
+     356,   359,   363,   367,   371,   375,   376,   378,   381,   384,
+     388,   394,   398,   399,   402,   405,   407,   413,   419,   422,
+     426,   429,   433,   435,   439,   442,   446,   452,   454,   457,
+     459,   463,   466,   468,   472,   473,   475,   477,   481,   485,
+     488,   490,   494,   497,   500,   501,   508,   516,   517,   520,
+     523,   527,   531,   533,   534,   537,   542,   546,   550,   555,
+     558,   560,   562,   564,   566,   568,   570,   572,   574,   575,
+     578,   580,   584,   585,   588,   592,   594,   598,   601,   605,
+     607,   609,   611,   613,   614,   618,   619,   622,   627,   629,
+     633,   635,   637,   639,   642,   644,   649,   651,   653,   655,
+     657,   659,   661,   663,   665,   667,   669,   670,   674,   676,
+     680,   682,   684,   687,   690,   694,   696,   698,   700,   704,
+     706,   708,   712,   716,   721,   726,   730,   735,   740,   744,
+     749,   754,   759,   764,   769,   774,   779,   784,   789,   794,
+     799,   804,   809,   813,   818,   823,   828,   833,   835,   839,
+     841,   843,   845,   848,   851,   854,   856,   858,   861,   864,
+     867,   870,   873,   876,   879,   882,   885,   888,   891,   895,
+     898,   902,   905,   908,   911,   914,   917,   920,   923,   924,
+     926,   929,   932,   935,   937,   939,   941,   943,   944,   946,
+     949,   954,   960,   965,   969,   973,   975,   978,   980,   984,
+     986,   988,   992,   998,  1003,  1007,  1010,  1013,  1015,  1017,
+    1019,  1021,  1023,  1025,  1027,  1029,  1032,  1035,  1037,  1040,
+    1042,  1044,  1045,  1047,  1053,  1054,  1056,  1058,  1060,  1061,
+    1065,  1069,  1070,  1076,  1079,  1084,  1091,  1098,  1100,  1102,
+    1104,  1108,  1112,  1114,  1118,  1122,  1124,  1126,  1132,  1138,
+    1143,  1145,  1148,  1151,  1154,  1157,  1159,  1162,  1168,  1170,
+    1172,  1175,  1181,  1183,  1186,  1190,  1195,  1197,  1199,  1201,
+    1203,  1205,  1207,  1209,  1211,  1215,  1219,  1223,  1226,  1229,
+    1230,  1236,  1244,  1245,  1248,  1250,  1252,  1253,  1255,  1257,
+    1259,  1261,  1264,  1266,  1268,  1270,  1276,  1282,  1285,  1288,
+    1291,  1294,  1296,  1297,  1302,  1309,  1311,  1315,  1318,  1321,
+    1324,  1325,  1329,  1330,  1332,  1335,  1337,  1339,  1343,  1345,
+    1348,  1350,  1352,  1355,  1358,  1361,  1365,  1368,  1370,  1371,
+    1373,  1376,  1379,  1380,  1383,  1387,  1391,  1395,  1399,  1401,
+    1405,  1407,  1409,  1413,  1415,  1417,  1419,  1423,  1426,  1431,
+    1436,  1439,  1442,  1444,  1446,  1448,  1450,  1452,  1454,  1456,
+    1458,  1460,  1464,  1466,  1468,  1472,  1476,  1480,  1484,  1487,
+    1491,  1494,  1497,  1500,  1503,  1507,  1509,  1511,  1513,  1515,
+    1519,  1520,  1522,  1525,  1530,  1533,  1536,  1542,  1543,  1545,
+    1548,  1550,  1552,  1554,  1558,  1562,  1566,  1570,  1574,  1578,
+    1580,  1582,  1584,  1588,  1594,  1600,  1606,  1612,  1620,  1622,
+    1631,  1634,  1636,  1638,  1642,  1644,  1646,  1648,  1653,  1655,
+    1659,  1660,  1665,  1667,  1671,  1675
 };
 
@@ -848,138 +848,139 @@
       -1,    -1,   144,   201,    -1,    -1,   177,    -1,    -1,    -1,
       72,    -1,    -1,   202,    33,   204,   208,    -1,    34,   204,
-      -1,    35,   204,   208,    30,   209,    -1,    35,   204,   208,
-      -1,    95,   169,    -1,   169,    -1,    -1,    32,    -1,   158,
-      -1,    -1,   179,   180,    -1,   179,   210,   180,    -1,    -1,
-     179,   180,    -1,   179,   210,   180,    -1,   211,    -1,   210,
-       3,   211,    -1,   169,    -1,    23,    -1,   257,   222,    -1,
-     145,   213,   221,   324,    -1,   147,   324,    -1,   117,   216,
-      -1,   224,   179,   249,   180,    -1,   224,   249,    -1,   243,
-      -1,   228,    -1,   253,    -1,   239,    -1,   241,    -1,   240,
-      -1,   308,    -1,   251,    -1,   237,    -1,   234,    -1,    68,
-     179,   280,   180,    -1,   111,   221,   242,    -1,   113,   221,
-     215,    -1,    67,   217,    -1,   225,   226,   187,    -1,    -1,
-     275,    -1,    46,    -1,    40,    -1,    44,    -1,    56,    -1,
-      79,    -1,    45,    -1,    47,    -1,    62,    -1,    57,    -1,
-      58,    -1,    59,    -1,    60,    -1,    61,    -1,    64,    -1,
-      65,    -1,    66,    -1,    69,    -1,    70,    -1,    71,    -1,
-      74,    -1,    75,    -1,    76,    -1,    77,    -1,   169,    -1,
-     214,    -1,   215,     3,   214,    -1,   179,   220,   180,    -1,
-     216,     3,   179,   220,   180,    -1,   218,    -1,   217,     3,
-     218,    -1,   179,   219,   180,    -1,   298,   276,    -1,   219,
-       3,   298,   276,    -1,   280,    -1,   220,     3,   280,    -1,
-      -1,     4,     4,    -1,   255,   256,    -1,   223,   204,   208,
-      -1,    35,    -1,    29,    -1,   160,    -1,   169,    24,   227,
-      24,    -1,   226,   248,   169,    24,   227,    24,    -1,   231,
-      24,   227,    24,    -1,   232,    -1,   232,     3,   227,    -1,
-     229,   230,    -1,   229,   247,   230,    -1,   228,   248,   247,
-     248,   230,    -1,   228,     3,   230,    -1,   119,    -1,    -1,
-     169,   276,    -1,   169,    -1,   169,   179,   280,   180,    -1,
-     231,     3,   231,    -1,   233,   299,    -1,   232,    21,   232,
-      -1,   232,    22,   232,    -1,   232,    23,   232,    -1,   232,
-     188,   232,    -1,    -1,   284,    -1,   235,   236,    -1,   114,
-     298,    -1,   114,   247,   298,    -1,   235,   248,   247,   248,
-     298,    -1,   235,     3,   298,    -1,    -1,   129,   324,    -1,
-     130,   324,    -1,   109,    -1,   238,   248,   169,   276,   264,
-      -1,   239,     3,   169,   276,   264,    -1,    81,   187,    -1,
-      81,   221,   242,    -1,    80,   187,    -1,    80,   221,   242,
-      -1,   169,    -1,   242,     3,   169,    -1,   244,   245,    -1,
-     244,   247,   245,    -1,   243,   248,   247,   248,   245,    -1,
-     127,    -1,   128,   127,    -1,   246,    -1,   245,     3,   246,
-      -1,   169,   276,    -1,    20,    -1,    24,   169,    24,    -1,
-      -1,     3,    -1,   250,    -1,   249,     3,   250,    -1,   169,
-       5,   280,    -1,   134,   252,    -1,   169,    -1,   252,     3,
-     169,    -1,   122,   123,    -1,   122,   137,    -1,    -1,   271,
-     254,   169,   276,   264,   305,    -1,   255,     3,   254,   169,
-     276,   264,   305,    -1,    -1,   262,   266,    -1,   261,   259,
-      -1,   263,    23,   176,    -1,   258,   268,   180,    -1,   146,
-      -1,    -1,    23,   176,    -1,    23,   179,   260,   180,    -1,
-     179,   260,   180,    -1,   169,   269,   270,    -1,   169,     5,
-     269,   270,    -1,   269,   270,    -1,   157,    -1,   263,    -1,
-     149,    -1,   148,    -1,   167,    -1,   151,    -1,   168,    -1,
-     150,    -1,    -1,    23,   265,    -1,   280,    -1,   179,    23,
-     180,    -1,    -1,    23,   267,    -1,   179,   268,   180,    -1,
-     280,    -1,   179,    23,   180,    -1,   169,   269,    -1,   169,
-       5,   269,    -1,   169,    -1,   176,    -1,   280,    -1,    23,
-      -1,    -1,     3,   169,   269,    -1,    -1,     4,     4,    -1,
-       3,   272,     4,     4,    -1,   273,    -1,   272,     3,   273,
-      -1,    29,    -1,   275,    -1,    82,    -1,   109,   276,    -1,
-     111,    -1,   112,   179,   274,   180,    -1,   113,    -1,   116,
-      -1,   117,    -1,   119,    -1,   120,    -1,   140,    -1,   138,
-      -1,   139,    -1,    80,    -1,    81,    -1,    -1,   179,   277,
-     180,    -1,   278,    -1,   277,     3,   278,    -1,   279,    -1,
-       4,    -1,   280,     4,    -1,     4,   280,    -1,   280,     4,
-     279,    -1,    23,    -1,   280,    -1,   283,    -1,   179,   280,
-     180,    -1,   307,    -1,   281,    -1,    46,   282,   180,    -1,
-      39,   282,   180,    -1,    40,   179,   282,   180,    -1,    44,
-     179,   282,   180,    -1,    56,   282,   180,    -1,    79,   179,
-     282,   180,    -1,    45,   179,   280,   180,    -1,    47,   280,
-     180,    -1,   148,   179,   282,   180,    -1,    62,   179,   280,
-     180,    -1,    57,   179,   280,   180,    -1,    58,   179,   280,
-     180,    -1,    59,   179,   280,   180,    -1,    60,   179,   280,
-     180,    -1,    61,   179,   280,   180,    -1,    64,   179,   280,
-     180,    -1,    65,   179,   280,   180,    -1,    66,   179,   280,
-     180,    -1,    69,   179,   280,   180,    -1,    70,   179,   280,
-     180,    -1,    71,   179,   280,   180,    -1,    73,   280,   180,
-      -1,    74,   179,   282,   180,    -1,    75,   179,   282,   180,
-      -1,    76,   179,   282,   180,    -1,    77,   179,   282,   180,
-      -1,   280,    -1,   282,     3,   280,    -1,   288,    -1,   299,
-      -1,   293,    -1,   280,   285,    -1,   284,   280,    -1,    12,
-     280,    -1,    21,    -1,    22,    -1,    21,   280,    -1,    22,
-     280,    -1,    23,   280,    -1,    25,   280,    -1,    14,   280,
-      -1,     8,   280,    -1,    17,   280,    -1,   186,   280,    -1,
-      18,   280,    -1,   185,   280,    -1,    15,   280,    -1,   186,
-       5,   280,    -1,    16,   280,    -1,   185,     5,   280,    -1,
-      13,   280,    -1,     7,   280,    -1,     9,   280,    -1,    10,
-     280,    -1,    11,   280,    -1,    24,   286,    -1,     5,   287,
-      -1,    -1,   280,    -1,     5,   280,    -1,    24,   280,    -1,
-       5,   280,    -1,   280,    -1,   298,    -1,   292,    -1,   290,
-      -1,    -1,   291,    -1,   291,   302,    -1,   292,   179,   294,
-     180,    -1,   292,   179,   294,   180,   302,    -1,   298,   179,
-     294,   180,    -1,   288,   189,   288,    -1,   131,   360,   132,
-      -1,   289,    -1,   289,   295,    -1,   296,    -1,   295,     3,
-     296,    -1,   280,    -1,   297,    -1,   280,     4,   280,    -1,
-     280,     4,   280,     4,   280,    -1,     4,   280,     4,   280,
-      -1,     4,     4,   280,    -1,     4,   280,    -1,   280,     4,
-      -1,     4,    -1,   169,    -1,   142,    -1,   143,    -1,   176,
-      -1,   163,    -1,   164,    -1,   165,    -1,   299,   169,    -1,
-     300,   301,    -1,   158,    -1,   300,   158,    -1,   162,    -1,
-     159,    -1,    -1,   302,    -1,   179,   303,     4,   303,   180,
-      -1,    -1,   280,    -1,   187,    -1,   280,    -1,    -1,   306,
-       5,   280,    -1,    -1,   179,   283,     3,   283,   180,    -1,
-     309,   310,    -1,   309,   310,     3,   311,    -1,   309,   310,
-       3,    31,     4,   187,    -1,   309,   310,     3,    31,     4,
-     313,    -1,   141,    -1,   169,    -1,   312,    -1,   311,     3,
-     312,    -1,   169,   126,   169,    -1,   314,    -1,   313,     3,
-     314,    -1,   169,   126,   169,    -1,   169,    -1,   328,    -1,
+      -1,   202,    35,   204,   208,    30,   209,    -1,   202,    35,
+     204,   208,    -1,    95,   169,    -1,   169,    -1,    -1,    32,
+      -1,   158,    -1,    -1,   179,   180,    -1,   179,   210,   180,
+      -1,    -1,   179,   180,    -1,   179,   210,   180,    -1,   211,
+      -1,   210,     3,   211,    -1,   169,    -1,    23,    -1,   257,
+     222,    -1,   145,   213,   221,   324,    -1,   147,   324,    -1,
+     117,   216,    -1,   224,   179,   249,   180,    -1,   224,   249,
+      -1,   243,    -1,   228,    -1,   253,    -1,   239,    -1,   241,
+      -1,   240,    -1,   308,    -1,   251,    -1,   237,    -1,   234,
+      -1,    68,   179,   280,   180,    -1,   111,   221,   242,    -1,
+     113,   221,   215,    -1,    67,   217,    -1,   225,   226,   187,
+      -1,    -1,   275,    -1,    46,    -1,    40,    -1,    44,    -1,
+      56,    -1,    79,    -1,    45,    -1,    47,    -1,    62,    -1,
+      57,    -1,    58,    -1,    59,    -1,    60,    -1,    61,    -1,
+      64,    -1,    65,    -1,    66,    -1,    69,    -1,    70,    -1,
+      71,    -1,    74,    -1,    75,    -1,    76,    -1,    77,    -1,
+     169,    -1,   214,    -1,   215,     3,   214,    -1,   179,   220,
+     180,    -1,   216,     3,   179,   220,   180,    -1,   218,    -1,
+     217,     3,   218,    -1,   179,   219,   180,    -1,   298,   276,
+      -1,   219,     3,   298,   276,    -1,   280,    -1,   220,     3,
+     280,    -1,    -1,     4,     4,    -1,   255,   256,    -1,   223,
+     204,   208,    -1,    35,    -1,    29,    -1,   160,    -1,   169,
+      24,   227,    24,    -1,   226,   248,   169,    24,   227,    24,
+      -1,   231,    24,   227,    24,    -1,   232,    -1,   232,     3,
+     227,    -1,   229,   230,    -1,   229,   247,   230,    -1,   228,
+     248,   247,   248,   230,    -1,   228,     3,   230,    -1,   119,
+      -1,    -1,   169,   276,    -1,   169,    -1,   169,   179,   280,
+     180,    -1,   231,     3,   231,    -1,   233,   299,    -1,   232,
+      21,   232,    -1,   232,    22,   232,    -1,   232,    23,   232,
+      -1,   232,   188,   232,    -1,    -1,   284,    -1,   235,   236,
+      -1,   114,   298,    -1,   114,   247,   298,    -1,   235,   248,
+     247,   248,   298,    -1,   235,     3,   298,    -1,    -1,   129,
+     324,    -1,   130,   324,    -1,   109,    -1,   238,   248,   169,
+     276,   264,    -1,   239,     3,   169,   276,   264,    -1,    81,
+     187,    -1,    81,   221,   242,    -1,    80,   187,    -1,    80,
+     221,   242,    -1,   169,    -1,   242,     3,   169,    -1,   244,
+     245,    -1,   244,   247,   245,    -1,   243,   248,   247,   248,
+     245,    -1,   127,    -1,   128,   127,    -1,   246,    -1,   245,
+       3,   246,    -1,   169,   276,    -1,    20,    -1,    24,   169,
+      24,    -1,    -1,     3,    -1,   250,    -1,   249,     3,   250,
+      -1,   169,     5,   280,    -1,   134,   252,    -1,   169,    -1,
+     252,     3,   169,    -1,   122,   123,    -1,   122,   137,    -1,
+      -1,   271,   254,   169,   276,   264,   305,    -1,   255,     3,
+     254,   169,   276,   264,   305,    -1,    -1,   262,   266,    -1,
+     261,   259,    -1,   263,    23,   176,    -1,   258,   268,   180,
+      -1,   146,    -1,    -1,    23,   176,    -1,    23,   179,   260,
+     180,    -1,   179,   260,   180,    -1,   169,   269,   270,    -1,
+     169,     5,   269,   270,    -1,   269,   270,    -1,   157,    -1,
+     263,    -1,   149,    -1,   148,    -1,   167,    -1,   151,    -1,
+     168,    -1,   150,    -1,    -1,    23,   265,    -1,   280,    -1,
+     179,    23,   180,    -1,    -1,    23,   267,    -1,   179,   268,
+     180,    -1,   280,    -1,   179,    23,   180,    -1,   169,   269,
+      -1,   169,     5,   269,    -1,   169,    -1,   176,    -1,   280,
+      -1,    23,    -1,    -1,     3,   169,   269,    -1,    -1,     4,
+       4,    -1,     3,   272,     4,     4,    -1,   273,    -1,   272,
+       3,   273,    -1,    29,    -1,   275,    -1,    82,    -1,   109,
+     276,    -1,   111,    -1,   112,   179,   274,   180,    -1,   113,
+      -1,   116,    -1,   117,    -1,   119,    -1,   120,    -1,   140,
+      -1,   138,    -1,   139,    -1,    80,    -1,    81,    -1,    -1,
+     179,   277,   180,    -1,   278,    -1,   277,     3,   278,    -1,
+     279,    -1,     4,    -1,   280,     4,    -1,     4,   280,    -1,
+     280,     4,   279,    -1,    23,    -1,   280,    -1,   283,    -1,
+     179,   280,   180,    -1,   307,    -1,   281,    -1,    46,   282,
+     180,    -1,    39,   282,   180,    -1,    40,   179,   282,   180,
+      -1,    44,   179,   282,   180,    -1,    56,   282,   180,    -1,
+      79,   179,   282,   180,    -1,    45,   179,   280,   180,    -1,
+      47,   280,   180,    -1,   148,   179,   282,   180,    -1,    62,
+     179,   280,   180,    -1,    57,   179,   280,   180,    -1,    58,
+     179,   280,   180,    -1,    59,   179,   280,   180,    -1,    60,
+     179,   280,   180,    -1,    61,   179,   280,   180,    -1,    64,
+     179,   280,   180,    -1,    65,   179,   280,   180,    -1,    66,
+     179,   280,   180,    -1,    69,   179,   280,   180,    -1,    70,
+     179,   280,   180,    -1,    71,   179,   280,   180,    -1,    73,
+     280,   180,    -1,    74,   179,   282,   180,    -1,    75,   179,
+     282,   180,    -1,    76,   179,   282,   180,    -1,    77,   179,
+     282,   180,    -1,   280,    -1,   282,     3,   280,    -1,   288,
+      -1,   299,    -1,   293,    -1,   280,   285,    -1,   284,   280,
+      -1,    12,   280,    -1,    21,    -1,    22,    -1,    21,   280,
+      -1,    22,   280,    -1,    23,   280,    -1,    25,   280,    -1,
+      14,   280,    -1,     8,   280,    -1,    17,   280,    -1,   186,
+     280,    -1,    18,   280,    -1,   185,   280,    -1,    15,   280,
+      -1,   186,     5,   280,    -1,    16,   280,    -1,   185,     5,
+     280,    -1,    13,   280,    -1,     7,   280,    -1,     9,   280,
+      -1,    10,   280,    -1,    11,   280,    -1,    24,   286,    -1,
+       5,   287,    -1,    -1,   280,    -1,     5,   280,    -1,    24,
+     280,    -1,     5,   280,    -1,   280,    -1,   298,    -1,   292,
+      -1,   290,    -1,    -1,   291,    -1,   291,   302,    -1,   292,
+     179,   294,   180,    -1,   292,   179,   294,   180,   302,    -1,
+     298,   179,   294,   180,    -1,   288,   189,   288,    -1,   131,
+     360,   132,    -1,   289,    -1,   289,   295,    -1,   296,    -1,
+     295,     3,   296,    -1,   280,    -1,   297,    -1,   280,     4,
+     280,    -1,   280,     4,   280,     4,   280,    -1,     4,   280,
+       4,   280,    -1,     4,     4,   280,    -1,     4,   280,    -1,
+     280,     4,    -1,     4,    -1,   169,    -1,   142,    -1,   143,
+      -1,   176,    -1,   163,    -1,   164,    -1,   165,    -1,   299,
+     169,    -1,   300,   301,    -1,   158,    -1,   300,   158,    -1,
+     162,    -1,   159,    -1,    -1,   302,    -1,   179,   303,     4,
+     303,   180,    -1,    -1,   280,    -1,   187,    -1,   280,    -1,
+      -1,   306,     5,   280,    -1,   306,   126,   280,    -1,    -1,
+     179,   283,     3,   283,   180,    -1,   309,   310,    -1,   309,
+     310,     3,   311,    -1,   309,   310,     3,    31,     4,   187,
+      -1,   309,   310,     3,    31,     4,   313,    -1,   141,    -1,
+     169,    -1,   312,    -1,   311,     3,   312,    -1,   169,   126,
+     169,    -1,   314,    -1,   313,     3,   314,    -1,   169,   126,
+     169,    -1,   169,    -1,   328,    -1,    98,   179,   366,   370,
+     180,    -1,   105,   179,   369,   370,   180,    -1,   106,   179,
+     371,   180,    -1,   317,    -1,   318,   324,    -1,   316,   324,
+      -1,   319,   324,    -1,    96,   324,    -1,   321,    -1,   372,
+     328,    -1,    41,   179,   280,   180,   304,    -1,    42,    -1,
+      43,    -1,   372,    84,    -1,    85,   179,   280,   180,    84,
+      -1,    86,    -1,    87,   324,    -1,    48,   320,   180,    -1,
+      49,   179,   280,   180,    -1,   115,    -1,   110,    -1,    93,
+      -1,   153,    -1,   156,    -1,   155,    -1,   154,    -1,   280,
+      -1,   320,     3,   280,    -1,   320,     4,   280,    -1,   326,
+     323,   322,    -1,   327,   280,    -1,    94,   325,    -1,    -1,
+     373,     5,   280,     3,   280,    -1,   373,     5,   280,     3,
+     280,     3,   280,    -1,    -1,   176,   248,    -1,   187,    -1,
+     169,    -1,    -1,   169,    -1,    92,    -1,    97,    -1,   118,
+      -1,   330,   332,    -1,   365,    -1,   341,    -1,   333,    -1,
       98,   179,   366,   370,   180,    -1,   105,   179,   369,   370,
-     180,    -1,   106,   179,   371,   180,    -1,   317,    -1,   318,
-     324,    -1,   316,   324,    -1,   319,   324,    -1,    96,   324,
-      -1,   321,    -1,   372,   328,    -1,    41,   179,   280,   180,
-     304,    -1,    42,    -1,    43,    -1,   372,    84,    -1,    85,
-     179,   280,   180,    84,    -1,    86,    -1,    87,   324,    -1,
-      48,   320,   180,    -1,    49,   179,   280,   180,    -1,   115,
-      -1,   110,    -1,    93,    -1,   153,    -1,   156,    -1,   155,
-      -1,   154,    -1,   280,    -1,   320,     3,   280,    -1,   320,
-       4,   280,    -1,   326,   323,   322,    -1,   327,   280,    -1,
-      94,   325,    -1,    -1,   373,     5,   280,     3,   280,    -1,
-     373,     5,   280,     3,   280,     3,   280,    -1,    -1,   176,
-     248,    -1,   187,    -1,   169,    -1,    -1,   169,    -1,    92,
-      -1,    97,    -1,   118,    -1,   330,   332,    -1,   365,    -1,
-     341,    -1,   333,    -1,    98,   179,   366,   370,   180,    -1,
-     105,   179,   369,   370,   180,    -1,    78,   303,    -1,    83,
-     304,    -1,    63,   304,    -1,   340,   304,    -1,   331,    -1,
-      -1,   298,   329,   276,   276,    -1,   330,   189,   298,   329,
-     276,   276,    -1,   176,    -1,   331,     3,   176,    -1,     5,
-     280,    -1,   126,   280,    -1,   336,   334,    -1,    -1,   179,
-     335,   180,    -1,    -1,   338,    -1,   337,   169,    -1,   124,
-      -1,   339,    -1,   338,     3,   339,    -1,   280,    -1,    23,
-     364,    -1,   133,    -1,   135,    -1,   349,   345,    -1,   351,
-     343,    -1,   352,   345,    -1,   352,   345,   360,    -1,   104,
-     346,    -1,    38,    -1,    -1,   356,    -1,   345,   342,    -1,
-     350,   344,    -1,    -1,     3,   356,    -1,   179,   347,   180,
-      -1,   179,   353,   180,    -1,   179,   298,   180,    -1,   179,
-     176,   180,    -1,   176,    -1,   179,   283,   180,    -1,   169,
-      -1,   348,    -1,   347,     3,   348,    -1,   353,    -1,    23,
-      -1,    25,    -1,   298,   280,    -1,   298,   280,   189,   330,
+     180,    -1,    78,   303,    -1,    83,   304,    -1,    63,   304,
+      -1,   340,   304,    -1,   331,    -1,    -1,   298,   329,   276,
+     276,    -1,   330,   189,   298,   329,   276,   276,    -1,   176,
+      -1,   331,     3,   176,    -1,     5,   280,    -1,   126,   280,
+      -1,   336,   334,    -1,    -1,   179,   335,   180,    -1,    -1,
+     338,    -1,   337,   169,    -1,   124,    -1,   339,    -1,   338,
+       3,   339,    -1,   280,    -1,    23,   364,    -1,   133,    -1,
+     135,    -1,   349,   345,    -1,   351,   343,    -1,   352,   345,
+      -1,   352,   345,   360,    -1,   104,   346,    -1,    38,    -1,
+      -1,   356,    -1,   345,   342,    -1,   350,   344,    -1,    -1,
+       3,   356,    -1,   179,   347,   180,    -1,   179,   353,   180,
+      -1,   179,   298,   180,    -1,   179,   176,   180,    -1,   176,
+      -1,   179,   283,   180,    -1,   169,    -1,   348,    -1,   347,
+       3,   348,    -1,   353,    -1,    23,    -1,    25,    -1,   298,
+     280,   276,    -1,   298,   280,    -1,   298,   280,   189,   330,
       -1,   298,   179,   297,   180,    -1,   298,    23,    -1,   298,
       25,    -1,    99,    -1,   100,    -1,   354,    -1,    23,    -1,
@@ -989,22 +990,22 @@
      353,    25,   353,    -1,   355,   353,    -1,   353,    20,   353,
       -1,    50,   280,    -1,    55,   280,    -1,    52,   280,    -1,
-      51,   280,    -1,   169,     5,   280,    -1,    21,    -1,    22,
-      -1,   358,    -1,   356,     3,   358,    -1,    -1,   288,    -1,
-     357,   359,    -1,   179,   356,   180,   359,    -1,   281,   359,
-      -1,   299,   359,    -1,   179,   356,     3,   363,   180,    -1,
-      -1,   285,    -1,   359,   285,    -1,   283,    -1,   362,    -1,
-     361,    -1,   283,     3,   280,    -1,   283,     3,   362,    -1,
-     362,     3,   280,    -1,   362,     3,   362,    -1,   361,     3,
-     280,    -1,   361,     3,   362,    -1,   283,    -1,   281,    -1,
-     307,    -1,   179,   280,   180,    -1,   179,   283,     3,   363,
-     180,    -1,   179,   362,     3,   363,   180,    -1,   179,   361,
-       3,   363,   180,    -1,   169,     5,   280,     3,   280,    -1,
-     169,     5,   280,     3,   280,     3,   280,    -1,   176,    -1,
-      89,   179,   280,     3,   280,   180,     3,   280,    -1,    89,
-     364,    -1,   367,    -1,   330,    -1,   366,     3,   367,    -1,
-     298,    -1,   292,    -1,   368,    -1,   298,   179,   295,   180,
-      -1,   367,    -1,   369,     3,   367,    -1,    -1,     3,   125,
-       5,   298,    -1,   298,    -1,   371,     3,   298,    -1,    91,
-     280,   180,    -1,   298,    -1
+      51,   280,    -1,   169,     5,   280,    -1,   281,    -1,    21,
+      -1,    22,    -1,   358,    -1,   356,     3,   358,    -1,    -1,
+     288,    -1,   357,   359,    -1,   179,   356,   180,   359,    -1,
+     281,   359,    -1,   299,   359,    -1,   179,   356,     3,   363,
+     180,    -1,    -1,   285,    -1,   359,   285,    -1,   283,    -1,
+     362,    -1,   361,    -1,   283,     3,   280,    -1,   283,     3,
+     362,    -1,   362,     3,   280,    -1,   362,     3,   362,    -1,
+     361,     3,   280,    -1,   361,     3,   362,    -1,   283,    -1,
+     281,    -1,   307,    -1,   179,   280,   180,    -1,   179,   283,
+       3,   363,   180,    -1,   179,   362,     3,   363,   180,    -1,
+     179,   361,     3,   363,   180,    -1,   169,     5,   280,     3,
+     280,    -1,   169,     5,   280,     3,   280,     3,   280,    -1,
+     176,    -1,    89,   179,   280,     3,   280,   180,     3,   280,
+      -1,    89,   364,    -1,   367,    -1,   330,    -1,   366,     3,
+     367,    -1,   298,    -1,   292,    -1,   368,    -1,   298,   179,
+     295,   180,    -1,   367,    -1,   369,     3,   367,    -1,    -1,
+       3,   125,     5,   298,    -1,   298,    -1,   371,     3,   298,
+      -1,    91,   280,   180,    -1,   298,    -1
 };
 
@@ -1023,49 +1024,49 @@
      758,   759,   760,   761,   762,   763,   764,   766,   767,   769,
      770,   772,   773,   775,   777,   778,   780,   781,   783,   784,
-     786,   869,   906,   912,   917,   922,   936,   950,   965,   972,
-     981,   982,   983,   984,   986,   991,   992,   997,  1001,  1006,
-    1011,  1013,  1015,  1017,  1019,  1023,  1024,  1027,  1029,  1030,
-    1031,  1032,  1034,  1036,  1041,  1046,  1052,  1068,  1085,  1086,
-    1088,  1092,  1097,  1101,  1106,  1112,  1123,  1135,  1140,  1146,
-    1151,  1155,  1165,  1174,  1184,  1185,  1187,  1191,  1196,  1219,
-    1221,  1222,  1224,  1234,  1236,  1238,  1270,  1305,  1307,  1309,
-    1313,  1318,  1323,  1331,  1332,  1334,  1335,  1337,  1338,  1339,
-    1341,  1346,  1348,  1353,  1357,  1360,  1366,  1368,  1374,  1375,
-    1377,  1378,  1380,  1381,  1382,  1384,  1385,  1387,  1388,  1397,
-    1401,  1406,  1408,  1411,  1412,  1414,  1415,  1416,  1418,  1419,
-    1421,  1425,  1426,  1428,  1433,  1435,  1437,  1438,  1439,  1440,
-    1446,  1449,  1450,  1451,  1453,  1455,  1458,  1463,  1467,  1469,
-    1473,  1478,  1482,  1487,  1492,  1500,  1501,  1503,  1504,  1506,
-    1508,  1512,  1514,  1516,  1518,  1520,  1522,  1524,  1526,  1528,
-    1530,  1532,  1534,  1536,  1538,  1540,  1542,  1544,  1546,  1548,
-    1550,  1552,  1554,  1556,  1558,  1560,  1562,  1565,  1566,  1570,
-    1571,  1573,  1575,  1577,  1579,  1582,  1583,  1585,  1587,  1589,
-    1591,  1593,  1595,  1597,  1599,  1601,  1603,  1605,  1607,  1609,
-    1611,  1613,  1615,  1617,  1619,  1621,  1623,  1625,  1628,  1629,
-    1631,  1633,  1636,  1638,  1642,  1647,  1652,  1658,  1670,  1675,
-    1677,  1680,  1684,  1694,  1700,  1703,  1704,  1707,  1708,  1711,
-    1712,  1714,  1716,  1719,  1721,  1722,  1723,  1724,  1726,  1784,
-    1786,  1787,  1788,  1789,  1790,  1791,  1793,  1795,  1797,  1798,
-    1800,  1803,  1804,  1806,  1809,  1810,  1812,  1813,  1815,  1816,
-    1825,  1827,  1830,  1850,  1884,  1904,  1955,  1963,  1966,  1970,
-    1980,  1991,  1995,  2005,  2017,  2026,  2027,  2033,  2039,  2040,
-    2090,  2108,  2128,  2147,  2180,  2181,  2182,  2183,  2184,  2185,
-    2186,  2187,  2188,  2189,  2190,  2191,  2192,  2193,  2230,  2240,
-    2249,  2258,  2267,  2268,  2269,  2271,  2272,  2273,  2275,  2276,
-    2277,  2278,  2279,  2281,  2282,  2284,  2285,  2287,  2289,  2296,
-    2297,  2298,  2299,  2300,  2301,  2307,  2313,  2314,  2315,  2316,
-    2317,  2319,  2320,  2330,  2332,  2333,  2335,  2336,  2338,  2366,
-    2367,  2369,  2370,  2372,  2402,  2404,  2405,  2408,  2422,  2425,
-    2426,  2429,  2430,  2431,  2432,  2433,  2434,  2446,  2447,  2449,
-    2450,  2455,  2456,  2458,  2459,  2461,  2462,  2463,  2464,  2465,
-    2467,  2468,  2470,  2471,  2472,  2473,  2474,  2475,  2476,  2477,
-    2479,  2480,  2482,  2483,  2486,  2487,  2488,  2491,  2494,  2495,
-    2497,  2498,  2499,  2500,  2501,  2502,  2503,  2504,  2505,  2506,
-    2507,  2508,  2509,  2511,  2512,  2514,  2515,  2517,  2518,  2520,
-    2521,  2522,  2523,  2524,  2526,  2527,  2528,  2530,  2531,  2532,
-    2534,  2536,  2538,  2540,  2542,  2544,  2546,  2547,  2549,  2551,
-    2553,  2555,  2557,  2561,  2564,  2571,  2573,  2574,  2576,  2577,
-    2578,  2580,  2582,  2583,  2585,  2592,  2593,  2595,  2596,  2598,
-    2599,  2607,  2609
+     786,   870,   907,   913,   918,   923,   937,   951,   966,   973,
+     982,   983,   984,   985,   987,   992,   993,   998,  1002,  1007,
+    1012,  1014,  1016,  1018,  1020,  1024,  1025,  1028,  1030,  1031,
+    1032,  1033,  1035,  1037,  1042,  1047,  1053,  1069,  1086,  1087,
+    1089,  1093,  1098,  1102,  1107,  1113,  1124,  1136,  1141,  1147,
+    1152,  1156,  1166,  1175,  1185,  1186,  1188,  1192,  1197,  1220,
+    1222,  1223,  1225,  1235,  1237,  1239,  1272,  1307,  1309,  1311,
+    1315,  1320,  1326,  1334,  1335,  1337,  1338,  1340,  1341,  1342,
+    1344,  1349,  1351,  1356,  1360,  1363,  1369,  1371,  1377,  1378,
+    1380,  1381,  1383,  1384,  1385,  1387,  1388,  1390,  1391,  1400,
+    1404,  1409,  1411,  1414,  1415,  1417,  1418,  1419,  1421,  1422,
+    1424,  1428,  1429,  1431,  1436,  1438,  1440,  1441,  1442,  1443,
+    1449,  1452,  1453,  1454,  1456,  1458,  1461,  1466,  1470,  1472,
+    1476,  1481,  1485,  1490,  1495,  1503,  1504,  1506,  1507,  1509,
+    1511,  1515,  1517,  1519,  1521,  1523,  1525,  1527,  1529,  1531,
+    1533,  1535,  1537,  1539,  1541,  1543,  1545,  1547,  1549,  1551,
+    1553,  1555,  1557,  1559,  1561,  1563,  1565,  1568,  1569,  1573,
+    1574,  1576,  1578,  1580,  1582,  1585,  1586,  1588,  1590,  1592,
+    1594,  1596,  1598,  1600,  1602,  1604,  1606,  1608,  1610,  1612,
+    1614,  1616,  1618,  1620,  1622,  1624,  1626,  1628,  1631,  1632,
+    1634,  1636,  1639,  1641,  1645,  1650,  1655,  1661,  1673,  1678,
+    1680,  1683,  1687,  1697,  1703,  1706,  1707,  1710,  1711,  1714,
+    1715,  1717,  1719,  1722,  1724,  1725,  1726,  1727,  1729,  1787,
+    1789,  1790,  1791,  1792,  1793,  1794,  1796,  1798,  1800,  1801,
+    1803,  1806,  1807,  1809,  1812,  1813,  1815,  1816,  1818,  1819,
+    1827,  1836,  1838,  1841,  1861,  1895,  1915,  1966,  1974,  1977,
+    1981,  1991,  2002,  2006,  2016,  2028,  2037,  2038,  2044,  2050,
+    2051,  2101,  2119,  2139,  2158,  2203,  2204,  2205,  2206,  2207,
+    2208,  2209,  2210,  2211,  2212,  2213,  2214,  2215,  2216,  2260,
+    2270,  2279,  2288,  2297,  2298,  2299,  2301,  2302,  2303,  2305,
+    2306,  2307,  2308,  2309,  2311,  2312,  2314,  2315,  2317,  2319,
+    2326,  2327,  2328,  2329,  2330,  2331,  2337,  2343,  2344,  2345,
+    2346,  2347,  2349,  2350,  2360,  2362,  2363,  2365,  2366,  2368,
+    2396,  2397,  2399,  2400,  2402,  2432,  2434,  2435,  2438,  2452,
+    2455,  2456,  2459,  2460,  2461,  2462,  2463,  2464,  2476,  2477,
+    2479,  2480,  2485,  2486,  2488,  2489,  2491,  2492,  2493,  2494,
+    2495,  2497,  2498,  2500,  2501,  2502,  2503,  2504,  2505,  2506,
+    2507,  2508,  2510,  2511,  2513,  2514,  2517,  2518,  2519,  2522,
+    2525,  2526,  2528,  2529,  2530,  2531,  2532,  2533,  2534,  2535,
+    2536,  2537,  2538,  2539,  2540,  2541,  2543,  2544,  2546,  2547,
+    2549,  2550,  2552,  2553,  2554,  2555,  2556,  2558,  2559,  2560,
+    2562,  2563,  2564,  2566,  2568,  2570,  2572,  2574,  2576,  2578,
+    2579,  2581,  2583,  2585,  2587,  2589,  2593,  2596,  2603,  2605,
+    2606,  2608,  2609,  2610,  2612,  2614,  2615,  2617,  2624,  2625,
+    2627,  2628,  2630,  2631,  2639,  2641
 };
 #endif
@@ -1221,24 +1222,24 @@
      299,   299,   299,   299,   299,   299,   299,   300,   300,   300,
      300,   301,   301,   302,   303,   303,   304,   304,   305,   305,
-     306,   307,   308,   308,   308,   308,   309,   310,   311,   311,
-     312,   313,   313,   314,   314,   315,   315,   315,   315,   315,
+     305,   306,   307,   308,   308,   308,   308,   309,   310,   311,
+     311,   312,   313,   313,   314,   314,   315,   315,   315,   315,
      315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
-     315,   315,   315,   315,   315,   315,   315,   315,   316,   317,
-     318,   319,   320,   320,   320,   321,   321,   321,   322,   322,
-     322,   323,   323,   324,   324,   325,   325,   326,   327,   328,
+     315,   315,   315,   315,   315,   315,   315,   315,   315,   316,
+     317,   318,   319,   320,   320,   320,   321,   321,   321,   322,
+     322,   322,   323,   323,   324,   324,   325,   325,   326,   327,
      328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   329,   330,   330,   331,   331,   332,   332,   333,   334,
-     334,   335,   335,   336,   337,   338,   338,   339,   339,   340,
-     340,   341,   341,   341,   341,   341,   341,   342,   342,   343,
-     343,   344,   344,   345,   345,   346,   346,   346,   346,   346,
-     347,   347,   348,   348,   348,   348,   348,   348,   348,   348,
-     349,   349,   350,   350,   351,   351,   351,   352,   353,   353,
-     354,   354,   354,   354,   354,   354,   354,   354,   354,   354,
-     354,   354,   354,   355,   355,   356,   356,   357,   357,   358,
-     358,   358,   358,   358,   359,   359,   359,   360,   360,   360,
-     361,   361,   361,   361,   361,   361,   361,   361,   362,   362,
-     362,   362,   362,   363,   363,   364,   365,   365,   366,   366,
-     366,   367,   367,   367,   368,   369,   369,   370,   370,   371,
-     371,   372,   373
+     328,   328,   329,   330,   330,   331,   331,   332,   332,   333,
+     334,   334,   335,   335,   336,   337,   338,   338,   339,   339,
+     340,   340,   341,   341,   341,   341,   341,   341,   342,   342,
+     343,   343,   344,   344,   345,   345,   346,   346,   346,   346,
+     346,   347,   347,   348,   348,   348,   348,   348,   348,   348,
+     348,   348,   349,   349,   350,   350,   351,   351,   351,   352,
+     353,   353,   354,   354,   354,   354,   354,   354,   354,   354,
+     354,   354,   354,   354,   354,   354,   355,   355,   356,   356,
+     357,   357,   358,   358,   358,   358,   358,   359,   359,   359,
+     360,   360,   360,   361,   361,   361,   361,   361,   361,   361,
+     361,   362,   362,   362,   362,   362,   363,   363,   364,   365,
+     365,   366,   366,   366,   367,   367,   367,   368,   369,   369,
+     370,   370,   371,   371,   372,   373
 };
 
@@ -1249,10 +1250,10 @@
        3,     2,     2,     3,     3,     2,     2,     2,     1,     1,
        1,     1,     0,     0,     2,     0,     1,     0,     0,     1,
-       0,     4,     2,     5,     3,     2,     1,     0,     1,     1,
+       0,     4,     2,     6,     4,     2,     1,     0,     1,     1,
        0,     2,     3,     0,     2,     3,     1,     3,     1,     1,
        2,     4,     2,     2,     4,     2,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     4,     3,     3,     2,
        3,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
        5,     1,     3,     3,     2,     4,     1,     3,     0,     2,
@@ -1272,5 +1273,5 @@
        1,     1,     2,     2,     3,     1,     1,     1,     3,     1,
        1,     3,     3,     4,     4,     3,     4,     4,     3,     4,
-    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
        4,     4,     3,     4,     4,     4,     4,     1,     3,     1,
        1,     1,     2,     2,     2,     1,     1,     2,     2,     2,
@@ -1282,24 +1283,24 @@
        1,     1,     1,     1,     1,     2,     2,     1,     2,     1,
        1,     0,     1,     5,     0,     1,     1,     1,     0,     3,
-       0,     5,     2,     4,     6,     6,     1,     1,     1,     3,
-       3,     1,     3,     3,     1,     1,     5,     5,     4,     1,
-       2,     2,     2,     2,     1,     2,     5,     1,     1,     2,
-       5,     1,     2,     3,     4,     1,     1,     1,     1,     1,
-       1,     1,     1,     3,     3,     3,     2,     2,     0,     5,
-       7,     0,     2,     1,     1,     0,     1,     1,     1,     1,
-       2,     1,     1,     1,     5,     5,     2,     2,     2,     2,
-       1,     0,     4,     6,     1,     3,     2,     2,     2,     0,
-       3,     0,     1,     2,     1,     1,     3,     1,     2,     1,
-       1,     2,     2,     2,     3,     2,     1,     0,     1,     2,
-       2,     0,     2,     3,     3,     3,     3,     1,     3,     1,
-    1,    3,    1,    1,    1,    2,    4,    4,    2,    2,
-    1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
-    1,    1,    3,    3,    3,    3,    2,    3,    2,    2,
-    2,    2,    3,    1,    1,    1,    3,    0,    1,    2,
-    4,    2,    2,    5,    0,    1,    2,    1,    1,    1,
-    3,    3,    3,    3,    3,    3,    1,    1,    1,    3,
-       5,     5,     5,     5,     7,     1,     8,     2,     1,     1,
-       3,     1,     1,     1,     4,     1,     3,     0,     4,     1,
-       3,     3,     1
+       3,     0,     5,     2,     4,     6,     6,     1,     1,     1,
+       3,     3,     1,     3,     3,     1,     1,     5,     5,     4,
+       1,     2,     2,     2,     2,     1,     2,     5,     1,     1,
+       2,     5,     1,     2,     3,     4,     1,     1,     1,     1,
+       1,     1,     1,     1,     3,     3,     3,     2,     2,     0,
+       5,     7,     0,     2,     1,     1,     0,     1,     1,     1,
+       1,     2,     1,     1,     1,     5,     5,     2,     2,     2,
+       2,     1,     0,     4,     6,     1,     3,     2,     2,     2,
+       0,     3,     0,     1,     2,     1,     1,     3,     1,     2,
+       1,     1,     2,     2,     2,     3,     2,     1,     0,     1,
+       2,     2,     0,     2,     3,     3,     3,     3,     1,     3,
+       1,     1,     3,     1,     1,     1,     3,     2,     4,     4,
+       2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     3,     1,     1,     3,     3,     3,     3,     2,     3,
+       2,     2,     2,     2,     3,     1,     1,     1,     1,     3,
+       0,     1,     2,     4,     2,     2,     5,     0,     1,     2,
+       1,     1,     1,     3,     3,     3,     3,     3,     3,     1,
+       1,     1,     3,     5,     5,     5,     5,     7,     1,     8,
+       2,     1,     1,     3,     1,     1,     1,     4,     1,     3,
+       0,     4,     1,     3,     3,     1
 };
 
@@ -1311,100 +1312,101 @@
        2,     0,     1,    37,    20,    21,    18,    19,    27,     6,
       22,     3,    25,    30,    27,    24,     4,    26,    37,   113,
-      38,     0,     0,   456,     0,   387,   388,     0,     0,     0,
-       0,     0,    29,   354,   108,   108,     0,     0,   391,     0,
-     486,     0,     0,   417,   397,   415,     0,     0,   418,     0,
-     480,   481,   485,   487,   484,     0,     0,     0,   145,   396,
-     108,   108,     0,   395,     0,   419,   124,     0,   444,   157,
-       0,     0,     0,   449,     0,   450,   366,    71,   182,     0,
-     193,   192,   197,   195,   398,   401,   400,   399,   190,   114,
-     194,   196,   338,   434,     5,     9,    22,     0,    22,     0,
-      22,     0,     0,    57,   125,    65,   142,    64,   164,    59,
-      61,    60,    56,     0,    63,    58,   215,     0,   183,   202,
-     191,   431,    62,     0,    25,     0,   379,     0,     0,   384,
-     411,     0,   375,     0,   430,   423,   439,     0,     0,   422,
-       0,     0,     0,   421,     0,     8,     7,    36,    32,    40,
-       0,     0,   285,   286,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     339,   340,     0,   347,   350,   349,   342,   343,   344,   341,
-       0,   402,   250,   247,     0,   279,   316,   318,   315,   281,
-     314,   280,   351,   249,     0,     0,   356,   357,   428,     0,
-      69,   101,     0,   355,   426,     0,   150,     0,   148,     0,
-     427,     0,   414,   413,   392,   535,     0,   537,     0,   416,
-     407,    35,   383,     0,   469,   467,     0,   455,     0,     0,
-       0,     0,   162,     0,     0,   138,     0,    53,   172,   173,
-     158,   143,   144,   170,   169,   234,   235,   108,    72,    52,
-      30,    15,    25,     0,    11,    39,    22,    12,     0,     0,
-      55,   166,   127,   164,     0,   125,     0,   236,   120,   125,
-     165,   137,     0,   165,     0,     0,     0,   236,   154,   159,
-       0,     0,     0,   112,    50,     0,   177,   174,   209,   210,
-       0,     0,     0,   179,     0,     0,   178,     0,    16,   236,
-     367,   362,    37,   381,   380,   382,   164,   408,   406,     0,
-       0,     0,   420,     0,   441,   438,   443,   429,     0,   451,
-     503,   504,   483,     0,     0,     0,     0,   338,     0,   490,
-     491,   452,   457,   461,     0,   482,     0,   453,   389,     0,
-       0,   431,   385,     0,    34,     0,   284,   277,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,   527,   517,   249,     0,   519,
-     518,     0,     0,   247,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   308,
-       0,     0,     0,   282,   283,     0,   354,   319,   317,   317,
-     345,   348,   346,   352,     0,     0,   393,     0,     0,   236,
-       0,     0,   109,   152,   151,   149,     0,     0,   551,     0,
-     542,   431,   539,   547,   538,   543,   341,   247,   314,   541,
-     545,   547,   549,     0,    67,    74,    75,    78,    73,    79,
-      76,    81,    82,    83,    84,    85,    80,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    77,    96,    97,
-      68,     0,   139,     0,   106,     0,     0,     0,    10,    17,
-      40,    13,     0,     0,     0,   135,     0,    70,     0,     0,
-     135,   123,   164,     0,   126,   121,   141,   164,   236,   236,
-     164,   161,     0,   155,   220,   222,   236,   224,     0,   226,
-     227,   228,   229,   230,     0,   218,   221,   216,    40,   174,
-     110,     0,     0,   212,   207,   211,   181,   184,     0,   338,
-       0,   213,     0,   203,   205,     0,   180,   236,     0,    14,
-     412,   552,   405,     0,   436,   437,   431,   435,     0,   447,
-       0,   442,   445,   473,   474,     0,   314,     0,   470,   472,
-     488,   498,   501,   500,   499,     0,   472,   507,   514,   508,
-     514,   459,   458,   514,   505,   507,   460,     0,     0,     0,
-       0,     0,   496,   454,     0,     0,    49,    48,    41,     0,
-      46,    43,     0,     0,   252,     0,     0,     0,   251,   258,
-     255,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   272,     0,     0,     0,     0,     0,     0,
-     247,     0,     0,     0,   324,     0,     0,     0,   248,     0,
-       0,   313,   307,   302,   292,   303,   304,   305,   301,   291,
-     297,   299,   293,   295,   287,   288,   289,     0,     0,   309,
-     306,   290,     0,   296,     0,   294,   323,     0,   325,     0,
-       0,   403,   404,   394,     0,   103,   104,   102,    66,     0,
-       0,     0,   317,     0,     0,   466,   468,   465,     0,     0,
-       0,   378,     0,   163,     0,    99,     0,   171,    51,    31,
-     168,    54,   167,     0,   118,     0,   136,     0,     0,   127,
-     129,     0,   125,   241,   245,     0,   238,   240,   246,     0,
-     198,   198,     0,   160,   223,     0,     0,     0,   111,     0,
-     236,   208,     0,     0,   213,   186,     0,   189,     0,   204,
-     432,     0,     0,   363,   368,     0,   236,   448,   440,     0,
-       0,   478,   479,   317,   475,     0,   463,   464,   502,   464,
-       0,   515,   511,   512,   507,   509,   462,   497,   493,   494,
-     495,   492,   547,   547,     0,    42,     0,    33,   386,   278,
-     253,   254,   257,   261,   262,   263,   264,   265,   260,   266,
-     267,   268,   269,   270,   271,   273,   274,   275,   276,   256,
-     248,     0,     0,     0,   520,   521,   524,   525,   522,   523,
-     259,   247,   312,   310,   311,   300,   298,   354,   337,   329,
-     326,   327,   330,   320,   322,   236,   153,   390,     0,     0,
-       0,   540,   376,   546,   377,   550,    98,   107,     0,   115,
-     135,   135,   135,   135,   135,   130,   128,   135,   117,   122,
-     243,     0,   237,   242,   140,     0,   146,   147,   156,   232,
-     233,   231,     0,   219,   217,   236,   198,   185,   213,   187,
-       0,   206,     0,     0,     0,     0,   236,   446,   489,     0,
-       0,     0,   471,   472,   507,   514,   516,   506,     0,     0,
-      47,    44,     0,   338,     0,     0,     0,   361,     0,     0,
-     335,   336,     0,   321,   105,     0,   544,     0,   100,   119,
-     131,   132,   133,   134,     0,   239,   244,   246,     0,   199,
-     200,   225,   198,   358,   188,   214,   374,   364,   365,   371,
-     370,   369,     0,   433,   477,   476,     0,   510,   424,   425,
-      45,     0,   530,   532,   531,   353,   334,     0,   331,   328,
-       0,   548,   116,     0,   358,   175,     0,     0,     0,   409,
-     513,     0,   333,     0,   536,   201,   176,     0,   373,   372,
-       0,     0,   332,   359,   410,   533,     0,   534
+      38,     0,   457,     0,   388,   389,     0,     0,     0,     0,
+       0,    29,   354,   108,   108,     0,     0,   392,     0,   488,
+       0,     0,   418,   398,   416,     0,     0,   419,     0,   482,
+     483,   487,   489,   486,     0,     0,     0,   145,   397,   108,
+     108,     0,   396,     0,   420,   124,     0,   445,   157,     0,
+       0,     0,   450,     0,   451,   367,    71,   182,     0,   193,
+     192,   197,   195,   399,   402,   401,   400,   190,   114,   194,
+     196,   338,   435,     5,     9,    22,     0,    22,     0,    22,
+       0,     0,    57,   125,    65,   142,    64,   164,    59,    61,
+      60,    56,     0,    63,    58,   215,     0,   183,   202,   191,
+     432,    62,     0,    25,     0,   380,     0,     0,   385,   412,
+       0,   376,     0,   431,   424,   440,     0,     0,   423,     0,
+       0,     0,   422,     0,     8,     7,    36,    32,     0,     0,
+     285,   286,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   339,   340,
+       0,   347,   350,   349,   342,   343,   344,   341,     0,   403,
+     250,   247,     0,   279,   316,   318,   315,   281,   314,   280,
+     351,   249,     0,     0,   356,   357,   429,     0,    69,   101,
+       0,   355,   427,     0,   150,     0,   148,     0,   428,     0,
+     415,   414,   393,   538,     0,   540,     0,   417,   408,    35,
+     384,     0,   470,   468,     0,   456,     0,     0,     0,     0,
+     162,     0,     0,   138,     0,    53,   172,   173,   158,   143,
+     144,   170,   169,   234,   235,   108,    72,    52,    30,    15,
+      25,     0,     0,    11,    39,    22,    12,     0,     0,    55,
+     166,   127,   164,     0,   125,     0,   236,   120,   125,   165,
+     137,     0,   165,     0,     0,     0,   236,   154,   159,     0,
+       0,     0,   112,    50,     0,   177,   174,   209,   210,     0,
+       0,     0,   179,     0,     0,   178,     0,    16,   236,   368,
+     363,    37,   382,   381,   383,   164,   409,   407,     0,     0,
+       0,   421,     0,   442,   439,   444,   430,     0,   452,   506,
+     507,   485,     0,     0,     0,     0,   338,     0,   505,   492,
+     493,   453,   458,   462,     0,   484,     0,   454,   390,     0,
+       0,   432,   386,     0,   284,   277,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   530,   520,   249,     0,   522,   521,     0,
+       0,   247,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   308,     0,     0,
+       0,   282,   283,     0,   354,   319,   317,   317,   345,   348,
+     346,   352,     0,     0,   394,     0,     0,   236,     0,     0,
+     109,   152,   151,   149,     0,     0,   554,     0,   545,   432,
+     542,   550,   541,   546,   341,   247,   314,   544,   548,   550,
+     552,     0,    67,    74,    75,    78,    73,    79,    76,    81,
+      82,    83,    84,    85,    80,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    77,    96,    97,    68,     0,
+     139,     0,   106,     0,     0,     0,    10,    17,    40,    40,
+      13,     0,     0,     0,   135,     0,    70,     0,     0,   135,
+     123,   164,     0,   126,   121,   141,   164,   236,   236,   164,
+     161,     0,   155,   220,   222,   236,   224,     0,   226,   227,
+     228,   229,   230,     0,   218,   221,   216,    40,   174,   110,
+       0,     0,   212,   207,   211,   181,   184,     0,   338,     0,
+     213,     0,   203,   205,     0,   180,   236,     0,    14,   413,
+     555,   406,     0,   437,   438,   432,   436,     0,   448,     0,
+     443,   446,   474,   475,     0,   314,     0,   471,   473,   490,
+     500,   503,   502,   501,     0,   473,   510,   517,   511,   517,
+     460,   459,   517,   508,   510,   461,     0,     0,     0,     0,
+       0,   498,   455,     0,     0,     0,     0,   252,     0,     0,
+       0,   251,   258,   255,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   272,     0,     0,     0,
+       0,     0,     0,   247,     0,     0,     0,   324,     0,     0,
+       0,   248,     0,     0,   313,   307,   302,   292,   303,   304,
+     305,   301,   291,   297,   299,   293,   295,   287,   288,   289,
+       0,     0,   309,   306,   290,     0,   296,     0,   294,   323,
+       0,   325,     0,     0,   404,   405,   395,     0,   103,   104,
+     102,    66,     0,     0,     0,   317,     0,     0,   467,   469,
+     466,     0,     0,     0,   379,     0,   163,     0,    99,     0,
+     171,    51,     0,    31,    34,   168,    54,   167,     0,   118,
+       0,   136,     0,     0,   127,   129,     0,   125,   241,   245,
+       0,   238,   240,   246,     0,   198,   198,     0,   160,   223,
+       0,     0,     0,   111,     0,   236,   208,     0,     0,   213,
+     186,     0,   189,     0,   204,   433,     0,     0,   364,   369,
+       0,   236,   449,   441,     0,     0,   480,   481,   317,   236,
+       0,   464,   465,   504,   465,     0,   518,   514,   515,   510,
+     512,   463,   499,   495,   496,   497,   494,   550,   550,   387,
+     278,   253,   254,   257,   261,   262,   263,   264,   265,   260,
+     266,   267,   268,   269,   270,   271,   273,   274,   275,   276,
+     256,   248,     0,     0,     0,   523,   524,   527,   528,   525,
+     526,   259,   247,   312,   310,   311,   300,   298,   354,   337,
+     329,   326,   327,   330,   320,   322,   236,   153,   391,     0,
+       0,     0,   543,   377,   549,   378,   553,    98,   107,     0,
+      49,    48,    41,     0,    46,    43,   115,   135,   135,   135,
+     135,   135,   130,   128,   135,   117,   122,   243,     0,   237,
+     242,   140,     0,   146,   147,   156,   232,   233,   231,     0,
+     219,   217,   236,   198,   185,   213,   187,     0,   206,     0,
+       0,     0,     0,   236,   447,   491,     0,     0,     0,   476,
+     472,   473,   510,   517,   519,   509,     0,     0,   338,     0,
+       0,     0,   362,     0,     0,   335,   336,     0,   321,   105,
+       0,   547,     0,   100,     0,    42,     0,    33,   119,   131,
+     132,   133,   134,     0,   239,   244,   246,     0,   199,   200,
+     225,   198,   358,   188,   214,   375,   365,   366,   372,   371,
+     370,     0,   434,   479,   478,     0,   513,   425,   426,     0,
+     533,   535,   534,   353,   334,     0,   331,   328,     0,   551,
+      47,    44,     0,   116,     0,   358,   175,     0,     0,     0,
+     410,   516,     0,   333,     0,   539,    45,   201,   176,     0,
+       0,   374,   373,     0,     0,   332,   359,   360,   411,   536,
+       0,   537
 };
 
@@ -1412,128 +1414,129 @@
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    11,    94,    95,    96,   261,    12,   262,    13,
-      18,    15,    97,    98,   148,    14,    99,   266,   354,   777,
-     599,   600,   100,   257,   479,   480,   247,   210,   211,   428,
-     483,   217,   294,   295,   101,   102,   273,   703,   103,   104,
-     278,   274,   704,   705,   105,   106,   281,   107,   108,   109,
-     110,   111,   434,   112,   113,   288,   289,   244,   276,   270,
-     271,   114,   254,   115,   531,   296,   530,   116,   117,   303,
-     540,   118,   119,   120,   856,   919,   306,   543,   300,   541,
-     737,   297,   524,   525,   862,   526,   504,   715,   716,   717,
-     357,   192,   358,   193,   194,   413,   660,   642,   195,   668,
-     196,   197,   198,   199,   670,   820,   821,   822,   200,   201,
-     202,   422,   417,   214,   208,   955,   956,   203,   122,   123,
-     311,   743,   744,   928,   929,   124,   125,   126,   127,   128,
-     204,   129,   552,   317,   224,   230,   130,   131,   132,   309,
-     133,   134,   322,   135,   325,   560,   136,   137,   561,   562,
-     138,   139,   581,   341,   586,   329,   237,   567,   568,   140,
-     343,   141,   142,   344,   570,   346,   582,   583,   584,   762,
-     388,   389,   390,   894,   227,   143,   443,   444,   445,   451,
-     684,   453,   144,   553
+      -1,     1,    11,    93,    94,    95,   259,    12,   260,    13,
+      18,    15,    96,    97,   147,    14,    98,   265,   693,   907,
+     833,   834,    99,   255,   477,   478,   245,   208,   209,   426,
+     481,   215,   293,   294,   100,   101,   272,   698,   102,   103,
+     277,   273,   699,   700,   104,   105,   280,   106,   107,   108,
+     109,   110,   432,   111,   112,   287,   288,   242,   275,   269,
+     270,   113,   252,   114,   530,   295,   529,   115,   116,   302,
+     539,   117,   118,   119,   853,   918,   305,   542,   299,   540,
+     732,   296,   523,   524,   859,   525,   503,   710,   711,   712,
+     355,   190,   356,   191,   192,   411,   653,   635,   193,   661,
+     194,   195,   196,   197,   663,   811,   812,   813,   198,   199,
+     200,   420,   415,   212,   206,   956,   957,   201,   121,   122,
+     310,   738,   739,   927,   928,   123,   124,   125,   126,   127,
+     202,   128,   551,   316,   222,   228,   129,   130,   131,   308,
+     132,   133,   321,   134,   324,   559,   135,   136,   560,   561,
+     137,   138,   580,   341,   585,   328,   235,   566,   567,   139,
+     343,   140,   141,   344,   569,   346,   581,   582,   583,   757,
+     386,   387,   388,   889,   225,   142,   441,   442,   443,   449,
+     677,   451,   143,   552
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -702
+#define YYPACT_NINF -711
 static const yytype_int16 yypact[] =
 {
-    -702,   921,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,   -59,  5446,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,   -24,   -24,  -702,    -3,  -702,  -702,  4703,     3,  2638,
-      49,    56,  -702,  4703,    37,    38,  2638,   146,  -702,   -93,
-    -702,  -110,  4703,  -702,  -702,    43,    48,   -93,  -702,   148,
-    -702,  -702,  -702,  -702,  -702,   185,   156,   158,  -702,  -702,
-     164,   164,    79,  -702,   171,  -702,  -702,   -51,  -702,  -702,
-      -7,   -93,   -93,  -702,    75,  -702,  -702,    53,  -702,   -93,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,   179,  -702,  -702,   224,  -702,   130,
-    -702,   -81,   186,   136,   149,  -702,   138,  -702,   360,   363,
-    -702,  -702,   172,   150,  -702,  -702,   145,   -19,    16,    29,
-     370,   395,  -702,   231,   -59,   -93,  -702,   -93,   -93,  -702,
-     230,  4703,  -702,    27,   405,  -702,   233,   241,  2638,  -702,
-     236,  2722,   236,  -702,  5702,  -702,  -702,  -702,  -702,   253,
-    4703,  4703,  -702,  -702,  4703,   256,   257,   266,  4703,  4703,
-    4703,   267,   271,   277,   289,   292,   298,   304,   312,   313,
-     314,   315,   317,  4703,   318,   328,   329,   330,   331,  4831,
-    -702,  -702,   334,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    4703,  2443,  -702,  -702,  4703,   244,  -702,   335,   343,  -702,
-     344,   359,   228,  -702,    58,  4703,  -702,  2443,  -702,   362,
-     529,  -702,  4703,  2443,  -702,   536,  -702,   372,  -702,   372,
-    -702,  4703,  -702,  -702,  -702,  -702,  4703,  -702,  1425,  -702,
-    -702,  -702,  -702,   362,  -702,  -702,  4959,  -702,   362,   362,
-     372,  3079,  -702,   373,   362,  -702,  4703,   541,  -702,  -702,
-    -702,  -702,  -702,  -702,   544,  -702,  -702,   164,  -702,  -702,
-    5446,  -702,   -59,   -24,  -702,  -702,  -702,  -702,   548,   390,
-     563,  -702,    60,    28,   333,   408,   159,   399,  -702,   408,
-     362,  -702,   159,  -702,   410,   412,   159,   399,   571,  -702,
-     413,   445,   581,  -702,  -702,   -24,   583,  -702,  3039,  -702,
-     404,   147,  3935,  -702,  5087,   -19,  -702,   411,  -702,   399,
-    -702,   586,  -702,  -702,  -702,  -702,   360,   362,  2443,  4703,
-    4703,   362,  -702,   414,  4063,  -702,  -702,  -702,  2588,  -702,
-    -702,  -702,  -702,  4703,  4703,  4703,  4703,   587,  2588,   244,
-     359,  -702,  1096,   588,   403,   580,  2852,  4831,  -702,   416,
-     417,  -702,  -702,    17,   567,  1446,  2556,  2443,    23,  4703,
-    4703,  4703,    42,  1469,    52,  4703,  4703,  4703,  4703,  4703,
-    4703,  4703,  4703,  4703,  4703,  4703,  4703,  1491,  4703,  4703,
-    4703,  4703,  4703,  4831,  2443,  1512,   722,  -702,   461,   595,
-     604,  4703,  1548,   607,  3423,  4703,  4703,  4703,  4703,  4703,
-    4703,  4703,  4703,  4703,  4703,  4703,  4703,  4703,  4703,  3167,
-    4703,  3551,  3679,  -702,    19,   362,  4703,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,  4703,  4703,  -702,  1570,    65,   399,
-      49,  1694,  -702,  -702,   608,   608,  1752,   791,  -702,   244,
-     -54,    22,   425,   612,  -702,  -702,   436,   437,     8,    22,
-    -702,   616,  -702,    70,   608,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-     617,   597,  -702,    74,  2443,   443,   454,   -93,  -702,  -702,
-     253,  -702,  4703,    76,   390,   260,  4703,  -702,   455,   457,
-     260,  -702,   360,  2489,  -702,  -702,  -702,   360,   399,   399,
-     360,  -702,   413,   571,  -702,  -702,   399,  -702,   449,  -702,
-    -702,  -702,  -702,  -702,   356,  -702,  -702,  -702,   253,  -702,
-    -702,   460,  4191,  -702,  -702,  2443,  -702,  -702,  3935,  3295,
-     452,   630,  4319,  -702,  2443,   462,  -702,   399,    33,  -702,
-    -702,  -702,  -702,   629,  2443,  2443,  -702,  -702,   467,  2443,
-     464,   642,  -702,  -702,  -702,  2852,  3807,    78,  -702,   106,
-    -702,  2443,  2443,  2443,  2443,  4703,   308,  5572,  2443,   244,
-    1773,  -702,   643,  2443,  -702,  5572,  -702,  2852,  2852,  2852,
-    2852,  2852,   623,  -702,   362,   362,  -702,  -702,  -702,    86,
-    -702,   471,  2638,  4703,  -702,    87,    89,  1794,  -702,  -702,
-    -702,  1815,  1836,  1876,  1897,  1939,  2018,  2079,  2121,  2142,
-    2163,  2200,  2221,  -702,    90,    92,    93,    94,    98,  2261,
-     648,   649,   650,  4831,  -702,  4831,  4831,   103,  -702,  4703,
-    4703,  2443,  -702,  2460,  2460,  2481,  2481,  2556,  2577,  2577,
-    2577,  2577,  2577,  2577,   119,   119,    19,  4703,  4703,  2443,
-    -702,    19,  4703,  2577,  4703,  2577,   244,   652,  2783,   477,
-     478,  2443,  2443,  -702,   362,  -702,  -702,  -702,  -702,   490,
-     576,  4703,  2783,    -8,   481,  -702,  -702,  -702,    -8,   482,
-     362,  -702,  3079,  -702,  4703,  -702,  4703,  -702,  -702,  -702,
-    2443,  -702,  -702,   639,    35,   387,  -702,  2345,   640,   486,
-    -702,   646,   408,  4703,  -702,   104,  -702,  -702,  1325,   362,
-     651,   651,   413,  -702,  -702,   264,   445,   662,  -702,   502,
-     399,  -702,   492,  4191,   630,  -702,   504,  -702,   495,  -702,
-    -702,   672,   552,   677,  -702,  4703,   399,  -702,  -702,  4063,
-     513,  -702,  -702,  2783,   674,  2588,  -702,  -702,  2443,   680,
-     105,  -702,  2443,  2443,  5572,  2443,   643,   547,   623,   623,
-     623,   396,   612,   616,    20,  -702,   141,  -702,  -702,  2443,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  5215,  5215,  5215,  2443,  -702,  2443,  -702,  2443,  -702,
-    -702,   514,  2577,  2577,    19,  2577,  2577,  4703,  2911,  1360,
-     698,  -702,  -702,   335,  -702,   399,  -702,  -702,  2403,   109,
-     697,  -702,  -702,  -702,  -702,  -702,  -702,  2443,   111,  -702,
-     260,   260,   260,   260,   260,   359,  -702,   260,  -702,  -702,
-    2443,  2489,  -702,  4447,  -702,  5343,  -702,  -702,   571,  -702,
-    -702,  -702,   523,  -702,  -702,   399,   651,  -702,   630,  -702,
-    4191,  -702,   -47,   535,   538,  1171,   399,  -702,  -702,   744,
-     525,   362,  -702,   403,  5613,  2443,  -702,  -702,   530,   531,
-    -702,  -702,   116,   704,   532,   533,   534,  -702,   537,  4703,
-    1382,  4703,  2783,  -702,  -702,   712,  -702,   362,  -702,  -702,
-      10,    10,   528,   115,   695,  -702,  -702,  2443,  4575,  -702,
-    2443,  -702,   651,   715,  -702,  -702,   598,  -702,   718,  -702,
-    -702,  -702,  4703,  -702,  -702,   425,   543,  2443,  -702,  -702,
-    -702,  4703,  -702,  -702,  -702,  -702,  2443,  4703,  1404,  -702,
-    4703,  -702,  -702,   554,   715,  -702,   723,   572,   573,  1194,
-    -702,  1280,  2443,  4703,  2443,  -702,  -702,  4703,  -702,  -702,
-    4703,  4703,  2443,  2443,  2443,  1303,  4703,  2443
+    -711,   923,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,   -98,  5724,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,   -51,  -711,   -47,  -711,  -711,  4731,    54,  2666,    70,
+     115,  -711,  4731,    34,    40,  2666,   117,  -711,   -63,  -711,
+       7,  4731,  -711,  -711,   -39,    66,   -63,  -711,   137,  -711,
+    -711,  -711,  -711,  -711,   184,   141,   170,  -711,  -711,   199,
+     199,   155,  -711,   175,  -711,  -711,    37,  -711,  -711,    92,
+     -63,   -63,  -711,   129,  -711,  -711,   116,  -711,   -63,  -711,
+    -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,   217,  -711,  -711,    31,  -711,    96,  -711,
+     -64,   187,    97,   156,  -711,   149,  -711,   384,   390,  -711,
+    -711,   395,   165,  -711,  -711,    91,   -15,    80,   125,   372,
+     416,  -711,   253,   -98,   -63,  -711,   -63,   -63,  -711,   247,
+    4731,  -711,    24,   434,  -711,   267,   278,  2666,  -711,   270,
+    5575,   270,  -711,  2341,  -711,  -711,  -711,  -711,  4731,  4731,
+    -711,  -711,  4731,   276,   279,   280,  4731,  4731,  4731,   285,
+     291,   292,   296,   299,   301,   309,   310,   313,   316,   317,
+     318,  4731,   319,   325,   328,   329,   330,  4859,  -711,  -711,
+     331,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  4731,  2530,
+    -711,  -711,  4731,   304,  -711,   334,   342,  -711,   343,   354,
+     -33,  -711,    43,  4731,  -711,  2530,  -711,   356,   528,  -711,
+    4731,  2530,  -711,   534,  -711,   376,  -711,   376,  -711,  4731,
+    -711,  -711,  -711,  -711,  4731,  -711,  1494,  -711,  -711,  -711,
+    -711,   356,  -711,  -711,  4987,  -711,   356,   356,   376,  2588,
+    -711,   377,   356,  -711,  4731,   544,  -711,  -711,  -711,  -711,
+    -711,  -711,   546,  -711,  -711,   199,  -711,  -711,  5724,  -711,
+     -98,   -51,   -51,  -711,  -711,  -711,  -711,   557,   394,   561,
+    -711,    21,    33,   144,   397,   139,   388,  -711,   397,   356,
+    -711,   139,  -711,   399,   402,   139,   388,   571,  -711,   407,
+     733,   575,  -711,  -711,   -51,   572,  -711,  3067,  -711,   401,
+     215,  3963,  -711,  5115,   -15,  -711,   425,  -711,   388,  -711,
+     601,  -711,  -711,  -711,  -711,   384,   356,  2530,  4731,  4731,
+     356,  -711,   429,  4091,  -711,  -711,  -711,  5430,  -711,  -711,
+    -711,  -711,  4731,  4731,  4731,  4731,   610,  5430,  -711,   304,
+     354,  -711,  1098,   616,   588,   618,  5621,  4859,  -711,   441,
+     443,  -711,  -711,  1515,   670,  2530,    27,  4731,  4731,  4731,
+      36,  1550,    45,  4731,  4731,  4731,  4731,  4731,  4731,  4731,
+    4731,  4731,  4731,  4731,  4731,  1572,  4731,  4731,  4731,  4731,
+    4731,  4859,  2530,  1594,   782,  -711,   500,   630,   631,  4731,
+    1615,   633,  3451,  4731,  4731,  4731,  4731,  4731,  4731,  4731,
+    4731,  4731,  4731,  4731,  4731,  4731,  4731,  3195,  4731,  3579,
+    3707,  -711,   128,   356,  4731,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  4731,  4731,  -711,  1637,    48,   388,    70,  1697,
+    -711,  -711,   641,   641,  1819,  1173,  -711,   304,   -24,    -1,
+     457,   647,  -711,  -711,   471,   472,   151,    -1,  -711,   650,
+    -711,    62,   641,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,   651,   634,
+    -711,    71,  2530,   476,   488,   -63,  -711,  -711,   480,   480,
+    -711,  4731,    72,   394,   314,  4731,  -711,   491,   495,   314,
+    -711,   384,  2538,  -711,  -711,  -711,   384,   388,   388,   384,
+    -711,   407,   571,  -711,  -711,   388,  -711,   486,  -711,  -711,
+    -711,  -711,  -711,   358,  -711,  -711,  -711,   480,  -711,  -711,
+     497,  4219,  -711,  -711,  2530,  -711,  -711,  3963,  3323,   487,
+     665,  4347,  -711,  2530,   489,  -711,   388,    23,  -711,  -711,
+    -711,  -711,   667,  2530,  2530,  -711,  -711,   498,  2530,   493,
+     672,  -711,  -711,  -711,  5621,  3835,    75,  -711,   119,  -711,
+    2530,  2530,  2530,  2530,  4731,   530,  5850,  2530,   304,  1840,
+    -711,   674,  2530,  -711,  5850,  -711,  5621,  5621,  5621,  5621,
+    5621,   654,  -711,   356,   356,  2666,  4731,  -711,    84,    85,
+    1879,  -711,  -711,  -711,  1900,  1921,  1942,  1963,  2006,  2027,
+    2145,  2209,  2230,  2251,  2272,  2293,  -711,    86,    88,    89,
+      90,    98,  2327,   678,   687,   693,  4859,  -711,  4859,  4859,
+      99,  -711,  4731,  4731,  2530,  -711,   710,   710,   569,   569,
+     670,   814,   814,   814,   814,   814,   814,   133,   133,   128,
+    4731,  4731,  2530,  -711,   128,  4731,   814,  4731,   814,   304,
+     695,  2811,   517,   520,  2530,  2530,  -711,   356,  -711,  -711,
+    -711,  -711,   532,   619,  4731,  2811,   -49,   526,  -711,  -711,
+    -711,   -49,   527,   356,  -711,  2588,  -711,  4731,  -711,  4731,
+    -711,  -711,    67,  -711,   681,  2530,  -711,  -711,   689,    50,
+     716,  -711,  2348,   691,   538,  -711,   705,   397,  4731,  -711,
+     105,  -711,  -711,  1384,   356,   707,   707,   407,  -711,  -711,
+     287,   733,   732,  -711,   568,   388,  -711,   558,  4219,   665,
+    -711,   570,  -711,   560,  -711,  -711,   738,   617,   741,  -711,
+    4731,   388,  -711,  -711,  4091,   536,  -711,  -711,  2811,   519,
+    5430,  -711,  -711,  2530,   727,   106,  -711,  2530,  2530,  5850,
+    2530,   674,   574,   654,   654,   654,   406,   647,   650,  -711,
+    2530,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  5243,  5243,  5243,  2530,  -711,  2530,  -711,  2530,
+    -711,  -711,   573,   814,   814,   128,   814,   814,  4731,  2939,
+    1406,   745,  -711,  -711,   334,  -711,   388,  -711,  -711,  2475,
+     107,   744,  -711,  -711,  -711,  -711,  -711,  -711,  2530,   109,
+    -711,  -711,  -711,   110,  -711,   577,  -711,   314,   314,   314,
+     314,   314,   354,  -711,   314,  -711,  -711,  2530,  2538,  -711,
+    4475,  -711,  5371,  -711,  -711,   571,  -711,  -711,  -711,   579,
+    -711,  -711,   388,   707,  -711,   665,  -711,  4219,  -711,   -50,
+     581,   582,  1196,   388,  -711,  -711,  1362,   580,   356,  -711,
+    -711,   588,  5891,  2530,  -711,  -711,   583,   584,   747,   585,
+     590,   591,  -711,   592,  4731,  1428,  4731,  2811,  -711,  -711,
+     754,  -711,   356,  -711,    26,  -711,    93,  -711,  -711,    29,
+      29,   586,   113,   737,  -711,  -711,  2530,  4603,  -711,  2530,
+    -711,   707,    64,  -711,  -711,   649,  -711,   770,  -711,  -711,
+    -711,  4731,  -711,  -711,   457,   596,  2530,  -711,  -711,  4731,
+    -711,  -711,  -711,  -711,  2530,  4731,  1471,  -711,  4731,  -711,
+    -711,  -711,   111,  -711,   597,    64,  -711,   162,   609,   611,
+    1282,  -711,  1305,  2530,  4731,  2530,  -711,  -711,  -711,  4731,
+    4731,  -711,  -711,  4731,  4731,  2530,  2530,  2530,  2530,  1328,
+    4731,  2530
 };
 
@@ -1541,23 +1544,23 @@
 static const yytype_int16 yypgoto[] =
 {
-    -702,  -702,  -702,  -702,   503,  -702,     2,  -702,   740,  -702,
-     -49,   756,  -702,  -702,    -1,     5,  -702,  -702,  -407,  -702,
-      -5,     4,  -702,  -702,    85,  -702,  -702,  -702,   349,  -702,
-      84,   -11,  -702,  -702,  -702,  -702,  -702,  -482,  -702,  -702,
-    -265,   282,  -402,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,   173,  -702,  -702,  -278,   270,   -39,   -21,   515,
-     291,  -702,  -702,  -702,   258,  -702,  -702,  -702,  -702,  -702,
-     245,  -702,  -702,  -702,  -701,  -702,  -702,  -702,   483,  -290,
-    -687,  -702,  -702,    63,  -702,   709,  -282,  -702,   -58,   -61,
-     -27,  -176,   -80,  -154,  -323,  -532,  -702,  -702,  -128,  -702,
-    -702,  -702,  -204,  -702,   377,   121,   -92,    64,   178,   -87,
-    -702,  -702,  -198,  -399,   -29,  -143,  -702,  -163,  -702,  -702,
-    -702,  -702,   -56,  -702,  -139,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,   -12,  -702,  -702,  -702,   676,   265,
-    -232,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,    73,
-    -702,  -702,  -702,  -702,  -702,   254,  -702,  -702,    68,  -702,
-    -702,  -702,  -702,  -275,   684,  -316,  -426,  -702,  -694,  -561,
-     480,   446,  -372,  -648,   272,  -702,   237,  -201,  -702,   238,
-    -421,  -702,  -702,  -702
+    -711,  -711,  -711,  -711,   523,  -711,    30,  -711,   774,  -711,
+     -66,   772,  -711,  -711,    65,     6,  -711,  -711,  -430,  -711,
+    -118,  -110,  -711,  -711,   123,  -711,  -711,  -711,   373,  -711,
+     120,     1,  -711,  -711,  -711,  -711,  -711,  -480,  -711,  -711,
+    -264,   312,  -439,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,   -68,  -711,  -711,  -276,   300,   -35,   -85,   548,
+     324,  -711,  -711,  -711,   274,  -711,  -711,  -711,  -711,  -711,
+     281,  -711,  -711,  -711,  -699,  -711,  -711,  -711,   515,  -290,
+    -666,  -711,  -711,   100,  -711,   749,  -104,  -711,   -25,   -17,
+     -26,  -136,    56,  -176,  -432,  -497,  -711,  -711,  -103,  -711,
+    -711,  -711,  -204,  -711,   404,   159,   -57,    95,    -5,   -70,
+    -711,  -711,  -197,  -398,   -30,  -108,  -711,  -166,  -711,  -711,
+    -711,  -711,   -23,  -711,  -105,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,  -711,   -28,  -711,  -711,  -711,   708,   302,
+    -208,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,   118,
+    -711,  -711,  -711,  -711,  -711,   277,  -711,  -711,   114,  -711,
+    -711,  -711,  -711,  -306,   720,  -263,  -226,  -711,  -673,  -554,
+     514,   482,  -326,  -710,   308,  -711,   273,  -202,  -711,   275,
+    -416,  -711,  -711,  -711
 };
 
@@ -1566,812 +1569,812 @@
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -508
+#define YYTABLE_NINF -511
 static const yytype_int16 yytable[] =
 {
-     191,   442,   207,   385,   423,   511,   213,   220,   534,   207,
-     501,   632,   513,   339,   505,   228,   387,   667,   711,   763,
-     857,   149,   765,   146,   219,   386,   603,   547,   591,   440,
-     689,   283,   319,   843,   440,   232,   393,   450,   840,   301,
-     596,   215,   215,   596,   410,   603,   761,   869,   761,   240,
-     241,   761,   304,   569,   340,   603,   841,   842,   843,   251,
-     252,   424,   425,   576,   741,   279,   225,   259,   674,   226,
-     887,   592,   248,   690,   290,   312,   222,   694,   362,   494,
-     364,   755,   447,   699,   495,   282,   249,   284,   268,   774,
-     603,   286,   603,   603,   223,   603,   603,   603,   269,   242,
-     264,   603,   267,   243,   318,   439,   603,   851,   884,   327,
-     439,   207,   902,   313,   694,   314,   315,   830,    17,   774,
-     250,   728,   926,   355,   356,   418,   587,   330,   331,   588,
-     589,   590,   363,   255,   256,  -315,   841,   842,   843,   275,
-     927,   280,   408,   409,   410,   147,   377,   676,   291,   292,
-     298,   760,   384,   320,   895,   896,  -164,   299,  -164,   766,
-    -164,    92,  -164,   392,   596,   923,   578,   414,   215,   242,
-     242,   385,   706,   243,   243,   283,   150,   706,   427,   242,
-     293,   924,   205,   243,   387,   431,   597,   419,   687,   597,
-     887,   121,  -164,   386,   436,   302,  -164,   598,   844,   437,
-     339,   682,   742,   604,   411,   412,   260,   385,   305,   384,
-     339,  -314,   229,   489,   579,   497,   321,   231,   339,   484,
-     387,   954,   608,   844,   216,   218,   720,   721,   209,   630,
-     886,   886,   610,   886,   724,   212,   936,   502,   426,   496,
-     245,   340,   731,   507,   253,   675,   487,   510,    92,   734,
-     691,   340,   498,   591,   695,   580,   701,   263,   756,   340,
-     591,   805,   490,   807,   809,   740,   775,   780,   491,   781,
-     795,   535,   796,   797,   798,   535,   591,   544,   799,   605,
-     606,   152,   153,   810,   852,   885,   757,   666,   265,   906,
-     750,   908,   554,   555,   528,   550,   940,   559,   624,   625,
-     626,   627,   628,   844,   411,   412,   571,   572,   573,   574,
-     597,   637,   767,   768,   769,   770,   771,   549,   277,   287,
-     384,   891,   351,   537,   937,   221,   538,   233,   587,   330,
-     331,   588,   589,   590,   607,   238,   499,   239,   611,   612,
-     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
-     246,   888,   889,   761,   234,   272,   629,   500,   909,   726,
-     727,   235,   442,   283,   236,   914,   285,   641,   643,   644,
-     645,   646,   647,   648,   649,   650,   651,   652,   653,   654,
-     655,   656,   659,   661,   663,   665,   421,   429,   393,   213,
-     440,   440,   435,   307,   450,   342,   347,   671,   672,   308,
-     310,   578,   859,   860,   861,   886,   316,   416,   323,   578,
-     326,   441,   324,   454,   448,   328,   449,   452,   898,   588,
-     589,   590,   482,   587,   330,   331,   588,   589,   590,   805,
-     807,   809,   353,   415,   591,   359,   360,   339,   121,   910,
-     911,   912,   913,   868,   858,   361,   365,   849,   866,   579,
-     366,   591,   591,   591,   591,   591,   367,   579,   506,   339,
-     339,   339,   339,   339,   876,   700,   439,   439,   368,   707,
-     387,   369,   387,   387,   514,   698,   718,   370,   340,   440,
-     883,   712,   831,   371,   440,   811,   719,   833,   759,   722,
-     580,   372,   373,   374,   375,   551,   376,   378,   580,   556,
-     340,   340,   340,   340,   340,   535,   566,   379,   380,   381,
-     382,   535,   535,   391,   416,   392,   566,   706,   706,   706,
-     706,   706,   418,   419,   706,   255,   256,   515,   420,   180,
-     181,    92,   430,   587,   330,   331,   588,   589,   590,   754,
-     432,   433,   481,   904,   485,   183,   184,   486,   758,   185,
-     186,   187,   188,   492,   516,   439,   517,   518,   519,   268,
-     439,   520,   521,   189,   522,   523,   494,   591,   330,   331,
-     588,   589,   590,   778,   512,   207,   779,   277,   503,   508,
-     925,   509,   287,   922,   536,   527,   529,   546,   578,   548,
-     557,   585,   575,   634,   933,   594,   595,   601,   635,   393,
-    -488,  -488,  -488,  -488,  -488,  -488,   804,   636,   806,   808,
-     639,   679,   384,   812,   321,   683,   685,   686,   845,   688,
-     692,   693,   696,   697,   708,   903,   709,   339,   725,   730,
-     813,   814,   735,   736,   745,   815,   579,   816,   387,   387,
-     387,   819,   739,   225,   748,   749,   764,   811,   590,   935,
-     776,   801,   802,   803,   828,   819,   817,   823,   824,   826,
-     827,   832,   834,   839,   847,   496,   864,   837,   340,   484,
-     848,   865,   867,   870,   855,   871,   872,   580,   873,   394,
-     874,   395,   396,   397,   398,   399,   850,   400,   401,   402,
-     403,   404,   405,   878,   897,   406,   407,   408,   409,   410,
-    -489,   902,   907,   921,   930,   934,   535,   742,   578,   941,
-     938,   939,   942,   943,   944,   950,   844,   945,   875,   952,
-    -360,   958,   559,   960,   957,   633,   879,  -247,   967,  -247,
-    -247,  -247,  -247,  -247,   965,  -247,  -247,  -247,  -247,  -247,
-    -247,   968,   926,  -247,  -247,  -247,  -247,  -247,   901,   394,
-      16,   395,   396,   397,   398,   399,   579,   400,   401,   402,
-     403,   404,   405,   488,   393,   406,   407,   408,   409,   410,
-     145,   892,   441,   449,   804,   806,   808,   836,   890,   677,
-     838,   710,   723,   732,   493,   702,   258,   729,   545,   863,
-     213,   900,   916,   915,   681,   669,   394,   580,   395,   396,
-     397,   398,   399,   829,   400,   401,   402,   403,   404,   405,
-     949,   966,   406,   407,   408,   409,   410,   880,   931,   969,
-     352,   746,   877,   882,   718,   345,   917,   593,   920,   631,
-     747,   772,     0,   773,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   535,     0,     0,     0,     0,     0,     0,
-       0,     0,   825,     0,     0,     0,     0,     0,     0,   411,
-     412,   449,     0,   881,     0,     0,   449,     0,   835,     0,
-       0,     0,   946,     0,   948,   819,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   392,     0,     0,     0,     0,     0,   854,     0,     0,
-       0,     0,     0,     0,     0,   959,     0,  -247,  -247,     0,
-       0,     0,     0,     0,   961,     0,     0,     0,     0,     0,
-     962,     2,     3,   964,   638,     0,     0,     0,     0,   411,
-     412,     0,     0,   566,     0,     0,   972,     0,     0,     0,
-     973,     0,     0,   974,   975,     0,     0,     0,   -23,   977,
-     -23,     0,     0,   -23,   -23,   -23,   -23,     4,     5,   -23,
-       0,     0,   -23,   -23,   -23,     0,     0,     0,     0,   -23,
-     -23,     0,     0,     0,     6,     7,   411,   412,     0,     0,
-       0,     0,     0,     0,   -23,     0,     0,     0,   -23,   -23,
-       0,     0,     0,   -23,     0,     0,     0,     0,     0,   -23,
-       0,   -23,   -23,     0,   -23,     0,   -23,   -23,   -23,   -23,
-     -23,     0,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
-     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,     0,     0,
-     -23,   -23,   -23,     0,   -23,   -23,   -23,     0,   -23,   -23,
-     -23,     0,     0,   -23,     0,   -23,     0,     0,   -23,   -23,
-     -23,   -23,     0,     0,   -23,   -23,   -23,     0,     0,   351,
-       0,     0,   -23,     0,     0,     8,   -23,   -23,   -23,   -23,
-     -23,   -23,   -23,     0,   -23,   -23,   -23,   -23,   -23,     0,
-       0,   -23,     0,     0,     0,   951,     0,     0,   -23,   -23,
-     -23,     0,     0,     0,     0,     0,     0,   -23,     9,  -507,
-       0,  -507,     0,  -507,  -507,  -507,  -507,  -507,    10,  -507,
-    -507,  -507,  -507,  -507,  -507,     0,     0,  -507,  -507,  -507,
-    -507,  -507,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   154,   155,     0,     0,     0,
-     156,   157,   158,   159,     0,     0,     0,     0,     0,     0,
-       0,     0,   160,   161,   162,   163,   164,   165,   166,     0,
-     167,   168,   169,     0,     0,   170,   171,   172,     0,   173,
-     174,   175,   176,   177,   932,   178,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-       0,     0,   406,   407,   408,   409,   410,   970,     0,   394,
-       0,   395,   396,   397,   398,   399,     0,   400,   401,   402,
-     403,   404,   405,     0,     0,   406,   407,   408,   409,   410,
+     189,   384,   205,   421,   338,   218,   211,   533,   120,   205,
+     500,   385,   391,   512,   504,   226,   660,   854,   230,   706,
+     281,   568,   283,   440,   145,   758,   285,   438,   760,   318,
+     596,   575,   438,   682,   448,   217,   282,   339,   213,   596,
+     591,   383,   249,   250,   213,   494,   422,   423,   596,   830,
+     257,   667,   840,   837,   736,   625,   243,   311,   445,   694,
+     238,   239,   701,   866,   261,   683,   262,   701,   278,  -361,
+     340,   838,   839,   840,   687,   493,   821,   289,   750,    17,
+     756,   590,   756,   890,   891,   756,   885,   596,   596,   596,
+     830,   596,   596,   596,   290,   291,   312,   723,   313,   314,
+     274,   596,   596,   300,   317,   267,   220,   326,   848,   882,
+     897,   205,   687,   904,   904,   268,   830,  -164,   146,   925,
+      91,  -164,   353,   354,   221,   419,   292,   263,   437,   266,
+     227,   361,   148,   437,   838,   839,   840,   926,   351,   586,
+     329,   330,   587,   588,   589,   375,   414,   498,   303,   433,
+     319,   382,   279,   408,   297,   416,   406,   407,   408,   240,
+     246,   298,   390,   241,   922,  -315,   412,   969,   499,  -164,
+     452,   384,   935,  -164,   247,   240,   240,   425,   675,   241,
+     241,   385,   510,   223,   429,   240,   224,   497,  -314,   241,
+    -361,   338,   737,   434,   487,   831,   253,   254,   435,   923,
+     495,   338,   427,   213,   546,   623,   577,   597,   382,   885,
+     338,   383,   360,   320,   362,   385,   601,   841,   482,   248,
+     496,   214,   955,   424,   339,   603,   439,   216,   668,   446,
+     549,   447,   450,   203,   339,   229,   831,   480,   841,   578,
+     501,   726,   684,   339,   258,   383,   506,   832,   729,   207,
+     509,   688,   696,   120,   264,   751,   485,   340,   745,   301,
+     884,   884,   831,   884,   771,   772,   786,   340,   787,   788,
+     789,   534,   579,   951,   505,   534,   340,   543,   790,   801,
+     762,   763,   764,   765,   766,   849,   883,   901,   970,   903,
+     905,   966,   553,   554,   210,   490,   219,   558,   251,   752,
+     796,   841,   798,   800,   304,   590,   570,   571,   572,   573,
+     659,   550,   590,   409,   410,   555,   231,   548,   409,   410,
+     236,   382,   565,   669,    91,   276,   488,   489,   590,   936,
+     417,   680,   565,   600,   286,   150,   151,   604,   605,   606,
+     607,   608,   609,   610,   611,   612,   613,   614,   615,   237,
+     755,   886,   887,   232,   244,   622,   271,   908,   761,   527,
+     233,   721,   722,   234,   913,   391,   634,   636,   637,   638,
+     639,   640,   641,   642,   643,   644,   645,   646,   647,   648,
+     649,   652,   654,   656,   658,   440,   756,   282,   211,   438,
+     438,   536,   448,   284,   537,   306,   664,   665,   282,   909,
+     910,   911,   912,   715,   716,   701,   701,   701,   701,   701,
+     893,   719,   701,   598,   599,  -164,   707,   342,   347,  -164,
+     307,   714,   309,   315,   717,   856,   857,   858,   338,   587,
+     588,   589,   617,   618,   619,   620,   621,   322,   865,   884,
+     577,   855,   735,   846,   881,   630,   323,   325,   577,   327,
+     338,   338,   338,   338,   338,   357,   802,   691,   358,   359,
+     385,   339,   385,   385,   363,   695,   796,   798,   800,   702,
+     364,   365,   438,   578,   822,   366,   713,   438,   367,   824,
+     368,   578,   590,   339,   339,   339,   339,   339,   369,   370,
+     437,   437,   371,   413,   340,   372,   373,   374,   376,   590,
+     590,   590,   590,   590,   377,   534,   579,   378,   379,   380,
+     389,   534,   534,   414,   579,   390,   340,   340,   340,   340,
+     340,   416,   417,   418,   392,    91,   393,   394,   395,   396,
+     397,   428,   398,   399,   400,   401,   402,   403,   430,   749,
+     404,   405,   406,   407,   408,   431,   479,   483,   753,   484,
+     586,   329,   330,   587,   588,   589,   586,   329,   330,   587,
+     588,   589,   491,   267,   493,   769,   276,   502,   507,   205,
+     770,   508,   391,   437,   511,   528,   286,   924,   437,   526,
+     397,   535,   398,   399,   400,   401,   402,   403,   439,   447,
+     404,   405,   406,   407,   408,   329,   330,   587,   588,   589,
+     795,   545,   797,   799,   547,   556,   382,   803,   586,   329,
+     330,   587,   588,   589,   338,   574,   802,   898,   590,   584,
+     593,   863,   594,   577,   804,   805,   385,   385,   385,   806,
+     842,   807,   627,   628,   629,   810,   632,   873,  -490,  -490,
+    -490,  -490,  -490,  -490,   672,   879,   320,   339,   819,   810,
+     676,   678,   679,   681,   685,   689,   578,   690,   686,   692,
+     703,   828,   816,   482,   704,   720,   725,   730,   731,   734,
+     934,   447,   740,   743,   223,   744,   447,   759,   826,   589,
+     340,   792,   847,   398,   399,   400,   401,   402,   403,   579,
+     793,   404,   405,   406,   407,   408,   794,   814,   502,   808,
+     815,   817,   534,   818,   409,   410,   823,   825,   878,   851,
+     754,   835,   899,   836,   872,   844,   875,   495,   558,   395,
+     396,   397,   876,   398,   399,   400,   401,   402,   403,   845,
+     852,   404,   405,   406,   407,   408,   861,   862,   864,   867,
+     868,   391,   869,   870,   871,   565,   577,  -491,   897,   902,
+     929,   737,   939,   892,   409,   410,   906,   948,   921,   920,
+     933,   953,   513,   937,   938,   940,   795,   797,   799,   932,
+     941,   942,   943,   959,   841,   958,   961,   967,   971,   578,
+     925,   486,   211,   895,    16,   626,   144,  -247,   952,  -247,
+    -247,  -247,  -247,  -247,   950,  -247,  -247,  -247,  -247,  -247,
+    -247,   670,   724,  -247,  -247,  -247,  -247,  -247,   827,   829,
+     705,   718,   579,   253,   254,   514,   492,   697,   727,   544,
+     662,   860,   713,   914,   916,   256,   919,  -511,  -511,  -511,
+    -511,  -511,  -511,   915,   820,   404,   405,   406,   407,   408,
+     947,   534,   515,   877,   516,   517,   518,   968,   930,   519,
+     520,   352,   521,   522,   972,   409,   410,   741,   178,   179,
+     345,   592,   874,   624,   880,   742,   767,     0,   944,   768,
+     946,   810,     0,   351,   181,   182,     0,     0,   183,   184,
+     185,   186,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   390,   187,     0,     0,   409,   410,   949,     0,     0,
+       0,     0,     0,     0,     0,   960,     0,     0,     0,     0,
+       0,     0,     0,   962,     0,     0,     0,     0,     0,   963,
+       0,     0,   965,     2,     3,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   975,     0,
+       0,     0,     0,   976,   977,     0,     0,   978,   979,     0,
+     -23,     0,   -23,     0,   981,   -23,   -23,   -23,   -23,     4,
+       5,   -23,     0,     0,   -23,   -23,   -23,  -247,  -247,     0,
+       0,   -23,   -23,     0,     0,     0,     6,     7,     0,     0,
+       0,     0,     0,     0,     0,     0,   -23,     0,     0,     0,
+     -23,   -23,     0,     0,     0,   -23,     0,     0,     0,   409,
+     410,   -23,     0,   -23,   -23,     0,   -23,     0,   -23,   -23,
+     -23,   -23,   -23,     0,   -23,   -23,   -23,   -23,   -23,   -23,
+     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
+       0,     0,   -23,   -23,   -23,     0,   -23,   -23,   -23,     0,
+     -23,   -23,   -23,     0,     0,   -23,     0,   -23,     0,     0,
+     -23,   -23,   -23,   -23,     0,     0,   -23,   -23,   -23,     0,
+       0,     0,     0,     0,   -23,     0,     0,     8,   -23,   -23,
+     -23,   -23,   -23,   -23,   -23,     0,   -23,   -23,   -23,   -23,
+     -23,     0,     0,   -23,     0,     0,     0,     0,     0,     0,
+     -23,   -23,   -23,     0,     0,     0,     0,     0,     0,   -23,
+       9,  -510,     0,  -510,     0,  -510,  -510,  -510,  -510,  -510,
+      10,  -510,  -510,  -510,  -510,  -510,  -510,     0,     0,  -510,
+    -510,  -510,  -510,  -510,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
+       0,     0,   154,   155,   156,   157,     0,     0,     0,     0,
+       0,     0,     0,     0,   158,   159,   160,   161,   162,   163,
+     164,     0,   165,   166,   167,     0,     0,   168,   169,   170,
+       0,   171,   172,   173,   174,   175,   674,   176,   392,     0,
+     393,   394,   395,   396,   397,     0,   398,   399,   400,   401,
+     402,   403,     0,     0,   404,   405,   406,   407,   408,   931,
+       0,   392,     0,   393,   394,   395,   396,   397,     0,   398,
+     399,   400,   401,   402,   403,     0,     0,   404,   405,   406,
+     407,   408,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   180,   181,
-       0,     0,     0,     0,   182,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   183,   184,     0,     0,   185,   186,
-     187,   188,     0,     0,     0,    92,     0,     0,     0,     0,
-       0,     0,   189,     0,     0,   577,     0,     0,     0,     0,
-       0,  -507,  -507,   971,     0,   394,     0,   395,   396,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,     0,
-       0,   406,   407,   408,   409,   410,   976,     0,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,   853,
-     394,     0,   395,   396,   397,   398,   399,     0,   400,   401,
-     402,   403,   404,   405,     0,     0,   406,   407,   408,   409,
-     410,     0,     0,     0,     0,     0,   411,   412,     0,     0,
-       0,     0,     0,     0,   901,   394,     0,   395,   396,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,   411,
-     412,   406,   407,   408,   409,   410,   947,   394,     0,   395,
-     396,   397,   398,   399,     0,   400,   401,   402,   403,   404,
-     405,     0,     0,   406,   407,   408,   409,   410,   963,   394,
-       0,   395,   396,   397,   398,   399,     0,   400,   401,   402,
-     403,   404,   405,     0,     0,   406,   407,   408,   409,   410,
-     394,     0,   395,   396,   397,   398,   399,     0,   400,   401,
-     402,   403,   404,   405,     0,     0,   406,   407,   408,   409,
-     410,   394,     0,   395,   396,   397,   398,   399,     0,   400,
-     401,   402,   403,   404,   405,   411,   412,   406,   407,   408,
-     409,   410,     0,     0,   394,     0,   395,   396,   397,   398,
-     399,     0,   400,   401,   402,   403,   404,   405,   411,   412,
-     406,   407,   408,   409,   410,     0,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-     411,   412,   406,   407,   408,   409,   410,  -250,     0,  -250,
-    -250,  -250,  -250,  -250,     0,  -250,  -250,  -250,  -250,  -250,
-    -250,     0,     0,  -250,  -250,  -250,  -250,  -250,     0,     0,
-       0,     0,     0,     0,     0,   411,   412,     0,     0,     0,
-       0,     0,     0,   394,     0,   395,   396,   397,   398,   399,
-       0,   400,   401,   402,   403,   404,   405,   411,   412,   406,
-     407,   408,   409,   410,     0,   394,     0,   395,   396,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,   411,
-     412,   406,   407,   408,   409,   410,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   438,     0,     0,     0,     0,
-     411,   412,     0,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,  602,    0,    0,    0,
-       0,   411,   412,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   609,
-       0,     0,     0,     0,   411,   412,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   623,     0,     0,     0,     0,   411,   412,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,  -250,     0,     0,     0,     0,  -250,  -250,   394,
-       0,   395,   396,   397,   398,   399,     0,   400,   401,   402,
-     403,   404,   405,     0,     0,   406,   407,   408,   409,   410,
-       0,     0,     0,     0,     0,     0,     0,     0,   638,     0,
-       0,     0,     0,   411,   412,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     673,     0,     0,     0,     0,   411,   412,   394,     0,   395,
-     396,   397,   398,   399,     0,   400,   401,   402,   403,   404,
-     405,     0,     0,   406,   407,   408,   409,   410,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,   394,
-       0,   395,   396,   397,   398,   399,     0,   400,   401,   402,
-     403,   404,   405,     0,     0,   406,   407,   408,   409,   410,
-     394,     0,   395,   396,   397,   398,   399,     0,   400,   401,
-     402,   403,   404,   405,     0,     0,   406,   407,   408,   409,
-     410,   394,     0,   395,   396,   397,   398,   399,     0,   400,
-     401,   402,   403,   404,   405,     0,     0,   406,   407,   408,
+     178,   179,     0,     0,     0,     0,   180,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   181,   182,     0,     0,
+     183,   184,   185,   186,     0,     0,     0,    91,     0,     0,
+       0,     0,     0,     0,   187,     0,     0,   576,     0,     0,
+       0,     0,     0,  -510,  -510,   973,     0,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,     0,     0,   404,   405,   406,   407,   408,   974,     0,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,   980,     0,   392,     0,   393,   394,   395,   396,   397,
+       0,   398,   399,   400,   401,   402,   403,     0,     0,   404,
+     405,   406,   407,   408,     0,     0,     0,     0,   409,   410,
+       0,     0,     0,     0,     0,     0,   896,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,   409,   410,   404,   405,   406,   407,   408,   850,   392,
+       0,   393,   394,   395,   396,   397,     0,   398,   399,   400,
+     401,   402,   403,     0,     0,   404,   405,   406,   407,   408,
+     896,   392,     0,   393,   394,   395,   396,   397,     0,   398,
+     399,   400,   401,   402,   403,     0,     0,   404,   405,   406,
+     407,   408,   945,   392,     0,   393,   394,   395,   396,   397,
+       0,   398,   399,   400,   401,   402,   403,     0,     0,   404,
+     405,   406,   407,   408,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   409,   410,     0,
+       0,     0,     0,     0,     0,   964,   392,     0,   393,   394,
+     395,   396,   397,     0,   398,   399,   400,   401,   402,   403,
+     409,   410,   404,   405,   406,   407,   408,     0,     0,   392,
+       0,   393,   394,   395,   396,   397,     0,   398,   399,   400,
+     401,   402,   403,   409,   410,   404,   405,   406,   407,   408,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,     0,   631,     0,     0,     0,     0,   409,   410,     0,
+       0,     0,     0,     0,     0,   392,     0,   393,   394,   395,
+     396,   397,     0,   398,   399,   400,   401,   402,   403,   409,
+     410,   404,   405,   406,   407,   408,     0,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,   409,   410,   404,   405,   406,   407,   408,     0,  -250,
+       0,  -250,  -250,  -250,  -250,  -250,     0,  -250,  -250,  -250,
+    -250,  -250,  -250,   409,   410,  -250,  -250,  -250,  -250,  -250,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,     0,   392,     0,   393,   394,   395,   396,   397,     0,
+     398,   399,   400,   401,   402,   403,   409,   410,   404,   405,
+     406,   407,   408,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   436,     0,     0,     0,     0,   409,
+     410,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   595,     0,     0,     0,     0,
+     409,   410,   392,     0,   393,   394,   395,   396,   397,     0,
+     398,   399,   400,   401,   402,   403,     0,     0,   404,   405,
+     406,   407,   408,     0,     0,     0,     0,     0,     0,     0,
+     602,     0,     0,     0,     0,   409,   410,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   616,     0,     0,     0,     0,   409,   410,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  -250,     0,     0,     0,     0,  -250,
+    -250,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   631,     0,     0,     0,     0,
      409,   410,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   678,     0,     0,     0,     0,   411,
-     412,   394,     0,   395,   396,   397,   398,   399,     0,   400,
-     401,   402,   403,   404,   405,     0,     0,   406,   407,   408,
-     409,   410,   394,     0,   395,   396,   397,   398,   399,     0,
-     400,   401,   402,   403,   404,   405,     0,     0,   406,   407,
-     408,   409,   410,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   680,     0,     0,     0,     0,   411,   412,     0,
-       0,     0,   420,     0,   394,     0,   395,   396,   397,   398,
-     399,     0,   400,   401,   402,   403,   404,   405,   411,   412,
-     406,   407,   408,   409,   410,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   782,     0,     0,     0,     0,   411,
-     412,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   783,     0,     0,     0,     0,
-     411,   412,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   784,     0,     0,     0,
-       0,   411,   412,   394,     0,   395,   396,   397,   398,   399,
-       0,   400,   401,   402,   403,   404,   405,     0,     0,   406,
-     407,   408,   409,   410,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   785,     0,     0,     0,
-       0,   411,   412,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   786,     0,     0,
-       0,     0,   411,   412,   394,     0,   395,   396,   397,   398,
-     399,     0,   400,   401,   402,   403,   404,   405,     0,     0,
-     406,   407,   408,   409,   410,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   787,
-       0,     0,     0,     0,   411,   412,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-       0,     0,   406,   407,   408,   409,   410,   394,     0,   395,
-     396,   397,   398,   399,     0,   400,   401,   402,   403,   404,
-     405,     0,     0,   406,   407,   408,   409,   410,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   788,     0,
-       0,     0,     0,   411,   412,   394,     0,   395,   396,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,     0,
-       0,   406,   407,   408,   409,   410,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-       0,     0,   406,   407,   408,   409,   410,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   789,
-       0,     0,     0,     0,   411,   412,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-       0,     0,   406,   407,   408,   409,   410,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   790,     0,     0,     0,     0,   411,   412,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,   791,     0,     0,     0,     0,   411,   412,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,   792,     0,     0,     0,     0,   411,   412,
-     394,     0,   395,   396,   397,   398,   399,     0,   400,   401,
-     402,   403,   404,   405,     0,     0,   406,   407,   408,   409,
-     410,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     793,     0,     0,     0,     0,   411,   412,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   794,     0,     0,     0,     0,   411,   412,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   800,     0,     0,     0,     0,   411,   412,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,     0,
-       0,   406,   407,   408,   409,   410,     0,     0,     0,     0,
-       0,     0,   399,   713,   400,   401,   402,   403,   404,   405,
-       0,   151,   406,   407,   408,   409,   410,     0,     0,     0,
-     152,   153,   714,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   846,     0,     0,   154,   155,
-     411,   412,     0,   156,   157,   158,   159,     0,     0,     0,
-       0,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,   400,
-     401,   402,   403,   404,   405,     0,     0,   406,   407,   408,
-     409,   410,     0,   905,     0,     0,     0,     0,   411,   412,
-    -508,  -508,  -508,  -508,  -508,  -508,     0,     0,   406,   407,
-     408,   409,   410,     0,     0,     0,     0,     0,     0,   330,
-     331,   563,     0,   564,     0,     0,     0,     0,     0,     0,
-     179,     0,     0,     0,     0,     0,     0,     0,   411,   412,
-       0,   180,   181,     0,     0,     0,     0,   182,   333,   334,
-     335,     0,     0,   336,     0,   411,   412,   183,   184,     0,
-     151,   185,   186,   187,   188,     0,     0,     0,    92,   152,
-     153,     0,     0,     0,     0,   189,   411,   412,   190,     0,
-       0,     0,     0,     0,     0,     0,     0,   154,   155,     0,
-       0,     0,   156,   157,   158,   159,     0,     0,     0,     0,
-       0,     0,     0,     0,   160,   161,   162,   163,   164,   165,
-     166,     0,   167,   168,   169,     0,     0,   170,   171,   172,
-       0,   173,   174,   175,   176,   177,     0,   178,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     180,   181,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   411,   412,   330,   331,   332,   183,   184,     0,     0,
-     185,   186,   187,   188,     0,     0,     0,   337,     0,     0,
-       0,     0,   411,   412,   189,     0,     0,   565,     0,   179,
-       0,     0,   333,   334,   335,     0,     0,   336,     0,     0,
-     180,   181,     0,     0,     0,     0,   182,   818,     0,     0,
-       0,     0,     0,     0,     0,   151,   183,   184,     0,     0,
-     185,   186,   187,   188,   152,   153,     0,    92,     0,     0,
-       0,     0,     0,     0,   189,     0,     0,   190,     0,     0,
-       0,     0,   154,   155,     0,   206,     0,   156,   157,   158,
-     159,     0,     0,     0,     0,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,   180,   181,     0,     0,     0,     0,
-       0,     0,     0,   330,   331,     0,     0,     0,     0,     0,
-     183,   184,     0,     0,   185,   186,   187,   188,     0,     0,
-       0,   337,     0,     0,     0,     0,     0,     0,   189,     0,
-       0,   338,   333,   334,   335,     0,     0,   336,     0,     0,
-       0,     0,     0,     0,   179,   899,     0,     0,     0,     0,
-       0,     0,     0,   151,     0,   180,   181,     0,     0,     0,
-       0,   182,   152,   153,     0,     0,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-     154,   155,    92,     0,     0,   156,   157,   158,   159,   189,
-       0,     0,   190,     0,     0,     0,     0,   160,   161,   162,
-     163,   164,   165,   166,     0,   167,   168,   169,     0,     0,
-     170,   171,   172,     0,   173,   174,   175,   176,   177,     0,
-     178,     0,     0,     0,   180,   181,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     183,   184,     0,     0,   185,   186,   187,   188,     0,     0,
-       0,   337,     0,     0,     0,     0,     0,     0,   189,     0,
-       0,   565,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   179,     0,   532,     0,     0,     0,     0,     0,
-       0,   151,     0,   180,   181,     0,     0,     0,     0,   182,
-     152,   153,   533,     0,     0,     0,     0,     0,     0,   183,
-     184,     0,     0,   185,   186,   187,   188,     0,   154,   155,
-      92,     0,     0,   156,   157,   158,   159,   189,     0,     0,
-     190,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,   455,
-       0,     0,     0,   456,   457,   458,   459,     0,     0,     0,
-       0,     0,     0,     0,     0,   460,   461,   462,   463,   464,
-     465,   466,     0,   467,   468,   469,     0,     0,   470,   471,
-     472,     0,     0,   473,   474,   475,   476,     0,   477,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     179,     0,   657,     0,     0,     0,     0,     0,     0,   151,
-       0,   180,   181,     0,     0,     0,     0,   182,   152,   153,
-       0,   658,     0,     0,     0,     0,     0,   183,   184,     0,
-       0,   185,   186,   187,   188,     0,   154,   155,    92,     0,
-       0,   156,   157,   158,   159,   189,     0,     0,   190,     0,
-       0,     0,     0,   160,   161,   162,   163,   164,   165,   166,
-       0,   167,   168,   169,     0,     0,   170,   171,   172,     0,
-     173,   174,   175,   176,   177,     0,   178,     0,   478,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
-     733,     0,     0,     0,     0,     0,     0,   151,     0,   180,
-     181,     0,     0,     0,     0,   182,   152,   153,   533,     0,
-       0,     0,     0,     0,     0,   183,   184,     0,     0,   185,
-     186,   187,   188,     0,   154,   155,    92,     0,     0,   156,
-     157,   158,   159,   189,     0,     0,   190,     0,     0,     0,
-       0,   160,   161,   162,   163,   164,   165,   166,     0,   167,
-     168,   169,     0,     0,   170,   171,   172,     0,   173,   174,
-     175,   176,   177,     0,   178,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,   179,     0,   640,     0,
-       0,     0,     0,     0,     0,   151,     0,   180,   181,     0,
-       0,     0,     0,   182,   152,   153,     0,     0,     0,     0,
-       0,     0,     0,   183,   184,     0,     0,   185,   186,   187,
-     188,     0,   154,   155,    92,     0,     0,   156,   157,   158,
-     159,   189,     0,     0,   190,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   179,     0,   662,     0,     0,     0,
-       0,     0,     0,   151,     0,   180,   181,     0,     0,     0,
-       0,   182,   152,   153,     0,     0,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-     154,   155,    92,     0,     0,   156,   157,   158,   159,   189,
-       0,     0,   190,     0,     0,     0,     0,   160,   161,   162,
-     163,   164,   165,   166,     0,   167,   168,   169,     0,     0,
-     170,   171,   172,     0,   173,   174,   175,   176,   177,     0,
-     178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,   179,     0,   664,     0,     0,     0,     0,     0,
-       0,   151,     0,   180,   181,     0,     0,     0,     0,   182,
-     152,   153,     0,     0,     0,     0,     0,     0,     0,   183,
-     184,     0,     0,   185,   186,   187,   188,     0,   154,   155,
-      92,     0,     0,   156,   157,   158,   159,   189,     0,     0,
-     190,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     179,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,   180,   181,     0,     0,     0,     0,   182,   152,   153,
-     751,     0,   752,     0,     0,     0,     0,   183,   184,     0,
-       0,   185,   186,   187,   188,     0,   154,   155,    92,     0,
-       0,   156,   157,   158,   159,   189,     0,     0,   190,     0,
-       0,     0,     0,   160,   161,   162,   163,   164,   165,   166,
-       0,   167,   168,   169,     0,     0,   170,   171,   172,     0,
-     173,   174,   175,   176,   177,     0,   178,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
-       0,     0,     0,     0,     0,     0,     0,   151,     0,   180,
-     181,     0,     0,     0,     0,   182,   152,   153,   533,     0,
-       0,     0,     0,     0,     0,   183,   184,     0,     0,   185,
-     186,   187,   188,     0,   154,   155,    92,     0,     0,   156,
-     157,   158,   159,   189,     0,     0,   753,     0,     0,     0,
-       0,   160,   161,   162,   163,   164,   165,   166,     0,   167,
-     168,   169,     0,     0,   170,   171,   172,     0,   173,   174,
-     175,   176,   177,     0,   178,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,   179,     0,     0,     0,
-       0,     0,     0,     0,     0,   151,     0,   180,   181,     0,
-       0,     0,     0,   182,   152,   153,   558,     0,     0,     0,
-       0,     0,     0,   183,   184,     0,     0,   185,   186,   187,
-     188,     0,   154,   155,   539,     0,     0,   156,   157,   158,
-     159,   189,     0,     0,   190,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   179,     0,     0,     0,     0,     0,
-       0,     0,     0,   151,     0,   180,   181,     0,     0,     0,
-       0,   182,   152,   153,   533,     0,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-     154,   155,    92,     0,     0,   156,   157,   158,   159,   189,
-       0,     0,   190,     0,     0,     0,     0,   160,   161,   162,
-     163,   164,   165,   166,     0,   167,   168,   169,     0,     0,
-     170,   171,   172,     0,   173,   174,   175,   176,   177,     0,
-     178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,   179,     0,     0,     0,     0,     0,     0,     0,
-       0,   151,     0,   180,   181,     0,     0,     0,     0,   182,
-     152,   153,   738,     0,     0,     0,     0,     0,     0,   183,
-     184,     0,     0,   185,   186,   187,   188,     0,   154,   155,
-      92,     0,     0,   156,   157,   158,   159,   189,     0,     0,
-     190,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     179,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,   180,   181,     0,     0,     0,     0,   182,   152,   153,
-     714,     0,     0,     0,     0,     0,     0,   183,   184,     0,
-       0,   185,   186,   187,   188,     0,   154,   155,    92,     0,
-       0,   156,   157,   158,   159,   189,     0,     0,   190,     0,
-       0,     0,     0,   160,   161,   162,   163,   164,   165,   166,
-       0,   167,   168,   169,     0,     0,   170,   171,   172,     0,
-     173,   174,   175,   176,   177,     0,   178,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
-       0,     0,     0,     0,     0,     0,     0,   151,     0,   180,
-     181,     0,     0,     0,     0,   182,   152,   153,   953,     0,
-       0,     0,     0,     0,     0,   183,   184,     0,     0,   185,
-     186,   187,   188,     0,   154,   155,    92,     0,     0,   156,
-     157,   158,   159,   189,     0,     0,   190,     0,     0,     0,
-       0,   160,   161,   162,   163,   164,   165,   166,     0,   167,
-     168,   169,     0,     0,   170,   171,   172,     0,   173,   174,
-     175,   176,   177,     0,   178,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,   179,     0,     0,     0,
-       0,     0,     0,     0,     0,   151,     0,   180,   181,     0,
-       0,     0,     0,   182,   152,   153,     0,     0,     0,     0,
-       0,     0,     0,   183,   184,     0,     0,   185,   186,   187,
-     188,     0,   154,   155,    92,     0,     0,   156,   157,   158,
-     159,   189,     0,     0,   190,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   179,     0,     0,     0,     0,     0,
-       0,     0,     0,   151,     0,   180,   181,     0,     0,     0,
-       0,   182,   152,   153,     0,     0,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-     154,   155,    92,     0,     0,   156,   157,   158,   159,   189,
-       0,     0,   190,     0,     0,     0,     0,   160,   161,   162,
-     163,   164,   165,   166,     0,   167,   168,   169,     0,     0,
-     170,   171,   172,     0,   173,   174,   175,   176,   177,     0,
-     178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,   179,     0,     0,     0,     0,     0,     0,     0,
-       0,   151,     0,   180,   181,     0,     0,     0,     0,   182,
-     152,   153,     0,     0,     0,     0,     0,     0,     0,   183,
-     184,     0,     0,   185,   186,   187,   188,     0,   154,   155,
-      92,     0,     0,   156,   157,   158,   159,   189,     0,     0,
-     383,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     179,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,   180,   181,     0,     0,     0,     0,   182,   152,   153,
-       0,     0,     0,     0,     0,     0,     0,   183,   184,     0,
-       0,   185,   186,   187,   188,     0,   154,   155,    92,     0,
-       0,   156,   157,   158,   159,   446,     0,     0,   190,     0,
-       0,     0,     0,   160,   161,   162,   163,   164,   165,   166,
-       0,   167,   168,   169,     0,     0,   170,   171,   172,     0,
-     173,   174,   175,   176,   177,     0,   178,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
-       0,     0,     0,     0,     0,     0,     0,   151,     0,   180,
-     181,     0,     0,     0,     0,   182,   152,   153,     0,     0,
-       0,     0,     0,     0,     0,   183,   184,     0,     0,   185,
-     186,   187,   188,     0,   154,   155,    92,     0,     0,   156,
-     157,   158,   159,   189,     0,     0,   542,     0,     0,     0,
-       0,   160,   161,   162,   163,   164,   165,   166,     0,   167,
-     168,   169,     0,     0,   170,   171,   172,     0,   173,   174,
-     175,   176,   177,     0,   178,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,   179,     0,     0,     0,
-       0,     0,     0,     0,     0,   151,     0,   180,   181,     0,
-       0,     0,     0,   182,   152,   153,     0,     0,     0,     0,
-       0,     0,     0,   183,   184,     0,     0,   185,   186,   187,
-     188,     0,   154,   155,   893,     0,     0,   156,   157,   158,
-     159,   189,     0,     0,   383,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   179,    19,     0,     0,    20,   -28,
-      21,    22,     0,     0,    23,   180,   181,    24,    25,    26,
-       0,   182,     0,     0,    27,    28,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,    29,
-       0,     0,    92,    30,    31,     0,     0,     0,    32,   189,
-       0,     0,   918,     0,    33,     0,    34,    35,     0,    36,
-       0,    37,    38,    39,    40,    41,     0,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,     0,     0,    58,    59,    60,     0,    61,
-      62,    63,     0,    64,    65,    66,     0,     0,    67,     0,
-      68,     0,     0,    69,    70,    71,    72,     0,     0,    73,
-      74,    75,     0,     0,     0,     0,     0,    76,     0,     0,
-       0,    77,    78,    79,    80,    81,    82,    83,     0,    84,
-      85,    86,    87,    88,     0,     0,    89,     0,     0,     0,
-       0,   154,   155,    90,    91,    92,   156,   157,   158,   159,
-       0,     0,    93,     0,     0,     0,     0,     0,   160,   161,
-     162,   163,   164,   165,   166,     0,   167,   168,   169,     0,
-       0,   170,   171,   172,     0,   173,   174,   175,   176,   177,
-       0,   178,   154,   155,     0,     0,     0,   156,   157,   158,
-     159,     0,     0,     0,     0,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   180,   181,     0,     0,     0,     0,
-     182,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     183,   184,     0,     0,   185,   186,   187,   188,     0,     0,
-      23,    92,     0,     0,     0,     0,     0,     0,   189,     0,
-       0,   577,     0,     0,     0,   180,   181,     0,     0,     0,
-       0,   182,     0,     0,     0,    29,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-      33,     0,   893,     0,     0,    36,   348,     0,     0,   189,
-      40,    41,   577,     0,     0,     0,     0,     0,     0,     0,
-     349,    50,    51,    52,    53,    54,    55,   350,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      65,     0,     0,     0,     0,     0,    68,     0,     0,     0,
-       0,     0,     0,     0,     0,    73,     0,    75,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,    92,     0,     0,     0,     0,     0,     0,    93
+       0,     0,     0,     0,     0,     0,     0,   666,     0,     0,
+       0,     0,   409,   410,   392,     0,   393,   394,   395,   396,
+     397,     0,   398,   399,   400,   401,   402,   403,     0,     0,
+     404,   405,   406,   407,   408,   392,     0,   393,   394,   395,
+     396,   397,     0,   398,   399,   400,   401,   402,   403,     0,
+       0,   404,   405,   406,   407,   408,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   671,     0,     0,
+       0,     0,   409,   410,   392,     0,   393,   394,   395,   396,
+     397,     0,   398,   399,   400,   401,   402,   403,     0,     0,
+     404,   405,   406,   407,   408,   392,     0,   393,   394,   395,
+     396,   397,     0,   398,   399,   400,   401,   402,   403,     0,
+       0,   404,   405,   406,   407,   408,   392,     0,   393,   394,
+     395,   396,   397,     0,   398,   399,   400,   401,   402,   403,
+       0,     0,   404,   405,   406,   407,   408,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,     0,     0,   404,   405,   406,   407,   408,   392,     0,
+     393,   394,   395,   396,   397,     0,   398,   399,   400,   401,
+     402,   403,     0,     0,   404,   405,   406,   407,   408,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   673,
+       0,     0,     0,     0,   409,   410,     0,     0,     0,   418,
+       0,   392,     0,   393,   394,   395,   396,   397,     0,   398,
+     399,   400,   401,   402,   403,   409,   410,   404,   405,   406,
+     407,   408,   392,     0,   393,   394,   395,   396,   397,     0,
+     398,   399,   400,   401,   402,   403,     0,     0,   404,   405,
+     406,   407,   408,     0,     0,     0,     0,     0,     0,   773,
+       0,     0,     0,     0,   409,   410,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     774,     0,     0,     0,     0,   409,   410,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   775,     0,     0,     0,     0,   409,   410,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   776,     0,     0,     0,     0,   409,   410,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   777,     0,     0,     0,     0,   409,   410,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   778,     0,     0,     0,
+       0,   409,   410,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   779,     0,     0,
+       0,     0,   409,   410,   392,     0,   393,   394,   395,   396,
+     397,     0,   398,   399,   400,   401,   402,   403,     0,     0,
+     404,   405,   406,   407,   408,   392,     0,   393,   394,   395,
+     396,   397,     0,   398,   399,   400,   401,   402,   403,     0,
+       0,   404,   405,   406,   407,   408,   392,     0,   393,   394,
+     395,   396,   397,     0,   398,   399,   400,   401,   402,   403,
+       0,     0,   404,   405,   406,   407,   408,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,     0,     0,   404,   405,   406,   407,   408,   392,     0,
+     393,   394,   395,   396,   397,     0,   398,   399,   400,   401,
+     402,   403,     0,     0,   404,   405,   406,   407,   408,     0,
+       0,     0,     0,     0,     0,   780,     0,     0,     0,     0,
+     409,   410,   392,     0,   393,   394,   395,   396,   397,     0,
+     398,   399,   400,   401,   402,   403,     0,     0,   404,   405,
+     406,   407,   408,   392,     0,   393,   394,   395,   396,   397,
+       0,   398,   399,   400,   401,   402,   403,     0,     0,   404,
+     405,   406,   407,   408,     0,     0,     0,     0,     0,    22,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   781,
+       0,     0,     0,     0,   409,   410,     0,     0,     0,     0,
+       0,     0,     0,     0,    28,     0,     0,     0,     0,     0,
+     782,     0,     0,     0,     0,   409,   410,     0,     0,    32,
+       0,     0,     0,     0,    35,   348,     0,     0,     0,    39,
+      40,   783,     0,     0,     0,     0,   409,   410,     0,   349,
+      49,    50,    51,    52,    53,    54,   350,     0,     0,     0,
+       0,     0,   784,     0,     0,     0,     0,   409,   410,    64,
+       0,     0,     0,     0,     0,    67,     0,     0,     0,     0,
+       0,     0,     0,   785,    72,     0,    74,     0,   409,   410,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,     0,     0,     0,     0,     0,     0,   791,     0,     0,
+      91,     0,   409,   410,     0,     0,     0,    92,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   843,     0,
+       0,     0,     0,   409,   410,   392,     0,   393,   394,   395,
+     396,   397,   708,   398,   399,   400,   401,   402,   403,     0,
+     149,   404,   405,   406,   407,   408,     0,     0,     0,   150,
+     151,   709,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
+       0,     0,   154,   155,   156,   157,     0,     0,     0,     0,
+       0,     0,     0,     0,   158,   159,   160,   161,   162,   163,
+     164,     0,   165,   166,   167,     0,     0,   168,   169,   170,
+       0,   171,   172,   173,   174,   175,     0,   176,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   453,     0,
+       0,     0,   454,   455,   456,   457,     0,     0,     0,     0,
+       0,     0,     0,     0,   458,   459,   460,   461,   462,   463,
+     464,     0,   465,   466,   467,   900,     0,   468,   469,   470,
+     409,   410,   471,   472,   473,   474,     0,   475,     0,   177,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,     0,
+     178,   179,     0,     0,     0,     0,   180,   150,   151,     0,
+       0,     0,     0,     0,     0,     0,   181,   182,     0,     0,
+     183,   184,   185,   186,     0,   152,   153,    91,     0,     0,
+     154,   155,   156,   157,   187,   409,   410,   188,     0,     0,
+       0,     0,   158,   159,   160,   161,   162,   163,   164,     0,
+     165,   166,   167,     0,     0,   168,   169,   170,     0,   171,
+     172,   173,   174,   175,     0,   176,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   476,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   177,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   178,   179,
+       0,     0,     0,     0,   180,   809,     0,     0,     0,     0,
+       0,     0,     0,   149,   181,   182,     0,     0,   183,   184,
+     185,   186,   150,   151,     0,    91,     0,     0,     0,     0,
+       0,     0,   187,     0,     0,   188,     0,     0,     0,     0,
+     152,   153,     0,   204,     0,   154,   155,   156,   157,     0,
+       0,     0,     0,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   177,   894,     0,     0,     0,     0,     0,     0,
+       0,   149,     0,   178,   179,     0,     0,     0,     0,   180,
+     150,   151,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,   152,   153,
+      91,     0,     0,   154,   155,   156,   157,   187,     0,     0,
+     188,     0,     0,     0,     0,   158,   159,   160,   161,   162,
+     163,   164,     0,   165,   166,   167,     0,     0,   168,   169,
+     170,     0,   171,   172,   173,   174,   175,     0,   176,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,   531,     0,     0,     0,     0,     0,     0,   149,
+       0,   178,   179,     0,     0,     0,     0,   180,   150,   151,
+     532,     0,     0,     0,     0,     0,     0,   181,   182,     0,
+       0,   183,   184,   185,   186,     0,   152,   153,    91,     0,
+       0,   154,   155,   156,   157,   187,     0,     0,   188,     0,
+       0,     0,     0,   158,   159,   160,   161,   162,   163,   164,
+       0,   165,   166,   167,     0,     0,   168,   169,   170,     0,
+     171,   172,   173,   174,   175,     0,   176,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+     650,     0,     0,     0,     0,     0,     0,   149,     0,   178,
+     179,     0,     0,     0,     0,   180,   150,   151,     0,   651,
+       0,     0,     0,     0,     0,   181,   182,     0,     0,   183,
+     184,   185,   186,     0,   152,   153,    91,     0,     0,   154,
+     155,   156,   157,   187,     0,     0,   188,     0,     0,     0,
+       0,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,     0,     0,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   177,     0,   728,     0,
+       0,     0,     0,     0,     0,   149,     0,   178,   179,     0,
+       0,     0,     0,   180,   150,   151,   532,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,   152,   153,    91,     0,     0,   154,   155,   156,
+     157,   187,     0,     0,   188,     0,     0,     0,     0,   158,
+     159,   160,   161,   162,   163,   164,     0,   165,   166,   167,
+       0,     0,   168,   169,   170,     0,   171,   172,   173,   174,
+     175,     0,   176,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   177,     0,   633,     0,     0,     0,
+       0,     0,     0,   149,     0,   178,   179,     0,     0,     0,
+       0,   180,   150,   151,     0,     0,     0,     0,     0,     0,
+       0,   181,   182,     0,     0,   183,   184,   185,   186,     0,
+     152,   153,    91,     0,     0,   154,   155,   156,   157,   187,
+       0,     0,   188,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   177,     0,   655,     0,     0,     0,     0,     0,
+       0,   149,     0,   178,   179,     0,     0,     0,     0,   180,
+     150,   151,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,   152,   153,
+      91,     0,     0,   154,   155,   156,   157,   187,     0,     0,
+     188,     0,     0,     0,     0,   158,   159,   160,   161,   162,
+     163,   164,     0,   165,   166,   167,     0,     0,   168,   169,
+     170,     0,   171,   172,   173,   174,   175,     0,   176,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,   657,     0,     0,     0,     0,     0,     0,   149,
+       0,   178,   179,     0,     0,     0,     0,   180,   150,   151,
+       0,     0,     0,     0,     0,     0,     0,   181,   182,     0,
+       0,   183,   184,   185,   186,     0,   152,   153,    91,     0,
+       0,   154,   155,   156,   157,   187,     0,     0,   188,     0,
+       0,     0,     0,   158,   159,   160,   161,   162,   163,   164,
+       0,   165,   166,   167,     0,     0,   168,   169,   170,     0,
+     171,   172,   173,   174,   175,     0,   176,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+       0,     0,     0,     0,     0,     0,     0,   149,     0,   178,
+     179,     0,     0,     0,     0,   180,   150,   151,   746,     0,
+     747,     0,     0,     0,     0,   181,   182,     0,     0,   183,
+     184,   185,   186,     0,   152,   153,    91,     0,     0,   154,
+     155,   156,   157,   187,     0,     0,   188,     0,     0,     0,
+       0,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,     0,     0,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   177,     0,     0,     0,
+       0,     0,     0,     0,     0,   149,     0,   178,   179,     0,
+       0,     0,     0,   180,   150,   151,   532,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,   152,   153,    91,     0,     0,   154,   155,   156,
+     157,   187,     0,     0,   748,     0,     0,     0,     0,   158,
+     159,   160,   161,   162,   163,   164,     0,   165,   166,   167,
+       0,     0,   168,   169,   170,     0,   171,   172,   173,   174,
+     175,     0,   176,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   177,     0,     0,     0,     0,     0,
+       0,     0,     0,   149,     0,   178,   179,     0,     0,     0,
+       0,   180,   150,   151,   557,     0,     0,     0,     0,     0,
+       0,   181,   182,     0,     0,   183,   184,   185,   186,     0,
+     152,   153,   538,     0,     0,   154,   155,   156,   157,   187,
+       0,     0,   188,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   177,     0,     0,     0,     0,     0,     0,     0,
+       0,   149,     0,   178,   179,     0,     0,     0,     0,   180,
+     150,   151,   532,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,   152,   153,
+      91,     0,     0,   154,   155,   156,   157,   187,     0,     0,
+     188,     0,     0,     0,     0,   158,   159,   160,   161,   162,
+     163,   164,     0,   165,   166,   167,     0,     0,   168,   169,
+     170,     0,   171,   172,   173,   174,   175,     0,   176,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,     0,     0,     0,     0,     0,     0,     0,   149,
+       0,   178,   179,     0,     0,     0,     0,   180,   150,   151,
+     733,     0,     0,     0,     0,     0,     0,   181,   182,     0,
+       0,   183,   184,   185,   186,     0,   152,   153,    91,     0,
+       0,   154,   155,   156,   157,   187,     0,     0,   188,     0,
+       0,     0,     0,   158,   159,   160,   161,   162,   163,   164,
+       0,   165,   166,   167,     0,     0,   168,   169,   170,     0,
+     171,   172,   173,   174,   175,     0,   176,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+       0,     0,     0,     0,     0,     0,     0,   149,     0,   178,
+     179,     0,     0,     0,     0,   180,   150,   151,   709,     0,
+       0,     0,     0,     0,     0,   181,   182,     0,     0,   183,
+     184,   185,   186,     0,   152,   153,    91,     0,     0,   154,
+     155,   156,   157,   187,     0,     0,   188,     0,     0,     0,
+       0,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,     0,     0,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   177,     0,     0,     0,
+       0,     0,     0,     0,     0,   149,     0,   178,   179,     0,
+       0,     0,     0,   180,   150,   151,   954,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,   152,   153,    91,     0,     0,   154,   155,   156,
+     157,   187,     0,     0,   188,     0,     0,     0,     0,   158,
+     159,   160,   161,   162,   163,   164,     0,   165,   166,   167,
+       0,     0,   168,   169,   170,     0,   171,   172,   173,   174,
+     175,     0,   176,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   177,     0,     0,     0,     0,     0,
+       0,     0,     0,   149,     0,   178,   179,     0,     0,     0,
+       0,   180,   150,   151,     0,     0,     0,     0,     0,     0,
+       0,   181,   182,     0,     0,   183,   184,   185,   186,     0,
+     152,   153,    91,     0,     0,   154,   155,   156,   157,   187,
+       0,     0,   188,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   177,     0,     0,     0,     0,     0,     0,     0,
+       0,   149,     0,   178,   179,     0,     0,     0,     0,   180,
+     150,   151,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,   152,   153,
+      91,     0,     0,   154,   155,   156,   157,   187,     0,     0,
+     188,     0,     0,     0,     0,   158,   159,   160,   161,   162,
+     163,   164,     0,   165,   166,   167,     0,     0,   168,   169,
+     170,     0,   171,   172,   173,   174,   175,     0,   176,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,     0,     0,     0,     0,     0,     0,     0,   149,
+       0,   178,   179,     0,     0,     0,     0,   180,   150,   151,
+       0,     0,     0,     0,     0,     0,     0,   181,   182,     0,
+       0,   183,   184,   185,   186,     0,   152,   153,    91,     0,
+       0,   154,   155,   156,   157,   187,     0,     0,   381,     0,
+       0,     0,     0,   158,   159,   160,   161,   162,   163,   164,
+       0,   165,   166,   167,     0,     0,   168,   169,   170,     0,
+     171,   172,   173,   174,   175,     0,   176,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+       0,     0,     0,     0,     0,     0,     0,   149,     0,   178,
+     179,     0,     0,     0,     0,   180,   150,   151,     0,     0,
+       0,     0,     0,     0,     0,   181,   182,     0,     0,   183,
+     184,   185,   186,     0,   152,   153,    91,     0,     0,   154,
+     155,   156,   157,   444,     0,     0,   188,     0,     0,     0,
+       0,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,     0,     0,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   177,     0,     0,     0,
+       0,     0,     0,     0,     0,   149,     0,   178,   179,     0,
+       0,     0,     0,   180,   150,   151,     0,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,   152,   153,    91,     0,     0,   154,   155,   156,
+     157,   187,     0,     0,   541,     0,     0,     0,     0,   158,
+     159,   160,   161,   162,   163,   164,     0,   165,   166,   167,
+       0,     0,   168,   169,   170,     0,   171,   172,   173,   174,
+     175,     0,   176,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   177,     0,     0,     0,     0,     0,
+       0,     0,     0,   149,     0,   178,   179,     0,     0,     0,
+       0,   180,   150,   151,     0,     0,     0,     0,     0,     0,
+       0,   181,   182,     0,     0,   183,   184,   185,   186,     0,
+     152,   153,   888,     0,     0,   154,   155,   156,   157,   187,
+       0,     0,   381,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,   329,   330,   562,     0,   563,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   152,
+     153,     0,     0,     0,   154,   155,   156,   157,     0,     0,
+     332,   333,   334,     0,     0,   335,   158,   159,   160,   161,
+     162,   163,   164,     0,   165,   166,   167,     0,     0,   168,
+     169,   170,   177,   171,   172,   173,   174,   175,     0,   176,
+       0,     0,     0,   178,   179,     0,     0,     0,     0,   180,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,     0,     0,
+      91,     0,     0,     0,     0,     0,     0,   187,     0,     0,
+     917,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   178,   179,     0,     0,     0,     0,   180,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   181,   182,
+       0,     0,   183,   184,   185,   186,   329,   330,   331,   336,
+       0,     0,     0,     0,     0,     0,   187,     0,     0,   564,
+       0,     0,     0,     0,   152,   153,     0,     0,     0,   154,
+     155,   156,   157,     0,     0,   332,   333,   334,     0,     0,
+     335,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,   329,   330,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+     152,   153,     0,     0,     0,   154,   155,   156,   157,     0,
+       0,   332,   333,   334,     0,     0,   335,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   178,   179,     0,
+       0,     0,     0,   180,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,     0,     0,   336,     0,     0,     0,     0,     0,
+       0,   187,     0,    19,   337,     0,    20,   -28,    21,   -28,
+       0,     0,    22,   178,   179,    23,    24,    25,     0,   180,
+       0,     0,    26,    27,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,    28,     0,     0,
+     336,    29,    30,     0,     0,     0,    31,   187,     0,     0,
+     564,     0,    32,     0,    33,    34,     0,    35,     0,    36,
+      37,    38,    39,    40,     0,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,     0,     0,    57,    58,    59,     0,    60,    61,    62,
+       0,    63,    64,    65,     0,     0,    66,     0,    67,     0,
+       0,    68,    69,    70,    71,     0,     0,    72,    73,    74,
+       0,     0,     0,     0,     0,    75,     0,     0,     0,    76,
+      77,    78,    79,    80,    81,    82,     0,    83,    84,    85,
+      86,    87,     0,     0,    88,     0,     0,     0,     0,   152,
+     153,    89,    90,    91,   154,   155,   156,   157,     0,     0,
+      92,     0,     0,     0,     0,     0,   158,   159,   160,   161,
+     162,   163,   164,     0,   165,   166,   167,     0,     0,   168,
+     169,   170,     0,   171,   172,   173,   174,   175,     0,   176,
+     152,   153,     0,     0,     0,   154,   155,   156,   157,     0,
+       0,     0,     0,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   178,   179,     0,     0,     0,     0,   180,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   181,   182,
+       0,     0,   183,   184,   185,   186,     0,     0,     0,    91,
+       0,     0,     0,     0,     0,     0,   187,     0,     0,   576,
+       0,     0,     0,   178,   179,     0,     0,     0,     0,   180,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,     0,     0,
+     888,     0,     0,     0,     0,     0,     0,   187,     0,     0,
+     576
 };
 
 static const yytype_int16 yycheck[] =
 {
-      27,   233,    29,   179,   202,   287,    33,    36,   298,    36,
-     275,   383,   290,   141,   279,    42,   179,   416,   500,   580,
-     721,    22,   583,    18,    35,   179,     3,   309,   344,   233,
-     451,     3,     5,    23,   238,    47,   190,   238,     3,    23,
-      23,     4,     4,    23,    25,     3,   578,   734,   580,    60,
-      61,   583,    23,   328,   141,     3,    21,    22,    23,    71,
-      72,     3,     4,   338,    31,   104,   176,    79,     3,   179,
-     764,   346,   123,     3,   113,   124,   169,     3,   158,     3,
-     160,     3,   236,   490,    24,   106,   137,   108,   169,     3,
-       3,   112,     3,     3,   187,     3,     3,     3,   179,    20,
-      98,     3,   100,    24,   131,   233,     3,     3,     3,   138,
-     238,   138,     3,   125,     3,   127,   128,   125,   177,     3,
-     127,   528,   169,   150,   151,   179,    20,    21,    22,    23,
-      24,    25,   159,    80,    81,   189,    21,    22,    23,     3,
-     187,     3,    23,    24,    25,   169,   173,   429,     3,     4,
-     169,   577,   179,   126,   802,   803,    20,   176,    20,   585,
-      24,   169,    24,   190,    23,   866,   342,   194,     4,    20,
-      20,   347,   495,    24,    24,     3,   179,   500,   205,    20,
-      35,   868,   179,    24,   347,   212,   169,   179,   180,   169,
-     884,    13,    20,   347,   221,   179,    24,   180,   188,   226,
-     328,   179,   169,   180,   185,   186,    27,   383,   179,   236,
-     338,   189,   169,   262,   342,   187,   189,   169,   346,   246,
-     383,   922,   180,   188,   187,   187,   508,   509,   179,   383,
-     762,   763,   180,   765,   516,   179,   884,   276,   180,   179,
-      62,   328,   532,   282,   169,   180,   257,   286,   169,   539,
-     180,   338,   273,   569,   180,   342,   180,    33,   180,   346,
-     576,   633,   263,   635,   636,   547,   180,   180,   266,   180,
-     180,   298,   180,   180,   180,   302,   592,   304,   180,   359,
-     360,    21,    22,   180,   180,   180,   180,   415,   158,   180,
-     565,   180,   319,   320,   295,   316,   180,   324,   378,   379,
-     380,   381,   382,   188,   185,   186,   333,   334,   335,   336,
-     169,   391,   587,   588,   589,   590,   591,   312,   169,   169,
-     347,   180,   144,   176,   885,   179,   179,   179,    20,    21,
-      22,    23,    24,    25,   361,   179,     3,   179,   365,   366,
-     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
-     179,   772,   773,   885,   169,   169,   383,    24,   840,     3,
-       4,   176,   594,     3,   179,   847,     3,   394,   395,   396,
-     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,   411,   412,   158,   209,   542,   416,
-     594,   595,   219,    23,   595,   141,   142,   424,   425,     4,
-     169,   577,   138,   139,   140,   937,   176,   179,     3,   585,
-     169,   233,   179,   240,   236,   179,   238,   239,   817,    23,
-      24,    25,   244,    20,    21,    22,    23,    24,    25,   801,
-     802,   803,   179,   189,   750,   179,   179,   565,   260,   841,
-     842,   843,   844,   733,   722,   179,   179,   712,   730,   577,
-     179,   767,   768,   769,   770,   771,   179,   585,   280,   587,
-     588,   589,   590,   591,   746,   492,   594,   595,   179,   496,
-     633,   179,   635,   636,    29,   487,   503,   179,   565,   683,
-     755,   502,   683,   179,   688,   639,   507,   688,   180,   510,
-     577,   179,   179,   179,   179,   317,   179,   179,   585,   321,
-     587,   588,   589,   590,   591,   532,   328,   179,   179,   179,
-     179,   538,   539,   179,   179,   542,   338,   840,   841,   842,
-     843,   844,   179,   179,   847,    80,    81,    82,   169,   142,
-     143,   169,     3,    20,    21,    22,    23,    24,    25,   566,
-       4,   169,   169,   825,     3,   158,   159,     3,   575,   162,
-     163,   164,   165,     5,   109,   683,   111,   112,   113,   169,
-     688,   116,   117,   176,   119,   120,     3,   883,    21,    22,
-      23,    24,    25,   602,     3,   602,   603,   169,   179,   169,
-     870,   169,   169,   865,   180,     4,     3,   176,   764,     3,
-     176,     3,     5,   132,   876,   179,   179,    30,     3,   753,
-      20,    21,    22,    23,    24,    25,   633,     3,   635,   636,
-       3,     3,   639,   640,   189,     3,   180,   180,   705,     3,
-       3,    24,   179,   169,   169,   823,   169,   755,   179,   169,
-     657,   658,   180,     3,     5,   662,   764,   664,   801,   802,
-     803,   668,   180,   176,   180,     3,     3,   801,    25,   881,
-     179,     3,     3,     3,   681,   682,     4,   180,   180,   169,
-      84,   180,   180,    24,    24,   179,     4,   694,   755,   696,
-      24,   169,   180,   169,    23,   180,     4,   764,   126,     5,
-       3,     7,     8,     9,    10,    11,   713,    13,    14,    15,
-      16,    17,    18,   180,   180,    21,    22,    23,    24,    25,
-      20,     3,     5,   180,   169,   180,   733,   169,   884,     5,
-     180,   180,   180,   180,   180,     3,   188,   180,   745,    24,
-       5,     3,   749,   180,   126,     3,   753,     5,     5,     7,
-       8,     9,    10,    11,   180,    13,    14,    15,    16,    17,
-      18,   169,   169,    21,    22,    23,    24,    25,     4,     5,
-      10,     7,     8,     9,    10,    11,   884,    13,    14,    15,
-      16,    17,    18,   260,   918,    21,    22,    23,    24,    25,
-      14,   776,   594,   595,   801,   802,   803,   692,   774,   430,
-     696,   499,   512,   538,   269,   494,    77,   529,   305,   726,
-     817,   818,   853,   851,     3,   418,     5,   884,     7,     8,
-       9,    10,    11,   682,    13,    14,    15,    16,    17,    18,
-     902,   954,    21,    22,    23,    24,    25,   753,   874,   958,
-     144,   556,   749,   755,   851,   141,   853,   347,   855,   383,
-     558,   594,    -1,   595,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   870,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   674,    -1,    -1,    -1,    -1,    -1,    -1,   185,
-     186,   683,    -1,   189,    -1,    -1,   688,    -1,   690,    -1,
-      -1,    -1,   899,    -1,   901,   902,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   918,    -1,    -1,    -1,    -1,    -1,   719,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   932,    -1,   185,   186,    -1,
-      -1,    -1,    -1,    -1,   941,    -1,    -1,    -1,    -1,    -1,
-     947,     0,     1,   950,   180,    -1,    -1,    -1,    -1,   185,
-     186,    -1,    -1,   755,    -1,    -1,   963,    -1,    -1,    -1,
-     967,    -1,    -1,   970,   971,    -1,    -1,    -1,    27,   976,
-      29,    -1,    -1,    32,    33,    34,    35,    36,    37,    38,
-      -1,    -1,    41,    42,    43,    -1,    -1,    -1,    -1,    48,
-      49,    -1,    -1,    -1,    53,    54,   185,   186,    -1,    -1,
-      -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    67,    68,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    78,
-      -1,    80,    81,    -1,    83,    -1,    85,    86,    87,    88,
-      89,    -1,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,    -1,    -1,
-     109,   110,   111,    -1,   113,   114,   115,    -1,   117,   118,
-     119,    -1,    -1,   122,    -1,   124,    -1,    -1,   127,   128,
-     129,   130,    -1,    -1,   133,   134,   135,    -1,    -1,   881,
-      -1,    -1,   141,    -1,    -1,   144,   145,   146,   147,   148,
-     149,   150,   151,    -1,   153,   154,   155,   156,   157,    -1,
-      -1,   160,    -1,    -1,    -1,   907,    -1,    -1,   167,   168,
-     169,    -1,    -1,    -1,    -1,    -1,    -1,   176,   177,     3,
-      -1,     5,    -1,     7,     8,     9,    10,    11,   187,    13,
+      26,   177,    28,   200,   140,    35,    32,   297,    13,    35,
+     274,   177,   188,   289,   278,    41,   414,   716,    46,   499,
+     105,   327,   107,   231,    18,   579,   111,   231,   582,     5,
+       3,   337,   236,   449,   236,    34,     3,   140,     4,     3,
+     346,   177,    70,    71,     4,    24,     3,     4,     3,    23,
+      78,     3,    23,     3,    31,   381,    61,   123,   234,   489,
+      59,    60,   494,   729,    33,     3,    35,   499,   103,     5,
+     140,    21,    22,    23,     3,     3,   125,   112,     3,   177,
+     577,   344,   579,   793,   794,   582,   759,     3,     3,     3,
+      23,     3,     3,     3,     3,     4,   124,   527,   126,   127,
+       3,     3,     3,    23,   130,   169,   169,   137,     3,     3,
+       3,   137,     3,     3,     3,   179,    23,    20,   169,   169,
+     169,    24,   148,   149,   187,   158,    35,    97,   231,    99,
+     169,   157,   179,   236,    21,    22,    23,   187,   143,    20,
+      21,    22,    23,    24,    25,   171,   179,     3,    23,   217,
+     126,   177,     3,    25,   169,   179,    23,    24,    25,    20,
+     123,   176,   188,    24,   863,   189,   192,     5,    24,    20,
+     238,   347,   882,    24,   137,    20,    20,   203,   179,    24,
+      24,   347,   286,   176,   210,    20,   179,   272,   189,    24,
+     126,   327,   169,   219,   260,   169,    80,    81,   224,   865,
+     179,   337,   207,     4,   308,   381,   342,   180,   234,   882,
+     346,   347,   156,   189,   158,   381,   180,   188,   244,   127,
+     187,   187,   921,   180,   327,   180,   231,   187,   180,   234,
+     315,   236,   237,   179,   337,   169,   169,   242,   188,   342,
+     275,   531,   180,   346,    27,   381,   281,   180,   538,   179,
+     285,   180,   180,   258,   158,   180,   255,   327,   564,   179,
+     757,   758,   169,   760,   180,   180,   180,   337,   180,   180,
+     180,   297,   342,   180,   279,   301,   346,   303,   180,   180,
+     586,   587,   588,   589,   590,   180,   180,   180,   126,   180,
+     180,   180,   318,   319,   179,   265,   179,   323,   169,   180,
+     626,   188,   628,   629,   179,   568,   332,   333,   334,   335,
+     413,   316,   575,   185,   186,   320,   179,   311,   185,   186,
+     179,   347,   327,   427,   169,   169,   261,   262,   591,   883,
+     179,   180,   337,   359,   169,    21,    22,   363,   364,   365,
+     366,   367,   368,   369,   370,   371,   372,   373,   374,   179,
+     576,   767,   768,   169,   179,   381,   169,   837,   584,   294,
+     176,     3,     4,   179,   844,   541,   392,   393,   394,   395,
+     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   593,   883,     3,   414,   593,
+     594,   176,   594,     3,   179,    23,   422,   423,     3,   838,
+     839,   840,   841,   507,   508,   837,   838,   839,   840,   841,
+     808,   515,   844,   357,   358,    20,   501,   140,   141,    24,
+       4,   506,   169,   176,   509,   138,   139,   140,   564,    23,
+      24,    25,   376,   377,   378,   379,   380,     3,   728,   936,
+     576,   717,   546,   707,   750,   389,   179,   169,   584,   179,
+     586,   587,   588,   589,   590,   179,   632,   485,   179,   179,
+     626,   564,   628,   629,   179,   491,   792,   793,   794,   495,
+     179,   179,   676,   576,   676,   179,   502,   681,   179,   681,
+     179,   584,   745,   586,   587,   588,   589,   590,   179,   179,
+     593,   594,   179,   189,   564,   179,   179,   179,   179,   762,
+     763,   764,   765,   766,   179,   531,   576,   179,   179,   179,
+     179,   537,   538,   179,   584,   541,   586,   587,   588,   589,
+     590,   179,   179,   169,     5,   169,     7,     8,     9,    10,
+      11,     3,    13,    14,    15,    16,    17,    18,     4,   565,
+      21,    22,    23,    24,    25,   169,   169,     3,   574,     3,
+      20,    21,    22,    23,    24,    25,    20,    21,    22,    23,
+      24,    25,     5,   169,     3,   595,   169,   179,   169,   595,
+     596,   169,   748,   676,     3,     3,   169,   867,   681,     4,
+      11,   180,    13,    14,    15,    16,    17,    18,   593,   594,
+      21,    22,    23,    24,    25,    21,    22,    23,    24,    25,
+     626,   176,   628,   629,     3,   176,   632,   633,    20,    21,
+      22,    23,    24,    25,   750,     5,   792,   814,   881,     3,
+     179,   725,   179,   759,   650,   651,   792,   793,   794,   655,
+     700,   657,   132,     3,     3,   661,     3,   741,    20,    21,
+      22,    23,    24,    25,     3,   749,   189,   750,   674,   675,
+       3,   180,   180,     3,     3,   179,   759,   169,    24,   179,
+     169,   687,   667,   689,   169,   179,   169,   180,     3,   180,
+     878,   676,     5,   180,   176,     3,   681,     3,   683,    25,
+     750,     3,   708,    13,    14,    15,    16,    17,    18,   759,
+       3,    21,    22,    23,    24,    25,     3,   180,   179,     4,
+     180,   169,   728,    84,   185,   186,   180,   180,   189,   714,
+     180,    30,   816,    24,   740,    24,   180,   179,   744,     9,
+      10,    11,   748,    13,    14,    15,    16,    17,    18,    24,
+      23,    21,    22,    23,    24,    25,     4,   169,   180,   169,
+     180,   917,     4,   126,     3,   750,   882,    20,     3,     5,
+     169,   169,     5,   180,   185,   186,   179,     3,   862,   180,
+     180,    24,    29,   180,   180,   180,   792,   793,   794,   873,
+     180,   180,   180,     3,   188,   126,   180,   180,   169,   882,
+     169,   258,   808,   809,    10,     3,    14,     5,   906,     7,
+       8,     9,    10,    11,   904,    13,    14,    15,    16,    17,
+      18,   428,   528,    21,    22,    23,    24,    25,   685,   689,
+     498,   511,   882,    80,    81,    82,   268,   493,   537,   304,
+     416,   721,   848,   848,   850,    76,   852,    13,    14,    15,
+      16,    17,    18,   850,   675,    21,    22,    23,    24,    25,
+     897,   867,   109,   748,   111,   112,   113,   955,   871,   116,
+     117,   143,   119,   120,   959,   185,   186,   555,   142,   143,
+     140,   347,   744,   381,   750,   557,   593,    -1,   894,   594,
+     896,   897,    -1,   878,   158,   159,    -1,    -1,   162,   163,
+     164,   165,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   917,   176,    -1,    -1,   185,   186,   902,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   939,    -1,    -1,    -1,    -1,    -1,   945,
+      -1,    -1,   948,     0,     1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   964,    -1,
+      -1,    -1,    -1,   969,   970,    -1,    -1,   973,   974,    -1,
+      27,    -1,    29,    -1,   980,    32,    33,    34,    35,    36,
+      37,    38,    -1,    -1,    41,    42,    43,   185,   186,    -1,
+      -1,    48,    49,    -1,    -1,    -1,    53,    54,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,
+      67,    68,    -1,    -1,    -1,    72,    -1,    -1,    -1,   185,
+     186,    78,    -1,    80,    81,    -1,    83,    -1,    85,    86,
+      87,    88,    89,    -1,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+      -1,    -1,   109,   110,   111,    -1,   113,   114,   115,    -1,
+     117,   118,   119,    -1,    -1,   122,    -1,   124,    -1,    -1,
+     127,   128,   129,   130,    -1,    -1,   133,   134,   135,    -1,
+      -1,    -1,    -1,    -1,   141,    -1,    -1,   144,   145,   146,
+     147,   148,   149,   150,   151,    -1,   153,   154,   155,   156,
+     157,    -1,    -1,   160,    -1,    -1,    -1,    -1,    -1,    -1,
+     167,   168,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176,
+     177,     3,    -1,     5,    -1,     7,     8,     9,    10,    11,
+     187,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,
+      -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,
+      62,    -1,    64,    65,    66,    -1,    -1,    69,    70,    71,
+      -1,    73,    74,    75,    76,    77,     3,    79,     5,    -1,
+       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,     3,
+      -1,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
       14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
       24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    56,    57,    58,    59,    60,    61,    62,    -1,
-      64,    65,    66,    -1,    -1,    69,    70,    71,    -1,    73,
-      74,    75,    76,    77,     3,    79,     5,    -1,     7,     8,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,     3,    -1,     5,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     142,   143,    -1,    -1,    -1,    -1,   148,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,
+     162,   163,   164,   165,    -1,    -1,    -1,   169,    -1,    -1,
+      -1,    -1,    -1,    -1,   176,    -1,    -1,   179,    -1,    -1,
+      -1,    -1,    -1,   185,   186,     3,    -1,     5,    -1,     7,
+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,     3,    -1,
+       5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,     3,    -1,     5,    -1,     7,     8,     9,    10,    11,
+      -1,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,   185,   186,
+      -1,    -1,    -1,    -1,    -1,    -1,     4,     5,    -1,     7,
+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      18,   185,   186,    21,    22,    23,    24,    25,     4,     5,
       -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
       16,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,   143,
-      -1,    -1,    -1,    -1,   148,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,   163,
-     164,   165,    -1,    -1,    -1,   169,    -1,    -1,    -1,    -1,
-      -1,    -1,   176,    -1,    -1,   179,    -1,    -1,    -1,    -1,
-      -1,   185,   186,     3,    -1,     5,    -1,     7,     8,     9,
-      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,     3,    -1,     5,    -1,
-       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,     4,
+       4,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
+      14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,     4,     5,    -1,     7,     8,     9,    10,    11,
+      -1,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,   186,    -1,
+      -1,    -1,    -1,    -1,    -1,     4,     5,    -1,     7,     8,
+       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
+     185,   186,    21,    22,    23,    24,    25,    -1,    -1,     5,
+      -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
+      16,    17,    18,   185,   186,    21,    22,    23,    24,    25,
        5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
       15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    -1,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,
-      -1,    -1,    -1,    -1,     4,     5,    -1,     7,     8,     9,
+      25,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,
+      -1,    -1,    -1,    -1,    -1,     5,    -1,     7,     8,     9,
       10,    11,    -1,    13,    14,    15,    16,    17,    18,   185,
-     186,    21,    22,    23,    24,    25,     4,     5,    -1,     7,
+     186,    21,    22,    23,    24,    25,    -1,     5,    -1,     7,
        8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,     4,     5,
+      18,   185,   186,    21,    22,    23,    24,    25,    -1,     5,
       -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      16,    17,    18,   185,   186,    21,    22,    23,    24,    25,
        5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
       15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
-      14,    15,    16,    17,    18,   185,   186,    21,    22,    23,
-      24,    25,    -1,    -1,     5,    -1,     7,     8,     9,    10,
-      11,    -1,    13,    14,    15,    16,    17,    18,   185,   186,
-      21,    22,    23,    24,    25,    -1,     5,    -1,     7,     8,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
-     185,   186,    21,    22,    23,    24,    25,     5,    -1,     7,
-       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,
-      -1,    -1,    -1,     5,    -1,     7,     8,     9,    10,    11,
-      -1,    13,    14,    15,    16,    17,    18,   185,   186,    21,
-      22,    23,    24,    25,    -1,     5,    -1,     7,     8,     9,
-      10,    11,    -1,    13,    14,    15,    16,    17,    18,   185,
-     186,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      25,    -1,     5,    -1,     7,     8,     9,    10,    11,    -1,
+      13,    14,    15,    16,    17,    18,   185,   186,    21,    22,
+      23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,   185,
+     186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,
-     185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,
-      -1,   185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
-      -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,     5,
-      -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,
-      -1,    -1,    -1,   185,   186,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     180,    -1,    -1,    -1,    -1,   185,   186,     5,    -1,     7,
-       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,     5,    -1,
-       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,     5,
-      -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-       5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
-      15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
-      14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,   185,
-     186,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
-      14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,     5,    -1,     7,     8,     9,    10,    11,    -1,
+     185,   186,     5,    -1,     7,     8,     9,    10,    11,    -1,
       13,    14,    15,    16,    17,    18,    -1,    -1,    21,    22,
       23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,
-      -1,    -1,   169,    -1,     5,    -1,     7,     8,     9,    10,
-      11,    -1,    13,    14,    15,    16,    17,    18,   185,   186,
-      21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,   185,
      186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,
      185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,
-      -1,   185,   186,     5,    -1,     7,     8,     9,    10,    11,
-      -1,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,
-      -1,   185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,
       -1,    -1,   185,   186,     5,    -1,     7,     8,     9,    10,
       11,    -1,    13,    14,    15,    16,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
-      -1,    -1,    -1,    -1,   185,   186,     5,    -1,     7,     8,
+      21,    22,    23,    24,    25,     5,    -1,     7,     8,     9,
+      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,
+      -1,    -1,   185,   186,     5,    -1,     7,     8,     9,    10,
+      11,    -1,    13,    14,    15,    16,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,     5,    -1,     7,     8,     9,
+      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,     5,    -1,     7,     8,
        9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
       -1,    -1,    21,    22,    23,    24,    25,     5,    -1,     7,
@@ -2380,52 +2383,62 @@
        7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
       17,    18,    -1,    -1,    21,    22,    23,    24,    25,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,
-      -1,    -1,    -1,   185,   186,     5,    -1,     7,     8,     9,
-      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,     5,    -1,     7,     8,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
-      -1,    -1,    -1,    -1,   185,   186,     5,    -1,     7,     8,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,   169,
+      -1,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
+      14,    15,    16,    17,    18,   185,   186,    21,    22,    23,
+      24,    25,     5,    -1,     7,     8,     9,    10,    11,    -1,
+      13,    14,    15,    16,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,   180,
+      -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,
        5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
       15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
       25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   180,    -1,    -1,    -1,    -1,   185,   186,     5,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,
+      -1,   185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,
+      -1,    -1,   185,   186,     5,    -1,     7,     8,     9,    10,
+      11,    -1,    13,    14,    15,    16,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,     5,    -1,     7,     8,     9,
+      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,     5,    -1,     7,     8,
+       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,     5,    -1,     7,
+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,     5,    -1,
        7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
       17,    18,    -1,    -1,    21,    22,    23,    24,    25,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   180,    -1,    -1,    -1,    -1,   185,   186,     5,    -1,
-       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,     9,
-      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
-      -1,    -1,    11,     4,    13,    14,    15,    16,    17,    18,
-      -1,    12,    21,    22,    23,    24,    25,    -1,    -1,    -1,
-      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    39,    40,
-     185,   186,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
-      61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
-      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    13,
-      14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,
+      -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,
+     185,   186,     5,    -1,     7,     8,     9,    10,    11,    -1,
       13,    14,    15,    16,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    21,
-      22,    23,    -1,    25,    -1,    -1,    -1,    -1,    -1,    -1,
-     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,   186,
-      -1,   142,   143,    -1,    -1,    -1,    -1,   148,    50,    51,
-      52,    -1,    -1,    55,    -1,   185,   186,   158,   159,    -1,
-      12,   162,   163,   164,   165,    -1,    -1,    -1,   169,    21,
-      22,    -1,    -1,    -1,    -1,   176,   185,   186,   179,    -1,
+      23,    24,    25,     5,    -1,     7,     8,     9,    10,    11,
+      -1,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    38,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
+      -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,
+     180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    78,
+      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    88,
+      89,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,    98,
+      99,   100,   101,   102,   103,   104,   105,    -1,    -1,    -1,
+      -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,   118,
+      -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   180,   133,    -1,   135,    -1,   185,   186,
+       5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,
+     169,    -1,   185,   186,    -1,    -1,    -1,   176,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,
+      -1,    -1,    -1,   185,   186,     5,    -1,     7,     8,     9,
+      10,    11,     4,    13,    14,    15,    16,    17,    18,    -1,
+      12,    21,    22,    23,    24,    25,    -1,    -1,    -1,    21,
+      22,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,
       -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
@@ -2433,64 +2446,64 @@
       62,    -1,    64,    65,    66,    -1,    -1,    69,    70,    71,
       -1,    73,    74,    75,    76,    77,    -1,    79,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     142,   143,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   185,   186,    21,    22,    23,   158,   159,    -1,    -1,
-     162,   163,   164,   165,    -1,    -1,    -1,   169,    -1,    -1,
-      -1,    -1,   185,   186,   176,    -1,    -1,   179,    -1,   131,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-     142,   143,    -1,    -1,    -1,    -1,   148,     4,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    12,   158,   159,    -1,    -1,
-     162,   163,   164,   165,    21,    22,    -1,   169,    -1,    -1,
-      -1,    -1,    -1,    -1,   176,    -1,    -1,   179,    -1,    -1,
-      -1,    -1,    39,    40,    -1,   187,    -1,    44,    45,    46,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
-      57,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
-      -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
-      77,    -1,    79,    -1,   142,   143,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    21,    22,    -1,    -1,    -1,    -1,    -1,
-     158,   159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,
-      -1,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,
-      -1,   179,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    -1,    -1,   131,     4,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
-      -1,   148,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    -1,
-      39,    40,   169,    -1,    -1,    44,    45,    46,    47,   176,
-      -1,    -1,   179,    -1,    -1,    -1,    -1,    56,    57,    58,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,
+      -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,
+      62,    -1,    64,    65,    66,   180,    -1,    69,    70,    71,
+     185,   186,    74,    75,    76,    77,    -1,    79,    -1,   131,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,
+     142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,
+     162,   163,   164,   165,    -1,    39,    40,   169,    -1,    -1,
+      44,    45,    46,    47,   176,   185,   186,   179,    -1,    -1,
+      -1,    -1,    56,    57,    58,    59,    60,    61,    62,    -1,
+      64,    65,    66,    -1,    -1,    69,    70,    71,    -1,    73,
+      74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   169,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,   143,
+      -1,    -1,    -1,    -1,   148,     4,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    12,   158,   159,    -1,    -1,   162,   163,
+     164,   165,    21,    22,    -1,   169,    -1,    -1,    -1,    -1,
+      -1,    -1,   176,    -1,    -1,   179,    -1,    -1,    -1,    -1,
+      39,    40,    -1,   187,    -1,    44,    45,    46,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    58,
       59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
       69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
-      79,    -1,    -1,    -1,   142,   143,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     158,   159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,
-      -1,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,
-      -1,   179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   131,    -1,     5,    -1,    -1,    -1,    -1,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   131,     4,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
-      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+      21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
      159,    -1,    -1,   162,   163,   164,   165,    -1,    39,    40,
      169,    -1,    -1,    44,    45,    46,    47,   176,    -1,    -1,
      179,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
       61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
-      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    40,
-      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
-      61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
-      71,    -1,    -1,    74,    75,    76,    77,    -1,    79,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      131,    -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,    12,
       -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
-      -1,    24,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
+      23,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
       -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
       -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
       -1,    -1,    -1,    56,    57,    58,    59,    60,    61,    62,
       -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
-      73,    74,    75,    76,    77,    -1,    79,    -1,   169,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
        5,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
-     143,    -1,    -1,    -1,    -1,   148,    21,    22,    23,    -1,
+     143,    -1,    -1,    -1,    -1,   148,    21,    22,    -1,    24,
       -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,
      163,   164,   165,    -1,    39,    40,   169,    -1,    -1,    44,
@@ -2499,11 +2512,11 @@
       65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
       75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,     5,    -1,
       -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
-      -1,    -1,    -1,   148,    21,    22,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   148,    21,    22,    23,    -1,    -1,    -1,
       -1,    -1,    -1,   158,   159,    -1,    -1,   162,   163,   164,
      165,    -1,    39,    40,   169,    -1,    -1,    44,    45,    46,
@@ -2512,8 +2525,8 @@
       -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
       77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   131,    -1,     5,    -1,    -1,    -1,
       -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
@@ -2525,8 +2538,8 @@
       69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
       79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   131,    -1,     5,    -1,    -1,    -1,    -1,    -1,
       -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
@@ -2537,12 +2550,12 @@
       61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
       71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     131,    -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,    12,
       -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
-      23,    -1,    25,    -1,    -1,    -1,    -1,   158,   159,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
       -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
       -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
@@ -2550,8 +2563,72 @@
       -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
       73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
+     143,    -1,    -1,    -1,    -1,   148,    21,    22,    23,    -1,
+      25,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,
+     163,   164,   165,    -1,    39,    40,   169,    -1,    -1,    44,
+      45,    46,    47,   176,    -1,    -1,   179,    -1,    -1,    -1,
+      -1,    56,    57,    58,    59,    60,    61,    62,    -1,    64,
+      65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
+      75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
+      -1,    -1,    -1,   148,    21,    22,    23,    -1,    -1,    -1,
+      -1,    -1,    -1,   158,   159,    -1,    -1,   162,   163,   164,
+     165,    -1,    39,    40,   169,    -1,    -1,    44,    45,    46,
+      47,   176,    -1,    -1,   179,    -1,    -1,    -1,    -1,    56,
+      57,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
+      -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
+      77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
+      -1,   148,    21,    22,    23,    -1,    -1,    -1,    -1,    -1,
+      -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    -1,
+      39,    40,   169,    -1,    -1,    44,    45,    46,    47,   176,
+      -1,    -1,   179,    -1,    -1,    -1,    -1,    56,    57,    58,
+      59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+      69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
+      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+     159,    -1,    -1,   162,   163,   164,   165,    -1,    39,    40,
+     169,    -1,    -1,    44,    45,    46,    47,   176,    -1,    -1,
+     179,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
+      61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
+      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
+      -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
+      23,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
+      -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
+      -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
+      -1,    -1,    -1,    56,    57,    58,    59,    60,    61,    62,
+      -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
+      73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
@@ -2563,8 +2640,8 @@
       65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
       75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
@@ -2576,11 +2653,11 @@
       -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
       77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
-      -1,   148,    21,    22,    23,    -1,    -1,    -1,    -1,    -1,
+      -1,   148,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    -1,
       39,    40,   169,    -1,    -1,    44,    45,    46,    47,   176,
@@ -2589,11 +2666,11 @@
       69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
       79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
-      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+      21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
      159,    -1,    -1,   162,   163,   164,   165,    -1,    39,    40,
      169,    -1,    -1,    44,    45,    46,    47,   176,    -1,    -1,
@@ -2601,12 +2678,12 @@
       61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
       71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
       -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
-      23,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
       -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
       -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
@@ -2614,11 +2691,11 @@
       -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
       73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
-     143,    -1,    -1,    -1,    -1,   148,    21,    22,    23,    -1,
+     143,    -1,    -1,    -1,    -1,   148,    21,    22,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,
      163,   164,   165,    -1,    39,    40,   169,    -1,    -1,    44,
@@ -2627,8 +2704,8 @@
       65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
       75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
@@ -2640,8 +2717,8 @@
       -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
       77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
@@ -2652,101 +2729,67 @@
       59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
       69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
+      79,    21,    22,    23,    -1,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      40,    -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,
+      50,    51,    52,    -1,    -1,    55,    56,    57,    58,    59,
+      60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    69,
+      70,    71,   131,    73,    74,    75,    76,    77,    -1,    79,
+      -1,    -1,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+     159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,    -1,
+     169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,
+     179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,
+      -1,    -1,   162,   163,   164,   165,    21,    22,    23,   169,
+      -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,   179,
+      -1,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,    44,
+      45,    46,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    56,    57,    58,    59,    60,    61,    62,    -1,    64,
+      65,    66,    21,    22,    69,    70,    71,    -1,    73,    74,
+      75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
+      39,    40,    -1,    -1,    -1,    44,    45,    46,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    56,    57,    58,
+      59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+      69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
       79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
-      21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
-     159,    -1,    -1,   162,   163,   164,   165,    -1,    39,    40,
-     169,    -1,    -1,    44,    45,    46,    47,   176,    -1,    -1,
-     179,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
-      61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
-      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
-      -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
-      -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
-      -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
-      -1,    -1,    -1,    56,    57,    58,    59,    60,    61,    62,
-      -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
-      73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
-     143,    -1,    -1,    -1,    -1,   148,    21,    22,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,
-     163,   164,   165,    -1,    39,    40,   169,    -1,    -1,    44,
-      45,    46,    47,   176,    -1,    -1,   179,    -1,    -1,    -1,
-      -1,    56,    57,    58,    59,    60,    61,    62,    -1,    64,
-      65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
-      75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
-      -1,    -1,    -1,   148,    21,    22,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,   143,    -1,
+      -1,    -1,    -1,   148,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   158,   159,    -1,    -1,   162,   163,   164,
-     165,    -1,    39,    40,   169,    -1,    -1,    44,    45,    46,
-      47,   176,    -1,    -1,   179,    -1,    -1,    -1,    -1,    56,
-      57,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
-      -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
-      77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,   131,    29,    -1,    -1,    32,    33,
-      34,    35,    -1,    -1,    38,   142,   143,    41,    42,    43,
-      -1,   148,    -1,    -1,    48,    49,    -1,    -1,    -1,    -1,
-      -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    63,
-      -1,    -1,   169,    67,    68,    -1,    -1,    -1,    72,   176,
-      -1,    -1,   179,    -1,    78,    -1,    80,    81,    -1,    83,
-      -1,    85,    86,    87,    88,    89,    -1,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,    -1,    -1,   109,   110,   111,    -1,   113,
-     114,   115,    -1,   117,   118,   119,    -1,    -1,   122,    -1,
-     124,    -1,    -1,   127,   128,   129,   130,    -1,    -1,   133,
-     134,   135,    -1,    -1,    -1,    -1,    -1,   141,    -1,    -1,
-      -1,   145,   146,   147,   148,   149,   150,   151,    -1,   153,
-     154,   155,   156,   157,    -1,    -1,   160,    -1,    -1,    -1,
-      -1,    39,    40,   167,   168,   169,    44,    45,    46,    47,
-      -1,    -1,   176,    -1,    -1,    -1,    -1,    -1,    56,    57,
-      58,    59,    60,    61,    62,    -1,    64,    65,    66,    -1,
-      -1,    69,    70,    71,    -1,    73,    74,    75,    76,    77,
-      -1,    79,    39,    40,    -1,    -1,    -1,    44,    45,    46,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
-      57,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
-      -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
-      77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,   142,   143,    -1,    -1,    -1,    -1,
-     148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     158,   159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,
-      38,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,
-      -1,   179,    -1,    -1,    -1,   142,   143,    -1,    -1,    -1,
-      -1,   148,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,
-      -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    -1,
-      78,    -1,   169,    -1,    -1,    83,    84,    -1,    -1,   176,
-      88,    89,   179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      98,    99,   100,   101,   102,   103,   104,   105,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     118,    -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   133,    -1,   135,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176
+     165,    -1,    -1,    -1,   169,    -1,    -1,    -1,    -1,    -1,
+      -1,   176,    -1,    29,   179,    -1,    32,    33,    34,    35,
+      -1,    -1,    38,   142,   143,    41,    42,    43,    -1,   148,
+      -1,    -1,    48,    49,    -1,    -1,    -1,    -1,    -1,   158,
+     159,    -1,    -1,   162,   163,   164,   165,    63,    -1,    -1,
+     169,    67,    68,    -1,    -1,    -1,    72,   176,    -1,    -1,
+     179,    -1,    78,    -1,    80,    81,    -1,    83,    -1,    85,
+      86,    87,    88,    89,    -1,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,    -1,    -1,   109,   110,   111,    -1,   113,   114,   115,
+      -1,   117,   118,   119,    -1,    -1,   122,    -1,   124,    -1,
+      -1,   127,   128,   129,   130,    -1,    -1,   133,   134,   135,
+      -1,    -1,    -1,    -1,    -1,   141,    -1,    -1,    -1,   145,
+     146,   147,   148,   149,   150,   151,    -1,   153,   154,   155,
+     156,   157,    -1,    -1,   160,    -1,    -1,    -1,    -1,    39,
+      40,   167,   168,   169,    44,    45,    46,    47,    -1,    -1,
+     176,    -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,
+      60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    69,
+      70,    71,    -1,    73,    74,    75,    76,    77,    -1,    79,
+      39,    40,    -1,    -1,    -1,    44,    45,    46,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    58,
+      59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+      69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,
+      -1,    -1,   162,   163,   164,   165,    -1,    -1,    -1,   169,
+      -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,   179,
+      -1,    -1,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+     159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,    -1,
+     169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,
+     179
 };
 
@@ -2757,100 +2800,101 @@
        0,   191,     0,     1,    36,    37,    53,    54,   144,   177,
      187,   192,   197,   199,   205,   201,   198,   177,   200,    29,
-      32,    34,    35,    38,    41,    42,    43,    48,    49,    63,
-      67,    68,    72,    78,    80,    81,    83,    85,    86,    87,
-      88,    89,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   109,   110,
-     111,   113,   114,   115,   117,   118,   119,   122,   124,   127,
-     128,   129,   130,   133,   134,   135,   141,   145,   146,   147,
-     148,   149,   150,   151,   153,   154,   155,   156,   157,   160,
-     167,   168,   169,   176,   193,   194,   195,   202,   203,   206,
-     212,   224,   225,   228,   229,   234,   235,   237,   238,   239,
-     240,   241,   243,   244,   251,   253,   257,   258,   261,   262,
-     263,   298,   308,   309,   315,   316,   317,   318,   319,   321,
-     326,   327,   328,   330,   331,   333,   336,   337,   340,   341,
-     349,   351,   352,   365,   372,   201,   205,   169,   204,   204,
-     179,    12,    21,    22,    39,    40,    44,    45,    46,    47,
-      56,    57,    58,    59,    60,    61,    62,    64,    65,    66,
-      69,    70,    71,    73,    74,    75,    76,    77,    79,   131,
-     142,   143,   148,   158,   159,   162,   163,   164,   165,   176,
-     179,   280,   281,   283,   284,   288,   290,   291,   292,   293,
-     298,   299,   300,   307,   320,   179,   187,   280,   304,   179,
-     217,   218,   179,   280,   303,     4,   187,   221,   187,   221,
-     304,   179,   169,   187,   324,   176,   179,   364,   280,   169,
-     325,   169,   324,   179,   169,   176,   179,   346,   179,   179,
-     221,   221,    20,    24,   247,   298,   179,   216,   123,   137,
-     127,   324,   324,   169,   252,    80,    81,   213,   275,   324,
-      27,   196,   198,    33,   196,   158,   207,   196,   169,   179,
-     249,   250,   169,   226,   231,     3,   248,   169,   230,   247,
-       3,   236,   248,     3,   248,     3,   248,   169,   245,   246,
-     247,     3,     4,    35,   222,   223,   255,   271,   169,   176,
-     268,    23,   179,   259,    23,   179,   266,    23,     4,   329,
-     169,   310,   200,   324,   324,   324,   176,   323,   280,     5,
-     126,   189,   332,     3,   179,   334,   169,   304,   179,   345,
-      21,    22,    23,    50,    51,    52,    55,   169,   179,   288,
+      32,    34,    38,    41,    42,    43,    48,    49,    63,    67,
+      68,    72,    78,    80,    81,    83,    85,    86,    87,    88,
+      89,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   109,   110,   111,
+     113,   114,   115,   117,   118,   119,   122,   124,   127,   128,
+     129,   130,   133,   134,   135,   141,   145,   146,   147,   148,
+     149,   150,   151,   153,   154,   155,   156,   157,   160,   167,
+     168,   169,   176,   193,   194,   195,   202,   203,   206,   212,
+     224,   225,   228,   229,   234,   235,   237,   238,   239,   240,
+     241,   243,   244,   251,   253,   257,   258,   261,   262,   263,
+     298,   308,   309,   315,   316,   317,   318,   319,   321,   326,
+     327,   328,   330,   331,   333,   336,   337,   340,   341,   349,
+     351,   352,   365,   372,   201,   205,   169,   204,   179,    12,
+      21,    22,    39,    40,    44,    45,    46,    47,    56,    57,
+      58,    59,    60,    61,    62,    64,    65,    66,    69,    70,
+      71,    73,    74,    75,    76,    77,    79,   131,   142,   143,
+     148,   158,   159,   162,   163,   164,   165,   176,   179,   280,
+     281,   283,   284,   288,   290,   291,   292,   293,   298,   299,
+     300,   307,   320,   179,   187,   280,   304,   179,   217,   218,
+     179,   280,   303,     4,   187,   221,   187,   221,   304,   179,
+     169,   187,   324,   176,   179,   364,   280,   169,   325,   169,
+     324,   179,   169,   176,   179,   346,   179,   179,   221,   221,
+      20,    24,   247,   298,   179,   216,   123,   137,   127,   324,
+     324,   169,   252,    80,    81,   213,   275,   324,    27,   196,
+     198,    33,    35,   196,   158,   207,   196,   169,   179,   249,
+     250,   169,   226,   231,     3,   248,   169,   230,   247,     3,
+     236,   248,     3,   248,     3,   248,   169,   245,   246,   247,
+       3,     4,    35,   222,   223,   255,   271,   169,   176,   268,
+      23,   179,   259,    23,   179,   266,    23,     4,   329,   169,
+     310,   200,   324,   324,   324,   176,   323,   280,     5,   126,
+     189,   332,     3,   179,   334,   169,   304,   179,   345,    21,
+      22,    23,    50,    51,    52,    55,   169,   179,   281,   288,
      299,   343,   345,   350,   353,   354,   355,   345,    84,    98,
-     105,   298,   328,   179,   208,   280,   280,   280,   282,   179,
-     179,   179,   282,   280,   282,   179,   179,   179,   179,   179,
-     179,   179,   179,   179,   179,   179,   179,   280,   179,   179,
-     179,   179,   179,   179,   280,   281,   283,   307,   360,   361,
-     362,   179,   280,   283,     5,     7,     8,     9,    10,    11,
-      13,    14,    15,    16,    17,    18,    21,    22,    23,    24,
-      25,   185,   186,   285,   280,   189,   179,   302,   179,   179,
-     169,   158,   301,   302,     3,     4,   180,   280,   219,   298,
-       3,   280,     4,   169,   242,   242,   280,   280,   180,   288,
-     292,   298,   330,   366,   367,   368,   176,   283,   298,   298,
-     367,   369,   298,   371,   242,    40,    44,    45,    46,    47,
-      56,    57,    58,    59,    60,    61,    62,    64,    65,    66,
-      69,    70,    71,    74,    75,    76,    77,    79,   169,   214,
-     215,   169,   298,   220,   280,     3,     3,   221,   194,   200,
-     204,   196,     5,   249,     3,    24,   179,   187,   248,     3,
-      24,   230,   247,   179,   276,   230,   298,   247,   169,   169,
-     247,   276,     3,   245,    29,    82,   109,   111,   112,   113,
-     116,   117,   119,   120,   272,   273,   275,     4,   204,     3,
-     256,   254,     5,    23,   269,   280,   180,   176,   179,   169,
-     260,   269,   179,   267,   280,   268,   176,   276,     3,   205,
-     248,   298,   322,   373,   280,   280,   298,   176,    23,   280,
-     335,   338,   339,    23,    25,   179,   298,   347,   348,   353,
-     354,   280,   280,   280,   280,     5,   353,   179,   281,   288,
-     299,   342,   356,   357,   358,     3,   344,    20,    23,    24,
-      25,   355,   353,   360,   179,   179,    23,   169,   180,   210,
-     211,    30,   180,     3,   180,   282,   282,   280,   180,   180,
-     180,   280,   280,   280,   280,   280,   280,   280,   280,   280,
-     280,   280,   280,   180,   282,   282,   282,   282,   282,   280,
-     283,   361,   362,     3,   132,     3,     3,   282,   180,     3,
-       5,   280,   287,   280,   280,   280,   280,   280,   280,   280,
-     280,   280,   280,   280,   280,   280,   280,     5,    24,   280,
-     286,   280,     5,   280,     5,   280,   288,   303,   289,   294,
-     294,   280,   280,   180,     3,   180,   276,   218,   180,     3,
-     180,     3,   179,     3,   370,   180,   180,   180,     3,   370,
-       3,   180,     3,    24,     3,   180,   179,   169,   324,   208,
-     280,   180,   250,   227,   232,   233,   284,   280,   169,   169,
-     231,   227,   248,     4,    23,   277,   278,   279,   280,   248,
-     276,   276,   248,   246,   276,   179,     3,     4,   208,   254,
-     169,   269,   260,     5,   269,   180,     3,   270,    23,   180,
-     276,    31,   169,   311,   312,     5,   329,   364,   180,     3,
-     353,    23,    25,   179,   280,     3,   180,   180,   280,   180,
-     356,   285,   359,   359,     3,   359,   356,   353,   353,   353,
-     353,   353,   366,   369,     3,   180,   179,   209,   304,   280,
+     105,   298,   328,   280,   280,   280,   282,   179,   179,   179,
+     282,   280,   282,   179,   179,   179,   179,   179,   179,   179,
+     179,   179,   179,   179,   179,   280,   179,   179,   179,   179,
+     179,   179,   280,   281,   283,   307,   360,   361,   362,   179,
+     280,   283,     5,     7,     8,     9,    10,    11,    13,    14,
+      15,    16,    17,    18,    21,    22,    23,    24,    25,   185,
+     186,   285,   280,   189,   179,   302,   179,   179,   169,   158,
+     301,   302,     3,     4,   180,   280,   219,   298,     3,   280,
+       4,   169,   242,   242,   280,   280,   180,   288,   292,   298,
+     330,   366,   367,   368,   176,   283,   298,   298,   367,   369,
+     298,   371,   242,    40,    44,    45,    46,    47,    56,    57,
+      58,    59,    60,    61,    62,    64,    65,    66,    69,    70,
+      71,    74,    75,    76,    77,    79,   169,   214,   215,   169,
+     298,   220,   280,     3,     3,   221,   194,   200,   204,   204,
+     196,     5,   249,     3,    24,   179,   187,   248,     3,    24,
+     230,   247,   179,   276,   230,   298,   247,   169,   169,   247,
+     276,     3,   245,    29,    82,   109,   111,   112,   113,   116,
+     117,   119,   120,   272,   273,   275,     4,   204,     3,   256,
+     254,     5,    23,   269,   280,   180,   176,   179,   169,   260,
+     269,   179,   267,   280,   268,   176,   276,     3,   205,   248,
+     298,   322,   373,   280,   280,   298,   176,    23,   280,   335,
+     338,   339,    23,    25,   179,   298,   347,   348,   353,   354,
+     280,   280,   280,   280,     5,   353,   179,   281,   288,   299,
+     342,   356,   357,   358,     3,   344,    20,    23,    24,    25,
+     355,   353,   360,   179,   179,   180,     3,   180,   282,   282,
+     280,   180,   180,   180,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   180,   282,   282,   282,
+     282,   282,   280,   283,   361,   362,     3,   132,     3,     3,
+     282,   180,     3,     5,   280,   287,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+       5,    24,   280,   286,   280,     5,   280,     5,   280,   288,
+     303,   289,   294,   294,   280,   280,   180,     3,   180,   276,
+     218,   180,     3,   180,     3,   179,     3,   370,   180,   180,
+     180,     3,   370,     3,   180,     3,    24,     3,   180,   179,
+     169,   324,   179,   208,   208,   280,   180,   250,   227,   232,
+     233,   284,   280,   169,   169,   231,   227,   248,     4,    23,
+     277,   278,   279,   280,   248,   276,   276,   248,   246,   276,
+     179,     3,     4,   208,   254,   169,   269,   260,     5,   269,
+     180,     3,   270,    23,   180,   276,    31,   169,   311,   312,
+       5,   329,   364,   180,     3,   353,    23,    25,   179,   280,
+       3,   180,   180,   280,   180,   356,   285,   359,   359,     3,
+     359,   356,   353,   353,   353,   353,   353,   366,   369,   304,
+     280,   180,   180,   180,   180,   180,   180,   180,   180,   180,
      180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
-     180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
-     180,     3,     3,     3,   280,   362,   280,   362,   280,   362,
-     180,   283,   280,   280,   280,   280,   280,     4,     4,   280,
-     295,   296,   297,   180,   180,   298,   169,    84,   280,   295,
-     125,   367,   180,   367,   180,   298,   214,   280,   220,    24,
-       3,    21,    22,    23,   188,   299,   180,    24,    24,   230,
-     280,     3,   180,     4,   298,    23,   264,   264,   245,   138,
-     139,   140,   274,   273,     4,   169,   276,   180,   269,   270,
-     169,   180,     4,   126,     3,   280,   276,   339,   180,   280,
-     297,   189,   348,   353,     3,   180,   285,   358,   370,   370,
-     211,   180,   210,   169,   363,   363,   363,   180,   303,     4,
-     280,     4,     3,   302,   276,   180,   180,     5,   180,   227,
-     232,   232,   232,   232,   227,   278,   279,   280,   179,   265,
-     280,   180,   276,   264,   270,   269,   169,   187,   313,   314,
-     169,   312,     3,   276,   180,   330,   363,   359,   180,   180,
-     180,     5,   180,   180,   180,   180,   280,     4,   280,   296,
-       3,   298,    24,    23,   264,   305,   306,   126,     3,   280,
-     180,   280,   280,     4,   280,   180,   305,     5,   169,   314,
-       3,     3,   280,   280,   280,   280,     3,   280
+     180,   180,     3,     3,     3,   280,   362,   280,   362,   280,
+     362,   180,   283,   280,   280,   280,   280,   280,     4,     4,
+     280,   295,   296,   297,   180,   180,   298,   169,    84,   280,
+     295,   125,   367,   180,   367,   180,   298,   214,   280,   220,
+      23,   169,   180,   210,   211,    30,    24,     3,    21,    22,
+      23,   188,   299,   180,    24,    24,   230,   280,     3,   180,
+       4,   298,    23,   264,   264,   245,   138,   139,   140,   274,
+     273,     4,   169,   276,   180,   269,   270,   169,   180,     4,
+     126,     3,   280,   276,   339,   180,   280,   297,   189,   276,
+     348,   353,     3,   180,   285,   358,   370,   370,   169,   363,
+     363,   363,   180,   303,     4,   280,     4,     3,   302,   276,
+     180,   180,     5,   180,     3,   180,   179,   209,   227,   232,
+     232,   232,   232,   227,   278,   279,   280,   179,   265,   280,
+     180,   276,   264,   270,   269,   169,   187,   313,   314,   169,
+     312,     3,   276,   180,   330,   363,   359,   180,   180,     5,
+     180,   180,   180,   180,   280,     4,   280,   296,     3,   298,
+     211,   180,   210,    24,    23,   264,   305,   306,   126,     3,
+     280,   180,   280,   280,     4,   280,   180,   180,   305,     5,
+     126,   169,   314,     3,     3,   280,   280,   280,   280,   280,
+       3,   280
 };
 
@@ -3190,5 +3234,5 @@
 {
   if (*yystr == '"')
-   {
+    {
       YYSIZE_T yyn = 0;
       char const *yyp = yystr;
@@ -3215,5 +3259,5 @@
 	      yyres[yyn] = '\0';
 	    return yyn;
-   }
+	  }
     do_not_strip_quotes: ;
     }
@@ -3241,5 +3285,5 @@
     return 0;
   else
-   {
+    {
       int yytype = YYTRANSLATE (yychar);
       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
@@ -3285,7 +3329,7 @@
       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
 	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-      {
+	  {
 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-         {
+	      {
 		yycount = 1;
 		yysize = yysize0;
@@ -3310,5 +3354,5 @@
 
       if (yyresult)
-            {
+	{
 	  /* Avoid sprintf, as that infringes on the user's name space.
 	     Don't have undefined behavior even if the translation
@@ -3317,19 +3361,19 @@
 	  int yyi = 0;
 	  while ((*yyp = *yyf) != '\0')
-               {
+	    {
 	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
 		{
 		  yyp += yytnamerr (yyp, yyarg[yyi++]);
 		  yyf += 2;
-               }
+		}
 	      else
-               {
+		{
 		  yyp++;
 		  yyf++;
-               }
-            }
-         }
+		}
+	    }
+	}
       return yysize;
-      }
+    }
 }
 #endif /* YYERROR_VERBOSE */
@@ -3361,9 +3405,9 @@
 
   switch (yytype)
-   {
+    {
 
       default:
 	break;
-   }
+    }
 }
 
@@ -3477,5 +3521,5 @@
   yystate = 0;
   yyerrstatus = 0;
-    yynerrs = 0;
+  yynerrs = 0;
   yychar = YYEMPTY;		/* Cause a token to be read.  */
 
@@ -3485,6 +3529,6 @@
      The wasted elements are never initialized.  */
 
-    yyssp = yyss;
-    yyvsp = yyvs;
+  yyssp = yyss;
+  yyvsp = yyvs;
 
   goto yysetstate;
@@ -3507,5 +3551,5 @@
 
 #ifdef yyoverflow
-        {
+      {
 	/* Give user a chance to reallocate the stack.  Use copies of
 	   these so that the &'s don't force the real ones into
@@ -3527,5 +3571,5 @@
 	yyss = yyss1;
 	yyvs = yyvs1;
-        }
+      }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
@@ -3539,5 +3583,5 @@
 	yystacksize = YYMAXDEPTH;
 
-    {
+      {
 	yytype_int16 *yyss1 = yyss;
 	union yyalloc *yyptr =
@@ -3551,5 +3595,5 @@
 	if (yyss1 != yyssa)
 	  YYSTACK_FREE (yyss1);
-        }
+      }
 # endif
 #endif /* no yyoverflow */
@@ -3596,10 +3640,10 @@
       yychar = yytoken = YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
-                }
-            else
-            {
+    }
+  else
+    {
       yytoken = YYTRANSLATE (yychar);
       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-            }
+    }
 
   /* If the proper action on seeing token YYTOKEN is to reduce or to
@@ -3615,5 +3659,5 @@
       yyn = -yyn;
       goto yyreduce;
-        }
+    }
 
   if (yyn == YYFINAL)
@@ -3667,5 +3711,5 @@
 
   YY_REDUCE_PRINT (yyn);
-    switch (yyn)
+  switch (yyn)
     {
         case 8:
@@ -3726,5 +3770,5 @@
   case 31:
 #line 403 "fortran.y"
-                      {
+    {
                       if ( couldaddvariable == 1)
                       {
@@ -3782,10 +3826,10 @@
                       if ( firstpass == 0 )
                       {
-                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,(yyvsp[(2) - (5)].nac));
+                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,(yyvsp[(3) - (6)].nac));
                          paramout=fopen(ligne,"w");
                          if ( retour77 == 0 ) fprintf(paramout,"!\n");
                          else fprintf(paramout,"C\n");
                       }
-                      strcpy(subroutinename,(yyvsp[(2) - (5)].nac));
+                      strcpy(subroutinename,(yyvsp[(3) - (6)].nac));
                       if ( inmodulemeet == 1 )
                       {
@@ -3793,5 +3837,5 @@
                          /* we should to list of the subroutine argument the  */
                          /*    name of the function which has to be defined   */
-                         Add_SubroutineArgument_Var_1((yyvsp[(3) - (5)].l));
+                         Add_SubroutineArgument_Var_1((yyvsp[(4) - (6)].l));
                          strcpy(DeclType,"");
                          /* in the second step we should write the head of    */
@@ -3804,7 +3848,7 @@
                             /* we should to list of the subroutine argument   */
                             /* name of the function which has to be defined   */
-                            Add_SubroutineArgument_Var_1((yyvsp[(3) - (5)].l));
+                            Add_SubroutineArgument_Var_1((yyvsp[(4) - (6)].l));
                             strcpy(DeclType,"");
-                            Add_FunctionType_Var_1((yyvsp[(2) - (5)].nac));
+                            Add_FunctionType_Var_1((yyvsp[(3) - (6)].nac));
                             writeheadnewsub_0(2);
                       }
@@ -3818,10 +3862,10 @@
                       if ( firstpass == 0 )
                       {
-                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,(yyvsp[(2) - (3)].nac));
+                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,(yyvsp[(3) - (4)].nac));
                          paramout=fopen(ligne,"w");
                          if ( retour77 == 0 ) fprintf(paramout,"!\n");
                          else fprintf(paramout,"C\n");
                       }
-                      strcpy(subroutinename,(yyvsp[(2) - (3)].nac));
+                      strcpy(subroutinename,(yyvsp[(3) - (4)].nac));
                       if ( inmodulemeet == 1 )
                       {
@@ -3829,7 +3873,7 @@
                          /* we should to list of the subroutine argument the  */
                          /*    name of the function which has to be defined   */
-                         Add_SubroutineArgument_Var_1((yyvsp[(3) - (3)].l));
+                         Add_SubroutineArgument_Var_1((yyvsp[(4) - (4)].l));
                          strcpy(DeclType,"");
-                         Add_FunctionType_Var_1((yyvsp[(2) - (3)].nac));
+                         Add_FunctionType_Var_1((yyvsp[(3) - (4)].nac));
                          /* in the second step we should write the head of    */
                          /*    the subroutine sub_loop_<subroutinename>       */
@@ -3841,7 +3885,7 @@
                             /* we should to list of the subroutine argument   */
                             /* name of the function which has to be defined   */
-                            Add_SubroutineArgument_Var_1((yyvsp[(3) - (3)].l));
+                            Add_SubroutineArgument_Var_1((yyvsp[(4) - (4)].l));
                             strcpy(DeclType,"");
-                            Add_FunctionType_Var_1((yyvsp[(2) - (3)].nac));
+                            Add_FunctionType_Var_1((yyvsp[(3) - (4)].nac));
                             writeheadnewsub_0(2);
                       }
@@ -4061,5 +4105,5 @@
                       strcpy(NamePrecision,"");
                       c_star = 0;
-                      InitialValueGiven = 0 ;
+                      strcpy(InitialValueGiven," ");
                       strcpy(IntentSpec,"");
                       VariableIsParameter =  0 ;
@@ -4192,5 +4236,5 @@
                       strcpy(NamePrecision,"");
                       c_star = 0;
-                      InitialValueGiven = 0 ;
+                      strcpy(InitialValueGiven," ");
                       strcpy(IntentSpec,"");
                       VariableIsParameter =  0 ;
@@ -4204,9 +4248,10 @@
                       strcpy(nameinttypename,"");
                       strcpy(c_selectorname,"");
+                      GlobalDeclarationType = 0; 
                    ;}
     break;
 
   case 111:
-#line 870 "fortran.y"
+#line 871 "fortran.y"
     {
                       /* open param file                                      */
@@ -4247,5 +4292,5 @@
 
   case 112:
-#line 907 "fortran.y"
+#line 908 "fortran.y"
     {
                        functiondeclarationisdone = 1;
@@ -4254,5 +4299,5 @@
 
   case 113:
-#line 913 "fortran.y"
+#line 914 "fortran.y"
     {
                       VariableIsParameter = 1;
@@ -4262,5 +4307,5 @@
 
   case 114:
-#line 918 "fortran.y"
+#line 919 "fortran.y"
     {
                       pos_curdata = setposcur()-strlen((yyvsp[(1) - (1)].nac));
@@ -4270,5 +4315,5 @@
 
   case 115:
-#line 923 "fortran.y"
+#line 924 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4287,5 +4332,5 @@
 
   case 116:
-#line 937 "fortran.y"
+#line 938 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4304,5 +4349,5 @@
 
   case 117:
-#line 951 "fortran.y"
+#line 952 "fortran.y"
     {
                        /*******************************************************/
@@ -4321,5 +4366,5 @@
 
   case 118:
-#line 966 "fortran.y"
+#line 967 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4331,5 +4376,5 @@
 
   case 119:
-#line 973 "fortran.y"
+#line 974 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4341,5 +4386,5 @@
 
   case 124:
-#line 987 "fortran.y"
+#line 988 "fortran.y"
     {
                      pos_cursave = setposcur()-4;
@@ -4348,5 +4393,5 @@
 
   case 126:
-#line 993 "fortran.y"
+#line 994 "fortran.y"
     {
                      if ( couldaddvariable == 1 ) Add_Save_Var_1((yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].d));
@@ -4355,5 +4400,5 @@
 
   case 127:
-#line 998 "fortran.y"
+#line 999 "fortran.y"
     {
 		(yyval.lnn)=Insertname(NULL,(yyvsp[(1) - (1)].nac),0);
@@ -4362,5 +4407,5 @@
 
   case 128:
-#line 1002 "fortran.y"
+#line 1003 "fortran.y"
     {
       printf("INSTRUCTION NON TRAITEE : INITIALISATION DE DATA AVEC EXPRESSION\n");
@@ -4370,5 +4415,5 @@
 
   case 129:
-#line 1007 "fortran.y"
+#line 1008 "fortran.y"
     {
       (yyval.lnn) = concat_listname((yyvsp[(1) - (3)].lnn),(yyvsp[(3) - (3)].lnn));
@@ -4377,40 +4422,40 @@
 
   case 130:
-#line 1012 "fortran.y"
+#line 1013 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].nac));;}
     break;
 
   case 131:
-#line 1014 "fortran.y"
+#line 1015 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s+%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 132:
-#line 1016 "fortran.y"
+#line 1017 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s-%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 133:
-#line 1018 "fortran.y"
+#line 1019 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s*%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 134:
-#line 1020 "fortran.y"
+#line 1021 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s/%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 135:
-#line 1023 "fortran.y"
+#line 1024 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),"");;}
     break;
 
   case 136:
-#line 1025 "fortran.y"
+#line 1026 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 143:
-#line 1037 "fortran.y"
+#line 1038 "fortran.y"
     {
 	ininterfacedeclare = 1 ;
@@ -4420,5 +4465,5 @@
 
   case 144:
-#line 1042 "fortran.y"
+#line 1043 "fortran.y"
     {
       ininterfacedeclare = 0;
@@ -4427,5 +4472,5 @@
 
   case 145:
-#line 1047 "fortran.y"
+#line 1048 "fortran.y"
     {
                       positioninblock=0;
@@ -4435,5 +4480,5 @@
 
   case 146:
-#line 1053 "fortran.y"
+#line 1054 "fortran.y"
     {
          if ( couldaddvariable == 1 )
@@ -4454,5 +4499,5 @@
 
   case 147:
-#line 1069 "fortran.y"
+#line 1070 "fortran.y"
     {
          if ( couldaddvariable == 1 )
@@ -4473,5 +4518,5 @@
 
   case 150:
-#line 1089 "fortran.y"
+#line 1090 "fortran.y"
     {
         (yyval.lnn)=(listname *)NULL;
@@ -4480,5 +4525,5 @@
 
   case 151:
-#line 1093 "fortran.y"
+#line 1094 "fortran.y"
     {
           (yyval.lnn)=(yyvsp[(3) - (3)].lnn);
@@ -4487,5 +4532,5 @@
 
   case 152:
-#line 1098 "fortran.y"
+#line 1099 "fortran.y"
     {
            (yyval.lnn) = Insertname(NULL,(yyvsp[(1) - (1)].nac),0);
@@ -4494,5 +4539,5 @@
 
   case 153:
-#line 1102 "fortran.y"
+#line 1103 "fortran.y"
     {
           (yyval.lnn) = Insertname((yyvsp[(1) - (3)].lnn),(yyvsp[(3) - (3)].nac),0);
@@ -4501,5 +4546,5 @@
 
   case 154:
-#line 1107 "fortran.y"
+#line 1108 "fortran.y"
     {
                          pos_end = setposcur();
@@ -4510,5 +4555,5 @@
 
   case 155:
-#line 1113 "fortran.y"
+#line 1114 "fortran.y"
     {
                          if ( couldaddvariable == 1 )
@@ -4524,5 +4569,5 @@
 
   case 156:
-#line 1124 "fortran.y"
+#line 1125 "fortran.y"
     {
                          if ( couldaddvariable == 1 )
@@ -4538,5 +4583,5 @@
 
   case 157:
-#line 1136 "fortran.y"
+#line 1137 "fortran.y"
     {
                       positioninblock=0;
@@ -4546,5 +4591,5 @@
 
   case 158:
-#line 1141 "fortran.y"
+#line 1142 "fortran.y"
     {
                       positioninblock=0;
@@ -4554,5 +4599,5 @@
 
   case 159:
-#line 1147 "fortran.y"
+#line 1148 "fortran.y"
     {
                       if ( couldaddvariable == 1 ) Add_Common_var_1();
@@ -4561,5 +4606,5 @@
 
   case 160:
-#line 1152 "fortran.y"
+#line 1153 "fortran.y"
     {
                       if ( couldaddvariable == 1 ) Add_Common_var_1();
@@ -4568,5 +4613,5 @@
 
   case 161:
-#line 1156 "fortran.y"
+#line 1157 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4580,5 +4625,5 @@
 
   case 162:
-#line 1166 "fortran.y"
+#line 1167 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4592,5 +4637,5 @@
 
   case 163:
-#line 1175 "fortran.y"
+#line 1176 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4604,5 +4649,5 @@
 
   case 166:
-#line 1188 "fortran.y"
+#line 1189 "fortran.y"
     {
                       if ( couldaddvariable == 1 ) (yyval.l)=insertvar(NULL,(yyvsp[(1) - (1)].v));
@@ -4611,5 +4656,5 @@
 
   case 167:
-#line 1192 "fortran.y"
+#line 1193 "fortran.y"
     {
                       if ( couldaddvariable == 1 ) (yyval.l)=insertvar((yyvsp[(1) - (3)].l),(yyvsp[(3) - (3)].v));
@@ -4618,5 +4663,5 @@
 
   case 168:
-#line 1197 "fortran.y"
+#line 1198 "fortran.y"
     {
                      if ( couldaddvariable == 1 )
@@ -4643,5 +4688,5 @@
 
   case 172:
-#line 1225 "fortran.y"
+#line 1226 "fortran.y"
     {
                        if ( insubroutinedeclare == 1 )
@@ -4656,5 +4701,5 @@
 
   case 175:
-#line 1239 "fortran.y"
+#line 1240 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4664,4 +4709,5 @@
                          {
                             curvar=createvar((yyvsp[(3) - (6)].nac),curdim);
+                            GlobalDeclarationType == 0;
                          }
                          else
@@ -4691,5 +4737,5 @@
 
   case 176:
-#line 1271 "fortran.y"
+#line 1273 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4728,15 +4774,15 @@
 
   case 177:
-#line 1305 "fortran.y"
+#line 1307 "fortran.y"
     {dimsgiven=0;;}
     break;
 
   case 178:
-#line 1308 "fortran.y"
+#line 1310 "fortran.y"
     {strcpy(DeclType,(yyvsp[(1) - (2)].nac));;}
     break;
 
   case 179:
-#line 1310 "fortran.y"
+#line 1312 "fortran.y"
     {
                       strcpy(DeclType,"CHARACTER");
@@ -4745,5 +4791,5 @@
 
   case 180:
-#line 1314 "fortran.y"
+#line 1316 "fortran.y"
     {
                       strcpy(DeclType,(yyvsp[(1) - (3)].nac));
@@ -4753,12 +4799,13 @@
 
   case 181:
-#line 1319 "fortran.y"
+#line 1321 "fortran.y"
     {
                       strcpy(DeclType,"TYPE");
+                      GlobalDeclarationType = 1
                    ;}
     break;
 
   case 182:
-#line 1324 "fortran.y"
+#line 1327 "fortran.y"
     {
                  /*     if ( couldaddvariable == 1 ) VarTypepar = 1 ;
@@ -4770,15 +4817,15 @@
 
   case 184:
-#line 1333 "fortran.y"
+#line 1336 "fortran.y"
     {c_selectorgiven=1;strcpy(c_selectorname,(yyvsp[(2) - (2)].nac));;}
     break;
 
   case 185:
-#line 1334 "fortran.y"
+#line 1337 "fortran.y"
     {c_star = 1;;}
     break;
 
   case 190:
-#line 1342 "fortran.y"
+#line 1345 "fortran.y"
     {
                       pos_cur_decl = setposcur()-9;
@@ -4787,10 +4834,10 @@
 
   case 191:
-#line 1346 "fortran.y"
+#line 1349 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 192:
-#line 1349 "fortran.y"
+#line 1352 "fortran.y"
     {
                       strcpy((yyval.nac),"INTEGER");
@@ -4800,5 +4847,5 @@
 
   case 193:
-#line 1353 "fortran.y"
+#line 1356 "fortran.y"
     {
                       strcpy((yyval.nac),"REAL");
@@ -4808,5 +4855,5 @@
 
   case 194:
-#line 1358 "fortran.y"
+#line 1361 "fortran.y"
     {strcpy((yyval.nac),"COMPLEX");
                    pos_cur_decl = setposcur()-7;;}
@@ -4814,5 +4861,5 @@
 
   case 195:
-#line 1361 "fortran.y"
+#line 1364 "fortran.y"
     {
                       pos_cur_decl = setposcur()-16;
@@ -4823,10 +4870,10 @@
 
   case 196:
-#line 1367 "fortran.y"
+#line 1370 "fortran.y"
     {strcpy((yyval.nac),"DOUBLE COMPLEX");;}
     break;
 
   case 197:
-#line 1369 "fortran.y"
+#line 1372 "fortran.y"
     {
                       strcpy((yyval.nac),"LOGICAL");
@@ -4836,21 +4883,21 @@
 
   case 199:
-#line 1375 "fortran.y"
+#line 1378 "fortran.y"
     {strcpy(vallengspec,(yyvsp[(2) - (2)].na));;}
     break;
 
   case 200:
-#line 1377 "fortran.y"
+#line 1380 "fortran.y"
     {sprintf((yyval.na),"*%s",(yyvsp[(1) - (1)].na));;}
     break;
 
   case 201:
-#line 1378 "fortran.y"
+#line 1381 "fortran.y"
     {strcpy((yyval.na),"*(*)");;}
     break;
 
   case 208:
-#line 1389 "fortran.y"
-                      {
+#line 1392 "fortran.y"
+    {
                       if ( strstr((yyvsp[(3) - (3)].na),"0.d0") )
                       {
@@ -4863,5 +4910,5 @@
 
   case 209:
-#line 1398 "fortran.y"
+#line 1401 "fortran.y"
     {
                       strcpy(NamePrecision,(yyvsp[(1) - (1)].nac));
@@ -4870,5 +4917,5 @@
 
   case 210:
-#line 1402 "fortran.y"
+#line 1405 "fortran.y"
     {
                       strcpy(NamePrecision,(yyvsp[(1) - (1)].nac));
@@ -4877,5 +4924,5 @@
 
   case 211:
-#line 1406 "fortran.y"
+#line 1409 "fortran.y"
     {strcpy(CharacterSize,(yyvsp[(1) - (1)].na));
                     strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
@@ -4883,5 +4930,5 @@
 
   case 212:
-#line 1408 "fortran.y"
+#line 1411 "fortran.y"
     {strcpy(CharacterSize,"*");
                     strcpy((yyval.na),"*");;}
@@ -4889,5 +4936,5 @@
 
   case 220:
-#line 1422 "fortran.y"
+#line 1425 "fortran.y"
     {
                       VariableIsParameter = 1;
@@ -4896,10 +4943,10 @@
 
   case 222:
-#line 1427 "fortran.y"
+#line 1430 "fortran.y"
     {Allocatabledeclare = 1;;}
     break;
 
   case 223:
-#line 1429 "fortran.y"
+#line 1432 "fortran.y"
     {
                       dimsgiven=1;
@@ -4909,25 +4956,25 @@
 
   case 224:
-#line 1434 "fortran.y"
+#line 1437 "fortran.y"
     {ExternalDeclare = 1;;}
     break;
 
   case 225:
-#line 1436 "fortran.y"
+#line 1439 "fortran.y"
     {strcpy(IntentSpec,(yyvsp[(3) - (4)].nac));;}
     break;
 
   case 227:
-#line 1438 "fortran.y"
+#line 1441 "fortran.y"
     {optionaldeclare = 1 ;;}
     break;
 
   case 228:
-#line 1439 "fortran.y"
+#line 1442 "fortran.y"
     {pointerdeclare = 1 ;;}
     break;
 
   case 229:
-#line 1440 "fortran.y"
+#line 1443 "fortran.y"
     {
 /*                       if ( inmodulemeet == 1 )
@@ -4939,35 +4986,35 @@
 
   case 230:
-#line 1447 "fortran.y"
+#line 1450 "fortran.y"
     {Targetdeclare = 1;;}
     break;
 
   case 231:
-#line 1449 "fortran.y"
+#line 1452 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 232:
-#line 1450 "fortran.y"
+#line 1453 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 233:
-#line 1451 "fortran.y"
+#line 1454 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac)); ;}
     break;
 
   case 234:
-#line 1454 "fortran.y"
+#line 1457 "fortran.y"
     {PublicDeclare = 1;;}
     break;
 
   case 235:
-#line 1456 "fortran.y"
+#line 1459 "fortran.y"
     {PrivateDeclare = 1;;}
     break;
 
   case 236:
-#line 1458 "fortran.y"
+#line 1461 "fortran.y"
     {if ( created_dimensionlist == 1 )
                        {
@@ -4978,5 +5025,5 @@
 
   case 237:
-#line 1464 "fortran.y"
+#line 1467 "fortran.y"
     {if ( created_dimensionlist == 1 ||
                          agrif_parentcall      == 1 ) (yyval.d)=(yyvsp[(2) - (3)].d);;}
@@ -4984,5 +5031,5 @@
 
   case 238:
-#line 1467 "fortran.y"
+#line 1470 "fortran.y"
     {if ( created_dimensionlist == 1 ||
                          agrif_parentcall      == 1 ) (yyval.d)=insertdim(NULL,(yyvsp[(1) - (1)].dim1));;}
@@ -4990,5 +5037,5 @@
 
   case 239:
-#line 1470 "fortran.y"
+#line 1473 "fortran.y"
     {if ( couldaddvariable == 1 )
                          if ( created_dimensionlist == 1 ) (yyval.d)=insertdim((yyvsp[(1) - (3)].d),(yyvsp[(3) - (3)].dim1));;}
@@ -4996,5 +5043,5 @@
 
   case 240:
-#line 1473 "fortran.y"
+#line 1476 "fortran.y"
     {
                       strcpy((yyval.dim1).first,"1");
@@ -5005,5 +5052,5 @@
 
   case 241:
-#line 1478 "fortran.y"
+#line 1481 "fortran.y"
     {
                       strcpy((yyval.dim1).first,"");
@@ -5013,5 +5060,5 @@
 
   case 242:
-#line 1482 "fortran.y"
+#line 1485 "fortran.y"
     {
                       strcpy((yyval.dim1).first,(yyvsp[(1) - (2)].na));
@@ -5022,5 +5069,5 @@
 
   case 243:
-#line 1487 "fortran.y"
+#line 1490 "fortran.y"
     {
                       strcpy((yyval.dim1).first,"");
@@ -5031,5 +5078,5 @@
 
   case 244:
-#line 1493 "fortran.y"
+#line 1496 "fortran.y"
     {
                       strcpy((yyval.dim1).first,(yyvsp[(1) - (3)].na));
@@ -5041,170 +5088,170 @@
 
   case 245:
-#line 1500 "fortran.y"
+#line 1503 "fortran.y"
     {strcpy((yyval.na),"*");;}
     break;
 
   case 246:
-#line 1501 "fortran.y"
+#line 1504 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 247:
-#line 1503 "fortran.y"
+#line 1506 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 248:
-#line 1505 "fortran.y"
+#line 1508 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 249:
-#line 1507 "fortran.y"
+#line 1510 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 250:
-#line 1509 "fortran.y"
+#line 1512 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 251:
-#line 1513 "fortran.y"
+#line 1516 "fortran.y"
     {sprintf((yyval.na),"SUM(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 252:
-#line 1515 "fortran.y"
+#line 1518 "fortran.y"
     {sprintf((yyval.na),"MAX(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 253:
-#line 1517 "fortran.y"
+#line 1520 "fortran.y"
     {sprintf((yyval.na),"TANH(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 254:
-#line 1519 "fortran.y"
+#line 1522 "fortran.y"
     {sprintf((yyval.na),"MAXVAL(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 255:
-#line 1521 "fortran.y"
+#line 1524 "fortran.y"
     {sprintf((yyval.na),"MIN(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 256:
-#line 1523 "fortran.y"
+#line 1526 "fortran.y"
     {sprintf((yyval.na),"MINVAL(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 257:
-#line 1525 "fortran.y"
+#line 1528 "fortran.y"
     {sprintf((yyval.na),"TRIM(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 258:
-#line 1527 "fortran.y"
+#line 1530 "fortran.y"
     {sprintf((yyval.na),"SQRT(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 259:
-#line 1529 "fortran.y"
+#line 1532 "fortran.y"
     {sprintf((yyval.na),"REAL(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 260:
-#line 1531 "fortran.y"
+#line 1534 "fortran.y"
     {sprintf((yyval.na),"NINT(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 261:
-#line 1533 "fortran.y"
+#line 1536 "fortran.y"
     {sprintf((yyval.na),"FLOAT(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 262:
-#line 1535 "fortran.y"
+#line 1538 "fortran.y"
     {sprintf((yyval.na),"EXP(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 263:
-#line 1537 "fortran.y"
+#line 1540 "fortran.y"
     {sprintf((yyval.na),"COS(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 264:
-#line 1539 "fortran.y"
+#line 1542 "fortran.y"
     {sprintf((yyval.na),"COSH(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 265:
-#line 1541 "fortran.y"
+#line 1544 "fortran.y"
     {sprintf((yyval.na),"ACOS(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 266:
-#line 1543 "fortran.y"
+#line 1546 "fortran.y"
     {sprintf((yyval.na),"SIN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 267:
-#line 1545 "fortran.y"
+#line 1548 "fortran.y"
     {sprintf((yyval.na),"SINH(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 268:
-#line 1547 "fortran.y"
+#line 1550 "fortran.y"
     {sprintf((yyval.na),"ASIN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 269:
-#line 1549 "fortran.y"
+#line 1552 "fortran.y"
     {sprintf((yyval.na),"LOG(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 270:
-#line 1551 "fortran.y"
+#line 1554 "fortran.y"
     {sprintf((yyval.na),"TAN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 271:
-#line 1553 "fortran.y"
+#line 1556 "fortran.y"
     {sprintf((yyval.na),"ATAN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 272:
-#line 1555 "fortran.y"
+#line 1558 "fortran.y"
     {sprintf((yyval.na),"ABS(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 273:
-#line 1557 "fortran.y"
+#line 1560 "fortran.y"
     {sprintf((yyval.na),"MOD(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 274:
-#line 1559 "fortran.y"
+#line 1562 "fortran.y"
     {sprintf((yyval.na),"SIGN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 275:
-#line 1561 "fortran.y"
+#line 1564 "fortran.y"
     {sprintf((yyval.na),"MINLOC(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 276:
-#line 1563 "fortran.y"
+#line 1566 "fortran.y"
     {sprintf((yyval.na),"MAXLOC(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 277:
-#line 1565 "fortran.y"
+#line 1568 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 278:
-#line 1567 "fortran.y"
+#line 1570 "fortran.y"
     {if ( couldaddvariable == 1 )
                    { strcpy((yyval.na),(yyvsp[(1) - (3)].na));strcat((yyval.na),",");strcat((yyval.na),(yyvsp[(3) - (3)].na));};}
@@ -5212,180 +5259,180 @@
 
   case 279:
-#line 1570 "fortran.y"
+#line 1573 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 280:
-#line 1572 "fortran.y"
+#line 1575 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 281:
-#line 1574 "fortran.y"
+#line 1577 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 282:
-#line 1576 "fortran.y"
+#line 1579 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].na),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 283:
-#line 1578 "fortran.y"
+#line 1581 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 284:
-#line 1580 "fortran.y"
+#line 1583 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 285:
-#line 1582 "fortran.y"
+#line 1585 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),"+");;}
     break;
 
   case 286:
-#line 1583 "fortran.y"
+#line 1586 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),"-");;}
     break;
 
   case 287:
-#line 1586 "fortran.y"
+#line 1589 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"+%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 288:
-#line 1588 "fortran.y"
+#line 1591 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"-%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 289:
-#line 1590 "fortran.y"
+#line 1593 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"*%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 290:
-#line 1592 "fortran.y"
+#line 1595 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 291:
-#line 1594 "fortran.y"
+#line 1597 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 292:
-#line 1596 "fortran.y"
+#line 1599 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 293:
-#line 1598 "fortran.y"
+#line 1601 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 294:
-#line 1600 "fortran.y"
+#line 1603 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," > %s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 295:
-#line 1602 "fortran.y"
+#line 1605 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 296:
-#line 1604 "fortran.y"
+#line 1607 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," < %s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 297:
-#line 1606 "fortran.y"
+#line 1609 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 298:
-#line 1608 "fortran.y"
+#line 1611 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," >= %s",(yyvsp[(3) - (3)].na));;}
     break;
 
   case 299:
-#line 1610 "fortran.y"
+#line 1613 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 300:
-#line 1612 "fortran.y"
+#line 1615 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," <= %s",(yyvsp[(3) - (3)].na));;}
     break;
 
   case 301:
-#line 1614 "fortran.y"
+#line 1617 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 302:
-#line 1616 "fortran.y"
+#line 1619 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 303:
-#line 1618 "fortran.y"
+#line 1621 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 304:
-#line 1620 "fortran.y"
+#line 1623 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 305:
-#line 1622 "fortran.y"
+#line 1625 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 306:
-#line 1624 "fortran.y"
+#line 1627 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 307:
-#line 1626 "fortran.y"
+#line 1629 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 308:
-#line 1628 "fortran.y"
+#line 1631 "fortran.y"
     {strcpy((yyval.na),"");;}
     break;
 
   case 309:
-#line 1630 "fortran.y"
+#line 1633 "fortran.y"
     {sprintf((yyval.na),"/%s",(yyvsp[(1) - (1)].na));;}
     break;
 
   case 310:
-#line 1632 "fortran.y"
+#line 1635 "fortran.y"
     {sprintf((yyval.na),"/= %s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 311:
-#line 1634 "fortran.y"
+#line 1637 "fortran.y"
     {sprintf((yyval.na),"//%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 312:
-#line 1637 "fortran.y"
+#line 1640 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"==%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 313:
-#line 1639 "fortran.y"
+#line 1642 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"= %s",(yyvsp[(1) - (1)].na));;}
     break;
 
   case 314:
-#line 1642 "fortran.y"
+#line 1645 "fortran.y"
     {if ( couldaddvariable == 1 )
 						{
@@ -5396,5 +5443,5 @@
 
   case 315:
-#line 1648 "fortran.y"
+#line 1651 "fortran.y"
     {if ( couldaddvariable == 1 ) {
                    printf("struct = %s\n",(yyvsp[(1) - (1)].na));
@@ -5404,5 +5451,5 @@
 
   case 316:
-#line 1653 "fortran.y"
+#line 1656 "fortran.y"
     {if ( couldaddvariable == 1 ) {
                    printf("arrayref = %s\n",(yyvsp[(1) - (1)].na));
@@ -5412,5 +5459,5 @@
 
   case 317:
-#line 1658 "fortran.y"
+#line 1661 "fortran.y"
     {
                       agrif_parentcall =0;
@@ -5427,5 +5474,5 @@
 
   case 318:
-#line 1671 "fortran.y"
+#line 1674 "fortran.y"
     {
                      strcpy((yyval.na),(yyvsp[(1) - (1)].na));
@@ -5435,10 +5482,10 @@
 
   case 319:
-#line 1676 "fortran.y"
+#line 1679 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," %s %s ",(yyvsp[(1) - (2)].na),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 320:
-#line 1678 "fortran.y"
+#line 1681 "fortran.y"
     {if ( couldaddvariable == 1 )
                                                 sprintf((yyval.na)," %s ( %s )",(yyvsp[(1) - (4)].na),(yyvsp[(3) - (4)].na));;}
@@ -5446,5 +5493,5 @@
 
   case 321:
-#line 1681 "fortran.y"
+#line 1684 "fortran.y"
     {if ( couldaddvariable == 1 )
                                          sprintf((yyval.na)," %s ( %s ) %s ",(yyvsp[(1) - (5)].na),(yyvsp[(3) - (5)].na),(yyvsp[(5) - (5)].na));;}
@@ -5452,5 +5499,5 @@
 
   case 322:
-#line 1685 "fortran.y"
+#line 1688 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -5464,5 +5511,5 @@
 
   case 323:
-#line 1695 "fortran.y"
+#line 1698 "fortran.y"
     {
                       sprintf((yyval.na)," %s %% %s ",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));
@@ -5472,45 +5519,45 @@
 
   case 324:
-#line 1701 "fortran.y"
+#line 1704 "fortran.y"
     {sprintf((yyval.na),"(/%s/)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 325:
-#line 1703 "fortran.y"
+#line 1706 "fortran.y"
     {strcpy((yyval.na)," ");;}
     break;
 
   case 326:
-#line 1705 "fortran.y"
+#line 1708 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 327:
-#line 1707 "fortran.y"
+#line 1710 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 328:
-#line 1709 "fortran.y"
+#line 1712 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 329:
-#line 1711 "fortran.y"
+#line 1714 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 330:
-#line 1712 "fortran.y"
+#line 1715 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 331:
-#line 1715 "fortran.y"
+#line 1718 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s :%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 332:
-#line 1717 "fortran.y"
+#line 1720 "fortran.y"
     {if ( couldaddvariable == 1 )
                                                sprintf((yyval.na),"%s :%s :%s",(yyvsp[(1) - (5)].na),(yyvsp[(3) - (5)].na),(yyvsp[(5) - (5)].na));;}
@@ -5518,31 +5565,31 @@
 
   case 333:
-#line 1720 "fortran.y"
+#line 1723 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),":%s :%s",(yyvsp[(2) - (4)].na),(yyvsp[(4) - (4)].na));;}
     break;
 
   case 334:
-#line 1721 "fortran.y"
+#line 1724 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),": : %s",(yyvsp[(3) - (3)].na));;}
     break;
 
   case 335:
-#line 1722 "fortran.y"
+#line 1725 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),":%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 336:
-#line 1723 "fortran.y"
+#line 1726 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s :",(yyvsp[(1) - (2)].na));;}
     break;
 
   case 337:
-#line 1724 "fortran.y"
+#line 1727 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),":");;}
     break;
 
   case 338:
-#line 1726 "fortran.y"
-                       {
+#line 1729 "fortran.y"
+    {
                        if ( couldaddvariable == 1 && afterpercent == 0)
                        {
@@ -5604,100 +5651,100 @@
 
   case 339:
-#line 1785 "fortran.y"
+#line 1788 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),".TRUE.");;}
     break;
 
   case 340:
-#line 1786 "fortran.y"
+#line 1789 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),".FALSE.");;}
     break;
 
   case 341:
-#line 1787 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
-    break;
-
-  case 342:
-#line 1788 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
-    break;
-
-  case 343:
-#line 1789 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
-    break;
-
-  case 344:
 #line 1790 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
+  case 342:
+#line 1791 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
+    break;
+
+  case 343:
+#line 1792 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
+    break;
+
+  case 344:
+#line 1793 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
+    break;
+
   case 345:
-#line 1792 "fortran.y"
+#line 1795 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.nac),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].nac));;}
     break;
 
   case 347:
-#line 1796 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
-    break;
-
-  case 349:
 #line 1799 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
+  case 349:
+#line 1802 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
+    break;
+
   case 350:
-#line 1801 "fortran.y"
+#line 1804 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 351:
-#line 1803 "fortran.y"
+#line 1806 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na)," ");;}
     break;
 
   case 352:
-#line 1804 "fortran.y"
+#line 1807 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 353:
-#line 1807 "fortran.y"
+#line 1810 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s :%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
   case 354:
-#line 1809 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.na)," ");;}
-    break;
-
-  case 355:
-#line 1810 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
-    break;
-
-  case 356:
 #line 1812 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na)," ");;}
     break;
 
-  case 357:
+  case 355:
 #line 1813 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
+  case 356:
+#line 1815 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.na)," ");;}
+    break;
+
+  case 357:
+#line 1816 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
+    break;
+
   case 358:
-#line 1815 "fortran.y"
-    {InitialValueGiven = 0;;}
+#line 1818 "fortran.y"
+    {   strcpy(InitialValueGiven," ");;}
     break;
 
   case 359:
-#line 1817 "fortran.y"
+#line 1820 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
                        {
                           strcpy(InitValue,(yyvsp[(3) - (3)].na));
-                          InitialValueGiven = 1;
+                          strcpy(InitialValueGiven,"=");
                        }
                     ;}
@@ -5705,15 +5752,26 @@
 
   case 360:
-#line 1825 "fortran.y"
+#line 1828 "fortran.y"
+    {
+                       if ( couldaddvariable == 1 )
+                       {
+                          strcpy(InitValue,(yyvsp[(3) - (3)].na));
+                          strcpy(InitialValueGiven,"=>");
+                       }
+                    ;}
+    break;
+
+  case 361:
+#line 1836 "fortran.y"
     {pos_curinit = setposcur();;}
     break;
 
-  case 361:
-#line 1828 "fortran.y"
+  case 362:
+#line 1839 "fortran.y"
     {sprintf((yyval.na),"(%s,%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
-  case 362:
-#line 1831 "fortran.y"
+  case 363:
+#line 1842 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -5737,6 +5795,6 @@
     break;
 
-  case 363:
-#line 1851 "fortran.y"
+  case 364:
+#line 1862 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -5774,6 +5832,6 @@
     break;
 
-  case 364:
-#line 1885 "fortran.y"
+  case 365:
+#line 1896 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -5797,6 +5855,6 @@
     break;
 
-  case 365:
-#line 1905 "fortran.y"
+  case 366:
+#line 1916 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -5850,6 +5908,6 @@
     break;
 
-  case 366:
-#line 1956 "fortran.y"
+  case 367:
+#line 1967 "fortran.y"
     {
                       pos_curuse = setposcur()-strlen((yyvsp[(1) - (1)].nac));
@@ -5860,11 +5918,11 @@
     break;
 
-  case 367:
-#line 1964 "fortran.y"
+  case 368:
+#line 1975 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
-  case 368:
-#line 1967 "fortran.y"
+  case 369:
+#line 1978 "fortran.y"
     {
                        if ( couldaddvariable == 1 ) (yyval.lc) = (yyvsp[(1) - (1)].lc);
@@ -5872,6 +5930,6 @@
     break;
 
-  case 369:
-#line 1971 "fortran.y"
+  case 370:
+#line 1982 "fortran.y"
     {
                         if ( couldaddvariable == 1 )
@@ -5884,6 +5942,6 @@
     break;
 
-  case 370:
-#line 1981 "fortran.y"
+  case 371:
+#line 1992 "fortran.y"
     {
                        coupletmp =(listcouple *)malloc(sizeof(listcouple));
@@ -5897,6 +5955,6 @@
     break;
 
-  case 371:
-#line 1992 "fortran.y"
+  case 372:
+#line 2003 "fortran.y"
     {
                        if ( couldaddvariable == 1 ) (yyval.lc) = (yyvsp[(1) - (1)].lc);
@@ -5904,6 +5962,6 @@
     break;
 
-  case 372:
-#line 1996 "fortran.y"
+  case 373:
+#line 2007 "fortran.y"
     {
                         if ( couldaddvariable == 1 )
@@ -5916,6 +5974,6 @@
     break;
 
-  case 373:
-#line 2006 "fortran.y"
+  case 374:
+#line 2017 "fortran.y"
     {
                        coupletmp =(listcouple *)malloc(sizeof(listcouple));
@@ -5931,6 +5989,6 @@
     break;
 
-  case 374:
-#line 2017 "fortran.y"
+  case 375:
+#line 2028 "fortran.y"
     {
                        coupletmp =(listcouple *)malloc(sizeof(listcouple));
@@ -5943,6 +6001,6 @@
     break;
 
-  case 376:
-#line 2028 "fortran.y"
+  case 377:
+#line 2039 "fortran.y"
     {
                          Add_SubroutineWhereAgrifUsed_1(subroutinename,
@@ -5952,6 +6010,6 @@
     break;
 
-  case 377:
-#line 2034 "fortran.y"
+  case 378:
+#line 2045 "fortran.y"
     {
                           Add_SubroutineWhereAgrifUsed_1(subroutinename,
@@ -5961,6 +6019,6 @@
     break;
 
-  case 379:
-#line 2041 "fortran.y"
+  case 380:
+#line 2052 "fortran.y"
     {
                        GlobalDeclaration = 0 ;
@@ -6014,6 +6072,6 @@
     break;
 
-  case 380:
-#line 2091 "fortran.y"
+  case 381:
+#line 2102 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -6035,6 +6093,6 @@
     break;
 
-  case 381:
-#line 2109 "fortran.y"
+  case 382:
+#line 2120 "fortran.y"
     {
                        if ( couldaddvariable == 1 &&
@@ -6058,6 +6116,6 @@
     break;
 
-  case 382:
-#line 2129 "fortran.y"
+  case 383:
+#line 2140 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -6080,6 +6138,6 @@
     break;
 
-  case 383:
-#line 2148 "fortran.y"
+  case 384:
+#line 2159 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -6094,4 +6152,11 @@
                              Write_NotGridDepend_Declaration_0();
                              Write_GlobalType_Declaration_0();
+                             if ( module_declar_type )
+                             {
+                             strcpy (ligne, "\n#include \"Module_DeclarType_");
+                             strcat (ligne, curmodulename);
+                             strcat (ligne, ".h\"\n");
+                             tofich(fortranout,ligne,1); 
+                             }
                              Write_Alloc_Subroutine_For_End_0();
                           }
@@ -6110,4 +6175,9 @@
                            fclose(module_declar);
                          }
+                         if ( module_declar_type && insubroutinedeclare == 0)
+                         {
+                          fclose(module_declar_type);
+                          module_declar_type = 0;
+                         }
                       }
                       GlobalDeclaration = 0 ;
@@ -6116,6 +6186,6 @@
     break;
 
-  case 397:
-#line 2194 "fortran.y"
+  case 398:
+#line 2217 "fortran.y"
     {
                       if (inmoduledeclare == 1 )
@@ -6124,4 +6194,11 @@
                          Write_GlobalParameter_Declaration_0();
                          Write_GlobalType_Declaration_0();
+                             if ( module_declar_type)
+                             {                         
+                             strcpy (ligne, "\n#include \"Module_DeclarType_");
+                             strcat (ligne, curmodulename);
+                             strcat (ligne, ".h\"\n");
+                             tofich(fortranout,ligne,1); 
+                             }
                          Write_NotGridDepend_Declaration_0();
                          Write_Alloc_Subroutine_0();
@@ -6155,6 +6232,6 @@
     break;
 
-  case 398:
-#line 2231 "fortran.y"
+  case 399:
+#line 2261 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -6167,6 +6244,6 @@
     break;
 
-  case 399:
-#line 2241 "fortran.y"
+  case 400:
+#line 2271 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -6178,6 +6255,6 @@
     break;
 
-  case 400:
-#line 2250 "fortran.y"
+  case 401:
+#line 2280 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -6189,6 +6266,6 @@
     break;
 
-  case 401:
-#line 2259 "fortran.y"
+  case 402:
+#line 2289 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -6200,16 +6277,16 @@
     break;
 
-  case 413:
-#line 2281 "fortran.y"
+  case 414:
+#line 2311 "fortran.y"
     {strcpy((yyval.nac),"");;}
     break;
 
-  case 414:
-#line 2282 "fortran.y"
+  case 415:
+#line 2312 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
-  case 424:
-#line 2302 "fortran.y"
+  case 425:
+#line 2332 "fortran.y"
     {
                           Add_SubroutineWhereAgrifUsed_1(subroutinename,
@@ -6219,6 +6296,6 @@
     break;
 
-  case 425:
-#line 2308 "fortran.y"
+  case 426:
+#line 2338 "fortran.y"
     {
                           Add_SubroutineWhereAgrifUsed_1(subroutinename,
@@ -6228,11 +6305,11 @@
     break;
 
-  case 431:
-#line 2319 "fortran.y"
+  case 432:
+#line 2349 "fortran.y"
     {if ( couldaddvariable == 1 ) created_dimensionlist = 0;;}
     break;
 
-  case 432:
-#line 2321 "fortran.y"
+  case 433:
+#line 2351 "fortran.y"
     {
                   created_dimensionlist = 1;
@@ -6246,11 +6323,11 @@
     break;
 
-  case 433:
-#line 2331 "fortran.y"
+  case 434:
+#line 2361 "fortran.y"
     {created_dimensionlist = 1;;}
     break;
 
-  case 438:
-#line 2339 "fortran.y"
+  case 439:
+#line 2369 "fortran.y"
     {
                       inagrifcallargument = 0 ;
@@ -6281,7 +6358,7 @@
     break;
 
-  case 443:
-#line 2373 "fortran.y"
-                       {
+  case 444:
+#line 2403 "fortran.y"
+    {
                        if (!strcasecmp((yyvsp[(2) - (2)].nac),"MPI_Init") )
                        {
@@ -6313,11 +6390,11 @@
     break;
 
-  case 444:
-#line 2403 "fortran.y"
+  case 445:
+#line 2433 "fortran.y"
     {pos_curcall=setposcur()-4;;}
     break;
 
-  case 447:
-#line 2408 "fortran.y"
+  case 448:
+#line 2438 "fortran.y"
     {
                   if ( callmpiinit == 1 )
@@ -6336,108 +6413,108 @@
     break;
 
-  case 517:
-#line 2530 "fortran.y"
+  case 520:
+#line 2562 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 518:
-#line 2531 "fortran.y"
+  case 521:
+#line 2563 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 519:
-#line 2532 "fortran.y"
+  case 522:
+#line 2564 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 520:
-#line 2535 "fortran.y"
+  case 523:
+#line 2567 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 521:
-#line 2537 "fortran.y"
+  case 524:
+#line 2569 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 522:
-#line 2539 "fortran.y"
+  case 525:
+#line 2571 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 523:
-#line 2541 "fortran.y"
+  case 526:
+#line 2573 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 524:
-#line 2543 "fortran.y"
+  case 527:
+#line 2575 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 525:
-#line 2545 "fortran.y"
+  case 528:
+#line 2577 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 526:
-#line 2546 "fortran.y"
+  case 529:
+#line 2578 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 527:
-#line 2547 "fortran.y"
+  case 530:
+#line 2579 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 528:
-#line 2550 "fortran.y"
+  case 531:
+#line 2582 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 529:
-#line 2552 "fortran.y"
+  case 532:
+#line 2584 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," (%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
-  case 530:
-#line 2554 "fortran.y"
+  case 533:
+#line 2586 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s,%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
-  case 531:
-#line 2556 "fortran.y"
+  case 534:
+#line 2588 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s,%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
-  case 532:
-#line 2558 "fortran.y"
+  case 535:
+#line 2590 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s,%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
-  case 533:
-#line 2562 "fortran.y"
+  case 536:
+#line 2594 "fortran.y"
     {if ( couldaddvariable == 1 )
                                               sprintf((yyval.na),"%s=%s,%s)",(yyvsp[(1) - (5)].nac),(yyvsp[(3) - (5)].na),(yyvsp[(5) - (5)].na));;}
     break;
 
-  case 534:
-#line 2565 "fortran.y"
+  case 537:
+#line 2597 "fortran.y"
     {if ( couldaddvariable == 1 )
                                         sprintf((yyval.na),"%s=%s,%s,%s)",(yyvsp[(1) - (7)].nac),(yyvsp[(3) - (7)].na),(yyvsp[(5) - (7)].na),(yyvsp[(7) - (7)].na));;}
     break;
 
-  case 541:
-#line 2581 "fortran.y"
+  case 544:
+#line 2613 "fortran.y"
     {Add_Allocate_Var_1((yyvsp[(1) - (1)].nac),curmodulename);;}
     break;
 
-  case 544:
-#line 2586 "fortran.y"
+  case 547:
+#line 2618 "fortran.y"
     {Add_Allocate_Var_1((yyvsp[(1) - (4)].nac),curmodulename);;}
     break;
 
-  case 552:
-#line 2609 "fortran.y"
+  case 555:
+#line 2641 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
@@ -6445,5 +6522,5 @@
 
 /* Line 1267 of yacc.c.  */
-#line 6445 "fortran.tab.c"
+#line 6522 "fortran.tab.c"
       default: break;
     }
@@ -6454,5 +6531,5 @@
   YY_STACK_PRINT (yyss, yyssp);
 
-        *++yyvsp = yyval;
+  *++yyvsp = yyval;
 
 
@@ -6478,10 +6555,10 @@
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
-        {
+    {
       ++yynerrs;
 #if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
 #else
-            {
+      {
 	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
 	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
@@ -6499,5 +6576,5 @@
 		yymsg = yymsgbuf;
 		yymsg_alloc = sizeof yymsgbuf;
-            }
+	      }
 	  }
 
@@ -6515,5 +6592,5 @@
       }
 #endif
-        }
+    }
 
 
@@ -6529,6 +6606,6 @@
 	  if (yychar == YYEOF)
 	    YYABORT;
-    }
-    else
+	}
+      else
 	{
 	  yydestruct ("Error: discarding",
@@ -6659,5 +6736,5 @@
 
 
-#line 2611 "fortran.y"
+#line 2643 "fortran.y"
 
 
@@ -6744,8 +6821,10 @@
    strcpy(subroutinename," ");
    isrecursive = 0;
-   InitialValueGiven = 0 ;
+   strcpy(InitialValueGiven," ");
    strcpy(EmptyChar," ");
    inmoduledeclare = 0;
    incontainssubroutine = 0;
+   module_declar_type = 0;
+   GlobalDeclarationType = 0;
    colnum=0;
    incom=0;
@@ -11588,5 +11667,5 @@
         b->yy_bs_lineno = 1;
         b->yy_bs_column = 0;
-	}
+    }
 
         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
@@ -11601,5 +11680,5 @@
     void fortran_flush_buffer (YY_BUFFER_STATE  b )
 {
-	if ( ! b )
+    	if ( ! b )
 		return;
 
@@ -11637,5 +11716,5 @@
 	/* This block is copied from fortran_switch_to_buffer. */
 	if ( YY_CURRENT_BUFFER )
-	{
+		{
 		/* Flush out information for old buffer. */
 		*(yy_c_buf_p) = (yy_hold_char);
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.tab.c
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.tab.c	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.tab.c	(revision 7)
@@ -61,7 +61,7 @@
 /* Substitute the variable and function names.  */
 #define yyparse fortranparse
-#define yylex fortranlex
+#define yylex   fortranlex
 #define yyerror fortranerror
-#define yylval fortranlval
+#define yylval  fortranlval
 #define yychar  fortranchar
 #define yydebug fortrandebug
@@ -449,5 +449,5 @@
 /* Enabling traces.  */
 #ifndef YYDEBUG
-# define YYDEBUG 1
+# define YYDEBUG 0
 #endif
 
@@ -708,5 +708,5 @@
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   5878
+#define YYLAST   6070
 
 /* YYNTOKENS -- Number of terminals.  */
@@ -715,7 +715,7 @@
 #define YYNNTS  184
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  552
+#define YYNRULES  555
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  978
+#define YYNSTATES  982
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
@@ -782,57 +782,57 @@
       25,    29,    32,    35,    39,    43,    46,    49,    52,    54,
       56,    58,    60,    61,    62,    65,    66,    68,    69,    70,
-      72,    73,    78,    81,    87,    91,    94,    96,    97,    99,
-     101,   102,   105,   109,   110,   113,   117,   119,   123,   125,
-     127,   130,   135,   138,   141,   146,   149,   151,   153,   155,
-     157,   159,   161,   163,   165,   167,   169,   174,   178,   182,
-     185,   189,   190,   192,   194,   196,   198,   200,   202,   204,
-     206,   208,   210,   212,   214,   216,   218,   220,   222,   224,
-     226,   228,   230,   232,   234,   236,   238,   240,   242,   246,
-     250,   256,   258,   262,   266,   269,   274,   276,   280,   281,
-     284,   287,   291,   293,   295,   297,   302,   309,   314,   316,
-     320,   323,   327,   333,   337,   339,   340,   343,   345,   350,
-     354,   357,   361,   365,   369,   373,   374,   376,   379,   382,
-     386,   392,   396,   397,   400,   403,   405,   411,   417,   420,
-     424,   427,   431,   433,   437,   440,   444,   450,   452,   455,
-     457,   461,   464,   466,   470,   471,   473,   475,   479,   483,
-     486,   488,   492,   495,   498,   499,   506,   514,   515,   518,
-     521,   525,   529,   531,   532,   535,   540,   544,   548,   553,
-     556,   558,   560,   562,   564,   566,   568,   570,   572,   573,
-     576,   578,   582,   583,   586,   590,   592,   596,   599,   603,
-     605,   607,   609,   611,   612,   616,   617,   620,   625,   627,
-     631,   633,   635,   637,   640,   642,   647,   649,   651,   653,
-     655,   657,   659,   661,   663,   665,   667,   668,   672,   674,
-     678,   680,   682,   685,   688,   692,   694,   696,   698,   702,
-     704,   706,   710,   714,   719,   724,   728,   733,   738,   742,
-     747,   752,   757,   762,   767,   772,   777,   782,   787,   792,
-     797,   802,   807,   811,   816,   821,   826,   831,   833,   837,
-     839,   841,   843,   846,   849,   852,   854,   856,   859,   862,
-     865,   868,   871,   874,   877,   880,   883,   886,   889,   893,
-     896,   900,   903,   906,   909,   912,   915,   918,   921,   922,
-     924,   927,   930,   933,   935,   937,   939,   941,   942,   944,
-     947,   952,   958,   963,   967,   971,   973,   976,   978,   982,
-     984,   986,   990,   996,  1001,  1005,  1008,  1011,  1013,  1015,
-    1017,  1019,  1021,  1023,  1025,  1027,  1030,  1033,  1035,  1038,
-    1040,  1042,  1043,  1045,  1051,  1052,  1054,  1056,  1058,  1059,
-    1063,  1064,  1070,  1073,  1078,  1085,  1092,  1094,  1096,  1098,
-    1102,  1106,  1108,  1112,  1116,  1118,  1120,  1126,  1132,  1137,
-    1139,  1142,  1145,  1148,  1151,  1153,  1156,  1162,  1164,  1166,
-    1169,  1175,  1177,  1180,  1184,  1189,  1191,  1193,  1195,  1197,
-    1199,  1201,  1203,  1205,  1209,  1213,  1217,  1220,  1223,  1224,
-    1230,  1238,  1239,  1242,  1244,  1246,  1247,  1249,  1251,  1253,
-    1255,  1258,  1260,  1262,  1264,  1270,  1276,  1279,  1282,  1285,
-    1288,  1290,  1291,  1296,  1303,  1305,  1309,  1312,  1315,  1318,
-    1319,  1323,  1324,  1326,  1329,  1331,  1333,  1337,  1339,  1342,
-    1344,  1346,  1349,  1352,  1355,  1359,  1362,  1364,  1365,  1367,
-    1370,  1373,  1374,  1377,  1381,  1385,  1389,  1393,  1395,  1399,
-    1401,  1403,  1407,  1409,  1411,  1413,  1416,  1421,  1426,  1429,
-    1432,  1434,  1436,  1438,  1440,  1442,  1444,  1446,  1448,  1450,
-    1454,  1456,  1458,  1462,  1466,  1470,  1474,  1477,  1481,  1484,
-    1487,  1490,  1493,  1497,  1499,  1501,  1503,  1507,  1508,  1510,
-    1513,  1518,  1521,  1524,  1530,  1531,  1533,  1536,  1538,  1540,
-    1542,  1546,  1550,  1554,  1558,  1562,  1566,  1568,  1570,  1572,
-    1576,  1582,  1588,  1594,  1600,  1608,  1610,  1619,  1622,  1624,
-    1626,  1630,  1632,  1634,  1636,  1641,  1643,  1647,  1648,  1653,
-    1655,  1659,  1663
+      72,    73,    78,    81,    88,    93,    96,    98,    99,   101,
+     103,   104,   107,   111,   112,   115,   119,   121,   125,   127,
+     129,   132,   137,   140,   143,   148,   151,   153,   155,   157,
+     159,   161,   163,   165,   167,   169,   171,   176,   180,   184,
+     187,   191,   192,   194,   196,   198,   200,   202,   204,   206,
+     208,   210,   212,   214,   216,   218,   220,   222,   224,   226,
+     228,   230,   232,   234,   236,   238,   240,   242,   244,   248,
+     252,   258,   260,   264,   268,   271,   276,   278,   282,   283,
+     286,   289,   293,   295,   297,   299,   304,   311,   316,   318,
+     322,   325,   329,   335,   339,   341,   342,   345,   347,   352,
+     356,   359,   363,   367,   371,   375,   376,   378,   381,   384,
+     388,   394,   398,   399,   402,   405,   407,   413,   419,   422,
+     426,   429,   433,   435,   439,   442,   446,   452,   454,   457,
+     459,   463,   466,   468,   472,   473,   475,   477,   481,   485,
+     488,   490,   494,   497,   500,   501,   508,   516,   517,   520,
+     523,   527,   531,   533,   534,   537,   542,   546,   550,   555,
+     558,   560,   562,   564,   566,   568,   570,   572,   574,   575,
+     578,   580,   584,   585,   588,   592,   594,   598,   601,   605,
+     607,   609,   611,   613,   614,   618,   619,   622,   627,   629,
+     633,   635,   637,   639,   642,   644,   649,   651,   653,   655,
+     657,   659,   661,   663,   665,   667,   669,   670,   674,   676,
+     680,   682,   684,   687,   690,   694,   696,   698,   700,   704,
+     706,   708,   712,   716,   721,   726,   730,   735,   740,   744,
+     749,   754,   759,   764,   769,   774,   779,   784,   789,   794,
+     799,   804,   809,   813,   818,   823,   828,   833,   835,   839,
+     841,   843,   845,   848,   851,   854,   856,   858,   861,   864,
+     867,   870,   873,   876,   879,   882,   885,   888,   891,   895,
+     898,   902,   905,   908,   911,   914,   917,   920,   923,   924,
+     926,   929,   932,   935,   937,   939,   941,   943,   944,   946,
+     949,   954,   960,   965,   969,   973,   975,   978,   980,   984,
+     986,   988,   992,   998,  1003,  1007,  1010,  1013,  1015,  1017,
+    1019,  1021,  1023,  1025,  1027,  1029,  1032,  1035,  1037,  1040,
+    1042,  1044,  1045,  1047,  1053,  1054,  1056,  1058,  1060,  1061,
+    1065,  1069,  1070,  1076,  1079,  1084,  1091,  1098,  1100,  1102,
+    1104,  1108,  1112,  1114,  1118,  1122,  1124,  1126,  1132,  1138,
+    1143,  1145,  1148,  1151,  1154,  1157,  1159,  1162,  1168,  1170,
+    1172,  1175,  1181,  1183,  1186,  1190,  1195,  1197,  1199,  1201,
+    1203,  1205,  1207,  1209,  1211,  1215,  1219,  1223,  1226,  1229,
+    1230,  1236,  1244,  1245,  1248,  1250,  1252,  1253,  1255,  1257,
+    1259,  1261,  1264,  1266,  1268,  1270,  1276,  1282,  1285,  1288,
+    1291,  1294,  1296,  1297,  1302,  1309,  1311,  1315,  1318,  1321,
+    1324,  1325,  1329,  1330,  1332,  1335,  1337,  1339,  1343,  1345,
+    1348,  1350,  1352,  1355,  1358,  1361,  1365,  1368,  1370,  1371,
+    1373,  1376,  1379,  1380,  1383,  1387,  1391,  1395,  1399,  1401,
+    1405,  1407,  1409,  1413,  1415,  1417,  1419,  1423,  1426,  1431,
+    1436,  1439,  1442,  1444,  1446,  1448,  1450,  1452,  1454,  1456,
+    1458,  1460,  1464,  1466,  1468,  1472,  1476,  1480,  1484,  1487,
+    1491,  1494,  1497,  1500,  1503,  1507,  1509,  1511,  1513,  1515,
+    1519,  1520,  1522,  1525,  1530,  1533,  1536,  1542,  1543,  1545,
+    1548,  1550,  1552,  1554,  1558,  1562,  1566,  1570,  1574,  1578,
+    1580,  1582,  1584,  1588,  1594,  1600,  1606,  1612,  1620,  1622,
+    1631,  1634,  1636,  1638,  1642,  1644,  1646,  1648,  1653,  1655,
+    1659,  1660,  1665,  1667,  1671,  1675
 };
 
@@ -848,138 +848,139 @@
       -1,    -1,   144,   201,    -1,    -1,   177,    -1,    -1,    -1,
       72,    -1,    -1,   202,    33,   204,   208,    -1,    34,   204,
-      -1,    35,   204,   208,    30,   209,    -1,    35,   204,   208,
-      -1,    95,   169,    -1,   169,    -1,    -1,    32,    -1,   158,
-      -1,    -1,   179,   180,    -1,   179,   210,   180,    -1,    -1,
-     179,   180,    -1,   179,   210,   180,    -1,   211,    -1,   210,
-       3,   211,    -1,   169,    -1,    23,    -1,   257,   222,    -1,
-     145,   213,   221,   324,    -1,   147,   324,    -1,   117,   216,
-      -1,   224,   179,   249,   180,    -1,   224,   249,    -1,   243,
-      -1,   228,    -1,   253,    -1,   239,    -1,   241,    -1,   240,
-      -1,   308,    -1,   251,    -1,   237,    -1,   234,    -1,    68,
-     179,   280,   180,    -1,   111,   221,   242,    -1,   113,   221,
-     215,    -1,    67,   217,    -1,   225,   226,   187,    -1,    -1,
-     275,    -1,    46,    -1,    40,    -1,    44,    -1,    56,    -1,
-      79,    -1,    45,    -1,    47,    -1,    62,    -1,    57,    -1,
-      58,    -1,    59,    -1,    60,    -1,    61,    -1,    64,    -1,
-      65,    -1,    66,    -1,    69,    -1,    70,    -1,    71,    -1,
-      74,    -1,    75,    -1,    76,    -1,    77,    -1,   169,    -1,
-     214,    -1,   215,     3,   214,    -1,   179,   220,   180,    -1,
-     216,     3,   179,   220,   180,    -1,   218,    -1,   217,     3,
-     218,    -1,   179,   219,   180,    -1,   298,   276,    -1,   219,
-       3,   298,   276,    -1,   280,    -1,   220,     3,   280,    -1,
-      -1,     4,     4,    -1,   255,   256,    -1,   223,   204,   208,
-      -1,    35,    -1,    29,    -1,   160,    -1,   169,    24,   227,
-      24,    -1,   226,   248,   169,    24,   227,    24,    -1,   231,
-      24,   227,    24,    -1,   232,    -1,   232,     3,   227,    -1,
-     229,   230,    -1,   229,   247,   230,    -1,   228,   248,   247,
-     248,   230,    -1,   228,     3,   230,    -1,   119,    -1,    -1,
-     169,   276,    -1,   169,    -1,   169,   179,   280,   180,    -1,
-     231,     3,   231,    -1,   233,   299,    -1,   232,    21,   232,
-      -1,   232,    22,   232,    -1,   232,    23,   232,    -1,   232,
-     188,   232,    -1,    -1,   284,    -1,   235,   236,    -1,   114,
-     298,    -1,   114,   247,   298,    -1,   235,   248,   247,   248,
-     298,    -1,   235,     3,   298,    -1,    -1,   129,   324,    -1,
-     130,   324,    -1,   109,    -1,   238,   248,   169,   276,   264,
-      -1,   239,     3,   169,   276,   264,    -1,    81,   187,    -1,
-      81,   221,   242,    -1,    80,   187,    -1,    80,   221,   242,
-      -1,   169,    -1,   242,     3,   169,    -1,   244,   245,    -1,
-     244,   247,   245,    -1,   243,   248,   247,   248,   245,    -1,
-     127,    -1,   128,   127,    -1,   246,    -1,   245,     3,   246,
-      -1,   169,   276,    -1,    20,    -1,    24,   169,    24,    -1,
-      -1,     3,    -1,   250,    -1,   249,     3,   250,    -1,   169,
-       5,   280,    -1,   134,   252,    -1,   169,    -1,   252,     3,
-     169,    -1,   122,   123,    -1,   122,   137,    -1,    -1,   271,
-     254,   169,   276,   264,   305,    -1,   255,     3,   254,   169,
-     276,   264,   305,    -1,    -1,   262,   266,    -1,   261,   259,
-      -1,   263,    23,   176,    -1,   258,   268,   180,    -1,   146,
-      -1,    -1,    23,   176,    -1,    23,   179,   260,   180,    -1,
-     179,   260,   180,    -1,   169,   269,   270,    -1,   169,     5,
-     269,   270,    -1,   269,   270,    -1,   157,    -1,   263,    -1,
-     149,    -1,   148,    -1,   167,    -1,   151,    -1,   168,    -1,
-     150,    -1,    -1,    23,   265,    -1,   280,    -1,   179,    23,
-     180,    -1,    -1,    23,   267,    -1,   179,   268,   180,    -1,
-     280,    -1,   179,    23,   180,    -1,   169,   269,    -1,   169,
-       5,   269,    -1,   169,    -1,   176,    -1,   280,    -1,    23,
-      -1,    -1,     3,   169,   269,    -1,    -1,     4,     4,    -1,
-       3,   272,     4,     4,    -1,   273,    -1,   272,     3,   273,
-      -1,    29,    -1,   275,    -1,    82,    -1,   109,   276,    -1,
-     111,    -1,   112,   179,   274,   180,    -1,   113,    -1,   116,
-      -1,   117,    -1,   119,    -1,   120,    -1,   140,    -1,   138,
-      -1,   139,    -1,    80,    -1,    81,    -1,    -1,   179,   277,
-     180,    -1,   278,    -1,   277,     3,   278,    -1,   279,    -1,
-       4,    -1,   280,     4,    -1,     4,   280,    -1,   280,     4,
-     279,    -1,    23,    -1,   280,    -1,   283,    -1,   179,   280,
-     180,    -1,   307,    -1,   281,    -1,    46,   282,   180,    -1,
-      39,   282,   180,    -1,    40,   179,   282,   180,    -1,    44,
-     179,   282,   180,    -1,    56,   282,   180,    -1,    79,   179,
-     282,   180,    -1,    45,   179,   280,   180,    -1,    47,   280,
-     180,    -1,   148,   179,   282,   180,    -1,    62,   179,   280,
-     180,    -1,    57,   179,   280,   180,    -1,    58,   179,   280,
-     180,    -1,    59,   179,   280,   180,    -1,    60,   179,   280,
-     180,    -1,    61,   179,   280,   180,    -1,    64,   179,   280,
-     180,    -1,    65,   179,   280,   180,    -1,    66,   179,   280,
-     180,    -1,    69,   179,   280,   180,    -1,    70,   179,   280,
-     180,    -1,    71,   179,   280,   180,    -1,    73,   280,   180,
-      -1,    74,   179,   282,   180,    -1,    75,   179,   282,   180,
-      -1,    76,   179,   282,   180,    -1,    77,   179,   282,   180,
-      -1,   280,    -1,   282,     3,   280,    -1,   288,    -1,   299,
-      -1,   293,    -1,   280,   285,    -1,   284,   280,    -1,    12,
-     280,    -1,    21,    -1,    22,    -1,    21,   280,    -1,    22,
-     280,    -1,    23,   280,    -1,    25,   280,    -1,    14,   280,
-      -1,     8,   280,    -1,    17,   280,    -1,   186,   280,    -1,
-      18,   280,    -1,   185,   280,    -1,    15,   280,    -1,   186,
-       5,   280,    -1,    16,   280,    -1,   185,     5,   280,    -1,
-      13,   280,    -1,     7,   280,    -1,     9,   280,    -1,    10,
-     280,    -1,    11,   280,    -1,    24,   286,    -1,     5,   287,
-      -1,    -1,   280,    -1,     5,   280,    -1,    24,   280,    -1,
-       5,   280,    -1,   280,    -1,   298,    -1,   292,    -1,   290,
-      -1,    -1,   291,    -1,   291,   302,    -1,   292,   179,   294,
-     180,    -1,   292,   179,   294,   180,   302,    -1,   298,   179,
-     294,   180,    -1,   288,   189,   288,    -1,   131,   360,   132,
-      -1,   289,    -1,   289,   295,    -1,   296,    -1,   295,     3,
-     296,    -1,   280,    -1,   297,    -1,   280,     4,   280,    -1,
-     280,     4,   280,     4,   280,    -1,     4,   280,     4,   280,
-      -1,     4,     4,   280,    -1,     4,   280,    -1,   280,     4,
-      -1,     4,    -1,   169,    -1,   142,    -1,   143,    -1,   176,
-      -1,   163,    -1,   164,    -1,   165,    -1,   299,   169,    -1,
-     300,   301,    -1,   158,    -1,   300,   158,    -1,   162,    -1,
-     159,    -1,    -1,   302,    -1,   179,   303,     4,   303,   180,
-      -1,    -1,   280,    -1,   187,    -1,   280,    -1,    -1,   306,
-       5,   280,    -1,    -1,   179,   283,     3,   283,   180,    -1,
-     309,   310,    -1,   309,   310,     3,   311,    -1,   309,   310,
-       3,    31,     4,   187,    -1,   309,   310,     3,    31,     4,
-     313,    -1,   141,    -1,   169,    -1,   312,    -1,   311,     3,
-     312,    -1,   169,   126,   169,    -1,   314,    -1,   313,     3,
-     314,    -1,   169,   126,   169,    -1,   169,    -1,   328,    -1,
+      -1,   202,    35,   204,   208,    30,   209,    -1,   202,    35,
+     204,   208,    -1,    95,   169,    -1,   169,    -1,    -1,    32,
+      -1,   158,    -1,    -1,   179,   180,    -1,   179,   210,   180,
+      -1,    -1,   179,   180,    -1,   179,   210,   180,    -1,   211,
+      -1,   210,     3,   211,    -1,   169,    -1,    23,    -1,   257,
+     222,    -1,   145,   213,   221,   324,    -1,   147,   324,    -1,
+     117,   216,    -1,   224,   179,   249,   180,    -1,   224,   249,
+      -1,   243,    -1,   228,    -1,   253,    -1,   239,    -1,   241,
+      -1,   240,    -1,   308,    -1,   251,    -1,   237,    -1,   234,
+      -1,    68,   179,   280,   180,    -1,   111,   221,   242,    -1,
+     113,   221,   215,    -1,    67,   217,    -1,   225,   226,   187,
+      -1,    -1,   275,    -1,    46,    -1,    40,    -1,    44,    -1,
+      56,    -1,    79,    -1,    45,    -1,    47,    -1,    62,    -1,
+      57,    -1,    58,    -1,    59,    -1,    60,    -1,    61,    -1,
+      64,    -1,    65,    -1,    66,    -1,    69,    -1,    70,    -1,
+      71,    -1,    74,    -1,    75,    -1,    76,    -1,    77,    -1,
+     169,    -1,   214,    -1,   215,     3,   214,    -1,   179,   220,
+     180,    -1,   216,     3,   179,   220,   180,    -1,   218,    -1,
+     217,     3,   218,    -1,   179,   219,   180,    -1,   298,   276,
+      -1,   219,     3,   298,   276,    -1,   280,    -1,   220,     3,
+     280,    -1,    -1,     4,     4,    -1,   255,   256,    -1,   223,
+     204,   208,    -1,    35,    -1,    29,    -1,   160,    -1,   169,
+      24,   227,    24,    -1,   226,   248,   169,    24,   227,    24,
+      -1,   231,    24,   227,    24,    -1,   232,    -1,   232,     3,
+     227,    -1,   229,   230,    -1,   229,   247,   230,    -1,   228,
+     248,   247,   248,   230,    -1,   228,     3,   230,    -1,   119,
+      -1,    -1,   169,   276,    -1,   169,    -1,   169,   179,   280,
+     180,    -1,   231,     3,   231,    -1,   233,   299,    -1,   232,
+      21,   232,    -1,   232,    22,   232,    -1,   232,    23,   232,
+      -1,   232,   188,   232,    -1,    -1,   284,    -1,   235,   236,
+      -1,   114,   298,    -1,   114,   247,   298,    -1,   235,   248,
+     247,   248,   298,    -1,   235,     3,   298,    -1,    -1,   129,
+     324,    -1,   130,   324,    -1,   109,    -1,   238,   248,   169,
+     276,   264,    -1,   239,     3,   169,   276,   264,    -1,    81,
+     187,    -1,    81,   221,   242,    -1,    80,   187,    -1,    80,
+     221,   242,    -1,   169,    -1,   242,     3,   169,    -1,   244,
+     245,    -1,   244,   247,   245,    -1,   243,   248,   247,   248,
+     245,    -1,   127,    -1,   128,   127,    -1,   246,    -1,   245,
+       3,   246,    -1,   169,   276,    -1,    20,    -1,    24,   169,
+      24,    -1,    -1,     3,    -1,   250,    -1,   249,     3,   250,
+      -1,   169,     5,   280,    -1,   134,   252,    -1,   169,    -1,
+     252,     3,   169,    -1,   122,   123,    -1,   122,   137,    -1,
+      -1,   271,   254,   169,   276,   264,   305,    -1,   255,     3,
+     254,   169,   276,   264,   305,    -1,    -1,   262,   266,    -1,
+     261,   259,    -1,   263,    23,   176,    -1,   258,   268,   180,
+      -1,   146,    -1,    -1,    23,   176,    -1,    23,   179,   260,
+     180,    -1,   179,   260,   180,    -1,   169,   269,   270,    -1,
+     169,     5,   269,   270,    -1,   269,   270,    -1,   157,    -1,
+     263,    -1,   149,    -1,   148,    -1,   167,    -1,   151,    -1,
+     168,    -1,   150,    -1,    -1,    23,   265,    -1,   280,    -1,
+     179,    23,   180,    -1,    -1,    23,   267,    -1,   179,   268,
+     180,    -1,   280,    -1,   179,    23,   180,    -1,   169,   269,
+      -1,   169,     5,   269,    -1,   169,    -1,   176,    -1,   280,
+      -1,    23,    -1,    -1,     3,   169,   269,    -1,    -1,     4,
+       4,    -1,     3,   272,     4,     4,    -1,   273,    -1,   272,
+       3,   273,    -1,    29,    -1,   275,    -1,    82,    -1,   109,
+     276,    -1,   111,    -1,   112,   179,   274,   180,    -1,   113,
+      -1,   116,    -1,   117,    -1,   119,    -1,   120,    -1,   140,
+      -1,   138,    -1,   139,    -1,    80,    -1,    81,    -1,    -1,
+     179,   277,   180,    -1,   278,    -1,   277,     3,   278,    -1,
+     279,    -1,     4,    -1,   280,     4,    -1,     4,   280,    -1,
+     280,     4,   279,    -1,    23,    -1,   280,    -1,   283,    -1,
+     179,   280,   180,    -1,   307,    -1,   281,    -1,    46,   282,
+     180,    -1,    39,   282,   180,    -1,    40,   179,   282,   180,
+      -1,    44,   179,   282,   180,    -1,    56,   282,   180,    -1,
+      79,   179,   282,   180,    -1,    45,   179,   280,   180,    -1,
+      47,   280,   180,    -1,   148,   179,   282,   180,    -1,    62,
+     179,   280,   180,    -1,    57,   179,   280,   180,    -1,    58,
+     179,   280,   180,    -1,    59,   179,   280,   180,    -1,    60,
+     179,   280,   180,    -1,    61,   179,   280,   180,    -1,    64,
+     179,   280,   180,    -1,    65,   179,   280,   180,    -1,    66,
+     179,   280,   180,    -1,    69,   179,   280,   180,    -1,    70,
+     179,   280,   180,    -1,    71,   179,   280,   180,    -1,    73,
+     280,   180,    -1,    74,   179,   282,   180,    -1,    75,   179,
+     282,   180,    -1,    76,   179,   282,   180,    -1,    77,   179,
+     282,   180,    -1,   280,    -1,   282,     3,   280,    -1,   288,
+      -1,   299,    -1,   293,    -1,   280,   285,    -1,   284,   280,
+      -1,    12,   280,    -1,    21,    -1,    22,    -1,    21,   280,
+      -1,    22,   280,    -1,    23,   280,    -1,    25,   280,    -1,
+      14,   280,    -1,     8,   280,    -1,    17,   280,    -1,   186,
+     280,    -1,    18,   280,    -1,   185,   280,    -1,    15,   280,
+      -1,   186,     5,   280,    -1,    16,   280,    -1,   185,     5,
+     280,    -1,    13,   280,    -1,     7,   280,    -1,     9,   280,
+      -1,    10,   280,    -1,    11,   280,    -1,    24,   286,    -1,
+       5,   287,    -1,    -1,   280,    -1,     5,   280,    -1,    24,
+     280,    -1,     5,   280,    -1,   280,    -1,   298,    -1,   292,
+      -1,   290,    -1,    -1,   291,    -1,   291,   302,    -1,   292,
+     179,   294,   180,    -1,   292,   179,   294,   180,   302,    -1,
+     298,   179,   294,   180,    -1,   288,   189,   288,    -1,   131,
+     360,   132,    -1,   289,    -1,   289,   295,    -1,   296,    -1,
+     295,     3,   296,    -1,   280,    -1,   297,    -1,   280,     4,
+     280,    -1,   280,     4,   280,     4,   280,    -1,     4,   280,
+       4,   280,    -1,     4,     4,   280,    -1,     4,   280,    -1,
+     280,     4,    -1,     4,    -1,   169,    -1,   142,    -1,   143,
+      -1,   176,    -1,   163,    -1,   164,    -1,   165,    -1,   299,
+     169,    -1,   300,   301,    -1,   158,    -1,   300,   158,    -1,
+     162,    -1,   159,    -1,    -1,   302,    -1,   179,   303,     4,
+     303,   180,    -1,    -1,   280,    -1,   187,    -1,   280,    -1,
+      -1,   306,     5,   280,    -1,   306,   126,   280,    -1,    -1,
+     179,   283,     3,   283,   180,    -1,   309,   310,    -1,   309,
+     310,     3,   311,    -1,   309,   310,     3,    31,     4,   187,
+      -1,   309,   310,     3,    31,     4,   313,    -1,   141,    -1,
+     169,    -1,   312,    -1,   311,     3,   312,    -1,   169,   126,
+     169,    -1,   314,    -1,   313,     3,   314,    -1,   169,   126,
+     169,    -1,   169,    -1,   328,    -1,    98,   179,   366,   370,
+     180,    -1,   105,   179,   369,   370,   180,    -1,   106,   179,
+     371,   180,    -1,   317,    -1,   318,   324,    -1,   316,   324,
+      -1,   319,   324,    -1,    96,   324,    -1,   321,    -1,   372,
+     328,    -1,    41,   179,   280,   180,   304,    -1,    42,    -1,
+      43,    -1,   372,    84,    -1,    85,   179,   280,   180,    84,
+      -1,    86,    -1,    87,   324,    -1,    48,   320,   180,    -1,
+      49,   179,   280,   180,    -1,   115,    -1,   110,    -1,    93,
+      -1,   153,    -1,   156,    -1,   155,    -1,   154,    -1,   280,
+      -1,   320,     3,   280,    -1,   320,     4,   280,    -1,   326,
+     323,   322,    -1,   327,   280,    -1,    94,   325,    -1,    -1,
+     373,     5,   280,     3,   280,    -1,   373,     5,   280,     3,
+     280,     3,   280,    -1,    -1,   176,   248,    -1,   187,    -1,
+     169,    -1,    -1,   169,    -1,    92,    -1,    97,    -1,   118,
+      -1,   330,   332,    -1,   365,    -1,   341,    -1,   333,    -1,
       98,   179,   366,   370,   180,    -1,   105,   179,   369,   370,
-     180,    -1,   106,   179,   371,   180,    -1,   317,    -1,   318,
-     324,    -1,   316,   324,    -1,   319,   324,    -1,    96,   324,
-      -1,   321,    -1,   372,   328,    -1,    41,   179,   280,   180,
-     304,    -1,    42,    -1,    43,    -1,   372,    84,    -1,    85,
-     179,   280,   180,    84,    -1,    86,    -1,    87,   324,    -1,
-      48,   320,   180,    -1,    49,   179,   280,   180,    -1,   115,
-      -1,   110,    -1,    93,    -1,   153,    -1,   156,    -1,   155,
-      -1,   154,    -1,   280,    -1,   320,     3,   280,    -1,   320,
-       4,   280,    -1,   326,   323,   322,    -1,   327,   280,    -1,
-      94,   325,    -1,    -1,   373,     5,   280,     3,   280,    -1,
-     373,     5,   280,     3,   280,     3,   280,    -1,    -1,   176,
-     248,    -1,   187,    -1,   169,    -1,    -1,   169,    -1,    92,
-      -1,    97,    -1,   118,    -1,   330,   332,    -1,   365,    -1,
-     341,    -1,   333,    -1,    98,   179,   366,   370,   180,    -1,
-     105,   179,   369,   370,   180,    -1,    78,   303,    -1,    83,
-     304,    -1,    63,   304,    -1,   340,   304,    -1,   331,    -1,
-      -1,   298,   329,   276,   276,    -1,   330,   189,   298,   329,
-     276,   276,    -1,   176,    -1,   331,     3,   176,    -1,     5,
-     280,    -1,   126,   280,    -1,   336,   334,    -1,    -1,   179,
-     335,   180,    -1,    -1,   338,    -1,   337,   169,    -1,   124,
-      -1,   339,    -1,   338,     3,   339,    -1,   280,    -1,    23,
-     364,    -1,   133,    -1,   135,    -1,   349,   345,    -1,   351,
-     343,    -1,   352,   345,    -1,   352,   345,   360,    -1,   104,
-     346,    -1,    38,    -1,    -1,   356,    -1,   345,   342,    -1,
-     350,   344,    -1,    -1,     3,   356,    -1,   179,   347,   180,
-      -1,   179,   353,   180,    -1,   179,   298,   180,    -1,   179,
-     176,   180,    -1,   176,    -1,   179,   283,   180,    -1,   169,
-      -1,   348,    -1,   347,     3,   348,    -1,   353,    -1,    23,
-      -1,    25,    -1,   298,   280,    -1,   298,   280,   189,   330,
+     180,    -1,    78,   303,    -1,    83,   304,    -1,    63,   304,
+      -1,   340,   304,    -1,   331,    -1,    -1,   298,   329,   276,
+     276,    -1,   330,   189,   298,   329,   276,   276,    -1,   176,
+      -1,   331,     3,   176,    -1,     5,   280,    -1,   126,   280,
+      -1,   336,   334,    -1,    -1,   179,   335,   180,    -1,    -1,
+     338,    -1,   337,   169,    -1,   124,    -1,   339,    -1,   338,
+       3,   339,    -1,   280,    -1,    23,   364,    -1,   133,    -1,
+     135,    -1,   349,   345,    -1,   351,   343,    -1,   352,   345,
+      -1,   352,   345,   360,    -1,   104,   346,    -1,    38,    -1,
+      -1,   356,    -1,   345,   342,    -1,   350,   344,    -1,    -1,
+       3,   356,    -1,   179,   347,   180,    -1,   179,   353,   180,
+      -1,   179,   298,   180,    -1,   179,   176,   180,    -1,   176,
+      -1,   179,   283,   180,    -1,   169,    -1,   348,    -1,   347,
+       3,   348,    -1,   353,    -1,    23,    -1,    25,    -1,   298,
+     280,   276,    -1,   298,   280,    -1,   298,   280,   189,   330,
       -1,   298,   179,   297,   180,    -1,   298,    23,    -1,   298,
       25,    -1,    99,    -1,   100,    -1,   354,    -1,    23,    -1,
@@ -989,22 +990,22 @@
      353,    25,   353,    -1,   355,   353,    -1,   353,    20,   353,
       -1,    50,   280,    -1,    55,   280,    -1,    52,   280,    -1,
-      51,   280,    -1,   169,     5,   280,    -1,    21,    -1,    22,
-      -1,   358,    -1,   356,     3,   358,    -1,    -1,   288,    -1,
-     357,   359,    -1,   179,   356,   180,   359,    -1,   281,   359,
-      -1,   299,   359,    -1,   179,   356,     3,   363,   180,    -1,
-      -1,   285,    -1,   359,   285,    -1,   283,    -1,   362,    -1,
-     361,    -1,   283,     3,   280,    -1,   283,     3,   362,    -1,
-     362,     3,   280,    -1,   362,     3,   362,    -1,   361,     3,
-     280,    -1,   361,     3,   362,    -1,   283,    -1,   281,    -1,
-     307,    -1,   179,   280,   180,    -1,   179,   283,     3,   363,
-     180,    -1,   179,   362,     3,   363,   180,    -1,   179,   361,
-       3,   363,   180,    -1,   169,     5,   280,     3,   280,    -1,
-     169,     5,   280,     3,   280,     3,   280,    -1,   176,    -1,
-      89,   179,   280,     3,   280,   180,     3,   280,    -1,    89,
-     364,    -1,   367,    -1,   330,    -1,   366,     3,   367,    -1,
-     298,    -1,   292,    -1,   368,    -1,   298,   179,   295,   180,
-      -1,   367,    -1,   369,     3,   367,    -1,    -1,     3,   125,
-       5,   298,    -1,   298,    -1,   371,     3,   298,    -1,    91,
-     280,   180,    -1,   298,    -1
+      51,   280,    -1,   169,     5,   280,    -1,   281,    -1,    21,
+      -1,    22,    -1,   358,    -1,   356,     3,   358,    -1,    -1,
+     288,    -1,   357,   359,    -1,   179,   356,   180,   359,    -1,
+     281,   359,    -1,   299,   359,    -1,   179,   356,     3,   363,
+     180,    -1,    -1,   285,    -1,   359,   285,    -1,   283,    -1,
+     362,    -1,   361,    -1,   283,     3,   280,    -1,   283,     3,
+     362,    -1,   362,     3,   280,    -1,   362,     3,   362,    -1,
+     361,     3,   280,    -1,   361,     3,   362,    -1,   283,    -1,
+     281,    -1,   307,    -1,   179,   280,   180,    -1,   179,   283,
+       3,   363,   180,    -1,   179,   362,     3,   363,   180,    -1,
+     179,   361,     3,   363,   180,    -1,   169,     5,   280,     3,
+     280,    -1,   169,     5,   280,     3,   280,     3,   280,    -1,
+     176,    -1,    89,   179,   280,     3,   280,   180,     3,   280,
+      -1,    89,   364,    -1,   367,    -1,   330,    -1,   366,     3,
+     367,    -1,   298,    -1,   292,    -1,   368,    -1,   298,   179,
+     295,   180,    -1,   367,    -1,   369,     3,   367,    -1,    -1,
+       3,   125,     5,   298,    -1,   298,    -1,   371,     3,   298,
+      -1,    91,   280,   180,    -1,   298,    -1
 };
 
@@ -1023,49 +1024,49 @@
      758,   759,   760,   761,   762,   763,   764,   766,   767,   769,
      770,   772,   773,   775,   777,   778,   780,   781,   783,   784,
-     786,   869,   906,   912,   917,   922,   936,   950,   965,   972,
-     981,   982,   983,   984,   986,   991,   992,   997,  1001,  1006,
-    1011,  1013,  1015,  1017,  1019,  1023,  1024,  1027,  1029,  1030,
-    1031,  1032,  1034,  1036,  1041,  1046,  1052,  1068,  1085,  1086,
-    1088,  1092,  1097,  1101,  1106,  1112,  1123,  1135,  1140,  1146,
-    1151,  1155,  1165,  1174,  1184,  1185,  1187,  1191,  1196,  1219,
-    1221,  1222,  1224,  1234,  1236,  1238,  1270,  1305,  1307,  1309,
-    1313,  1318,  1323,  1331,  1332,  1334,  1335,  1337,  1338,  1339,
-    1341,  1346,  1348,  1353,  1357,  1360,  1366,  1368,  1374,  1375,
-    1377,  1378,  1380,  1381,  1382,  1384,  1385,  1387,  1388,  1397,
-    1401,  1406,  1408,  1411,  1412,  1414,  1415,  1416,  1418,  1419,
-    1421,  1425,  1426,  1428,  1433,  1435,  1437,  1438,  1439,  1440,
-    1446,  1449,  1450,  1451,  1453,  1455,  1458,  1463,  1467,  1469,
-    1473,  1478,  1482,  1487,  1492,  1500,  1501,  1503,  1504,  1506,
-    1508,  1512,  1514,  1516,  1518,  1520,  1522,  1524,  1526,  1528,
-    1530,  1532,  1534,  1536,  1538,  1540,  1542,  1544,  1546,  1548,
-    1550,  1552,  1554,  1556,  1558,  1560,  1562,  1565,  1566,  1570,
-    1571,  1573,  1575,  1577,  1579,  1582,  1583,  1585,  1587,  1589,
-    1591,  1593,  1595,  1597,  1599,  1601,  1603,  1605,  1607,  1609,
-    1611,  1613,  1615,  1617,  1619,  1621,  1623,  1625,  1628,  1629,
-    1631,  1633,  1636,  1638,  1642,  1647,  1652,  1658,  1670,  1675,
-    1677,  1680,  1684,  1694,  1700,  1703,  1704,  1707,  1708,  1711,
-    1712,  1714,  1716,  1719,  1721,  1722,  1723,  1724,  1726,  1784,
-    1786,  1787,  1788,  1789,  1790,  1791,  1793,  1795,  1797,  1798,
-    1800,  1803,  1804,  1806,  1809,  1810,  1812,  1813,  1815,  1816,
-    1825,  1827,  1830,  1850,  1884,  1904,  1955,  1963,  1966,  1970,
-    1980,  1991,  1995,  2005,  2017,  2026,  2027,  2033,  2039,  2040,
-    2090,  2108,  2128,  2147,  2180,  2181,  2182,  2183,  2184,  2185,
-    2186,  2187,  2188,  2189,  2190,  2191,  2192,  2193,  2230,  2240,
-    2249,  2258,  2267,  2268,  2269,  2271,  2272,  2273,  2275,  2276,
-    2277,  2278,  2279,  2281,  2282,  2284,  2285,  2287,  2289,  2296,
-    2297,  2298,  2299,  2300,  2301,  2307,  2313,  2314,  2315,  2316,
-    2317,  2319,  2320,  2330,  2332,  2333,  2335,  2336,  2338,  2366,
-    2367,  2369,  2370,  2372,  2402,  2404,  2405,  2408,  2422,  2425,
-    2426,  2429,  2430,  2431,  2432,  2433,  2434,  2446,  2447,  2449,
-    2450,  2455,  2456,  2458,  2459,  2461,  2462,  2463,  2464,  2465,
-    2467,  2468,  2470,  2471,  2472,  2473,  2474,  2475,  2476,  2477,
-    2479,  2480,  2482,  2483,  2486,  2487,  2488,  2491,  2494,  2495,
-    2497,  2498,  2499,  2500,  2501,  2502,  2503,  2504,  2505,  2506,
-    2507,  2508,  2509,  2511,  2512,  2514,  2515,  2517,  2518,  2520,
-    2521,  2522,  2523,  2524,  2526,  2527,  2528,  2530,  2531,  2532,
-    2534,  2536,  2538,  2540,  2542,  2544,  2546,  2547,  2549,  2551,
-    2553,  2555,  2557,  2561,  2564,  2571,  2573,  2574,  2576,  2577,
-    2578,  2580,  2582,  2583,  2585,  2592,  2593,  2595,  2596,  2598,
-    2599,  2607,  2609
+     786,   870,   907,   913,   918,   923,   937,   951,   966,   973,
+     982,   983,   984,   985,   987,   992,   993,   998,  1002,  1007,
+    1012,  1014,  1016,  1018,  1020,  1024,  1025,  1028,  1030,  1031,
+    1032,  1033,  1035,  1037,  1042,  1047,  1053,  1069,  1086,  1087,
+    1089,  1093,  1098,  1102,  1107,  1113,  1124,  1136,  1141,  1147,
+    1152,  1156,  1166,  1175,  1185,  1186,  1188,  1192,  1197,  1220,
+    1222,  1223,  1225,  1235,  1237,  1239,  1272,  1307,  1309,  1311,
+    1315,  1320,  1326,  1334,  1335,  1337,  1338,  1340,  1341,  1342,
+    1344,  1349,  1351,  1356,  1360,  1363,  1369,  1371,  1377,  1378,
+    1380,  1381,  1383,  1384,  1385,  1387,  1388,  1390,  1391,  1400,
+    1404,  1409,  1411,  1414,  1415,  1417,  1418,  1419,  1421,  1422,
+    1424,  1428,  1429,  1431,  1436,  1438,  1440,  1441,  1442,  1443,
+    1449,  1452,  1453,  1454,  1456,  1458,  1461,  1466,  1470,  1472,
+    1476,  1481,  1485,  1490,  1495,  1503,  1504,  1506,  1507,  1509,
+    1511,  1515,  1517,  1519,  1521,  1523,  1525,  1527,  1529,  1531,
+    1533,  1535,  1537,  1539,  1541,  1543,  1545,  1547,  1549,  1551,
+    1553,  1555,  1557,  1559,  1561,  1563,  1565,  1568,  1569,  1573,
+    1574,  1576,  1578,  1580,  1582,  1585,  1586,  1588,  1590,  1592,
+    1594,  1596,  1598,  1600,  1602,  1604,  1606,  1608,  1610,  1612,
+    1614,  1616,  1618,  1620,  1622,  1624,  1626,  1628,  1631,  1632,
+    1634,  1636,  1639,  1641,  1645,  1650,  1655,  1661,  1673,  1678,
+    1680,  1683,  1687,  1697,  1703,  1706,  1707,  1710,  1711,  1714,
+    1715,  1717,  1719,  1722,  1724,  1725,  1726,  1727,  1729,  1787,
+    1789,  1790,  1791,  1792,  1793,  1794,  1796,  1798,  1800,  1801,
+    1803,  1806,  1807,  1809,  1812,  1813,  1815,  1816,  1818,  1819,
+    1827,  1836,  1838,  1841,  1861,  1895,  1915,  1966,  1974,  1977,
+    1981,  1991,  2002,  2006,  2016,  2028,  2037,  2038,  2044,  2050,
+    2051,  2101,  2119,  2139,  2158,  2203,  2204,  2205,  2206,  2207,
+    2208,  2209,  2210,  2211,  2212,  2213,  2214,  2215,  2216,  2260,
+    2270,  2279,  2288,  2297,  2298,  2299,  2301,  2302,  2303,  2305,
+    2306,  2307,  2308,  2309,  2311,  2312,  2314,  2315,  2317,  2319,
+    2326,  2327,  2328,  2329,  2330,  2331,  2337,  2343,  2344,  2345,
+    2346,  2347,  2349,  2350,  2360,  2362,  2363,  2365,  2366,  2368,
+    2396,  2397,  2399,  2400,  2402,  2432,  2434,  2435,  2438,  2452,
+    2455,  2456,  2459,  2460,  2461,  2462,  2463,  2464,  2476,  2477,
+    2479,  2480,  2485,  2486,  2488,  2489,  2491,  2492,  2493,  2494,
+    2495,  2497,  2498,  2500,  2501,  2502,  2503,  2504,  2505,  2506,
+    2507,  2508,  2510,  2511,  2513,  2514,  2517,  2518,  2519,  2522,
+    2525,  2526,  2528,  2529,  2530,  2531,  2532,  2533,  2534,  2535,
+    2536,  2537,  2538,  2539,  2540,  2541,  2543,  2544,  2546,  2547,
+    2549,  2550,  2552,  2553,  2554,  2555,  2556,  2558,  2559,  2560,
+    2562,  2563,  2564,  2566,  2568,  2570,  2572,  2574,  2576,  2578,
+    2579,  2581,  2583,  2585,  2587,  2589,  2593,  2596,  2603,  2605,
+    2606,  2608,  2609,  2610,  2612,  2614,  2615,  2617,  2624,  2625,
+    2627,  2628,  2630,  2631,  2639,  2641
 };
 #endif
@@ -1221,24 +1222,24 @@
      299,   299,   299,   299,   299,   299,   299,   300,   300,   300,
      300,   301,   301,   302,   303,   303,   304,   304,   305,   305,
-     306,   307,   308,   308,   308,   308,   309,   310,   311,   311,
-     312,   313,   313,   314,   314,   315,   315,   315,   315,   315,
+     305,   306,   307,   308,   308,   308,   308,   309,   310,   311,
+     311,   312,   313,   313,   314,   314,   315,   315,   315,   315,
      315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
-     315,   315,   315,   315,   315,   315,   315,   315,   316,   317,
-     318,   319,   320,   320,   320,   321,   321,   321,   322,   322,
-     322,   323,   323,   324,   324,   325,   325,   326,   327,   328,
+     315,   315,   315,   315,   315,   315,   315,   315,   315,   316,
+     317,   318,   319,   320,   320,   320,   321,   321,   321,   322,
+     322,   322,   323,   323,   324,   324,   325,   325,   326,   327,
      328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
-     328,   329,   330,   330,   331,   331,   332,   332,   333,   334,
-     334,   335,   335,   336,   337,   338,   338,   339,   339,   340,
-     340,   341,   341,   341,   341,   341,   341,   342,   342,   343,
-     343,   344,   344,   345,   345,   346,   346,   346,   346,   346,
-     347,   347,   348,   348,   348,   348,   348,   348,   348,   348,
-     349,   349,   350,   350,   351,   351,   351,   352,   353,   353,
-     354,   354,   354,   354,   354,   354,   354,   354,   354,   354,
-     354,   354,   354,   355,   355,   356,   356,   357,   357,   358,
-     358,   358,   358,   358,   359,   359,   359,   360,   360,   360,
-     361,   361,   361,   361,   361,   361,   361,   361,   362,   362,
-     362,   362,   362,   363,   363,   364,   365,   365,   366,   366,
-     366,   367,   367,   367,   368,   369,   369,   370,   370,   371,
-     371,   372,   373
+     328,   328,   329,   330,   330,   331,   331,   332,   332,   333,
+     334,   334,   335,   335,   336,   337,   338,   338,   339,   339,
+     340,   340,   341,   341,   341,   341,   341,   341,   342,   342,
+     343,   343,   344,   344,   345,   345,   346,   346,   346,   346,
+     346,   347,   347,   348,   348,   348,   348,   348,   348,   348,
+     348,   348,   349,   349,   350,   350,   351,   351,   351,   352,
+     353,   353,   354,   354,   354,   354,   354,   354,   354,   354,
+     354,   354,   354,   354,   354,   354,   355,   355,   356,   356,
+     357,   357,   358,   358,   358,   358,   358,   359,   359,   359,
+     360,   360,   360,   361,   361,   361,   361,   361,   361,   361,
+     361,   362,   362,   362,   362,   362,   363,   363,   364,   365,
+     365,   366,   366,   366,   367,   367,   367,   368,   369,   369,
+     370,   370,   371,   371,   372,   373
 };
 
@@ -1249,10 +1250,10 @@
        3,     2,     2,     3,     3,     2,     2,     2,     1,     1,
        1,     1,     0,     0,     2,     0,     1,     0,     0,     1,
-       0,     4,     2,     5,     3,     2,     1,     0,     1,     1,
+       0,     4,     2,     6,     4,     2,     1,     0,     1,     1,
        0,     2,     3,     0,     2,     3,     1,     3,     1,     1,
        2,     4,     2,     2,     4,     2,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     4,     3,     3,     2,
        3,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
        5,     1,     3,     3,     2,     4,     1,     3,     0,     2,
@@ -1272,5 +1273,5 @@
        1,     1,     2,     2,     3,     1,     1,     1,     3,     1,
        1,     3,     3,     4,     4,     3,     4,     4,     3,     4,
-    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
        4,     4,     3,     4,     4,     4,     4,     1,     3,     1,
        1,     1,     2,     2,     2,     1,     1,     2,     2,     2,
@@ -1282,24 +1283,24 @@
        1,     1,     1,     1,     1,     2,     2,     1,     2,     1,
        1,     0,     1,     5,     0,     1,     1,     1,     0,     3,
-       0,     5,     2,     4,     6,     6,     1,     1,     1,     3,
-       3,     1,     3,     3,     1,     1,     5,     5,     4,     1,
-       2,     2,     2,     2,     1,     2,     5,     1,     1,     2,
-       5,     1,     2,     3,     4,     1,     1,     1,     1,     1,
-       1,     1,     1,     3,     3,     3,     2,     2,     0,     5,
-       7,     0,     2,     1,     1,     0,     1,     1,     1,     1,
-       2,     1,     1,     1,     5,     5,     2,     2,     2,     2,
-       1,     0,     4,     6,     1,     3,     2,     2,     2,     0,
-       3,     0,     1,     2,     1,     1,     3,     1,     2,     1,
-       1,     2,     2,     2,     3,     2,     1,     0,     1,     2,
-       2,     0,     2,     3,     3,     3,     3,     1,     3,     1,
-    1,    3,    1,    1,    1,    2,    4,    4,    2,    2,
-    1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
-    1,    1,    3,    3,    3,    3,    2,    3,    2,    2,
-    2,    2,    3,    1,    1,    1,    3,    0,    1,    2,
-    4,    2,    2,    5,    0,    1,    2,    1,    1,    1,
-    3,    3,    3,    3,    3,    3,    1,    1,    1,    3,
-       5,     5,     5,     5,     7,     1,     8,     2,     1,     1,
-       3,     1,     1,     1,     4,     1,     3,     0,     4,     1,
-       3,     3,     1
+       3,     0,     5,     2,     4,     6,     6,     1,     1,     1,
+       3,     3,     1,     3,     3,     1,     1,     5,     5,     4,
+       1,     2,     2,     2,     2,     1,     2,     5,     1,     1,
+       2,     5,     1,     2,     3,     4,     1,     1,     1,     1,
+       1,     1,     1,     1,     3,     3,     3,     2,     2,     0,
+       5,     7,     0,     2,     1,     1,     0,     1,     1,     1,
+       1,     2,     1,     1,     1,     5,     5,     2,     2,     2,
+       2,     1,     0,     4,     6,     1,     3,     2,     2,     2,
+       0,     3,     0,     1,     2,     1,     1,     3,     1,     2,
+       1,     1,     2,     2,     2,     3,     2,     1,     0,     1,
+       2,     2,     0,     2,     3,     3,     3,     3,     1,     3,
+       1,     1,     3,     1,     1,     1,     3,     2,     4,     4,
+       2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     3,     1,     1,     3,     3,     3,     3,     2,     3,
+       2,     2,     2,     2,     3,     1,     1,     1,     1,     3,
+       0,     1,     2,     4,     2,     2,     5,     0,     1,     2,
+       1,     1,     1,     3,     3,     3,     3,     3,     3,     1,
+       1,     1,     3,     5,     5,     5,     5,     7,     1,     8,
+       2,     1,     1,     3,     1,     1,     1,     4,     1,     3,
+       0,     4,     1,     3,     3,     1
 };
 
@@ -1311,100 +1312,101 @@
        2,     0,     1,    37,    20,    21,    18,    19,    27,     6,
       22,     3,    25,    30,    27,    24,     4,    26,    37,   113,
-      38,     0,     0,   456,     0,   387,   388,     0,     0,     0,
-       0,     0,    29,   354,   108,   108,     0,     0,   391,     0,
-     486,     0,     0,   417,   397,   415,     0,     0,   418,     0,
-     480,   481,   485,   487,   484,     0,     0,     0,   145,   396,
-     108,   108,     0,   395,     0,   419,   124,     0,   444,   157,
-       0,     0,     0,   449,     0,   450,   366,    71,   182,     0,
-     193,   192,   197,   195,   398,   401,   400,   399,   190,   114,
-     194,   196,   338,   434,     5,     9,    22,     0,    22,     0,
-      22,     0,     0,    57,   125,    65,   142,    64,   164,    59,
-      61,    60,    56,     0,    63,    58,   215,     0,   183,   202,
-     191,   431,    62,     0,    25,     0,   379,     0,     0,   384,
-     411,     0,   375,     0,   430,   423,   439,     0,     0,   422,
-       0,     0,     0,   421,     0,     8,     7,    36,    32,    40,
-       0,     0,   285,   286,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     339,   340,     0,   347,   350,   349,   342,   343,   344,   341,
-       0,   402,   250,   247,     0,   279,   316,   318,   315,   281,
-     314,   280,   351,   249,     0,     0,   356,   357,   428,     0,
-      69,   101,     0,   355,   426,     0,   150,     0,   148,     0,
-     427,     0,   414,   413,   392,   535,     0,   537,     0,   416,
-     407,    35,   383,     0,   469,   467,     0,   455,     0,     0,
-       0,     0,   162,     0,     0,   138,     0,    53,   172,   173,
-     158,   143,   144,   170,   169,   234,   235,   108,    72,    52,
-      30,    15,    25,     0,    11,    39,    22,    12,     0,     0,
-      55,   166,   127,   164,     0,   125,     0,   236,   120,   125,
-     165,   137,     0,   165,     0,     0,     0,   236,   154,   159,
-       0,     0,     0,   112,    50,     0,   177,   174,   209,   210,
-       0,     0,     0,   179,     0,     0,   178,     0,    16,   236,
-     367,   362,    37,   381,   380,   382,   164,   408,   406,     0,
-       0,     0,   420,     0,   441,   438,   443,   429,     0,   451,
-     503,   504,   483,     0,     0,     0,     0,   338,     0,   490,
-     491,   452,   457,   461,     0,   482,     0,   453,   389,     0,
-       0,   431,   385,     0,    34,     0,   284,   277,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,   527,   517,   249,     0,   519,
-     518,     0,     0,   247,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   308,
-       0,     0,     0,   282,   283,     0,   354,   319,   317,   317,
-     345,   348,   346,   352,     0,     0,   393,     0,     0,   236,
-       0,     0,   109,   152,   151,   149,     0,     0,   551,     0,
-     542,   431,   539,   547,   538,   543,   341,   247,   314,   541,
-     545,   547,   549,     0,    67,    74,    75,    78,    73,    79,
-      76,    81,    82,    83,    84,    85,    80,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    77,    96,    97,
-      68,     0,   139,     0,   106,     0,     0,     0,    10,    17,
-      40,    13,     0,     0,     0,   135,     0,    70,     0,     0,
-     135,   123,   164,     0,   126,   121,   141,   164,   236,   236,
-     164,   161,     0,   155,   220,   222,   236,   224,     0,   226,
-     227,   228,   229,   230,     0,   218,   221,   216,    40,   174,
-     110,     0,     0,   212,   207,   211,   181,   184,     0,   338,
-       0,   213,     0,   203,   205,     0,   180,   236,     0,    14,
-     412,   552,   405,     0,   436,   437,   431,   435,     0,   447,
-       0,   442,   445,   473,   474,     0,   314,     0,   470,   472,
-     488,   498,   501,   500,   499,     0,   472,   507,   514,   508,
-     514,   459,   458,   514,   505,   507,   460,     0,     0,     0,
-       0,     0,   496,   454,     0,     0,    49,    48,    41,     0,
-      46,    43,     0,     0,   252,     0,     0,     0,   251,   258,
-     255,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   272,     0,     0,     0,     0,     0,     0,
-     247,     0,     0,     0,   324,     0,     0,     0,   248,     0,
-       0,   313,   307,   302,   292,   303,   304,   305,   301,   291,
-     297,   299,   293,   295,   287,   288,   289,     0,     0,   309,
-     306,   290,     0,   296,     0,   294,   323,     0,   325,     0,
-       0,   403,   404,   394,     0,   103,   104,   102,    66,     0,
-       0,     0,   317,     0,     0,   466,   468,   465,     0,     0,
-       0,   378,     0,   163,     0,    99,     0,   171,    51,    31,
-     168,    54,   167,     0,   118,     0,   136,     0,     0,   127,
-     129,     0,   125,   241,   245,     0,   238,   240,   246,     0,
-     198,   198,     0,   160,   223,     0,     0,     0,   111,     0,
-     236,   208,     0,     0,   213,   186,     0,   189,     0,   204,
-     432,     0,     0,   363,   368,     0,   236,   448,   440,     0,
-       0,   478,   479,   317,   475,     0,   463,   464,   502,   464,
-       0,   515,   511,   512,   507,   509,   462,   497,   493,   494,
-     495,   492,   547,   547,     0,    42,     0,    33,   386,   278,
-     253,   254,   257,   261,   262,   263,   264,   265,   260,   266,
-     267,   268,   269,   270,   271,   273,   274,   275,   276,   256,
-     248,     0,     0,     0,   520,   521,   524,   525,   522,   523,
-     259,   247,   312,   310,   311,   300,   298,   354,   337,   329,
-     326,   327,   330,   320,   322,   236,   153,   390,     0,     0,
-       0,   540,   376,   546,   377,   550,    98,   107,     0,   115,
-     135,   135,   135,   135,   135,   130,   128,   135,   117,   122,
-     243,     0,   237,   242,   140,     0,   146,   147,   156,   232,
-     233,   231,     0,   219,   217,   236,   198,   185,   213,   187,
-       0,   206,     0,     0,     0,     0,   236,   446,   489,     0,
-       0,     0,   471,   472,   507,   514,   516,   506,     0,     0,
-      47,    44,     0,   338,     0,     0,     0,   361,     0,     0,
-     335,   336,     0,   321,   105,     0,   544,     0,   100,   119,
-     131,   132,   133,   134,     0,   239,   244,   246,     0,   199,
-     200,   225,   198,   358,   188,   214,   374,   364,   365,   371,
-     370,   369,     0,   433,   477,   476,     0,   510,   424,   425,
-      45,     0,   530,   532,   531,   353,   334,     0,   331,   328,
-       0,   548,   116,     0,   358,   175,     0,     0,     0,   409,
-     513,     0,   333,     0,   536,   201,   176,     0,   373,   372,
-       0,     0,   332,   359,   410,   533,     0,   534
+      38,     0,   457,     0,   388,   389,     0,     0,     0,     0,
+       0,    29,   354,   108,   108,     0,     0,   392,     0,   488,
+       0,     0,   418,   398,   416,     0,     0,   419,     0,   482,
+     483,   487,   489,   486,     0,     0,     0,   145,   397,   108,
+     108,     0,   396,     0,   420,   124,     0,   445,   157,     0,
+       0,     0,   450,     0,   451,   367,    71,   182,     0,   193,
+     192,   197,   195,   399,   402,   401,   400,   190,   114,   194,
+     196,   338,   435,     5,     9,    22,     0,    22,     0,    22,
+       0,     0,    57,   125,    65,   142,    64,   164,    59,    61,
+      60,    56,     0,    63,    58,   215,     0,   183,   202,   191,
+     432,    62,     0,    25,     0,   380,     0,     0,   385,   412,
+       0,   376,     0,   431,   424,   440,     0,     0,   423,     0,
+       0,     0,   422,     0,     8,     7,    36,    32,     0,     0,
+     285,   286,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   339,   340,
+       0,   347,   350,   349,   342,   343,   344,   341,     0,   403,
+     250,   247,     0,   279,   316,   318,   315,   281,   314,   280,
+     351,   249,     0,     0,   356,   357,   429,     0,    69,   101,
+       0,   355,   427,     0,   150,     0,   148,     0,   428,     0,
+     415,   414,   393,   538,     0,   540,     0,   417,   408,    35,
+     384,     0,   470,   468,     0,   456,     0,     0,     0,     0,
+     162,     0,     0,   138,     0,    53,   172,   173,   158,   143,
+     144,   170,   169,   234,   235,   108,    72,    52,    30,    15,
+      25,     0,     0,    11,    39,    22,    12,     0,     0,    55,
+     166,   127,   164,     0,   125,     0,   236,   120,   125,   165,
+     137,     0,   165,     0,     0,     0,   236,   154,   159,     0,
+       0,     0,   112,    50,     0,   177,   174,   209,   210,     0,
+       0,     0,   179,     0,     0,   178,     0,    16,   236,   368,
+     363,    37,   382,   381,   383,   164,   409,   407,     0,     0,
+       0,   421,     0,   442,   439,   444,   430,     0,   452,   506,
+     507,   485,     0,     0,     0,     0,   338,     0,   505,   492,
+     493,   453,   458,   462,     0,   484,     0,   454,   390,     0,
+       0,   432,   386,     0,   284,   277,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   530,   520,   249,     0,   522,   521,     0,
+       0,   247,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   308,     0,     0,
+       0,   282,   283,     0,   354,   319,   317,   317,   345,   348,
+     346,   352,     0,     0,   394,     0,     0,   236,     0,     0,
+     109,   152,   151,   149,     0,     0,   554,     0,   545,   432,
+     542,   550,   541,   546,   341,   247,   314,   544,   548,   550,
+     552,     0,    67,    74,    75,    78,    73,    79,    76,    81,
+      82,    83,    84,    85,    80,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    95,    77,    96,    97,    68,     0,
+     139,     0,   106,     0,     0,     0,    10,    17,    40,    40,
+      13,     0,     0,     0,   135,     0,    70,     0,     0,   135,
+     123,   164,     0,   126,   121,   141,   164,   236,   236,   164,
+     161,     0,   155,   220,   222,   236,   224,     0,   226,   227,
+     228,   229,   230,     0,   218,   221,   216,    40,   174,   110,
+       0,     0,   212,   207,   211,   181,   184,     0,   338,     0,
+     213,     0,   203,   205,     0,   180,   236,     0,    14,   413,
+     555,   406,     0,   437,   438,   432,   436,     0,   448,     0,
+     443,   446,   474,   475,     0,   314,     0,   471,   473,   490,
+     500,   503,   502,   501,     0,   473,   510,   517,   511,   517,
+     460,   459,   517,   508,   510,   461,     0,     0,     0,     0,
+       0,   498,   455,     0,     0,     0,     0,   252,     0,     0,
+       0,   251,   258,   255,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   272,     0,     0,     0,
+       0,     0,     0,   247,     0,     0,     0,   324,     0,     0,
+       0,   248,     0,     0,   313,   307,   302,   292,   303,   304,
+     305,   301,   291,   297,   299,   293,   295,   287,   288,   289,
+       0,     0,   309,   306,   290,     0,   296,     0,   294,   323,
+       0,   325,     0,     0,   404,   405,   395,     0,   103,   104,
+     102,    66,     0,     0,     0,   317,     0,     0,   467,   469,
+     466,     0,     0,     0,   379,     0,   163,     0,    99,     0,
+     171,    51,     0,    31,    34,   168,    54,   167,     0,   118,
+       0,   136,     0,     0,   127,   129,     0,   125,   241,   245,
+       0,   238,   240,   246,     0,   198,   198,     0,   160,   223,
+       0,     0,     0,   111,     0,   236,   208,     0,     0,   213,
+     186,     0,   189,     0,   204,   433,     0,     0,   364,   369,
+       0,   236,   449,   441,     0,     0,   480,   481,   317,   236,
+       0,   464,   465,   504,   465,     0,   518,   514,   515,   510,
+     512,   463,   499,   495,   496,   497,   494,   550,   550,   387,
+     278,   253,   254,   257,   261,   262,   263,   264,   265,   260,
+     266,   267,   268,   269,   270,   271,   273,   274,   275,   276,
+     256,   248,     0,     0,     0,   523,   524,   527,   528,   525,
+     526,   259,   247,   312,   310,   311,   300,   298,   354,   337,
+     329,   326,   327,   330,   320,   322,   236,   153,   391,     0,
+       0,     0,   543,   377,   549,   378,   553,    98,   107,     0,
+      49,    48,    41,     0,    46,    43,   115,   135,   135,   135,
+     135,   135,   130,   128,   135,   117,   122,   243,     0,   237,
+     242,   140,     0,   146,   147,   156,   232,   233,   231,     0,
+     219,   217,   236,   198,   185,   213,   187,     0,   206,     0,
+       0,     0,     0,   236,   447,   491,     0,     0,     0,   476,
+     472,   473,   510,   517,   519,   509,     0,     0,   338,     0,
+       0,     0,   362,     0,     0,   335,   336,     0,   321,   105,
+       0,   547,     0,   100,     0,    42,     0,    33,   119,   131,
+     132,   133,   134,     0,   239,   244,   246,     0,   199,   200,
+     225,   198,   358,   188,   214,   375,   365,   366,   372,   371,
+     370,     0,   434,   479,   478,     0,   513,   425,   426,     0,
+     533,   535,   534,   353,   334,     0,   331,   328,     0,   551,
+      47,    44,     0,   116,     0,   358,   175,     0,     0,     0,
+     410,   516,     0,   333,     0,   539,    45,   201,   176,     0,
+       0,   374,   373,     0,     0,   332,   359,   360,   411,   536,
+       0,   537
 };
 
@@ -1412,128 +1414,129 @@
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    11,    94,    95,    96,   261,    12,   262,    13,
-      18,    15,    97,    98,   148,    14,    99,   266,   354,   777,
-     599,   600,   100,   257,   479,   480,   247,   210,   211,   428,
-     483,   217,   294,   295,   101,   102,   273,   703,   103,   104,
-     278,   274,   704,   705,   105,   106,   281,   107,   108,   109,
-     110,   111,   434,   112,   113,   288,   289,   244,   276,   270,
-     271,   114,   254,   115,   531,   296,   530,   116,   117,   303,
-     540,   118,   119,   120,   856,   919,   306,   543,   300,   541,
-     737,   297,   524,   525,   862,   526,   504,   715,   716,   717,
-     357,   192,   358,   193,   194,   413,   660,   642,   195,   668,
-     196,   197,   198,   199,   670,   820,   821,   822,   200,   201,
-     202,   422,   417,   214,   208,   955,   956,   203,   122,   123,
-     311,   743,   744,   928,   929,   124,   125,   126,   127,   128,
-     204,   129,   552,   317,   224,   230,   130,   131,   132,   309,
-     133,   134,   322,   135,   325,   560,   136,   137,   561,   562,
-     138,   139,   581,   341,   586,   329,   237,   567,   568,   140,
-     343,   141,   142,   344,   570,   346,   582,   583,   584,   762,
-     388,   389,   390,   894,   227,   143,   443,   444,   445,   451,
-     684,   453,   144,   553
+      -1,     1,    11,    93,    94,    95,   259,    12,   260,    13,
+      18,    15,    96,    97,   147,    14,    98,   265,   693,   907,
+     833,   834,    99,   255,   477,   478,   245,   208,   209,   426,
+     481,   215,   293,   294,   100,   101,   272,   698,   102,   103,
+     277,   273,   699,   700,   104,   105,   280,   106,   107,   108,
+     109,   110,   432,   111,   112,   287,   288,   242,   275,   269,
+     270,   113,   252,   114,   530,   295,   529,   115,   116,   302,
+     539,   117,   118,   119,   853,   918,   305,   542,   299,   540,
+     732,   296,   523,   524,   859,   525,   503,   710,   711,   712,
+     355,   190,   356,   191,   192,   411,   653,   635,   193,   661,
+     194,   195,   196,   197,   663,   811,   812,   813,   198,   199,
+     200,   420,   415,   212,   206,   956,   957,   201,   121,   122,
+     310,   738,   739,   927,   928,   123,   124,   125,   126,   127,
+     202,   128,   551,   316,   222,   228,   129,   130,   131,   308,
+     132,   133,   321,   134,   324,   559,   135,   136,   560,   561,
+     137,   138,   580,   341,   585,   328,   235,   566,   567,   139,
+     343,   140,   141,   344,   569,   346,   581,   582,   583,   757,
+     386,   387,   388,   889,   225,   142,   441,   442,   443,   449,
+     677,   451,   143,   552
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -702
+#define YYPACT_NINF -711
 static const yytype_int16 yypact[] =
 {
-    -702,   921,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,   -59,  5446,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,   -24,   -24,  -702,    -3,  -702,  -702,  4703,     3,  2638,
-      49,    56,  -702,  4703,    37,    38,  2638,   146,  -702,   -93,
-    -702,  -110,  4703,  -702,  -702,    43,    48,   -93,  -702,   148,
-    -702,  -702,  -702,  -702,  -702,   185,   156,   158,  -702,  -702,
-     164,   164,    79,  -702,   171,  -702,  -702,   -51,  -702,  -702,
-      -7,   -93,   -93,  -702,    75,  -702,  -702,    53,  -702,   -93,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,   179,  -702,  -702,   224,  -702,   130,
-    -702,   -81,   186,   136,   149,  -702,   138,  -702,   360,   363,
-    -702,  -702,   172,   150,  -702,  -702,   145,   -19,    16,    29,
-     370,   395,  -702,   231,   -59,   -93,  -702,   -93,   -93,  -702,
-     230,  4703,  -702,    27,   405,  -702,   233,   241,  2638,  -702,
-     236,  2722,   236,  -702,  5702,  -702,  -702,  -702,  -702,   253,
-    4703,  4703,  -702,  -702,  4703,   256,   257,   266,  4703,  4703,
-    4703,   267,   271,   277,   289,   292,   298,   304,   312,   313,
-     314,   315,   317,  4703,   318,   328,   329,   330,   331,  4831,
-    -702,  -702,   334,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    4703,  2443,  -702,  -702,  4703,   244,  -702,   335,   343,  -702,
-     344,   359,   228,  -702,    58,  4703,  -702,  2443,  -702,   362,
-     529,  -702,  4703,  2443,  -702,   536,  -702,   372,  -702,   372,
-    -702,  4703,  -702,  -702,  -702,  -702,  4703,  -702,  1425,  -702,
-    -702,  -702,  -702,   362,  -702,  -702,  4959,  -702,   362,   362,
-     372,  3079,  -702,   373,   362,  -702,  4703,   541,  -702,  -702,
-    -702,  -702,  -702,  -702,   544,  -702,  -702,   164,  -702,  -702,
-    5446,  -702,   -59,   -24,  -702,  -702,  -702,  -702,   548,   390,
-     563,  -702,    60,    28,   333,   408,   159,   399,  -702,   408,
-     362,  -702,   159,  -702,   410,   412,   159,   399,   571,  -702,
-     413,   445,   581,  -702,  -702,   -24,   583,  -702,  3039,  -702,
-     404,   147,  3935,  -702,  5087,   -19,  -702,   411,  -702,   399,
-    -702,   586,  -702,  -702,  -702,  -702,   360,   362,  2443,  4703,
-    4703,   362,  -702,   414,  4063,  -702,  -702,  -702,  2588,  -702,
-    -702,  -702,  -702,  4703,  4703,  4703,  4703,   587,  2588,   244,
-     359,  -702,  1096,   588,   403,   580,  2852,  4831,  -702,   416,
-     417,  -702,  -702,    17,   567,  1446,  2556,  2443,    23,  4703,
-    4703,  4703,    42,  1469,    52,  4703,  4703,  4703,  4703,  4703,
-    4703,  4703,  4703,  4703,  4703,  4703,  4703,  1491,  4703,  4703,
-    4703,  4703,  4703,  4831,  2443,  1512,   722,  -702,   461,   595,
-     604,  4703,  1548,   607,  3423,  4703,  4703,  4703,  4703,  4703,
-    4703,  4703,  4703,  4703,  4703,  4703,  4703,  4703,  4703,  3167,
-    4703,  3551,  3679,  -702,    19,   362,  4703,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,  4703,  4703,  -702,  1570,    65,   399,
-      49,  1694,  -702,  -702,   608,   608,  1752,   791,  -702,   244,
-     -54,    22,   425,   612,  -702,  -702,   436,   437,     8,    22,
-    -702,   616,  -702,    70,   608,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-     617,   597,  -702,    74,  2443,   443,   454,   -93,  -702,  -702,
-     253,  -702,  4703,    76,   390,   260,  4703,  -702,   455,   457,
-     260,  -702,   360,  2489,  -702,  -702,  -702,   360,   399,   399,
-     360,  -702,   413,   571,  -702,  -702,   399,  -702,   449,  -702,
-    -702,  -702,  -702,  -702,   356,  -702,  -702,  -702,   253,  -702,
-    -702,   460,  4191,  -702,  -702,  2443,  -702,  -702,  3935,  3295,
-     452,   630,  4319,  -702,  2443,   462,  -702,   399,    33,  -702,
-    -702,  -702,  -702,   629,  2443,  2443,  -702,  -702,   467,  2443,
-     464,   642,  -702,  -702,  -702,  2852,  3807,    78,  -702,   106,
-    -702,  2443,  2443,  2443,  2443,  4703,   308,  5572,  2443,   244,
-    1773,  -702,   643,  2443,  -702,  5572,  -702,  2852,  2852,  2852,
-    2852,  2852,   623,  -702,   362,   362,  -702,  -702,  -702,    86,
-    -702,   471,  2638,  4703,  -702,    87,    89,  1794,  -702,  -702,
-    -702,  1815,  1836,  1876,  1897,  1939,  2018,  2079,  2121,  2142,
-    2163,  2200,  2221,  -702,    90,    92,    93,    94,    98,  2261,
-     648,   649,   650,  4831,  -702,  4831,  4831,   103,  -702,  4703,
-    4703,  2443,  -702,  2460,  2460,  2481,  2481,  2556,  2577,  2577,
-    2577,  2577,  2577,  2577,   119,   119,    19,  4703,  4703,  2443,
-    -702,    19,  4703,  2577,  4703,  2577,   244,   652,  2783,   477,
-     478,  2443,  2443,  -702,   362,  -702,  -702,  -702,  -702,   490,
-     576,  4703,  2783,    -8,   481,  -702,  -702,  -702,    -8,   482,
-     362,  -702,  3079,  -702,  4703,  -702,  4703,  -702,  -702,  -702,
-    2443,  -702,  -702,   639,    35,   387,  -702,  2345,   640,   486,
-    -702,   646,   408,  4703,  -702,   104,  -702,  -702,  1325,   362,
-     651,   651,   413,  -702,  -702,   264,   445,   662,  -702,   502,
-     399,  -702,   492,  4191,   630,  -702,   504,  -702,   495,  -702,
-    -702,   672,   552,   677,  -702,  4703,   399,  -702,  -702,  4063,
-     513,  -702,  -702,  2783,   674,  2588,  -702,  -702,  2443,   680,
-     105,  -702,  2443,  2443,  5572,  2443,   643,   547,   623,   623,
-     623,   396,   612,   616,    20,  -702,   141,  -702,  -702,  2443,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  5215,  5215,  5215,  2443,  -702,  2443,  -702,  2443,  -702,
-    -702,   514,  2577,  2577,    19,  2577,  2577,  4703,  2911,  1360,
-     698,  -702,  -702,   335,  -702,   399,  -702,  -702,  2403,   109,
-     697,  -702,  -702,  -702,  -702,  -702,  -702,  2443,   111,  -702,
-     260,   260,   260,   260,   260,   359,  -702,   260,  -702,  -702,
-    2443,  2489,  -702,  4447,  -702,  5343,  -702,  -702,   571,  -702,
-    -702,  -702,   523,  -702,  -702,   399,   651,  -702,   630,  -702,
-    4191,  -702,   -47,   535,   538,  1171,   399,  -702,  -702,   744,
-     525,   362,  -702,   403,  5613,  2443,  -702,  -702,   530,   531,
-    -702,  -702,   116,   704,   532,   533,   534,  -702,   537,  4703,
-    1382,  4703,  2783,  -702,  -702,   712,  -702,   362,  -702,  -702,
-      10,    10,   528,   115,   695,  -702,  -702,  2443,  4575,  -702,
-    2443,  -702,   651,   715,  -702,  -702,   598,  -702,   718,  -702,
-    -702,  -702,  4703,  -702,  -702,   425,   543,  2443,  -702,  -702,
-    -702,  4703,  -702,  -702,  -702,  -702,  2443,  4703,  1404,  -702,
-    4703,  -702,  -702,   554,   715,  -702,   723,   572,   573,  1194,
-    -702,  1280,  2443,  4703,  2443,  -702,  -702,  4703,  -702,  -702,
-    4703,  4703,  2443,  2443,  2443,  1303,  4703,  2443
+    -711,   923,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,   -98,  5724,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,   -51,  -711,   -47,  -711,  -711,  4731,    54,  2666,    70,
+     115,  -711,  4731,    34,    40,  2666,   117,  -711,   -63,  -711,
+       7,  4731,  -711,  -711,   -39,    66,   -63,  -711,   137,  -711,
+    -711,  -711,  -711,  -711,   184,   141,   170,  -711,  -711,   199,
+     199,   155,  -711,   175,  -711,  -711,    37,  -711,  -711,    92,
+     -63,   -63,  -711,   129,  -711,  -711,   116,  -711,   -63,  -711,
+    -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,   217,  -711,  -711,    31,  -711,    96,  -711,
+     -64,   187,    97,   156,  -711,   149,  -711,   384,   390,  -711,
+    -711,   395,   165,  -711,  -711,    91,   -15,    80,   125,   372,
+     416,  -711,   253,   -98,   -63,  -711,   -63,   -63,  -711,   247,
+    4731,  -711,    24,   434,  -711,   267,   278,  2666,  -711,   270,
+    5575,   270,  -711,  2341,  -711,  -711,  -711,  -711,  4731,  4731,
+    -711,  -711,  4731,   276,   279,   280,  4731,  4731,  4731,   285,
+     291,   292,   296,   299,   301,   309,   310,   313,   316,   317,
+     318,  4731,   319,   325,   328,   329,   330,  4859,  -711,  -711,
+     331,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  4731,  2530,
+    -711,  -711,  4731,   304,  -711,   334,   342,  -711,   343,   354,
+     -33,  -711,    43,  4731,  -711,  2530,  -711,   356,   528,  -711,
+    4731,  2530,  -711,   534,  -711,   376,  -711,   376,  -711,  4731,
+    -711,  -711,  -711,  -711,  4731,  -711,  1494,  -711,  -711,  -711,
+    -711,   356,  -711,  -711,  4987,  -711,   356,   356,   376,  2588,
+    -711,   377,   356,  -711,  4731,   544,  -711,  -711,  -711,  -711,
+    -711,  -711,   546,  -711,  -711,   199,  -711,  -711,  5724,  -711,
+     -98,   -51,   -51,  -711,  -711,  -711,  -711,   557,   394,   561,
+    -711,    21,    33,   144,   397,   139,   388,  -711,   397,   356,
+    -711,   139,  -711,   399,   402,   139,   388,   571,  -711,   407,
+     733,   575,  -711,  -711,   -51,   572,  -711,  3067,  -711,   401,
+     215,  3963,  -711,  5115,   -15,  -711,   425,  -711,   388,  -711,
+     601,  -711,  -711,  -711,  -711,   384,   356,  2530,  4731,  4731,
+     356,  -711,   429,  4091,  -711,  -711,  -711,  5430,  -711,  -711,
+    -711,  -711,  4731,  4731,  4731,  4731,   610,  5430,  -711,   304,
+     354,  -711,  1098,   616,   588,   618,  5621,  4859,  -711,   441,
+     443,  -711,  -711,  1515,   670,  2530,    27,  4731,  4731,  4731,
+      36,  1550,    45,  4731,  4731,  4731,  4731,  4731,  4731,  4731,
+    4731,  4731,  4731,  4731,  4731,  1572,  4731,  4731,  4731,  4731,
+    4731,  4859,  2530,  1594,   782,  -711,   500,   630,   631,  4731,
+    1615,   633,  3451,  4731,  4731,  4731,  4731,  4731,  4731,  4731,
+    4731,  4731,  4731,  4731,  4731,  4731,  4731,  3195,  4731,  3579,
+    3707,  -711,   128,   356,  4731,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  4731,  4731,  -711,  1637,    48,   388,    70,  1697,
+    -711,  -711,   641,   641,  1819,  1173,  -711,   304,   -24,    -1,
+     457,   647,  -711,  -711,   471,   472,   151,    -1,  -711,   650,
+    -711,    62,   641,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,   651,   634,
+    -711,    71,  2530,   476,   488,   -63,  -711,  -711,   480,   480,
+    -711,  4731,    72,   394,   314,  4731,  -711,   491,   495,   314,
+    -711,   384,  2538,  -711,  -711,  -711,   384,   388,   388,   384,
+    -711,   407,   571,  -711,  -711,   388,  -711,   486,  -711,  -711,
+    -711,  -711,  -711,   358,  -711,  -711,  -711,   480,  -711,  -711,
+     497,  4219,  -711,  -711,  2530,  -711,  -711,  3963,  3323,   487,
+     665,  4347,  -711,  2530,   489,  -711,   388,    23,  -711,  -711,
+    -711,  -711,   667,  2530,  2530,  -711,  -711,   498,  2530,   493,
+     672,  -711,  -711,  -711,  5621,  3835,    75,  -711,   119,  -711,
+    2530,  2530,  2530,  2530,  4731,   530,  5850,  2530,   304,  1840,
+    -711,   674,  2530,  -711,  5850,  -711,  5621,  5621,  5621,  5621,
+    5621,   654,  -711,   356,   356,  2666,  4731,  -711,    84,    85,
+    1879,  -711,  -711,  -711,  1900,  1921,  1942,  1963,  2006,  2027,
+    2145,  2209,  2230,  2251,  2272,  2293,  -711,    86,    88,    89,
+      90,    98,  2327,   678,   687,   693,  4859,  -711,  4859,  4859,
+      99,  -711,  4731,  4731,  2530,  -711,   710,   710,   569,   569,
+     670,   814,   814,   814,   814,   814,   814,   133,   133,   128,
+    4731,  4731,  2530,  -711,   128,  4731,   814,  4731,   814,   304,
+     695,  2811,   517,   520,  2530,  2530,  -711,   356,  -711,  -711,
+    -711,  -711,   532,   619,  4731,  2811,   -49,   526,  -711,  -711,
+    -711,   -49,   527,   356,  -711,  2588,  -711,  4731,  -711,  4731,
+    -711,  -711,    67,  -711,   681,  2530,  -711,  -711,   689,    50,
+     716,  -711,  2348,   691,   538,  -711,   705,   397,  4731,  -711,
+     105,  -711,  -711,  1384,   356,   707,   707,   407,  -711,  -711,
+     287,   733,   732,  -711,   568,   388,  -711,   558,  4219,   665,
+    -711,   570,  -711,   560,  -711,  -711,   738,   617,   741,  -711,
+    4731,   388,  -711,  -711,  4091,   536,  -711,  -711,  2811,   519,
+    5430,  -711,  -711,  2530,   727,   106,  -711,  2530,  2530,  5850,
+    2530,   674,   574,   654,   654,   654,   406,   647,   650,  -711,
+    2530,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  5243,  5243,  5243,  2530,  -711,  2530,  -711,  2530,
+    -711,  -711,   573,   814,   814,   128,   814,   814,  4731,  2939,
+    1406,   745,  -711,  -711,   334,  -711,   388,  -711,  -711,  2475,
+     107,   744,  -711,  -711,  -711,  -711,  -711,  -711,  2530,   109,
+    -711,  -711,  -711,   110,  -711,   577,  -711,   314,   314,   314,
+     314,   314,   354,  -711,   314,  -711,  -711,  2530,  2538,  -711,
+    4475,  -711,  5371,  -711,  -711,   571,  -711,  -711,  -711,   579,
+    -711,  -711,   388,   707,  -711,   665,  -711,  4219,  -711,   -50,
+     581,   582,  1196,   388,  -711,  -711,  1362,   580,   356,  -711,
+    -711,   588,  5891,  2530,  -711,  -711,   583,   584,   747,   585,
+     590,   591,  -711,   592,  4731,  1428,  4731,  2811,  -711,  -711,
+     754,  -711,   356,  -711,    26,  -711,    93,  -711,  -711,    29,
+      29,   586,   113,   737,  -711,  -711,  2530,  4603,  -711,  2530,
+    -711,   707,    64,  -711,  -711,   649,  -711,   770,  -711,  -711,
+    -711,  4731,  -711,  -711,   457,   596,  2530,  -711,  -711,  4731,
+    -711,  -711,  -711,  -711,  2530,  4731,  1471,  -711,  4731,  -711,
+    -711,  -711,   111,  -711,   597,    64,  -711,   162,   609,   611,
+    1282,  -711,  1305,  2530,  4731,  2530,  -711,  -711,  -711,  4731,
+    4731,  -711,  -711,  4731,  4731,  2530,  2530,  2530,  2530,  1328,
+    4731,  2530
 };
 
@@ -1541,23 +1544,23 @@
 static const yytype_int16 yypgoto[] =
 {
-    -702,  -702,  -702,  -702,   503,  -702,     2,  -702,   740,  -702,
-     -49,   756,  -702,  -702,    -1,     5,  -702,  -702,  -407,  -702,
-      -5,     4,  -702,  -702,    85,  -702,  -702,  -702,   349,  -702,
-      84,   -11,  -702,  -702,  -702,  -702,  -702,  -482,  -702,  -702,
-    -265,   282,  -402,  -702,  -702,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,   173,  -702,  -702,  -278,   270,   -39,   -21,   515,
-     291,  -702,  -702,  -702,   258,  -702,  -702,  -702,  -702,  -702,
-     245,  -702,  -702,  -702,  -701,  -702,  -702,  -702,   483,  -290,
-    -687,  -702,  -702,    63,  -702,   709,  -282,  -702,   -58,   -61,
-     -27,  -176,   -80,  -154,  -323,  -532,  -702,  -702,  -128,  -702,
-    -702,  -702,  -204,  -702,   377,   121,   -92,    64,   178,   -87,
-    -702,  -702,  -198,  -399,   -29,  -143,  -702,  -163,  -702,  -702,
-    -702,  -702,   -56,  -702,  -139,  -702,  -702,  -702,  -702,  -702,
-    -702,  -702,  -702,  -702,   -12,  -702,  -702,  -702,   676,   265,
-    -232,  -702,  -702,  -702,  -702,  -702,  -702,  -702,  -702,    73,
-    -702,  -702,  -702,  -702,  -702,   254,  -702,  -702,    68,  -702,
-    -702,  -702,  -702,  -275,   684,  -316,  -426,  -702,  -694,  -561,
-     480,   446,  -372,  -648,   272,  -702,   237,  -201,  -702,   238,
-    -421,  -702,  -702,  -702
+    -711,  -711,  -711,  -711,   523,  -711,    30,  -711,   774,  -711,
+     -66,   772,  -711,  -711,    65,     6,  -711,  -711,  -430,  -711,
+    -118,  -110,  -711,  -711,   123,  -711,  -711,  -711,   373,  -711,
+     120,     1,  -711,  -711,  -711,  -711,  -711,  -480,  -711,  -711,
+    -264,   312,  -439,  -711,  -711,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,   -68,  -711,  -711,  -276,   300,   -35,   -85,   548,
+     324,  -711,  -711,  -711,   274,  -711,  -711,  -711,  -711,  -711,
+     281,  -711,  -711,  -711,  -699,  -711,  -711,  -711,   515,  -290,
+    -666,  -711,  -711,   100,  -711,   749,  -104,  -711,   -25,   -17,
+     -26,  -136,    56,  -176,  -432,  -497,  -711,  -711,  -103,  -711,
+    -711,  -711,  -204,  -711,   404,   159,   -57,    95,    -5,   -70,
+    -711,  -711,  -197,  -398,   -30,  -108,  -711,  -166,  -711,  -711,
+    -711,  -711,   -23,  -711,  -105,  -711,  -711,  -711,  -711,  -711,
+    -711,  -711,  -711,  -711,   -28,  -711,  -711,  -711,   708,   302,
+    -208,  -711,  -711,  -711,  -711,  -711,  -711,  -711,  -711,   118,
+    -711,  -711,  -711,  -711,  -711,   277,  -711,  -711,   114,  -711,
+    -711,  -711,  -711,  -306,   720,  -263,  -226,  -711,  -673,  -554,
+     514,   482,  -326,  -710,   308,  -711,   273,  -202,  -711,   275,
+    -416,  -711,  -711,  -711
 };
 
@@ -1566,812 +1569,812 @@
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -508
+#define YYTABLE_NINF -511
 static const yytype_int16 yytable[] =
 {
-     191,   442,   207,   385,   423,   511,   213,   220,   534,   207,
-     501,   632,   513,   339,   505,   228,   387,   667,   711,   763,
-     857,   149,   765,   146,   219,   386,   603,   547,   591,   440,
-     689,   283,   319,   843,   440,   232,   393,   450,   840,   301,
-     596,   215,   215,   596,   410,   603,   761,   869,   761,   240,
-     241,   761,   304,   569,   340,   603,   841,   842,   843,   251,
-     252,   424,   425,   576,   741,   279,   225,   259,   674,   226,
-     887,   592,   248,   690,   290,   312,   222,   694,   362,   494,
-     364,   755,   447,   699,   495,   282,   249,   284,   268,   774,
-     603,   286,   603,   603,   223,   603,   603,   603,   269,   242,
-     264,   603,   267,   243,   318,   439,   603,   851,   884,   327,
-     439,   207,   902,   313,   694,   314,   315,   830,    17,   774,
-     250,   728,   926,   355,   356,   418,   587,   330,   331,   588,
-     589,   590,   363,   255,   256,  -315,   841,   842,   843,   275,
-     927,   280,   408,   409,   410,   147,   377,   676,   291,   292,
-     298,   760,   384,   320,   895,   896,  -164,   299,  -164,   766,
-    -164,    92,  -164,   392,   596,   923,   578,   414,   215,   242,
-     242,   385,   706,   243,   243,   283,   150,   706,   427,   242,
-     293,   924,   205,   243,   387,   431,   597,   419,   687,   597,
-     887,   121,  -164,   386,   436,   302,  -164,   598,   844,   437,
-     339,   682,   742,   604,   411,   412,   260,   385,   305,   384,
-     339,  -314,   229,   489,   579,   497,   321,   231,   339,   484,
-     387,   954,   608,   844,   216,   218,   720,   721,   209,   630,
-     886,   886,   610,   886,   724,   212,   936,   502,   426,   496,
-     245,   340,   731,   507,   253,   675,   487,   510,    92,   734,
-     691,   340,   498,   591,   695,   580,   701,   263,   756,   340,
-     591,   805,   490,   807,   809,   740,   775,   780,   491,   781,
-     795,   535,   796,   797,   798,   535,   591,   544,   799,   605,
-     606,   152,   153,   810,   852,   885,   757,   666,   265,   906,
-     750,   908,   554,   555,   528,   550,   940,   559,   624,   625,
-     626,   627,   628,   844,   411,   412,   571,   572,   573,   574,
-     597,   637,   767,   768,   769,   770,   771,   549,   277,   287,
-     384,   891,   351,   537,   937,   221,   538,   233,   587,   330,
-     331,   588,   589,   590,   607,   238,   499,   239,   611,   612,
-     613,   614,   615,   616,   617,   618,   619,   620,   621,   622,
-     246,   888,   889,   761,   234,   272,   629,   500,   909,   726,
-     727,   235,   442,   283,   236,   914,   285,   641,   643,   644,
-     645,   646,   647,   648,   649,   650,   651,   652,   653,   654,
-     655,   656,   659,   661,   663,   665,   421,   429,   393,   213,
-     440,   440,   435,   307,   450,   342,   347,   671,   672,   308,
-     310,   578,   859,   860,   861,   886,   316,   416,   323,   578,
-     326,   441,   324,   454,   448,   328,   449,   452,   898,   588,
-     589,   590,   482,   587,   330,   331,   588,   589,   590,   805,
-     807,   809,   353,   415,   591,   359,   360,   339,   121,   910,
-     911,   912,   913,   868,   858,   361,   365,   849,   866,   579,
-     366,   591,   591,   591,   591,   591,   367,   579,   506,   339,
-     339,   339,   339,   339,   876,   700,   439,   439,   368,   707,
-     387,   369,   387,   387,   514,   698,   718,   370,   340,   440,
-     883,   712,   831,   371,   440,   811,   719,   833,   759,   722,
-     580,   372,   373,   374,   375,   551,   376,   378,   580,   556,
-     340,   340,   340,   340,   340,   535,   566,   379,   380,   381,
-     382,   535,   535,   391,   416,   392,   566,   706,   706,   706,
-     706,   706,   418,   419,   706,   255,   256,   515,   420,   180,
-     181,    92,   430,   587,   330,   331,   588,   589,   590,   754,
-     432,   433,   481,   904,   485,   183,   184,   486,   758,   185,
-     186,   187,   188,   492,   516,   439,   517,   518,   519,   268,
-     439,   520,   521,   189,   522,   523,   494,   591,   330,   331,
-     588,   589,   590,   778,   512,   207,   779,   277,   503,   508,
-     925,   509,   287,   922,   536,   527,   529,   546,   578,   548,
-     557,   585,   575,   634,   933,   594,   595,   601,   635,   393,
-    -488,  -488,  -488,  -488,  -488,  -488,   804,   636,   806,   808,
-     639,   679,   384,   812,   321,   683,   685,   686,   845,   688,
-     692,   693,   696,   697,   708,   903,   709,   339,   725,   730,
-     813,   814,   735,   736,   745,   815,   579,   816,   387,   387,
-     387,   819,   739,   225,   748,   749,   764,   811,   590,   935,
-     776,   801,   802,   803,   828,   819,   817,   823,   824,   826,
-     827,   832,   834,   839,   847,   496,   864,   837,   340,   484,
-     848,   865,   867,   870,   855,   871,   872,   580,   873,   394,
-     874,   395,   396,   397,   398,   399,   850,   400,   401,   402,
-     403,   404,   405,   878,   897,   406,   407,   408,   409,   410,
-    -489,   902,   907,   921,   930,   934,   535,   742,   578,   941,
-     938,   939,   942,   943,   944,   950,   844,   945,   875,   952,
-    -360,   958,   559,   960,   957,   633,   879,  -247,   967,  -247,
-    -247,  -247,  -247,  -247,   965,  -247,  -247,  -247,  -247,  -247,
-    -247,   968,   926,  -247,  -247,  -247,  -247,  -247,   901,   394,
-      16,   395,   396,   397,   398,   399,   579,   400,   401,   402,
-     403,   404,   405,   488,   393,   406,   407,   408,   409,   410,
-     145,   892,   441,   449,   804,   806,   808,   836,   890,   677,
-     838,   710,   723,   732,   493,   702,   258,   729,   545,   863,
-     213,   900,   916,   915,   681,   669,   394,   580,   395,   396,
-     397,   398,   399,   829,   400,   401,   402,   403,   404,   405,
-     949,   966,   406,   407,   408,   409,   410,   880,   931,   969,
-     352,   746,   877,   882,   718,   345,   917,   593,   920,   631,
-     747,   772,     0,   773,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   535,     0,     0,     0,     0,     0,     0,
-       0,     0,   825,     0,     0,     0,     0,     0,     0,   411,
-     412,   449,     0,   881,     0,     0,   449,     0,   835,     0,
-       0,     0,   946,     0,   948,   819,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   392,     0,     0,     0,     0,     0,   854,     0,     0,
-       0,     0,     0,     0,     0,   959,     0,  -247,  -247,     0,
-       0,     0,     0,     0,   961,     0,     0,     0,     0,     0,
-     962,     2,     3,   964,   638,     0,     0,     0,     0,   411,
-     412,     0,     0,   566,     0,     0,   972,     0,     0,     0,
-     973,     0,     0,   974,   975,     0,     0,     0,   -23,   977,
-     -23,     0,     0,   -23,   -23,   -23,   -23,     4,     5,   -23,
-       0,     0,   -23,   -23,   -23,     0,     0,     0,     0,   -23,
-     -23,     0,     0,     0,     6,     7,   411,   412,     0,     0,
-       0,     0,     0,     0,   -23,     0,     0,     0,   -23,   -23,
-       0,     0,     0,   -23,     0,     0,     0,     0,     0,   -23,
-       0,   -23,   -23,     0,   -23,     0,   -23,   -23,   -23,   -23,
-     -23,     0,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
-     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,     0,     0,
-     -23,   -23,   -23,     0,   -23,   -23,   -23,     0,   -23,   -23,
-     -23,     0,     0,   -23,     0,   -23,     0,     0,   -23,   -23,
-     -23,   -23,     0,     0,   -23,   -23,   -23,     0,     0,   351,
-       0,     0,   -23,     0,     0,     8,   -23,   -23,   -23,   -23,
-     -23,   -23,   -23,     0,   -23,   -23,   -23,   -23,   -23,     0,
-       0,   -23,     0,     0,     0,   951,     0,     0,   -23,   -23,
-     -23,     0,     0,     0,     0,     0,     0,   -23,     9,  -507,
-       0,  -507,     0,  -507,  -507,  -507,  -507,  -507,    10,  -507,
-    -507,  -507,  -507,  -507,  -507,     0,     0,  -507,  -507,  -507,
-    -507,  -507,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   154,   155,     0,     0,     0,
-     156,   157,   158,   159,     0,     0,     0,     0,     0,     0,
-       0,     0,   160,   161,   162,   163,   164,   165,   166,     0,
-     167,   168,   169,     0,     0,   170,   171,   172,     0,   173,
-     174,   175,   176,   177,   932,   178,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-       0,     0,   406,   407,   408,   409,   410,   970,     0,   394,
-       0,   395,   396,   397,   398,   399,     0,   400,   401,   402,
-     403,   404,   405,     0,     0,   406,   407,   408,   409,   410,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   180,   181,
-       0,     0,     0,     0,   182,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   183,   184,     0,     0,   185,   186,
-     187,   188,     0,     0,     0,    92,     0,     0,     0,     0,
-       0,     0,   189,     0,     0,   577,     0,     0,     0,     0,
-       0,  -507,  -507,   971,     0,   394,     0,   395,   396,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,     0,
-       0,   406,   407,   408,   409,   410,   976,     0,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,   853,
-     394,     0,   395,   396,   397,   398,   399,     0,   400,   401,
-     402,   403,   404,   405,     0,     0,   406,   407,   408,   409,
-     410,     0,     0,     0,     0,     0,   411,   412,     0,     0,
-       0,     0,     0,     0,   901,   394,     0,   395,   396,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,   411,
-     412,   406,   407,   408,   409,   410,   947,   394,     0,   395,
-     396,   397,   398,   399,     0,   400,   401,   402,   403,   404,
-     405,     0,     0,   406,   407,   408,   409,   410,   963,   394,
-       0,   395,   396,   397,   398,   399,     0,   400,   401,   402,
-     403,   404,   405,     0,     0,   406,   407,   408,   409,   410,
-     394,     0,   395,   396,   397,   398,   399,     0,   400,   401,
-     402,   403,   404,   405,     0,     0,   406,   407,   408,   409,
-     410,   394,     0,   395,   396,   397,   398,   399,     0,   400,
-     401,   402,   403,   404,   405,   411,   412,   406,   407,   408,
-     409,   410,     0,     0,   394,     0,   395,   396,   397,   398,
-     399,     0,   400,   401,   402,   403,   404,   405,   411,   412,
-     406,   407,   408,   409,   410,     0,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-     411,   412,   406,   407,   408,   409,   410,  -250,     0,  -250,
-    -250,  -250,  -250,  -250,     0,  -250,  -250,  -250,  -250,  -250,
-    -250,     0,     0,  -250,  -250,  -250,  -250,  -250,     0,     0,
-       0,     0,     0,     0,     0,   411,   412,     0,     0,     0,
-       0,     0,     0,   394,     0,   395,   396,   397,   398,   399,
-       0,   400,   401,   402,   403,   404,   405,   411,   412,   406,
-     407,   408,   409,   410,     0,   394,     0,   395,   396,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,   411,
-     412,   406,   407,   408,   409,   410,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   438,     0,     0,     0,     0,
-     411,   412,     0,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,  602,    0,    0,    0,
-       0,   411,   412,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   609,
-       0,     0,     0,     0,   411,   412,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   623,     0,     0,     0,     0,   411,   412,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,  -250,     0,     0,     0,     0,  -250,  -250,   394,
-       0,   395,   396,   397,   398,   399,     0,   400,   401,   402,
-     403,   404,   405,     0,     0,   406,   407,   408,   409,   410,
-       0,     0,     0,     0,     0,     0,     0,     0,   638,     0,
-       0,     0,     0,   411,   412,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     673,     0,     0,     0,     0,   411,   412,   394,     0,   395,
-     396,   397,   398,   399,     0,   400,   401,   402,   403,   404,
-     405,     0,     0,   406,   407,   408,   409,   410,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,   394,
-       0,   395,   396,   397,   398,   399,     0,   400,   401,   402,
-     403,   404,   405,     0,     0,   406,   407,   408,   409,   410,
-     394,     0,   395,   396,   397,   398,   399,     0,   400,   401,
-     402,   403,   404,   405,     0,     0,   406,   407,   408,   409,
-     410,   394,     0,   395,   396,   397,   398,   399,     0,   400,
-     401,   402,   403,   404,   405,     0,     0,   406,   407,   408,
+     189,   384,   205,   421,   338,   218,   211,   533,   120,   205,
+     500,   385,   391,   512,   504,   226,   660,   854,   230,   706,
+     281,   568,   283,   440,   145,   758,   285,   438,   760,   318,
+     596,   575,   438,   682,   448,   217,   282,   339,   213,   596,
+     591,   383,   249,   250,   213,   494,   422,   423,   596,   830,
+     257,   667,   840,   837,   736,   625,   243,   311,   445,   694,
+     238,   239,   701,   866,   261,   683,   262,   701,   278,  -361,
+     340,   838,   839,   840,   687,   493,   821,   289,   750,    17,
+     756,   590,   756,   890,   891,   756,   885,   596,   596,   596,
+     830,   596,   596,   596,   290,   291,   312,   723,   313,   314,
+     274,   596,   596,   300,   317,   267,   220,   326,   848,   882,
+     897,   205,   687,   904,   904,   268,   830,  -164,   146,   925,
+      91,  -164,   353,   354,   221,   419,   292,   263,   437,   266,
+     227,   361,   148,   437,   838,   839,   840,   926,   351,   586,
+     329,   330,   587,   588,   589,   375,   414,   498,   303,   433,
+     319,   382,   279,   408,   297,   416,   406,   407,   408,   240,
+     246,   298,   390,   241,   922,  -315,   412,   969,   499,  -164,
+     452,   384,   935,  -164,   247,   240,   240,   425,   675,   241,
+     241,   385,   510,   223,   429,   240,   224,   497,  -314,   241,
+    -361,   338,   737,   434,   487,   831,   253,   254,   435,   923,
+     495,   338,   427,   213,   546,   623,   577,   597,   382,   885,
+     338,   383,   360,   320,   362,   385,   601,   841,   482,   248,
+     496,   214,   955,   424,   339,   603,   439,   216,   668,   446,
+     549,   447,   450,   203,   339,   229,   831,   480,   841,   578,
+     501,   726,   684,   339,   258,   383,   506,   832,   729,   207,
+     509,   688,   696,   120,   264,   751,   485,   340,   745,   301,
+     884,   884,   831,   884,   771,   772,   786,   340,   787,   788,
+     789,   534,   579,   951,   505,   534,   340,   543,   790,   801,
+     762,   763,   764,   765,   766,   849,   883,   901,   970,   903,
+     905,   966,   553,   554,   210,   490,   219,   558,   251,   752,
+     796,   841,   798,   800,   304,   590,   570,   571,   572,   573,
+     659,   550,   590,   409,   410,   555,   231,   548,   409,   410,
+     236,   382,   565,   669,    91,   276,   488,   489,   590,   936,
+     417,   680,   565,   600,   286,   150,   151,   604,   605,   606,
+     607,   608,   609,   610,   611,   612,   613,   614,   615,   237,
+     755,   886,   887,   232,   244,   622,   271,   908,   761,   527,
+     233,   721,   722,   234,   913,   391,   634,   636,   637,   638,
+     639,   640,   641,   642,   643,   644,   645,   646,   647,   648,
+     649,   652,   654,   656,   658,   440,   756,   282,   211,   438,
+     438,   536,   448,   284,   537,   306,   664,   665,   282,   909,
+     910,   911,   912,   715,   716,   701,   701,   701,   701,   701,
+     893,   719,   701,   598,   599,  -164,   707,   342,   347,  -164,
+     307,   714,   309,   315,   717,   856,   857,   858,   338,   587,
+     588,   589,   617,   618,   619,   620,   621,   322,   865,   884,
+     577,   855,   735,   846,   881,   630,   323,   325,   577,   327,
+     338,   338,   338,   338,   338,   357,   802,   691,   358,   359,
+     385,   339,   385,   385,   363,   695,   796,   798,   800,   702,
+     364,   365,   438,   578,   822,   366,   713,   438,   367,   824,
+     368,   578,   590,   339,   339,   339,   339,   339,   369,   370,
+     437,   437,   371,   413,   340,   372,   373,   374,   376,   590,
+     590,   590,   590,   590,   377,   534,   579,   378,   379,   380,
+     389,   534,   534,   414,   579,   390,   340,   340,   340,   340,
+     340,   416,   417,   418,   392,    91,   393,   394,   395,   396,
+     397,   428,   398,   399,   400,   401,   402,   403,   430,   749,
+     404,   405,   406,   407,   408,   431,   479,   483,   753,   484,
+     586,   329,   330,   587,   588,   589,   586,   329,   330,   587,
+     588,   589,   491,   267,   493,   769,   276,   502,   507,   205,
+     770,   508,   391,   437,   511,   528,   286,   924,   437,   526,
+     397,   535,   398,   399,   400,   401,   402,   403,   439,   447,
+     404,   405,   406,   407,   408,   329,   330,   587,   588,   589,
+     795,   545,   797,   799,   547,   556,   382,   803,   586,   329,
+     330,   587,   588,   589,   338,   574,   802,   898,   590,   584,
+     593,   863,   594,   577,   804,   805,   385,   385,   385,   806,
+     842,   807,   627,   628,   629,   810,   632,   873,  -490,  -490,
+    -490,  -490,  -490,  -490,   672,   879,   320,   339,   819,   810,
+     676,   678,   679,   681,   685,   689,   578,   690,   686,   692,
+     703,   828,   816,   482,   704,   720,   725,   730,   731,   734,
+     934,   447,   740,   743,   223,   744,   447,   759,   826,   589,
+     340,   792,   847,   398,   399,   400,   401,   402,   403,   579,
+     793,   404,   405,   406,   407,   408,   794,   814,   502,   808,
+     815,   817,   534,   818,   409,   410,   823,   825,   878,   851,
+     754,   835,   899,   836,   872,   844,   875,   495,   558,   395,
+     396,   397,   876,   398,   399,   400,   401,   402,   403,   845,
+     852,   404,   405,   406,   407,   408,   861,   862,   864,   867,
+     868,   391,   869,   870,   871,   565,   577,  -491,   897,   902,
+     929,   737,   939,   892,   409,   410,   906,   948,   921,   920,
+     933,   953,   513,   937,   938,   940,   795,   797,   799,   932,
+     941,   942,   943,   959,   841,   958,   961,   967,   971,   578,
+     925,   486,   211,   895,    16,   626,   144,  -247,   952,  -247,
+    -247,  -247,  -247,  -247,   950,  -247,  -247,  -247,  -247,  -247,
+    -247,   670,   724,  -247,  -247,  -247,  -247,  -247,   827,   829,
+     705,   718,   579,   253,   254,   514,   492,   697,   727,   544,
+     662,   860,   713,   914,   916,   256,   919,  -511,  -511,  -511,
+    -511,  -511,  -511,   915,   820,   404,   405,   406,   407,   408,
+     947,   534,   515,   877,   516,   517,   518,   968,   930,   519,
+     520,   352,   521,   522,   972,   409,   410,   741,   178,   179,
+     345,   592,   874,   624,   880,   742,   767,     0,   944,   768,
+     946,   810,     0,   351,   181,   182,     0,     0,   183,   184,
+     185,   186,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   390,   187,     0,     0,   409,   410,   949,     0,     0,
+       0,     0,     0,     0,     0,   960,     0,     0,     0,     0,
+       0,     0,     0,   962,     0,     0,     0,     0,     0,   963,
+       0,     0,   965,     2,     3,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   975,     0,
+       0,     0,     0,   976,   977,     0,     0,   978,   979,     0,
+     -23,     0,   -23,     0,   981,   -23,   -23,   -23,   -23,     4,
+       5,   -23,     0,     0,   -23,   -23,   -23,  -247,  -247,     0,
+       0,   -23,   -23,     0,     0,     0,     6,     7,     0,     0,
+       0,     0,     0,     0,     0,     0,   -23,     0,     0,     0,
+     -23,   -23,     0,     0,     0,   -23,     0,     0,     0,   409,
+     410,   -23,     0,   -23,   -23,     0,   -23,     0,   -23,   -23,
+     -23,   -23,   -23,     0,   -23,   -23,   -23,   -23,   -23,   -23,
+     -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
+       0,     0,   -23,   -23,   -23,     0,   -23,   -23,   -23,     0,
+     -23,   -23,   -23,     0,     0,   -23,     0,   -23,     0,     0,
+     -23,   -23,   -23,   -23,     0,     0,   -23,   -23,   -23,     0,
+       0,     0,     0,     0,   -23,     0,     0,     8,   -23,   -23,
+     -23,   -23,   -23,   -23,   -23,     0,   -23,   -23,   -23,   -23,
+     -23,     0,     0,   -23,     0,     0,     0,     0,     0,     0,
+     -23,   -23,   -23,     0,     0,     0,     0,     0,     0,   -23,
+       9,  -510,     0,  -510,     0,  -510,  -510,  -510,  -510,  -510,
+      10,  -510,  -510,  -510,  -510,  -510,  -510,     0,     0,  -510,
+    -510,  -510,  -510,  -510,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
+       0,     0,   154,   155,   156,   157,     0,     0,     0,     0,
+       0,     0,     0,     0,   158,   159,   160,   161,   162,   163,
+     164,     0,   165,   166,   167,     0,     0,   168,   169,   170,
+       0,   171,   172,   173,   174,   175,   674,   176,   392,     0,
+     393,   394,   395,   396,   397,     0,   398,   399,   400,   401,
+     402,   403,     0,     0,   404,   405,   406,   407,   408,   931,
+       0,   392,     0,   393,   394,   395,   396,   397,     0,   398,
+     399,   400,   401,   402,   403,     0,     0,   404,   405,   406,
+     407,   408,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     178,   179,     0,     0,     0,     0,   180,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   181,   182,     0,     0,
+     183,   184,   185,   186,     0,     0,     0,    91,     0,     0,
+       0,     0,     0,     0,   187,     0,     0,   576,     0,     0,
+       0,     0,     0,  -510,  -510,   973,     0,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,     0,     0,   404,   405,   406,   407,   408,   974,     0,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,   980,     0,   392,     0,   393,   394,   395,   396,   397,
+       0,   398,   399,   400,   401,   402,   403,     0,     0,   404,
+     405,   406,   407,   408,     0,     0,     0,     0,   409,   410,
+       0,     0,     0,     0,     0,     0,   896,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,   409,   410,   404,   405,   406,   407,   408,   850,   392,
+       0,   393,   394,   395,   396,   397,     0,   398,   399,   400,
+     401,   402,   403,     0,     0,   404,   405,   406,   407,   408,
+     896,   392,     0,   393,   394,   395,   396,   397,     0,   398,
+     399,   400,   401,   402,   403,     0,     0,   404,   405,   406,
+     407,   408,   945,   392,     0,   393,   394,   395,   396,   397,
+       0,   398,   399,   400,   401,   402,   403,     0,     0,   404,
+     405,   406,   407,   408,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   409,   410,     0,
+       0,     0,     0,     0,     0,   964,   392,     0,   393,   394,
+     395,   396,   397,     0,   398,   399,   400,   401,   402,   403,
+     409,   410,   404,   405,   406,   407,   408,     0,     0,   392,
+       0,   393,   394,   395,   396,   397,     0,   398,   399,   400,
+     401,   402,   403,   409,   410,   404,   405,   406,   407,   408,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,     0,   631,     0,     0,     0,     0,   409,   410,     0,
+       0,     0,     0,     0,     0,   392,     0,   393,   394,   395,
+     396,   397,     0,   398,   399,   400,   401,   402,   403,   409,
+     410,   404,   405,   406,   407,   408,     0,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,   409,   410,   404,   405,   406,   407,   408,     0,  -250,
+       0,  -250,  -250,  -250,  -250,  -250,     0,  -250,  -250,  -250,
+    -250,  -250,  -250,   409,   410,  -250,  -250,  -250,  -250,  -250,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,     0,   392,     0,   393,   394,   395,   396,   397,     0,
+     398,   399,   400,   401,   402,   403,   409,   410,   404,   405,
+     406,   407,   408,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   436,     0,     0,     0,     0,   409,
+     410,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   595,     0,     0,     0,     0,
+     409,   410,   392,     0,   393,   394,   395,   396,   397,     0,
+     398,   399,   400,   401,   402,   403,     0,     0,   404,   405,
+     406,   407,   408,     0,     0,     0,     0,     0,     0,     0,
+     602,     0,     0,     0,     0,   409,   410,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   616,     0,     0,     0,     0,   409,   410,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  -250,     0,     0,     0,     0,  -250,
+    -250,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   631,     0,     0,     0,     0,
      409,   410,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   678,     0,     0,     0,     0,   411,
-     412,   394,     0,   395,   396,   397,   398,   399,     0,   400,
-     401,   402,   403,   404,   405,     0,     0,   406,   407,   408,
-     409,   410,   394,     0,   395,   396,   397,   398,   399,     0,
-     400,   401,   402,   403,   404,   405,     0,     0,   406,   407,
-     408,   409,   410,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   680,     0,     0,     0,     0,   411,   412,     0,
-       0,     0,   420,     0,   394,     0,   395,   396,   397,   398,
-     399,     0,   400,   401,   402,   403,   404,   405,   411,   412,
-     406,   407,   408,   409,   410,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   782,     0,     0,     0,     0,   411,
-     412,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   783,     0,     0,     0,     0,
-     411,   412,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   784,     0,     0,     0,
-       0,   411,   412,   394,     0,   395,   396,   397,   398,   399,
-       0,   400,   401,   402,   403,   404,   405,     0,     0,   406,
-     407,   408,   409,   410,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   785,     0,     0,     0,
-       0,   411,   412,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   786,     0,     0,
-       0,     0,   411,   412,   394,     0,   395,   396,   397,   398,
-     399,     0,   400,   401,   402,   403,   404,   405,     0,     0,
-     406,   407,   408,   409,   410,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   787,
-       0,     0,     0,     0,   411,   412,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-       0,     0,   406,   407,   408,   409,   410,   394,     0,   395,
-     396,   397,   398,   399,     0,   400,   401,   402,   403,   404,
-     405,     0,     0,   406,   407,   408,   409,   410,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   788,     0,
-       0,     0,     0,   411,   412,   394,     0,   395,   396,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,     0,
-       0,   406,   407,   408,   409,   410,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-       0,     0,   406,   407,   408,   409,   410,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   789,
-       0,     0,     0,     0,   411,   412,   394,     0,   395,   396,
-     397,   398,   399,     0,   400,   401,   402,   403,   404,   405,
-       0,     0,   406,   407,   408,   409,   410,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   790,     0,     0,     0,     0,   411,   412,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,   791,     0,     0,     0,     0,   411,   412,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,   792,     0,     0,     0,     0,   411,   412,
-     394,     0,   395,   396,   397,   398,   399,     0,   400,   401,
-     402,   403,   404,   405,     0,     0,   406,   407,   408,   409,
-     410,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     793,     0,     0,     0,     0,   411,   412,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   794,     0,     0,     0,     0,   411,   412,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,   800,     0,     0,     0,     0,   411,   412,   394,     0,
-     395,   396,   397,   398,   399,     0,   400,   401,   402,   403,
-     404,   405,     0,     0,   406,   407,   408,   409,   410,   397,
-     398,   399,     0,   400,   401,   402,   403,   404,   405,     0,
-       0,   406,   407,   408,   409,   410,     0,     0,     0,     0,
-       0,     0,   399,   713,   400,   401,   402,   403,   404,   405,
-       0,   151,   406,   407,   408,   409,   410,     0,     0,     0,
-     152,   153,   714,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   846,     0,     0,   154,   155,
-     411,   412,     0,   156,   157,   158,   159,     0,     0,     0,
-       0,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,   400,
-     401,   402,   403,   404,   405,     0,     0,   406,   407,   408,
-     409,   410,     0,   905,     0,     0,     0,     0,   411,   412,
-    -508,  -508,  -508,  -508,  -508,  -508,     0,     0,   406,   407,
-     408,   409,   410,     0,     0,     0,     0,     0,     0,   330,
-     331,   563,     0,   564,     0,     0,     0,     0,     0,     0,
-     179,     0,     0,     0,     0,     0,     0,     0,   411,   412,
-       0,   180,   181,     0,     0,     0,     0,   182,   333,   334,
-     335,     0,     0,   336,     0,   411,   412,   183,   184,     0,
-     151,   185,   186,   187,   188,     0,     0,     0,    92,   152,
-     153,     0,     0,     0,     0,   189,   411,   412,   190,     0,
-       0,     0,     0,     0,     0,     0,     0,   154,   155,     0,
-       0,     0,   156,   157,   158,   159,     0,     0,     0,     0,
-       0,     0,     0,     0,   160,   161,   162,   163,   164,   165,
-     166,     0,   167,   168,   169,     0,     0,   170,   171,   172,
-       0,   173,   174,   175,   176,   177,     0,   178,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     180,   181,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   411,   412,   330,   331,   332,   183,   184,     0,     0,
-     185,   186,   187,   188,     0,     0,     0,   337,     0,     0,
-       0,     0,   411,   412,   189,     0,     0,   565,     0,   179,
-       0,     0,   333,   334,   335,     0,     0,   336,     0,     0,
-     180,   181,     0,     0,     0,     0,   182,   818,     0,     0,
-       0,     0,     0,     0,     0,   151,   183,   184,     0,     0,
-     185,   186,   187,   188,   152,   153,     0,    92,     0,     0,
-       0,     0,     0,     0,   189,     0,     0,   190,     0,     0,
-       0,     0,   154,   155,     0,   206,     0,   156,   157,   158,
-     159,     0,     0,     0,     0,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,   180,   181,     0,     0,     0,     0,
-       0,     0,     0,   330,   331,     0,     0,     0,     0,     0,
-     183,   184,     0,     0,   185,   186,   187,   188,     0,     0,
-       0,   337,     0,     0,     0,     0,     0,     0,   189,     0,
-       0,   338,   333,   334,   335,     0,     0,   336,     0,     0,
-       0,     0,     0,     0,   179,   899,     0,     0,     0,     0,
-       0,     0,     0,   151,     0,   180,   181,     0,     0,     0,
-       0,   182,   152,   153,     0,     0,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-     154,   155,    92,     0,     0,   156,   157,   158,   159,   189,
-       0,     0,   190,     0,     0,     0,     0,   160,   161,   162,
-     163,   164,   165,   166,     0,   167,   168,   169,     0,     0,
-     170,   171,   172,     0,   173,   174,   175,   176,   177,     0,
-     178,     0,     0,     0,   180,   181,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     183,   184,     0,     0,   185,   186,   187,   188,     0,     0,
-       0,   337,     0,     0,     0,     0,     0,     0,   189,     0,
-       0,   565,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   179,     0,   532,     0,     0,     0,     0,     0,
-       0,   151,     0,   180,   181,     0,     0,     0,     0,   182,
-     152,   153,   533,     0,     0,     0,     0,     0,     0,   183,
-     184,     0,     0,   185,   186,   187,   188,     0,   154,   155,
-      92,     0,     0,   156,   157,   158,   159,   189,     0,     0,
-     190,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,   455,
-       0,     0,     0,   456,   457,   458,   459,     0,     0,     0,
-       0,     0,     0,     0,     0,   460,   461,   462,   463,   464,
-     465,   466,     0,   467,   468,   469,     0,     0,   470,   471,
-     472,     0,     0,   473,   474,   475,   476,     0,   477,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     179,     0,   657,     0,     0,     0,     0,     0,     0,   151,
-       0,   180,   181,     0,     0,     0,     0,   182,   152,   153,
-       0,   658,     0,     0,     0,     0,     0,   183,   184,     0,
-       0,   185,   186,   187,   188,     0,   154,   155,    92,     0,
-       0,   156,   157,   158,   159,   189,     0,     0,   190,     0,
-       0,     0,     0,   160,   161,   162,   163,   164,   165,   166,
-       0,   167,   168,   169,     0,     0,   170,   171,   172,     0,
-     173,   174,   175,   176,   177,     0,   178,     0,   478,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
-     733,     0,     0,     0,     0,     0,     0,   151,     0,   180,
-     181,     0,     0,     0,     0,   182,   152,   153,   533,     0,
-       0,     0,     0,     0,     0,   183,   184,     0,     0,   185,
-     186,   187,   188,     0,   154,   155,    92,     0,     0,   156,
-     157,   158,   159,   189,     0,     0,   190,     0,     0,     0,
-       0,   160,   161,   162,   163,   164,   165,   166,     0,   167,
-     168,   169,     0,     0,   170,   171,   172,     0,   173,   174,
-     175,   176,   177,     0,   178,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,   179,     0,   640,     0,
-       0,     0,     0,     0,     0,   151,     0,   180,   181,     0,
-       0,     0,     0,   182,   152,   153,     0,     0,     0,     0,
-       0,     0,     0,   183,   184,     0,     0,   185,   186,   187,
-     188,     0,   154,   155,    92,     0,     0,   156,   157,   158,
-     159,   189,     0,     0,   190,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   179,     0,   662,     0,     0,     0,
-       0,     0,     0,   151,     0,   180,   181,     0,     0,     0,
-       0,   182,   152,   153,     0,     0,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-     154,   155,    92,     0,     0,   156,   157,   158,   159,   189,
-       0,     0,   190,     0,     0,     0,     0,   160,   161,   162,
-     163,   164,   165,   166,     0,   167,   168,   169,     0,     0,
-     170,   171,   172,     0,   173,   174,   175,   176,   177,     0,
-     178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,   179,     0,   664,     0,     0,     0,     0,     0,
-       0,   151,     0,   180,   181,     0,     0,     0,     0,   182,
-     152,   153,     0,     0,     0,     0,     0,     0,     0,   183,
-     184,     0,     0,   185,   186,   187,   188,     0,   154,   155,
-      92,     0,     0,   156,   157,   158,   159,   189,     0,     0,
-     190,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     179,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,   180,   181,     0,     0,     0,     0,   182,   152,   153,
-     751,     0,   752,     0,     0,     0,     0,   183,   184,     0,
-       0,   185,   186,   187,   188,     0,   154,   155,    92,     0,
-       0,   156,   157,   158,   159,   189,     0,     0,   190,     0,
-       0,     0,     0,   160,   161,   162,   163,   164,   165,   166,
-       0,   167,   168,   169,     0,     0,   170,   171,   172,     0,
-     173,   174,   175,   176,   177,     0,   178,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
-       0,     0,     0,     0,     0,     0,     0,   151,     0,   180,
-     181,     0,     0,     0,     0,   182,   152,   153,   533,     0,
-       0,     0,     0,     0,     0,   183,   184,     0,     0,   185,
-     186,   187,   188,     0,   154,   155,    92,     0,     0,   156,
-     157,   158,   159,   189,     0,     0,   753,     0,     0,     0,
-       0,   160,   161,   162,   163,   164,   165,   166,     0,   167,
-     168,   169,     0,     0,   170,   171,   172,     0,   173,   174,
-     175,   176,   177,     0,   178,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,   179,     0,     0,     0,
-       0,     0,     0,     0,     0,   151,     0,   180,   181,     0,
-       0,     0,     0,   182,   152,   153,   558,     0,     0,     0,
-       0,     0,     0,   183,   184,     0,     0,   185,   186,   187,
-     188,     0,   154,   155,   539,     0,     0,   156,   157,   158,
-     159,   189,     0,     0,   190,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   179,     0,     0,     0,     0,     0,
-       0,     0,     0,   151,     0,   180,   181,     0,     0,     0,
-       0,   182,   152,   153,   533,     0,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-     154,   155,    92,     0,     0,   156,   157,   158,   159,   189,
-       0,     0,   190,     0,     0,     0,     0,   160,   161,   162,
-     163,   164,   165,   166,     0,   167,   168,   169,     0,     0,
-     170,   171,   172,     0,   173,   174,   175,   176,   177,     0,
-     178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,   179,     0,     0,     0,     0,     0,     0,     0,
-       0,   151,     0,   180,   181,     0,     0,     0,     0,   182,
-     152,   153,   738,     0,     0,     0,     0,     0,     0,   183,
-     184,     0,     0,   185,   186,   187,   188,     0,   154,   155,
-      92,     0,     0,   156,   157,   158,   159,   189,     0,     0,
-     190,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     179,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,   180,   181,     0,     0,     0,     0,   182,   152,   153,
-     714,     0,     0,     0,     0,     0,     0,   183,   184,     0,
-       0,   185,   186,   187,   188,     0,   154,   155,    92,     0,
-       0,   156,   157,   158,   159,   189,     0,     0,   190,     0,
-       0,     0,     0,   160,   161,   162,   163,   164,   165,   166,
-       0,   167,   168,   169,     0,     0,   170,   171,   172,     0,
-     173,   174,   175,   176,   177,     0,   178,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
-       0,     0,     0,     0,     0,     0,     0,   151,     0,   180,
-     181,     0,     0,     0,     0,   182,   152,   153,   953,     0,
-       0,     0,     0,     0,     0,   183,   184,     0,     0,   185,
-     186,   187,   188,     0,   154,   155,    92,     0,     0,   156,
-     157,   158,   159,   189,     0,     0,   190,     0,     0,     0,
-       0,   160,   161,   162,   163,   164,   165,   166,     0,   167,
-     168,   169,     0,     0,   170,   171,   172,     0,   173,   174,
-     175,   176,   177,     0,   178,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,   179,     0,     0,     0,
-       0,     0,     0,     0,     0,   151,     0,   180,   181,     0,
-       0,     0,     0,   182,   152,   153,     0,     0,     0,     0,
-       0,     0,     0,   183,   184,     0,     0,   185,   186,   187,
-     188,     0,   154,   155,    92,     0,     0,   156,   157,   158,
-     159,   189,     0,     0,   190,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   179,     0,     0,     0,     0,     0,
-       0,     0,     0,   151,     0,   180,   181,     0,     0,     0,
-       0,   182,   152,   153,     0,     0,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-     154,   155,    92,     0,     0,   156,   157,   158,   159,   189,
-       0,     0,   190,     0,     0,     0,     0,   160,   161,   162,
-     163,   164,   165,   166,     0,   167,   168,   169,     0,     0,
-     170,   171,   172,     0,   173,   174,   175,   176,   177,     0,
-     178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,   179,     0,     0,     0,     0,     0,     0,     0,
-       0,   151,     0,   180,   181,     0,     0,     0,     0,   182,
-     152,   153,     0,     0,     0,     0,     0,     0,     0,   183,
-     184,     0,     0,   185,   186,   187,   188,     0,   154,   155,
-      92,     0,     0,   156,   157,   158,   159,   189,     0,     0,
-     383,     0,     0,     0,     0,   160,   161,   162,   163,   164,
-     165,   166,     0,   167,   168,   169,     0,     0,   170,   171,
-     172,     0,   173,   174,   175,   176,   177,     0,   178,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-     179,     0,     0,     0,     0,     0,     0,     0,     0,   151,
-       0,   180,   181,     0,     0,     0,     0,   182,   152,   153,
-       0,     0,     0,     0,     0,     0,     0,   183,   184,     0,
-       0,   185,   186,   187,   188,     0,   154,   155,    92,     0,
-       0,   156,   157,   158,   159,   446,     0,     0,   190,     0,
-       0,     0,     0,   160,   161,   162,   163,   164,   165,   166,
-       0,   167,   168,   169,     0,     0,   170,   171,   172,     0,
-     173,   174,   175,   176,   177,     0,   178,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
-       0,     0,     0,     0,     0,     0,     0,   151,     0,   180,
-     181,     0,     0,     0,     0,   182,   152,   153,     0,     0,
-       0,     0,     0,     0,     0,   183,   184,     0,     0,   185,
-     186,   187,   188,     0,   154,   155,    92,     0,     0,   156,
-     157,   158,   159,   189,     0,     0,   542,     0,     0,     0,
-       0,   160,   161,   162,   163,   164,   165,   166,     0,   167,
-     168,   169,     0,     0,   170,   171,   172,     0,   173,   174,
-     175,   176,   177,     0,   178,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,     0,     0,   179,     0,     0,     0,
-       0,     0,     0,     0,     0,   151,     0,   180,   181,     0,
-       0,     0,     0,   182,   152,   153,     0,     0,     0,     0,
-       0,     0,     0,   183,   184,     0,     0,   185,   186,   187,
-     188,     0,   154,   155,   893,     0,     0,   156,   157,   158,
-     159,   189,     0,     0,   383,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   179,    19,     0,     0,    20,   -28,
-      21,    22,     0,     0,    23,   180,   181,    24,    25,    26,
-       0,   182,     0,     0,    27,    28,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,    29,
-       0,     0,    92,    30,    31,     0,     0,     0,    32,   189,
-       0,     0,   918,     0,    33,     0,    34,    35,     0,    36,
-       0,    37,    38,    39,    40,    41,     0,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,     0,     0,    58,    59,    60,     0,    61,
-      62,    63,     0,    64,    65,    66,     0,     0,    67,     0,
-      68,     0,     0,    69,    70,    71,    72,     0,     0,    73,
-      74,    75,     0,     0,     0,     0,     0,    76,     0,     0,
-       0,    77,    78,    79,    80,    81,    82,    83,     0,    84,
-      85,    86,    87,    88,     0,     0,    89,     0,     0,     0,
-       0,   154,   155,    90,    91,    92,   156,   157,   158,   159,
-       0,     0,    93,     0,     0,     0,     0,     0,   160,   161,
-     162,   163,   164,   165,   166,     0,   167,   168,   169,     0,
-       0,   170,   171,   172,     0,   173,   174,   175,   176,   177,
-       0,   178,   154,   155,     0,     0,     0,   156,   157,   158,
-     159,     0,     0,     0,     0,     0,     0,     0,     0,   160,
-     161,   162,   163,   164,   165,   166,     0,   167,   168,   169,
-       0,     0,   170,   171,   172,     0,   173,   174,   175,   176,
-     177,     0,   178,     0,     0,     0,     0,     0,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,     0,     0,     0,   180,   181,     0,     0,     0,     0,
-     182,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     183,   184,     0,     0,   185,   186,   187,   188,     0,     0,
-      23,    92,     0,     0,     0,     0,     0,     0,   189,     0,
-       0,   577,     0,     0,     0,   180,   181,     0,     0,     0,
-       0,   182,     0,     0,     0,    29,     0,     0,     0,     0,
-       0,   183,   184,     0,     0,   185,   186,   187,   188,     0,
-      33,     0,   893,     0,     0,    36,   348,     0,     0,   189,
-      40,    41,   577,     0,     0,     0,     0,     0,     0,     0,
-     349,    50,    51,    52,    53,    54,    55,   350,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      65,     0,     0,     0,     0,     0,    68,     0,     0,     0,
-       0,     0,     0,     0,     0,    73,     0,    75,     0,     0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       0,    92,     0,     0,     0,     0,     0,     0,    93
+       0,     0,     0,     0,     0,     0,     0,   666,     0,     0,
+       0,     0,   409,   410,   392,     0,   393,   394,   395,   396,
+     397,     0,   398,   399,   400,   401,   402,   403,     0,     0,
+     404,   405,   406,   407,   408,   392,     0,   393,   394,   395,
+     396,   397,     0,   398,   399,   400,   401,   402,   403,     0,
+       0,   404,   405,   406,   407,   408,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   671,     0,     0,
+       0,     0,   409,   410,   392,     0,   393,   394,   395,   396,
+     397,     0,   398,   399,   400,   401,   402,   403,     0,     0,
+     404,   405,   406,   407,   408,   392,     0,   393,   394,   395,
+     396,   397,     0,   398,   399,   400,   401,   402,   403,     0,
+       0,   404,   405,   406,   407,   408,   392,     0,   393,   394,
+     395,   396,   397,     0,   398,   399,   400,   401,   402,   403,
+       0,     0,   404,   405,   406,   407,   408,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,     0,     0,   404,   405,   406,   407,   408,   392,     0,
+     393,   394,   395,   396,   397,     0,   398,   399,   400,   401,
+     402,   403,     0,     0,   404,   405,   406,   407,   408,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   673,
+       0,     0,     0,     0,   409,   410,     0,     0,     0,   418,
+       0,   392,     0,   393,   394,   395,   396,   397,     0,   398,
+     399,   400,   401,   402,   403,   409,   410,   404,   405,   406,
+     407,   408,   392,     0,   393,   394,   395,   396,   397,     0,
+     398,   399,   400,   401,   402,   403,     0,     0,   404,   405,
+     406,   407,   408,     0,     0,     0,     0,     0,     0,   773,
+       0,     0,     0,     0,   409,   410,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     774,     0,     0,     0,     0,   409,   410,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   775,     0,     0,     0,     0,   409,   410,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   776,     0,     0,     0,     0,   409,   410,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   777,     0,     0,     0,     0,   409,   410,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   778,     0,     0,     0,
+       0,   409,   410,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   779,     0,     0,
+       0,     0,   409,   410,   392,     0,   393,   394,   395,   396,
+     397,     0,   398,   399,   400,   401,   402,   403,     0,     0,
+     404,   405,   406,   407,   408,   392,     0,   393,   394,   395,
+     396,   397,     0,   398,   399,   400,   401,   402,   403,     0,
+       0,   404,   405,   406,   407,   408,   392,     0,   393,   394,
+     395,   396,   397,     0,   398,   399,   400,   401,   402,   403,
+       0,     0,   404,   405,   406,   407,   408,   392,     0,   393,
+     394,   395,   396,   397,     0,   398,   399,   400,   401,   402,
+     403,     0,     0,   404,   405,   406,   407,   408,   392,     0,
+     393,   394,   395,   396,   397,     0,   398,   399,   400,   401,
+     402,   403,     0,     0,   404,   405,   406,   407,   408,     0,
+       0,     0,     0,     0,     0,   780,     0,     0,     0,     0,
+     409,   410,   392,     0,   393,   394,   395,   396,   397,     0,
+     398,   399,   400,   401,   402,   403,     0,     0,   404,   405,
+     406,   407,   408,   392,     0,   393,   394,   395,   396,   397,
+       0,   398,   399,   400,   401,   402,   403,     0,     0,   404,
+     405,   406,   407,   408,     0,     0,     0,     0,     0,    22,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   781,
+       0,     0,     0,     0,   409,   410,     0,     0,     0,     0,
+       0,     0,     0,     0,    28,     0,     0,     0,     0,     0,
+     782,     0,     0,     0,     0,   409,   410,     0,     0,    32,
+       0,     0,     0,     0,    35,   348,     0,     0,     0,    39,
+      40,   783,     0,     0,     0,     0,   409,   410,     0,   349,
+      49,    50,    51,    52,    53,    54,   350,     0,     0,     0,
+       0,     0,   784,     0,     0,     0,     0,   409,   410,    64,
+       0,     0,     0,     0,     0,    67,     0,     0,     0,     0,
+       0,     0,     0,   785,    72,     0,    74,     0,   409,   410,
+     392,     0,   393,   394,   395,   396,   397,     0,   398,   399,
+     400,   401,   402,   403,     0,     0,   404,   405,   406,   407,
+     408,     0,     0,     0,     0,     0,     0,   791,     0,     0,
+      91,     0,   409,   410,     0,     0,     0,    92,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   843,     0,
+       0,     0,     0,   409,   410,   392,     0,   393,   394,   395,
+     396,   397,   708,   398,   399,   400,   401,   402,   403,     0,
+     149,   404,   405,   406,   407,   408,     0,     0,     0,   150,
+     151,   709,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
+       0,     0,   154,   155,   156,   157,     0,     0,     0,     0,
+       0,     0,     0,     0,   158,   159,   160,   161,   162,   163,
+     164,     0,   165,   166,   167,     0,     0,   168,   169,   170,
+       0,   171,   172,   173,   174,   175,     0,   176,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   453,     0,
+       0,     0,   454,   455,   456,   457,     0,     0,     0,     0,
+       0,     0,     0,     0,   458,   459,   460,   461,   462,   463,
+     464,     0,   465,   466,   467,   900,     0,   468,   469,   470,
+     409,   410,   471,   472,   473,   474,     0,   475,     0,   177,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,     0,
+     178,   179,     0,     0,     0,     0,   180,   150,   151,     0,
+       0,     0,     0,     0,     0,     0,   181,   182,     0,     0,
+     183,   184,   185,   186,     0,   152,   153,    91,     0,     0,
+     154,   155,   156,   157,   187,   409,   410,   188,     0,     0,
+       0,     0,   158,   159,   160,   161,   162,   163,   164,     0,
+     165,   166,   167,     0,     0,   168,   169,   170,     0,   171,
+     172,   173,   174,   175,     0,   176,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   476,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   177,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   178,   179,
+       0,     0,     0,     0,   180,   809,     0,     0,     0,     0,
+       0,     0,     0,   149,   181,   182,     0,     0,   183,   184,
+     185,   186,   150,   151,     0,    91,     0,     0,     0,     0,
+       0,     0,   187,     0,     0,   188,     0,     0,     0,     0,
+     152,   153,     0,   204,     0,   154,   155,   156,   157,     0,
+       0,     0,     0,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   177,   894,     0,     0,     0,     0,     0,     0,
+       0,   149,     0,   178,   179,     0,     0,     0,     0,   180,
+     150,   151,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,   152,   153,
+      91,     0,     0,   154,   155,   156,   157,   187,     0,     0,
+     188,     0,     0,     0,     0,   158,   159,   160,   161,   162,
+     163,   164,     0,   165,   166,   167,     0,     0,   168,   169,
+     170,     0,   171,   172,   173,   174,   175,     0,   176,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,   531,     0,     0,     0,     0,     0,     0,   149,
+       0,   178,   179,     0,     0,     0,     0,   180,   150,   151,
+     532,     0,     0,     0,     0,     0,     0,   181,   182,     0,
+       0,   183,   184,   185,   186,     0,   152,   153,    91,     0,
+       0,   154,   155,   156,   157,   187,     0,     0,   188,     0,
+       0,     0,     0,   158,   159,   160,   161,   162,   163,   164,
+       0,   165,   166,   167,     0,     0,   168,   169,   170,     0,
+     171,   172,   173,   174,   175,     0,   176,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+     650,     0,     0,     0,     0,     0,     0,   149,     0,   178,
+     179,     0,     0,     0,     0,   180,   150,   151,     0,   651,
+       0,     0,     0,     0,     0,   181,   182,     0,     0,   183,
+     184,   185,   186,     0,   152,   153,    91,     0,     0,   154,
+     155,   156,   157,   187,     0,     0,   188,     0,     0,     0,
+       0,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,     0,     0,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   177,     0,   728,     0,
+       0,     0,     0,     0,     0,   149,     0,   178,   179,     0,
+       0,     0,     0,   180,   150,   151,   532,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,   152,   153,    91,     0,     0,   154,   155,   156,
+     157,   187,     0,     0,   188,     0,     0,     0,     0,   158,
+     159,   160,   161,   162,   163,   164,     0,   165,   166,   167,
+       0,     0,   168,   169,   170,     0,   171,   172,   173,   174,
+     175,     0,   176,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   177,     0,   633,     0,     0,     0,
+       0,     0,     0,   149,     0,   178,   179,     0,     0,     0,
+       0,   180,   150,   151,     0,     0,     0,     0,     0,     0,
+       0,   181,   182,     0,     0,   183,   184,   185,   186,     0,
+     152,   153,    91,     0,     0,   154,   155,   156,   157,   187,
+       0,     0,   188,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   177,     0,   655,     0,     0,     0,     0,     0,
+       0,   149,     0,   178,   179,     0,     0,     0,     0,   180,
+     150,   151,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,   152,   153,
+      91,     0,     0,   154,   155,   156,   157,   187,     0,     0,
+     188,     0,     0,     0,     0,   158,   159,   160,   161,   162,
+     163,   164,     0,   165,   166,   167,     0,     0,   168,   169,
+     170,     0,   171,   172,   173,   174,   175,     0,   176,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,   657,     0,     0,     0,     0,     0,     0,   149,
+       0,   178,   179,     0,     0,     0,     0,   180,   150,   151,
+       0,     0,     0,     0,     0,     0,     0,   181,   182,     0,
+       0,   183,   184,   185,   186,     0,   152,   153,    91,     0,
+       0,   154,   155,   156,   157,   187,     0,     0,   188,     0,
+       0,     0,     0,   158,   159,   160,   161,   162,   163,   164,
+       0,   165,   166,   167,     0,     0,   168,   169,   170,     0,
+     171,   172,   173,   174,   175,     0,   176,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+       0,     0,     0,     0,     0,     0,     0,   149,     0,   178,
+     179,     0,     0,     0,     0,   180,   150,   151,   746,     0,
+     747,     0,     0,     0,     0,   181,   182,     0,     0,   183,
+     184,   185,   186,     0,   152,   153,    91,     0,     0,   154,
+     155,   156,   157,   187,     0,     0,   188,     0,     0,     0,
+       0,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,     0,     0,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   177,     0,     0,     0,
+       0,     0,     0,     0,     0,   149,     0,   178,   179,     0,
+       0,     0,     0,   180,   150,   151,   532,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,   152,   153,    91,     0,     0,   154,   155,   156,
+     157,   187,     0,     0,   748,     0,     0,     0,     0,   158,
+     159,   160,   161,   162,   163,   164,     0,   165,   166,   167,
+       0,     0,   168,   169,   170,     0,   171,   172,   173,   174,
+     175,     0,   176,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   177,     0,     0,     0,     0,     0,
+       0,     0,     0,   149,     0,   178,   179,     0,     0,     0,
+       0,   180,   150,   151,   557,     0,     0,     0,     0,     0,
+       0,   181,   182,     0,     0,   183,   184,   185,   186,     0,
+     152,   153,   538,     0,     0,   154,   155,   156,   157,   187,
+       0,     0,   188,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   177,     0,     0,     0,     0,     0,     0,     0,
+       0,   149,     0,   178,   179,     0,     0,     0,     0,   180,
+     150,   151,   532,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,   152,   153,
+      91,     0,     0,   154,   155,   156,   157,   187,     0,     0,
+     188,     0,     0,     0,     0,   158,   159,   160,   161,   162,
+     163,   164,     0,   165,   166,   167,     0,     0,   168,   169,
+     170,     0,   171,   172,   173,   174,   175,     0,   176,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,     0,     0,     0,     0,     0,     0,     0,   149,
+       0,   178,   179,     0,     0,     0,     0,   180,   150,   151,
+     733,     0,     0,     0,     0,     0,     0,   181,   182,     0,
+       0,   183,   184,   185,   186,     0,   152,   153,    91,     0,
+       0,   154,   155,   156,   157,   187,     0,     0,   188,     0,
+       0,     0,     0,   158,   159,   160,   161,   162,   163,   164,
+       0,   165,   166,   167,     0,     0,   168,   169,   170,     0,
+     171,   172,   173,   174,   175,     0,   176,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+       0,     0,     0,     0,     0,     0,     0,   149,     0,   178,
+     179,     0,     0,     0,     0,   180,   150,   151,   709,     0,
+       0,     0,     0,     0,     0,   181,   182,     0,     0,   183,
+     184,   185,   186,     0,   152,   153,    91,     0,     0,   154,
+     155,   156,   157,   187,     0,     0,   188,     0,     0,     0,
+       0,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,     0,     0,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   177,     0,     0,     0,
+       0,     0,     0,     0,     0,   149,     0,   178,   179,     0,
+       0,     0,     0,   180,   150,   151,   954,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,   152,   153,    91,     0,     0,   154,   155,   156,
+     157,   187,     0,     0,   188,     0,     0,     0,     0,   158,
+     159,   160,   161,   162,   163,   164,     0,   165,   166,   167,
+       0,     0,   168,   169,   170,     0,   171,   172,   173,   174,
+     175,     0,   176,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   177,     0,     0,     0,     0,     0,
+       0,     0,     0,   149,     0,   178,   179,     0,     0,     0,
+       0,   180,   150,   151,     0,     0,     0,     0,     0,     0,
+       0,   181,   182,     0,     0,   183,   184,   185,   186,     0,
+     152,   153,    91,     0,     0,   154,   155,   156,   157,   187,
+       0,     0,   188,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   177,     0,     0,     0,     0,     0,     0,     0,
+       0,   149,     0,   178,   179,     0,     0,     0,     0,   180,
+     150,   151,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,   152,   153,
+      91,     0,     0,   154,   155,   156,   157,   187,     0,     0,
+     188,     0,     0,     0,     0,   158,   159,   160,   161,   162,
+     163,   164,     0,   165,   166,   167,     0,     0,   168,   169,
+     170,     0,   171,   172,   173,   174,   175,     0,   176,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,     0,     0,     0,     0,     0,     0,     0,   149,
+       0,   178,   179,     0,     0,     0,     0,   180,   150,   151,
+       0,     0,     0,     0,     0,     0,     0,   181,   182,     0,
+       0,   183,   184,   185,   186,     0,   152,   153,    91,     0,
+       0,   154,   155,   156,   157,   187,     0,     0,   381,     0,
+       0,     0,     0,   158,   159,   160,   161,   162,   163,   164,
+       0,   165,   166,   167,     0,     0,   168,   169,   170,     0,
+     171,   172,   173,   174,   175,     0,   176,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   177,     0,
+       0,     0,     0,     0,     0,     0,     0,   149,     0,   178,
+     179,     0,     0,     0,     0,   180,   150,   151,     0,     0,
+       0,     0,     0,     0,     0,   181,   182,     0,     0,   183,
+     184,   185,   186,     0,   152,   153,    91,     0,     0,   154,
+     155,   156,   157,   444,     0,     0,   188,     0,     0,     0,
+       0,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,     0,     0,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   177,     0,     0,     0,
+       0,     0,     0,     0,     0,   149,     0,   178,   179,     0,
+       0,     0,     0,   180,   150,   151,     0,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,   152,   153,    91,     0,     0,   154,   155,   156,
+     157,   187,     0,     0,   541,     0,     0,     0,     0,   158,
+     159,   160,   161,   162,   163,   164,     0,   165,   166,   167,
+       0,     0,   168,   169,   170,     0,   171,   172,   173,   174,
+     175,     0,   176,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   177,     0,     0,     0,     0,     0,
+       0,     0,     0,   149,     0,   178,   179,     0,     0,     0,
+       0,   180,   150,   151,     0,     0,     0,     0,     0,     0,
+       0,   181,   182,     0,     0,   183,   184,   185,   186,     0,
+     152,   153,   888,     0,     0,   154,   155,   156,   157,   187,
+       0,     0,   381,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,   329,   330,   562,     0,   563,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   152,
+     153,     0,     0,     0,   154,   155,   156,   157,     0,     0,
+     332,   333,   334,     0,     0,   335,   158,   159,   160,   161,
+     162,   163,   164,     0,   165,   166,   167,     0,     0,   168,
+     169,   170,   177,   171,   172,   173,   174,   175,     0,   176,
+       0,     0,     0,   178,   179,     0,     0,     0,     0,   180,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,     0,     0,
+      91,     0,     0,     0,     0,     0,     0,   187,     0,     0,
+     917,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   178,   179,     0,     0,     0,     0,   180,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   181,   182,
+       0,     0,   183,   184,   185,   186,   329,   330,   331,   336,
+       0,     0,     0,     0,     0,     0,   187,     0,     0,   564,
+       0,     0,     0,     0,   152,   153,     0,     0,     0,   154,
+     155,   156,   157,     0,     0,   332,   333,   334,     0,     0,
+     335,   158,   159,   160,   161,   162,   163,   164,     0,   165,
+     166,   167,   329,   330,   168,   169,   170,     0,   171,   172,
+     173,   174,   175,     0,   176,     0,     0,     0,     0,     0,
+     152,   153,     0,     0,     0,   154,   155,   156,   157,     0,
+       0,   332,   333,   334,     0,     0,   335,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   178,   179,     0,
+       0,     0,     0,   180,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   181,   182,     0,     0,   183,   184,   185,
+     186,     0,     0,     0,   336,     0,     0,     0,     0,     0,
+       0,   187,     0,    19,   337,     0,    20,   -28,    21,   -28,
+       0,     0,    22,   178,   179,    23,    24,    25,     0,   180,
+       0,     0,    26,    27,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,    28,     0,     0,
+     336,    29,    30,     0,     0,     0,    31,   187,     0,     0,
+     564,     0,    32,     0,    33,    34,     0,    35,     0,    36,
+      37,    38,    39,    40,     0,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,     0,     0,    57,    58,    59,     0,    60,    61,    62,
+       0,    63,    64,    65,     0,     0,    66,     0,    67,     0,
+       0,    68,    69,    70,    71,     0,     0,    72,    73,    74,
+       0,     0,     0,     0,     0,    75,     0,     0,     0,    76,
+      77,    78,    79,    80,    81,    82,     0,    83,    84,    85,
+      86,    87,     0,     0,    88,     0,     0,     0,     0,   152,
+     153,    89,    90,    91,   154,   155,   156,   157,     0,     0,
+      92,     0,     0,     0,     0,     0,   158,   159,   160,   161,
+     162,   163,   164,     0,   165,   166,   167,     0,     0,   168,
+     169,   170,     0,   171,   172,   173,   174,   175,     0,   176,
+     152,   153,     0,     0,     0,   154,   155,   156,   157,     0,
+       0,     0,     0,     0,     0,     0,     0,   158,   159,   160,
+     161,   162,   163,   164,     0,   165,   166,   167,     0,     0,
+     168,   169,   170,     0,   171,   172,   173,   174,   175,     0,
+     176,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   178,   179,     0,     0,     0,     0,   180,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   181,   182,
+       0,     0,   183,   184,   185,   186,     0,     0,     0,    91,
+       0,     0,     0,     0,     0,     0,   187,     0,     0,   576,
+       0,     0,     0,   178,   179,     0,     0,     0,     0,   180,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   181,
+     182,     0,     0,   183,   184,   185,   186,     0,     0,     0,
+     888,     0,     0,     0,     0,     0,     0,   187,     0,     0,
+     576
 };
 
 static const yytype_int16 yycheck[] =
 {
-      27,   233,    29,   179,   202,   287,    33,    36,   298,    36,
-     275,   383,   290,   141,   279,    42,   179,   416,   500,   580,
-     721,    22,   583,    18,    35,   179,     3,   309,   344,   233,
-     451,     3,     5,    23,   238,    47,   190,   238,     3,    23,
-      23,     4,     4,    23,    25,     3,   578,   734,   580,    60,
-      61,   583,    23,   328,   141,     3,    21,    22,    23,    71,
-      72,     3,     4,   338,    31,   104,   176,    79,     3,   179,
-     764,   346,   123,     3,   113,   124,   169,     3,   158,     3,
-     160,     3,   236,   490,    24,   106,   137,   108,   169,     3,
-       3,   112,     3,     3,   187,     3,     3,     3,   179,    20,
-      98,     3,   100,    24,   131,   233,     3,     3,     3,   138,
-     238,   138,     3,   125,     3,   127,   128,   125,   177,     3,
-     127,   528,   169,   150,   151,   179,    20,    21,    22,    23,
-      24,    25,   159,    80,    81,   189,    21,    22,    23,     3,
-     187,     3,    23,    24,    25,   169,   173,   429,     3,     4,
-     169,   577,   179,   126,   802,   803,    20,   176,    20,   585,
-      24,   169,    24,   190,    23,   866,   342,   194,     4,    20,
-      20,   347,   495,    24,    24,     3,   179,   500,   205,    20,
-      35,   868,   179,    24,   347,   212,   169,   179,   180,   169,
-     884,    13,    20,   347,   221,   179,    24,   180,   188,   226,
-     328,   179,   169,   180,   185,   186,    27,   383,   179,   236,
-     338,   189,   169,   262,   342,   187,   189,   169,   346,   246,
-     383,   922,   180,   188,   187,   187,   508,   509,   179,   383,
-     762,   763,   180,   765,   516,   179,   884,   276,   180,   179,
-      62,   328,   532,   282,   169,   180,   257,   286,   169,   539,
-     180,   338,   273,   569,   180,   342,   180,    33,   180,   346,
-     576,   633,   263,   635,   636,   547,   180,   180,   266,   180,
-     180,   298,   180,   180,   180,   302,   592,   304,   180,   359,
-     360,    21,    22,   180,   180,   180,   180,   415,   158,   180,
-     565,   180,   319,   320,   295,   316,   180,   324,   378,   379,
-     380,   381,   382,   188,   185,   186,   333,   334,   335,   336,
-     169,   391,   587,   588,   589,   590,   591,   312,   169,   169,
-     347,   180,   144,   176,   885,   179,   179,   179,    20,    21,
-      22,    23,    24,    25,   361,   179,     3,   179,   365,   366,
-     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
-     179,   772,   773,   885,   169,   169,   383,    24,   840,     3,
-       4,   176,   594,     3,   179,   847,     3,   394,   395,   396,
-     397,   398,   399,   400,   401,   402,   403,   404,   405,   406,
-     407,   408,   409,   410,   411,   412,   158,   209,   542,   416,
-     594,   595,   219,    23,   595,   141,   142,   424,   425,     4,
-     169,   577,   138,   139,   140,   937,   176,   179,     3,   585,
-     169,   233,   179,   240,   236,   179,   238,   239,   817,    23,
-      24,    25,   244,    20,    21,    22,    23,    24,    25,   801,
-     802,   803,   179,   189,   750,   179,   179,   565,   260,   841,
-     842,   843,   844,   733,   722,   179,   179,   712,   730,   577,
-     179,   767,   768,   769,   770,   771,   179,   585,   280,   587,
-     588,   589,   590,   591,   746,   492,   594,   595,   179,   496,
-     633,   179,   635,   636,    29,   487,   503,   179,   565,   683,
-     755,   502,   683,   179,   688,   639,   507,   688,   180,   510,
-     577,   179,   179,   179,   179,   317,   179,   179,   585,   321,
-     587,   588,   589,   590,   591,   532,   328,   179,   179,   179,
-     179,   538,   539,   179,   179,   542,   338,   840,   841,   842,
-     843,   844,   179,   179,   847,    80,    81,    82,   169,   142,
-     143,   169,     3,    20,    21,    22,    23,    24,    25,   566,
-       4,   169,   169,   825,     3,   158,   159,     3,   575,   162,
-     163,   164,   165,     5,   109,   683,   111,   112,   113,   169,
-     688,   116,   117,   176,   119,   120,     3,   883,    21,    22,
-      23,    24,    25,   602,     3,   602,   603,   169,   179,   169,
-     870,   169,   169,   865,   180,     4,     3,   176,   764,     3,
-     176,     3,     5,   132,   876,   179,   179,    30,     3,   753,
-      20,    21,    22,    23,    24,    25,   633,     3,   635,   636,
-       3,     3,   639,   640,   189,     3,   180,   180,   705,     3,
-       3,    24,   179,   169,   169,   823,   169,   755,   179,   169,
-     657,   658,   180,     3,     5,   662,   764,   664,   801,   802,
-     803,   668,   180,   176,   180,     3,     3,   801,    25,   881,
-     179,     3,     3,     3,   681,   682,     4,   180,   180,   169,
-      84,   180,   180,    24,    24,   179,     4,   694,   755,   696,
-      24,   169,   180,   169,    23,   180,     4,   764,   126,     5,
-       3,     7,     8,     9,    10,    11,   713,    13,    14,    15,
-      16,    17,    18,   180,   180,    21,    22,    23,    24,    25,
-      20,     3,     5,   180,   169,   180,   733,   169,   884,     5,
-     180,   180,   180,   180,   180,     3,   188,   180,   745,    24,
-       5,     3,   749,   180,   126,     3,   753,     5,     5,     7,
-       8,     9,    10,    11,   180,    13,    14,    15,    16,    17,
-      18,   169,   169,    21,    22,    23,    24,    25,     4,     5,
-      10,     7,     8,     9,    10,    11,   884,    13,    14,    15,
-      16,    17,    18,   260,   918,    21,    22,    23,    24,    25,
-      14,   776,   594,   595,   801,   802,   803,   692,   774,   430,
-     696,   499,   512,   538,   269,   494,    77,   529,   305,   726,
-     817,   818,   853,   851,     3,   418,     5,   884,     7,     8,
-       9,    10,    11,   682,    13,    14,    15,    16,    17,    18,
-     902,   954,    21,    22,    23,    24,    25,   753,   874,   958,
-     144,   556,   749,   755,   851,   141,   853,   347,   855,   383,
-     558,   594,    -1,   595,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   870,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   674,    -1,    -1,    -1,    -1,    -1,    -1,   185,
-     186,   683,    -1,   189,    -1,    -1,   688,    -1,   690,    -1,
-      -1,    -1,   899,    -1,   901,   902,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   918,    -1,    -1,    -1,    -1,    -1,   719,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   932,    -1,   185,   186,    -1,
-      -1,    -1,    -1,    -1,   941,    -1,    -1,    -1,    -1,    -1,
-     947,     0,     1,   950,   180,    -1,    -1,    -1,    -1,   185,
-     186,    -1,    -1,   755,    -1,    -1,   963,    -1,    -1,    -1,
-     967,    -1,    -1,   970,   971,    -1,    -1,    -1,    27,   976,
-      29,    -1,    -1,    32,    33,    34,    35,    36,    37,    38,
-      -1,    -1,    41,    42,    43,    -1,    -1,    -1,    -1,    48,
-      49,    -1,    -1,    -1,    53,    54,   185,   186,    -1,    -1,
-      -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    67,    68,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    78,
-      -1,    80,    81,    -1,    83,    -1,    85,    86,    87,    88,
-      89,    -1,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,    -1,    -1,
-     109,   110,   111,    -1,   113,   114,   115,    -1,   117,   118,
-     119,    -1,    -1,   122,    -1,   124,    -1,    -1,   127,   128,
-     129,   130,    -1,    -1,   133,   134,   135,    -1,    -1,   881,
-      -1,    -1,   141,    -1,    -1,   144,   145,   146,   147,   148,
-     149,   150,   151,    -1,   153,   154,   155,   156,   157,    -1,
-      -1,   160,    -1,    -1,    -1,   907,    -1,    -1,   167,   168,
-     169,    -1,    -1,    -1,    -1,    -1,    -1,   176,   177,     3,
-      -1,     5,    -1,     7,     8,     9,    10,    11,   187,    13,
+      26,   177,    28,   200,   140,    35,    32,   297,    13,    35,
+     274,   177,   188,   289,   278,    41,   414,   716,    46,   499,
+     105,   327,   107,   231,    18,   579,   111,   231,   582,     5,
+       3,   337,   236,   449,   236,    34,     3,   140,     4,     3,
+     346,   177,    70,    71,     4,    24,     3,     4,     3,    23,
+      78,     3,    23,     3,    31,   381,    61,   123,   234,   489,
+      59,    60,   494,   729,    33,     3,    35,   499,   103,     5,
+     140,    21,    22,    23,     3,     3,   125,   112,     3,   177,
+     577,   344,   579,   793,   794,   582,   759,     3,     3,     3,
+      23,     3,     3,     3,     3,     4,   124,   527,   126,   127,
+       3,     3,     3,    23,   130,   169,   169,   137,     3,     3,
+       3,   137,     3,     3,     3,   179,    23,    20,   169,   169,
+     169,    24,   148,   149,   187,   158,    35,    97,   231,    99,
+     169,   157,   179,   236,    21,    22,    23,   187,   143,    20,
+      21,    22,    23,    24,    25,   171,   179,     3,    23,   217,
+     126,   177,     3,    25,   169,   179,    23,    24,    25,    20,
+     123,   176,   188,    24,   863,   189,   192,     5,    24,    20,
+     238,   347,   882,    24,   137,    20,    20,   203,   179,    24,
+      24,   347,   286,   176,   210,    20,   179,   272,   189,    24,
+     126,   327,   169,   219,   260,   169,    80,    81,   224,   865,
+     179,   337,   207,     4,   308,   381,   342,   180,   234,   882,
+     346,   347,   156,   189,   158,   381,   180,   188,   244,   127,
+     187,   187,   921,   180,   327,   180,   231,   187,   180,   234,
+     315,   236,   237,   179,   337,   169,   169,   242,   188,   342,
+     275,   531,   180,   346,    27,   381,   281,   180,   538,   179,
+     285,   180,   180,   258,   158,   180,   255,   327,   564,   179,
+     757,   758,   169,   760,   180,   180,   180,   337,   180,   180,
+     180,   297,   342,   180,   279,   301,   346,   303,   180,   180,
+     586,   587,   588,   589,   590,   180,   180,   180,   126,   180,
+     180,   180,   318,   319,   179,   265,   179,   323,   169,   180,
+     626,   188,   628,   629,   179,   568,   332,   333,   334,   335,
+     413,   316,   575,   185,   186,   320,   179,   311,   185,   186,
+     179,   347,   327,   427,   169,   169,   261,   262,   591,   883,
+     179,   180,   337,   359,   169,    21,    22,   363,   364,   365,
+     366,   367,   368,   369,   370,   371,   372,   373,   374,   179,
+     576,   767,   768,   169,   179,   381,   169,   837,   584,   294,
+     176,     3,     4,   179,   844,   541,   392,   393,   394,   395,
+     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   593,   883,     3,   414,   593,
+     594,   176,   594,     3,   179,    23,   422,   423,     3,   838,
+     839,   840,   841,   507,   508,   837,   838,   839,   840,   841,
+     808,   515,   844,   357,   358,    20,   501,   140,   141,    24,
+       4,   506,   169,   176,   509,   138,   139,   140,   564,    23,
+      24,    25,   376,   377,   378,   379,   380,     3,   728,   936,
+     576,   717,   546,   707,   750,   389,   179,   169,   584,   179,
+     586,   587,   588,   589,   590,   179,   632,   485,   179,   179,
+     626,   564,   628,   629,   179,   491,   792,   793,   794,   495,
+     179,   179,   676,   576,   676,   179,   502,   681,   179,   681,
+     179,   584,   745,   586,   587,   588,   589,   590,   179,   179,
+     593,   594,   179,   189,   564,   179,   179,   179,   179,   762,
+     763,   764,   765,   766,   179,   531,   576,   179,   179,   179,
+     179,   537,   538,   179,   584,   541,   586,   587,   588,   589,
+     590,   179,   179,   169,     5,   169,     7,     8,     9,    10,
+      11,     3,    13,    14,    15,    16,    17,    18,     4,   565,
+      21,    22,    23,    24,    25,   169,   169,     3,   574,     3,
+      20,    21,    22,    23,    24,    25,    20,    21,    22,    23,
+      24,    25,     5,   169,     3,   595,   169,   179,   169,   595,
+     596,   169,   748,   676,     3,     3,   169,   867,   681,     4,
+      11,   180,    13,    14,    15,    16,    17,    18,   593,   594,
+      21,    22,    23,    24,    25,    21,    22,    23,    24,    25,
+     626,   176,   628,   629,     3,   176,   632,   633,    20,    21,
+      22,    23,    24,    25,   750,     5,   792,   814,   881,     3,
+     179,   725,   179,   759,   650,   651,   792,   793,   794,   655,
+     700,   657,   132,     3,     3,   661,     3,   741,    20,    21,
+      22,    23,    24,    25,     3,   749,   189,   750,   674,   675,
+       3,   180,   180,     3,     3,   179,   759,   169,    24,   179,
+     169,   687,   667,   689,   169,   179,   169,   180,     3,   180,
+     878,   676,     5,   180,   176,     3,   681,     3,   683,    25,
+     750,     3,   708,    13,    14,    15,    16,    17,    18,   759,
+       3,    21,    22,    23,    24,    25,     3,   180,   179,     4,
+     180,   169,   728,    84,   185,   186,   180,   180,   189,   714,
+     180,    30,   816,    24,   740,    24,   180,   179,   744,     9,
+      10,    11,   748,    13,    14,    15,    16,    17,    18,    24,
+      23,    21,    22,    23,    24,    25,     4,   169,   180,   169,
+     180,   917,     4,   126,     3,   750,   882,    20,     3,     5,
+     169,   169,     5,   180,   185,   186,   179,     3,   862,   180,
+     180,    24,    29,   180,   180,   180,   792,   793,   794,   873,
+     180,   180,   180,     3,   188,   126,   180,   180,   169,   882,
+     169,   258,   808,   809,    10,     3,    14,     5,   906,     7,
+       8,     9,    10,    11,   904,    13,    14,    15,    16,    17,
+      18,   428,   528,    21,    22,    23,    24,    25,   685,   689,
+     498,   511,   882,    80,    81,    82,   268,   493,   537,   304,
+     416,   721,   848,   848,   850,    76,   852,    13,    14,    15,
+      16,    17,    18,   850,   675,    21,    22,    23,    24,    25,
+     897,   867,   109,   748,   111,   112,   113,   955,   871,   116,
+     117,   143,   119,   120,   959,   185,   186,   555,   142,   143,
+     140,   347,   744,   381,   750,   557,   593,    -1,   894,   594,
+     896,   897,    -1,   878,   158,   159,    -1,    -1,   162,   163,
+     164,   165,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   917,   176,    -1,    -1,   185,   186,   902,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   939,    -1,    -1,    -1,    -1,    -1,   945,
+      -1,    -1,   948,     0,     1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   964,    -1,
+      -1,    -1,    -1,   969,   970,    -1,    -1,   973,   974,    -1,
+      27,    -1,    29,    -1,   980,    32,    33,    34,    35,    36,
+      37,    38,    -1,    -1,    41,    42,    43,   185,   186,    -1,
+      -1,    48,    49,    -1,    -1,    -1,    53,    54,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,
+      67,    68,    -1,    -1,    -1,    72,    -1,    -1,    -1,   185,
+     186,    78,    -1,    80,    81,    -1,    83,    -1,    85,    86,
+      87,    88,    89,    -1,    91,    92,    93,    94,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+      -1,    -1,   109,   110,   111,    -1,   113,   114,   115,    -1,
+     117,   118,   119,    -1,    -1,   122,    -1,   124,    -1,    -1,
+     127,   128,   129,   130,    -1,    -1,   133,   134,   135,    -1,
+      -1,    -1,    -1,    -1,   141,    -1,    -1,   144,   145,   146,
+     147,   148,   149,   150,   151,    -1,   153,   154,   155,   156,
+     157,    -1,    -1,   160,    -1,    -1,    -1,    -1,    -1,    -1,
+     167,   168,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176,
+     177,     3,    -1,     5,    -1,     7,     8,     9,    10,    11,
+     187,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,
+      -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,
+      62,    -1,    64,    65,    66,    -1,    -1,    69,    70,    71,
+      -1,    73,    74,    75,    76,    77,     3,    79,     5,    -1,
+       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,     3,
+      -1,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
       14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
       24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    56,    57,    58,    59,    60,    61,    62,    -1,
-      64,    65,    66,    -1,    -1,    69,    70,    71,    -1,    73,
-      74,    75,    76,    77,     3,    79,     5,    -1,     7,     8,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,     3,    -1,     5,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     142,   143,    -1,    -1,    -1,    -1,   148,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,
+     162,   163,   164,   165,    -1,    -1,    -1,   169,    -1,    -1,
+      -1,    -1,    -1,    -1,   176,    -1,    -1,   179,    -1,    -1,
+      -1,    -1,    -1,   185,   186,     3,    -1,     5,    -1,     7,
+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,     3,    -1,
+       5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,     3,    -1,     5,    -1,     7,     8,     9,    10,    11,
+      -1,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,   185,   186,
+      -1,    -1,    -1,    -1,    -1,    -1,     4,     5,    -1,     7,
+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      18,   185,   186,    21,    22,    23,    24,    25,     4,     5,
       -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
       16,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,   143,
-      -1,    -1,    -1,    -1,   148,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,   163,
-     164,   165,    -1,    -1,    -1,   169,    -1,    -1,    -1,    -1,
-      -1,    -1,   176,    -1,    -1,   179,    -1,    -1,    -1,    -1,
-      -1,   185,   186,     3,    -1,     5,    -1,     7,     8,     9,
-      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,     3,    -1,     5,    -1,
-       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,     4,
+       4,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
+      14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,     4,     5,    -1,     7,     8,     9,    10,    11,
+      -1,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,   186,    -1,
+      -1,    -1,    -1,    -1,    -1,     4,     5,    -1,     7,     8,
+       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
+     185,   186,    21,    22,    23,    24,    25,    -1,    -1,     5,
+      -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
+      16,    17,    18,   185,   186,    21,    22,    23,    24,    25,
        5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
       15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    -1,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,
-      -1,    -1,    -1,    -1,     4,     5,    -1,     7,     8,     9,
+      25,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,
+      -1,    -1,    -1,    -1,    -1,     5,    -1,     7,     8,     9,
       10,    11,    -1,    13,    14,    15,    16,    17,    18,   185,
-     186,    21,    22,    23,    24,    25,     4,     5,    -1,     7,
+     186,    21,    22,    23,    24,    25,    -1,     5,    -1,     7,
        8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,     4,     5,
+      18,   185,   186,    21,    22,    23,    24,    25,    -1,     5,
       -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      16,    17,    18,   185,   186,    21,    22,    23,    24,    25,
        5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
       15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
-      14,    15,    16,    17,    18,   185,   186,    21,    22,    23,
-      24,    25,    -1,    -1,     5,    -1,     7,     8,     9,    10,
-      11,    -1,    13,    14,    15,    16,    17,    18,   185,   186,
-      21,    22,    23,    24,    25,    -1,     5,    -1,     7,     8,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
-     185,   186,    21,    22,    23,    24,    25,     5,    -1,     7,
-       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,
-      -1,    -1,    -1,     5,    -1,     7,     8,     9,    10,    11,
-      -1,    13,    14,    15,    16,    17,    18,   185,   186,    21,
-      22,    23,    24,    25,    -1,     5,    -1,     7,     8,     9,
-      10,    11,    -1,    13,    14,    15,    16,    17,    18,   185,
-     186,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      25,    -1,     5,    -1,     7,     8,     9,    10,    11,    -1,
+      13,    14,    15,    16,    17,    18,   185,   186,    21,    22,
+      23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,   185,
+     186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,
-     185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,
-      -1,   185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
-      -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,     5,
-      -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,
-      -1,    -1,    -1,   185,   186,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     180,    -1,    -1,    -1,    -1,   185,   186,     5,    -1,     7,
-       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,     5,    -1,
-       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,     5,
-      -1,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-       5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
-      15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
-      14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,   185,
-     186,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
-      14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,     5,    -1,     7,     8,     9,    10,    11,    -1,
+     185,   186,     5,    -1,     7,     8,     9,    10,    11,    -1,
       13,    14,    15,    16,    17,    18,    -1,    -1,    21,    22,
       23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,
-      -1,    -1,   169,    -1,     5,    -1,     7,     8,     9,    10,
-      11,    -1,    13,    14,    15,    16,    17,    18,   185,   186,
-      21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,   185,
      186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,
      185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,
-      -1,   185,   186,     5,    -1,     7,     8,     9,    10,    11,
-      -1,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,
-      -1,   185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,
       -1,    -1,   185,   186,     5,    -1,     7,     8,     9,    10,
       11,    -1,    13,    14,    15,    16,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
-      -1,    -1,    -1,    -1,   185,   186,     5,    -1,     7,     8,
+      21,    22,    23,    24,    25,     5,    -1,     7,     8,     9,
+      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,
+      -1,    -1,   185,   186,     5,    -1,     7,     8,     9,    10,
+      11,    -1,    13,    14,    15,    16,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,     5,    -1,     7,     8,     9,
+      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,     5,    -1,     7,     8,
        9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
       -1,    -1,    21,    22,    23,    24,    25,     5,    -1,     7,
@@ -2380,52 +2383,62 @@
        7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
       17,    18,    -1,    -1,    21,    22,    23,    24,    25,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,
-      -1,    -1,    -1,   185,   186,     5,    -1,     7,     8,     9,
-      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,     5,    -1,     7,     8,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
-      -1,    -1,    -1,    -1,   185,   186,     5,    -1,     7,     8,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,   169,
+      -1,     5,    -1,     7,     8,     9,    10,    11,    -1,    13,
+      14,    15,    16,    17,    18,   185,   186,    21,    22,    23,
+      24,    25,     5,    -1,     7,     8,     9,    10,    11,    -1,
+      13,    14,    15,    16,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,   180,
+      -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,
        5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
       15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
       25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   180,    -1,    -1,    -1,    -1,   185,   186,     5,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,
+      -1,   185,   186,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,
+      -1,    -1,   185,   186,     5,    -1,     7,     8,     9,    10,
+      11,    -1,    13,    14,    15,    16,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,     5,    -1,     7,     8,     9,
+      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,     5,    -1,     7,     8,
+       9,    10,    11,    -1,    13,    14,    15,    16,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,     5,    -1,     7,
+       8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,     5,    -1,
        7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
       17,    18,    -1,    -1,    21,    22,    23,    24,    25,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   180,    -1,    -1,    -1,    -1,   185,   186,     5,    -1,
-       7,     8,     9,    10,    11,    -1,    13,    14,    15,    16,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,     9,
-      10,    11,    -1,    13,    14,    15,    16,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    -1,    -1,    -1,    -1,
-      -1,    -1,    11,     4,    13,    14,    15,    16,    17,    18,
-      -1,    12,    21,    22,    23,    24,    25,    -1,    -1,    -1,
-      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    39,    40,
-     185,   186,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
-      61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
-      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    13,
-      14,    15,    16,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,
+      -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,    -1,    -1,
+     185,   186,     5,    -1,     7,     8,     9,    10,    11,    -1,
       13,    14,    15,    16,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    -1,    -1,    -1,    -1,    -1,    -1,    21,
-      22,    23,    -1,    25,    -1,    -1,    -1,    -1,    -1,    -1,
-     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,   186,
-      -1,   142,   143,    -1,    -1,    -1,    -1,   148,    50,    51,
-      52,    -1,    -1,    55,    -1,   185,   186,   158,   159,    -1,
-      12,   162,   163,   164,   165,    -1,    -1,    -1,   169,    21,
-      22,    -1,    -1,    -1,    -1,   176,   185,   186,   179,    -1,
+      23,    24,    25,     5,    -1,     7,     8,     9,    10,    11,
+      -1,    13,    14,    15,    16,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    -1,    -1,    -1,    -1,    -1,    38,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,
+      -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,
+     180,    -1,    -1,    -1,    -1,   185,   186,    -1,    -1,    78,
+      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    88,
+      89,   180,    -1,    -1,    -1,    -1,   185,   186,    -1,    98,
+      99,   100,   101,   102,   103,   104,   105,    -1,    -1,    -1,
+      -1,    -1,   180,    -1,    -1,    -1,    -1,   185,   186,   118,
+      -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   180,   133,    -1,   135,    -1,   185,   186,
+       5,    -1,     7,     8,     9,    10,    11,    -1,    13,    14,
+      15,    16,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,    -1,
+     169,    -1,   185,   186,    -1,    -1,    -1,   176,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   180,    -1,
+      -1,    -1,    -1,   185,   186,     5,    -1,     7,     8,     9,
+      10,    11,     4,    13,    14,    15,    16,    17,    18,    -1,
+      12,    21,    22,    23,    24,    25,    -1,    -1,    -1,    21,
+      22,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,
       -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
@@ -2433,64 +2446,64 @@
       62,    -1,    64,    65,    66,    -1,    -1,    69,    70,    71,
       -1,    73,    74,    75,    76,    77,    -1,    79,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     142,   143,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   185,   186,    21,    22,    23,   158,   159,    -1,    -1,
-     162,   163,   164,   165,    -1,    -1,    -1,   169,    -1,    -1,
-      -1,    -1,   185,   186,   176,    -1,    -1,   179,    -1,   131,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-     142,   143,    -1,    -1,    -1,    -1,   148,     4,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    12,   158,   159,    -1,    -1,
-     162,   163,   164,   165,    21,    22,    -1,   169,    -1,    -1,
-      -1,    -1,    -1,    -1,   176,    -1,    -1,   179,    -1,    -1,
-      -1,    -1,    39,    40,    -1,   187,    -1,    44,    45,    46,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
-      57,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
-      -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
-      77,    -1,    79,    -1,   142,   143,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    21,    22,    -1,    -1,    -1,    -1,    -1,
-     158,   159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,
-      -1,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,
-      -1,   179,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    -1,    -1,   131,     4,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
-      -1,   148,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    -1,
-      39,    40,   169,    -1,    -1,    44,    45,    46,    47,   176,
-      -1,    -1,   179,    -1,    -1,    -1,    -1,    56,    57,    58,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,
+      -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,
+      62,    -1,    64,    65,    66,   180,    -1,    69,    70,    71,
+     185,   186,    74,    75,    76,    77,    -1,    79,    -1,   131,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,
+     142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,
+     162,   163,   164,   165,    -1,    39,    40,   169,    -1,    -1,
+      44,    45,    46,    47,   176,   185,   186,   179,    -1,    -1,
+      -1,    -1,    56,    57,    58,    59,    60,    61,    62,    -1,
+      64,    65,    66,    -1,    -1,    69,    70,    71,    -1,    73,
+      74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   169,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,   143,
+      -1,    -1,    -1,    -1,   148,     4,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    12,   158,   159,    -1,    -1,   162,   163,
+     164,   165,    21,    22,    -1,   169,    -1,    -1,    -1,    -1,
+      -1,    -1,   176,    -1,    -1,   179,    -1,    -1,    -1,    -1,
+      39,    40,    -1,   187,    -1,    44,    45,    46,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    58,
       59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
       69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
-      79,    -1,    -1,    -1,   142,   143,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     158,   159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,
-      -1,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,
-      -1,   179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   131,    -1,     5,    -1,    -1,    -1,    -1,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   131,     4,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
-      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+      21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
      159,    -1,    -1,   162,   163,   164,   165,    -1,    39,    40,
      169,    -1,    -1,    44,    45,    46,    47,   176,    -1,    -1,
      179,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
       61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
-      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    40,
-      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
-      61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
-      71,    -1,    -1,    74,    75,    76,    77,    -1,    79,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      131,    -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,    12,
       -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
-      -1,    24,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
+      23,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
       -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
       -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
       -1,    -1,    -1,    56,    57,    58,    59,    60,    61,    62,
       -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
-      73,    74,    75,    76,    77,    -1,    79,    -1,   169,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
        5,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
-     143,    -1,    -1,    -1,    -1,   148,    21,    22,    23,    -1,
+     143,    -1,    -1,    -1,    -1,   148,    21,    22,    -1,    24,
       -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,
      163,   164,   165,    -1,    39,    40,   169,    -1,    -1,    44,
@@ -2499,11 +2512,11 @@
       65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
       75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,     5,    -1,
       -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
-      -1,    -1,    -1,   148,    21,    22,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   148,    21,    22,    23,    -1,    -1,    -1,
       -1,    -1,    -1,   158,   159,    -1,    -1,   162,   163,   164,
      165,    -1,    39,    40,   169,    -1,    -1,    44,    45,    46,
@@ -2512,8 +2525,8 @@
       -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
       77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   131,    -1,     5,    -1,    -1,    -1,
       -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
@@ -2525,8 +2538,8 @@
       69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
       79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   131,    -1,     5,    -1,    -1,    -1,    -1,    -1,
       -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
@@ -2537,12 +2550,12 @@
       61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
       71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     131,    -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,    12,
       -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
-      23,    -1,    25,    -1,    -1,    -1,    -1,   158,   159,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
       -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
       -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
@@ -2550,8 +2563,72 @@
       -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
       73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
+     143,    -1,    -1,    -1,    -1,   148,    21,    22,    23,    -1,
+      25,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,
+     163,   164,   165,    -1,    39,    40,   169,    -1,    -1,    44,
+      45,    46,    47,   176,    -1,    -1,   179,    -1,    -1,    -1,
+      -1,    56,    57,    58,    59,    60,    61,    62,    -1,    64,
+      65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
+      75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
+      -1,    -1,    -1,   148,    21,    22,    23,    -1,    -1,    -1,
+      -1,    -1,    -1,   158,   159,    -1,    -1,   162,   163,   164,
+     165,    -1,    39,    40,   169,    -1,    -1,    44,    45,    46,
+      47,   176,    -1,    -1,   179,    -1,    -1,    -1,    -1,    56,
+      57,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
+      -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
+      77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
+      -1,   148,    21,    22,    23,    -1,    -1,    -1,    -1,    -1,
+      -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    -1,
+      39,    40,   169,    -1,    -1,    44,    45,    46,    47,   176,
+      -1,    -1,   179,    -1,    -1,    -1,    -1,    56,    57,    58,
+      59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+      69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
+      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+     159,    -1,    -1,   162,   163,   164,   165,    -1,    39,    40,
+     169,    -1,    -1,    44,    45,    46,    47,   176,    -1,    -1,
+     179,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
+      61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
+      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
+      -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
+      23,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
+      -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
+      -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
+      -1,    -1,    -1,    56,    57,    58,    59,    60,    61,    62,
+      -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
+      73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
@@ -2563,8 +2640,8 @@
       65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
       75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
@@ -2576,11 +2653,11 @@
       -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
       77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
-      -1,   148,    21,    22,    23,    -1,    -1,    -1,    -1,    -1,
+      -1,   148,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    -1,
       39,    40,   169,    -1,    -1,    44,    45,    46,    47,   176,
@@ -2589,11 +2666,11 @@
       69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
       79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
-      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+      21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
      159,    -1,    -1,   162,   163,   164,   165,    -1,    39,    40,
      169,    -1,    -1,    44,    45,    46,    47,   176,    -1,    -1,
@@ -2601,12 +2678,12 @@
       61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
       71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
       -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
-      23,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
       -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
       -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
@@ -2614,11 +2691,11 @@
       -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
       73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
-     143,    -1,    -1,    -1,    -1,   148,    21,    22,    23,    -1,
+     143,    -1,    -1,    -1,    -1,   148,    21,    22,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,
      163,   164,   165,    -1,    39,    40,   169,    -1,    -1,    44,
@@ -2627,8 +2704,8 @@
       65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
       75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
@@ -2640,8 +2717,8 @@
       -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
       77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    12,    -1,   142,   143,    -1,    -1,    -1,
@@ -2652,101 +2729,67 @@
       59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
       69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
+      79,    21,    22,    23,    -1,    25,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      40,    -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,
+      50,    51,    52,    -1,    -1,    55,    56,    57,    58,    59,
+      60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    69,
+      70,    71,   131,    73,    74,    75,    76,    77,    -1,    79,
+      -1,    -1,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+     159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,    -1,
+     169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,
+     179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,
+      -1,    -1,   162,   163,   164,   165,    21,    22,    23,   169,
+      -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,   179,
+      -1,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,    44,
+      45,    46,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    56,    57,    58,    59,    60,    61,    62,    -1,    64,
+      65,    66,    21,    22,    69,    70,    71,    -1,    73,    74,
+      75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
+      39,    40,    -1,    -1,    -1,    44,    45,    46,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    56,    57,    58,
+      59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+      69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
       79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    12,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
-      21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
-     159,    -1,    -1,   162,   163,   164,   165,    -1,    39,    40,
-     169,    -1,    -1,    44,    45,    46,    47,   176,    -1,    -1,
-     179,    -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,
-      61,    62,    -1,    64,    65,    66,    -1,    -1,    69,    70,
-      71,    -1,    73,    74,    75,    76,    77,    -1,    79,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
-      -1,   142,   143,    -1,    -1,    -1,    -1,   148,    21,    22,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,    -1,
-      -1,   162,   163,   164,   165,    -1,    39,    40,   169,    -1,
-      -1,    44,    45,    46,    47,   176,    -1,    -1,   179,    -1,
-      -1,    -1,    -1,    56,    57,    58,    59,    60,    61,    62,
-      -1,    64,    65,    66,    -1,    -1,    69,    70,    71,    -1,
-      73,    74,    75,    76,    77,    -1,    79,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,   142,
-     143,    -1,    -1,    -1,    -1,   148,    21,    22,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   158,   159,    -1,    -1,   162,
-     163,   164,   165,    -1,    39,    40,   169,    -1,    -1,    44,
-      45,    46,    47,   176,    -1,    -1,   179,    -1,    -1,    -1,
-      -1,    56,    57,    58,    59,    60,    61,    62,    -1,    64,
-      65,    66,    -1,    -1,    69,    70,    71,    -1,    73,    74,
-      75,    76,    77,    -1,    79,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    12,    -1,   142,   143,    -1,
-      -1,    -1,    -1,   148,    21,    22,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,   143,    -1,
+      -1,    -1,    -1,   148,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   158,   159,    -1,    -1,   162,   163,   164,
-     165,    -1,    39,    40,   169,    -1,    -1,    44,    45,    46,
-      47,   176,    -1,    -1,   179,    -1,    -1,    -1,    -1,    56,
-      57,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
-      -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
-      77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,   131,    29,    -1,    -1,    32,    33,
-      34,    35,    -1,    -1,    38,   142,   143,    41,    42,    43,
-      -1,   148,    -1,    -1,    48,    49,    -1,    -1,    -1,    -1,
-      -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    63,
-      -1,    -1,   169,    67,    68,    -1,    -1,    -1,    72,   176,
-      -1,    -1,   179,    -1,    78,    -1,    80,    81,    -1,    83,
-      -1,    85,    86,    87,    88,    89,    -1,    91,    92,    93,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,    -1,    -1,   109,   110,   111,    -1,   113,
-     114,   115,    -1,   117,   118,   119,    -1,    -1,   122,    -1,
-     124,    -1,    -1,   127,   128,   129,   130,    -1,    -1,   133,
-     134,   135,    -1,    -1,    -1,    -1,    -1,   141,    -1,    -1,
-      -1,   145,   146,   147,   148,   149,   150,   151,    -1,   153,
-     154,   155,   156,   157,    -1,    -1,   160,    -1,    -1,    -1,
-      -1,    39,    40,   167,   168,   169,    44,    45,    46,    47,
-      -1,    -1,   176,    -1,    -1,    -1,    -1,    -1,    56,    57,
-      58,    59,    60,    61,    62,    -1,    64,    65,    66,    -1,
-      -1,    69,    70,    71,    -1,    73,    74,    75,    76,    77,
-      -1,    79,    39,    40,    -1,    -1,    -1,    44,    45,    46,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
-      57,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
-      -1,    -1,    69,    70,    71,    -1,    73,    74,    75,    76,
-      77,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,    -1,    -1,    -1,   142,   143,    -1,    -1,    -1,    -1,
-     148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     158,   159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,
-      38,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,
-      -1,   179,    -1,    -1,    -1,   142,   143,    -1,    -1,    -1,
-      -1,   148,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,
-      -1,   158,   159,    -1,    -1,   162,   163,   164,   165,    -1,
-      78,    -1,   169,    -1,    -1,    83,    84,    -1,    -1,   176,
-      88,    89,   179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      98,    99,   100,   101,   102,   103,   104,   105,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-     118,    -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   133,    -1,   135,    -1,    -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -1,   169,    -1,    -1,    -1,    -1,    -1,    -1,   176
+     165,    -1,    -1,    -1,   169,    -1,    -1,    -1,    -1,    -1,
+      -1,   176,    -1,    29,   179,    -1,    32,    33,    34,    35,
+      -1,    -1,    38,   142,   143,    41,    42,    43,    -1,   148,
+      -1,    -1,    48,    49,    -1,    -1,    -1,    -1,    -1,   158,
+     159,    -1,    -1,   162,   163,   164,   165,    63,    -1,    -1,
+     169,    67,    68,    -1,    -1,    -1,    72,   176,    -1,    -1,
+     179,    -1,    78,    -1,    80,    81,    -1,    83,    -1,    85,
+      86,    87,    88,    89,    -1,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,    -1,    -1,   109,   110,   111,    -1,   113,   114,   115,
+      -1,   117,   118,   119,    -1,    -1,   122,    -1,   124,    -1,
+      -1,   127,   128,   129,   130,    -1,    -1,   133,   134,   135,
+      -1,    -1,    -1,    -1,    -1,   141,    -1,    -1,    -1,   145,
+     146,   147,   148,   149,   150,   151,    -1,   153,   154,   155,
+     156,   157,    -1,    -1,   160,    -1,    -1,    -1,    -1,    39,
+      40,   167,   168,   169,    44,    45,    46,    47,    -1,    -1,
+     176,    -1,    -1,    -1,    -1,    -1,    56,    57,    58,    59,
+      60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    69,
+      70,    71,    -1,    73,    74,    75,    76,    77,    -1,    79,
+      39,    40,    -1,    -1,    -1,    44,    45,    46,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    58,
+      59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+      69,    70,    71,    -1,    73,    74,    75,    76,    77,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,   159,
+      -1,    -1,   162,   163,   164,   165,    -1,    -1,    -1,   169,
+      -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,   179,
+      -1,    -1,    -1,   142,   143,    -1,    -1,    -1,    -1,   148,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   158,
+     159,    -1,    -1,   162,   163,   164,   165,    -1,    -1,    -1,
+     169,    -1,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,
+     179
 };
 
@@ -2757,100 +2800,101 @@
        0,   191,     0,     1,    36,    37,    53,    54,   144,   177,
      187,   192,   197,   199,   205,   201,   198,   177,   200,    29,
-      32,    34,    35,    38,    41,    42,    43,    48,    49,    63,
-      67,    68,    72,    78,    80,    81,    83,    85,    86,    87,
-      88,    89,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   109,   110,
-     111,   113,   114,   115,   117,   118,   119,   122,   124,   127,
-     128,   129,   130,   133,   134,   135,   141,   145,   146,   147,
-     148,   149,   150,   151,   153,   154,   155,   156,   157,   160,
-     167,   168,   169,   176,   193,   194,   195,   202,   203,   206,
-     212,   224,   225,   228,   229,   234,   235,   237,   238,   239,
-     240,   241,   243,   244,   251,   253,   257,   258,   261,   262,
-     263,   298,   308,   309,   315,   316,   317,   318,   319,   321,
-     326,   327,   328,   330,   331,   333,   336,   337,   340,   341,
-     349,   351,   352,   365,   372,   201,   205,   169,   204,   204,
-     179,    12,    21,    22,    39,    40,    44,    45,    46,    47,
-      56,    57,    58,    59,    60,    61,    62,    64,    65,    66,
-      69,    70,    71,    73,    74,    75,    76,    77,    79,   131,
-     142,   143,   148,   158,   159,   162,   163,   164,   165,   176,
-     179,   280,   281,   283,   284,   288,   290,   291,   292,   293,
-     298,   299,   300,   307,   320,   179,   187,   280,   304,   179,
-     217,   218,   179,   280,   303,     4,   187,   221,   187,   221,
-     304,   179,   169,   187,   324,   176,   179,   364,   280,   169,
-     325,   169,   324,   179,   169,   176,   179,   346,   179,   179,
-     221,   221,    20,    24,   247,   298,   179,   216,   123,   137,
-     127,   324,   324,   169,   252,    80,    81,   213,   275,   324,
-      27,   196,   198,    33,   196,   158,   207,   196,   169,   179,
-     249,   250,   169,   226,   231,     3,   248,   169,   230,   247,
-       3,   236,   248,     3,   248,     3,   248,   169,   245,   246,
-     247,     3,     4,    35,   222,   223,   255,   271,   169,   176,
-     268,    23,   179,   259,    23,   179,   266,    23,     4,   329,
-     169,   310,   200,   324,   324,   324,   176,   323,   280,     5,
-     126,   189,   332,     3,   179,   334,   169,   304,   179,   345,
-      21,    22,    23,    50,    51,    52,    55,   169,   179,   288,
+      32,    34,    38,    41,    42,    43,    48,    49,    63,    67,
+      68,    72,    78,    80,    81,    83,    85,    86,    87,    88,
+      89,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   109,   110,   111,
+     113,   114,   115,   117,   118,   119,   122,   124,   127,   128,
+     129,   130,   133,   134,   135,   141,   145,   146,   147,   148,
+     149,   150,   151,   153,   154,   155,   156,   157,   160,   167,
+     168,   169,   176,   193,   194,   195,   202,   203,   206,   212,
+     224,   225,   228,   229,   234,   235,   237,   238,   239,   240,
+     241,   243,   244,   251,   253,   257,   258,   261,   262,   263,
+     298,   308,   309,   315,   316,   317,   318,   319,   321,   326,
+     327,   328,   330,   331,   333,   336,   337,   340,   341,   349,
+     351,   352,   365,   372,   201,   205,   169,   204,   179,    12,
+      21,    22,    39,    40,    44,    45,    46,    47,    56,    57,
+      58,    59,    60,    61,    62,    64,    65,    66,    69,    70,
+      71,    73,    74,    75,    76,    77,    79,   131,   142,   143,
+     148,   158,   159,   162,   163,   164,   165,   176,   179,   280,
+     281,   283,   284,   288,   290,   291,   292,   293,   298,   299,
+     300,   307,   320,   179,   187,   280,   304,   179,   217,   218,
+     179,   280,   303,     4,   187,   221,   187,   221,   304,   179,
+     169,   187,   324,   176,   179,   364,   280,   169,   325,   169,
+     324,   179,   169,   176,   179,   346,   179,   179,   221,   221,
+      20,    24,   247,   298,   179,   216,   123,   137,   127,   324,
+     324,   169,   252,    80,    81,   213,   275,   324,    27,   196,
+     198,    33,    35,   196,   158,   207,   196,   169,   179,   249,
+     250,   169,   226,   231,     3,   248,   169,   230,   247,     3,
+     236,   248,     3,   248,     3,   248,   169,   245,   246,   247,
+       3,     4,    35,   222,   223,   255,   271,   169,   176,   268,
+      23,   179,   259,    23,   179,   266,    23,     4,   329,   169,
+     310,   200,   324,   324,   324,   176,   323,   280,     5,   126,
+     189,   332,     3,   179,   334,   169,   304,   179,   345,    21,
+      22,    23,    50,    51,    52,    55,   169,   179,   281,   288,
      299,   343,   345,   350,   353,   354,   355,   345,    84,    98,
-     105,   298,   328,   179,   208,   280,   280,   280,   282,   179,
-     179,   179,   282,   280,   282,   179,   179,   179,   179,   179,
-     179,   179,   179,   179,   179,   179,   179,   280,   179,   179,
-     179,   179,   179,   179,   280,   281,   283,   307,   360,   361,
-     362,   179,   280,   283,     5,     7,     8,     9,    10,    11,
-      13,    14,    15,    16,    17,    18,    21,    22,    23,    24,
-      25,   185,   186,   285,   280,   189,   179,   302,   179,   179,
-     169,   158,   301,   302,     3,     4,   180,   280,   219,   298,
-       3,   280,     4,   169,   242,   242,   280,   280,   180,   288,
-     292,   298,   330,   366,   367,   368,   176,   283,   298,   298,
-     367,   369,   298,   371,   242,    40,    44,    45,    46,    47,
-      56,    57,    58,    59,    60,    61,    62,    64,    65,    66,
-      69,    70,    71,    74,    75,    76,    77,    79,   169,   214,
-     215,   169,   298,   220,   280,     3,     3,   221,   194,   200,
-     204,   196,     5,   249,     3,    24,   179,   187,   248,     3,
-      24,   230,   247,   179,   276,   230,   298,   247,   169,   169,
-     247,   276,     3,   245,    29,    82,   109,   111,   112,   113,
-     116,   117,   119,   120,   272,   273,   275,     4,   204,     3,
-     256,   254,     5,    23,   269,   280,   180,   176,   179,   169,
-     260,   269,   179,   267,   280,   268,   176,   276,     3,   205,
-     248,   298,   322,   373,   280,   280,   298,   176,    23,   280,
-     335,   338,   339,    23,    25,   179,   298,   347,   348,   353,
-     354,   280,   280,   280,   280,     5,   353,   179,   281,   288,
-     299,   342,   356,   357,   358,     3,   344,    20,    23,    24,
-      25,   355,   353,   360,   179,   179,    23,   169,   180,   210,
-     211,    30,   180,     3,   180,   282,   282,   280,   180,   180,
-     180,   280,   280,   280,   280,   280,   280,   280,   280,   280,
-     280,   280,   280,   180,   282,   282,   282,   282,   282,   280,
-     283,   361,   362,     3,   132,     3,     3,   282,   180,     3,
-       5,   280,   287,   280,   280,   280,   280,   280,   280,   280,
-     280,   280,   280,   280,   280,   280,   280,     5,    24,   280,
-     286,   280,     5,   280,     5,   280,   288,   303,   289,   294,
-     294,   280,   280,   180,     3,   180,   276,   218,   180,     3,
-     180,     3,   179,     3,   370,   180,   180,   180,     3,   370,
-       3,   180,     3,    24,     3,   180,   179,   169,   324,   208,
-     280,   180,   250,   227,   232,   233,   284,   280,   169,   169,
-     231,   227,   248,     4,    23,   277,   278,   279,   280,   248,
-     276,   276,   248,   246,   276,   179,     3,     4,   208,   254,
-     169,   269,   260,     5,   269,   180,     3,   270,    23,   180,
-     276,    31,   169,   311,   312,     5,   329,   364,   180,     3,
-     353,    23,    25,   179,   280,     3,   180,   180,   280,   180,
-     356,   285,   359,   359,     3,   359,   356,   353,   353,   353,
-     353,   353,   366,   369,     3,   180,   179,   209,   304,   280,
+     105,   298,   328,   280,   280,   280,   282,   179,   179,   179,
+     282,   280,   282,   179,   179,   179,   179,   179,   179,   179,
+     179,   179,   179,   179,   179,   280,   179,   179,   179,   179,
+     179,   179,   280,   281,   283,   307,   360,   361,   362,   179,
+     280,   283,     5,     7,     8,     9,    10,    11,    13,    14,
+      15,    16,    17,    18,    21,    22,    23,    24,    25,   185,
+     186,   285,   280,   189,   179,   302,   179,   179,   169,   158,
+     301,   302,     3,     4,   180,   280,   219,   298,     3,   280,
+       4,   169,   242,   242,   280,   280,   180,   288,   292,   298,
+     330,   366,   367,   368,   176,   283,   298,   298,   367,   369,
+     298,   371,   242,    40,    44,    45,    46,    47,    56,    57,
+      58,    59,    60,    61,    62,    64,    65,    66,    69,    70,
+      71,    74,    75,    76,    77,    79,   169,   214,   215,   169,
+     298,   220,   280,     3,     3,   221,   194,   200,   204,   204,
+     196,     5,   249,     3,    24,   179,   187,   248,     3,    24,
+     230,   247,   179,   276,   230,   298,   247,   169,   169,   247,
+     276,     3,   245,    29,    82,   109,   111,   112,   113,   116,
+     117,   119,   120,   272,   273,   275,     4,   204,     3,   256,
+     254,     5,    23,   269,   280,   180,   176,   179,   169,   260,
+     269,   179,   267,   280,   268,   176,   276,     3,   205,   248,
+     298,   322,   373,   280,   280,   298,   176,    23,   280,   335,
+     338,   339,    23,    25,   179,   298,   347,   348,   353,   354,
+     280,   280,   280,   280,     5,   353,   179,   281,   288,   299,
+     342,   356,   357,   358,     3,   344,    20,    23,    24,    25,
+     355,   353,   360,   179,   179,   180,     3,   180,   282,   282,
+     280,   180,   180,   180,   280,   280,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   180,   282,   282,   282,
+     282,   282,   280,   283,   361,   362,     3,   132,     3,     3,
+     282,   180,     3,     5,   280,   287,   280,   280,   280,   280,
+     280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
+       5,    24,   280,   286,   280,     5,   280,     5,   280,   288,
+     303,   289,   294,   294,   280,   280,   180,     3,   180,   276,
+     218,   180,     3,   180,     3,   179,     3,   370,   180,   180,
+     180,     3,   370,     3,   180,     3,    24,     3,   180,   179,
+     169,   324,   179,   208,   208,   280,   180,   250,   227,   232,
+     233,   284,   280,   169,   169,   231,   227,   248,     4,    23,
+     277,   278,   279,   280,   248,   276,   276,   248,   246,   276,
+     179,     3,     4,   208,   254,   169,   269,   260,     5,   269,
+     180,     3,   270,    23,   180,   276,    31,   169,   311,   312,
+       5,   329,   364,   180,     3,   353,    23,    25,   179,   280,
+       3,   180,   180,   280,   180,   356,   285,   359,   359,     3,
+     359,   356,   353,   353,   353,   353,   353,   366,   369,   304,
+     280,   180,   180,   180,   180,   180,   180,   180,   180,   180,
      180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
-     180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
-     180,     3,     3,     3,   280,   362,   280,   362,   280,   362,
-     180,   283,   280,   280,   280,   280,   280,     4,     4,   280,
-     295,   296,   297,   180,   180,   298,   169,    84,   280,   295,
-     125,   367,   180,   367,   180,   298,   214,   280,   220,    24,
-       3,    21,    22,    23,   188,   299,   180,    24,    24,   230,
-     280,     3,   180,     4,   298,    23,   264,   264,   245,   138,
-     139,   140,   274,   273,     4,   169,   276,   180,   269,   270,
-     169,   180,     4,   126,     3,   280,   276,   339,   180,   280,
-     297,   189,   348,   353,     3,   180,   285,   358,   370,   370,
-     211,   180,   210,   169,   363,   363,   363,   180,   303,     4,
-     280,     4,     3,   302,   276,   180,   180,     5,   180,   227,
-     232,   232,   232,   232,   227,   278,   279,   280,   179,   265,
-     280,   180,   276,   264,   270,   269,   169,   187,   313,   314,
-     169,   312,     3,   276,   180,   330,   363,   359,   180,   180,
-     180,     5,   180,   180,   180,   180,   280,     4,   280,   296,
-       3,   298,    24,    23,   264,   305,   306,   126,     3,   280,
-     180,   280,   280,     4,   280,   180,   305,     5,   169,   314,
-       3,     3,   280,   280,   280,   280,     3,   280
+     180,   180,     3,     3,     3,   280,   362,   280,   362,   280,
+     362,   180,   283,   280,   280,   280,   280,   280,     4,     4,
+     280,   295,   296,   297,   180,   180,   298,   169,    84,   280,
+     295,   125,   367,   180,   367,   180,   298,   214,   280,   220,
+      23,   169,   180,   210,   211,    30,    24,     3,    21,    22,
+      23,   188,   299,   180,    24,    24,   230,   280,     3,   180,
+       4,   298,    23,   264,   264,   245,   138,   139,   140,   274,
+     273,     4,   169,   276,   180,   269,   270,   169,   180,     4,
+     126,     3,   280,   276,   339,   180,   280,   297,   189,   276,
+     348,   353,     3,   180,   285,   358,   370,   370,   169,   363,
+     363,   363,   180,   303,     4,   280,     4,     3,   302,   276,
+     180,   180,     5,   180,     3,   180,   179,   209,   227,   232,
+     232,   232,   232,   227,   278,   279,   280,   179,   265,   280,
+     180,   276,   264,   270,   269,   169,   187,   313,   314,   169,
+     312,     3,   276,   180,   330,   363,   359,   180,   180,     5,
+     180,   180,   180,   180,   280,     4,   280,   296,     3,   298,
+     211,   180,   210,    24,    23,   264,   305,   306,   126,     3,
+     280,   180,   280,   280,     4,   280,   180,   180,   305,     5,
+     126,   169,   314,     3,     3,   280,   280,   280,   280,   280,
+       3,   280
 };
 
@@ -3190,5 +3234,5 @@
 {
   if (*yystr == '"')
-   {
+    {
       YYSIZE_T yyn = 0;
       char const *yyp = yystr;
@@ -3215,5 +3259,5 @@
 	      yyres[yyn] = '\0';
 	    return yyn;
-   }
+	  }
     do_not_strip_quotes: ;
     }
@@ -3241,5 +3285,5 @@
     return 0;
   else
-   {
+    {
       int yytype = YYTRANSLATE (yychar);
       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
@@ -3285,7 +3329,7 @@
       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
 	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-      {
+	  {
 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-         {
+	      {
 		yycount = 1;
 		yysize = yysize0;
@@ -3310,5 +3354,5 @@
 
       if (yyresult)
-            {
+	{
 	  /* Avoid sprintf, as that infringes on the user's name space.
 	     Don't have undefined behavior even if the translation
@@ -3317,19 +3361,19 @@
 	  int yyi = 0;
 	  while ((*yyp = *yyf) != '\0')
-               {
+	    {
 	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
 		{
 		  yyp += yytnamerr (yyp, yyarg[yyi++]);
 		  yyf += 2;
-               }
+		}
 	      else
-               {
+		{
 		  yyp++;
 		  yyf++;
-               }
-            }
-         }
+		}
+	    }
+	}
       return yysize;
-      }
+    }
 }
 #endif /* YYERROR_VERBOSE */
@@ -3361,9 +3405,9 @@
 
   switch (yytype)
-   {
+    {
 
       default:
 	break;
-   }
+    }
 }
 
@@ -3477,5 +3521,5 @@
   yystate = 0;
   yyerrstatus = 0;
-    yynerrs = 0;
+  yynerrs = 0;
   yychar = YYEMPTY;		/* Cause a token to be read.  */
 
@@ -3485,6 +3529,6 @@
      The wasted elements are never initialized.  */
 
-    yyssp = yyss;
-    yyvsp = yyvs;
+  yyssp = yyss;
+  yyvsp = yyvs;
 
   goto yysetstate;
@@ -3507,5 +3551,5 @@
 
 #ifdef yyoverflow
-        {
+      {
 	/* Give user a chance to reallocate the stack.  Use copies of
 	   these so that the &'s don't force the real ones into
@@ -3527,5 +3571,5 @@
 	yyss = yyss1;
 	yyvs = yyvs1;
-        }
+      }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
@@ -3539,5 +3583,5 @@
 	yystacksize = YYMAXDEPTH;
 
-    {
+      {
 	yytype_int16 *yyss1 = yyss;
 	union yyalloc *yyptr =
@@ -3551,5 +3595,5 @@
 	if (yyss1 != yyssa)
 	  YYSTACK_FREE (yyss1);
-        }
+      }
 # endif
 #endif /* no yyoverflow */
@@ -3596,10 +3640,10 @@
       yychar = yytoken = YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
-                }
-            else
-            {
+    }
+  else
+    {
       yytoken = YYTRANSLATE (yychar);
       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-            }
+    }
 
   /* If the proper action on seeing token YYTOKEN is to reduce or to
@@ -3615,5 +3659,5 @@
       yyn = -yyn;
       goto yyreduce;
-        }
+    }
 
   if (yyn == YYFINAL)
@@ -3667,5 +3711,5 @@
 
   YY_REDUCE_PRINT (yyn);
-    switch (yyn)
+  switch (yyn)
     {
         case 8:
@@ -3726,5 +3770,5 @@
   case 31:
 #line 403 "fortran.y"
-                      {
+    {
                       if ( couldaddvariable == 1)
                       {
@@ -3782,10 +3826,10 @@
                       if ( firstpass == 0 )
                       {
-                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,(yyvsp[(2) - (5)].nac));
+                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,(yyvsp[(3) - (6)].nac));
                          paramout=fopen(ligne,"w");
                          if ( retour77 == 0 ) fprintf(paramout,"!\n");
                          else fprintf(paramout,"C\n");
                       }
-                      strcpy(subroutinename,(yyvsp[(2) - (5)].nac));
+                      strcpy(subroutinename,(yyvsp[(3) - (6)].nac));
                       if ( inmodulemeet == 1 )
                       {
@@ -3793,5 +3837,5 @@
                          /* we should to list of the subroutine argument the  */
                          /*    name of the function which has to be defined   */
-                         Add_SubroutineArgument_Var_1((yyvsp[(3) - (5)].l));
+                         Add_SubroutineArgument_Var_1((yyvsp[(4) - (6)].l));
                          strcpy(DeclType,"");
                          /* in the second step we should write the head of    */
@@ -3804,7 +3848,7 @@
                             /* we should to list of the subroutine argument   */
                             /* name of the function which has to be defined   */
-                            Add_SubroutineArgument_Var_1((yyvsp[(3) - (5)].l));
+                            Add_SubroutineArgument_Var_1((yyvsp[(4) - (6)].l));
                             strcpy(DeclType,"");
-                            Add_FunctionType_Var_1((yyvsp[(2) - (5)].nac));
+                            Add_FunctionType_Var_1((yyvsp[(3) - (6)].nac));
                             writeheadnewsub_0(2);
                       }
@@ -3818,10 +3862,10 @@
                       if ( firstpass == 0 )
                       {
-                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,(yyvsp[(2) - (3)].nac));
+                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,(yyvsp[(3) - (4)].nac));
                          paramout=fopen(ligne,"w");
                          if ( retour77 == 0 ) fprintf(paramout,"!\n");
                          else fprintf(paramout,"C\n");
                       }
-                      strcpy(subroutinename,(yyvsp[(2) - (3)].nac));
+                      strcpy(subroutinename,(yyvsp[(3) - (4)].nac));
                       if ( inmodulemeet == 1 )
                       {
@@ -3829,7 +3873,7 @@
                          /* we should to list of the subroutine argument the  */
                          /*    name of the function which has to be defined   */
-                         Add_SubroutineArgument_Var_1((yyvsp[(3) - (3)].l));
+                         Add_SubroutineArgument_Var_1((yyvsp[(4) - (4)].l));
                          strcpy(DeclType,"");
-                         Add_FunctionType_Var_1((yyvsp[(2) - (3)].nac));
+                         Add_FunctionType_Var_1((yyvsp[(3) - (4)].nac));
                          /* in the second step we should write the head of    */
                          /*    the subroutine sub_loop_<subroutinename>       */
@@ -3841,7 +3885,7 @@
                             /* we should to list of the subroutine argument   */
                             /* name of the function which has to be defined   */
-                            Add_SubroutineArgument_Var_1((yyvsp[(3) - (3)].l));
+                            Add_SubroutineArgument_Var_1((yyvsp[(4) - (4)].l));
                             strcpy(DeclType,"");
-                            Add_FunctionType_Var_1((yyvsp[(2) - (3)].nac));
+                            Add_FunctionType_Var_1((yyvsp[(3) - (4)].nac));
                             writeheadnewsub_0(2);
                       }
@@ -4061,5 +4105,5 @@
                       strcpy(NamePrecision,"");
                       c_star = 0;
-                      InitialValueGiven = 0 ;
+                      strcpy(InitialValueGiven," ");
                       strcpy(IntentSpec,"");
                       VariableIsParameter =  0 ;
@@ -4192,5 +4236,5 @@
                       strcpy(NamePrecision,"");
                       c_star = 0;
-                      InitialValueGiven = 0 ;
+                      strcpy(InitialValueGiven," ");
                       strcpy(IntentSpec,"");
                       VariableIsParameter =  0 ;
@@ -4204,9 +4248,10 @@
                       strcpy(nameinttypename,"");
                       strcpy(c_selectorname,"");
+                      GlobalDeclarationType = 0; 
                    ;}
     break;
 
   case 111:
-#line 870 "fortran.y"
+#line 871 "fortran.y"
     {
                       /* open param file                                      */
@@ -4247,5 +4292,5 @@
 
   case 112:
-#line 907 "fortran.y"
+#line 908 "fortran.y"
     {
                        functiondeclarationisdone = 1;
@@ -4254,5 +4299,5 @@
 
   case 113:
-#line 913 "fortran.y"
+#line 914 "fortran.y"
     {
                       VariableIsParameter = 1;
@@ -4262,5 +4307,5 @@
 
   case 114:
-#line 918 "fortran.y"
+#line 919 "fortran.y"
     {
                       pos_curdata = setposcur()-strlen((yyvsp[(1) - (1)].nac));
@@ -4270,5 +4315,5 @@
 
   case 115:
-#line 923 "fortran.y"
+#line 924 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4287,5 +4332,5 @@
 
   case 116:
-#line 937 "fortran.y"
+#line 938 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4304,5 +4349,5 @@
 
   case 117:
-#line 951 "fortran.y"
+#line 952 "fortran.y"
     {
                        /*******************************************************/
@@ -4321,5 +4366,5 @@
 
   case 118:
-#line 966 "fortran.y"
+#line 967 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4331,5 +4376,5 @@
 
   case 119:
-#line 973 "fortran.y"
+#line 974 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4341,5 +4386,5 @@
 
   case 124:
-#line 987 "fortran.y"
+#line 988 "fortran.y"
     {
                      pos_cursave = setposcur()-4;
@@ -4348,5 +4393,5 @@
 
   case 126:
-#line 993 "fortran.y"
+#line 994 "fortran.y"
     {
                      if ( couldaddvariable == 1 ) Add_Save_Var_1((yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].d));
@@ -4355,5 +4400,5 @@
 
   case 127:
-#line 998 "fortran.y"
+#line 999 "fortran.y"
     {
 		(yyval.lnn)=Insertname(NULL,(yyvsp[(1) - (1)].nac),0);
@@ -4362,5 +4407,5 @@
 
   case 128:
-#line 1002 "fortran.y"
+#line 1003 "fortran.y"
     {
       printf("INSTRUCTION NON TRAITEE : INITIALISATION DE DATA AVEC EXPRESSION\n");
@@ -4370,5 +4415,5 @@
 
   case 129:
-#line 1007 "fortran.y"
+#line 1008 "fortran.y"
     {
       (yyval.lnn) = concat_listname((yyvsp[(1) - (3)].lnn),(yyvsp[(3) - (3)].lnn));
@@ -4377,40 +4422,40 @@
 
   case 130:
-#line 1012 "fortran.y"
+#line 1013 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].nac));;}
     break;
 
   case 131:
-#line 1014 "fortran.y"
+#line 1015 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s+%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 132:
-#line 1016 "fortran.y"
+#line 1017 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s-%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 133:
-#line 1018 "fortran.y"
+#line 1019 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s*%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 134:
-#line 1020 "fortran.y"
+#line 1021 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s/%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 135:
-#line 1023 "fortran.y"
+#line 1024 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),"");;}
     break;
 
   case 136:
-#line 1025 "fortran.y"
+#line 1026 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 143:
-#line 1037 "fortran.y"
+#line 1038 "fortran.y"
     {
 	ininterfacedeclare = 1 ;
@@ -4420,5 +4465,5 @@
 
   case 144:
-#line 1042 "fortran.y"
+#line 1043 "fortran.y"
     {
       ininterfacedeclare = 0;
@@ -4427,5 +4472,5 @@
 
   case 145:
-#line 1047 "fortran.y"
+#line 1048 "fortran.y"
     {
                       positioninblock=0;
@@ -4435,5 +4480,5 @@
 
   case 146:
-#line 1053 "fortran.y"
+#line 1054 "fortran.y"
     {
          if ( couldaddvariable == 1 )
@@ -4454,5 +4499,5 @@
 
   case 147:
-#line 1069 "fortran.y"
+#line 1070 "fortran.y"
     {
          if ( couldaddvariable == 1 )
@@ -4473,5 +4518,5 @@
 
   case 150:
-#line 1089 "fortran.y"
+#line 1090 "fortran.y"
     {
         (yyval.lnn)=(listname *)NULL;
@@ -4480,5 +4525,5 @@
 
   case 151:
-#line 1093 "fortran.y"
+#line 1094 "fortran.y"
     {
           (yyval.lnn)=(yyvsp[(3) - (3)].lnn);
@@ -4487,5 +4532,5 @@
 
   case 152:
-#line 1098 "fortran.y"
+#line 1099 "fortran.y"
     {
            (yyval.lnn) = Insertname(NULL,(yyvsp[(1) - (1)].nac),0);
@@ -4494,5 +4539,5 @@
 
   case 153:
-#line 1102 "fortran.y"
+#line 1103 "fortran.y"
     {
           (yyval.lnn) = Insertname((yyvsp[(1) - (3)].lnn),(yyvsp[(3) - (3)].nac),0);
@@ -4501,5 +4546,5 @@
 
   case 154:
-#line 1107 "fortran.y"
+#line 1108 "fortran.y"
     {
                          pos_end = setposcur();
@@ -4510,5 +4555,5 @@
 
   case 155:
-#line 1113 "fortran.y"
+#line 1114 "fortran.y"
     {
                          if ( couldaddvariable == 1 )
@@ -4524,5 +4569,5 @@
 
   case 156:
-#line 1124 "fortran.y"
+#line 1125 "fortran.y"
     {
                          if ( couldaddvariable == 1 )
@@ -4538,5 +4583,5 @@
 
   case 157:
-#line 1136 "fortran.y"
+#line 1137 "fortran.y"
     {
                       positioninblock=0;
@@ -4546,5 +4591,5 @@
 
   case 158:
-#line 1141 "fortran.y"
+#line 1142 "fortran.y"
     {
                       positioninblock=0;
@@ -4554,5 +4599,5 @@
 
   case 159:
-#line 1147 "fortran.y"
+#line 1148 "fortran.y"
     {
                       if ( couldaddvariable == 1 ) Add_Common_var_1();
@@ -4561,5 +4606,5 @@
 
   case 160:
-#line 1152 "fortran.y"
+#line 1153 "fortran.y"
     {
                       if ( couldaddvariable == 1 ) Add_Common_var_1();
@@ -4568,5 +4613,5 @@
 
   case 161:
-#line 1156 "fortran.y"
+#line 1157 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4580,5 +4625,5 @@
 
   case 162:
-#line 1166 "fortran.y"
+#line 1167 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4592,5 +4637,5 @@
 
   case 163:
-#line 1175 "fortran.y"
+#line 1176 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4604,5 +4649,5 @@
 
   case 166:
-#line 1188 "fortran.y"
+#line 1189 "fortran.y"
     {
                       if ( couldaddvariable == 1 ) (yyval.l)=insertvar(NULL,(yyvsp[(1) - (1)].v));
@@ -4611,5 +4656,5 @@
 
   case 167:
-#line 1192 "fortran.y"
+#line 1193 "fortran.y"
     {
                       if ( couldaddvariable == 1 ) (yyval.l)=insertvar((yyvsp[(1) - (3)].l),(yyvsp[(3) - (3)].v));
@@ -4618,5 +4663,5 @@
 
   case 168:
-#line 1197 "fortran.y"
+#line 1198 "fortran.y"
     {
                      if ( couldaddvariable == 1 )
@@ -4643,5 +4688,5 @@
 
   case 172:
-#line 1225 "fortran.y"
+#line 1226 "fortran.y"
     {
                        if ( insubroutinedeclare == 1 )
@@ -4656,5 +4701,5 @@
 
   case 175:
-#line 1239 "fortran.y"
+#line 1240 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4664,4 +4709,5 @@
                          {
                             curvar=createvar((yyvsp[(3) - (6)].nac),curdim);
+                            GlobalDeclarationType == 0;
                          }
                          else
@@ -4691,5 +4737,5 @@
 
   case 176:
-#line 1271 "fortran.y"
+#line 1273 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -4728,15 +4774,15 @@
 
   case 177:
-#line 1305 "fortran.y"
+#line 1307 "fortran.y"
     {dimsgiven=0;;}
     break;
 
   case 178:
-#line 1308 "fortran.y"
+#line 1310 "fortran.y"
     {strcpy(DeclType,(yyvsp[(1) - (2)].nac));;}
     break;
 
   case 179:
-#line 1310 "fortran.y"
+#line 1312 "fortran.y"
     {
                       strcpy(DeclType,"CHARACTER");
@@ -4745,5 +4791,5 @@
 
   case 180:
-#line 1314 "fortran.y"
+#line 1316 "fortran.y"
     {
                       strcpy(DeclType,(yyvsp[(1) - (3)].nac));
@@ -4753,12 +4799,13 @@
 
   case 181:
-#line 1319 "fortran.y"
+#line 1321 "fortran.y"
     {
                       strcpy(DeclType,"TYPE");
+                      GlobalDeclarationType = 1
                    ;}
     break;
 
   case 182:
-#line 1324 "fortran.y"
+#line 1327 "fortran.y"
     {
                  /*     if ( couldaddvariable == 1 ) VarTypepar = 1 ;
@@ -4770,15 +4817,15 @@
 
   case 184:
-#line 1333 "fortran.y"
+#line 1336 "fortran.y"
     {c_selectorgiven=1;strcpy(c_selectorname,(yyvsp[(2) - (2)].nac));;}
     break;
 
   case 185:
-#line 1334 "fortran.y"
+#line 1337 "fortran.y"
     {c_star = 1;;}
     break;
 
   case 190:
-#line 1342 "fortran.y"
+#line 1345 "fortran.y"
     {
                       pos_cur_decl = setposcur()-9;
@@ -4787,10 +4834,10 @@
 
   case 191:
-#line 1346 "fortran.y"
+#line 1349 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 192:
-#line 1349 "fortran.y"
+#line 1352 "fortran.y"
     {
                       strcpy((yyval.nac),"INTEGER");
@@ -4800,5 +4847,5 @@
 
   case 193:
-#line 1353 "fortran.y"
+#line 1356 "fortran.y"
     {
                       strcpy((yyval.nac),"REAL");
@@ -4808,5 +4855,5 @@
 
   case 194:
-#line 1358 "fortran.y"
+#line 1361 "fortran.y"
     {strcpy((yyval.nac),"COMPLEX");
                    pos_cur_decl = setposcur()-7;;}
@@ -4814,5 +4861,5 @@
 
   case 195:
-#line 1361 "fortran.y"
+#line 1364 "fortran.y"
     {
                       pos_cur_decl = setposcur()-16;
@@ -4823,10 +4870,10 @@
 
   case 196:
-#line 1367 "fortran.y"
+#line 1370 "fortran.y"
     {strcpy((yyval.nac),"DOUBLE COMPLEX");;}
     break;
 
   case 197:
-#line 1369 "fortran.y"
+#line 1372 "fortran.y"
     {
                       strcpy((yyval.nac),"LOGICAL");
@@ -4836,21 +4883,21 @@
 
   case 199:
-#line 1375 "fortran.y"
+#line 1378 "fortran.y"
     {strcpy(vallengspec,(yyvsp[(2) - (2)].na));;}
     break;
 
   case 200:
-#line 1377 "fortran.y"
+#line 1380 "fortran.y"
     {sprintf((yyval.na),"*%s",(yyvsp[(1) - (1)].na));;}
     break;
 
   case 201:
-#line 1378 "fortran.y"
+#line 1381 "fortran.y"
     {strcpy((yyval.na),"*(*)");;}
     break;
 
   case 208:
-#line 1389 "fortran.y"
-                      {
+#line 1392 "fortran.y"
+    {
                       if ( strstr((yyvsp[(3) - (3)].na),"0.d0") )
                       {
@@ -4863,5 +4910,5 @@
 
   case 209:
-#line 1398 "fortran.y"
+#line 1401 "fortran.y"
     {
                       strcpy(NamePrecision,(yyvsp[(1) - (1)].nac));
@@ -4870,5 +4917,5 @@
 
   case 210:
-#line 1402 "fortran.y"
+#line 1405 "fortran.y"
     {
                       strcpy(NamePrecision,(yyvsp[(1) - (1)].nac));
@@ -4877,5 +4924,5 @@
 
   case 211:
-#line 1406 "fortran.y"
+#line 1409 "fortran.y"
     {strcpy(CharacterSize,(yyvsp[(1) - (1)].na));
                     strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
@@ -4883,5 +4930,5 @@
 
   case 212:
-#line 1408 "fortran.y"
+#line 1411 "fortran.y"
     {strcpy(CharacterSize,"*");
                     strcpy((yyval.na),"*");;}
@@ -4889,5 +4936,5 @@
 
   case 220:
-#line 1422 "fortran.y"
+#line 1425 "fortran.y"
     {
                       VariableIsParameter = 1;
@@ -4896,10 +4943,10 @@
 
   case 222:
-#line 1427 "fortran.y"
+#line 1430 "fortran.y"
     {Allocatabledeclare = 1;;}
     break;
 
   case 223:
-#line 1429 "fortran.y"
+#line 1432 "fortran.y"
     {
                       dimsgiven=1;
@@ -4909,25 +4956,25 @@
 
   case 224:
-#line 1434 "fortran.y"
+#line 1437 "fortran.y"
     {ExternalDeclare = 1;;}
     break;
 
   case 225:
-#line 1436 "fortran.y"
+#line 1439 "fortran.y"
     {strcpy(IntentSpec,(yyvsp[(3) - (4)].nac));;}
     break;
 
   case 227:
-#line 1438 "fortran.y"
+#line 1441 "fortran.y"
     {optionaldeclare = 1 ;;}
     break;
 
   case 228:
-#line 1439 "fortran.y"
+#line 1442 "fortran.y"
     {pointerdeclare = 1 ;;}
     break;
 
   case 229:
-#line 1440 "fortran.y"
+#line 1443 "fortran.y"
     {
 /*                       if ( inmodulemeet == 1 )
@@ -4939,35 +4986,35 @@
 
   case 230:
-#line 1447 "fortran.y"
+#line 1450 "fortran.y"
     {Targetdeclare = 1;;}
     break;
 
   case 231:
-#line 1449 "fortran.y"
+#line 1452 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 232:
-#line 1450 "fortran.y"
+#line 1453 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 233:
-#line 1451 "fortran.y"
+#line 1454 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac)); ;}
     break;
 
   case 234:
-#line 1454 "fortran.y"
+#line 1457 "fortran.y"
     {PublicDeclare = 1;;}
     break;
 
   case 235:
-#line 1456 "fortran.y"
+#line 1459 "fortran.y"
     {PrivateDeclare = 1;;}
     break;
 
   case 236:
-#line 1458 "fortran.y"
+#line 1461 "fortran.y"
     {if ( created_dimensionlist == 1 )
                        {
@@ -4978,5 +5025,5 @@
 
   case 237:
-#line 1464 "fortran.y"
+#line 1467 "fortran.y"
     {if ( created_dimensionlist == 1 ||
                          agrif_parentcall      == 1 ) (yyval.d)=(yyvsp[(2) - (3)].d);;}
@@ -4984,5 +5031,5 @@
 
   case 238:
-#line 1467 "fortran.y"
+#line 1470 "fortran.y"
     {if ( created_dimensionlist == 1 ||
                          agrif_parentcall      == 1 ) (yyval.d)=insertdim(NULL,(yyvsp[(1) - (1)].dim1));;}
@@ -4990,5 +5037,5 @@
 
   case 239:
-#line 1470 "fortran.y"
+#line 1473 "fortran.y"
     {if ( couldaddvariable == 1 )
                          if ( created_dimensionlist == 1 ) (yyval.d)=insertdim((yyvsp[(1) - (3)].d),(yyvsp[(3) - (3)].dim1));;}
@@ -4996,5 +5043,5 @@
 
   case 240:
-#line 1473 "fortran.y"
+#line 1476 "fortran.y"
     {
                       strcpy((yyval.dim1).first,"1");
@@ -5005,5 +5052,5 @@
 
   case 241:
-#line 1478 "fortran.y"
+#line 1481 "fortran.y"
     {
                       strcpy((yyval.dim1).first,"");
@@ -5013,5 +5060,5 @@
 
   case 242:
-#line 1482 "fortran.y"
+#line 1485 "fortran.y"
     {
                       strcpy((yyval.dim1).first,(yyvsp[(1) - (2)].na));
@@ -5022,5 +5069,5 @@
 
   case 243:
-#line 1487 "fortran.y"
+#line 1490 "fortran.y"
     {
                       strcpy((yyval.dim1).first,"");
@@ -5031,5 +5078,5 @@
 
   case 244:
-#line 1493 "fortran.y"
+#line 1496 "fortran.y"
     {
                       strcpy((yyval.dim1).first,(yyvsp[(1) - (3)].na));
@@ -5041,170 +5088,170 @@
 
   case 245:
-#line 1500 "fortran.y"
+#line 1503 "fortran.y"
     {strcpy((yyval.na),"*");;}
     break;
 
   case 246:
-#line 1501 "fortran.y"
+#line 1504 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 247:
-#line 1503 "fortran.y"
+#line 1506 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 248:
-#line 1505 "fortran.y"
+#line 1508 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 249:
-#line 1507 "fortran.y"
+#line 1510 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 250:
-#line 1509 "fortran.y"
+#line 1512 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 251:
-#line 1513 "fortran.y"
+#line 1516 "fortran.y"
     {sprintf((yyval.na),"SUM(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 252:
-#line 1515 "fortran.y"
+#line 1518 "fortran.y"
     {sprintf((yyval.na),"MAX(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 253:
-#line 1517 "fortran.y"
+#line 1520 "fortran.y"
     {sprintf((yyval.na),"TANH(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 254:
-#line 1519 "fortran.y"
+#line 1522 "fortran.y"
     {sprintf((yyval.na),"MAXVAL(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 255:
-#line 1521 "fortran.y"
+#line 1524 "fortran.y"
     {sprintf((yyval.na),"MIN(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 256:
-#line 1523 "fortran.y"
+#line 1526 "fortran.y"
     {sprintf((yyval.na),"MINVAL(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 257:
-#line 1525 "fortran.y"
+#line 1528 "fortran.y"
     {sprintf((yyval.na),"TRIM(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 258:
-#line 1527 "fortran.y"
+#line 1530 "fortran.y"
     {sprintf((yyval.na),"SQRT(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 259:
-#line 1529 "fortran.y"
+#line 1532 "fortran.y"
     {sprintf((yyval.na),"REAL(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 260:
-#line 1531 "fortran.y"
+#line 1534 "fortran.y"
     {sprintf((yyval.na),"NINT(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 261:
-#line 1533 "fortran.y"
+#line 1536 "fortran.y"
     {sprintf((yyval.na),"FLOAT(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 262:
-#line 1535 "fortran.y"
+#line 1538 "fortran.y"
     {sprintf((yyval.na),"EXP(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 263:
-#line 1537 "fortran.y"
+#line 1540 "fortran.y"
     {sprintf((yyval.na),"COS(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 264:
-#line 1539 "fortran.y"
+#line 1542 "fortran.y"
     {sprintf((yyval.na),"COSH(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 265:
-#line 1541 "fortran.y"
+#line 1544 "fortran.y"
     {sprintf((yyval.na),"ACOS(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 266:
-#line 1543 "fortran.y"
+#line 1546 "fortran.y"
     {sprintf((yyval.na),"SIN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 267:
-#line 1545 "fortran.y"
+#line 1548 "fortran.y"
     {sprintf((yyval.na),"SINH(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 268:
-#line 1547 "fortran.y"
+#line 1550 "fortran.y"
     {sprintf((yyval.na),"ASIN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 269:
-#line 1549 "fortran.y"
+#line 1552 "fortran.y"
     {sprintf((yyval.na),"LOG(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 270:
-#line 1551 "fortran.y"
+#line 1554 "fortran.y"
     {sprintf((yyval.na),"TAN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 271:
-#line 1553 "fortran.y"
+#line 1556 "fortran.y"
     {sprintf((yyval.na),"ATAN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 272:
-#line 1555 "fortran.y"
+#line 1558 "fortran.y"
     {sprintf((yyval.na),"ABS(%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 273:
-#line 1557 "fortran.y"
+#line 1560 "fortran.y"
     {sprintf((yyval.na),"MOD(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 274:
-#line 1559 "fortran.y"
+#line 1562 "fortran.y"
     {sprintf((yyval.na),"SIGN(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 275:
-#line 1561 "fortran.y"
+#line 1564 "fortran.y"
     {sprintf((yyval.na),"MINLOC(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 276:
-#line 1563 "fortran.y"
+#line 1566 "fortran.y"
     {sprintf((yyval.na),"MAXLOC(%s)",(yyvsp[(3) - (4)].na));;}
     break;
 
   case 277:
-#line 1565 "fortran.y"
+#line 1568 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 278:
-#line 1567 "fortran.y"
+#line 1570 "fortran.y"
     {if ( couldaddvariable == 1 )
                    { strcpy((yyval.na),(yyvsp[(1) - (3)].na));strcat((yyval.na),",");strcat((yyval.na),(yyvsp[(3) - (3)].na));};}
@@ -5212,180 +5259,180 @@
 
   case 279:
-#line 1570 "fortran.y"
+#line 1573 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 280:
-#line 1572 "fortran.y"
+#line 1575 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 281:
-#line 1574 "fortran.y"
+#line 1577 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 282:
-#line 1576 "fortran.y"
+#line 1579 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].na),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 283:
-#line 1578 "fortran.y"
+#line 1581 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 284:
-#line 1580 "fortran.y"
+#line 1583 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 285:
-#line 1582 "fortran.y"
+#line 1585 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),"+");;}
     break;
 
   case 286:
-#line 1583 "fortran.y"
+#line 1586 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),"-");;}
     break;
 
   case 287:
-#line 1586 "fortran.y"
+#line 1589 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"+%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 288:
-#line 1588 "fortran.y"
+#line 1591 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"-%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 289:
-#line 1590 "fortran.y"
+#line 1593 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"*%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 290:
-#line 1592 "fortran.y"
+#line 1595 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 291:
-#line 1594 "fortran.y"
+#line 1597 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 292:
-#line 1596 "fortran.y"
+#line 1599 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 293:
-#line 1598 "fortran.y"
+#line 1601 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 294:
-#line 1600 "fortran.y"
+#line 1603 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," > %s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 295:
-#line 1602 "fortran.y"
+#line 1605 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 296:
-#line 1604 "fortran.y"
+#line 1607 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," < %s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 297:
-#line 1606 "fortran.y"
+#line 1609 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 298:
-#line 1608 "fortran.y"
+#line 1611 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," >= %s",(yyvsp[(3) - (3)].na));;}
     break;
 
   case 299:
-#line 1610 "fortran.y"
+#line 1613 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 300:
-#line 1612 "fortran.y"
+#line 1615 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," <= %s",(yyvsp[(3) - (3)].na));;}
     break;
 
   case 301:
-#line 1614 "fortran.y"
+#line 1617 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 302:
-#line 1616 "fortran.y"
+#line 1619 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 303:
-#line 1618 "fortran.y"
+#line 1621 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 304:
-#line 1620 "fortran.y"
+#line 1623 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 305:
-#line 1622 "fortran.y"
+#line 1625 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 306:
-#line 1624 "fortran.y"
+#line 1627 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 307:
-#line 1626 "fortran.y"
+#line 1629 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 308:
-#line 1628 "fortran.y"
+#line 1631 "fortran.y"
     {strcpy((yyval.na),"");;}
     break;
 
   case 309:
-#line 1630 "fortran.y"
+#line 1633 "fortran.y"
     {sprintf((yyval.na),"/%s",(yyvsp[(1) - (1)].na));;}
     break;
 
   case 310:
-#line 1632 "fortran.y"
+#line 1635 "fortran.y"
     {sprintf((yyval.na),"/= %s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 311:
-#line 1634 "fortran.y"
+#line 1637 "fortran.y"
     {sprintf((yyval.na),"//%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 312:
-#line 1637 "fortran.y"
+#line 1640 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"==%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 313:
-#line 1639 "fortran.y"
+#line 1642 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"= %s",(yyvsp[(1) - (1)].na));;}
     break;
 
   case 314:
-#line 1642 "fortran.y"
+#line 1645 "fortran.y"
     {if ( couldaddvariable == 1 )
 						{
@@ -5396,5 +5443,5 @@
 
   case 315:
-#line 1648 "fortran.y"
+#line 1651 "fortran.y"
     {if ( couldaddvariable == 1 ) {
                    printf("struct = %s\n",(yyvsp[(1) - (1)].na));
@@ -5404,5 +5451,5 @@
 
   case 316:
-#line 1653 "fortran.y"
+#line 1656 "fortran.y"
     {if ( couldaddvariable == 1 ) {
                    printf("arrayref = %s\n",(yyvsp[(1) - (1)].na));
@@ -5412,5 +5459,5 @@
 
   case 317:
-#line 1658 "fortran.y"
+#line 1661 "fortran.y"
     {
                       agrif_parentcall =0;
@@ -5427,5 +5474,5 @@
 
   case 318:
-#line 1671 "fortran.y"
+#line 1674 "fortran.y"
     {
                      strcpy((yyval.na),(yyvsp[(1) - (1)].na));
@@ -5435,10 +5482,10 @@
 
   case 319:
-#line 1676 "fortran.y"
+#line 1679 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," %s %s ",(yyvsp[(1) - (2)].na),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 320:
-#line 1678 "fortran.y"
+#line 1681 "fortran.y"
     {if ( couldaddvariable == 1 )
                                                 sprintf((yyval.na)," %s ( %s )",(yyvsp[(1) - (4)].na),(yyvsp[(3) - (4)].na));;}
@@ -5446,5 +5493,5 @@
 
   case 321:
-#line 1681 "fortran.y"
+#line 1684 "fortran.y"
     {if ( couldaddvariable == 1 )
                                          sprintf((yyval.na)," %s ( %s ) %s ",(yyvsp[(1) - (5)].na),(yyvsp[(3) - (5)].na),(yyvsp[(5) - (5)].na));;}
@@ -5452,5 +5499,5 @@
 
   case 322:
-#line 1685 "fortran.y"
+#line 1688 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -5464,5 +5511,5 @@
 
   case 323:
-#line 1695 "fortran.y"
+#line 1698 "fortran.y"
     {
                       sprintf((yyval.na)," %s %% %s ",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));
@@ -5472,45 +5519,45 @@
 
   case 324:
-#line 1701 "fortran.y"
+#line 1704 "fortran.y"
     {sprintf((yyval.na),"(/%s/)",(yyvsp[(2) - (3)].na));;}
     break;
 
   case 325:
-#line 1703 "fortran.y"
+#line 1706 "fortran.y"
     {strcpy((yyval.na)," ");;}
     break;
 
   case 326:
-#line 1705 "fortran.y"
+#line 1708 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(2) - (2)].na));;}
     break;
 
   case 327:
-#line 1707 "fortran.y"
+#line 1710 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 328:
-#line 1709 "fortran.y"
+#line 1712 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 329:
-#line 1711 "fortran.y"
+#line 1714 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 330:
-#line 1712 "fortran.y"
+#line 1715 "fortran.y"
     {strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 331:
-#line 1715 "fortran.y"
+#line 1718 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s :%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
   case 332:
-#line 1717 "fortran.y"
+#line 1720 "fortran.y"
     {if ( couldaddvariable == 1 )
                                                sprintf((yyval.na),"%s :%s :%s",(yyvsp[(1) - (5)].na),(yyvsp[(3) - (5)].na),(yyvsp[(5) - (5)].na));;}
@@ -5518,31 +5565,31 @@
 
   case 333:
-#line 1720 "fortran.y"
+#line 1723 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),":%s :%s",(yyvsp[(2) - (4)].na),(yyvsp[(4) - (4)].na));;}
     break;
 
   case 334:
-#line 1721 "fortran.y"
+#line 1724 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),": : %s",(yyvsp[(3) - (3)].na));;}
     break;
 
   case 335:
-#line 1722 "fortran.y"
+#line 1725 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),":%s",(yyvsp[(2) - (2)].na));;}
     break;
 
   case 336:
-#line 1723 "fortran.y"
+#line 1726 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s :",(yyvsp[(1) - (2)].na));;}
     break;
 
   case 337:
-#line 1724 "fortran.y"
+#line 1727 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),":");;}
     break;
 
   case 338:
-#line 1726 "fortran.y"
-                       {
+#line 1729 "fortran.y"
+    {
                        if ( couldaddvariable == 1 && afterpercent == 0)
                        {
@@ -5604,100 +5651,100 @@
 
   case 339:
-#line 1785 "fortran.y"
+#line 1788 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),".TRUE.");;}
     break;
 
   case 340:
-#line 1786 "fortran.y"
+#line 1789 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),".FALSE.");;}
     break;
 
   case 341:
-#line 1787 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
-    break;
-
-  case 342:
-#line 1788 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
-    break;
-
-  case 343:
-#line 1789 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
-    break;
-
-  case 344:
 #line 1790 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
+  case 342:
+#line 1791 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
+    break;
+
+  case 343:
+#line 1792 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
+    break;
+
+  case 344:
+#line 1793 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
+    break;
+
   case 345:
-#line 1792 "fortran.y"
+#line 1795 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.nac),"%s%s",(yyvsp[(1) - (2)].nac),(yyvsp[(2) - (2)].nac));;}
     break;
 
   case 347:
-#line 1796 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
-    break;
-
-  case 349:
 #line 1799 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
+  case 349:
+#line 1802 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
+    break;
+
   case 350:
-#line 1801 "fortran.y"
+#line 1804 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
   case 351:
-#line 1803 "fortran.y"
+#line 1806 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na)," ");;}
     break;
 
   case 352:
-#line 1804 "fortran.y"
+#line 1807 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
   case 353:
-#line 1807 "fortran.y"
+#line 1810 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s :%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
   case 354:
-#line 1809 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.na)," ");;}
-    break;
-
-  case 355:
-#line 1810 "fortran.y"
-    {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
-    break;
-
-  case 356:
 #line 1812 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na)," ");;}
     break;
 
-  case 357:
+  case 355:
 #line 1813 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
+  case 356:
+#line 1815 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.na)," ");;}
+    break;
+
+  case 357:
+#line 1816 "fortran.y"
+    {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
+    break;
+
   case 358:
-#line 1815 "fortran.y"
-    {InitialValueGiven = 0;;}
+#line 1818 "fortran.y"
+    {   strcpy(InitialValueGiven," ");;}
     break;
 
   case 359:
-#line 1817 "fortran.y"
+#line 1820 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
                        {
                           strcpy(InitValue,(yyvsp[(3) - (3)].na));
-                          InitialValueGiven = 1;
+                          strcpy(InitialValueGiven,"=");
                        }
                     ;}
@@ -5705,15 +5752,26 @@
 
   case 360:
-#line 1825 "fortran.y"
+#line 1828 "fortran.y"
+    {
+                       if ( couldaddvariable == 1 )
+                       {
+                          strcpy(InitValue,(yyvsp[(3) - (3)].na));
+                          strcpy(InitialValueGiven,"=>");
+                       }
+                    ;}
+    break;
+
+  case 361:
+#line 1836 "fortran.y"
     {pos_curinit = setposcur();;}
     break;
 
-  case 361:
-#line 1828 "fortran.y"
+  case 362:
+#line 1839 "fortran.y"
     {sprintf((yyval.na),"(%s,%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
-  case 362:
-#line 1831 "fortran.y"
+  case 363:
+#line 1842 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -5737,6 +5795,6 @@
     break;
 
-  case 363:
-#line 1851 "fortran.y"
+  case 364:
+#line 1862 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -5774,6 +5832,6 @@
     break;
 
-  case 364:
-#line 1885 "fortran.y"
+  case 365:
+#line 1896 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -5797,6 +5855,6 @@
     break;
 
-  case 365:
-#line 1905 "fortran.y"
+  case 366:
+#line 1916 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -5850,6 +5908,6 @@
     break;
 
-  case 366:
-#line 1956 "fortran.y"
+  case 367:
+#line 1967 "fortran.y"
     {
                       pos_curuse = setposcur()-strlen((yyvsp[(1) - (1)].nac));
@@ -5860,11 +5918,11 @@
     break;
 
-  case 367:
-#line 1964 "fortran.y"
+  case 368:
+#line 1975 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
-  case 368:
-#line 1967 "fortran.y"
+  case 369:
+#line 1978 "fortran.y"
     {
                        if ( couldaddvariable == 1 ) (yyval.lc) = (yyvsp[(1) - (1)].lc);
@@ -5872,6 +5930,6 @@
     break;
 
-  case 369:
-#line 1971 "fortran.y"
+  case 370:
+#line 1982 "fortran.y"
     {
                         if ( couldaddvariable == 1 )
@@ -5884,6 +5942,6 @@
     break;
 
-  case 370:
-#line 1981 "fortran.y"
+  case 371:
+#line 1992 "fortran.y"
     {
                        coupletmp =(listcouple *)malloc(sizeof(listcouple));
@@ -5897,6 +5955,6 @@
     break;
 
-  case 371:
-#line 1992 "fortran.y"
+  case 372:
+#line 2003 "fortran.y"
     {
                        if ( couldaddvariable == 1 ) (yyval.lc) = (yyvsp[(1) - (1)].lc);
@@ -5904,6 +5962,6 @@
     break;
 
-  case 372:
-#line 1996 "fortran.y"
+  case 373:
+#line 2007 "fortran.y"
     {
                         if ( couldaddvariable == 1 )
@@ -5916,6 +5974,6 @@
     break;
 
-  case 373:
-#line 2006 "fortran.y"
+  case 374:
+#line 2017 "fortran.y"
     {
                        coupletmp =(listcouple *)malloc(sizeof(listcouple));
@@ -5931,6 +5989,6 @@
     break;
 
-  case 374:
-#line 2017 "fortran.y"
+  case 375:
+#line 2028 "fortran.y"
     {
                        coupletmp =(listcouple *)malloc(sizeof(listcouple));
@@ -5943,6 +6001,6 @@
     break;
 
-  case 376:
-#line 2028 "fortran.y"
+  case 377:
+#line 2039 "fortran.y"
     {
                          Add_SubroutineWhereAgrifUsed_1(subroutinename,
@@ -5952,6 +6010,6 @@
     break;
 
-  case 377:
-#line 2034 "fortran.y"
+  case 378:
+#line 2045 "fortran.y"
     {
                           Add_SubroutineWhereAgrifUsed_1(subroutinename,
@@ -5961,6 +6019,6 @@
     break;
 
-  case 379:
-#line 2041 "fortran.y"
+  case 380:
+#line 2052 "fortran.y"
     {
                        GlobalDeclaration = 0 ;
@@ -6014,6 +6072,6 @@
     break;
 
-  case 380:
-#line 2091 "fortran.y"
+  case 381:
+#line 2102 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -6035,6 +6093,6 @@
     break;
 
-  case 381:
-#line 2109 "fortran.y"
+  case 382:
+#line 2120 "fortran.y"
     {
                        if ( couldaddvariable == 1 &&
@@ -6058,6 +6116,6 @@
     break;
 
-  case 382:
-#line 2129 "fortran.y"
+  case 383:
+#line 2140 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -6080,6 +6138,6 @@
     break;
 
-  case 383:
-#line 2148 "fortran.y"
+  case 384:
+#line 2159 "fortran.y"
     {
                        if ( couldaddvariable == 1 )
@@ -6094,4 +6152,11 @@
                              Write_NotGridDepend_Declaration_0();
                              Write_GlobalType_Declaration_0();
+                             if ( module_declar_type )
+                             {
+                             strcpy (ligne, "\n#include \"Module_DeclarType_");
+                             strcat (ligne, curmodulename);
+                             strcat (ligne, ".h\"\n");
+                             tofich(fortranout,ligne,1); 
+                             }
                              Write_Alloc_Subroutine_For_End_0();
                           }
@@ -6110,4 +6175,9 @@
                            fclose(module_declar);
                          }
+                         if ( module_declar_type && insubroutinedeclare == 0)
+                         {
+                          fclose(module_declar_type);
+                          module_declar_type = 0;
+                         }
                       }
                       GlobalDeclaration = 0 ;
@@ -6116,6 +6186,6 @@
     break;
 
-  case 397:
-#line 2194 "fortran.y"
+  case 398:
+#line 2217 "fortran.y"
     {
                       if (inmoduledeclare == 1 )
@@ -6124,4 +6194,11 @@
                          Write_GlobalParameter_Declaration_0();
                          Write_GlobalType_Declaration_0();
+                             if ( module_declar_type)
+                             {                         
+                             strcpy (ligne, "\n#include \"Module_DeclarType_");
+                             strcat (ligne, curmodulename);
+                             strcat (ligne, ".h\"\n");
+                             tofich(fortranout,ligne,1); 
+                             }
                          Write_NotGridDepend_Declaration_0();
                          Write_Alloc_Subroutine_0();
@@ -6155,6 +6232,6 @@
     break;
 
-  case 398:
-#line 2231 "fortran.y"
+  case 399:
+#line 2261 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -6167,6 +6244,6 @@
     break;
 
-  case 399:
-#line 2241 "fortran.y"
+  case 400:
+#line 2271 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -6178,6 +6255,6 @@
     break;
 
-  case 400:
-#line 2250 "fortran.y"
+  case 401:
+#line 2280 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -6189,6 +6266,6 @@
     break;
 
-  case 401:
-#line 2259 "fortran.y"
+  case 402:
+#line 2289 "fortran.y"
     {
                       if ( couldaddvariable == 1 )
@@ -6200,16 +6277,16 @@
     break;
 
-  case 413:
-#line 2281 "fortran.y"
+  case 414:
+#line 2311 "fortran.y"
     {strcpy((yyval.nac),"");;}
     break;
 
-  case 414:
-#line 2282 "fortran.y"
+  case 415:
+#line 2312 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
 
-  case 424:
-#line 2302 "fortran.y"
+  case 425:
+#line 2332 "fortran.y"
     {
                           Add_SubroutineWhereAgrifUsed_1(subroutinename,
@@ -6219,6 +6296,6 @@
     break;
 
-  case 425:
-#line 2308 "fortran.y"
+  case 426:
+#line 2338 "fortran.y"
     {
                           Add_SubroutineWhereAgrifUsed_1(subroutinename,
@@ -6228,11 +6305,11 @@
     break;
 
-  case 431:
-#line 2319 "fortran.y"
+  case 432:
+#line 2349 "fortran.y"
     {if ( couldaddvariable == 1 ) created_dimensionlist = 0;;}
     break;
 
-  case 432:
-#line 2321 "fortran.y"
+  case 433:
+#line 2351 "fortran.y"
     {
                   created_dimensionlist = 1;
@@ -6246,11 +6323,11 @@
     break;
 
-  case 433:
-#line 2331 "fortran.y"
+  case 434:
+#line 2361 "fortran.y"
     {created_dimensionlist = 1;;}
     break;
 
-  case 438:
-#line 2339 "fortran.y"
+  case 439:
+#line 2369 "fortran.y"
     {
                       inagrifcallargument = 0 ;
@@ -6281,7 +6358,7 @@
     break;
 
-  case 443:
-#line 2373 "fortran.y"
-                       {
+  case 444:
+#line 2403 "fortran.y"
+    {
                        if (!strcasecmp((yyvsp[(2) - (2)].nac),"MPI_Init") )
                        {
@@ -6313,11 +6390,11 @@
     break;
 
-  case 444:
-#line 2403 "fortran.y"
+  case 445:
+#line 2433 "fortran.y"
     {pos_curcall=setposcur()-4;;}
     break;
 
-  case 447:
-#line 2408 "fortran.y"
+  case 448:
+#line 2438 "fortran.y"
     {
                   if ( callmpiinit == 1 )
@@ -6336,108 +6413,108 @@
     break;
 
-  case 517:
-#line 2530 "fortran.y"
+  case 520:
+#line 2562 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 518:
-#line 2531 "fortran.y"
+  case 521:
+#line 2563 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 519:
-#line 2532 "fortran.y"
+  case 522:
+#line 2564 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 520:
-#line 2535 "fortran.y"
+  case 523:
+#line 2567 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 521:
-#line 2537 "fortran.y"
+  case 524:
+#line 2569 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 522:
-#line 2539 "fortran.y"
+  case 525:
+#line 2571 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 523:
-#line 2541 "fortran.y"
+  case 526:
+#line 2573 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 524:
-#line 2543 "fortran.y"
+  case 527:
+#line 2575 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 525:
-#line 2545 "fortran.y"
+  case 528:
+#line 2577 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"%s,%s",(yyvsp[(1) - (3)].na),(yyvsp[(3) - (3)].na));;}
     break;
 
-  case 526:
-#line 2546 "fortran.y"
+  case 529:
+#line 2578 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 527:
-#line 2547 "fortran.y"
+  case 530:
+#line 2579 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 528:
-#line 2550 "fortran.y"
+  case 531:
+#line 2582 "fortran.y"
     {if ( couldaddvariable == 1 ) strcpy((yyval.na),(yyvsp[(1) - (1)].na));;}
     break;
 
-  case 529:
-#line 2552 "fortran.y"
+  case 532:
+#line 2584 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na)," (%s)",(yyvsp[(2) - (3)].na));;}
     break;
 
-  case 530:
-#line 2554 "fortran.y"
+  case 533:
+#line 2586 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s,%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
-  case 531:
-#line 2556 "fortran.y"
+  case 534:
+#line 2588 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s,%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
-  case 532:
-#line 2558 "fortran.y"
+  case 535:
+#line 2590 "fortran.y"
     {if ( couldaddvariable == 1 ) sprintf((yyval.na),"(%s,%s)",(yyvsp[(2) - (5)].na),(yyvsp[(4) - (5)].na));;}
     break;
 
-  case 533:
-#line 2562 "fortran.y"
+  case 536:
+#line 2594 "fortran.y"
     {if ( couldaddvariable == 1 )
                                               sprintf((yyval.na),"%s=%s,%s)",(yyvsp[(1) - (5)].nac),(yyvsp[(3) - (5)].na),(yyvsp[(5) - (5)].na));;}
     break;
 
-  case 534:
-#line 2565 "fortran.y"
+  case 537:
+#line 2597 "fortran.y"
     {if ( couldaddvariable == 1 )
                                         sprintf((yyval.na),"%s=%s,%s,%s)",(yyvsp[(1) - (7)].nac),(yyvsp[(3) - (7)].na),(yyvsp[(5) - (7)].na),(yyvsp[(7) - (7)].na));;}
     break;
 
-  case 541:
-#line 2581 "fortran.y"
+  case 544:
+#line 2613 "fortran.y"
     {Add_Allocate_Var_1((yyvsp[(1) - (1)].nac),curmodulename);;}
     break;
 
-  case 544:
-#line 2586 "fortran.y"
+  case 547:
+#line 2618 "fortran.y"
     {Add_Allocate_Var_1((yyvsp[(1) - (4)].nac),curmodulename);;}
     break;
 
-  case 552:
-#line 2609 "fortran.y"
+  case 555:
+#line 2641 "fortran.y"
     {strcpy((yyval.nac),(yyvsp[(1) - (1)].nac));;}
     break;
@@ -6445,5 +6522,5 @@
 
 /* Line 1267 of yacc.c.  */
-#line 6445 "fortran.tab.c"
+#line 6522 "fortran.tab.c"
       default: break;
     }
@@ -6454,5 +6531,5 @@
   YY_STACK_PRINT (yyss, yyssp);
 
-        *++yyvsp = yyval;
+  *++yyvsp = yyval;
 
 
@@ -6478,10 +6555,10 @@
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
-        {
+    {
       ++yynerrs;
 #if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
 #else
-            {
+      {
 	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
 	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
@@ -6499,5 +6576,5 @@
 		yymsg = yymsgbuf;
 		yymsg_alloc = sizeof yymsgbuf;
-            }
+	      }
 	  }
 
@@ -6515,5 +6592,5 @@
       }
 #endif
-        }
+    }
 
 
@@ -6529,6 +6606,6 @@
 	  if (yychar == YYEOF)
 	    YYABORT;
-    }
-    else
+	}
+      else
 	{
 	  yydestruct ("Error: discarding",
@@ -6659,5 +6736,5 @@
 
 
-#line 2611 "fortran.y"
+#line 2643 "fortran.y"
 
 
@@ -6744,8 +6821,10 @@
    strcpy(subroutinename," ");
    isrecursive = 0;
-   InitialValueGiven = 0 ;
+   strcpy(InitialValueGiven," ");
    strcpy(EmptyChar," ");
    inmoduledeclare = 0;
    incontainssubroutine = 0;
+   module_declar_type = 0;
+   GlobalDeclarationType = 0;
    colnum=0;
    incom=0;
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.y
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.y	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.y	(revision 7)
@@ -296,5 +296,5 @@
 %type <nac> opt_signe
 %type <nac> filename
-%type <na> attribute
+%type <nac> attribute
 %type <na> complex_const
 %type <na> begin_array
@@ -446,15 +446,15 @@
                       writeheadnewsub_0(1);
                    }
-      | TOK_FUNCTION name_routine arglist TOK_RESULT arglist1
+      | opt_recursive TOK_FUNCTION name_routine arglist TOK_RESULT arglist1
                    {
                       /* open param file                                      */
                       if ( firstpass == 0 )
                       {
-                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,$2);
+                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,$3);
                          paramout=fopen(ligne,"w");
                          if ( retour77 == 0 ) fprintf(paramout,"!\n");
                          else fprintf(paramout,"C\n");
                       }
-                      strcpy(subroutinename,$2);
+                      strcpy(subroutinename,$3);
                       if ( inmodulemeet == 1 )
                       {
@@ -462,5 +462,5 @@
                          /* we should to list of the subroutine argument the  */
                          /*    name of the function which has to be defined   */
-                         Add_SubroutineArgument_Var_1($3);
+                         Add_SubroutineArgument_Var_1($4);
                          strcpy(DeclType,"");
                          /* in the second step we should write the head of    */
@@ -473,21 +473,21 @@
                             /* we should to list of the subroutine argument   */
                             /* name of the function which has to be defined   */
-                            Add_SubroutineArgument_Var_1($3);
+                            Add_SubroutineArgument_Var_1($4);
                             strcpy(DeclType,"");
-                            Add_FunctionType_Var_1($2);
+                            Add_FunctionType_Var_1($3);
                             writeheadnewsub_0(2);
                       }
                    }
-      | TOK_FUNCTION name_routine arglist
+      | opt_recursive TOK_FUNCTION name_routine arglist
                    {
                       /* open param file                                      */
                       if ( firstpass == 0 )
                       {
-                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,$2);
+                         sprintf(ligne,"%s/ParamFile%s.h",nomdir,$3);
                          paramout=fopen(ligne,"w");
                          if ( retour77 == 0 ) fprintf(paramout,"!\n");
                          else fprintf(paramout,"C\n");
                       }
-                      strcpy(subroutinename,$2);
+                      strcpy(subroutinename,$3);
                       if ( inmodulemeet == 1 )
                       {
@@ -495,7 +495,7 @@
                          /* we should to list of the subroutine argument the  */
                          /*    name of the function which has to be defined   */
-                         Add_SubroutineArgument_Var_1($3);
+                         Add_SubroutineArgument_Var_1($4);
                          strcpy(DeclType,"");
-                         Add_FunctionType_Var_1($2);
+                         Add_FunctionType_Var_1($3);
                          /* in the second step we should write the head of    */
                          /*    the subroutine sub_loop_<subroutinename>       */
@@ -507,7 +507,7 @@
                             /* we should to list of the subroutine argument   */
                             /* name of the function which has to be defined   */
-                            Add_SubroutineArgument_Var_1($3);
+                            Add_SubroutineArgument_Var_1($4);
                             strcpy(DeclType,"");
-                            Add_FunctionType_Var_1($2);
+                            Add_FunctionType_Var_1($3);
                             writeheadnewsub_0(2);
                       }
@@ -678,5 +678,5 @@
                       strcpy(NamePrecision,"");
                       c_star = 0;
-                      InitialValueGiven = 0 ;
+                      strcpy(InitialValueGiven," ");
                       strcpy(IntentSpec,"");
                       VariableIsParameter =  0 ;
@@ -854,5 +854,5 @@
                       strcpy(NamePrecision,"");
                       c_star = 0;
-                      InitialValueGiven = 0 ;
+                      strcpy(InitialValueGiven," ");
                       strcpy(IntentSpec,"");
                       VariableIsParameter =  0 ;
@@ -866,4 +866,5 @@
                       strcpy(nameinttypename,"");
                       strcpy(c_selectorname,"");
+                      GlobalDeclarationType = 0; 
                    }
       | before_function name_routine arglist
@@ -1244,4 +1245,5 @@
                          {
                             curvar=createvar($3,curdim);
+                            GlobalDeclarationType == 0;
                          }
                          else
@@ -1319,4 +1321,5 @@
                    {
                       strcpy(DeclType,"TYPE");
+                      GlobalDeclarationType = 1
                    }
       ;
@@ -1813,5 +1816,5 @@
       | expr        {if ( couldaddvariable == 1 ) strcpy($$,$1);}
       ;
-initial_value :      {InitialValueGiven = 0;}
+initial_value :      {   strcpy(InitialValueGiven," ");}
       | before_initial '=' expr
                     {
@@ -1819,5 +1822,13 @@
                        {
                           strcpy(InitValue,$3);
-                          InitialValueGiven = 1;
+                          strcpy(InitialValueGiven,"=");
+                       }
+                    }
+      | before_initial TOK_POINT_TO expr
+                    {
+                       if ( couldaddvariable == 1 )
+                       {
+                          strcpy(InitValue,$3);
+                          strcpy(InitialValueGiven,"=>");
                        }
                     }
@@ -2158,4 +2169,11 @@
                              Write_NotGridDepend_Declaration_0();
                              Write_GlobalType_Declaration_0();
+                             if ( module_declar_type )
+                             {
+                             strcpy (ligne, "\n#include \"Module_DeclarType_");
+                             strcat (ligne, curmodulename);
+                             strcat (ligne, ".h\"\n");
+                             tofich(fortranout,ligne,1); 
+                             }
                              Write_Alloc_Subroutine_For_End_0();
                           }
@@ -2173,4 +2191,9 @@
                          {
                            fclose(module_declar);
+                         }
+                         if ( module_declar_type && insubroutinedeclare == 0)
+                         {
+                          fclose(module_declar_type);
+                          module_declar_type = 0;
                          }
                       }
@@ -2198,4 +2221,11 @@
                          Write_GlobalParameter_Declaration_0();
                          Write_GlobalType_Declaration_0();
+                             if ( module_declar_type)
+                             {                         
+                             strcpy (ligne, "\n#include \"Module_DeclarType_");
+                             strcat (ligne, curmodulename);
+                             strcat (ligne, ".h\"\n");
+                             tofich(fortranout,ligne,1); 
+                             }
                          Write_NotGridDepend_Declaration_0();
                          Write_Alloc_Subroutine_0();
@@ -2471,4 +2501,5 @@
       | '*'
       | TOK_DASTER
+      | ident expr dims      
       | ident expr
       | ident expr '%' ident_dims
@@ -2508,4 +2539,5 @@
       | TOK_END expr
       | TOK_NAME '=' expr
+      | predefinedfunction
       ;
 addop : '+'
@@ -2693,8 +2725,10 @@
    strcpy(subroutinename," ");
    isrecursive = 0;
-   InitialValueGiven = 0 ;
+   strcpy(InitialValueGiven," ");
    strcpy(EmptyChar," ");
    inmoduledeclare = 0;
    incontainssubroutine = 0;
+   module_declar_type = 0;
+   GlobalDeclarationType = 0;
    colnum=0;
    incom=0;
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.yy.c
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.yy.c	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/fortran.yy.c	(revision 7)
@@ -4804,5 +4804,5 @@
         b->yy_bs_lineno = 1;
         b->yy_bs_column = 0;
-	}
+    }
 
         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
@@ -4817,5 +4817,5 @@
     void fortran_flush_buffer (YY_BUFFER_STATE  b )
 {
-	if ( ! b )
+    	if ( ! b )
 		return;
 
@@ -4858,5 +4858,5 @@
 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-	}
+		}
 
 	/* Only push if top exists. Otherwise, replace top. */
Index: /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/main.c
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/main.c	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/AGRIF/LIB/main.c	(revision 7)
@@ -99,5 +99,5 @@
 /* Enabling traces.  */
 #ifndef YYDEBUG
-# define YYDEBUG 1
+# define YYDEBUG 0
 #endif
 
@@ -3430,5 +3430,5 @@
         b->yy_bs_lineno = 1;
         b->yy_bs_column = 0;
-	}
+    }
 
         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
@@ -3443,5 +3443,5 @@
     void yy_flush_buffer (YY_BUFFER_STATE  b )
 {
-	if ( ! b )
+    	if ( ! b )
 		return;
 
@@ -3484,5 +3484,5 @@
 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-	}
+		}
 
 	/* Only push if top exists. Otherwise, replace top. */
Index: /trunk/NEMOGCM/EXTERNAL/XMLIO_SERVER/src/IOSERVER/mod_iomanager.f90
===================================================================
--- /trunk/NEMOGCM/EXTERNAL/XMLIO_SERVER/src/IOSERVER/mod_iomanager.f90	(revision 6)
+++ /trunk/NEMOGCM/EXTERNAL/XMLIO_SERVER/src/IOSERVER/mod_iomanager.f90	(revision 7)
@@ -313,7 +313,7 @@
       
       IF (pt_field%axis%name=="none") THEN
+        CALL write_ioipsl_2d(varname,Field_buffer(1:ni,1:nj,1))
+      ELSE 
         CALL write_ioipsl_3d(varname,Field_buffer(1:ni,1:nj,1:nk))
-      ELSE 
-        CALL write_ioipsl_2d(varname,Field_buffer(1:ni,1:nj,1))
       ENDIF
     
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: iceini_2.F90 3145 2011-11-17 15:53:24Z smasson $ 
+   !! $Id: iceini_2.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limadv_2.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: limadv_2.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limdyn_2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limdyn_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90	(revision 7)
@@ -36,5 +36,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 4.0 , UCL - NEMO Consortium (2010)
-   !! $Id: limhdf_2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limhdf_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90	(revision 7)
@@ -47,5 +47,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limistate_2.F90 2978 2011-10-22 14:05:57Z cetlod $
+   !! $Id: limistate_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90	(revision 7)
@@ -31,5 +31,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limmsh_2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limmsh_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90	(revision 7)
@@ -43,5 +43,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limrhg_2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limrhg_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -94,6 +94,6 @@
       CALL wrk_alloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr )
       CALL wrk_alloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang )
-      CALL wrk_alloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kistart = 0 )
-      CALL wrk_alloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kistart = 0 )
+      CALL wrk_alloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 )
+      CALL wrk_alloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 )
 
       !  Store initial velocities
@@ -576,6 +576,6 @@
       CALL wrk_dealloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr )
       CALL wrk_dealloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang )
-      CALL wrk_dealloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kistart = 0 )
-      CALL wrk_dealloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kistart = 0 )
+      CALL wrk_dealloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 )
+      CALL wrk_dealloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 )
 
    END SUBROUTINE lim_rhg_2
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90	(revision 7)
@@ -59,5 +59,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limsbc_2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limsbc_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90	(revision 7)
@@ -52,5 +52,5 @@
    !!-------- -------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limthd_2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limthd_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90	(revision 7)
@@ -30,5 +30,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limthd_lac_2.F90 3195 2011-12-06 16:40:25Z smasson $
+   !! $Id: limthd_lac_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90	(revision 7)
@@ -34,5 +34,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limthd_zdf_2.F90 3195 2011-12-06 16:40:25Z smasson $
+   !! $Id: limthd_zdf_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90	(revision 7)
@@ -46,5 +46,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limtrp_2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limtrp_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90	(revision 7)
@@ -66,5 +66,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limwri_2.F90 3200 2011-12-07 15:00:49Z cbricaud $
+   !! $Id: limwri_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_2/limwri_dimg_2.h90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_2/limwri_dimg_2.h90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_2/limwri_dimg_2.h90	(revision 7)
@@ -2,5 +2,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limwri_dimg_2.h90 3200 2011-12-07 15:00:49Z cbricaud $
+   !! $Id: limwri_dimg_2.h90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -45,4 +45,5 @@
        IF( lk_mpp      )   CALL mpp_sum ( ialloc  )
        IF( ialloc /= 0 )   CALL ctl_warn('lim_wri_2 (limwri_dimg_2.h90) : failed to allocate arrays')
+       rcmoy(:,:,:) = 0._wp
     ENDIF
 
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: iceini.F90 3148 2011-11-17 16:28:07Z smasson $
+   !! $Id: iceini.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limadv.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limadv.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limdyn.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limdyn.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90	(revision 7)
@@ -35,5 +35,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010)
-   !! $Id: limhdf.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limhdf.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90	(revision 7)
@@ -49,5 +49,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limistate.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limistate.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90	(revision 7)
@@ -72,5 +72,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limitd_me.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limitd_me.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90	(revision 7)
@@ -50,5 +50,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010)
-   !! $Id: limitd_th.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limitd_th.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90	(revision 7)
@@ -48,5 +48,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limrhg.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limrhg.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limrst.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limrst.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90	(revision 7)
@@ -55,5 +55,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limsbc.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limsbc.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90	(revision 7)
@@ -59,5 +59,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 3.3 , UCL - NEMO Consortium (2010)
-   !! $Id: limthd.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limthd.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2010)
-   !! $Id: limthd_dh.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limthd_dh.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90	(revision 7)
@@ -34,5 +34,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limthd_dif.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limthd_dif.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90	(revision 7)
@@ -44,5 +44,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limthd_ent.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limthd_ent.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90	(revision 7)
@@ -46,5 +46,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limthd_lac.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limthd_lac.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limthd_sal.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limthd_sal.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90	(revision 7)
@@ -46,5 +46,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limtrp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limtrp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90	(revision 7)
@@ -55,5 +55,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limupdate.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limupdate.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90	(revision 7)
@@ -74,5 +74,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limvar.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limvar.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90	(revision 7)
@@ -52,5 +52,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011)
-   !! $Id: limwri.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: limwri.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/NST_SRC/agrif_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/NST_SRC/agrif_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/NST_SRC/agrif_oce.F90	(revision 7)
@@ -42,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/NST 3.3.1 , NEMO Consortium (2011)
-   !! $Id: agrif_oce.F90 2977 2011-10-22 13:46:41Z cetlod $
+   !! $Id: agrif_oce.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/NST 3.3 , NEMO Consortium (2010)
-   !! $Id: agrif_opa_interp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: agrif_opa_interp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90	(revision 7)
@@ -17,5 +17,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/NST 3.3 , NEMO Consortium (2010)
-   !! $Id: agrif_opa_sponge.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: agrif_opa_sponge.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90	(revision 7)
@@ -20,5 +20,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/NST 3.3 , NEMO Consortium (2010)
-   !! $Id: agrif_opa_update.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: agrif_opa_update.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_interp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_interp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_interp.F90	(revision 7)
@@ -20,5 +20,5 @@
   !!----------------------------------------------------------------------
    !! NEMO/NST 3.3 , NEMO Consortium (2010)
-   !! $Id: agrif_top_interp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: agrif_top_interp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90	(revision 7)
@@ -19,5 +19,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/NST 3.3 , NEMO Consortium (2010)
-   !! $Id: agrif_top_sponge.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: agrif_top_sponge.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90	(revision 7)
@@ -20,5 +20,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/NST 3.3 , NEMO Consortium (2010)
-   !! $Id: agrif_top_update.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: agrif_top_update.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/NST_SRC/agrif_user.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/NST_SRC/agrif_user.F90	(revision 7)
@@ -2,5 +2,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/NST 3.3 , NEMO Consortium (2010)
-   !! $Id: agrif_user.F90 2977 2011-10-22 13:46:41Z cetlod $
+   !! $Id: agrif_user.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -55,7 +55,7 @@
       USE nemogcm
       USE tradmp
-#if defined key_obc   ||   defined key_esopa
       USE obc_par
-#endif
+      USE bdy_par
+
       IMPLICIT NONE
       !!----------------------------------------------------------------------
@@ -71,8 +71,7 @@
       ! no tracer damping on fine grids
       ln_tradmp = .FALSE.
-#if defined key_obc || defined key_esopa
       ! no open boundary on fine grids
       lk_obc = .FALSE.
-#endif
+      lk_bdy = .FALSE.
 
       CALL nemo_init  ! Initializations of each fine grid
Index: /trunk/NEMOGCM/NEMO/OFF_SRC/dommsk.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OFF_SRC/dommsk.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OFF_SRC/dommsk.F90	(revision 7)
@@ -28,5 +28,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OFF 3.3 , NEMO Consortium (2010)
-   !! $Id: dommsk.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dommsk.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OFF_SRC/domrea.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OFF_SRC/domrea.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OFF_SRC/domrea.F90	(revision 7)
@@ -27,5 +27,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OFF 3.3 , NEMO Consortium (2010)
-   !! $Id: domrea.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: domrea.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OFF_SRC/dtadyn.F90	(revision 7)
@@ -93,5 +93,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OFF 3.3 , NEMO Consortium (2010)
-   !! $Id: dtadyn.F90 3154 2011-11-18 10:02:24Z cetlod $
+   !! $Id: dtadyn.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -135,7 +135,7 @@
          CALL fld_read( kt, 1, sf_dyn )      !==   read data at kt time step   ==!
          !
-         IF( lk_ldfslp .AND. sf_dyn(jf_tem)%ln_tint ) THEN    ! Computes slopes (here avt is used as workspace)                       
-            zts(:,:,:,jf_tem) = sf_dyn(jf_tem)%fdta(:,:,:,1) * tmask(:,:,:)   ! temperature
-            zts(:,:,:,jf_sal) = sf_dyn(jf_sal)%fdta(:,:,:,1) * tmask(:,:,:)   ! salinity 
+         IF( lk_ldfslp .AND. .NOT.lk_c1d .AND. sf_dyn(jf_tem)%ln_tint ) THEN    ! Computes slopes (here avt is used as workspace)                       
+            zts(:,:,:,jp_tem) = sf_dyn(jf_tem)%fdta(:,:,:,1) * tmask(:,:,:)   ! temperature
+            zts(:,:,:,jp_sal) = sf_dyn(jf_sal)%fdta(:,:,:,1) * tmask(:,:,:)   ! salinity 
             avt(:,:,:)        = sf_dyn(jf_avt)%fdta(:,:,:,1) * tmask(:,:,:)   ! vertical diffusive coef.
             CALL dta_dyn_slp( kt, zts, zuslp, zvslp, zwslpi, zwslpj )
@@ -159,5 +159,5 @@
       ENDIF
       ! 
-      IF( lk_ldfslp ) THEN    ! Computes slopes (here avt is used as workspace)                       
+      IF( lk_ldfslp .AND. .NOT.lk_c1d ) THEN    ! Computes slopes (here avt is used as workspace)                       
          iswap_tem = 0
          IF(  kt /= nit000 .AND. ( sf_dyn(jf_tem)%nrec_a(2) - nrecprev_tem ) /= 0 )  iswap_tem = 1
@@ -173,6 +173,6 @@
                ENDIF
                !
-               zts(:,:,:,jf_tem) = sf_dyn(jf_tem)%fdta(:,:,:,2) * tmask(:,:,:)   ! temperature
-               zts(:,:,:,jf_sal) = sf_dyn(jf_sal)%fdta(:,:,:,2) * tmask(:,:,:)   ! salinity 
+               zts(:,:,:,jp_tem) = sf_dyn(jf_tem)%fdta(:,:,:,2) * tmask(:,:,:)   ! temperature
+               zts(:,:,:,jp_sal) = sf_dyn(jf_sal)%fdta(:,:,:,2) * tmask(:,:,:)   ! salinity 
                avt(:,:,:)        = sf_dyn(jf_avt)%fdta(:,:,:,2) * tmask(:,:,:)   ! vertical diffusive coef.
                CALL dta_dyn_slp( kt, zts, zuslp, zvslp, zwslpi, zwslpj )
@@ -183,6 +183,6 @@
                wslpjdta(:,:,:,2) = zwslpj(:,:,:) 
             ELSE
-               zts(:,:,:,jf_tem) = sf_dyn(jf_tem)%fnow(:,:,:) * tmask(:,:,:)
-               zts(:,:,:,jf_sal) = sf_dyn(jf_sal)%fnow(:,:,:) * tmask(:,:,:)
+               zts(:,:,:,jp_tem) = sf_dyn(jf_tem)%fnow(:,:,:) * tmask(:,:,:)
+               zts(:,:,:,jp_sal) = sf_dyn(jf_sal)%fnow(:,:,:) * tmask(:,:,:)
                avt(:,:,:)        = sf_dyn(jf_avt)%fnow(:,:,:) * tmask(:,:,:)
                CALL dta_dyn_slp( kt, zts, zuslp, zvslp, zwslpi, zwslpj )
@@ -241,8 +241,9 @@
       ENDIF
       !
-      tsn(:,:,:,jf_tem) = sf_dyn(jf_tem)%fnow(:,:,:) * tmask(:,:,:)    ! temperature
-      tsn(:,:,:,jf_sal) = sf_dyn(jf_sal)%fnow(:,:,:) * tmask(:,:,:)    ! salinity
-      !
-      CALL eos( tsn, rhd, rhop )                                       ! In any case, we need rhop
+      tsn(:,:,:,jp_tem) = sf_dyn(jf_tem)%fnow(:,:,:) * tmask(:,:,:)    ! temperature
+      tsn(:,:,:,jp_sal) = sf_dyn(jf_sal)%fnow(:,:,:) * tmask(:,:,:)    ! salinity
+      !
+      CALL eos    ( tsn, rhd, rhop )                                       ! In any case, we need rhop
+      CALL zdf_mxl( kt )                                                   ! In any case, we need mxl 
       !
       avt(:,:,:)       = sf_dyn(jf_avt)%fnow(:,:,:) * tmask(:,:,:)    ! vertical diffusive coefficient 
@@ -257,9 +258,10 @@
       fr_i(:,:)        = sf_dyn(jf_ice)%fnow(:,:,1) * tmask(:,:,1)     ! Sea-ice fraction
       qsr (:,:)        = sf_dyn(jf_qsr)%fnow(:,:,1) * tmask(:,:,1)    ! solar radiation
+
       !                                                      ! bbl diffusive coef
-#if defined key_trabbl
+#if defined key_trabbl && ! defined key_c1d
       IF( ln_dynbbl ) THEN                                        ! read in a file
          ahu_bbl(:,:)  = sf_dyn(jf_ubl)%fnow(:,:,1) * umask(:,:,1)
-         ahv_bbl(:,:)  = sf_dyn(jf_vbl)%fnow(:,:,1) * umask(:,:,1)
+         ahv_bbl(:,:)  = sf_dyn(jf_vbl)%fnow(:,:,1) * vmask(:,:,1)
       ELSE                                                        ! Compute bbl coefficients if needed
          tsb(:,:,:,:) = tsn(:,:,:,:)
@@ -267,5 +269,5 @@
       END IF
 #endif
-#if ! defined key_degrad && defined key_traldf_c2d && defined key_traldf_eiv
+#if ( ! defined key_degrad && defined key_traldf_c2d && defined key_traldf_eiv ) && ! defined key_c1d 
       aeiw(:,:)        = sf_dyn(jf_eiw)%fnow(:,:,1) * tmask(:,:,1)    ! w-eiv
       !                                                           ! Computes the horizontal values from the vertical value
@@ -279,21 +281,21 @@
 #endif
       
-#if defined key_degrad
+#if defined key_degrad && ! defined key_c1d 
       !                                          ! degrad option : diffusive and eiv coef are 3D
       ahtu(:,:,:) = sf_dyn(jf_ahu)%fnow(:,:,:) * umask(:,:,:)
-      ahtv(:,:,:) = sf_dyn(jf_ahv)%fnow(:,:,:) * umask(:,:,:)
-      ahtw(:,:,:) = sf_dyn(jf_ahw)%fnow(:,:,:) * umask(:,:,:)
-#  if defined key_traldf_eiv
+      ahtv(:,:,:) = sf_dyn(jf_ahv)%fnow(:,:,:) * vmask(:,:,:)
+      ahtw(:,:,:) = sf_dyn(jf_ahw)%fnow(:,:,:) * tmask(:,:,:)
+#  if defined key_traldf_eiv 
       aeiu(:,:,:) = sf_dyn(jf_eiu)%fnow(:,:,:) * umask(:,:,:)
-      aeiv(:,:,:) = sf_dyn(jf_eiv)%fnow(:,:,:) * umask(:,:,:)
-      aeiw(:,:,:) = sf_dyn(jf_eiw)%fnow(:,:,:) * umask(:,:,:)
+      aeiv(:,:,:) = sf_dyn(jf_eiv)%fnow(:,:,:) * vmask(:,:,:)
+      aeiw(:,:,:) = sf_dyn(jf_eiw)%fnow(:,:,:) * tmask(:,:,:)
 #  endif
 #endif
       !
       IF(ln_ctl) THEN                  ! print control
-         CALL prt_ctl(tab3d_1=tsn(:,:,:,jf_tem), clinfo1=' tn      - : ', mask1=tmask, ovlap=1, kdim=jpk   )
-         CALL prt_ctl(tab3d_1=tsn(:,:,:,jf_sal), clinfo1=' sn      - : ', mask1=tmask, ovlap=1, kdim=jpk   )
-         CALL prt_ctl(tab3d_1=un               , clinfo1=' un      - : ', mask1=tmask, ovlap=1, kdim=jpk   )
-         CALL prt_ctl(tab3d_1=vn               , clinfo1=' vn      - : ', mask1=tmask, ovlap=1, kdim=jpk   )
+         CALL prt_ctl(tab3d_1=tsn(:,:,:,jp_tem), clinfo1=' tn      - : ', mask1=tmask, ovlap=1, kdim=jpk   )
+         CALL prt_ctl(tab3d_1=tsn(:,:,:,jp_sal), clinfo1=' sn      - : ', mask1=tmask, ovlap=1, kdim=jpk   )
+         CALL prt_ctl(tab3d_1=un               , clinfo1=' un      - : ', mask1=umask, ovlap=1, kdim=jpk   )
+         CALL prt_ctl(tab3d_1=vn               , clinfo1=' vn      - : ', mask1=vmask, ovlap=1, kdim=jpk   )
          CALL prt_ctl(tab3d_1=wn               , clinfo1=' wn      - : ', mask1=tmask, ovlap=1, kdim=jpk   )
          CALL prt_ctl(tab3d_1=avt              , clinfo1=' kz      - : ', mask1=tmask, ovlap=1, kdim=jpk   )
@@ -381,5 +383,5 @@
          ln_degrad = .FALSE.
       ENDIF
-      IF( ln_dynbbl .AND. .NOT.lk_trabbl ) THEN
+      IF( ln_dynbbl .AND. ( .NOT.lk_trabbl .OR. lk_c1d ) ) THEN
          CALL ctl_warn( 'dta_dyn_init: bbl option requires key_trabbl activated ; force ln_dynbbl to false' )
          ln_dynbbl = .FALSE.
@@ -449,5 +451,5 @@
       CALL fld_fill( sf_dyn, slf_d, cn_dir, 'dta_dyn_init', 'Data in file', 'namdta_dyn' )
       !
-      IF( lk_ldfslp ) THEN                  ! slopes 
+      IF( lk_ldfslp .AND. .NOT.lk_c1d ) THEN                  ! slopes 
          IF( sf_dyn(jf_tem)%ln_tint ) THEN      ! time interpolation
             ALLOCATE( uslpdta (jpi,jpj,jpk,2), vslpdta (jpi,jpj,jpk,2),    &
@@ -536,5 +538,5 @@
       REAL(wp), DIMENSION(jpi,jpj,jpk)     , INTENT(out) :: pwslpi   ! zonal diapycnal slopes
       REAL(wp), DIMENSION(jpi,jpj,jpk)     , INTENT(out) :: pwslpj   ! meridional diapycnal slopes
-      !! 
+      !!---------------------------------------------------------------------
 #if defined key_ldfslp && ! defined key_c1d
       CALL eos( pts, rhd, rhop )   ! Time-filtered in situ density 
@@ -550,6 +552,8 @@
       pwslpj(:,:,:) = wslpj(:,:,:) 
 #else
-      WRITE(*,*) 'dta_dyn_slp: You should not have seen this print! error?', &
-        &        kt, pts(1,1,1,1),puslp(1,1,1), pvslp(1,1,1), pwslpi(1,1,1), pwslpj(1,1,1)
+      puslp (:,:,:) = 0.            ! to avoid warning when compiling
+      pvslp (:,:,:) = 0.
+      pwslpi(:,:,:) = 0.
+      pwslpj(:,:,:) = 0.
 #endif
       !
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90	(revision 7)
@@ -86,5 +86,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: asminc.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: asminc.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ASM/asmtrj.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ASM/asmtrj.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ASM/asmtrj.F90	(revision 7)
@@ -52,5 +52,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: asmtrj.F90 2977 2011-10-22 13:46:41Z cetlod $
+   !! $Id: asmtrj.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90	(revision 7)
@@ -107,5 +107,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: bdy_oce.F90 3191 2011-12-05 09:41:41Z davestorkey $ 
+   !! $Id: bdy_oce.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_par.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_par.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_par.F90	(revision 7)
@@ -17,5 +17,9 @@
    PUBLIC
 
+# if ! defined key_agrif
    LOGICAL, PUBLIC, PARAMETER ::   lk_bdy  = .TRUE.   !: Unstructured Ocean Boundary Condition flag
+# else
+   LOGICAL, PUBLIC            ::   lk_bdy  = .TRUE.   !: Unstructured Ocean Boundary Condition flag
+# endif
    INTEGER, PUBLIC, PARAMETER ::   jp_bdy  = 10       !: Maximum number of bdy sets
    INTEGER, PUBLIC, PARAMETER ::   jpbtime = 1000     !: Max number of time dumps per file
@@ -30,10 +34,14 @@
    !!   Default option :            NO Unstructured open boundary condition
    !!----------------------------------------------------------------------
-   LOGICAL, PUBLIC, PARAMETER ::   lk_bdy = .FALSE.   !: Unstructured Ocean Boundary Condition flag
+# if ! defined key_agrif
+   LOGICAL, PUBLIC, PARAMETER ::   lk_bdy  = .FALSE.   !: Unstructured Ocean Boundary Condition flag
+# else
+   LOGICAL, PUBLIC            ::   lk_bdy  = .FALSE.   !: Unstructured Ocean Boundary Condition flag
+# endif
 #endif
 
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: bdy_par.F90 3191 2011-12-05 09:41:41Z davestorkey $ 
+   !! $Id: bdy_par.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90	(revision 7)
@@ -52,5 +52,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: bdydta.F90 3191 2011-12-05 09:41:41Z davestorkey $ 
+   !! $Id: bdydta.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -216,8 +216,10 @@
                   IF( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 ) THEN ! update external data
                      jend = jstart + 2
-                     CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), jit=jit, time_offset=time_offset )
+                     CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend),   &
+                     &              jit=jit, time_offset=time_offset )
                   ENDIF
                   IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing
-                     CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), jit=jit, time_offset=time_offset )
+                     CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy),   & 
+                     &                 jit=jit, time_offset=time_offset )
                   ENDIF
                ENDIF
@@ -329,5 +331,5 @@
                                ,nn_dyn3d_dta(ib_bdy)       &
                                ,nn_tra_dta(ib_bdy)         &
-#if defined key_ice_lim2
+#if defined key_lim2
                                ,nn_ice_lim2_dta(ib_bdy)    &
 #endif
@@ -385,17 +387,17 @@
             ln_full_vel = .false.
             ! ... default values (NB: frequency positive => hours, negative => months)
-            !                    !  file       ! frequency !  variable        ! time intep !  clim   ! 'yearly' or ! weights  ! rotation  !
-            !                    !  name       !  (hours)  !   name           !   (T/F)    !  (T/F)  !  'monthly'  ! filename ! pairs     !
-            bn_ssh     = FLD_N(  'bdy_ssh'     ,    24     ,  'sossheig'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-            bn_u2d     = FLD_N(  'bdy_vel2d_u' ,    24     ,  'vobtcrtx'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-            bn_v2d     = FLD_N(  'bdy_vel2d_v' ,    24     ,  'vobtcrty'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-            bn_u3d     = FLD_N(  'bdy_vel3d_u' ,    24     ,  'vozocrtx'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-            bn_v3d     = FLD_N(  'bdy_vel3d_v' ,    24     ,  'vomecrty'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-            bn_tem     = FLD_N(  'bdy_tem'     ,    24     ,  'votemper'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-            bn_sal     = FLD_N(  'bdy_sal'     ,    24     ,  'vosaline'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-#if defined key_lim2
-            bn_frld    = FLD_N(  'bdy_frld'    ,    24     ,  'ildsconc'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-            bn_hicif   = FLD_N(  'bdy_hicif'   ,    24     ,  'iicethic'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
-            bn_hsnif   = FLD_N(  'bdy_hsnif'   ,    24     ,  'isnothic'    ,  .false.   , .false. ,   'yearly'  , ''       , ''        )
+            !                    !  file       ! frequency !  variable   ! time intep !  clim   ! 'yearly' or ! weights  ! rotation  !
+            !                    !  name       ! hours !   name     !  (T/F)  !  (T/F)  !  'monthly'  ! filename ! pairs     !
+            bn_ssh     = FLD_N(  'bdy_ssh'     ,  24   , 'sossheig' , .false. , .false. ,   'yearly'  , ''       , ''        )
+            bn_u2d     = FLD_N(  'bdy_vel2d_u' ,  24   , 'vobtcrtx' , .false. , .false. ,   'yearly'  , ''       , ''        )
+            bn_v2d     = FLD_N(  'bdy_vel2d_v' ,  24   , 'vobtcrty' , .false. , .false. ,   'yearly'  , ''       , ''        )
+            bn_u3d     = FLD_N(  'bdy_vel3d_u' ,  24   , 'vozocrtx' , .false. , .false. ,   'yearly'  , ''       , ''        )
+            bn_v3d     = FLD_N(  'bdy_vel3d_v' ,  24   , 'vomecrty' , .false. , .false. ,   'yearly'  , ''       , ''        )
+            bn_tem     = FLD_N(  'bdy_tem'     ,  24   , 'votemper' , .false. , .false. ,   'yearly'  , ''       , ''        )
+            bn_sal     = FLD_N(  'bdy_sal'     ,  24   , 'vosaline' , .false. , .false. ,   'yearly'  , ''       , ''        )
+#if defined key_lim2
+            bn_frld    = FLD_N(  'bdy_frld'    ,  24   , 'ildsconc' , .false. , .false. ,   'yearly'  , ''       , ''        )
+            bn_hicif   = FLD_N(  'bdy_hicif'   ,  24   , 'iicethic' , .false. , .false. ,   'yearly'  , ''       , ''        )
+            bn_hsnif   = FLD_N(  'bdy_hsnif'   ,  24   , 'isnothic' , .false. , .false. ,   'yearly'  , ''       , ''        )
 #endif
 
@@ -576,5 +578,6 @@
       DO ib_bdy = 1, nb_bdy
          jend = jstart + nb_bdy_fld(ib_bdy) - 1
-         CALL fld_fill( bf(jstart:jend), blf_i(jstart:jend), cn_dir_array(ib_bdy), 'bdy_dta', 'open boundary conditions', 'nambdy_dta' )
+         CALL fld_fill( bf(jstart:jend), blf_i(jstart:jend), cn_dir_array(ib_bdy), 'bdy_dta',   &
+         &              'open boundary conditions', 'nambdy_dta' )
          jstart = jend + 1
       ENDDO
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: bdydyn.F90 3191 2011-12-05 09:41:41Z davestorkey $ 
+   !! $Id: bdydyn.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90	(revision 7)
@@ -34,5 +34,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: bdyini.F90 3191 2011-12-05 09:41:41Z davestorkey $ 
+   !! $Id: bdyini.F90 3298 2012-02-07 17:12:09Z cbricaud $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -415,5 +415,5 @@
                      icount = icount + 1
                      nbidta(icount, igrd, ib_bdy) = ii
-                     nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir + 1
+                     nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1
                      nbrdta(icount, igrd, ib_bdy) = ir
                   ENDDO
@@ -457,5 +457,5 @@
                      icount = icount + 1
                      nbidta(icount, igrd, ib_bdy) = ii
-                     nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir + 1
+                     nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1
                      nbrdta(icount, igrd, ib_bdy) = ir
                   ENDDO
@@ -499,5 +499,5 @@
                      icount = icount + 1
                      nbidta(icount, igrd, ib_bdy) = ii
-                     nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir + 1
+                     nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1
                      nbrdta(icount, igrd, ib_bdy) = ir
                   ENDDO
@@ -555,5 +555,5 @@
                   IF( nbrdta(ib,igrd,ib_bdy) < nbrdta(ibm1,igrd,ib_bdy) ) THEN
                      CALL ctl_stop('bdy_init : ERROR : boundary data in file must be defined in order of distance from edge nbr.', &
-                                   'A utility for re-ordering boundary coordinates and data files exists in the TOOLS/OBC directory')
+                    'A utility for re-ordering boundary coordinates and data files exists in the TOOLS/OBC directory')
                   ENDIF    
                ENDIF
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90	(revision 7)
@@ -56,5 +56,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: bdytides.F90 3191 2011-12-05 09:41:41Z davestorkey $ 
+   !! $Id: bdytides.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90	(revision 7)
@@ -30,5 +30,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: bdytra.F90 3191 2011-12-05 09:41:41Z davestorkey $ 
+   !! $Id: bdytra.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyvol.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyvol.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/BDY/bdyvol.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: bdyvol.F90 3191 2011-12-05 09:41:41Z davestorkey $ 
+   !! $Id: bdyvol.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: diaar5.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: diaar5.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90	(revision 7)
@@ -38,5 +38,5 @@
   USE dianam          ! build name of file
   USE lib_mpp         ! distributed memory computing library
-#if defined key_ice_lim2 || defined key_ice_lim3
+#if defined key_lim2 || defined key_lim3
   USE ice
 #endif
@@ -794,5 +794,5 @@
            ENDDO !end of loop on the density classes
 
-#if defined key_ice_lim
+#if defined key_lim2 || defined key_lim3
 
            !ICE CASE    
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diadimg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diadimg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diadimg.F90	(revision 7)
@@ -28,5 +28,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: diadimg.F90 3214 2011-12-12 13:33:31Z cbricaud $
+   !! $Id: diadimg.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diafwb.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diafwb.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diafwb.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: diafwb.F90 3168 2011-11-22 09:48:38Z cbricaud $
+   !! $Id: diafwb.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -176,10 +176,10 @@
          END SELECT
          ! 
-         DO ji = mi0(ii0), mi1(ii1)
+         DO ji = mi0(ii0), MIN(mi1(ii1),jpim1)
             DO jj = mj0(ij0), mj1(ij1)
                DO jk = 1, jpk 
                   zt = 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )
                   zs = 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )
-                  zu = un(ji,jj,jk) * fse3t(ji,jj,jk) * e2u(ji,jj)
+                  zu = un(ji,jj,jk) * fse3t(ji,jj,jk) * e2u(ji,jj) * tmask_i(ji,jj)
 
                   IF( un(ji,jj,jk) > 0.e0 ) THEN 
@@ -223,10 +223,10 @@
          END SELECT
          ! 
-         DO ji = mi0(ii0), mi1(ii1)
+         DO ji = mi0(ii0), MIN(mi1(ii1),jpim1)
             DO jj = mj0(ij0), mj1(ij1)
                DO jk = 1, jpk 
                   zt = 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )
                   zs = 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )
-                  zu = un(ji,jj,jk) * fse3t(ji,jj,jk) * e2u(ji,jj)
+                  zu = un(ji,jj,jk) * fse3t(ji,jj,jk) * e2u(ji,jj) * tmask_i(ji,jj)
                   
                   IF( un(ji,jj,jk) > 0.e0 ) THEN 
@@ -270,10 +270,10 @@
          END SELECT
          ! 
-         DO ji = mi0(ii0), mi1(ii1)
+         DO ji = mi0(ii0), MIN(mi1(ii1),jpim1)
             DO jj = mj0(ij0), mj1(ij1)
                DO jk = 1, jpk 
                   zt = 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )
                   zs = 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )
-                  zu = un(ji,jj,jk) * fse3t(ji,jj,jk) * e2u(ji,jj)
+                  zu = un(ji,jj,jk) * fse3t(ji,jj,jk) * e2u(ji,jj) * tmask_i(ji,jj)
                   
                   IF( un(ji,jj,jk) > 0.e0 ) THEN 
@@ -317,10 +317,10 @@
          END SELECT
          ! 
-         DO ji = mi0(ii0), mi1(ii1)
+         DO ji = mi0(ii0), MIN(mi1(ii1),jpim1)
             DO jj = mj0(ij0), mj1(ij1)
                DO jk = 1, jpk
                   zt = 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )
                   zs = 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )
-                  zu = un(ji,jj,jk) * fse3t(ji,jj,jk) * e2u(ji,jj)
+                  zu = un(ji,jj,jk) * fse3t(ji,jj,jk) * e2u(ji,jj) * tmask_i(ji,jj)
                   
                   IF( un(ji,jj,jk) > 0.e0 ) THEN 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90	(revision 7)
@@ -25,8 +25,7 @@
    PRIVATE
 
-   LOGICAL, PUBLIC, PARAMETER ::   lk_diaharm  = .TRUE.
+   LOGICAL, PUBLIC, PARAMETER :: lk_diaharm  = .TRUE.
    
-   INTEGER, PARAMETER :: nb_harmo_max =  9
-   INTEGER, PARAMETER :: jpincomax    = 18
+   INTEGER, PARAMETER :: jpincomax    = 2.*jpmax_harmo
    INTEGER, PARAMETER :: jpdimsparse  = jpincomax*300*24
 
@@ -34,5 +33,5 @@
                          nit000_han = 1, & ! First time step used for harmonic analysis
                          nitend_han = 1, & ! Last time step used for harmonic analysis
-                         nstep_han  = 1  & ! Time step frequency for harmonic analysis
+                         nstep_han  = 1, & ! Time step frequency for harmonic analysis
                          nb_ana            ! Number of harmonics to analyse
 
@@ -44,4 +43,5 @@
                                                 out_v
 
+   INTEGER :: ninco, nsparse
    INTEGER ,       DIMENSION(jpdimsparse)         :: njsparse, nisparse
    INTEGER , SAVE, DIMENSION(jpincomax)           :: ipos1
@@ -51,5 +51,5 @@
    REAL(wp), SAVE, DIMENSION(jpincomax)           :: zpivot
 
-   CHARACTER (LEN=4), DIMENSION(nb_harmo_max) ::   &
+   CHARACTER (LEN=4), DIMENSION(jpmax_harmo) ::   &
        tname         ! Names of tidal constituents ('M2', 'K1',...)
 
@@ -78,26 +78,26 @@
       !! * Local declarations 
       INTEGER :: jh, nhan, jk, ji
-      NAMELIST/nam_diaharm/ nit000_han, nitend_han, nstep_han, nb_ana, tname
-
-      !!----------------------------------------------------------------------
-
-      ! Read namelist parameters:
-      ! -------------------------
+
+      NAMELIST/nam_diaharm/ nit000_han, nitend_han, nstep_han, tname
+      !!----------------------------------------------------------------------
+
+      IF(lwp) THEN
+         WRITE(numout,*)
+         WRITE(numout,*) 'dia_harm_init: Tidal harmonic analysis initialization'
+         WRITE(numout,*) '~~~~~~~ '
+      ENDIF
+      !
+      CALL tide_init_Wave
+      !
+      tname(:)=''
+      !
+      ! Read Namelist nam_diaharm
       REWIND ( numnam )
       READ   ( numnam, nam_diaharm )
-
-      IF(lwp) WRITE(numout,*)
-      IF(lwp) WRITE(numout,*) 'dia_harm_init: Tidal harmonic analysis initialization'
-      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~'
-
-      IF(lwp) WRITE(numout,*) 'First time step used for analysis:  nit000_han= ', nit000_han
-      IF(lwp) WRITE(numout,*) 'Last  time step used for analysis:  nitend_han= ', nitend_han
-      IF(lwp) WRITE(numout,*) 'Time step frequency for harmonic analysis:  nstep_han= ', nstep_han
-
-      IF (nb_ana > nb_harmo_max) THEN
-        IF(lwp) WRITE(numout,*) ' E R R O R : dia_harm_init. &
-                                & nb_ana must be lower than nb_harmo_max, stop'
-        IF(lwp) WRITE(numout,*) 'nb_harmo_max= ', nb_harmo_max
-        nstop = nstop + 1
+      !
+      IF(lwp) THEN
+         WRITE(numout,*) 'First time step used for analysis:  nit000_han= ', nit000_han
+         WRITE(numout,*) 'Last  time step used for analysis:  nitend_han= ', nitend_han
+         WRITE(numout,*) 'Time step frequency for harmonic analysis:  nstep_han= ', nstep_han
       ENDIF
 
@@ -105,23 +105,39 @@
       ! ----------------------------------------------
       IF (nit000 > nit000_han) THEN
-        IF(lwp) WRITE(numout,*) ' E R R O R : dia_harm_init. &
-                                & nit000_han must be greater than nit000, stop'
-        IF(lwp) WRITE(numout,*) 'restart capability not implemented'
+        IF(lwp) WRITE(numout,*) ' E R R O R dia_harm_init : nit000_han must be greater than nit000, stop'
+        IF(lwp) WRITE(numout,*) ' restart capability not implemented'
         nstop = nstop + 1
       ENDIF
       IF (nitend < nitend_han) THEN
-        IF(lwp) WRITE(numout,*) ' E R R O R : dia_harm_init. &
-                                & nitend_han must be lower than nitend, stop'
-        IF(lwp) WRITE(numout,*) 'restart capability not implemented'
+        IF(lwp) WRITE(numout,*) ' E R R O R dia_harm_init : nitend_han must be lower than nitend, stop'
+        IF(lwp) WRITE(numout,*) ' restart capability not implemented'
         nstop = nstop + 1
       ENDIF
 
       IF (MOD(nitend_han-nit000_han+1,nstep_han).NE.0) THEN
-        IF(lwp) WRITE(numout,*) ' E R R O R : dia_harm_init. &
-                                & analysis time span must be a multiple of nstep_han, stop'
+        IF(lwp) WRITE(numout,*) ' E R R O R dia_harm_init : analysis time span must be a multiple of nstep_han, stop'
         nstop = nstop + 1
       END IF
 
-      CALL tide_init_Wave
+      nb_ana=0
+      DO jk=1,jpmax_harmo
+         DO ji=1,jpmax_harmo
+            IF(TRIM(tname(jk)) == Wave(ji)%cname_tide) THEN
+               nb_ana=nb_ana+1
+            ENDIF
+         END DO
+      ENDDO
+      !
+      IF(lwp) THEN
+         WRITE(numout,*) '        Namelist nam_diaharm'
+         WRITE(numout,*) '        nb_ana    = ', nb_ana
+         CALL flush(numout)
+      ENDIF
+      !
+      IF (nb_ana > jpmax_harmo) THEN
+        IF(lwp) WRITE(numout,*) ' E R R O R dia_harm_init : nb_ana must be lower than jpmax_harmo, stop'
+        IF(lwp) WRITE(numout,*) ' jpmax_harmo= ', jpmax_harmo
+        nstop = nstop + 1
+      ENDIF
 
       ALLOCATE(name    (nb_ana))
@@ -183,5 +199,5 @@
            (MOD(kt,nstep_han).EQ.0) ) THEN
 
-        ztime = kt*rdt 
+        ztime = (kt-nit000+1)*rdt 
        
         nhc = 0
@@ -239,5 +255,5 @@
       REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ana_amp
       !!--------------------------------------------------------------------
-      CALL wrk_alloc( jpi , jpj , nb_harmo_max , 2 , ana_amp )
+      CALL wrk_alloc( jpi , jpj , jpmax_harmo , 2 , ana_amp )
 
       IF(lwp) WRITE(numout,*)
@@ -280,5 +296,5 @@
                DO jc = 1,2
                   kun = kun + 1
-                  tmp4(kun)=ana_temp(ji,jj,kun,1)
+                  ztmp4(kun)=ana_temp(ji,jj,kun,1)
                ENDDO
             ENDDO
@@ -288,6 +304,6 @@
             ! Fill output array
             DO jh = 1, nb_ana
-               ana_amp(ji,jj,jh,1)=tmp7((jh-1)*2+1)
-               ana_amp(ji,jj,jh,2)=tmp7((jh-1)*2+2)
+               ana_amp(ji,jj,jh,1)=ztmp7((jh-1)*2+1)
+               ana_amp(ji,jj,jh,2)=ztmp7((jh-1)*2+2)
             END DO
          END DO
@@ -317,5 +333,5 @@
                DO jc = 1,2
                   kun = kun + 1
-                  tmp4(kun)=ana_temp(ji,jj,kun,2)
+                  ztmp4(kun)=ana_temp(ji,jj,kun,2)
                ENDDO
             ENDDO
@@ -325,6 +341,6 @@
             ! Fill output array
             DO jh = 1, nb_ana
-               ana_amp(ji,jj,jh,1)=tmp7((jh-1)*2+1)
-               ana_amp(ji,jj,jh,2)=tmp7((jh-1)*2+2)
+               ana_amp(ji,jj,jh,1)=ztmp7((jh-1)*2+1)
+               ana_amp(ji,jj,jh,2)=ztmp7((jh-1)*2+2)
             END DO
 
@@ -351,5 +367,5 @@
                DO jc = 1,2
                   kun = kun + 1
-                  tmp4(kun)=ana_temp(ji,jj,kun,3)
+                  ztmp4(kun)=ana_temp(ji,jj,kun,3)
                ENDDO
             ENDDO
@@ -359,6 +375,6 @@
             ! Fill output array
             DO jh = 1, nb_ana
-               ana_amp(ji,jj,jh,1)=tmp7((jh-1)*2+1)
-               ana_amp(ji,jj,jh,2)=tmp7((jh-1)*2+2)
+               ana_amp(ji,jj,jh,1)=ztmp7((jh-1)*2+1)
+               ana_amp(ji,jj,jh,2)=ztmp7((jh-1)*2+2)
             END DO
 
@@ -378,9 +394,9 @@
 
       CALL dia_wri_harm ! Write results in files
-
-      CALL wrk_dealloc( jpi , jpj , nb_harmo_max , 2 , ana_amp )
-  END SUBROUTINE dia_harm_end
-
-  SUBROUTINE dia_wri_harm
+      CALL wrk_dealloc( jpi , jpj , jpmax_harmo , 2 , ana_amp )
+      !
+   END SUBROUTINE dia_harm_end
+
+   SUBROUTINE dia_wri_harm
       !!--------------------------------------------------------------------
       !!                 ***  ROUTINE dia_wri_harm  ***
@@ -397,8 +413,8 @@
       CHARACTER(LEN=lc) :: cltext
       CHARACTER(LEN=lc) ::   &
-         cdfile_name_T    ,   & ! name of the file created (T-points)
-         cdfile_name_U    ,   & ! name of the file created (U-points)
-         cdfile_name_V          ! name of the file created (V-points)
-      INTEGER  ::   jh       
+         cdfile_name_T   ,   & ! name of the file created (T-points)
+         cdfile_name_U   ,   & ! name of the file created (U-points)
+         cdfile_name_V         ! name of the file created (V-points)
+      INTEGER  ::   jh
       !!----------------------------------------------------------------------
 
@@ -410,5 +426,5 @@
 
       IF(lwp) WRITE(numout,*) '  '
-      IF(lwp) WRITE(numout,*) 'dia_wri_harm : Write harmonic analysis results' 
+      IF(lwp) WRITE(numout,*) 'dia_wri_harm : Write harmonic analysis results'
 #if defined key_dimgout
       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~  Output files: ', TRIM(cdfile_name_T)
@@ -457,5 +473,5 @@
 #endif
 
-  END SUBROUTINE dia_wri_harm
+   END SUBROUTINE dia_wri_harm
 
    SUBROUTINE SUR_DETERMINE(init)
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90	(revision 7)
@@ -45,5 +45,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: diahsb.F90 3168 2011-11-22 09:48:38Z cbricaud $
+   !! $Id: diahsb.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90	(revision 7)
@@ -42,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: diahth.F90 3168 2011-11-22 09:48:38Z cbricaud $ 
+   !! $Id: diahth.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaptr.F90	(revision 7)
@@ -87,5 +87,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: diaptr.F90 3208 2011-12-09 16:52:22Z smasson $ 
+   !! $Id: diaptr.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -97,5 +97,5 @@
       !!----------------------------------------------------------------------
       INTEGER               ::   dia_ptr_alloc   ! return value
-      INTEGER, DIMENSION(5) ::   ierr
+      INTEGER, DIMENSION(6) ::   ierr
       !!----------------------------------------------------------------------
       ierr(:) = 0
@@ -122,4 +122,6 @@
          &     ndex_h(jpj),          ndex_h_atl_30(jpj), ndex_h_pac_30(jpj), &
          &     ndex_h_ind_30(jpj),   ndex_h_ipc_30(jpj), Stat=ierr(5) )
+         !
+     ALLOCATE( btm30(jpi,jpj) , STAT=ierr(6)  )
          !
       dia_ptr_alloc = MAXVAL( ierr )
@@ -470,58 +472,61 @@
          WRITE(numout,*) '      Frequency of outputs                               nn_fwri    = ', nn_fwri
       ENDIF
-
-      IF( ln_subbas ) THEN   ;   nptr = 5       ! Global, Atlantic, Pacific, Indian, Indo-Pacific
-      ELSE                   ;   nptr = 1       ! Global only
-      ENDIF
-
-      !                                      ! allocate dia_ptr arrays
-      IF( dia_ptr_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'lim_sbc_init : unable to allocate arrays' )
-
-      rc_pwatt = rc_pwatt * rau0 * rcp          ! conversion from K.s-1 to PetaWatt
-
-      IF( .NOT. ln_diaptr ) THEN       ! diaptr not used
-        RETURN
-      ENDIF
       
-      IF( lk_mpp )   CALL mpp_ini_znl( numout )     ! Define MPI communicator for zonal sum
-
-      IF( ln_subbas ) THEN                ! load sub-basin mask
-         CALL iom_open( 'subbasins', inum )
-         CALL iom_get( inum, jpdom_data, 'atlmsk', btmsk(:,:,2) )   ! Atlantic basin
-         CALL iom_get( inum, jpdom_data, 'pacmsk', btmsk(:,:,3) )   ! Pacific  basin
-         CALL iom_get( inum, jpdom_data, 'indmsk', btmsk(:,:,4) )   ! Indian   basin
-         CALL iom_close( inum )
-         btmsk(:,:,5) = MAX ( btmsk(:,:,3), btmsk(:,:,4) )          ! Indo-Pacific basin
-         WHERE( gphit(:,:) < -30._wp)   ;   btm30(:,:) = 0._wp      ! mask out Southern Ocean
-         ELSE WHERE                     ;   btm30(:,:) = tmask(:,:,1)
-         END WHERE
-      ENDIF
-      btmsk(:,:,1) = tmask_i(:,:)                                   ! global ocean
+      IF( ln_diaptr) THEN  
       
-      DO jn = 1, nptr
-         btmsk(:,:,jn) = btmsk(:,:,jn) * tmask_i(:,:)               ! interior domain only
-      END DO
+         IF( ln_subbas ) THEN   ;   nptr = 5       ! Global, Atlantic, Pacific, Indian, Indo-Pacific
+         ELSE                   ;   nptr = 1       ! Global only
+         ENDIF
+
+         !                                      ! allocate dia_ptr arrays
+         IF( dia_ptr_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'dia_ptr_init : unable to allocate arrays' )
+
+         rc_pwatt = rc_pwatt * rau0 * rcp          ! conversion from K.s-1 to PetaWatt
+
+         IF( lk_mpp )   CALL mpp_ini_znl( numout )     ! Define MPI communicator for zonal sum
+
+         IF( ln_subbas ) THEN                ! load sub-basin mask
+            CALL iom_open( 'subbasins', inum )
+            CALL iom_get( inum, jpdom_data, 'atlmsk', btmsk(:,:,2) )   ! Atlantic basin
+            CALL iom_get( inum, jpdom_data, 'pacmsk', btmsk(:,:,3) )   ! Pacific  basin
+            CALL iom_get( inum, jpdom_data, 'indmsk', btmsk(:,:,4) )   ! Indian   basin
+            CALL iom_close( inum )
+            btmsk(:,:,5) = MAX ( btmsk(:,:,3), btmsk(:,:,4) )          ! Indo-Pacific basin
+            WHERE( gphit(:,:) < -30._wp)   ;   btm30(:,:) = 0._wp      ! mask out Southern Ocean
+            ELSE WHERE                     ;   btm30(:,:) = tmask(:,:,1)
+            END WHERE
+         ENDIF
+         btmsk(:,:,1) = tmask_i(:,:)                                   ! global ocean
       
-      IF( lk_vvl )   CALL ctl_stop( 'diaptr: error in vvl case as constant i-mean surface is used' )
-
-      !                                   ! i-sum of e1v*e3v surface and its inverse
-      DO jn = 1, nptr
-         sjk(:,:,jn) = ptr_tjk( tmask(:,:,:), btmsk(:,:,jn) )
-         r1_sjk(:,:,jn) = 0._wp
-         WHERE( sjk(:,:,jn) /= 0._wp )   r1_sjk(:,:,jn) = 1._wp / sjk(:,:,jn)
-      END DO
+         DO jn = 1, nptr
+            btmsk(:,:,jn) = btmsk(:,:,jn) * tmask_i(:,:)               ! interior domain only
+         END DO
+      
+         IF( lk_vvl )   CALL ctl_stop( 'diaptr: error in vvl case as constant i-mean surface is used' )
+
+         !                                   ! i-sum of e1v*e3v surface and its inverse
+         DO jn = 1, nptr
+            sjk(:,:,jn) = ptr_tjk( tmask(:,:,:), btmsk(:,:,jn) )
+            r1_sjk(:,:,jn) = 0._wp
+            WHERE( sjk(:,:,jn) /= 0._wp )   r1_sjk(:,:,jn) = 1._wp / sjk(:,:,jn)
+         END DO
+
+      ! Initialise arrays to zero because diatpr is called before they are first calculated
+      ! Note that this means diagnostics will not be exactly correct when model run is restarted.
+      htr_adv(:) = 0._wp ; str_adv(:) =  0._wp ;  htr_ldf(:) = 0._wp ; str_ldf(:) =  0._wp
 
 #if defined key_mpp_mpi 
-      iglo (1) = jpjglo                   ! MPP case using MPI  ('key_mpp_mpi')
-      iloc (1) = nlcj
-      iabsf(1) = njmppt(narea)
-      iabsl(:) = iabsf(:) + iloc(:) - 1
-      ihals(1) = nldj - 1
-      ihale(1) = nlcj - nlej
-      idid (1) = 2
-      CALL flio_dom_set( jpnj, nproc/jpni, idid, iglo, iloc, iabsf, iabsl, ihals, ihale, 'BOX', nidom_ptr )
+         iglo (1) = jpjglo                   ! MPP case using MPI  ('key_mpp_mpi')
+         iloc (1) = nlcj
+         iabsf(1) = njmppt(narea)
+         iabsl(:) = iabsf(:) + iloc(:) - 1
+         ihals(1) = nldj - 1
+         ihale(1) = nlcj - nlej
+         idid (1) = 2
+         CALL flio_dom_set( jpnj, nproc/jpni, idid, iglo, iloc, iabsf, iabsl, ihals, ihale, 'BOX', nidom_ptr )
 #else
-      nidom_ptr = FLIO_DOM_NONE
-#endif
+         nidom_ptr = FLIO_DOM_NONE
+#endif
+      ENDIF 
       ! 
       IF( nn_timing == 1 )   CALL timing_stop('dia_ptr_init')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90	(revision 7)
@@ -28,4 +28,5 @@
    USE ldftra_oce      ! ocean active tracers: lateral physics
    USE ldfdyn_oce      ! ocean dynamics: lateral physics
+   USE traldf_iso_grif, ONLY : psix_eiv, psiy_eiv
    USE sol_oce         ! solver variables
    USE sbc_oce         ! Surface boundary condition: ocean fields
@@ -230,8 +231,11 @@
       CHARACTER (len=40) ::   clhstnam, clop, clmx           ! local names
       INTEGER  ::   inum = 11                                ! temporary logical unit
+      INTEGER  ::   ji, jj, jk                               ! dummy loop indices
+      INTEGER  ::   ierr                                     ! error code return from allocation
       INTEGER  ::   iimi, iima, ipk, it, itmod, ijmi, ijma   ! local integers
       REAL(wp) ::   zsto, zout, zmax, zjulian, zdt           ! local scalars
       !!
       REAL(wp), POINTER, DIMENSION(:,:)   :: zw2d       ! 2D workspace
+      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d       ! 3D workspace
       !!----------------------------------------------------------------------
       ! 
@@ -239,4 +243,5 @@
       !
       CALL wrk_alloc( jpi , jpj      , zw2d )
+      IF ( ln_traldf_gdia )  call wrk_alloc( jpi , jpj , jpk  , zw3d )
       !
       ! Output the initial state and forcings
@@ -445,8 +450,13 @@
          CALL histdef( nid_U, "vozocrtx", "Zonal Current"                      , "m/s"    ,   &  ! un
             &          jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout )
+         IF( ln_traldf_gdia ) THEN
+            CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current"                  , "m/s"    ,   &  ! u_eiv
+                 &          jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout )
+         ELSE
 #if defined key_diaeiv
-         CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current"                  , "m/s"    ,   &  ! u_eiv
+            CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current"                  , "m/s"    ,   &  ! u_eiv
             &          jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout )
 #endif
+         END IF
          !                                                                                      !!! nid_U : 2D
          CALL histdef( nid_U, "sozotaux", "Wind Stress along i-axis"           , "N/m2"   ,   &  ! utau
@@ -458,8 +468,13 @@
          CALL histdef( nid_V, "vomecrty", "Meridional Current"                 , "m/s"    ,   &  ! vn
             &          jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout )
+         IF( ln_traldf_gdia ) THEN
+            CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current"             , "m/s"    ,   &  ! v_eiv
+                 &          jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout )
+         ELSE 
 #if defined key_diaeiv
-         CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current"             , "m/s"    ,   &  ! v_eiv
+            CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current"             , "m/s"    ,   &  ! v_eiv
             &          jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout )
 #endif
+         END IF
          !                                                                                      !!! nid_V : 2D
          CALL histdef( nid_V, "sometauy", "Wind Stress along j-axis"           , "N/m2"   ,   &  ! vtau
@@ -471,8 +486,13 @@
          CALL histdef( nid_W, "vovecrtz", "Vertical Velocity"                  , "m/s"    ,   &  ! wn
             &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout )
+         IF( ln_traldf_gdia ) THEN
+            CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity"              , "m/s"    ,   &  ! w_eiv
+                 &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout )
+         ELSE
 #if defined key_diaeiv
-         CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity"              , "m/s"    ,   &  ! w_eiv
-            &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout )
-#endif
+            CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity"              , "m/s"    ,   &  ! w_eiv
+                 &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout )
+#endif
+         END IF
          CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity"          , "m2/s"   ,   &  ! avt
             &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout )
@@ -569,21 +589,57 @@
          ! Write fields on U grid
       CALL histwrite( nid_U, "vozocrtx", it, un            , ndim_U , ndex_U )    ! i-current
+      IF( ln_traldf_gdia ) THEN
+         IF (.not. ALLOCATED(psix_eiv))THEN
+            ALLOCATE( psix_eiv(jpi,jpj,jpk) , psiy_eiv(jpi,jpj,jpk) , STAT=ierr )
+            IF( lk_mpp   )   CALL mpp_sum ( ierr )
+            IF( ierr > 0 )   CALL ctl_stop('STOP', 'diawri: unable to allocate psi{x,y}_eiv')
+            psix_eiv(:,:,:) = 0.0_wp
+            psiy_eiv(:,:,:) = 0.0_wp
+         ENDIF
+         DO jk=1,jpkm1
+            zw3d(:,:,jk) = (psix_eiv(:,:,jk+1) - psix_eiv(:,:,jk))/fse3u(:,:,jk)  ! u_eiv = -dpsix/dz
+         END DO
+         zw3d(:,:,jpk) = 0._wp
+         CALL histwrite( nid_U, "vozoeivu", it, zw3d, ndim_U , ndex_U )           ! i-eiv current
+      ELSE
 #if defined key_diaeiv
-      CALL histwrite( nid_U, "vozoeivu", it, u_eiv         , ndim_U , ndex_U )    ! i-eiv current
-#endif
+         CALL histwrite( nid_U, "vozoeivu", it, u_eiv, ndim_U , ndex_U )          ! i-eiv current
+#endif
+      ENDIF
       CALL histwrite( nid_U, "sozotaux", it, utau          , ndim_hU, ndex_hU )   ! i-wind stress
 
          ! Write fields on V grid
       CALL histwrite( nid_V, "vomecrty", it, vn            , ndim_V , ndex_V  )   ! j-current
+      IF( ln_traldf_gdia ) THEN
+         DO jk=1,jpk-1
+            zw3d(:,:,jk) = (psiy_eiv(:,:,jk+1) - psiy_eiv(:,:,jk))/fse3v(:,:,jk)  ! v_eiv = -dpsiy/dz
+         END DO
+         zw3d(:,:,jpk) = 0._wp
+         CALL histwrite( nid_V, "vomeeivv", it, zw3d, ndim_V , ndex_V )           ! j-eiv current
+      ELSE
 #if defined key_diaeiv
-      CALL histwrite( nid_V, "vomeeivv", it, v_eiv         , ndim_V , ndex_V  )   ! j-eiv current
-#endif
+         CALL histwrite( nid_V, "vomeeivv", it, v_eiv, ndim_V , ndex_V )          ! j-eiv current
+#endif
+      ENDIF
       CALL histwrite( nid_V, "sometauy", it, vtau          , ndim_hV, ndex_hV )   ! j-wind stress
 
          ! Write fields on W grid
       CALL histwrite( nid_W, "vovecrtz", it, wn             , ndim_T, ndex_T )    ! vert. current
+      IF( ln_traldf_gdia ) THEN
+         DO jk=1,jpk-1
+            DO jj = 2, jpjm1
+               DO ji = fs_2, fs_jpim1  ! vector opt.
+                  zw3d(ji,jj,jk) = (psiy_eiv(ji,jj,jk) - psiy_eiv(ji,jj-1,jk))/e2v(ji,jj) + &
+                       &    (psix_eiv(ji,jj,jk) - psix_eiv(ji-1,jj,jk))/e1u(ji,jj) ! w_eiv = dpsiy/dy + dpsiy/dx
+               END DO
+            END DO
+         END DO
+         zw3d(:,:,jpk) = 0._wp
+         CALL histwrite( nid_W, "voveeivw", it, zw3d          , ndim_T, ndex_T )    ! vert. eiv current
+      ELSE
 #   if defined key_diaeiv
-      CALL histwrite( nid_W, "voveeivw", it, w_eiv          , ndim_T, ndex_T )    ! vert. eiv current
+         CALL histwrite( nid_W, "voveeivw", it, w_eiv          , ndim_T, ndex_T )    ! vert. eiv current
 #   endif
+      ENDIF
       CALL histwrite( nid_W, "votkeavt", it, avt            , ndim_T, ndex_T )    ! T vert. eddy diff. coef.
       CALL histwrite( nid_W, "votkeavm", it, avmu           , ndim_T, ndex_T )    ! T vert. eddy visc. coef.
@@ -608,4 +664,5 @@
       !
       CALL wrk_dealloc( jpi , jpj      , zw2d )
+      IF ( ln_traldf_gdia )  call wrk_dealloc( jpi , jpj , jpk  , zw3d )
       !
       IF( nn_timing == 1 )   CALL timing_stop('dia_wri')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90	(revision 7)
@@ -46,5 +46,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: daymod.F90 3164 2011-11-21 13:41:25Z cetlod $
+   !! $Id: daymod.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90	(revision 7)
@@ -237,5 +237,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: dom_oce.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: dom_oce.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90	(revision 7)
@@ -46,5 +46,5 @@
    !!-------------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: domain.F90 3162 2011-11-20 16:38:17Z cetlod $
+   !! $Id: domain.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence        (NEMOGCM/NEMO_CeCILL.txt)
    !!-------------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domcfg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domcfg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domcfg.F90	(revision 7)
@@ -24,5 +24,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.2 , LODYC-IPSL  (2009)
-   !! $Id: domcfg.F90 3162 2011-11-20 16:38:17Z cetlod $ 
+   !! $Id: domcfg.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90	(revision 7)
@@ -36,5 +36,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: domhgr.F90 3162 2011-11-20 16:38:17Z cetlod $ 
+   !! $Id: domhgr.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90	(revision 7)
@@ -50,5 +50,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.2 , LODYC-IPSL  (2009)
-   !! $Id: dommsk.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: dommsk.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90	(revision 7)
@@ -23,5 +23,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: domngb.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: domngb.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: domvvl.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: domvvl.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90	(revision 7)
@@ -32,5 +32,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: domwri.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: domwri.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90	(revision 7)
@@ -62,5 +62,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3.1 , NEMO Consortium (2011)
-   !! $Id: domzgr.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: domzgr.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -455,16 +455,4 @@
             CALL iom_close( inum )
             !                                                ! =====================
-            IF( cp_cfg == "orca" .AND. jp_cfg == 1 ) THEN    ! ORCA R1 configuration
-               ii0 = 142   ;   ii1 = 142                     ! =====================
-               ij0 =  51   ;   ij1 =  53                     
-               DO ji = mi0(ii0), mi1(ii1)                    ! Close Halmera Strait
-                  DO jj = mj0(ij0), mj1(ij1)
-                     bathy(ji,jj) = 0._wp
-                  END DO
-               END DO
-               IF(lwp) WRITE(numout,*)
-               IF(lwp) WRITE(numout,*) '      orca_r1: Halmera strait closed at i=',ii0,' j=',ij0,'->',ij1
-            ENDIF
-            !                                                ! =====================
             IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN    ! ORCA R2 configuration
                !                                             ! =====================
@@ -786,14 +774,14 @@
       !
       DO jk = 1, jpk
-         fsdept(:,:,jk) = gdept_0(jk)
-         fsdepw(:,:,jk) = gdepw_0(jk)
-         fsde3w(:,:,jk) = gdepw_0(jk)
-         fse3t (:,:,jk) = e3t_0(jk)
-         fse3u (:,:,jk) = e3t_0(jk)
-         fse3v (:,:,jk) = e3t_0(jk)
-         fse3f (:,:,jk) = e3t_0(jk)
-         fse3w (:,:,jk) = e3w_0(jk)
-         fse3uw(:,:,jk) = e3w_0(jk)
-         fse3vw(:,:,jk) = e3w_0(jk)
+            gdept(:,:,jk) = gdept_0(jk)
+            gdepw(:,:,jk) = gdepw_0(jk)
+            gdep3w(:,:,jk) = gdepw_0(jk)
+            e3t (:,:,jk) = e3t_0(jk)
+            e3u (:,:,jk) = e3t_0(jk)
+            e3v (:,:,jk) = e3t_0(jk)
+            e3f (:,:,jk) = e3t_0(jk)
+            e3w (:,:,jk) = e3w_0(jk)
+            e3uw(:,:,jk) = e3w_0(jk)
+            e3vw(:,:,jk) = e3w_0(jk)
       END DO
       !
@@ -1042,13 +1030,13 @@
          WRITE(numout,*) 'domzgr e3t(mbathy)'      ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
          WRITE(numout,*)
-         WRITE(numout,*) 'domzgr e3w(mbathy)'      ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
+         WRITE(numout,*) 'domzgr e3w(mbathy)'      ;   CALL prihre(zprt(:,:,2),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
          WRITE(numout,*)
-         WRITE(numout,*) 'domzgr e3u(mbathy)'      ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
+         WRITE(numout,*) 'domzgr e3u(mbathy)'      ;   CALL prihre(zprt(:,:,3),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
          WRITE(numout,*)
-         WRITE(numout,*) 'domzgr e3v(mbathy)'      ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
+         WRITE(numout,*) 'domzgr e3v(mbathy)'      ;   CALL prihre(zprt(:,:,4),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
          WRITE(numout,*)
-         WRITE(numout,*) 'domzgr e3f(mbathy)'      ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
+         WRITE(numout,*) 'domzgr e3f(mbathy)'      ;   CALL prihre(zprt(:,:,5),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
          WRITE(numout,*)
-         WRITE(numout,*) 'domzgr gdep3w(mbathy)'   ;   CALL prihre(zprt(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
+         WRITE(numout,*) 'domzgr gdep3w(mbathy)'   ;   CALL prihre(zprt(:,:,6),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
       ENDIF  
       !
@@ -1513,5 +1501,4 @@
 
       !
-!!    H. Liu, POL. April 2009. Added for passing the scale check for the new released vvl code.
       where (e3t   (:,:,:).eq.0.0)  e3t(:,:,:) = 1.0
       where (e3u   (:,:,:).eq.0.0)  e3u(:,:,:) = 1.0
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90	(revision 7)
@@ -65,4 +65,7 @@
       !
       IF( nn_timing == 1 )  CALL timing_start('dta_tsd_init')
+      !
+      !  Initialisation
+      ierr0 = 0  ;  ierr1 = 0  ;  ierr2 = 0  ;  ierr3 = 0
       !
       !                             ! set default namelist values 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90	(revision 7)
@@ -56,5 +56,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: istate.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: istate.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90	(revision 7)
@@ -87,5 +87,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: phycst.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: phycst.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90	(revision 7)
@@ -44,5 +44,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: divcur.F90 3209 2011-12-10 08:04:49Z smasson $ 
+   !! $Id: divcur.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynadv.F90 3161 2011-11-20 15:02:18Z cetlod $
+   !! $Id: dynadv.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: dynadv_cen2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynadv_cen2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -49,6 +49,4 @@
       !! ** Action  :   (ua,va) updated with the now vorticity term trend
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   tsa             ! tsa used as 2 3D workspace
-      !
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step index
       !
@@ -61,7 +59,5 @@
       IF( nn_timing == 1 )  CALL timing_start('dyn_adv_cen2')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw )
-      zfu => tsa(:,:,:,1) 
-      zfv => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw )
       !
       IF( kt == nit000 .AND. lwp ) THEN
@@ -163,5 +159,5 @@
          &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw )
+      CALL wrk_dealloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_adv_cen2')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90	(revision 7)
@@ -28,5 +28,5 @@
    PRIVATE
 
-   REAL(wp), PARAMETER :: gamma1 = 1._wp/4._wp  ! =1/4 quick      ; =1/3  3rd order UBS
+   REAL(wp), PARAMETER :: gamma1 = 1._wp/3._wp  ! =1/4 quick      ; =1/3  3rd order UBS
    REAL(wp), PARAMETER :: gamma2 = 1._wp/8._wp  ! =0   2nd order  ; =1/8  4th order centred
 
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: dynadv_ubs.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynadv_ubs.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -64,5 +64,5 @@
       !!      before velocity (forward in time). 
       !!      Default value (hard coded in the begining of the module) are 
-      !!      gamma1=1/4 and gamma2=1/8.
+      !!      gamma1=1/3 and gamma2=1/8.
       !!
       !! ** Action : - (ua,va) updated with the 3D advective momentum trends
@@ -70,6 +70,4 @@
       !! Reference : Shchepetkin & McWilliams, 2005, Ocean Modelling. 
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   tsa             ! tsa used as 2 3D workspace
-      !
       INTEGER, INTENT(in) ::   kt     ! ocean time-step index
       !
@@ -84,8 +82,6 @@
       IF( nn_timing == 1 )  CALL timing_start('dyn_adv_ubs')
       !
-      CALL wrk_alloc( jpi, jpj, jpk,       zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfw )
-      CALL wrk_alloc( jpi, jpj, jpk, jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu                     )
-      zfu => tsa(:,:,:,1) 
-      zfv => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi, jpj, jpk,       zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw )
+      CALL wrk_alloc( jpi, jpj, jpk, jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu                               )
       !
       IF( kt == nit000 ) THEN
@@ -255,6 +251,6 @@
          &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi, jpj, jpk,       zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfw )
-      CALL wrk_dealloc( jpi, jpj, jpk, jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu                     )
+      CALL wrk_dealloc( jpi, jpj, jpk,       zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw )
+      CALL wrk_dealloc( jpi, jpj, jpk, jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu                               )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_adv_ubs')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90	(revision 7)
@@ -5,4 +5,6 @@
    !!==============================================================================
    !! History :  3.2  ! 2008-11  (A. C. Coward)  Original code
+   !!            3.4  ! 2011-09  (H. Liu) Make it consistent with semi-implicit
+   !!                            Bottom friction (ln_bfrimp = .true.) 
    !!----------------------------------------------------------------------
 
@@ -19,4 +21,5 @@
    USE prtctl          ! Print control
    USE timing          ! Timing
+   USE wrk_nemo        ! Memory Allocation
 
    IMPLICIT NONE
@@ -31,5 +34,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynbfr.F90 3161 2011-11-20 15:02:18Z cetlod $
+   !! $Id: dynbfr.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -44,6 +47,4 @@
       !! ** Action  :   (ua,va)   momentum trend increased by bottom friction trend
       !!---------------------------------------------------------------------
-      USE oce, ONLY:   ztrduv => tsa   ! tsa used as 4D workspace
-      !!
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
       !! 
@@ -51,4 +52,5 @@
       INTEGER  ::   ikbu, ikbv   ! local integers
       REAL(wp) ::   zm1_2dt      ! local scalar
+      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
       !!---------------------------------------------------------------------
       !
@@ -57,11 +59,11 @@
       IF( .NOT.ln_bfrimp) THEN     ! only for explicit bottom friction form
                                     ! implicit bfr is implemented in dynzdf_imp
-                                    ! H. Liu,  Sept. 2011
 
         zm1_2dt = - 1._wp / ( 2._wp * rdt )
 
         IF( l_trddyn )   THEN                      ! temporary save of ua and va trends
-           ztrduv(:,:,:,1) = ua(:,:,:)
-           ztrduv(:,:,:,2) = va(:,:,:)
+           CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv )
+           ztrdu(:,:,:) = ua(:,:,:)
+           ztrdv(:,:,:) = va(:,:,:)
         ENDIF
 
@@ -85,7 +87,8 @@
         !
         IF( l_trddyn )   THEN                      ! save the vertical diffusive trends for further diagnostics
-           ztrduv(:,:,:,1) = ua(:,:,:) - ztrduv(:,:,:,1)
-           ztrduv(:,:,:,2) = va(:,:,:) - ztrduv(:,:,:,2)
-           CALL trd_mod( ztrduv(:,:,:,1), ztrduv(:,:,:,2), jpdyn_trd_bfr, 'DYN', kt )
+           ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:)
+           ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
+           CALL trd_mod( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_trd_bfr, 'DYN', kt )
+           CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )
         ENDIF
         !                                          ! print mean trends (used for debugging)
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90	(revision 7)
@@ -14,6 +14,6 @@
    !!             -   !  2005-11  (G. Madec) style & small optimisation
    !!            3.3  !  2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase
-   !!            3.4  !  2011-11  (A. Coward, H. Liu) introduction of prj scheme; 
-   !!                 !           suppression of hel, wdj and rot options
+   !!            3.4  !  2011-11  (H. Liu) hpg_prj: Original code for s-coordinates
+   !!                 !           (A. Coward) suppression of hel, wdj and rot options
    !!----------------------------------------------------------------------
 
@@ -61,5 +61,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynhpg.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynhpg.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -76,6 +76,4 @@
       !!             - Save the trend (l_trddyn=T)
       !!----------------------------------------------------------------------
-      USE oce, ONLY:   tsa                         ! (tsa) used as 2 3D workspace
-      !!
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
@@ -85,7 +83,5 @@
       !
       IF( l_trddyn ) THEN                    ! Temporary saving of ua and va trends (l_trddyn)
-         ztrdu => tsa(:,:,:,1) 
-         ztrdv => tsa(:,:,:,2) 
-         !
+         CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv )
          ztrdu(:,:,:) = ua(:,:,:)  
          ztrdv(:,:,:) = va(:,:,:) 
@@ -104,4 +100,5 @@
          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
          CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_hpg, 'DYN', kt )
+         CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )
       ENDIF          
       !
@@ -191,6 +188,4 @@
       !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend
       !!----------------------------------------------------------------------
-      USE oce, ONLY:   tsa                         ! (tsa) used as 2 3D workspace
-      !!
       INTEGER, INTENT(in) ::   kt    ! ocean time-step index
       !!
@@ -199,7 +194,6 @@
       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj 
       !!----------------------------------------------------------------------
-      
-      zhpi => tsa(:,:,:,1) 
-      zhpj => tsa(:,:,:,2) 
+      !  
+      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj )
       !
       IF( kt == nit000 ) THEN
@@ -245,4 +239,6 @@
       END DO
       !
+      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj )
+      !
    END SUBROUTINE hpg_zco
 
@@ -256,6 +252,4 @@
       !! ** Action  : - Update (ua,va) with the now hydrastatic pressure trend
       !!---------------------------------------------------------------------- 
-      USE oce, ONLY:   tsa                         ! (tsa) used as 2 3D workspace
-      !!
       INTEGER, INTENT(in) ::   kt    ! ocean time-step index
       !!
@@ -265,7 +259,6 @@
       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj 
       !!----------------------------------------------------------------------
-       
-      zhpi => tsa(:,:,:,1) 
-      zhpj => tsa(:,:,:,2) 
+      !
+      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj )
       !
       IF( kt == nit000 ) THEN
@@ -343,5 +336,6 @@
       END DO
       !
-
+      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj )
+      !
    END SUBROUTINE hpg_zps
 
@@ -365,6 +359,4 @@
       !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend
       !!----------------------------------------------------------------------
-      USE oce, ONLY:   tsa                         ! (tsa) used as 2 3D workspace
-      !!
       INTEGER, INTENT(in) ::   kt    ! ocean time-step index
       !!
@@ -373,7 +365,6 @@
       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zhpi, zhpj 
       !!----------------------------------------------------------------------
-
-      zhpi => tsa(:,:,:,1) 
-      zhpj => tsa(:,:,:,2) 
+      !
+      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj )
       !
       IF( kt == nit000 ) THEN
@@ -432,4 +423,6 @@
       END DO
       !
+      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj )
+      !
    END SUBROUTINE hpg_sco
 
@@ -442,6 +435,4 @@
       !! Reference: Shchepetkin and McWilliams, J. Geophys. Res., 108(C3), 3090, 2003
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   tsa                         ! (tsa) used as 2 3D workspace
-      !!
       INTEGER, INTENT(in) ::   kt    ! ocean time-step index
       !!
@@ -458,7 +449,5 @@
       CALL wrk_alloc( jpi, jpj, jpk, dzx  , dzy  , dzz  , dzu  , dzv  , dzw   ) 
       CALL wrk_alloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 
-      CALL wrk_alloc( jpi, jpj, jpk, rho_i, rho_j, rho_k                      ) 
-      zhpi => tsa(:,:,:,1) 
-      zhpj => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi, jpj, jpk, rho_i, rho_j, rho_k,  zhpi,  zhpj        ) 
       !
 
@@ -660,5 +649,5 @@
       CALL wrk_dealloc( jpi, jpj, jpk, dzx  , dzy  , dzz  , dzu  , dzv  , dzw   ) 
       CALL wrk_dealloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 
-      CALL wrk_dealloc( jpi, jpj, jpk, rho_i, rho_j, rho_k                      ) 
+      CALL wrk_dealloc( jpi, jpj, jpk, rho_i, rho_j, rho_k,  zhpi,  zhpj        ) 
       !
    END SUBROUTINE hpg_djc
@@ -678,7 +667,4 @@
       !!
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   tsa                          ! (tsa) used as 2 3D workspace
-      !!----------------------------------------------------------------------
-      !!
       INTEGER, PARAMETER  :: polynomial_type = 1    ! 1: cubic spline, 2: linear
       INTEGER, INTENT(in) ::   kt                   ! ocean time-step index
@@ -697,7 +683,6 @@
       !!----------------------------------------------------------------------
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
-      zdeptht => tsa(:,:,:,1) 
-      zrhh    => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
+      CALL wrk_alloc( jpi,jpj,jpk, zdeptht, zrhh ) 
       !
       IF( kt == nit000 ) THEN
@@ -717,5 +702,5 @@
       zrhh(:,:,:) = rhd(:,:,:)
       
-      ! Preparing vertical density profile for hybrid-sco coordinate
+      ! Preparing vertical density profile "zrhh(:,:,:)" for hybrid-sco coordinate
       DO jj = 1, jpj
         DO ji = 1, jpi   
@@ -732,4 +717,5 @@
       END DO
 
+      ! Transfer the depth of "T(:,:,:)" to vertical coordinate "zdeptht(:,:,:)"
       DO jj = 1, jpj
         DO ji = 1, jpi
@@ -753,7 +739,8 @@
       ! Construct the vertical density profile with the 
       ! constrained cubic spline interpolation
+      ! rho(z) = asp + bsp*z + csp*z^2 + dsp*z^3
       CALL cspline(fsp,xsp,asp,bsp,csp,dsp,polynomial_type)      
 
-      ! Calculate the hydrostatic pressure at T(ji,jj,1)
+      ! Integrate the hydrostatic pressure "zhpi(:,:,:)" at "T(ji,jj,1)"
       DO jj = 2, jpj
         DO ji = 2, jpi 
@@ -768,5 +755,5 @@
       END DO
 
-      ! Calculate the pressure at T(ji,jj,2:jpkm1)
+      ! Calculate the pressure "zhpi(:,:,:)" at "T(ji,jj,2:jpkm1)"
       DO jk = 2, jpkm1                                  
         DO jj = 2, jpj     
@@ -953,5 +940,6 @@
       END DO
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
+      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
+      CALL wrk_dealloc( jpi,jpj,jpk, zdeptht, zrhh ) 
       !
    END SUBROUTINE hpg_prj
@@ -964,6 +952,5 @@
       !!          
       !! ** Method  :   f(x) = asp + bsp*x + csp*x^2 + dsp*x^3 
-      !! Reference: K.W. Brodlie, A review of mehtods for curve and function
-      !!                          drawing, 1980
+      !! Reference: CJC Kruger, Constrained Cubic Spline Interpoltation
       !!
       !!----------------------------------------------------------------------
@@ -987,72 +974,82 @@
       jpkm1 = size(fsp,3) - 1
 
-      ! Clean output arrays
-      asp = 0.0_wp
-      bsp = 0.0_wp
-      csp = 0.0_wp
-      dsp = 0.0_wp
       
-      DO ji = 1, jpi
-        DO jj = 1, jpj
-          IF (polynomial_type == 1) THEN     ! Constrained Cubic Spline
-             DO jk = 2, jpkm1-1
-                zdxtmp1 = xsp(ji,jj,jk)   - xsp(ji,jj,jk-1)  
-                zdxtmp2 = xsp(ji,jj,jk+1) - xsp(ji,jj,jk)  
-                zdf1    = ( fsp(ji,jj,jk)   - fsp(ji,jj,jk-1) ) / zdxtmp1
-                zdf2    = ( fsp(ji,jj,jk+1) - fsp(ji,jj,jk)   ) / zdxtmp2
+      IF (polynomial_type == 1) THEN     ! Constrained Cubic Spline
+         DO ji = 1, jpi
+            DO jj = 1, jpj
+           !!Fritsch&Butland's method, 1984 (preferred, but more computation)              
+           !    DO jk = 2, jpkm1-1
+           !       zdxtmp1 = xsp(ji,jj,jk)   - xsp(ji,jj,jk-1)  
+           !       zdxtmp2 = xsp(ji,jj,jk+1) - xsp(ji,jj,jk)  
+           !       zdf1    = ( fsp(ji,jj,jk)   - fsp(ji,jj,jk-1) ) / zdxtmp1
+           !       zdf2    = ( fsp(ji,jj,jk+1) - fsp(ji,jj,jk)   ) / zdxtmp2
+           !
+           !       zalpha = ( zdxtmp1 + 2._wp * zdxtmp2 ) / ( zdxtmp1 + zdxtmp2 ) / 3._wp
+           !     
+           !       IF(zdf1 * zdf2 <= 0._wp) THEN
+           !           zdf(jk) = 0._wp
+           !       ELSE
+           !         zdf(jk) = zdf1 * zdf2 / ( ( 1._wp - zalpha ) * zdf1 + zalpha * zdf2 )
+           !       ENDIF
+           !    END DO
+           
+           !!Simply geometric average
+               DO jk = 2, jpkm1-1
+                  zdf1 = (fsp(ji,jj,jk) - fsp(ji,jj,jk-1)) / (xsp(ji,jj,jk) - xsp(ji,jj,jk-1))
+                  zdf2 = (fsp(ji,jj,jk+1) - fsp(ji,jj,jk)) / (xsp(ji,jj,jk+1) - xsp(ji,jj,jk))
+            
+                  IF(zdf1 * zdf2 <= 0._wp) THEN
+                     zdf(jk) = 0._wp
+                  ELSE
+                     zdf(jk) = 2._wp * zdf1 * zdf2 / (zdf1 + zdf2)
+                  ENDIF
+               END DO
+           
+               zdf(1)     = 1.5_wp * ( fsp(ji,jj,2) - fsp(ji,jj,1) ) / &
+                          &          ( xsp(ji,jj,2) - xsp(ji,jj,1) ) -  0.5_wp * zdf(2)
+               zdf(jpkm1) = 1.5_wp * ( fsp(ji,jj,jpkm1) - fsp(ji,jj,jpkm1-1) ) / &
+                          &          ( xsp(ji,jj,jpkm1) - xsp(ji,jj,jpkm1-1) ) - &
+                          & 0.5_wp * zdf(jpkm1 - 1)
    
-                zalpha = ( zdxtmp1 + 2._wp * zdxtmp2 ) / ( zdxtmp1 + zdxtmp2 ) / 3._wp
-              
-                IF(zdf1 * zdf2 <= 0._wp) THEN
-                    zdf(jk) = 0._wp
-                ELSE
-                  zdf(jk) = zdf1 * zdf2 / ( ( 1._wp - zalpha ) * zdf1 + zalpha * zdf2 )
-                ENDIF
-             END DO
-
-             zdf(1)     = 1.5_wp * ( fsp(ji,jj,2) - fsp(ji,jj,1) ) / &
-                        &          ( xsp(ji,jj,2) - xsp(ji,jj,1) ) -  0.5_wp * zdf(2)
-             zdf(jpkm1) = 1.5_wp * ( fsp(ji,jj,jpkm1) - fsp(ji,jj,jpkm1-1) ) / &
-                        &          ( xsp(ji,jj,jpkm1) - xsp(ji,jj,jpkm1-1) ) - &
-                        & 0.5_wp * zdf(jpkm1 - 1)
+               DO jk = 1, jpkm1 - 1
+                 zdxtmp = xsp(ji,jj,jk+1) - xsp(ji,jj,jk) 
+                 ztmp1  = (zdf(jk+1) + 2._wp * zdf(jk)) / zdxtmp
+                 ztmp2  =  6._wp * (fsp(ji,jj,jk+1) - fsp(ji,jj,jk)) / zdxtmp / zdxtmp
+                 zddf1  = -2._wp * ztmp1 + ztmp2 
+                 ztmp1  = (2._wp * zdf(jk+1) + zdf(jk)) / zdxtmp
+                 zddf2  =  2._wp * ztmp1 - ztmp2 
+      
+                 dsp(ji,jj,jk) = (zddf2 - zddf1) / 6._wp / zdxtmp
+                 csp(ji,jj,jk) = ( xsp(ji,jj,jk+1) * zddf1 - xsp(ji,jj,jk)*zddf2 ) / 2._wp / zdxtmp
+                 bsp(ji,jj,jk) = ( fsp(ji,jj,jk+1) - fsp(ji,jj,jk) ) / zdxtmp - & 
+                               & csp(ji,jj,jk) * ( xsp(ji,jj,jk+1) + xsp(ji,jj,jk) ) - &
+                               & dsp(ji,jj,jk) * ((xsp(ji,jj,jk+1) + xsp(ji,jj,jk))**2 - &
+                               &                   xsp(ji,jj,jk+1) * xsp(ji,jj,jk))
+                 asp(ji,jj,jk) = fsp(ji,jj,jk) - xsp(ji,jj,jk) * (bsp(ji,jj,jk) + &
+                               &                (xsp(ji,jj,jk) * (csp(ji,jj,jk) + &
+                               &                 dsp(ji,jj,jk) * xsp(ji,jj,jk))))
+               END DO
+            END DO
+         END DO
+ 
+      ELSE IF (polynomial_type == 2) THEN     ! Linear
+         DO ji = 1, jpi
+            DO jj = 1, jpj
+               DO jk = 1, jpkm1-1
+                  zdxtmp =xsp(ji,jj,jk+1) - xsp(ji,jj,jk) 
+                  ztmp1 = fsp(ji,jj,jk+1) - fsp(ji,jj,jk)
    
-             DO jk = 1, jpkm1 - 1
-                zdxtmp = xsp(ji,jj,jk+1) - xsp(ji,jj,jk) 
-                ztmp1  = (zdf(jk+1) + 2._wp * zdf(jk)) / zdxtmp
-                ztmp2  =  6._wp * (fsp(ji,jj,jk+1) - fsp(ji,jj,jk)) / zdxtmp / zdxtmp
-                zddf1  = -2._wp * ztmp1 + ztmp2 
-                ztmp1  = (2._wp * zdf(jk+1) + zdf(jk)) / zdxtmp
-                zddf2  =  2._wp * ztmp1 - ztmp2 
-   
-                dsp(ji,jj,jk) = (zddf2 - zddf1) / 6._wp / zdxtmp
-                csp(ji,jj,jk) = ( xsp(ji,jj,jk+1) * zddf1 - xsp(ji,jj,jk)*zddf2 ) / 2._wp / zdxtmp
-                bsp(ji,jj,jk) = ( fsp(ji,jj,jk+1) - fsp(ji,jj,jk) ) / zdxtmp - & 
-                              & csp(ji,jj,jk) * ( xsp(ji,jj,jk+1) + xsp(ji,jj,jk) ) - &
-                              & dsp(ji,jj,jk) * ( xsp(ji,jj,jk+1)**2 + &
-                              &                   xsp(ji,jj,jk+1) * xsp(ji,jj,jk) + &
-                              &                   xsp(ji,jj,jk)**2 )
-                asp(ji,jj,jk) = fsp(ji,jj,jk) - bsp(ji,jj,jk) * xsp(ji,jj,jk) - &
-                              &                 csp(ji,jj,jk) * xsp(ji,jj,jk)**2 - &
-                              &                 dsp(ji,jj,jk) * xsp(ji,jj,jk)**3
-             END DO
- 
-          ELSE IF (polynomial_type == 2) THEN     ! Linear
- 
-             DO jk = 1, jpkm1-1
-                zdxtmp =xsp(ji,jj,jk+1) - xsp(ji,jj,jk) 
-                ztmp1 = fsp(ji,jj,jk+1) - fsp(ji,jj,jk)
-   
-                dsp(ji,jj,jk) = 0._wp
-                csp(ji,jj,jk) = 0._wp
-                bsp(ji,jj,jk) = ztmp1 / zdxtmp
-                asp(ji,jj,jk) = fsp(ji,jj,jk) - bsp(ji,jj,jk) * xsp(ji,jj,jk)
-             END DO
-
-          ELSE
-             CALL ctl_stop( 'invalid polynomial type in cspline' )
-          ENDIF
-
-        END DO
-      END DO
+                  dsp(ji,jj,jk) = 0._wp
+                  csp(ji,jj,jk) = 0._wp
+                  bsp(ji,jj,jk) = ztmp1 / zdxtmp
+                  asp(ji,jj,jk) = fsp(ji,jj,jk) - bsp(ji,jj,jk) * xsp(ji,jj,jk)
+               END DO
+            END DO
+         END DO
+
+      ELSE
+           CALL ctl_stop( 'invalid polynomial type in cspline' )
+      ENDIF
+
       
    END SUBROUTINE cspline
@@ -1069,5 +1066,4 @@
       !!                extrapolation is also permitted (no value limit) 
       !!
-      !! H.Liu, Jan 2009,  POL 
       !!----------------------------------------------------------------------
       IMPLICIT NONE
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90	(revision 7)
@@ -31,5 +31,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynkeg.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: dynkeg.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -54,6 +54,4 @@
       !!             - save this trends (l_trddyn=T) for post-processing
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   tsa             ! tsa used as 2 3D workspace
-      !!
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step index
       !!
@@ -75,7 +73,5 @@
 
       IF( l_trddyn ) THEN           ! Save ua and va trends
-         ztrdu => tsa(:,:,:,1) 
-         ztrdv => tsa(:,:,:,2) 
-         !
+         CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv )
          ztrdu(:,:,:) = ua(:,:,:) 
          ztrdv(:,:,:) = va(:,:,:) 
@@ -136,4 +132,5 @@
          ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
          CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_keg, 'DYN', kt )
+         CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )
       ENDIF
       !
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90	(revision 7)
@@ -43,5 +43,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynldf.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynldf.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -150,5 +150,5 @@
       IF( ln_dynldf_hor   )   ioptio = ioptio + 1
       IF( ln_dynldf_iso   )   ioptio = ioptio + 1
-      IF( ioptio /= 1 ) CALL ctl_stop( '          use only ONE direction (level/hor/iso)' )
+      IF( ioptio >  1 ) CALL ctl_stop( '          use only ONE direction (level/hor/iso)' )
 
       !                                   ! Set nldf, the type of lateral diffusion, from ln_dynldf_... logicals
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90	(revision 7)
@@ -37,5 +37,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynldf_bilap.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: dynldf_bilap.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90	(revision 7)
@@ -44,5 +44,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynldf_bilapg.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: dynldf_bilapg.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -87,18 +87,13 @@
       !!              - save the trend in (zwk3,zwk4) ('key_trddyn')
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   tsa             ! tsa used as 2 3D workspace
-      !
       INTEGER, INTENT( in ) ::   kt           ! ocean time-step index
       !
       INTEGER ::   ji, jj, jk                 ! dummy loop indices
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwk1, zwk2
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwk3, zwk4
+      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwk1, zwk2, zwk3, zwk4
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_ldf_bilapg')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zwk1, zwk2 ) 
-      zwk3 => tsa(:,:,:,1) 
-      zwk4 => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi, jpj, jpk, zwk1, zwk2, zwk3, zwk4 ) 
       !
       IF( kt == nit000 ) THEN
@@ -135,5 +130,5 @@
       END DO
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zwk1, zwk2 ) 
+      CALL wrk_dealloc( jpi, jpj, jpk, zwk1, zwk2, zwk3, zwk4 ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_ldf_bilapg')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90	(revision 7)
@@ -47,5 +47,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2011)
-   !! $Id: dynldf_iso.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynldf_iso.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90	(revision 7)
@@ -36,5 +36,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynldf_lap.F90 3161 2011-11-20 15:02:18Z cetlod $ 
+   !! $Id: dynldf_lap.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90	(revision 7)
@@ -40,4 +40,5 @@
    USE lbclnk          ! lateral boundary condition (or mpp link)
    USE lib_mpp         ! MPP library
+   USE wrk_nemo        ! Memory Allocation
    USE prtctl          ! Print control
 #if defined key_agrif
@@ -55,5 +56,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynnxt.F90 3161 2011-11-20 15:02:18Z cetlod $ 
+   !! $Id: dynnxt.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -93,6 +94,4 @@
       !!               un,vn   now horizontal velocity of next time-step
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   tsa             ! tsa used as 2 3D workspace
-      !
       INTEGER, INTENT( in ) ::   kt      ! ocean time-step index
       !
@@ -109,6 +108,5 @@
       IF( nn_timing == 1 )  CALL timing_start('dyn_nxt')
       !
-      ze3u_f => tsa(:,:,:,1) 
-      ze3v_f => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi,jpj,jpk, ze3u_f, ze3v_f )
       !
       IF( kt == nit000 ) THEN
@@ -281,4 +279,6 @@
          &                       tab3d_2=vn, clinfo2=' Vn: '       , mask2=vmask )
       ! 
+      CALL wrk_dealloc( jpi,jpj,jpk, ze3u_f, ze3v_f )
+      !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_nxt')
       !
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90	(revision 7)
@@ -45,5 +45,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.2 , LODYC-IPSL  (2009)
-   !! $Id: dynspg.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: dynspg.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynspg_exp.F90 3161 2011-11-20 15:02:18Z cetlod $
+   !! $Id: dynspg_exp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90	(revision 7)
@@ -41,4 +41,5 @@
    USE in_out_manager  ! I/O manager
    USE lib_mpp         ! distributed memory computing library
+   USE wrk_nemo        ! Memory Allocation
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE prtctl          ! Print control
@@ -62,5 +63,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynspg_flt.F90 3161 2011-11-20 15:02:18Z cetlod $
+   !! $Id: dynspg_flt.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -104,6 +105,4 @@
       !! References : Roullet and Madec 1999, JGR.
       !!---------------------------------------------------------------------
-      USE oce, ONLY:   tsa                 ! tsa used as 2 3D workspace
-      !!
       INTEGER, INTENT(in   ) ::   kt       ! ocean time-step index
       INTEGER, INTENT(  out) ::   kindic   ! solver convergence flag (<0 if not converge)
@@ -116,6 +115,5 @@
       IF( nn_timing == 1 )  CALL timing_start('dyn_spg_flt')
       !
-      zub => tsa(:,:,:,1) 
-      zvb => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi,jpj,jpk, zub, zvb )
       !
       IF( kt == nit000 ) THEN
@@ -353,4 +351,6 @@
       IF( lrst_oce ) CALL flt_rst( kt, 'WRITE' )
       !
+      CALL wrk_dealloc( jpi,jpj,jpk, zub, zvb )
+      !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_spg_flt')
       !
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_oce.F90	(revision 7)
@@ -42,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: dynspg_oce.F90 3116 2011-11-15 20:55:40Z cetlod $
+   !! $Id: dynspg_oce.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90	(revision 7)
@@ -66,5 +66,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: dynspg_ts.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynspg_ts.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90	(revision 7)
@@ -61,5 +61,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynvor.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynvor.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -75,6 +75,4 @@
       !!               and planetary vorticity trends) ('key_trddyn')
       !!----------------------------------------------------------------------
-      USE oce, ONLY:   tsa            ! tsa used as 2 3D workspace
-      !!
       INTEGER, INTENT( in ) ::   kt   ! ocean time-step index
       !
@@ -84,8 +82,5 @@
       IF( nn_timing == 1 )  CALL timing_start('dyn_vor')
       !
-      IF( l_trddyn )   THEN
-         ztrdu => tsa(:,:,:,1) 
-         ztrdv => tsa(:,:,:,2) 
-      END IF
+      IF( l_trddyn )   CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv )
       !
       !                                          ! vorticity term 
@@ -187,4 +182,6 @@
       IF(ln_ctl) CALL prt_ctl( tab3d_1=ua, clinfo1=' vor  - Ua: ', mask1=umask,               &
          &                     tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' )
+      !
+      IF( l_trddyn )   CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_vor')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90	(revision 7)
@@ -34,5 +34,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynzad.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynzad.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -55,6 +55,4 @@
       !!              - Save the trends in (ztrdu,ztrdv) ('key_trddyn')
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   tsa             ! tsa used as 2 3D workspace
-      !!
       INTEGER, INTENT(in) ::   kt   ! ocean time-step inedx
       !
@@ -68,8 +66,6 @@
       IF( nn_timing == 1 )  CALL timing_start('dyn_zad')
       !
-      CALL wrk_alloc( jpi, jpj, zww ) 
-      !
-      zwuw  => tsa(:,:,:,1) 
-      zwvw  => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi,jpj, zww ) 
+      CALL wrk_alloc( jpi,jpj,jpk, zwuw , zwvw ) 
       !
       IF( kt == nit000 ) THEN
@@ -129,5 +125,6 @@
          &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' )
       !
-      CALL wrk_dealloc( jpi, jpj, zww ) 
+      CALL wrk_dealloc( jpi,jpj, zww ) 
+      CALL wrk_dealloc( jpi,jpj,jpk, zwuw , zwvw ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_zad')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90	(revision 7)
@@ -43,5 +43,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynzdf.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynzdf.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90	(revision 7)
@@ -36,5 +36,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynzdf_exp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynzdf_exp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -57,6 +57,4 @@
       !! ** Action : - Update (ua,va) with the vertical diffusive trend
       !!---------------------------------------------------------------------
-      USE oce     , ONLY:   tsa             ! tsa used as 2 3D workspace
-      !
       INTEGER , INTENT(in) ::   kt     ! ocean time-step index
       REAL(wp), INTENT(in) ::   p2dt   ! time-step 
@@ -64,14 +62,10 @@
       INTEGER  ::   ji, jj, jk, jl   ! dummy loop indices
       REAL(wp) ::   zrau0r, zlavmr, zua, zva   ! local scalars
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwx, zwy
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwz, zww
+      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwx, zwy, zwz, zww
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_zdf_exp')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zwz, zww ) 
-      !
-      zwx => tsa(:,:,:,1) 
-      zwy => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi,jpj,jpk, zwx, zwy, zwz, zww ) 
       !
       IF( kt == nit000 .AND. lwp ) THEN
@@ -126,5 +120,5 @@
       END DO                           ! End of time splitting
       !
-      CALL wrk_dealloc( jpi, jpj, jpk, zwz, zww ) 
+      CALL wrk_dealloc( jpi,jpj,jpk, zwx, zwy, zwz, zww ) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_zdf_exp')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90	(revision 7)
@@ -8,4 +8,5 @@
    !!   NEMO     0.5  !  2002-08  (G. Madec)  F90: Free form and module
    !!            3.3  !  2010-04  (M. Leclair, G. Madec)  Forcing averaged over 2 time steps
+   !!            3.4  !  2012-01  (H. Liu) Semi-implicit bottom friction
    !!----------------------------------------------------------------------
 
@@ -20,5 +21,5 @@
    USE in_out_manager  ! I/O manager
    USE lib_mpp         ! MPP library
-   USE zdfbfr          ! bottom friction setup
+   USE zdfbfr          ! Bottom friction setup
    USE wrk_nemo        ! Memory Allocation
    USE timing          ! Timing
@@ -34,5 +35,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: dynzdf_imp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: dynzdf_imp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -57,26 +58,20 @@
       !! ** Action : - Update (ua,va) arrays with the after vertical diffusive mixing trend.
       !!---------------------------------------------------------------------
-      USE oce     , ONLY:   tsa       ! tsa used as 2 3D workspace
-      !!
       INTEGER , INTENT(in) ::  kt     ! ocean time-step index
       REAL(wp), INTENT(in) ::  p2dt   ! vertical profile of tracer time-step
       !!
-      INTEGER  ::   ji, jj, jk     ! dummy loop indices
-      INTEGER  ::   ikbum1, ikbvm1 ! local variable
-      REAL(wp) ::   z1_p2dt, z2dtf, zcoef, zzwi, zzws, zrhs ! local scalars
-
-      !! * Local variables for implicit bottom friction.    H. Liu
-      REAL(wp) ::   zbfru, zbfrv 
-      REAL(wp) ::   zbfr_imp = 0._wp                        ! toggle (SAVE'd by assignment) 
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwi
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwd, zws
+      INTEGER  ::   ji, jj, jk   ! dummy loop indices
+      INTEGER  ::   ikbu, ikbv   ! local integers
+      REAL(wp) ::   z1_p2dt, zcoef, zzwi, zzws, zrhs   ! local scalars
       !!----------------------------------------------------------------------
+
+      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwi, zwd, zws
+      REAL(wp), POINTER, DIMENSION(:,:)   ::  zavmu, zavmv
+      !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('dyn_zdf_imp')
       !
-      CALL wrk_alloc( jpi, jpj, jpk, zwi ) 
-      !
-      zwd => tsa(:,:,:,1) 
-      zws => tsa(:,:,:,2) 
+      CALL wrk_alloc( jpi,jpj,jpk, zwi, zwd, zws ) 
+      CALL wrk_alloc( jpi,jpj, zavmu, zavmv ) 
       !
       IF( kt == nit000 ) THEN
@@ -84,5 +79,4 @@
          IF(lwp) WRITE(numout,*) 'dyn_zdf_imp : vertical momentum diffusion implicit operator'
          IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ '
-         IF(ln_bfrimp) zbfr_imp = 1._wp
       ENDIF
 
@@ -91,42 +85,53 @@
       z1_p2dt = 1._wp / p2dt      ! inverse of the timestep
 
-      ! 1. Vertical diffusion on u
-
-      ! Vertical diffusion on u&v
+      ! 1. Apply semi-implicit bottom friction
+      ! --------------------------------------
+      ! Only needed for semi-implicit bottom friction setup. The explicit
+      ! bottom friction has been included in "u(v)a" which act as the R.H.S
+      ! column vector of the tri-diagonal matrix equation
+      !
+
+      IF( ln_bfrimp ) THEN
+# if defined key_vectopt_loop
+      DO jj = 1, 1
+         DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling)
+# else
+      DO jj = 2, jpjm1
+         DO ji = 2, jpim1
+# endif
+            ikbu = mbku(ji,jj)         ! ocean bottom level at u- and v-points 
+            ikbv = mbkv(ji,jj)         ! (deepest ocean u- and v-points)
+            zavmu(ji,jj) = avmu(ji,jj,ikbu+1)
+            zavmv(ji,jj) = avmv(ji,jj,ikbv+1)
+            avmu(ji,jj,ikbu+1) = -bfrua(ji,jj) * fse3uw(ji,jj,ikbu+1) 
+            avmv(ji,jj,ikbv+1) = -bfrva(ji,jj) * fse3vw(ji,jj,ikbv+1)
+         END DO
+      END DO
+      ENDIF
+
+      ! 2. Vertical diffusion on u
       ! ---------------------------
       ! Matrix and second member construction
-      !! bottom boundary condition: both zwi and zws must be masked as avmu can take
-      !! non zero value at the ocean bottom depending on the bottom friction
-      !! used but the bottom velocities have already been updated with the bottom
-      !! friction velocity in dyn_bfr using values from the previous timestep. There
-      !! is no need to include these in the implicit calculation.
-
-      ! The code has been modified here to implicitly implement bottom
-      ! friction: u(v)mask is not necessary here anymore. 
-      ! H. Liu, April 2010.
-
-      ! 1. Vertical diffusion on u
-      DO jj = 2, jpjm1 
-         DO ji = fs_2, fs_jpim1   ! vector opt.
-            ikbum1 = mbku(ji,jj)
-               zbfru = bfrua(ji,jj)
-
-            DO jk = 1, ikbum1
+      ! bottom boundary condition: both zwi and zws must be masked as avmu can take
+      ! non zero value at the ocean bottom depending on the bottom friction used.
+      !
+      DO jk = 1, jpkm1        ! Matrix
+         DO jj = 2, jpjm1 
+            DO ji = fs_2, fs_jpim1   ! vector opt.
                zcoef = - p2dt / fse3u(ji,jj,jk)
-               zwi(ji,jj,jk) = zcoef * avmu(ji,jj,jk  ) / fse3uw(ji,jj,jk  )
-               zws(ji,jj,jk) = zcoef * avmu(ji,jj,jk+1) / fse3uw(ji,jj,jk+1)
-               zwd(ji,jj,jk) = 1._wp - zwi(ji,jj,jk) - zws(ji,jj,jk)
-            END DO
-
-      ! Surface boundary conditions
+               zzwi          = zcoef * avmu (ji,jj,jk  ) / fse3uw(ji,jj,jk  )
+               zwi(ji,jj,jk) = zzwi  * umask(ji,jj,jk)
+               zzws          = zcoef * avmu (ji,jj,jk+1) / fse3uw(ji,jj,jk+1)
+               zws(ji,jj,jk) = zzws  * umask(ji,jj,jk+1)
+               zwd(ji,jj,jk) = 1._wp - zwi(ji,jj,jk) - zzws
+            END DO
+         END DO
+      END DO
+      DO jj = 2, jpjm1        ! Surface boudary conditions
+         DO ji = fs_2, fs_jpim1   ! vector opt.
             zwi(ji,jj,1) = 0._wp
             zwd(ji,jj,1) = 1._wp - zws(ji,jj,1)
-
-      ! Bottom boundary conditions  ! H. Liu, May, 2010
-!           !commented out to be consistent with v3.2, h.liu
-!           z2dtf = p2dt * zbfru / fse3u(ji,jj,ikbum1) * 2.0_wp * zbfr_imp
-            z2dtf = p2dt * zbfru / fse3u(ji,jj,ikbum1) * 1.0_wp * zbfr_imp
-            zws(ji,jj,ikbum1) = 0._wp
-            zwd(ji,jj,ikbum1) = 1._wp - zwi(ji,jj,ikbum1) - z2dtf 
+         END DO
+      END DO
 
       ! Matrix inversion starting from the first level
@@ -144,23 +149,37 @@
       !   The solution (the after velocity) is in ua
       !-----------------------------------------------------------------------
-
-      ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)
-            DO jk = 2, ikbum1
+      !
+      DO jk = 2, jpkm1        !==  First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)  ==
+         DO jj = 2, jpjm1   
+            DO ji = fs_2, fs_jpim1   ! vector opt.
                zwd(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwd(ji,jj,jk-1)
             END DO
-
-      ! second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1
-            z2dtf = 0.5_wp * p2dt / ( fse3u(ji,jj,1) * rau0 )
-            ua(ji,jj,1) = ub(ji,jj,1) + p2dt * ua(ji,jj,1) + z2dtf * (utau_b(ji,jj) + utau(ji,jj))
-           DO jk = 2, ikbum1   
+         END DO
+      END DO
+      !
+      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1  ==
+         DO ji = fs_2, fs_jpim1   ! vector opt.
+            ua(ji,jj,1) = ub(ji,jj,1) + p2dt * (  ua(ji,jj,1) + 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) )   &
+               &                                                       / ( fse3u(ji,jj,1) * rau0       )  )
+         END DO
+      END DO
+      DO jk = 2, jpkm1
+         DO jj = 2, jpjm1   
+            DO ji = fs_2, fs_jpim1   ! vector opt.
                zrhs = ub(ji,jj,jk) + p2dt * ua(ji,jj,jk)   ! zrhs=right hand side
                ua(ji,jj,jk) = zrhs - zwi(ji,jj,jk) / zwd(ji,jj,jk-1) * ua(ji,jj,jk-1)
             END DO
-
-
-      ! third recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk
-            ua(ji,jj,ikbum1) = ua(ji,jj,ikbum1) / zwd(ji,jj,ikbum1)
-            DO jk = ikbum1-1, 1, -1
-               ua(ji,jj,jk) =( ua(ji,jj,jk) - zws(ji,jj,jk) * ua(ji,jj,jk+1) ) / zwd(ji,jj,jk)
+         END DO
+      END DO
+      !
+      DO jj = 2, jpjm1        !==  thrid recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk  ==
+         DO ji = fs_2, fs_jpim1   ! vector opt.
+            ua(ji,jj,jpkm1) = ua(ji,jj,jpkm1) / zwd(ji,jj,jpkm1)
+         END DO
+      END DO
+      DO jk = jpk-2, 1, -1
+         DO jj = 2, jpjm1   
+            DO ji = fs_2, fs_jpim1   ! vector opt.
+               ua(ji,jj,jk) = ( ua(ji,jj,jk) - zws(ji,jj,jk) * ua(ji,jj,jk+1) ) / zwd(ji,jj,jk)
             END DO
          END DO
@@ -177,29 +196,28 @@
 
 
-      ! 2. Vertical diffusion on v
+      ! 3. Vertical diffusion on v
       ! ---------------------------
-
-      DO ji = fs_2, fs_jpim1   ! vector opt.
-         DO jj = 2, jpjm1   
-            ikbvm1 = mbkv(ji,jj)
-               zbfrv = bfrva(ji,jj)
-
-            DO jk = 1, ikbvm1
+      ! Matrix and second member construction
+      ! bottom boundary condition: both zwi and zws must be masked as avmv can take
+      ! non zero value at the ocean bottom depending on the bottom friction used
+      !
+      DO jk = 1, jpkm1        ! Matrix
+         DO jj = 2, jpjm1   
+            DO ji = fs_2, fs_jpim1   ! vector opt.
                zcoef = -p2dt / fse3v(ji,jj,jk)
-               zwi(ji,jj,jk) = zcoef * avmv(ji,jj,jk  ) / fse3vw(ji,jj,jk  )
-               zws(ji,jj,jk) = zcoef * avmv(ji,jj,jk+1) / fse3vw(ji,jj,jk+1)
-               zwd(ji,jj,jk) = 1._wp - zwi(ji,jj,jk) - zws(ji,jj,jk)
-            END DO
-
-      ! Surface boundary conditions
+               zzwi          = zcoef * avmv (ji,jj,jk  ) / fse3vw(ji,jj,jk  )
+               zwi(ji,jj,jk) =  zzwi * vmask(ji,jj,jk)
+               zzws          = zcoef * avmv (ji,jj,jk+1) / fse3vw(ji,jj,jk+1)
+               zws(ji,jj,jk) =  zzws * vmask(ji,jj,jk+1)
+               zwd(ji,jj,jk) = 1._wp - zwi(ji,jj,jk) - zzws
+            END DO
+         END DO
+      END DO
+      DO jj = 2, jpjm1        ! Surface boudary conditions
+         DO ji = fs_2, fs_jpim1   ! vector opt.
             zwi(ji,jj,1) = 0._wp
             zwd(ji,jj,1) = 1._wp - zws(ji,jj,1)
-
-      ! Bottom boundary conditions  ! H. Liu, May, 2010
-!           !commented out to be consistent with v3.2, h.liu
-!           z2dtf = p2dt * zbfrv / fse3v(ji,jj,ikbvm1) * 2.0_wp * zbfr_imp
-            z2dtf = p2dt * zbfrv / fse3v(ji,jj,ikbvm1) * 1.0_wp * zbfr_imp
-            zws(ji,jj,ikbvm1) = 0._wp
-            zwd(ji,jj,ikbvm1) = 1._wp - zwi(ji,jj,ikbvm1) - z2dtf 
+         END DO
+      END DO
 
       ! Matrix inversion
@@ -213,30 +231,42 @@
       !        (  0    0    0   zwik zwdk )( zwxk ) ( zwyk )
       !
-      !   m is decomposed in the product of an upper and lower triangular
-      !   matrix
+      !   m is decomposed in the product of an upper and lower triangular matrix
       !   The 3 diagonal terms are in 2d arrays: zwd, zws, zwi
       !   The solution (after velocity) is in 2d array va
       !-----------------------------------------------------------------------
-
-      ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)
-            DO jk = 2, ikbvm1
+      !
+      DO jk = 2, jpkm1        !==  First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1   (increasing k)  ==
+         DO jj = 2, jpjm1   
+            DO ji = fs_2, fs_jpim1   ! vector opt.
                zwd(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwd(ji,jj,jk-1)
             END DO
-
-      ! second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1
-            z2dtf = 0.5_wp * p2dt / ( fse3v(ji,jj,1)*rau0 )
-            va(ji,jj,1) = vb(ji,jj,1) + p2dt * va(ji,jj,1) + z2dtf * (vtau_b(ji,jj) + vtau(ji,jj))
-            DO jk = 2, ikbvm1
+         END DO
+      END DO
+      !
+      DO jj = 2, jpjm1        !==  second recurrence:    SOLk = RHSk - Lk / Dk-1  Lk-1  ==
+         DO ji = fs_2, fs_jpim1   ! vector opt.
+            va(ji,jj,1) = vb(ji,jj,1) + p2dt * (  va(ji,jj,1) + 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) )   &
+               &                                                       / ( fse3v(ji,jj,1) * rau0       )  )
+         END DO
+      END DO
+      DO jk = 2, jpkm1
+         DO jj = 2, jpjm1
+            DO ji = fs_2, fs_jpim1   ! vector opt.
                zrhs = vb(ji,jj,jk) + p2dt * va(ji,jj,jk)   ! zrhs=right hand side
                va(ji,jj,jk) = zrhs - zwi(ji,jj,jk) / zwd(ji,jj,jk-1) * va(ji,jj,jk-1)
             END DO
-
-      ! third recurrence : SOLk = ( Lk - Uk * SOLk+1 ) / Dk
-            va(ji,jj,ikbvm1) = va(ji,jj,ikbvm1) / zwd(ji,jj,ikbvm1)
-
-            DO jk = ikbvm1-1, 1, -1
-               va(ji,jj,jk) =( va(ji,jj,jk) - zws(ji,jj,jk) * va(ji,jj,jk+1) ) / zwd(ji,jj,jk)
-            END DO
-
+         END DO
+      END DO
+      !
+      DO jj = 2, jpjm1        !==  thrid recurrence : SOLk = ( Lk - Uk * SOLk+1 ) / Dk  ==
+         DO ji = fs_2, fs_jpim1   ! vector opt.
+            va(ji,jj,jpkm1) = va(ji,jj,jpkm1) / zwd(ji,jj,jpkm1)
+         END DO
+      END DO
+      DO jk = jpk-2, 1, -1
+         DO jj = 2, jpjm1   
+            DO ji = fs_2, fs_jpim1   ! vector opt.
+               va(ji,jj,jk) = ( va(ji,jj,jk) - zws(ji,jj,jk) * va(ji,jj,jk+1) ) / zwd(ji,jj,jk)
+            END DO
          END DO
       END DO
@@ -250,6 +280,24 @@
          END DO
       END DO
-      !
-      CALL wrk_dealloc( jpi, jpj, jpk, zwi ) 
+
+      !! restore bottom layer avmu(v) 
+      IF( ln_bfrimp ) THEN
+# if defined key_vectopt_loop
+      DO jj = 1, 1
+         DO ji = jpi+2, jpij-jpi-1   ! vector opt. (forced unrolling)
+# else
+      DO jj = 2, jpjm1
+         DO ji = 2, jpim1
+# endif
+            ikbu = mbku(ji,jj)         ! ocean bottom level at u- and v-points 
+            ikbv = mbkv(ji,jj)         ! (deepest ocean u- and v-points)
+            avmu(ji,jj,ikbu+1) = zavmu(ji,jj)
+            avmv(ji,jj,ikbv+1) = zavmv(ji,jj)
+         END DO
+      END DO
+      ENDIF
+      !
+      CALL wrk_dealloc( jpi,jpj,jpk, zwi, zwd, zws) 
+      CALL wrk_dealloc( jpi,jpj, zavmu, zavmv) 
       !
       IF( nn_timing == 1 )  CALL timing_stop('dyn_zdf_imp')
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90	(revision 7)
@@ -53,5 +53,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: sshwzv.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: sshwzv.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -77,6 +77,4 @@
       !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling.
       !!----------------------------------------------------------------------
-      USE oce     , ONLY: tsa             ! tsa used as 2 3D workspace
-      !!
       INTEGER, INTENT(in) ::   kt   ! time step
       !
@@ -232,5 +230,5 @@
       IF( lk_diaar5 ) THEN                            ! vertical mass transport & its square value
          ! Caution: in the VVL case, it only correponds to the baroclinic mass transport.
-         z3d => tsa(:,:,:,1)
+         CALL wrk_alloc( jpi,jpj,jpk, z3d )
          z2d(:,:) = rau0 * e1t(:,:) * e2t(:,:)
          DO jk = 1, jpk
@@ -239,4 +237,5 @@
          CALL iom_put( "w_masstr" , z3d                     )  
          CALL iom_put( "w_masstr2", z3d(:,:,:) * z3d(:,:,:) )
+         CALL wrk_dealloc( jpi,jpj,jpk, z3d )
       ENDIF
       !
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flo4rk.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flo4rk.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flo4rk.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: flo4rk.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: flo4rk.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flo_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flo_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flo_oce.F90	(revision 7)
@@ -51,5 +51,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: flo_oce.F90 3104 2011-11-15 10:08:25Z cetlod $ 
+   !! $Id: flo_oce.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/floats.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/floats.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/floats.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: floats.F90 3151 2011-11-17 17:16:05Z cbricaud $ 
+   !! $Id: floats.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/floblk.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/floblk.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/floblk.F90	(revision 7)
@@ -28,5 +28,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: floblk.F90 3195 2011-12-06 16:40:25Z smasson $ 
+   !! $Id: floblk.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flodom.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flodom.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/FLO/flodom.F90	(revision 7)
@@ -42,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: flodom.F90 3104 2011-11-15 10:08:25Z cetlod $ 
+   !! $Id: flodom.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90	(revision 7)
@@ -135,5 +135,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: in_out_manager.F90 3170 2011-11-22 10:49:52Z cetlod $
+   !! $Id: in_out_manager.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!=====================================================================
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90	(revision 7)
@@ -74,5 +74,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: iom.F90 3104 2011-11-15 10:08:25Z cetlod $
+   !! $Id: iom.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/prtctl.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/prtctl.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/prtctl.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: prtctl.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: prtctl.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -123,8 +123,8 @@
       IF( PRESENT(mask2)   )   zmask2  (:,:,:)      = mask2  (:,:,:)
 
-      IF( lk_mpp ) THEN       ! processor number
+      IF( lk_mpp .AND. jpnij > 1 ) THEN       ! processor number
          sind = narea
          eind = narea
-      ELSE                    ! processors total number
+      ELSE                                    ! processors total number
          sind = 1
          eind = ijsplt
@@ -137,5 +137,5 @@
          ! Set indices for the SUM control
          IF( .NOT. lsp_area ) THEN
-            IF (lk_mpp )   THEN
+            IF (lk_mpp .AND. jpnij > 1)   THEN
                nictls = MAX( 1, nlditl(jn) - overlap )
                nictle = nleitl(jn) + overlap * MIN( 1, nlcitl(jn) - nleitl(jn)) 
@@ -229,8 +229,8 @@
       !!----------------------------------------------------------------------
 
-      IF( lk_mpp ) THEN       ! processor number
+      IF( lk_mpp .AND. jpnij > 1 ) THEN       ! processor number
          sind = narea
          eind = narea
-      ELSE                    ! total number of processors
+      ELSE                                    ! total number of processors
          sind = 1
          eind = ijsplt
@@ -294,5 +294,5 @@
       ktime = 1
 
-      IF( lk_mpp ) THEN
+      IF( lk_mpp .AND. jpnij > 1 ) THEN
          sind = narea
          eind = narea
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: restart.F90 2977 2011-10-22 13:46:41Z cetlod $
+   !! $Id: restart.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/cla.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/cla.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/cla.F90	(revision 7)
@@ -59,5 +59,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: cla.F90 2977 2011-10-22 13:46:41Z cetlod $
+   !! $Id: cla.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90	(revision 7)
@@ -26,5 +26,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: lbcnfd.F90 3116 2011-11-15 20:55:40Z cetlod $
+   !! $Id: lbcnfd.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90	(revision 7)
@@ -186,5 +186,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: lib_mpp.F90 3193 2011-12-05 16:31:39Z charris $
+   !! $Id: lib_mpp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -1740,5 +1740,5 @@
       !!                  ***  routine mppstop  ***
       !!                   
-      !! ** purpose :   Stop massilively parallel processors method
+      !! ** purpose :   Stop massively parallel processors method
       !!
       !!----------------------------------------------------------------------
@@ -2637,5 +2637,5 @@
 
    INTERFACE mpp_sum
-      MODULE PROCEDURE mpp_sum_a2s, mpp_sum_as, mpp_sum_ai, mpp_sum_s, mpp_sum_i
+      MODULE PROCEDURE mpp_sum_a2s, mpp_sum_as, mpp_sum_ai, mpp_sum_s, mpp_sum_i, mppsum_realdd, mppsum_a_realdd
    END INTERFACE
    INTERFACE mpp_max
@@ -2710,4 +2710,17 @@
    END SUBROUTINE mpp_sum_i
 
+   SUBROUTINE mppsum_realdd( ytab, kcom )
+      COMPLEX(wp), INTENT(inout)         :: ytab    ! input scalar
+      INTEGER , INTENT( in  ), OPTIONAL :: kcom
+      WRITE(*,*) 'mppsum_realdd: You should not have seen this print! error?', ytab
+   END SUBROUTINE mppsum_realdd
+ 
+   SUBROUTINE mppsum_a_realdd( ytab, kdim, kcom )
+      INTEGER , INTENT( in )                        ::   kdim      ! size of ytab
+      COMPLEX(wp), DIMENSION(kdim), INTENT( inout ) ::   ytab      ! input array
+      INTEGER , INTENT( in  ), OPTIONAL :: kcom
+      WRITE(*,*) 'mppsum_a_realdd: You should not have seen this print! error?', kdim, ytab(1), kcom
+   END SUBROUTINE mppsum_a_realdd
+
    SUBROUTINE mppmax_a_real( parr, kdim, kcom )
       REAL   , DIMENSION(:) :: parr
@@ -2815,5 +2828,7 @@
 
    SUBROUTINE mppstop
-      WRITE(*,*) 'mppstop: You should not have seen this print! error?'
+      WRITE(*,*) 'mppstop: You should not have seen this print if running in mpp mode! error?...'
+      WRITE(*,*) 'mppstop: ..otherwise this is a stop condition raised by ctl_stop in single processor mode'
+      STOP
    END SUBROUTINE mppstop
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90	(revision 7)
@@ -27,5 +27,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: mppini.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: mppini.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: ldfdyn.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: ldfdyn.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c2d.h90	(revision 7)
@@ -8,5 +8,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: ldfdyn_c2d.h90 3164 2011-11-21 13:41:25Z cetlod $ 
+   !! $Id: ldfdyn_c2d.h90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c3d.h90	(revision 7)
@@ -5,5 +5,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: ldfdyn_c3d.h90 3164 2011-11-21 13:41:25Z cetlod $ 
+   !! $Id: ldfdyn_c3d.h90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfeiv.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfeiv.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfeiv.F90	(revision 7)
@@ -26,4 +26,5 @@
    USE iom             ! I/O library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
 
    IMPLICIT NONE
@@ -37,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: ldfeiv.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: ldfeiv.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -60,5 +61,7 @@
       REAL(wp), DIMENSION(:,:), POINTER ::   zn, zah, zhw, zross   ! 2D workspace
       !!----------------------------------------------------------------------
-      
+      !
+      IF( nn_timing == 1 )  CALL timing_start('ldf_eiv')
+      !
       CALL wrk_alloc( jpi,jpj, zn, zah, zhw, zross )
 
@@ -241,4 +244,6 @@
       CALL wrk_dealloc( jpi,jpj, zn, zah, zhw, zross )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('ldf_eiv')
+      !
    END SUBROUTINE ldf_eiv
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90	(revision 7)
@@ -32,4 +32,5 @@
    USE prtctl          ! Print control
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
 
    IMPLICIT NONE
@@ -65,5 +66,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: ldfslp.F90 3209 2011-12-10 08:04:49Z smasson $
+   !! $Id: ldfslp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -95,7 +96,4 @@
       !!               of now neutral surfaces at u-, w- and v- w-points, resp.
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   zwz => ua       , zww => va   ! (ua,va) used as workspace
-      USE oce     , ONLY:   tsa                           ! (tsa) used as workspace
-      !!
       INTEGER , INTENT(in)                   ::   kt    ! ocean time-step index
       REAL(wp), INTENT(in), DIMENSION(:,:,:) ::   prd   ! in situ density
@@ -109,12 +107,12 @@
       REAL(wp) ::   zcj, zfj, zav, zbv, zaj, zbj   !   -      -
       REAL(wp) ::   zck, zfk,      zbw             !   -      -
+      REAL(wp), POINTER, DIMENSION(:,:,:) ::  zwz, zww
       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zdzr
       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zgru, zgrv
       !!----------------------------------------------------------------------
-
-      CALL wrk_alloc( jpi,jpj,jpk, zdzr )
-      !
-      zgru => tsa(:,:,:,1)
-      zgrv => tsa(:,:,:,2)
+      !
+      IF( nn_timing == 1 )  CALL timing_start('ldf_slp')
+      !
+      CALL wrk_alloc( jpi,jpj,jpk, zwz, zww, zdzr, zgru, zgrv )
 
       zeps   =  1.e-20_wp        !==   Local constant initialization   ==!
@@ -363,5 +361,7 @@
       ENDIF
       !
-      CALL wrk_dealloc( jpi,jpj,jpk, zdzr )
+      CALL wrk_dealloc( jpi,jpj,jpk, zwz, zww, zdzr, zgru, zgrv )
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('ldf_slp')
       !
    END SUBROUTINE ldf_slp
@@ -382,6 +382,4 @@
       !!             - wslp2              squared slope of neutral surfaces at w-points.
       !!----------------------------------------------------------------------
-      USE oce     , ONLY:   zalbet  => ua       ! use ua as workspace
-      !!
       INTEGER, INTENT( in ) ::   kt             ! ocean time-step index
       !!
@@ -396,9 +394,13 @@
       REAL(wp) ::   zbeta0
       REAL(wp), POINTER, DIMENSION(:,:)     ::   z1_mlbw
+      REAL(wp), POINTER, DIMENSION(:,:,:)   ::   zalbet
       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zdxrho , zdyrho, zdzrho     ! Horizontal and vertical density gradients
       REAL(wp), POINTER, DIMENSION(:,:,:,:) ::   zti_mlb, ztj_mlb            ! for Griffies operator only
       !!----------------------------------------------------------------------
-      
+      !
+      IF( nn_timing == 1 )  CALL timing_start('ldf_slp_grif')
+      !
       CALL wrk_alloc( jpi,jpj, z1_mlbw )
+      CALL wrk_alloc( jpi,jpj,jpk, zalbet )
       CALL wrk_alloc( jpi,jpj,jpk,2, zdxrho , zdyrho, zdzrho,              klstart = 0  )
       CALL wrk_alloc( jpi,jpj,  2,2, zti_mlb, ztj_mlb,        kkstart = 0, klstart = 0  )
@@ -564,6 +566,6 @@
                      !
                      IF( ln_triad_iso ) THEN
-                        zti_raw = ( zti_lim*zti_lim ) / zti_raw
-                        ztj_raw = ( ztj_lim*ztj_lim ) / ztj_raw
+                        zti_raw = zti_lim**2 / zti_raw
+                        ztj_raw = ztj_lim**2 / ztj_raw
                         zti_raw = SIGN( MIN( ABS(zti_lim), ABS( zti_raw ) ), zti_raw )
                         ztj_raw = SIGN( MIN( ABS(ztj_lim), ABS( ztj_raw ) ), ztj_raw )
@@ -582,6 +584,6 @@
                      !
                      !!gm this may inhibit vectorization on Vect Computers, and even on scalar computers....  ==> to be checked
-                     wslp2 (ji+ip,jj,jk+kp) = wslp2(ji+ip,jj,jk+kp) + 0.25_wp * zbu / zbti * ( zti_g_lim * zti_g_lim )      ! masked
-                     wslp2 (ji,jj+jp,jk+kp) = wslp2(ji,jj+jp,jk+kp) + 0.25_wp * zbv / zbtj * ( ztj_g_lim * ztj_g_lim )
+                     wslp2 (ji+ip,jj,jk+kp) = wslp2(ji+ip,jj,jk+kp) + 0.25_wp * zbu / zbti * zti_g_lim**2      ! masked
+                     wslp2 (ji,jj+jp,jk+kp) = wslp2(ji,jj+jp,jk+kp) + 0.25_wp * zbv / zbtj * ztj_g_lim**2
                   END DO
                END DO
@@ -595,6 +597,9 @@
       !
       CALL wrk_dealloc( jpi,jpj, z1_mlbw )
+      CALL wrk_dealloc( jpi,jpj,jpk, zalbet )
       CALL wrk_dealloc( jpi,jpj,jpk,2, zdxrho , zdyrho, zdzrho,              klstart = 0  )
       CALL wrk_dealloc( jpi,jpj,  2,2, zti_mlb, ztj_mlb,        kkstart = 0, klstart = 0  )
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('ldf_slp_grif')
       !
    END SUBROUTINE ldf_slp_grif
@@ -629,5 +634,7 @@
       REAL(wp) ::   zck, zfk,      zbw             !   -      -
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('ldf_slp_mxl')
+      !
       zeps   =  1.e-20_wp        !==   Local constant initialization   ==!
       zm1_g  = -1.0_wp / grav
@@ -720,4 +727,6 @@
       CALL lbc_lnk( wslpiml, 'W', -1. )   ;   CALL lbc_lnk( wslpjml, 'W', -1. )   ! lateral boundary conditions
       !
+      IF( nn_timing == 1 )  CALL timing_stop('ldf_slp_mxl')
+      !
    END SUBROUTINE ldf_slp_mxl
 
@@ -735,5 +744,7 @@
       INTEGER ::   ierr         ! local integer
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('ldf_slp_init')
+      !
       IF(lwp) THEN
          WRITE(numout,*)
@@ -785,4 +796,6 @@
          ENDIF
       ENDIF
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('ldf_slp_init')
       !
    END SUBROUTINE ldf_slp_init
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90	(revision 7)
@@ -35,5 +35,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: ldftra.F90 3116 2011-11-15 20:55:40Z cetlod $
+   !! $Id: ldftra.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -94,7 +94,6 @@
          WRITE(numout,*) '      eddy induced velocity coef.   rn_aeiv_0       = ', rn_aeiv_0
          WRITE(numout,*) '      maximum isoppycnal slope      rn_slpmax       = ', rn_slpmax
-         WRITE(numout,*) '   + griffies operator internal controls not set via the namelist (experimental): '
-         WRITE(numout,*) '      calculate triads twice        ln_triad_iso    = ', ln_triad_iso
-         WRITE(numout,*) '      GM -->lat mixing on bottom    ln_botmix_grif  = ', ln_botmix_grif
+         WRITE(numout,*) '      pure lateral mixing in ML     ln_triad_iso    = ', ln_triad_iso
+         WRITE(numout,*) '      lateral mixing on bottom      ln_botmix_grif  = ', ln_botmix_grif
          WRITE(numout,*)
       ENDIF
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_oce.F90	(revision 7)
@@ -79,5 +79,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: ldftra_oce.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: ldftra_oce.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_substitute.h90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_substitute.h90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_substitute.h90	(revision 7)
@@ -7,5 +7,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: ldftra_substitute.h90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: ldftra_substitute.h90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obc_par.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obc_par.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obc_par.F90	(revision 7)
@@ -101,10 +101,14 @@
    !!   Default option :                         NO open boundary condition
    !!----------------------------------------------------------------------
-   LOGICAL, PUBLIC, PARAMETER ::   lk_obc = .FALSE.  !: Ocean Boundary Condition flag
+#if ! defined key_agrif
+   LOGICAL, PUBLIC, PARAMETER ::   lk_obc = .FALSE.     !: Ocean Boundary Condition flag
+#else
+   LOGICAL, PUBLIC            ::   lk_obc = .FALSE.     !: Ocean Boundary Condition flag
+#endif
 #endif
 
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: obc_par.F90 2715 2011-03-30 15:58:35Z rblod $ 
+   !! $Id: obc_par.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcdta.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcdta.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcdta.F90	(revision 7)
@@ -74,5 +74,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: obcdta.F90 3116 2011-11-15 20:55:40Z cetlod $
+   !! $Id: obcdta.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcrad.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcrad.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obcrad.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!---------------------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: obcrad.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: obcrad.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!---------------------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obctra.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obctra.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBC/obctra.F90	(revision 7)
@@ -47,5 +47,5 @@
    !!---------------------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: obctra.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: obctra.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!---------------------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90	(revision 7)
@@ -109,5 +109,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: diaobs.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: diaobs.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -1015,6 +1015,10 @@
          & un, vn,  &
          & sshn
-#if defined key_ice_lim
+#if defined  key_lim3
       USE ice, ONLY : &                     ! LIM Ice model variables
+         & frld
+#endif
+#if defined key_lim2
+      USE ice_2, ONLY : &                     ! LIM Ice model variables
          & frld
 #endif
@@ -1031,10 +1035,10 @@
       INTEGER :: jveloset               ! velocity profile data loop variable
       INTEGER :: jvar                   ! Variable number    
-#if ! defined key_ice_lim
+#if ! defined key_lim2 && ! defined key_lim3
       REAL(wp), POINTER, DIMENSION(:,:) :: frld   
 #endif
       CHARACTER(LEN=20) :: datestr=" ",timestr=" "
  
-#if ! defined key_ice_lim
+#if ! defined key_lim2 && ! defined key_lim3
       CALL wrk_alloc(jpi,jpj,frld) 
 #endif
@@ -1051,5 +1055,5 @@
       ! No LIM => frld == 0.0_wp
       !-----------------------------------------------------------------------
-#if ! defined key_ice_lim
+#if ! defined key_lim2 && ! defined key_lim3
       frld(:,:) = 0.0_wp
 #endif
@@ -1099,5 +1103,5 @@
       ENDIF
 
-#if defined key_ice_lim
+#if defined key_lim2 || defined key_lim3
       IF ( ln_seaice ) THEN
          DO jseaiceset = 1, nseaicesets
@@ -1119,5 +1123,5 @@
       ENDIF
 
-#if ! defined key_ice_lim
+#if ! defined key_lim2 && ! defined key_lim3
       CALL wrk_dealloc(jpi,jpj,frld) 
 #endif
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_inter_sup.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_inter_sup.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_inter_sup.F90	(revision 7)
@@ -29,5 +29,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: obs_inter_sup.F90 3195 2011-12-06 16:40:25Z smasson $
+   !! $Id: obs_inter_sup.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_altbias.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_altbias.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_altbias.F90	(revision 7)
@@ -44,5 +44,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: obs_read_altbias.F90 3195 2011-12-06 16:40:25Z smasson $
+   !! $Id: obs_read_altbias.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readmdt.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readmdt.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_readmdt.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: obs_readmdt.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: obs_readmdt.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_rot_vel.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_rot_vel.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/OBS/obs_rot_vel.F90	(revision 7)
@@ -31,5 +31,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: obs_rot_vel.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: obs_rot_vel.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90	(revision 7)
@@ -48,5 +48,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: albedo.F90 3209 2011-12-10 08:04:49Z smasson $
+   !! $Id: albedo.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis3.F90	(revision 7)
@@ -68,5 +68,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: cpl_oasis3.F90 3116 2011-11-15 20:55:40Z cetlod $
+   !! $Id: cpl_oasis3.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis4.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis4.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis4.F90	(revision 7)
@@ -69,5 +69,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: cpl_oasis4.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: cpl_oasis4.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90	(revision 7)
@@ -100,5 +100,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: fldread.F90 3191 2011-12-05 09:41:41Z davestorkey $
+   !! $Id: fldread.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90	(revision 7)
@@ -100,5 +100,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: sbc_ice.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: sbc_ice.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90	(revision 7)
@@ -89,5 +89,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: sbc_oce.F90 3105 2011-11-15 11:33:20Z poddo $
+   !! $Id: sbc_oce.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcana.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: sbcana.F90 2977 2011-10-22 13:46:41Z cetlod $
+   !! $Id: sbcana.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -89,10 +89,16 @@
          nn_tau000 = MAX( nn_tau000, 1 )     ! must be >= 1
          !
+         qns (:,:) = rn_qns0
+         qsr (:,:) = rn_qsr0
+         emp (:,:) = rn_emp0
+         emps(:,:) = rn_emp0
+         !
+         utau(:,:) = rn_utau0
+         vtau(:,:) = rn_vtau0
+         taum(:,:) = SQRT ( rn_utau0 * rn_utau0 + rn_vtau0 * rn_vtau0 )
+         wndm(:,:) = SQRT ( taum(1,1) /  ( zrhoa * zcdrag ) )
+         !
       ENDIF
 
-      qns (:,:) = rn_qns0
-      qsr (:,:) = rn_qsr0
-      emp (:,:) = rn_emp0
-      emps(:,:) = rn_emp0
    
       ! Increase the surface stress to its nominal value during the first nn_tau000 time-steps
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90	(revision 7)
@@ -28,4 +28,5 @@
    USE lib_mpp         ! distribued memory computing library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
 
@@ -84,5 +85,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: sbcblk_clio.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: sbcblk_clio.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -227,5 +228,7 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   zqsb        ! sensible heat flux over ocean
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('blk_oce_clio')
+      !
       CALL wrk_alloc( jpi,jpj, zqlw, zqla, zqsb )
 
@@ -381,4 +384,6 @@
       CALL wrk_dealloc( jpi,jpj, zqlw, zqla, zqsb )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('blk_oce_clio')
+      !
    END SUBROUTINE blk_oce_clio
 
@@ -444,5 +449,7 @@
       REAL(wp), DIMENSION(:,:,:), POINTER ::   z_qlw, z_qsb
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('blk_ice_clio')
+      !
       CALL wrk_alloc( jpi,jpj, ztatm, zqatm, zevsqr, zrhoa )
       CALL wrk_alloc( jpi,jpj,pdim, z_qlw, z_qsb )
@@ -625,4 +632,6 @@
       CALL wrk_dealloc( jpi,jpj,pdim, z_qlw, z_qsb )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('blk_ice_clio')
+      !
    END SUBROUTINE blk_ice_clio
 
@@ -661,5 +670,7 @@
       REAL(wp), DIMENSION(:,:), POINTER ::   zps, zpc   ! sine (cosine) of latitude per sine (cosine) of solar declination 
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('blk_clio_qsr_oce')
+      !
       CALL wrk_alloc( jpi,jpj, zev, zdlha, zlsrise, zlsset, zps, zpc )
 
@@ -778,4 +789,6 @@
       CALL wrk_dealloc( jpi,jpj, zev, zdlha, zlsrise, zlsset, zps, zpc )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('blk_clio_qsr_oce')
+      !
    END SUBROUTINE blk_clio_qsr_oce
 
@@ -812,6 +825,8 @@
       REAL(wp), DIMENSION(:,:), POINTER ::   zdlha, zlsrise, zlsset   ! 2D workspace
       REAL(wp), DIMENSION(:,:), POINTER ::   zps, zpc   ! sine (cosine) of latitude per sine (cosine) of solar declination 
-       !!---------------------------------------------------------------------
-
+      !!---------------------------------------------------------------------
+      !
+      IF( nn_timing == 1 )  CALL timing_start('blk_clio_qsr_ice')
+      !
       CALL wrk_alloc( jpi,jpj, zev, zdlha, zlsrise, zlsset, zps, zpc )
 
@@ -919,4 +934,6 @@
       CALL wrk_dealloc( jpi,jpj, zev, zdlha, zlsrise, zlsset, zps, zpc )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('blk_clio_qsr_ice')
+      !
    END SUBROUTINE blk_clio_qsr_ice
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90	(revision 7)
@@ -34,4 +34,5 @@
    USE lib_mpp         ! distribued memory computing library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE prtctl          ! Print control
@@ -80,5 +81,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO-consortium (2010) 
-   !! $Id: sbcblk_core.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: sbcblk_core.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -242,5 +243,7 @@
       REAL(wp), DIMENSION(:,:), POINTER ::   zq_zu             ! air spec. hum.  at wind speed height
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('blk_oce_core')
+      !
       CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqsb, zqla, zevap )
       CALL wrk_alloc( jpi,jpj, Cd, Ch, Ce, zst, zt_zu, zq_zu )
@@ -396,4 +399,6 @@
       CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j, zqsatw, zqlw, zqsb, zqla, zevap )
       CALL wrk_dealloc( jpi,jpj, Cd, Ch, Ce, zst, zt_zu, zq_zu )
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('blk_oce_core')
       !
    END SUBROUTINE blk_oce_core
@@ -450,5 +455,7 @@
       REAL(wp), DIMENSION(:,:,:), POINTER ::   z_dqsb            ! sensible  heat sensitivity over ice
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('blk_ice_core')
+      !
       CALL wrk_alloc( jpi,jpj, z_wnds_t )
       CALL wrk_alloc( jpi,jpj,pdim, z_qlw, z_qsb, z_dqlw, z_dqsb ) 
@@ -610,4 +617,6 @@
       CALL wrk_dealloc( jpi,jpj,pdim, z_qlw, z_qsb, z_dqlw, z_dqsb ) 
       !
+      IF( nn_timing == 1 )  CALL timing_stop('blk_ice_core')
+      !
    END SUBROUTINE blk_ice_core
   
@@ -663,5 +672,7 @@
       INTEGER , DIMENSION(:,:), POINTER  ::   stab          ! 1st guess stability test integer
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('TURB_CORE_1Z')
+      !
       CALL wrk_alloc( jpi,jpj, stab )   ! integer
       CALL wrk_alloc( jpi,jpj, dU10, dT, dq, Cd_n10, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L )
@@ -739,4 +750,6 @@
       CALL wrk_dealloc( jpi,jpj, dU10, dT, dq, Cd_n10, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L )
       CALL wrk_dealloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta, U_n10, xlogt, xct, zpsi_h, zpsi_m )
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('TURB_CORE_1Z')
       !
     END SUBROUTINE TURB_CORE_1Z
@@ -796,5 +809,7 @@
       INTEGER , DIMENSION(:,:), POINTER ::   stab          ! 1st stability test integer
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('TURB_CORE_2Z')
+      !
       CALL wrk_alloc( jpi,jpj, dU10, dT, dq, Cd_n10, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L )
       CALL wrk_alloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta_u, zeta_t, U_n10 )
@@ -887,4 +902,6 @@
       CALL wrk_dealloc( jpi,jpj, stab )   ! interger
       !
+      IF( nn_timing == 1 )  CALL timing_stop('TURB_CORE_2Z')
+      !
     END SUBROUTINE TURB_CORE_2Z
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_mfs.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_mfs.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_mfs.F90	(revision 7)
@@ -21,4 +21,5 @@
    USE lib_mpp         ! distribued memory computing library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE prtctl          ! Print control
@@ -120,5 +121,7 @@
          &                  sn_tair , sn_rhm , sn_prec 
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_blk_mfs')
+      !
       !                                         ! ====================== !
       IF( kt == nit000 ) THEN                   !  First call kt=nit000  !
@@ -263,5 +266,7 @@
 
       ENDIF
-
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_blk_mfs')
+      !
    END SUBROUTINE sbc_blk_mfs
   
@@ -324,5 +329,7 @@
       REAL(wp), DIMENSION(5) :: p_e = (/-0.16,1.0,1.0,1.0,1.0/)
       INTEGER :: kku                        !index varing with wind speed
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('fluxes_mfs')
+      !
       CALL wrk_alloc( jpi,jpj, rspeed, sh10now, t10now, cdx, ce, shms )
       CALL wrk_alloc( jpi,jpj, rhom, sstk, ch, rel_windu, rel_windv )
@@ -490,5 +497,7 @@
       CALL wrk_dealloc( jpi,jpj, rspeed, sh10now, t10now, cdx, ce, shms )
       CALL wrk_dealloc( jpi,jpj, rhom, sstk, ch, rel_windu, rel_windv )
-
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('fluxes_mfs')
+      !
    END SUBROUTINE fluxes_mfs
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90	(revision 7)
@@ -48,4 +48,5 @@
    USE lib_mpp         ! distribued memory computing library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
 #if defined key_cpl_carbon_cycle
@@ -169,5 +170,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: sbccpl.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: sbccpl.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -227,5 +228,7 @@
          &                  sn_rcv_qns , sn_rcv_emp   , sn_rcv_rnf  , sn_rcv_cal   , sn_rcv_iceflx  , sn_rcv_co2
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_init')
+      !
       CALL wrk_alloc( jpi,jpj, zacs, zaos )
 
@@ -617,4 +620,6 @@
       CALL wrk_dealloc( jpi,jpj, zacs, zaos )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_init')
+      !
    END SUBROUTINE sbc_cpl_init
 
@@ -676,5 +681,7 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   ztx, zty 
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_rcv')
+      !
       CALL wrk_alloc( jpi,jpj, ztx, zty )
 
@@ -862,4 +869,6 @@
       CALL wrk_dealloc( jpi,jpj, ztx, zty )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_rcv')
+      !
    END SUBROUTINE sbc_cpl_rcv
    
@@ -905,5 +914,7 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   ztx, zty 
       !!----------------------------------------------------------------------
-      
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_ice_tau')
+      !
       CALL wrk_alloc( jpi,jpj, ztx, zty )
 
@@ -1070,4 +1081,6 @@
       CALL wrk_dealloc( jpi,jpj, ztx, zty )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_ice_tau')
+      !
    END SUBROUTINE sbc_cpl_ice_tau
    
@@ -1122,5 +1135,7 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   zcptn, ztmp, zicefr
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_ice_flx')
+      !
       CALL wrk_alloc( jpi,jpj, zcptn, ztmp, zicefr )
 
@@ -1301,4 +1316,6 @@
       CALL wrk_dealloc( jpi,jpj, zcptn, ztmp, zicefr )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_ice_flx')
+      !
    END SUBROUTINE sbc_cpl_ice_flx
    
@@ -1320,5 +1337,7 @@
       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmp3, ztmp4   
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_snd')
+      !
       CALL wrk_alloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 )
       CALL wrk_alloc( jpi,jpj,jpl, ztmp3, ztmp4 )
@@ -1545,4 +1564,6 @@
       CALL wrk_dealloc( jpi,jpj,jpl, ztmp3, ztmp4 )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_snd')
+      !
    END SUBROUTINE sbc_cpl_snd
    
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcdcy.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcdcy.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcdcy.F90	(revision 7)
@@ -18,4 +18,5 @@
    USE in_out_manager   ! I/O manager
    USE lib_mpp          ! MPP library
+   USE timing           ! Timing
 
    IMPLICIT NONE
@@ -31,5 +32,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO-consortium (2010) 
-   !! $Id: sbcdcy.F90 2715 2011-03-30 15:58:35Z rblod $ 
+   !! $Id: sbcdcy.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -76,5 +77,7 @@
          & - paaa * pt1 - zinvtwopi * pbbb * SIN(pccc + ztwopi * pt1)
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_dcy')
+      !
       ! Initialization
       ! --------------
@@ -221,4 +224,6 @@
       END DO  
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_dcy')
+      !
    END FUNCTION sbc_dcy
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90	(revision 7)
@@ -23,4 +23,5 @@
    USE lib_mpp         ! distribued memory computing library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
    USE lbclnk          ! ocean lateral boundary conditions
    USE lib_fortran
@@ -41,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: sbcfwb.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: sbcfwb.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -68,4 +69,6 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   ztmsk_neg, ztmsk_pos, ztmsk_tospread, z_wgt, zerp_cor
       !!----------------------------------------------------------------------
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_fwb')
       !
       CALL wrk_alloc( jpi,jpj, ztmsk_neg, ztmsk_pos, ztmsk_tospread, z_wgt, zerp_cor )
@@ -192,4 +195,6 @@
       CALL wrk_dealloc( jpi,jpj, ztmsk_neg, ztmsk_pos, ztmsk_tospread, z_wgt, zerp_cor )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_fwb')
+      !
    END SUBROUTINE sbc_fwb
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90	(revision 7)
@@ -14,4 +14,5 @@
    USE oce             ! ocean dynamics and tracers
    USE dom_oce         ! ocean space and time domain
+   USE domvvl
    USE phycst, only : rcp, rau0
    USE in_out_manager  ! I/O manager
@@ -354,10 +355,6 @@
 
 ! Freezing/melting potential
-! Calculated over NEMO leapfrog timestep (hence 2*dt), so uses tb in 
-! frzmlt which is then applied in going from tb to ta.
-! May be better using sst_m if not coupling to CICE every time-step
-
-!      nfrzmlt(:,:)=rau0*rcp*fse3t(:,:,1)*(Tocnfrz-sst_m(:,:))/(2.0*dt)
-      nfrzmlt(:,:)=rau0*rcp*fse3t(:,:,1)*(Tocnfrz-tsb(:,:,1,jp_tem))/(2.0*dt)
+! Calculated over NEMO leapfrog timestep (hence 2*dt)
+      nfrzmlt(:,:)=rau0*rcp*fse3t_m(:,:,1)*(Tocnfrz-sst_m(:,:))/(2.0*dt)
 
       ztmp(:,:) = nfrzmlt(:,:)
@@ -499,14 +496,17 @@
 ! Sublimation from the ice is treated in a similar way (included in emp but not emps)  
 !
-! This will need re-thinking in the variable volume case and if ice is 'embedded' in the 
-! ocean rather than floating on top
-
-      emp(:,:)  = emp(:,:) - tprecip(:,:)*fr_i(:,:)
+! This should not be done in the variable volume case
+
+      IF (.NOT. lk_vvl) THEN
+
+         emp(:,:)  = emp(:,:) - tprecip(:,:)*fr_i(:,:)
 
 ! Take sublimation into account
-      IF (nsbc == 5 ) THEN 
-         emp(:,:) = emp(:,:) + ( emp_ice(:,:) + sprecip(:,:) )
-      ELSE IF (nsbc == 2 ) THEN
-         emp(:,:) = emp(:,:) - qla_ice(:,:,1) / Lsub
+         IF (nsbc == 5 ) THEN 
+            emp(:,:) = emp(:,:) + ( emp_ice(:,:) + sprecip(:,:) )
+         ELSE IF (nsbc == 2 ) THEN
+            emp(:,:) = emp(:,:) - qla_ice(:,:,1) / Lsub
+         ENDIF
+
       ENDIF
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: sbcice_if.F90 3116 2011-11-15 20:55:40Z cetlod $
+   !! $Id: sbcice_if.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90	(revision 7)
@@ -65,5 +65,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , UCL NEMO Consortium (2011)
-   !! $Id: sbcice_lim.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: sbcice_lim.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90	(revision 7)
@@ -59,5 +59,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: sbcice_lim_2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: sbcice_lim_2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90	(revision 7)
@@ -49,4 +49,5 @@
    USE in_out_manager   ! I/O manager
    USE lib_mpp          ! MPP library
+   USE timing           ! Timing
    USE sbcwave          ! Wave module
 
@@ -63,5 +64,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO-consortium (2011) 
-   !! $Id: sbcmod.F90 3116 2011-11-15 20:55:40Z cetlod $
+   !! $Id: sbcmod.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -222,5 +223,7 @@
       INTEGER, INTENT(in) ::   kt       ! ocean time step
       !!---------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc')
+      !
       !                                            ! ---------------------------------------- !
       IF( kt /= nit000 ) THEN                      !          Swap of forcing fields          !
@@ -363,4 +366,6 @@
       IF( kt == nitend )   CALL sbc_final         ! Close down surface module if necessary
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc')
+      !
    END SUBROUTINE sbc
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90	(revision 7)
@@ -66,5 +66,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: sbcrnf.F90 3189 2011-11-29 13:37:29Z charris $
+   !! $Id: sbcrnf.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90	(revision 7)
@@ -31,5 +31,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: sbcssm.F90 2977 2011-10-22 13:46:41Z cetlod $
+   !! $Id: sbcssm.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90	(revision 7)
@@ -21,4 +21,5 @@
    USE lib_mpp         ! distribued memory computing library
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
+   USE timing          ! Timing
 
    IMPLICIT NONE
@@ -46,5 +47,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: sbcssr.F90 2715 2011-03-30 15:58:35Z rblod $
+   !! $Id: sbcssr.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -78,4 +79,6 @@
       NAMELIST/namsbc_ssr/ cn_dir, nn_sstr, nn_sssr, rn_dqdt, rn_deds, sn_sst, sn_sss, ln_sssr_bnd, rn_sssr_bnd
       !!----------------------------------------------------------------------
+      !
+      IF( nn_timing == 1 )  CALL timing_start('sbc_ssr')
       !
       !                                               ! -------------------- !
@@ -201,4 +204,6 @@
       ENDIF
       !
+      IF( nn_timing == 1 )  CALL timing_stop('sbc_ssr')
+      !
    END SUBROUTINE sbc_ssr
       
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solmat.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solmat.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solmat.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: solmat.F90 3162 2011-11-20 16:38:17Z cetlod $ 
+   !! $Id: solmat.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solpcg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solpcg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solpcg.F90	(revision 7)
@@ -27,5 +27,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: solpcg.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: solpcg.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solsor.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solsor.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solsor.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: solsor.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: solsor.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solver.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solver.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/SOL/solver.F90	(revision 7)
@@ -32,5 +32,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: solver.F90 3162 2011-11-20 16:38:17Z cetlod $ 
+   !! $Id: solver.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90	(revision 7)
@@ -69,5 +69,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: eosbn2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: eosbn2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90	(revision 7)
@@ -52,5 +52,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traadv.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traadv.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90	(revision 7)
@@ -50,5 +50,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traadv_cen2.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traadv_cen2.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90	(revision 7)
@@ -42,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traadv_eiv.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traadv_eiv.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traadv_muscl.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: traadv_muscl.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl2.F90	(revision 7)
@@ -39,5 +39,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traadv_muscl2.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: traadv_muscl2.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90	(revision 7)
@@ -42,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traadv_qck.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traadv_qck.F90 3300 2012-02-08 09:54:42Z cbricaud $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -177,5 +177,5 @@
                DO ji = fs_2, fs_jpim1   ! vector opt.   
                   zdir = 0.5 + SIGN( 0.5, pun(ji,jj,jk) )   ! if pun > 0 : zdir = 1 otherwise zdir = 0 
-                  zdx  = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * fse3u(ji,jj,jk)
+                  zdx  = zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj)
                   zwx(ji,jj,jk)  = ABS( pun(ji,jj,jk) ) * zdt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction)
                   zfc(ji,jj,jk)  = zdir * ptb(ji  ,jj,jk,jn) + ( 1. - zdir ) * ptb(ji+1,jj,jk,jn)  ! FC in the x-direction for T
@@ -215,6 +215,10 @@
                END DO
             END DO
-            !
-            ! Computation of the trend
+         END DO
+         !
+         CALL lbc_lnk( zwx(:,:,:), 'T', 1. ) ! Lateral boundary conditions
+         !
+         ! Computation of the trend
+         DO jk = 1, jpkm1  
             DO jj = 2, jpjm1
                DO ji = fs_2, fs_jpim1   ! vector opt.  
@@ -226,5 +230,4 @@
                END DO
             END DO
-            !
          END DO
          !                                 ! trend diagnostics (contribution of upstream fluxes)
@@ -299,5 +302,5 @@
                DO ji = fs_2, fs_jpim1   ! vector opt.   
                   zdir = 0.5 + SIGN( 0.5, pvn(ji,jj,jk) )   ! if pun > 0 : zdir = 1 otherwise zdir = 0 
-                  zdx  = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * fse3v(ji,jj,jk)
+                  zdx  = zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1)
                   zwy(ji,jj,jk)  = ABS( pvn(ji,jj,jk) ) * zdt / zdx    ! (0<zc_cfl<1 : Courant number on x-direction)
                   zfc(ji,jj,jk)  = zdir * ptb(ji,jj  ,jk,jn) + ( 1. - zdir ) * ptb(ji,jj+1,jk,jn)  ! FC in the x-direction for T
@@ -338,6 +341,10 @@
                END DO
             END DO
-            !
-            ! Computation of the trend
+         END DO
+         !
+         CALL lbc_lnk( zwy(:,:,:), 'T', 1. ) ! Lateral boundary conditions
+         !
+         ! Computation of the trend
+         DO jk = 1, jpkm1  
             DO jj = 2, jpjm1
                DO ji = fs_2, fs_jpim1   ! vector opt.  
@@ -349,5 +356,4 @@
                END DO
             END DO
-            !
          END DO
          !                                 ! trend diagnostics (contribution of upstream fluxes)
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90	(revision 7)
@@ -47,5 +47,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traadv_tvd.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traadv_tvd.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90	(revision 7)
@@ -37,5 +37,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traadv_ubs.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traadv_ubs.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90	(revision 7)
@@ -73,5 +73,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trabbl.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: trabbl.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90	(revision 7)
@@ -65,5 +65,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: tradmp.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: tradmp.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90	(revision 7)
@@ -48,5 +48,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traldf.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: traldf.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -163,5 +163,5 @@
       IF( ln_traldf_hor   )   ioptio = ioptio + 1
       IF( ln_traldf_iso   )   ioptio = ioptio + 1
-      IF( ioptio /= 1 )   CALL ctl_stop( '          use only ONE direction (level/hor/iso)' )
+      IF( ioptio >  1 )   CALL ctl_stop( '          use only ONE direction (level/hor/iso)' )
 
       ! defined the type of lateral diffusion from ln_traldf_... logicals
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90	(revision 7)
@@ -44,5 +44,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traldf_bilap.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traldf_bilap.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90	(revision 7)
@@ -39,5 +39,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traldf_bilapg.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traldf_bilapg.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90	(revision 7)
@@ -46,5 +46,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traldf_iso.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traldf_iso.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90	(revision 7)
@@ -46,5 +46,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traldf_iso_grif.F90 3215 2011-12-12 15:44:02Z cbricaud $
+   !! $Id: traldf_iso_grif.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -118,4 +118,5 @@
       REAL(wp), POINTER, DIMENSION(:,:  ) :: z2d
       REAL(wp), POINTER, DIMENSION(:,:,:) :: zdit, zdjt, ztfw 
+      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d       ! 3D workspace
       !!----------------------------------------------------------------------
       !
@@ -134,5 +135,5 @@
          IF( ierr > 0 )   CALL ctl_stop('STOP', 'tra_ldf_iso_grif: unable to allocate arrays')
          IF( ln_traldf_gdia ) THEN
-            IF (.not. ALLOCATED(psix_eiv))THEN
+            IF (.NOT. ALLOCATED(psix_eiv))THEN
                 ALLOCATE( psix_eiv(jpi,jpj,jpk) , psiy_eiv(jpi,jpj,jpk) , STAT=ierr )
                 IF( lk_mpp   )   CALL mpp_sum ( ierr )
@@ -206,4 +207,32 @@
       END DO
       !
+#if defined key_iomput
+      IF( ln_traldf_gdia .AND. cdtype == 'TRA' ) THEN
+         CALL wrk_alloc( jpi , jpj , jpk  , zw3d )
+         DO jk=1,jpkm1
+            zw3d(:,:,jk) = (psix_eiv(:,:,jk+1) - psix_eiv(:,:,jk))/fse3u(:,:,jk)  ! u_eiv = -dpsix/dz
+         END DO
+         zw3d(:,:,jpk) = 0._wp
+         CALL iom_put( "uoce_eiv", zw3d )    ! i-eiv current
+
+         DO jk=1,jpk-1
+            zw3d(:,:,jk) = (psiy_eiv(:,:,jk+1) - psiy_eiv(:,:,jk))/fse3v(:,:,jk)  ! v_eiv = -dpsiy/dz
+         END DO
+         zw3d(:,:,jpk) = 0._wp
+         CALL iom_put( "voce_eiv", zw3d )    ! j-eiv current
+
+         DO jk=1,jpk-1
+            DO jj = 2, jpjm1
+               DO ji = fs_2, fs_jpim1  ! vector opt.
+                  zw3d(ji,jj,jk) = (psiy_eiv(ji,jj,jk) - psiy_eiv(ji,jj-1,jk))/e2v(ji,jj) + &
+                       &    (psix_eiv(ji,jj,jk) - psix_eiv(ji-1,jj,jk))/e1u(ji,jj) ! w_eiv = dpsiy/dy + dpsiy/dx
+               END DO
+            END DO
+         END DO
+         zw3d(:,:,jpk) = 0._wp
+         CALL iom_put( "woce_eiv", zw3d )    ! vert. eiv current
+         CALL wrk_dealloc( jpi , jpj , jpk  , zw3d )
+      ENDIF
+#endif
       !                                                          ! ===========
       DO jn = 1, kjpt                                            ! tracer loop
@@ -409,4 +438,5 @@
    !!   default option :   Dummy code   NO rotation of the diffusive tensor
    !!----------------------------------------------------------------------
+   REAL, PUBLIC, DIMENSION(:,:,:), ALLOCATABLE, SAVE ::   psix_eiv, psiy_eiv   !: eiv stream function (diag only)
 CONTAINS
    SUBROUTINE tra_ldf_iso_grif( kt, kit000, cdtype, pgu, pgv,              &
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traldf_lap.F90 3159 2011-11-18 21:41:44Z cetlod $
+   !! $Id: traldf_lap.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90	(revision 7)
@@ -35,5 +35,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: tranpc.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: tranpc.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90	(revision 7)
@@ -62,5 +62,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO-Consortium (2010) 
-   !! $Id: tranxt.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: tranxt.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90	(revision 7)
@@ -61,5 +61,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: traqsr.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: traqsr.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -239,6 +239,6 @@
                zz1   = ( 1. - rn_abs ) * ro0cpr
                DO jk = 1, nksr                    ! solar heat absorbed at T-point in the top 400m 
-                  DO jj = 2, jpjm1
-                     DO ji = 2, jpim1
+                  DO jj = 1, jpj
+                     DO ji = 1, jpi
                         zc0 = zz0 * EXP( -fsdepw(ji,jj,jk  )*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk  )*xsi1r )
                         zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r )
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trasbc.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: trasbc.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -164,6 +164,6 @@
                                                
       IF( lk_vvl ) THEN                            ! Variable Volume case
-         DO jj = 2, jpj
-            DO ji = fs_2, fs_jpim1   ! vector opt.
+         DO jj = 1, jpj
+            DO ji = 1, jpi 
                ! temperature : heat flux + cooling/heating effet of EMP flux
                sbc_tsc(ji,jj,jp_tem) = ro0cpr * qns(ji,jj) - zsrau * emp(ji,jj) * tsn(ji,jj,1,jp_tem)
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90	(revision 7)
@@ -48,5 +48,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trazdf.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: trazdf.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90	(revision 7)
@@ -45,5 +45,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trazdf_exp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: trazdf_exp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90	(revision 7)
@@ -52,5 +52,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trazdf_imp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: trazdf_imp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90	(revision 7)
@@ -34,5 +34,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: zpshde.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: zpshde.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdicp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdicp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdicp.F90	(revision 7)
@@ -46,5 +46,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trdicp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: trdicp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdmld.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdmld.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdmld.F90	(revision 7)
@@ -60,5 +60,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trdmld.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: trdmld.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdmod.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdmod.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdmod.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trdmod.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: trdmod.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: trdtra.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: trdtra.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/TRD/trdvor.F90	(revision 7)
@@ -63,5 +63,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trdvor.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: trdvor.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90	(revision 7)
@@ -22,4 +22,5 @@
    USE lib_mpp         ! distributed memory computing
    USE prtctl          ! Print control
+   USE timing          ! Timing
 
    IMPLICIT NONE
@@ -44,5 +45,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: zdfbfr.F90 3116 2011-11-15 20:55:40Z cetlod $
+   !! $Id: zdfbfr.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -82,5 +83,7 @@
       REAL(wp) ::   zvu, zuv, zecu, zecv   ! temporary scalars
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_bfr')
+      !
       IF( nn_bfr == 2 ) THEN                 ! quadratic botton friction
          ! Calculate and store the quadratic bottom friction coefficient bfrua and bfrva
@@ -120,4 +123,7 @@
             &                       tab2d_2=bfrva, clinfo2=       ' v: ', mask2=vmask,ovlap=1 )
       ENDIF
+
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_bfr')
       !
    END SUBROUTINE zdf_bfr
@@ -144,5 +150,7 @@
       NAMELIST/nambfr/ nn_bfr, rn_bfri1, rn_bfri2, rn_bfeb2, ln_bfr2d, rn_bfrien, ln_bfrimp
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_bfr_init')
+      !
       REWIND ( numnam )               !* Read Namelist nam_bfr : bottom momentum boundary condition
       READ   ( numnam, nambfr )
@@ -163,5 +171,5 @@
             WRITE(numout,*) 'Implicit bottom friction can only be used when ln_zdfexp=.false.'
             WRITE(numout,*) '         but you set: ln_bfrimp=.true. and ln_zdfexp=.true.!!!!'
-            WRITE(ctmp1,*)  '         bad ln_bfrimp value = .true.' 
+            WRITE(ctmp1,*)  '         set either ln_zdfexp = .false or ln_bfrimp = .false.'
             CALL ctl_stop( ctmp1 )
          END IF
@@ -265,4 +273,5 @@
          CALL mpp_max( zmaxbfr )
       ENDIF
+      IF( .NOT.ln_bfrimp) THEN
       IF( lwp .AND. ictu + ictv > 0 ) THEN
          WRITE(numout,*) ' Bottom friction stability check failed at ', ictu, ' U-points '
@@ -271,4 +280,7 @@
          WRITE(numout,*) ' Bottom friction coefficient will be reduced where necessary'
       ENDIF
+      ENDIF
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_bfr_init')
       !
    END SUBROUTINE zdf_bfr_init
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90	(revision 7)
@@ -23,4 +23,5 @@
    USE lib_mpp         ! MPP library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
 
    IMPLICIT NONE
@@ -44,5 +45,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: zdfddm.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: zdfddm.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -100,5 +101,7 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   zmsks, zmskf, zmskd1, zmskd2, zmskd3
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_ddm')
+      !
       CALL wrk_alloc( jpi,jpj, zmsks, zmskf, zmskd1, zmskd2, zmskd3 )
 
@@ -195,4 +198,6 @@
       CALL wrk_dealloc( jpi,jpj, zmsks, zmskf, zmskd1, zmskd2, zmskd3 )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_ddm')
+      !
    END SUBROUTINE zdf_ddm
    
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90	(revision 7)
@@ -22,4 +22,5 @@
    USE iom             ! for iom_put
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
+   USE timing          ! Timing
 
    IMPLICIT NONE
@@ -32,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: zdfevd.F90 2715 2011-03-30 15:58:35Z rblod $
+   !! $Id: zdfevd.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -58,5 +59,7 @@
       INTEGER ::   ji, jj, jk   ! dummy loop indices
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_evd')
+      !
       IF( kt == nit000 ) THEN
          IF(lwp) WRITE(numout,*)
@@ -130,4 +133,6 @@
       CALL iom_put( "avt_evd", zavt_evd )              ! output this change
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_evd')
+      !
    END SUBROUTINE zdf_evd
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90	(revision 7)
@@ -30,4 +30,5 @@
    USE in_out_manager ! I/O manager
    USE iom            ! I/O manager library
+   USE timing         ! Timing
 
    IMPLICIT NONE
@@ -108,5 +109,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: zdfgls.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: zdfgls.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -132,8 +133,4 @@
       !!              coefficients using the GLS turbulent closure scheme.
       !!----------------------------------------------------------------------
-      USE oce     , ONLY: tsa                 ! use tsa as workspace
-      USE oce     , ONLY: z_elem_a  =>   ua   ! use ua as workspace
-      USE oce     , ONLY: z_elem_b  =>   va   ! use va as workspace
-      !
       INTEGER, INTENT(in) ::   kt ! ocean time step
       INTEGER  ::   ji, jj, jk, ibot, ibotm1, dir  ! dummy loop arguments
@@ -151,12 +148,11 @@
       REAL(wp), POINTER, DIMENSION(:,:,:) ::   eps         ! dissipation rate
       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zwall_psi   ! Wall function use in the wb case (ln_sigpsi.AND.ln_crban=T)
-      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_elem_c, psi
+      REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_elem_a, z_elem_b, z_elem_c, psi
       !!--------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_gls')
+      !
       CALL wrk_alloc( jpi,jpj, zdep, zflxs, zhsro )
-      CALL wrk_alloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi )
-      !
-      z_elem_c  => tsa(:,:,:,1)
-      psi       => tsa(:,:,:,2)
+      CALL wrk_alloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi )
 
       ! Preliminary computing
@@ -461,5 +457,5 @@
             DO jj = 2, jpjm1
                DO ji = fs_2, fs_jpim1   ! vector opt.
-                  psi(ji,jj,jk)  = en(ji,jj,jk) * mxln(ji,jj,jk)
+                  psi(ji,jj,jk)  = eb(ji,jj,jk) * mxlb(ji,jj,jk)
                END DO
             END DO
@@ -479,5 +475,5 @@
             DO jj = 2, jpjm1
                DO ji = fs_2, fs_jpim1   ! vector opt.
-                  psi(ji,jj,jk)  = SQRT( en(ji,jj,jk) ) / ( rc0 * mxln(ji,jj,jk) )
+                  psi(ji,jj,jk)  = SQRT( eb(ji,jj,jk) ) / ( rc0 * mxlb(ji,jj,jk) )
                END DO
             END DO
@@ -488,5 +484,5 @@
             DO jj = 2, jpjm1
                DO ji = fs_2, fs_jpim1   ! vector opt.
-                  psi(ji,jj,jk)  = rc02 * en(ji,jj,jk) * mxln(ji,jj,jk)**rnn 
+                  psi(ji,jj,jk)  = rc02 * eb(ji,jj,jk) * mxlb(ji,jj,jk)**rnn 
                END DO
             END DO
@@ -887,5 +883,8 @@
       !
       CALL wrk_dealloc( jpi,jpj, zdep, zflxs, zhsro )
-      CALL wrk_dealloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi )
+      CALL wrk_dealloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi )
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_gls')
+      !
       !
    END SUBROUTINE zdf_gls
@@ -920,5 +919,7 @@
          &            nn_stab_func, nn_clos
       !!----------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_gls_init')
+      !
       REWIND( numnam )                 !* Read Namelist namzdf_gls
       READ  ( numnam, namzdf_gls )
@@ -1187,4 +1188,6 @@
       CALL gls_rst( nit000, 'READ' )   !* read or initialize all required files
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_gls_init')
+      !
    END SUBROUTINE zdf_gls_init
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90	(revision 7)
@@ -34,4 +34,5 @@
    USE trdmod_oce      ! ocean trends definition
    USE trdtra          ! tracers trends
+   USE timing          ! Timing
 
    IMPLICIT NONE
@@ -146,5 +147,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: zdfkpp.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: zdfkpp.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -254,5 +255,7 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   zmask, zblcm, zblct
       !!--------------------------------------------------------------------
-     
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_kpp')
+      !
       CALL wrk_alloc( jpi, zmoa, zekman, zhmax, zria, zhbl )
       CALL wrk_alloc( jpi, za2m, za3m, zkmpm, za2t, za3t, zkmpt )
@@ -1214,4 +1217,6 @@
 #endif
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_kpp')
+      !
    END SUBROUTINE zdf_kpp
 
@@ -1229,5 +1234,7 @@
       INTEGER, INTENT(in) :: kt
       INTEGER :: ji, jj, jk
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('tra_kpp')
+      !
       IF( kt == nit000 ) THEN
          IF(lwp) WRITE(numout,*) 
@@ -1269,5 +1276,7 @@
          &             tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' )
       ENDIF
-
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('tra_kpp')
+      !
    END SUBROUTINE tra_kpp
 
@@ -1373,5 +1382,7 @@
       NAMELIST/namzdf_kpp/ ln_kpprimix, rn_difmiw, rn_difsiw, rn_riinfty, rn_difri, rn_bvsqcon, rn_difcon, nn_ave
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_kpp_init')
+      !
       REWIND ( numnam )               ! Read Namelist namkpp : K-Profile Parameterisation
       READ   ( numnam, namzdf_kpp )
@@ -1571,4 +1582,6 @@
 #endif
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_kpp_init')
+      !
    END SUBROUTINE zdf_kpp_init
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90	(revision 7)
@@ -17,4 +17,5 @@
    USE lib_mpp         ! MPP library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
    USE trc_oce, ONLY : lk_offline ! offline flag
 
@@ -33,5 +34,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: zdfmxl.F90 3186 2011-11-27 08:16:19Z smasson $ 
+   !! $Id: zdfmxl.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -78,5 +79,7 @@
       REAL(wp) ::   zavt_c = 5.e-4_wp   ! Kz criterion for the turbocline depth
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_mxl')
+      !
       CALL wrk_alloc( jpi,jpj, imld )
 
@@ -119,4 +122,6 @@
       CALL wrk_dealloc( jpi,jpj, imld )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_mxl')
+      !
    END SUBROUTINE zdf_mxl
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90	(revision 7)
@@ -28,4 +28,6 @@
    USE lib_mpp               ! MPP library
    USE wrk_nemo              ! work arrays
+   USE timing                ! Timing
+
    USE eosbn2, ONLY : nn_eos
 
@@ -55,5 +57,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: zdfric.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: zdfric.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -120,5 +122,7 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   zwx, ekm_dep  
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_ric')
+      !
       CALL wrk_alloc( jpi,jpj, zwx, ekm_dep )
       !                                                ! ===============
@@ -223,4 +227,6 @@
       CALL wrk_dealloc( jpi,jpj, zwx, ekm_dep )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_ric')
+      !
    END SUBROUTINE zdf_ric
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90	(revision 7)
@@ -51,4 +51,5 @@
    USE lib_mpp        ! MPP library
    USE wrk_nemo       ! work arrays
+   USE timing         ! Timing
 
    IMPLICIT NONE
@@ -97,5 +98,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: zdftke.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: zdftke.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -191,7 +192,4 @@
       !!                (= Kz dz[Ub] * dz[Un] )
       !! ---------------------------------------------------------------------
-      USE oce     , ONLY:   zdiag => ua          ! (ua,va) used  as workspace
-      USE oce     , ONLY:   tsa                  ! (tsa) used  as workspace
-      !!
       INTEGER  ::   ji, jj, jk                      ! dummy loop arguments
 !!bfr      INTEGER  ::   ikbu, ikbv, ikbum1, ikbvm1      ! temporary scalar
@@ -206,17 +204,15 @@
       REAL(wp) ::   zzd_up, zzd_lw                  !    -         -
 !!bfr      REAL(wp) ::   zebot                           !    -         -
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zd_up, zd_lw
       INTEGER , POINTER, DIMENSION(:,:  ) :: imlc
       REAL(wp), POINTER, DIMENSION(:,:  ) :: zhlc
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpelc
+      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpelc, zdiag, zd_up, zd_lw
       !!--------------------------------------------------------------------
+      !
+      IF( nn_timing == 1 )  CALL timing_start('tke_tke')
       !
       CALL wrk_alloc( jpi,jpj, imlc )    ! integer
       CALL wrk_alloc( jpi,jpj, zhlc ) 
-      CALL wrk_alloc( jpi,jpj,jpk, zpelc ) 
-      !
-      zd_up => tsa(:,:,:,1) 
-      zd_lw => tsa(:,:,:,2) 
-
+      CALL wrk_alloc( jpi,jpj,jpk, zpelc, zdiag, zd_up, zd_lw ) 
+      !
       zbbrau = rn_ebb / rau0       ! Local constant initialisation
       zfact1 = -.5_wp * rdt 
@@ -434,5 +430,7 @@
       CALL wrk_dealloc( jpi,jpj, imlc )    ! integer
       CALL wrk_dealloc( jpi,jpj, zhlc ) 
-      CALL wrk_dealloc( jpi,jpj,jpk, zpelc ) 
+      CALL wrk_dealloc( jpi,jpj,jpk, zpelc, zdiag, zd_up, zd_lw ) 
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('tke_tke')
       !
    END SUBROUTINE tke_tke
@@ -474,16 +472,14 @@
       !!              - avmu, avmv : now vertical eddy viscosity at uw- and vw-points
       !!----------------------------------------------------------------------
-      USE oce, ONLY:  zmpdl => ua    ! ua used as workspace
-      USE oce, ONLY:  tsa            ! use tsa as workspace
-      !!
       INTEGER  ::   ji, jj, jk   ! dummy loop indices
       REAL(wp) ::   zrn2, zraug, zcoef, zav     ! local scalars
       REAL(wp) ::   zdku, zpdlr, zri, zsqen     !   -      -
       REAL(wp) ::   zdkv, zemxl, zemlm, zemlp   !   -      -
-      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxlm, zmxld
+      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmpdl, zmxlm, zmxld
       !!--------------------------------------------------------------------
       !
-      zmxlm => tsa(:,:,:,1) 
-      zmxld => tsa(:,:,:,2) 
+      IF( nn_timing == 1 )  CALL timing_start('tke_avn')
+
+      CALL wrk_alloc( jpi,jpj,jpk, zmpdl, zmxlm, zmxld ) 
 
       !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -657,4 +653,8 @@
             &          tab3d_2=avmv, clinfo2=       ' v: ', mask2=vmask, ovlap=1, kdim=jpk )
       ENDIF
+      !
+      CALL wrk_dealloc( jpi,jpj,jpk, zmpdl, zmxlm, zmxld ) 
+      !
+      IF( nn_timing == 1 )  CALL timing_stop('tke_avn')
       !
    END SUBROUTINE tke_avn
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90	(revision 7)
@@ -26,4 +26,5 @@
    USE lib_mpp         ! MPP library
    USE wrk_nemo        ! work arrays
+   USE timing          ! Timing
 
    IMPLICIT NONE
@@ -53,5 +54,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: zdftmx.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: zdftmx.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -111,5 +112,7 @@
       REAL(wp), POINTER, DIMENSION(:,:) ::   zkz
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx')
+      !
       CALL wrk_alloc( jpi,jpj, zkz )
 
@@ -177,4 +180,6 @@
       CALL wrk_dealloc( jpi,jpj, zkz )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx')
+      !
    END SUBROUTINE zdf_tmx
 
@@ -212,4 +217,6 @@
       !!----------------------------------------------------------------------
       !
+      IF( nn_timing == 1 )  CALL timing_start('tmx_itf')
+      !
       CALL wrk_alloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum )
       CALL wrk_alloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf )
@@ -302,4 +309,6 @@
       CALL wrk_dealloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('tmx_itf')
+      !
    END SUBROUTINE tmx_itf
 
@@ -353,5 +362,7 @@
       NAMELIST/namzdf_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf
       !!----------------------------------------------------------------------
-
+      !
+      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx_init')
+      !
       CALL wrk_alloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep )
       CALL wrk_alloc( jpi,jpj,jpk, zpc )
@@ -520,4 +531,6 @@
       CALL wrk_dealloc( jpi,jpj,jpk, zpc )
       !
+      IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx_init')
+      !
    END SUBROUTINE zdf_tmx_init
 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/lib_fortran.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/lib_fortran.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/lib_fortran.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: lib_fortran.F90 2528 2010-12-27 17:33:53Z rblod $ 
+   !! $Id: lib_fortran.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -47,5 +47,5 @@
 
 #if ! defined key_mpp_rep
-   FUNCTION glob_sum_2d( ptab ) RESULT( glob_sum )
+   FUNCTION glob_sum_2d( ptab ) 
       !!-----------------------------------------------------------------------
       !!                  ***  FUNCTION  glob_sum_2D  ***
@@ -53,15 +53,15 @@
       !! ** Purpose : perform a masked sum on the inner global domain of a 2D array
       !!-----------------------------------------------------------------------
-      REAL(wp), INTENT(in), DIMENSION(:,:) ::   ptab       ! input 2D array
-      REAL(wp)                             ::   glob_sum   ! global masked sum
-      !!-----------------------------------------------------------------------
-      !
-      glob_sum = SUM( ptab(:,:)*tmask_i(:,:) )
-      IF( lk_mpp )   CALL mpp_sum( glob_sum )
+      REAL(wp), INTENT(in), DIMENSION(:,:) ::   ptab          ! input 2D array
+      REAL(wp)                             ::   glob_sum_2d   ! global masked sum
+      !!-----------------------------------------------------------------------
+      !
+      glob_sum_2d = SUM( ptab(:,:)*tmask_i(:,:) )
+      IF( lk_mpp )   CALL mpp_sum( glob_sum_2d )
       !
    END FUNCTION glob_sum_2d
    
    
-   FUNCTION glob_sum_3d( ptab ) RESULT( glob_sum )
+   FUNCTION glob_sum_3d( ptab ) 
       !!-----------------------------------------------------------------------
       !!                  ***  FUNCTION  glob_sum_3D  ***
@@ -69,20 +69,20 @@
       !! ** Purpose : perform a masked sum on the inner global domain of a 3D array
       !!-----------------------------------------------------------------------
-      REAL(wp), INTENT(in), DIMENSION(:,:,:) ::   ptab       ! input 3D array
-      REAL(wp)                               ::   glob_sum   ! global masked sum
+      REAL(wp), INTENT(in), DIMENSION(:,:,:) ::   ptab          ! input 3D array
+      REAL(wp)                               ::   glob_sum_3d   ! global masked sum
       !!
       INTEGER :: jk
       !!-----------------------------------------------------------------------
       !
-      glob_sum = 0.e0
+      glob_sum_3d = 0.e0
       DO jk = 1, jpk
-         glob_sum = glob_sum + SUM( ptab(:,:,jk)*tmask_i(:,:) )
-      END DO
-      IF( lk_mpp )   CALL mpp_sum( glob_sum )
+         glob_sum_3d = glob_sum_3d + SUM( ptab(:,:,jk)*tmask_i(:,:) )
+      END DO
+      IF( lk_mpp )   CALL mpp_sum( glob_sum_3d )
       !
    END FUNCTION glob_sum_3d
 
 
-   FUNCTION glob_sum_2d_a( ptab1, ptab2 ) RESULT( glob_sum )
+   FUNCTION glob_sum_2d_a( ptab1, ptab2 ) 
       !!-----------------------------------------------------------------------
       !!                  ***  FUNCTION  glob_sum_2D _a ***
@@ -90,16 +90,16 @@
       !! ** Purpose : perform a masked sum on the inner global domain of two 2D array
       !!-----------------------------------------------------------------------
-      REAL(wp), INTENT(in), DIMENSION(:,:) ::   ptab1, ptab2   ! input 2D array
-      REAL(wp)            , DIMENSION(2)   ::   glob_sum       ! global masked sum
+      REAL(wp), INTENT(in), DIMENSION(:,:) ::   ptab1, ptab2    ! input 2D array
+      REAL(wp)            , DIMENSION(2)   ::   glob_sum_2d_a   ! global masked sum
       !!-----------------------------------------------------------------------
       !             
-      glob_sum(1) = SUM( ptab1(:,:)*tmask_i(:,:) )
-      glob_sum(2) = SUM( ptab2(:,:)*tmask_i(:,:) )
-      IF( lk_mpp )   CALL mpp_sum( glob_sum, 2 )
+      glob_sum_2d_a(1) = SUM( ptab1(:,:)*tmask_i(:,:) )
+      glob_sum_2d_a(2) = SUM( ptab2(:,:)*tmask_i(:,:) )
+      IF( lk_mpp )   CALL mpp_sum( glob_sum_2d_a, 2 )
       !
    END FUNCTION glob_sum_2d_a
  
  
-   FUNCTION glob_sum_3d_a( ptab1, ptab2 ) RESULT( glob_sum )
+   FUNCTION glob_sum_3d_a( ptab1, ptab2 ) 
       !!-----------------------------------------------------------------------
       !!                  ***  FUNCTION  glob_sum_3D_a ***
@@ -107,16 +107,16 @@
       !! ** Purpose : perform a masked sum on the inner global domain of two 3D array
       !!-----------------------------------------------------------------------
-      REAL(wp), INTENT(in), DIMENSION(:,:,:) ::   ptab1, ptab2   ! input 3D array
-      REAL(wp)            , DIMENSION(2)     ::   glob_sum       ! global masked sum
+      REAL(wp), INTENT(in), DIMENSION(:,:,:) ::   ptab1, ptab2    ! input 3D array
+      REAL(wp)            , DIMENSION(2)     ::   glob_sum_3d_a   ! global masked sum
       !!
       INTEGER :: jk
       !!-----------------------------------------------------------------------
       !
-      glob_sum(:) = 0.e0
+      glob_sum_3d_a(:) = 0.e0
       DO jk = 1, jpk
-         glob_sum(1) = glob_sum(1) + SUM( ptab1(:,:,jk)*tmask_i(:,:) )
-         glob_sum(2) = glob_sum(2) + SUM( ptab2(:,:,jk)*tmask_i(:,:) )
-      END DO
-      IF( lk_mpp )   CALL mpp_sum( glob_sum, 2 )
+         glob_sum_3d_a(1) = glob_sum_3d_a(1) + SUM( ptab1(:,:,jk)*tmask_i(:,:) )
+         glob_sum_3d_a(2) = glob_sum_3d_a(2) + SUM( ptab2(:,:,jk)*tmask_i(:,:) )
+      END DO
+      IF( lk_mpp )   CALL mpp_sum( glob_sum_3d_a, 2 )
       !
    END FUNCTION glob_sum_3d_a
@@ -127,5 +127,5 @@
    !!----------------------------------------------------------------------
    
-   FUNCTION glob_sum_2d( ptab ) RESULT( glob_sum )
+   FUNCTION glob_sum_2d( ptab ) 
       !!----------------------------------------------------------------------
       !!                  ***  FUNCTION  glob_sum_2d ***
@@ -134,5 +134,5 @@
       !!----------------------------------------------------------------------
       REAL(wp), INTENT(in), DIMENSION(jpi,jpj) ::   ptab
-      REAL(wp)                                 ::   glob_sum   ! global masked sum
+      REAL(wp)                                 ::   glob_sum_2d   ! global masked sum
       !!
       COMPLEX(wp)::   ctmp
@@ -150,10 +150,10 @@
       END DO
       IF( lk_mpp )   CALL mpp_sum( ctmp )   ! sum over the global domain
-      glob_sum = REAL(ctmp,wp)
+      glob_sum_2d = REAL(ctmp,wp)
       !
    END FUNCTION glob_sum_2d   
 
 
-   FUNCTION glob_sum_3d( ptab ) RESULT( glob_sum )
+   FUNCTION glob_sum_3d( ptab ) 
       !!----------------------------------------------------------------------
       !!                  ***  FUNCTION  glob_sum_3d ***
@@ -162,5 +162,5 @@
       !!----------------------------------------------------------------------
       REAL(wp), INTENT(in), DIMENSION(jpi,jpj,jpk) ::   ptab
-      REAL(wp)                                     ::   glob_sum   ! global masked sum
+      REAL(wp)                                     ::   glob_sum_3d   ! global masked sum
       !!
       COMPLEX(wp)::   ctmp
@@ -180,10 +180,10 @@
       END DO
       IF( lk_mpp )   CALL mpp_sum( ctmp )   ! sum over the global domain
-      glob_sum = REAL(ctmp,wp)
+      glob_sum_3d = REAL(ctmp,wp)
       !
    END FUNCTION glob_sum_3d   
 
 
-   FUNCTION glob_sum_2d_a( ptab1, ptab2 ) RESULT( glob_sum )
+   FUNCTION glob_sum_2d_a( ptab1, ptab2 ) 
       !!----------------------------------------------------------------------
       !!                  ***  FUNCTION  glob_sum_2d_a ***
@@ -192,5 +192,5 @@
       !!----------------------------------------------------------------------
       REAL(wp), INTENT(in), DIMENSION(jpi,jpj) ::   ptab1, ptab2
-      REAL(wp)                                 ::   glob_sum   ! global masked sum
+      REAL(wp)                                 ::   glob_sum_2d_a   ! global masked sum
       !!
       COMPLEX(wp)::   ctmp
@@ -210,10 +210,10 @@
       END DO
       IF( lk_mpp )   CALL mpp_sum( ctmp )   ! sum over the global domain
-      glob_sum = REAL(ctmp,wp)
+      glob_sum_2d_a = REAL(ctmp,wp)
       !
    END FUNCTION glob_sum_2d_a   
 
 
-   FUNCTION glob_sum_3d_a( ptab1, ptab2 ) RESULT( glob_sum )
+   FUNCTION glob_sum_3d_a( ptab1, ptab2 ) 
       !!----------------------------------------------------------------------
       !!                  ***  FUNCTION  glob_sum_3d_a ***
@@ -222,5 +222,5 @@
       !!----------------------------------------------------------------------
       REAL(wp), INTENT(in), DIMENSION(jpi,jpj,jpk) ::   ptab1, ptab2
-      REAL(wp)                                     ::   glob_sum   ! global masked sum
+      REAL(wp)                                     ::   glob_sum_3d_a   ! global masked sum
       !!
       COMPLEX(wp)::   ctmp
@@ -242,5 +242,5 @@
       END DO
       IF( lk_mpp )   CALL mpp_sum( ctmp )   ! sum over the global domain
-      glob_sum = REAL(ctmp,wp)
+      glob_sum_3d_a = REAL(ctmp,wp)
       !
    END FUNCTION glob_sum_3d_a   
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90	(revision 7)
@@ -86,5 +86,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: nemogcm.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: nemogcm.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -173,4 +173,10 @@
       ENDIF
       !
+#if defined key_agrif
+      CALL Agrif_ParentGrid_To_ChildGrid()
+      IF( lk_diaobs ) CALL dia_obs_wri
+      IF( nn_timing == 1 )   CALL timing_finalize
+      CALL Agrif_ChildGrid_To_ParentGrid()
+#endif
       IF( nn_timing == 1 )   CALL timing_finalize
       !
@@ -267,8 +273,8 @@
          !
          WRITE(numout,*)
-         WRITE(numout,*) '         CNRS - NERC - Met OFFICE - MERCATOR-ocean'
+         WRITE(numout,*) '   CNRS - NERC - Met OFFICE - MERCATOR-ocean - INGV - CMCC'
          WRITE(numout,*) '                       NEMO team'
          WRITE(numout,*) '            Ocean General Circulation Model'
-         WRITE(numout,*) '                  version 3.3  (2010) '
+         WRITE(numout,*) '                  version 3.4  (2011) '
          WRITE(numout,*)
          WRITE(numout,*)
@@ -414,5 +420,5 @@
       !
       IF( ln_ctl ) THEN                 ! sub-domain area indices for the control prints
-         IF( lk_mpp ) THEN
+         IF( lk_mpp .AND. jpnij > 1 ) THEN
             isplt = jpni   ;   jsplt = jpnj   ;   ijsplt = jpni*jpnj   ! the domain is forced to the real split domain
          ELSE
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/oce.F90	(revision 7)
@@ -28,5 +28,5 @@
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   rn2b ,  rn2            !: brunt-vaisala frequency**2   [s-2]
    !
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:), TARGET ::  tsa             !: 4D T-S trends fields & work array 
+   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  tsa             !: 4D T-S trends fields & work array 
    !
    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rhd    !: in situ density anomalie rhd=(rho-rau0)/rau0  [no units]
@@ -49,5 +49,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: oce.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: oce.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/par_POMME_R025.h90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/par_POMME_R025.h90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/par_POMME_R025.h90	(revision 7)
@@ -6,5 +6,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: par_POMME_R025.h90 3131 2011-11-16 13:39:27Z cetlod $
+   !! $Id: par_POMME_R025.h90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/par_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/par_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/par_oce.F90	(revision 7)
@@ -199,5 +199,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: par_oce.F90 3214 2011-12-12 13:33:31Z cbricaud $ 
+   !! $Id: par_oce.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/step.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/step.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/step.F90	(revision 7)
@@ -47,5 +47,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: step.F90 3217 2011-12-13 09:07:25Z cbricaud $
+   !! $Id: step.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/step_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/step_oce.F90	(revision 7)
@@ -107,5 +107,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: step_oce.F90 3161 2011-11-20 15:02:18Z cetlod $
+   !! $Id: step_oce.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/stpctl.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/stpctl.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/stpctl.F90	(revision 7)
@@ -29,5 +29,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: stpctl.F90 2977 2011-10-22 13:46:41Z cetlod $
+   !! $Id: stpctl.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/timing.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/timing.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/timing.F90	(revision 7)
@@ -79,5 +79,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 4.0 , NEMO Consortium (2011)
-   !! $Id: timing.F90 3140 2011-11-16 16:12:00Z rblod $
+   !! $Id: timing.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -129,4 +129,6 @@
       INTEGER  :: ifinal_count, iperiods    
       REAL(wp) :: zcpu_end, zmpitime
+      !
+      s_wrk => NULL()
 
       ! clock time collection
@@ -158,9 +160,13 @@
       
       ! Correction of parent section
-      IF( ASSOCIATED(s_timer%parent_section) .AND. .NOT. PRESENT(csection) ) THEN
-         s_timer%parent_section%tsub_cpu   = s_timer%parent_section%tsub_cpu   + s_timer%t_cpu 
-         s_timer%parent_section%tsub_clock = s_timer%parent_section%tsub_clock + s_timer%t_clock 
+      IF( .NOT. PRESENT(csection) ) THEN
+         s_wrk => s_timer
+         DO WHILE ( ASSOCIATED(s_wrk%parent_section ) )
+            s_wrk => s_wrk%parent_section
+            s_wrk%tsub_cpu   = s_wrk%tsub_cpu   + s_timer%t_cpu 
+            s_wrk%tsub_clock = s_wrk%tsub_clock + s_timer%t_clock              
+         END DO
       ENDIF
-      
+            
       ! time diagnostics 
       s_timer%tsum_clock = s_timer%tsum_clock + s_timer%t_clock 
Index: /trunk/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90	(revision 7)
@@ -66,5 +66,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trc_oce.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: trc_oce.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/C14b/trcini_c14b.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/C14b/trcini_c14b.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/C14b/trcini_c14b.F90	(revision 7)
@@ -37,5 +37,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcini_c14b.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: trcini_c14b.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/C14b/trcnam_c14b.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/C14b/trcnam_c14b.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/C14b/trcnam_c14b.F90	(revision 7)
@@ -25,5 +25,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcnam_c14b.F90 3124 2011-11-16 09:25:18Z cetlod $ 
+   !! $Id: trcnam_c14b.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90	(revision 7)
@@ -7,5 +7,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: par_cfc.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: par_cfc.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcini_cfc.F90	(revision 7)
@@ -30,5 +30,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcini_cfc.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: trcini_cfc.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcnam_cfc.F90	(revision 7)
@@ -25,5 +25,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcnam_cfc.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: trcnam_cfc.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90	(revision 7)
@@ -54,5 +54,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcsms_cfc.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcsms_cfc.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/par_lobster.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/par_lobster.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/par_lobster.F90	(revision 7)
@@ -7,5 +7,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: par_lobster.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: par_lobster.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcbio.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcbio.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcbio.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcbio.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcbio.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcexp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcexp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcexp.F90	(revision 7)
@@ -34,5 +34,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcexp.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcexp.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcini_lobster.F90	(revision 7)
@@ -30,5 +30,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcini_lobster.F90 3153 2011-11-18 09:44:07Z cetlod $ 
+   !! $Id: trcini_lobster.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcnam_lobster.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcnam_lobster.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcnam_lobster.F90	(revision 7)
@@ -26,5 +26,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcnam_lobster.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: trcnam_lobster.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcopt.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcopt.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcopt.F90	(revision 7)
@@ -31,5 +31,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcopt.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcopt.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsed.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsed.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsed.F90	(revision 7)
@@ -32,5 +32,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcsed.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcsed.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90	(revision 7)
@@ -31,5 +31,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcsms_lobster.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcsms_lobster.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90	(revision 7)
@@ -10,5 +10,5 @@
    !!   'key_my_trc'                                               CFC tracers
    !!----------------------------------------------------------------------
-   !! trc_sms_my_trc       : MY_TRC model main routine 
+   !! trc_sms_my_trc       : MY_TRC model main routine
    !! trc_sms_my_trc_alloc : allocate arrays specific to MY_TRC sms
    !!----------------------------------------------------------------------
@@ -26,8 +26,8 @@
 
    ! Defined HERE the arrays specific to MY_TRC sms and ALLOCATE them in trc_sms_my_trc_alloc
-   
+
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcsms_my_trc.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcsms_my_trc.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -36,14 +36,15 @@
    SUBROUTINE trc_sms_my_trc( kt )
       !!----------------------------------------------------------------------
-      !!                     ***  trc_sms_my_trc  ***  
+      !!                     ***  trc_sms_my_trc  ***
       !!
       !! ** Purpose :   main routine of MY_TRC model
       !!
-      !! ** Method  : - 
+      !! ** Method  : -
       !!----------------------------------------------------------------------
       !
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
       INTEGER ::   jn   ! dummy loop index
-      !!----------------------------------------------------------------------
+      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrmyt
+!!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('trc_sms_my_trc')
@@ -53,6 +54,6 @@
       IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
 
-      IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrmyt ) 
-      
+      IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrmyt )
+
       WHERE( (glamt <= 170) .AND. (glamt >= 160) .AND. (gphit <= -74) .AND. (gphit >=-75.6) )
         trn(:,:,1,jpmyt1) = 1._wp
@@ -61,5 +62,5 @@
       END WHERE
 
-      WHERE( ((glamt <= -165) .OR. (glamt >= 160)) .AND. (gphit <= -76) .AND. (gphit >=-80)) 
+      WHERE( ((glamt <= -165) .OR. (glamt >= 160)) .AND. (gphit <= -76) .AND. (gphit >=-80))
         trn(:,:,1,jpmyt2) = 1._wp
         trb(:,:,1,jpmyt2) = 1._wp
@@ -72,5 +73,5 @@
             CALL trd_mod_trc( ztrmyt, jn, jptra_trd_sms, kt )   ! save trends
           END DO
-          CALL wrk_dealloc( jpi, jpj, jpk, ztrmyt ) 
+          CALL wrk_dealloc( jpi, jpj, jpk, ztrmyt )
       END IF
       !
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zbio.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zbio.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zbio.F90	(revision 7)
@@ -37,5 +37,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zbio.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zbio.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zche.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zche.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zche.F90	(revision 7)
@@ -143,5 +143,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zche.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zche.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zflx.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zflx.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zflx.F90	(revision 7)
@@ -66,5 +66,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zflx.F90 3206 2011-12-09 13:03:00Z cetlod $ 
+   !! $Id: p4zflx.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zint.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zint.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zint.F90	(revision 7)
@@ -25,5 +25,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zint.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zint.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlim.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlim.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlim.F90	(revision 7)
@@ -53,5 +53,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zlim.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zlim.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlys.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlys.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlys.F90	(revision 7)
@@ -42,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zlys.F90 3192 2011-12-05 13:55:12Z cetlod $ 
+   !! $Id: p4zlys.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -150,7 +150,7 @@
          IF( lk_iomput ) THEN
             zrfact2 = 1.e3 * rfact2r
-            CALL iom_put( "PH"    , hi      (:,:,:)           * tmask(:,:,:) )
-            CALL iom_put( "CO3"   , zco3    (:,:,:)           * tmask(:,:,:) )
-            CALL iom_put( "CO3sat", aksp    (:,:,:) / calcon  * tmask(:,:,:) )
+            CALL iom_put( "PH"    , hi      (:,:,:)                  * tmask(:,:,:) )
+            CALL iom_put( "CO3"   , zco3    (:,:,:) * 1e+3           * tmask(:,:,:) )
+            CALL iom_put( "CO3sat", aksp    (:,:,:) * 1e+3 / calcon  * tmask(:,:,:) )
             CALL iom_put( "DCAL"  , zcaldiss(:,:,:) * zrfact2 * tmask(:,:,:) )
          ELSE
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmeso.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmeso.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmeso.F90	(revision 7)
@@ -54,5 +54,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zmeso.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zmeso.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -183,6 +183,6 @@
                tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgrazn * trn(ji,jj,jk,jpnch) / ( trn(ji,jj,jk,jpphy) + rtrn )
                tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazd * trn(ji,jj,jk,jpdch) / ( trn(ji,jj,jk,jpdia) + rtrn )
-               tra(ji,jj,jk,jpbsi) = tra(ji,jj,jk,jpbsi) - zgrazd * trn(ji,jj,jk,jpbsi) / ( trn(ji,jj,jk,jpdia) + rtrn )
-               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zgrazd * trn(ji,jj,jk,jpbsi) / ( trn(ji,jj,jk,jpdia) + rtrn )
+               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazd * trn(ji,jj,jk,jpdsi) / ( trn(ji,jj,jk,jpdia) + rtrn )
+               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazd * trn(ji,jj,jk,jpdsi) / ( trn(ji,jj,jk,jpdia) + rtrn )
                tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraznf
                tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmicro.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmicro.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmicro.F90	(revision 7)
@@ -53,5 +53,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zmicro.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zmicro.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -163,6 +163,6 @@
                tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgrazp  * trn(ji,jj,jk,jpnch)/(trn(ji,jj,jk,jpphy)+rtrn)
                tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazsd * trn(ji,jj,jk,jpdch)/(trn(ji,jj,jk,jpdia)+rtrn)
-               tra(ji,jj,jk,jpbsi) = tra(ji,jj,jk,jpbsi) - zgrazsd * trn(ji,jj,jk,jpbsi)/(trn(ji,jj,jk,jpdia)+rtrn)
-               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zgrazsd * trn(ji,jj,jk,jpbsi)/(trn(ji,jj,jk,jpdia)+rtrn)
+               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazsd * trn(ji,jj,jk,jpdsi)/(trn(ji,jj,jk,jpdia)+rtrn)
+               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazsd * trn(ji,jj,jk,jpdsi)/(trn(ji,jj,jk,jpdia)+rtrn)
                tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgrazpf
                tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazsf
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmort.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmort.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zmort.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zmort.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zmort.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -191,11 +191,11 @@
                zfactch = trn(ji,jj,jk,jpdch) / ( trn(ji,jj,jk,jpdia) + rtrn )
                zfactfe = trn(ji,jj,jk,jpdfe) / ( trn(ji,jj,jk,jpdia) + rtrn )
-               zfactsi = trn(ji,jj,jk,jpbsi) / ( trn(ji,jj,jk,jpdia) + rtrn )
+               zfactsi = trn(ji,jj,jk,jpdsi) / ( trn(ji,jj,jk,jpdia) + rtrn )
 
                tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zmortp2 
                tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zmortp2 * zfactch
                tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zmortp2 * zfactfe
-               tra(ji,jj,jk,jpbsi) = tra(ji,jj,jk,jpbsi) - zmortp2 * zfactsi
-               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zmortp2 * zfactsi
+               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zmortp2 * zfactsi
+               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zmortp2 * zfactsi
 #if defined key_kriest
                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp2  
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zopt.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zopt.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zopt.F90	(revision 7)
@@ -39,5 +39,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zopt.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zopt.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90	(revision 7)
@@ -59,5 +59,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zprod.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zprod.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -388,5 +388,5 @@
               tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld(ji,jj,jk) * texcret2
               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcret2
-              tra(ji,jj,jk,jpbsi) = tra(ji,jj,jk,jpbsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcret2
+              tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcret2
               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + excret2 * zprorcad(ji,jj,jk) + excret * zprorca(ji,jj,jk)
               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) &
@@ -412,14 +412,25 @@
      IF( ln_diatrc ) THEN
          !
-         zrfact2 = 1.e3 * rfact2r
+         zrfact2 = 1.e3 * rfact2r  ! conversion from mol/L/timestep into mol/m3/s
          IF( lk_iomput ) THEN
            IF( jnt == nrdttrc ) THEN
-              CALL iom_put( "PPPHY" , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) )  ! primary production by nanophyto
-              CALL iom_put( "PPPHY2", zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) )  ! primary production by diatom
-              CALL iom_put( "PPNEWN", zpronew (:,:,:) * zrfact2 * tmask(:,:,:) )  ! new primary production by nanophyto
-              CALL iom_put( "PPNEWD", zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) )  ! new primary production by diatom
-              CALL iom_put( "PBSi"  , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production
-              CALL iom_put( "PFeD"  , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) )  ! biogenic iron production by diatom
-              CALL iom_put( "PFeN"  , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) )  ! biogenic iron production by nanophyto
+              CALL iom_put( "PPPHY"   , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) )  ! primary production by nanophyto
+              CALL iom_put( "PPPHY2"  , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) )  ! primary production by diatom
+              CALL iom_put( "PPNEWN"  , zpronew (:,:,:) * zrfact2 * tmask(:,:,:) )  ! new primary production by nanophyto
+              CALL iom_put( "PPNEWD"  , zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) )  ! new primary production by diatom
+              CALL iom_put( "PBSi"    , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production
+              CALL iom_put( "PFeD"    , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) )  ! biogenic iron production by diatom
+              CALL iom_put( "PFeN"    , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) )  ! biogenic iron production by nanophyto
+              CALL iom_put( "Mumax"   , prmax   (:,:,:) * tmask(:,:,:) )  ! Maximum growth rate
+              CALL iom_put( "MuN"     , zprbio  (:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) )  ! Realized growth rate for nanophyto
+              CALL iom_put( "MuD"     , zprdia  (:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) )  ! Realized growth rate for diatoms
+              CALL iom_put( "MuNlight", zprbio  (:,:,:) * tmask(:,:,:) )  ! Light limited growth rate phytoplankton
+              CALL iom_put( "MuDlight", zprdia  (:,:,:) * tmask(:,:,:) )  ! Light limited growth rate diatoms
+              CALL iom_put( "LNnut"   , xlimphy (:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term
+              CALL iom_put( "LDnut"   , xlimdia (:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term
+              CALL iom_put( "LNFe"    , xlimnfe (:,:,:) * tmask(:,:,:) )  ! Iron limitation term
+              CALL iom_put( "LDFe"    , xlimdfe (:,:,:) * tmask(:,:,:) )  ! Iron limitation term
+              CALL iom_put( "LNlight" , zprbio  (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) )  ! light limitation term
+              CALL iom_put( "LDlight" , zprdia  (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) )  ! light limitation term
            ENDIF
          ELSE
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zrem.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zrem.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zrem.F90	(revision 7)
@@ -54,5 +54,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zrem.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zrem.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -281,7 +281,7 @@
                zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * zdep / wsbio2 )
                zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * zstep * znusil
-               zosil    = zsiremin * trn(ji,jj,jk,jpdsi)
+               zosil    = zsiremin * trn(ji,jj,jk,jpgsi)
                !
-               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zosil
+               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) - zosil
                tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + zosil
                !
@@ -312,7 +312,7 @@
 #if  defined key_kriest
                zdenom1 = trn(ji,jj,jk,jppoc) / &
-           &           ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpdsi) + trn(ji,jj,jk,jpcal) + rtrn )
-#else
-               zdenom = 1. / ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpdsi) + trn(ji,jj,jk,jpcal) + rtrn )
+           &           ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgsi) + trn(ji,jj,jk,jpcal) + rtrn )
+#else
+               zdenom = 1. / ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpgsi) + trn(ji,jj,jk,jpcal) + rtrn )
                zdenom1 = trn(ji,jj,jk,jppoc) * zdenom
                zdenom2 = trn(ji,jj,jk,jpgoc) * zdenom
@@ -328,8 +328,8 @@
 #if defined key_kriest
                zlam1b = 3.e-5 + xlam1 * (  trn(ji,jj,jk,jppoc)                   &
-                  &                      + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpdsi)  ) * 1.e6
+                  &                      + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi)  ) * 1.e6
 #else
                zlam1b = 3.e-5 + xlam1 * (  trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc)   &
-                  &                      + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpdsi)  ) * 1.e6
+                  &                      + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi)  ) * 1.e6
 #endif
                zscave = zfeequi * zlam1b * zstep
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90	(revision 7)
@@ -160,8 +160,8 @@
             ikt = mbkt(ji,jj) 
 # if defined key_kriest
-            zwork1(ji,jj) = trn(ji,jj,ikt,jpdsi) * wscal (ji,jj,ikt)
+            zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * wscal (ji,jj,ikt)
             zwork2(ji,jj) = trn(ji,jj,ikt,jppoc) * wsbio3(ji,jj,ikt)
 # else
-            zwork1(ji,jj) = trn(ji,jj,ikt,jpdsi) * wsbio4(ji,jj,ikt)
+            zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * wsbio4(ji,jj,ikt)
             zwork2(ji,jj) = trn(ji,jj,ikt,jpgoc) * wsbio4(ji,jj,ikt) + trn(ji,jj,ikt,jppoc) * wsbio3(ji,jj,ikt) 
 # endif
@@ -194,11 +194,11 @@
             zwscal  = wscal (ji,jj,ikt) * zdep
 # if defined key_kriest
-            zsiloss = trn(ji,jj,ikt,jpdsi) * zwsbio4
+            zsiloss = trn(ji,jj,ikt,jpgsi) * zwsbio4
 # else
-            zsiloss = trn(ji,jj,ikt,jpdsi) * zwscal
+            zsiloss = trn(ji,jj,ikt,jpgsi) * zwscal
 # endif
             zcaloss = trn(ji,jj,ikt,jpcal) * zwscal
             !
-            trn(ji,jj,ikt,jpdsi) = trn(ji,jj,ikt,jpdsi) - zsiloss
+            trn(ji,jj,ikt,jpgsi) = trn(ji,jj,ikt,jpgsi) - zsiloss
             trn(ji,jj,ikt,jpcal) = trn(ji,jj,ikt,jpcal) - zcaloss
 #if ! defined key_sed
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsink.F90	(revision 7)
@@ -65,5 +65,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: p4zsink.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: p4zsink.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -156,5 +156,5 @@
       CALL p4z_sink2( wsbio4, sinking2, jpnum )
       CALL p4z_sink2( wsbio3, sinkfer , jpsfe )
-      CALL p4z_sink2( wscal , sinksil , jpdsi )
+      CALL p4z_sink2( wscal , sinksil , jpgsi )
       CALL p4z_sink2( wscal , sinkcal , jpcal )
 
@@ -512,5 +512,5 @@
       CALL p4z_sink2( wsbio4, sinking2, jpgoc )
       CALL p4z_sink2( wsbio4, sinkfer2, jpbfe )
-      CALL p4z_sink2( wsbio4, sinksil , jpdsi )
+      CALL p4z_sink2( wsbio4, sinksil , jpgsi )
       CALL p4z_sink2( wscal , sinkcal , jpcal )
 
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90	(revision 7)
@@ -7,5 +7,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: par_pisces.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: par_pisces.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -48,10 +48,10 @@
    INTEGER, PUBLIC, PARAMETER ::   jpdia = jp_lp + 11    !: Diatoms Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpmes = jp_lp + 12    !: Mesozooplankton Concentration
-   INTEGER, PUBLIC, PARAMETER ::   jpbsi = jp_lp + 13    !: (big) Silicate Concentration
+   INTEGER, PUBLIC, PARAMETER ::   jpdsi = jp_lp + 13    !: (big) Silicate Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpfer = jp_lp + 14    !: Iron Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpnum = jp_lp + 15    !: Big iron particles Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpsfe = jp_lp + 16    !: number of particulate organic phosphate concentration
    INTEGER, PUBLIC, PARAMETER ::   jpdfe = jp_lp + 17    !: Diatoms iron Concentration
-   INTEGER, PUBLIC, PARAMETER ::   jpdsi = jp_lp + 18    !: Diatoms Silicate Concentration
+   INTEGER, PUBLIC, PARAMETER ::   jpgsi = jp_lp + 18    !: Diatoms Silicate Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpnfe = jp_lp + 19    !: Nano iron Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpnch = jp_lp + 20    !: Nano Chlorophyll Concentration
@@ -86,5 +86,5 @@
    INTEGER, PUBLIC, PARAMETER ::   jpdia = jp_lp + 11    !: Diatoms Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpmes = jp_lp + 12    !: Mesozooplankton Concentration
-   INTEGER, PUBLIC, PARAMETER ::   jpbsi = jp_lp + 13    !: (big) Silicate Concentration
+   INTEGER, PUBLIC, PARAMETER ::   jpdsi = jp_lp + 13    !: (big) Silicate Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpfer = jp_lp + 14    !: Iron Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpbfe = jp_lp + 15    !: Big iron particles Concentration
@@ -92,5 +92,5 @@
    INTEGER, PUBLIC, PARAMETER ::   jpsfe = jp_lp + 17    !: Small iron particles Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpdfe = jp_lp + 18    !: Diatoms iron Concentration
-   INTEGER, PUBLIC, PARAMETER ::   jpdsi = jp_lp + 19    !: Diatoms Silicate Concentration
+   INTEGER, PUBLIC, PARAMETER ::   jpgsi = jp_lp + 19    !: Diatoms Silicate Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpnfe = jp_lp + 20    !: Nano iron Concentration
    INTEGER, PUBLIC, PARAMETER ::   jpnch = jp_lp + 21    !: Nano Chlorophyll Concentration
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90	(revision 7)
@@ -98,5 +98,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: sms_pisces.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: sms_pisces.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90	(revision 7)
@@ -50,5 +50,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcini_pisces.F90 3192 2011-12-05 13:55:12Z cetlod $ 
+   !! $Id: trcini_pisces.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -112,6 +112,6 @@
 #  endif
          trn(:,:,:,jpsil) = silic1
-         trn(:,:,:,jpbsi) = bioma0 * 0.15
-         trn(:,:,:,jpdsi) = bioma0 * 5.e-6
+         trn(:,:,:,jpdsi) = bioma0 * 0.15
+         trn(:,:,:,jpgsi) = bioma0 * 5.e-6
          trn(:,:,:,jpphy) = bioma0
          trn(:,:,:,jpdia) = bioma0
@@ -169,6 +169,7 @@
       ndayflxtr = 0
 
+      IF(lwp) WRITE(numout,*) 
       IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done'
-      IF(lwp) WRITE(numout,*) ' '
+      IF(lwp) WRITE(numout,*) 
       !
    END SUBROUTINE trc_ini_pisces
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90	(revision 7)
@@ -30,5 +30,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcnam_pisces.F90 2979 2011-10-24 08:47:03Z cetlod $ 
+   !! $Id: trcnam_pisces.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcrst_pisces.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcrst_pisces.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcrst_pisces.F90	(revision 7)
@@ -52,5 +52,5 @@
          CALL iom_get( knum, jpdom_autoglo, 'PH' , hi(:,:,:)  )
       ELSE
-         hi(:,:,:) = 1.e-9 
+!         hi(:,:,:) = 1.e-9 
          ! Set PH from  total alkalinity, borat (???), akb3 (???) and ak23 (???)
          ! --------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcsms_pisces.F90 3192 2011-12-05 13:55:12Z cetlod $ 
+   !! $Id: trcsms_pisces.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -207,6 +207,6 @@
             &                     + trn(:,:,:,jpdoc)                     ) * cvol(:,:,:)  ) 
          ! 
-         zsilbudget = glob_sum( (   trn(:,:,:,jpsil) + trn(:,:,:,jpdsi)  &
-            &                     + trn(:,:,:,jpbsi)                     ) * cvol(:,:,:)  )
+         zsilbudget = glob_sum( (   trn(:,:,:,jpsil) + trn(:,:,:,jpgsi)  &
+            &                     + trn(:,:,:,jpdsi)                     ) * cvol(:,:,:)  )
          ! 
          zalkbudget = glob_sum( (   trn(:,:,:,jpno3) * rno3              &
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90	(revision 7)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90	(revision 7)
@@ -0,0 +1,62 @@
+MODULE trcwri_pisces
+   !!======================================================================
+   !!                       *** MODULE trcwri ***
+   !!    PISCES :   Output of PISCES tracers
+   !!======================================================================
+   !! History :   1.0  !  2009-05 (C. Ethe)  Original code
+   !!----------------------------------------------------------------------
+#if defined key_top && key_pisces && defined key_iomput
+   !!----------------------------------------------------------------------
+   !!   'key_pisces'                                           PISCES model
+   !!----------------------------------------------------------------------
+   !! trc_wri_pisces   :  outputs of concentration fields
+   !!----------------------------------------------------------------------
+   USE trc         ! passive tracers common variables 
+   USE iom         ! I/O manager
+
+   IMPLICIT NONE
+   PRIVATE
+
+   PUBLIC trc_wri_pisces 
+
+CONTAINS
+
+   SUBROUTINE trc_wri_pisces
+      !!---------------------------------------------------------------------
+      !!                     ***  ROUTINE trc_wri_trc  ***
+      !!
+      !! ** Purpose :   output passive tracers fields 
+      !!---------------------------------------------------------------------
+      CHARACTER (len=20)   :: cltra
+      REAL(wp)             :: zrfact
+      INTEGER              :: jn
+      !!---------------------------------------------------------------------
+ 
+      ! write the tracer concentrations in the file
+      ! ---------------------------------------
+      DO jn = 1, jptra
+         zrfact = 1.0e+6 
+         IF( jn == jpno3 .OR. jn == jpnh4 ) zrfact = 1.0e+6 / 7.6
+         IF( jn == jppo4  )                 zrfact = 1.0e+6 / 122.
+         cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer
+         CALL iom_put( cltra, trn(:,:,:,jn) * zrfact )
+      END DO
+      !
+   END SUBROUTINE trc_wri_pisces
+
+#else
+   !!----------------------------------------------------------------------
+   !!  Dummy module :                                     No passive tracer
+   !!----------------------------------------------------------------------
+   PUBLIC trc_wri_pisces
+CONTAINS
+   SUBROUTINE trc_wri_pisces                     ! Empty routine  
+   END SUBROUTINE trc_wri_pisces
+#endif
+
+   !!----------------------------------------------------------------------
+   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+   !! $Id: trcwri_pisces.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+   !!======================================================================
+END MODULE trcwri_pisces
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90	(revision 7)
@@ -42,5 +42,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcadv.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcadv.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcbbl.F90	(revision 7)
@@ -35,5 +35,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcbbl.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcbbl.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcldf.F90 3160 2011-11-20 14:27:18Z cetlod $
+   !! $Id: trcldf.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -137,6 +137,13 @@
       !!----------------------------------------------------------------------
 
-      rldf_rat = rn_ahtrc_0 / rn_aht_0
-
+      IF (ABS(rn_aht_0) < 2._wp*TINY(1.e0)) THEN
+         IF (ABS(rn_ahtrc_0) < 2._wp*TINY(1.e0)) THEN
+            rldf_rat = 1.0_wp
+         ELSE
+            CALL ctl_stop( 'STOP', 'ldf_ctl : cannot define rldf_rat, rn_aht_0==0, rn_ahtrc_0 /=0' )
+         END IF
+      ELSE
+         rldf_rat = rn_ahtrc_0 / rn_aht_0
+      END IF
       !  Define the lateral mixing oparator for tracers
       ! ===============================================
@@ -234,5 +241,13 @@
 
       ! ratio between active and passive tracers diffusive coef.
-      rldf_rat = rn_ahtrc_0 / rn_aht_0
+      IF (ABS(rn_aht_0) < 2._wp*TINY(1.e0)) THEN
+         IF (ABS(rn_ahtrc_0) < 2._wp*TINY(1.e0)) THEN
+            rldf_rat = 1.0_wp
+         ELSE
+            CALL ctl_stop( 'STOP', 'ldf_ctl : cannot define rldf_rat, rn_aht_0==0, rn_ahtrc_0 /=0' )
+         END IF
+      ELSE
+         rldf_rat = rn_ahtrc_0 / rn_aht_0
+      END IF
       IF( rldf_rat < 0 ) THEN
          IF( .NOT.lk_offline ) THEN 
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcnam_trp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcnam_trp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcnam_trp.F90	(revision 7)
@@ -59,5 +59,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcnam_trp.F90 2977 2011-10-22 13:46:41Z cetlod $ 
+   !! $Id: trcnam_trp.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90	(revision 7)
@@ -48,5 +48,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcnxt.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcnxt.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90	(revision 7)
@@ -28,5 +28,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcrad.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcrad.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90	(revision 7)
@@ -31,5 +31,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcsbc.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcsbc.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90	(revision 7)
@@ -41,5 +41,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trctrp.F90 3153 2011-11-18 09:44:07Z cetlod $ 
+   !! $Id: trctrp.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trczdf.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trczdf.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/oce_trc.F90	(revision 7)
@@ -285,5 +285,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: oce_trc.F90 3186 2011-11-27 08:16:19Z smasson $
+   !! $Id: oce_trc.F90 3294 2012-01-28 16:44:18Z rblod $
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/prtctl_trc.F90	(revision 7)
@@ -457,5 +457,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: prtctl_trc.F90 3169 2011-11-22 09:53:46Z cetlod $ 
+   !! $Id: prtctl_trc.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================   
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trc.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trc.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trc.F90	(revision 7)
@@ -211,5 +211,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3.1 , NEMO Consortium (2010)
-   !! $Id: trc.F90 3192 2011-12-05 13:55:12Z cetlod $ 
+   !! $Id: trc.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trcdia.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trcdia.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trcdia.F90	(revision 7)
@@ -55,5 +55,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcdia.F90 3124 2011-11-16 09:25:18Z cetlod $ 
+   !! $Id: trcdia.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -66,7 +66,7 @@
       !! ** Purpose :   output passive tracers fields 
       !!---------------------------------------------------------------------
-      INTEGER, INTENT(in) ::   kt             ! ocean time-step
-      !
-      INTEGER             ::  ierr,  kindic   ! local integer
+      INTEGER, INTENT(in) ::   kt    ! ocean time-step
+      !
+      INTEGER             ::  ierr   ! local integer
       !!---------------------------------------------------------------------
       !
@@ -79,7 +79,7 @@
       !
       IF( .NOT.lk_iomput ) THEN
-                          CALL trcdit_wr( kt, kindic )      ! outputs for tracer concentration
-         IF( ln_diatrc )  CALL trcdii_wr( kt, kindic )      ! outputs for additional arrays
-         IF( ln_diabio )  CALL trcdib_wr( kt, kindic )      ! outputs for biological trends
+                          CALL trcdit_wr( kt )      ! outputs for tracer concentration
+         IF( ln_diatrc )  CALL trcdii_wr( kt )      ! outputs for additional arrays
+         IF( ln_diabio )  CALL trcdib_wr( kt )      ! outputs for biological trends
       ENDIF
       !
@@ -87,5 +87,5 @@
 
 
-   SUBROUTINE trcdit_wr( kt, kindic )
+   SUBROUTINE trcdit_wr( kt )
       !!----------------------------------------------------------------------
       !!                     ***  ROUTINE trcdit_wr  ***
@@ -99,10 +99,6 @@
       !!        Each nwritetrc time step, output the instantaneous or mean fields
       !!
-      !!        IF kindic <0, output of fields before the model interruption.
-      !!        IF kindic =0, time step loop
-      !!        IF kindic >0, output of fields before the time step loop
       !!----------------------------------------------------------------------
       INTEGER, INTENT(in) ::   kt       ! ocean time-step
-      INTEGER, INTENT(in) ::   kindic   ! indicator of abnormal termination
       !
       INTEGER ::   jn
@@ -150,5 +146,5 @@
       ! --------------------------------------------------------------
 
-      IF(ll_print)WRITE(numout,*)'trcdit_wr kt=',kt,' kindic ',kindic
+      IF(ll_print)WRITE(numout,*)'trcdit_wr kt=',kt
       
       IF( kt == nittrc000 ) THEN
@@ -231,9 +227,9 @@
       ! close the file 
       ! --------------
-      IF( kt == nitend .OR. kindic < 0 )   CALL histclo( nit5 )
+      IF( kt == nitend )   CALL histclo( nit5 )
       !
    END SUBROUTINE trcdit_wr
 
-   SUBROUTINE trcdii_wr( kt, kindic )
+   SUBROUTINE trcdii_wr( kt )
       !!----------------------------------------------------------------------
       !!                     ***  ROUTINE trcdii_wr  ***
@@ -247,10 +243,6 @@
       !!        Each nn_writedia time step, output the instantaneous or mean fields
       !!
-      !!        IF kindic <0, output of fields before the model interruption.
-      !!        IF kindic =0, time step loop
-      !!        IF kindic >0, output of fields before the time step loop
       !!----------------------------------------------------------------------
       INTEGER, INTENT(in) ::   kt       ! ocean time-step
-      INTEGER, INTENT(in) ::   kindic   ! indicator of abnormal termination
       !!
       LOGICAL ::   ll_print = .FALSE.
@@ -297,5 +289,5 @@
       ! -----------------------------------------------------------------
 
-      IF( ll_print ) WRITE(numout,*) 'trcdii_wr kt=', kt, ' kindic ', kindic
+      IF( ll_print ) WRITE(numout,*) 'trcdii_wr kt=', kt
 
       IF( kt == nittrc000 ) THEN
@@ -371,10 +363,10 @@
       ! Closing all files
       ! -----------------
-      IF( kt == nitend .OR. kindic < 0 )   CALL histclo(nitd)
+      IF( kt == nitend )   CALL histclo(nitd)
       !
 
    END SUBROUTINE trcdii_wr
 
-   SUBROUTINE trcdib_wr( kt, kindic )
+   SUBROUTINE trcdib_wr( kt )
       !!----------------------------------------------------------------------
       !!                     ***  ROUTINE trcdib_wr  ***
@@ -388,10 +380,6 @@
       !!        Each nn_writebio time step, output the instantaneous or mean fields
       !!
-      !!        IF kindic <0, output of fields before the model interruption.
-      !!        IF kindic =0, time step loop
-      !!        IF kindic >0, output of fields before the time step loop
       !!----------------------------------------------------------------------
       INTEGER, INTENT( in ) ::   kt          ! ocean time-step
-      INTEGER, INTENT( in ) ::   kindic      ! indicator of abnormal termination
       !!
       LOGICAL ::   ll_print = .FALSE.
@@ -438,5 +426,5 @@
       ! --------------------------------------------------------------
 
-      IF(ll_print) WRITE(numout,*)'trcdib_wr kt=',kt,' kindic ',kindic
+      IF(ll_print) WRITE(numout,*)'trcdib_wr kt=',kt
 
       IF( kt == nittrc000 ) THEN
@@ -488,5 +476,5 @@
       ! Closing all files
       ! -----------------
-      IF( kt == nitend .OR. kindic < 0 )   CALL histclo( nitb )
+      IF( kt == nitend )   CALL histclo( nitb )
       !
    END SUBROUTINE trcdib_wr
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trcdta.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trcdta.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trcdta.F90	(revision 7)
@@ -38,5 +38,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/OPA 3.3 , NEMO Consortium (2010)
-   !! $Id: trcdta.F90 3192 2011-12-05 13:55:12Z cetlod $ 
+   !! $Id: trcdta.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trcini.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trcini.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trcini.F90	(revision 7)
@@ -40,5 +40,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 4.0 , NEMO Consortium (2011)
-   !! $Id: trcini.F90 3192 2011-12-05 13:55:12Z cetlod $ 
+   !! $Id: trcini.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -77,4 +77,20 @@
 
       CALL trc_nam                  ! read passive tracers namelists
+      !
+      IF(lwp) WRITE(numout,*)
+      IF( ln_rsttr ) THEN
+        !
+        IF( lk_offline )  neuler = 1   ! Set time-step indicator at nit000 (leap-frog)
+        CALL trc_rst_cal( nittrc000, 'READ' )   ! calendar
+        !
+      ELSE
+        IF( lk_offline )  THEN
+           neuler = 0                  ! Set time-step indicator at nit000 (euler)
+           CALL day_init               ! set calendar
+        ENDIF
+        !
+      ENDIF
+      IF(lwp) WRITE(numout,*)
+                                                              ! masked grid volume
       !                                                              ! masked grid volume
       DO jk = 1, jpk
@@ -85,23 +101,9 @@
       areatot = glob_sum( cvol(:,:,:) )
 
-      IF( lk_lobster ) THEN   ;   CALL trc_ini_lobster      ! LOBSTER bio-model
-      ELSE                    ;   IF(lwp) WRITE(numout,*) '          LOBSTER not used'
-      ENDIF
-      
-      IF( lk_pisces  ) THEN   ;   CALL trc_ini_pisces       ! PISCES  bio-model
-      ELSE                    ;   IF(lwp) WRITE(numout,*) '          PISCES not used'
-      ENDIF
-      
-      IF( lk_cfc     ) THEN   ;   CALL trc_ini_cfc          ! CFC     tracers
-      ELSE                    ;   IF(lwp) WRITE(numout,*) '          CFC not used'
-      ENDIF
-
-      IF( lk_c14b    ) THEN   ;   CALL trc_ini_c14b         ! C14 bomb  tracer
-      ELSE                    ;   IF(lwp) WRITE(numout,*) '          C14 not used'
-      ENDIF
-      
-      IF( lk_my_trc  ) THEN   ;   CALL trc_ini_my_trc       ! MY_TRC  tracers
-      ELSE                    ;   IF(lwp) WRITE(numout,*) '          MY_TRC not used'
-      ENDIF
+      IF( lk_lobster )       CALL trc_ini_lobster      ! LOBSTER bio-model
+      IF( lk_pisces  )       CALL trc_ini_pisces       ! PISCES  bio-model
+      IF( lk_cfc     )       CALL trc_ini_cfc          ! CFC     tracers
+      IF( lk_c14b    )       CALL trc_ini_c14b         ! C14 bomb  tracer
+      IF( lk_my_trc  )       CALL trc_ini_my_trc       ! MY_TRC  tracers
 
       IF( lwp ) THEN
@@ -111,16 +113,13 @@
       ENDIF
 
-      IF( ln_trcdta )             CALL trc_dta_init
+      IF( ln_trcdta )      CALL trc_dta_init
+
 
       IF( ln_rsttr ) THEN
         !
-        IF( lk_offline )  neuler = 1   ! Set time-step indicator at nit000 (leap-frog)
         CALL trc_rst_read              ! restart from a file
         !
       ELSE
-        IF( lk_offline )  THEN
-           neuler = 0                  ! Set time-step indicator at nit000 (euler)
-           CALL day_init               ! set calendar
-        ENDIF
+        !
         IF( ln_trcdta .AND. nb_trcdta > 0 ) THEN  ! Initialisation of tracer from a file that may also be used for damping
             !
@@ -168,5 +167,5 @@
          WRITE(numout,*)
       ENDIF
-      WRITE(numout,*)
+      IF(lwp) WRITE(numout,*)
       IF(ln_ctl) THEN            ! print mean trends (used for debugging)
          CALL prt_ctl_trc_init
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trcnam.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trcnam.F90	(revision 7)
@@ -39,5 +39,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcnam.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: trcnam.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
@@ -265,5 +265,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcnam.F90 3116 2011-11-15 20:55:40Z cetlod $ 
+   !! $Id: trcnam.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trcrst.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trcrst.F90	(revision 7)
@@ -39,4 +39,5 @@
    PUBLIC   trc_rst_read      ! called by ???
    PUBLIC   trc_rst_wri       ! called by ???
+   PUBLIC   trc_rst_cal
 
    INTEGER, PUBLIC ::   numrtr, numrtw   !: logical unit for trc restart (read and write)
@@ -99,25 +100,10 @@
       !!----------------------------------------------------------------------
       INTEGER  ::  jn     
-      INTEGER  ::  jlibalt = jprstlib
-      LOGICAL  ::  llok
 
       !!----------------------------------------------------------------------
       !
       IF(lwp) WRITE(numout,*)
-      IF(lwp) WRITE(numout,*) 'trc_rst_read : read the TOP restart file'
+      IF(lwp) WRITE(numout,*) 'trc_rst_read : read data in the TOP restart file'
       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~'
-
-      IF ( jprstlib == jprstdimg ) THEN
-        ! eventually read netcdf file (monobloc)  for restarting on different number of processors
-        ! if {cn_trcrst_in}.nc exists, then set jlibalt to jpnf90 
-        INQUIRE( FILE = TRIM(cn_trcrst_in)//'.nc', EXIST = llok )
-        IF ( llok ) THEN ; jlibalt = jpnf90  ; ELSE ; jlibalt = jprstlib ; ENDIF 
-      ENDIF
-
-      CALL iom_open( cn_trcrst_in, numrtr, kiolib = jlibalt ) 
-
-      ! Time domain : restart
-      ! ---------------------
-      CALL trc_rst_cal( nittrc000, 'READ' )   ! calendar
 
       ! READ prognostic variables and computes diagnostic variable
@@ -209,4 +195,6 @@
       CHARACTER(len=*), INTENT(in) ::   cdrw       ! "READ"/"WRITE" flag
       !
+      INTEGER  ::  jlibalt = jprstlib
+      LOGICAL  ::  llok
       REAL(wp) ::  zkt, zrdttrc1
       REAL(wp) ::  zndastp
@@ -216,4 +204,18 @@
 
       IF( TRIM(cdrw) == 'READ' ) THEN
+
+         IF(lwp) WRITE(numout,*)
+         IF(lwp) WRITE(numout,*) 'trc_rst_cal : read the TOP restart file for calendar'
+         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~'
+
+         IF ( jprstlib == jprstdimg ) THEN
+           ! eventually read netcdf file (monobloc)  for restarting on different number of processors
+           ! if {cn_trcrst_in}.nc exists, then set jlibalt to jpnf90 
+           INQUIRE( FILE = TRIM(cn_trcrst_in)//'.nc', EXIST = llok )
+           IF ( llok ) THEN ; jlibalt = jpnf90  ; ELSE ; jlibalt = jprstlib ; ENDIF
+         ENDIF
+
+         CALL iom_open( cn_trcrst_in, numrtr, kiolib = jlibalt )
+
          CALL iom_get ( numrtr, 'kt', zkt )   ! last time-step of previous run
          IF(lwp) THEN
@@ -325,5 +327,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcrst.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcrst.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trcsms.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trcsms.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trcsms.F90	(revision 7)
@@ -29,5 +29,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcsms.F90 3153 2011-11-18 09:44:07Z cetlod $ 
+   !! $Id: trcsms.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trcstp.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trcstp.F90	(revision 7)
@@ -33,5 +33,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcstp.F90 3192 2011-12-05 13:55:12Z cetlod $ 
+   !! $Id: trcstp.F90 3294 2012-01-28 16:44:18Z rblod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
Index: /trunk/NEMOGCM/NEMO/TOP_SRC/trcwri.F90
===================================================================
--- /trunk/NEMOGCM/NEMO/TOP_SRC/trcwri.F90	(revision 6)
+++ /trunk/NEMOGCM/NEMO/TOP_SRC/trcwri.F90	(revision 7)
@@ -17,4 +17,5 @@
    USE iom         ! I/O manager
    USE dianam      ! Output file name
+   USE trcwri_pisces
 
    IMPLICIT NONE
@@ -68,8 +69,12 @@
       ! write the tracer concentrations in the file
       ! ---------------------------------------
-      DO jn = 1, jptra
-         cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer
-         CALL iom_put( cltra, trn(:,:,:,jn) )
-      END DO
+      IF( lk_pisces )  THEN
+         CALL trc_wri_pisces
+      ELSE
+         DO jn = 1, jptra
+            cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer
+            CALL iom_put( cltra, trn(:,:,:,jn) )
+         END DO
+      ENDIF
       !
    END SUBROUTINE trc_wri_trc
@@ -88,5 +93,5 @@
    !!----------------------------------------------------------------------
    !! NEMO/TOP 3.3 , NEMO Consortium (2010)
-   !! $Id: trcwri.F90 3160 2011-11-20 14:27:18Z cetlod $ 
+   !! $Id: trcwri.F90 3295 2012-01-30 15:49:07Z cetlod $ 
    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
    !!======================================================================
Index: /trunk/NEMOGCM/SETTE/BATCH_TEMPLATE/batch-ifort_MERCATOR_CLUSTER
===================================================================
--- /trunk/NEMOGCM/SETTE/BATCH_TEMPLATE/batch-ifort_MERCATOR_CLUSTER	(revision 7)
+++ /trunk/NEMOGCM/SETTE/BATCH_TEMPLATE/batch-ifort_MERCATOR_CLUSTER	(revision 7)
@@ -0,0 +1,74 @@
+#!/bin/bash 
+#!
+#PBS -N sette
+#PBS -e sette.$PBS_JOBID.err
+#PBS -o sette.$PBS_JOBID.out
+#PBS -l nodes=2:ppn=8
+#PBS -q multi
+#PBS -l walltime=03:00:00
+#PBS -l mem=24gb
+
+#
+# Test specific settings. Do not hand edit these lines; the fcm_job.sh script will set these
+# (via sed operating on this template job file). 
+#
+  OCEANCORES=NPROCS
+  export SETTE_DIR=DEF_SETTE_DIR
+
+###############################################################
+#
+# set up mpp computing environment
+#
+# Local settings for machine IBM Power6 (VARGAS at IDRIS France)
+#
+export MPIRUN="mpiexec -n $OCEANCORES"
+
+#
+# load sette functions (only post_test_tidyup needed)
+#
+  . ${SETTE_DIR}/all_functions.sh
+#
+
+# Don't remove neither change the following line
+# BODY
+
+#
+# These variables are needed by post_test_tidyup function in all_functions.sh
+#
+  export EXE_DIR=DEF_EXE_DIR
+  export INPUT_DIR=DEF_INPUT_DIR
+  export CONFIG_DIR=DEF_CONFIG_DIR
+  export NEMO_VALIDATION_DIR=DEF_NEMO_VALIDATION
+  export NEW_CONF=DEF_NEW_CONF
+  export CMP_NAM=DEF_CMP_NAM
+  export TEST_NAME=DEF_TEST_NAME
+#
+# end of set up
+###############################################################
+#
+# change to the working directory 
+#
+cd ${EXE_DIR}
+
+  echo Running on host `hostname`
+  echo Time is `date`
+  echo Directory is `pwd`
+# 
+#  Run the parallel MPI executable 
+#
+  echo "Running time ${MPIRUN} ./opa"
+#
+  if [ MPI_FLAG == "yes" ]; then
+     time ${MPIRUN} ./opa
+  else
+     time ./opa
+  fi
+
+#
+  post_test_tidyup
+
+# END_BODY
+# Don't remove neither change the previous line
+
+
+  exit
Index: /trunk/NEMOGCM/SETTE/all_functions.sh
===================================================================
--- /trunk/NEMOGCM/SETTE/all_functions.sh	(revision 6)
+++ /trunk/NEMOGCM/SETTE/all_functions.sh	(revision 7)
@@ -79,5 +79,5 @@
 # ==========
 #
-# $Id: all_functions.sh 3178 2011-11-24 16:27:29Z acc $
+# $Id: all_functions.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #   * creation
Index: /trunk/NEMOGCM/SETTE/fcm_job.sh
===================================================================
--- /trunk/NEMOGCM/SETTE/fcm_job.sh	(revision 6)
+++ /trunk/NEMOGCM/SETTE/fcm_job.sh	(revision 7)
@@ -65,5 +65,5 @@
 # ==========
 #
-# $Id: fcm_job.sh 3143 2011-11-17 15:26:08Z epico $
+# $Id: fcm_job.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/SETTE/sette.sh
===================================================================
--- /trunk/NEMOGCM/SETTE/sette.sh	(revision 6)
+++ /trunk/NEMOGCM/SETTE/sette.sh	(revision 7)
@@ -121,5 +121,5 @@
 # ==========
 #
-# $Id: sette.sh 3178 2011-11-24 16:27:29Z acc $
+# $Id: sette.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #   * creation
Index: /trunk/NEMOGCM/TOOLS/BDY_TOOLS/bdy_reorder
===================================================================
--- /trunk/NEMOGCM/TOOLS/BDY_TOOLS/bdy_reorder	(revision 7)
+++ /trunk/NEMOGCM/TOOLS/BDY_TOOLS/bdy_reorder	(revision 7)
@@ -0,0 +1,58 @@
+#!/bin/ksh
+
+# CALLS: bdy_reorder.exe
+
+#set -ax
+usage ()
+{
+   echo
+   echo "  bdy_reorder"
+   echo "  ************"
+   echo
+   echo "  usage: ${0##*/} [-c] file_in file_out"
+   echo
+   echo "  flags:    -c          target file is a coordinates.bdy.nc file"
+   echo "            -t          template file"
+   echo
+   exit 1
+}
+
+ln_coordinates=".false."
+file_template=""
+
+while getopts ct: opt
+do
+  case ${opt} in
+      c) 
+         ln_coordinates=".true." 
+      ;;
+      t) 
+         file_template=${OPTARG}
+      ;;
+      [?]) usage
+      ;;
+  esac
+done
+shift $(expr ${OPTIND} - 1)
+
+if [[ $# < 2 ]] ; then
+   usage
+fi
+
+script_dir=$(dirname $0)
+
+file_in=$1
+file_out=$2
+
+cat > nam_bdy_reorder << EOC
+&nam_bdy_reorder
+file_in='${file_in}'
+file_out='${file_out}'
+file_template='${file_template}'
+ln_coordinates=${ln_coordinates}
+EOC
+echo "/" >> nam_bdy_reorder
+
+${script_dir}/bdy_reorder.exe 
+
+exit 0
Index: /trunk/NEMOGCM/TOOLS/BDY_TOOLS/src/bdy_reorder.f90
===================================================================
--- /trunk/NEMOGCM/TOOLS/BDY_TOOLS/src/bdy_reorder.f90	(revision 7)
+++ /trunk/NEMOGCM/TOOLS/BDY_TOOLS/src/bdy_reorder.f90	(revision 7)
@@ -0,0 +1,609 @@
+PROGRAM bdy_reorder
+
+!===============================================================================
+! A routine to reorder old BDY data files to make them compatible with NEMO 3.4.
+!
+! This routine has 2 modes:
+!   1. If no template file is given then it will re-order the data in the input
+!      file so that it is in order of increasing nbr. 
+!   2. If a template file is given it will re-order the data in the input file 
+!      be consistent with the order of the data in the template file. This is 
+!      useful for making old barotropic and baroclinic data files consistent. 
+!      For older versions of NEMO the barotropic boundary data did not have to
+!      be in the same order as the baroclinic boundary data. The rimwidth 
+!      value can be different in the input file and template file; in this case 
+!      the routine will just re-order the data that the two files have in common. 
+!
+! The routine is mainly for re-ordering BDY data files, but can also be used to
+! re-order BDY coordinate files if ln_coordinates is set to .true.
+!
+! Author: Dave Storkey  Aug 2011
+! Bug notifications etc to:  dave.storkey@metoffice.gov.uk
+!
+!===============================================================================
+  
+      USE netcdf
+
+      IMPLICIT NONE
+
+      INTEGER,PARAMETER         :: numnam=11
+      INTEGER,PARAMETER         :: sp=SELECTED_REAL_KIND(6,37)
+      INTEGER,PARAMETER         :: dp=SELECTED_REAL_KIND(12,307)
+      INTEGER                   :: chunksize = 32000000
+
+      INTEGER                   :: jpbgrd, iostat, ncid_in, ncid_out, ncid_template, nbrid(4), nbrid_template(4)
+      INTEGER                   :: dimids(10), unlimitedDimId
+      INTEGER                   :: xtype, dimid, varid, ndims, ndims_var, nvars, natts, nblen(4), nblen_template(4), dimlen(10)
+      INTEGER                   :: lenvar(10), igrid, ib, ib1, ir, idim, jgrid, jv, icount, attid, len1, idepth, itime
+      INTEGER                   :: idim_time, idim_xb, idim_yb, idim_depth
+      INTEGER                   :: nbr_min, nbr_max, nbr_min_template, nbr_max_template, strlen, nbr_match
+
+      INTEGER, ALLOCATABLE, DIMENSION(:,:)   :: nbr, imap
+      INTEGER, ALLOCATABLE, DIMENSION(:,:)   :: nbi, nbj
+      INTEGER, ALLOCATABLE, DIMENSION(:,:)   :: nbi_template
+      INTEGER, ALLOCATABLE, DIMENSION(:,:)   :: nbj_template
+      INTEGER, ALLOCATABLE, DIMENSION(:,:)   :: nbr_template
+
+      INTEGER, ALLOCATABLE, DIMENSION(:)     :: nbi_extract, nbj_extract
+
+      INTEGER,  ALLOCATABLE, DIMENSION(:,:,:,:)  :: varin_int, varout_int
+      REAL(sp), ALLOCATABLE, DIMENSION(:,:,:,:)  :: varin_float, varout_float
+      REAL(dp), ALLOCATABLE, DIMENSION(:,:,:,:)  :: varin_dble, varout_dble
+
+      LOGICAL                   :: ln_coordinates
+      LOGICAL                   :: ln_template
+
+      CHARACTER(LEN=nf90_max_name)        :: attname, dimname, varname, time, date, zone, timestamp
+      CHARACTER(LEN=nf90_max_name)        :: file_in, file_out, file_template, nbi_name, nbj_name, nbr_name
+      CHARACTER(LEN=1),DIMENSION(4)       :: cgrid
+      CHARACTER(LEN=1)                    :: end_letter
+
+      NAMELIST/nam_bdy_reorder/ file_in, file_out, file_template, ln_coordinates, nbr_match
+
+!=============================================================================
+
+!-----------------------------------------------------------------------------
+! 0. Read namelist and initialise parameters
+!----------------------------------------------------------------------------- 
+
+      file_in = ''
+      file_out = ''
+      file_template = ''
+      ln_coordinates = .false.
+      nbr_match = 0
+
+      OPEN( UNIT=numnam, FILE='nam_bdy_reorder', FORM='FORMATTED', STATUS='OLD' )
+      READ( numnam, nam_bdy_reorder )
+      CLOSE( UNIT=numnam )
+
+      IF( ln_coordinates ) THEN
+         WRITE(*,*) 'Input file is a coordinates.bdy.nc file.'
+         jpbgrd = 4
+      ELSE
+          WRITE(*,*) 'Input file is a boundary data file.'
+         jpbgrd = 1
+      ENDIF
+ 
+      IF( LEN_TRIM(file_template) > 0 ) THEN 
+         WRITE(*,*) 'Reordering data to match template file.'
+         ln_template = .true.
+      ELSE 
+         WRITE(*,*) 'Reordering data in order of increasing nbr values.'
+         ln_template = .false.
+      ENDIF
+
+      cgrid= (/'t','u','v','f'/)
+
+!-----------------------------------------------------------------------------
+! 1. Read in nbr variables from file and create mapping. 
+!----------------------------------------------------------------------------- 
+
+! 1.1 Open input files
+
+      iostat = nf90_open( TRIM(file_in), nf90_nowrite, ncid_in )
+      IF (iostat /= nf90_noerr) THEN
+        WRITE(6,*) TRIM(nf90_strerror(iostat))
+        STOP
+      ENDIF
+      iostat = nf90_inquire( ncid_in, ndims, nvars, natts )
+
+      IF( ln_template ) THEN
+         iostat = nf90_open( TRIM(file_template), nf90_nowrite, ncid_template )
+         IF (iostat /= nf90_noerr) THEN
+           WRITE(6,*) TRIM(nf90_strerror(iostat))
+           STOP
+         ENDIF
+      ENDIF
+
+      DO igrid=1,jpbgrd
+
+! 1.2 Find dimensions of data in input files and allocate arrays
+
+         IF( ln_coordinates ) THEN
+            nbr_name = 'nbr'//cgrid(igrid)
+         ELSE
+            nbr_name = 'nbrdta'
+         ENDIF
+
+         iostat = nf90_inq_varid( ncid_in, nbr_name , nbrid(igrid) )
+         IF (iostat /= nf90_noerr) THEN
+            WRITE(6,*) TRIM(nf90_strerror(iostat))
+            STOP
+         ENDIF
+         iostat = nf90_inquire_variable( ncid_in, nbrid(igrid), ndims=ndims, dimids=dimids )
+         IF( ndims .ne. 2 ) THEN
+            WRITE(*,*) 'ERROR : ',TRIM(nbr_name),' does not have exactly 2 dimensions.'
+            WRITE(*,*) '        in file ',TRIM(file_in)
+            STOP
+         ENDIF
+         iostat = nf90_inquire_dimension( ncid_in, dimids(1), len=nblen(igrid))
+         iostat = nf90_inquire_dimension( ncid_in, dimids(2), len=len1)
+         WRITE(*,*) 'nblen(igrid), len1 : ',nblen(igrid), len1
+         IF( len1 .ne. 1 ) THEN 
+            WRITE(*,*) 'ERROR : second dimension of ',TRIM(nbr_name),' does not have length 1.'
+            WRITE(*,*) '        in file ',TRIM(file_in)
+            WRITE(*,*) '        len1 = ',len1
+            STOP
+         ENDIF
+
+         IF( ln_template ) THEN 
+
+            iostat = nf90_inq_varid( ncid_template, nbr_name , nbrid_template(igrid) )
+            IF (iostat /= nf90_noerr) THEN
+               WRITE(6,*) TRIM(nf90_strerror(iostat))
+               STOP
+            ENDIF
+            iostat = nf90_inquire_variable( ncid_template, nbrid_template(igrid), ndims=ndims, dimids=dimids )
+            IF( ndims .ne. 2 ) THEN
+               WRITE(*,*) 'ERROR : ',TRIM(nbr_name),' does not have exactly 2 dimensions.'
+               WRITE(*,*) '        in file ',TRIM(file_template)
+               STOP
+            ENDIF
+            iostat = nf90_inquire_dimension( ncid_template, dimids(1), len=nblen_template(igrid))
+            iostat = nf90_inquire_dimension( ncid_template, dimids(2), len=len1)
+            WRITE(*,*) 'nblen_template(igrid), len1 : ',nblen_template(igrid), len1
+            IF( len1 .ne. 1 ) THEN 
+               WRITE(*,*) 'ERROR : second dimension of ',TRIM(nbr_name),' does not have length 1.'
+               WRITE(*,*) '        in file ',TRIM(file_template)
+               WRITE(*,*) '        len1 = ',len1
+               STOP
+            ENDIF
+
+         ENDIF ! ln_template
+
+      ENDDO  ! jpbgrd
+
+      ALLOCATE( nbr(MAXVAL(nblen),1), imap(MAXVAL(nblen),jpbgrd) )
+      IF( ln_template ) THEN 
+         ALLOCATE( nbi(MAXVAL(nblen),1), nbj(MAXVAL(nblen),1) )
+         ALLOCATE( nbi_template(MAXVAL(nblen_template),1) )
+         ALLOCATE( nbj_template(MAXVAL(nblen_template),1) )
+         ALLOCATE( nbr_template(MAXVAL(nblen_template),1) )
+      ENDIF
+
+! 1.3 Read in nbr variables and generate mapping.
+
+      nbr(:,:) = -1
+      imap(:,:) = -1    
+      IF( ln_template ) THEN 
+         nbi(:,:) = -1
+         nbj(:,:) = -1
+         nbi_template(:,:) = -1
+         nbj_template(:,:) = -1
+         nbr_template(:,:) = -1
+      ENDIF
+
+      WRITE(*,*) '>>> Generating map.'
+      DO igrid=1,jpbgrd
+
+         iostat = nf90_get_var( ncid_in, nbrid(igrid), nbr(1:nblen(igrid),1:1) ) 
+         IF (iostat /= nf90_noerr) THEN
+           WRITE(6,*) TRIM(nf90_strerror(iostat))
+           STOP
+         ENDIF
+
+         nbr_min = MINVAL( nbr(1:nblen(igrid),1) )
+         nbr_max = MAXVAL( nbr(1:nblen(igrid),1) )
+         IF( nbr_min .ne. 1 ) THEN
+            WRITE(*,*) 'Something wrong with input file ',file_in
+            WRITE(*,*) 'MIN(nbr) /= 1'
+            STOP
+         ENDIF
+
+         IF( ln_template ) THEN 
+
+            IF( ln_coordinates ) THEN
+               nbi_name = 'nbi'//cgrid(igrid)
+               nbj_name = 'nbj'//cgrid(igrid)
+            ELSE
+               nbi_name = 'nbidta'            
+               nbj_name = 'nbjdta'            
+            ENDIF
+
+            ! read in nbi, nbj values from input file
+            iostat = nf90_inq_varid( ncid_in, nbi_name, varid ) 
+            IF (iostat == nf90_noerr) iostat = nf90_get_var( ncid_in, varid, nbi(1:nblen(igrid),1:1) ) 
+            IF (iostat /= nf90_noerr) THEN
+              WRITE(6,*) TRIM(nf90_strerror(iostat))
+              STOP
+            ENDIF
+            iostat = nf90_inq_varid( ncid_in, nbj_name, varid ) 
+            IF (iostat == nf90_noerr) iostat = nf90_get_var( ncid_in, varid, nbj(1:nblen(igrid),1:1) ) 
+            IF (iostat /= nf90_noerr) THEN
+              WRITE(6,*) TRIM(nf90_strerror(iostat))
+              STOP
+            ENDIF
+
+            ! read in nbi, nbj, nbr values from template file
+            iostat = nf90_inq_varid( ncid_template, nbi_name, varid ) 
+            IF (iostat == nf90_noerr) iostat = nf90_get_var( ncid_template, varid, nbi_template(1:nblen_template(igrid),1:1) ) 
+            IF (iostat /= nf90_noerr) THEN
+              WRITE(6,*) TRIM(nf90_strerror(iostat))
+              STOP
+            ENDIF
+            iostat = nf90_inq_varid( ncid_template, nbj_name, varid ) 
+            IF (iostat == nf90_noerr) iostat = nf90_get_var( ncid_template, varid, nbj_template(1:nblen_template(igrid),1:1) ) 
+            IF (iostat /= nf90_noerr) THEN
+              WRITE(6,*) TRIM(nf90_strerror(iostat))
+              STOP
+            ENDIF
+            iostat = nf90_get_var( ncid_template, nbrid_template(igrid), nbr_template(1:nblen_template(igrid),1:1) ) 
+            IF (iostat /= nf90_noerr) THEN
+              WRITE(6,*) TRIM(nf90_strerror(iostat))
+              STOP
+            ENDIF
+
+            nbr_min_template = MINVAL( nbr_template(1:nblen_template(igrid),1) )
+            nbr_max_template = MAXVAL( nbr_template(1:nblen_template(igrid),1) )
+            IF( nbr_min_template .ne. 1 ) THEN
+               WRITE(*,*) 'Something wrong with template file ',file_template
+               WRITE(*,*) 'MIN(nbr) /= 1'
+               STOP
+            ENDIF
+
+            IF( nbr_match .lt. 1 ) nbr_match = MIN(nbr_max, nbr_max_template)
+
+            ! initialise imap to the identity mapping
+            DO ib = 1, nblen(igrid)
+               imap(ib, igrid) = ib
+            ENDDO
+
+            ! allocate "extract" arrays
+            icount = 0
+            DO ib = 1, nblen_template(igrid)
+               IF( nbr_template(ib,1) .eq. 1 ) THEN
+                  icount = icount+1
+               ENDIF
+            ENDDO
+            ALLOCATE( nbi_extract(icount), nbj_extract(icount) )
+
+            DO ir = 1, nbr_match
+
+               ! extract values from template array for this ir value
+               icount = 0
+               DO ib = 1, nblen_template(igrid)
+                  IF( nbr_template(ib,1) .eq. ir ) THEN
+                     icount = icount+1
+                     nbi_extract(icount) = nbi_template(ib,1)               
+                     nbj_extract(icount) = nbj_template(ib,1)               
+                  ENDIF
+               ENDDO
+
+               ! work out the mapping for this ir value
+               icount = 1
+               DO ib = 1, nblen(igrid)
+                  IF( nbr(ib,1) .eq. ir ) THEN                  
+                     DO ib1 = 1, nblen(igrid)
+                        IF( nbi(ib1,1) .eq. nbi_extract(icount) .and. &
+                       &    nbj(ib1,1) .eq. nbj_extract(icount)       ) THEN
+                           imap(ib,igrid) = ib1
+                           icount = icount + 1
+                           EXIT
+                        ENDIF                        
+                     ENDDO ! ib1
+                  ENDIF           
+               ENDDO ! ib
+
+            ENDDO ! ir
+            
+            DEALLOCATE( nbi_extract, nbj_extract )
+
+         ELSE 
+
+            icount = 0
+            DO ir = nbr_min, nbr_max
+               DO ib = 1, nblen(igrid)
+                  IF( nbr(ib,1) .eq. ir ) THEN
+                     icount = icount + 1
+                     imap(icount,igrid) = ib
+                  ENDIF           
+               ENDDO
+            ENDDO
+
+         ENDIF
+     
+      ENDDO  ! jpbgrd
+
+!-----------------------------------------------------------------------------
+! 2. Open output file and copy dimensions and attributes across
+!----------------------------------------------------------------------------- 
+
+      iostat = nf90_inquire( ncid_in, ndims, nvars, natts )
+
+! 2.1 Create the output file  
+
+      WRITE(*,*) '>>> Initialising output file.'
+      iostat = nf90_create( TRIM(file_out), nf90_64bit_offset, ncid_out, chunksize=chunksize)
+
+! 2.2 Copy the dimensions into the output file.
+
+      iostat = nf90_inquire( ncid_in, unlimitedDimId = unlimitedDimId )
+      dimlen(:) = 1
+      DO idim = 1, ndims
+         iostat = nf90_inquire_dimension(ncid_in, idim, dimname, dimlen(idim))
+         IF (idim == unlimitedDimId) THEN
+            iostat = nf90_def_dim( ncid_out, dimname, nf90_unlimited, dimid)    
+            idim_time = idim
+         ELSE
+            iostat = nf90_def_dim( ncid_out, dimname, dimlen(idim), dimid)
+            IF( INDEX(dimname,'x') .gt. 0 ) THEN
+               idim_xb = idim
+            ELSE IF( INDEX(dimname,'y') .gt. 0 ) THEN
+               idim_yb = idim
+            ELSE IF( INDEX(dimname,'depth') .gt. 0 .or. INDEX(dimname,'z') .gt. 0 ) THEN
+               idim_depth = idim
+            ELSE
+               WRITE(*,*) 'ERROR: Unrecognised dimension : ',dimname
+               STOP
+            ENDIF            
+         ENDIF
+      END DO
+      
+
+! 2.2 Copy the global attributes into the output file.
+!     Also need to change the file_name attribute and the TimeStamp attribute.
+
+      DO attid = 1, natts
+         iostat = nf90_inq_attname( ncid_in, nf90_global, attid, attname )
+         WRITE(6,*)'>>> Copying attribute '//TRIM(attname)//' into destination file...'
+         iostat = nf90_copy_att( ncid_in, nf90_global, attname, ncid_out, nf90_global )  
+      END DO
+      iostat = nf90_put_att( ncid_out, nf90_global, "file_name", TRIM(file_out))
+      CALL DATE_AND_TIME ( date=date, time=time, zone=zone )
+      timestamp = date(7:8) // "/" // date(5:6) // "/" // date(1:4) // " " // &
+                  time(1:2) // ":" // time(3:4) // ":" // time(5:6) // " " // &
+                  zone  
+      iostat = nf90_put_att( ncid_out, nf90_global, "TimeStamp", timestamp)
+  
+! 2.3 Copy the variable definitions and attributes into the output file.
+
+      DO jv = 1, nvars
+         iostat = nf90_inquire_variable( ncid_in, jv, varname, xtype, ndims_var, dimids, natts )
+         iostat = nf90_def_var( ncid_out, varname, xtype, dimids(1:ndims_var), varid )
+            IF (natts > 0) THEN
+            DO attid = 1, natts
+               iostat = nf90_inq_attname(ncid_in, varid, attid, attname)
+               iostat = nf90_copy_att( ncid_in, varid, attname, ncid_out, varid )   
+            END DO
+         ENDIF
+      END DO
+ 
+! 2.4 End definitions in output file
+
+      iostat = nf90_enddef( ncid_out )    
+
+!-----------------------------------------------------------------------------
+! 3. Read in variables from input file, re-order and write to output file
+!----------------------------------------------------------------------------- 
+
+     IF( ln_coordinates ) THEN
+        ALLOCATE( varin_int(MAXVAL(nblen),1,1,1), varout_int(MAXVAL(nblen),1,1,1) )
+        ALLOCATE( varin_float(MAXVAL(nblen),1,1,1), varout_float(MAXVAL(nblen),1,1,1) )
+        ALLOCATE( varin_dble(MAXVAL(nblen),1,1,1), varout_dble(MAXVAL(nblen),1,1,1) )
+     ELSE
+        SELECT CASE( ndims ) 
+           CASE( 2 )
+              ALLOCATE(  varin_int(dimlen(idim_xb),dimlen(idim_yb),1,1) )
+              ALLOCATE( varout_int(dimlen(idim_xb),dimlen(idim_yb),1,1) )
+              ALLOCATE(  varin_float(dimlen(idim_xb),dimlen(idim_yb),1,1) ) 
+              ALLOCATE( varout_float(dimlen(idim_xb),dimlen(idim_yb),1,1) )
+              ALLOCATE(  varin_dble(dimlen(idim_xb),dimlen(idim_yb),1,1) ) 
+              ALLOCATE( varout_dble(dimlen(idim_xb),dimlen(idim_yb),1,1) )
+           CASE ( 3 )
+              ALLOCATE(  varin_int(dimlen(idim_xb),dimlen(idim_yb),1,dimlen(idim_time)) )
+              ALLOCATE( varout_int(dimlen(idim_xb),dimlen(idim_yb),1,dimlen(idim_time)) )
+              ALLOCATE(  varin_float(dimlen(idim_xb),dimlen(idim_yb),1,dimlen(idim_time)) ) 
+              ALLOCATE( varout_float(dimlen(idim_xb),dimlen(idim_yb),1,dimlen(idim_time)) )
+              ALLOCATE(  varin_dble(dimlen(idim_xb),dimlen(idim_yb),1,dimlen(idim_time)) ) 
+              ALLOCATE( varout_dble(dimlen(idim_xb),dimlen(idim_yb),1,dimlen(idim_time)) )
+           CASE ( 4 )
+              ALLOCATE(  varin_int(dimlen(idim_xb),dimlen(idim_yb),dimlen(idim_depth),dimlen(idim_time)) ) 
+              ALLOCATE( varout_int(dimlen(idim_xb),dimlen(idim_yb),dimlen(idim_depth),dimlen(idim_time)) )
+              ALLOCATE(  varin_float(dimlen(idim_xb),dimlen(idim_yb),dimlen(idim_depth),dimlen(idim_time)) ) 
+              ALLOCATE( varout_float(dimlen(idim_xb),dimlen(idim_yb),dimlen(idim_depth),dimlen(idim_time)) )
+              ALLOCATE(  varin_dble(dimlen(idim_xb),dimlen(idim_yb),dimlen(idim_depth),dimlen(idim_time)) ) 
+              ALLOCATE( varout_dble(dimlen(idim_xb),dimlen(idim_yb),dimlen(idim_depth),dimlen(idim_time)) )
+           CASE DEFAULT
+              WRITE(*,*) 'ERROR : Can only cope with 2, 3 or 4 dimensions in the boundary data files.'
+              WRITE(*,*) '        This file appears to have ',ndims,' dimensions.'
+              STOP
+        END SELECT
+     ENDIF
+
+     DO jv = 1, nvars
+       iostat = nf90_inquire_variable( ncid_in, jv, varname, xtype, ndims_var, dimids )
+       DO idim = 1, ndims_var
+          lenvar(idim) = dimlen(dimids(idim))
+       ENDDO
+
+       IF( ndims_var .eq. 1 ) THEN
+          WRITE(*,*) '>>> Copying coordinate variable ',TRIM(varname)
+       ELSE
+          WRITE(*,*) '>>> Reordering variable ',TRIM(varname)
+       ENDIF
+       ! Error check here
+
+       IF( ln_coordinates ) THEN
+          strlen = len_trim(varname)
+          end_letter = varname(strlen:strlen)
+          jgrid = -1
+          DO igrid = 1,4
+             IF( end_letter .eq. cgrid(igrid) ) jgrid = igrid
+          END DO
+          IF( jgrid .lt. 0 ) THEN
+             WRITE(*,*) 'ERROR : Could not identify grid for variable ',TRIM(varname)
+             WRITE(*,*) ' varname : ',TRIM(varname),'!'
+             WRITE(*,*) ' strlen : ',strlen
+             WRITE(*,*) ' end_letter : ',end_letter
+             WRITE(*,*) ' cgrid(1) : ',cgrid(1)
+             WRITE(*,*) ' cgrid(2) : ',cgrid(2)
+             WRITE(*,*) ' cgrid(3) : ',cgrid(3)
+             WRITE(*,*) ' cgrid(4) : ',cgrid(4)
+             STOP
+          ENDIF
+       ELSE
+          jgrid=1
+       ENDIF
+           
+       SELECT CASE(xtype)
+
+          CASE( NF90_INT ) 
+             SELECT CASE(ndims_var)
+                CASE( 1 )
+                   WRITE(*,*) 'This is a 1D integer.'
+                   ! Assume this is a depth or time coordinate variable and copy across unchanged.
+                   iostat = nf90_get_var( ncid_in, jv, varin_int(1:lenvar(1),1,1,1) )
+                   iostat = nf90_put_var( ncid_out, jv, varout_int(1:lenvar(1),1,1,1) ) 
+                CASE( 2 )
+                   WRITE(*,*) 'This is a 2D integer.'
+                   iostat = nf90_get_var( ncid_in, jv, varin_int(1:lenvar(1),1:1,1,1) )
+                   DO ib = 1,lenvar(1)
+                      varout_int(ib,1,1,1) = varin_int(imap(ib,jgrid),1,1,1)
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_int(1:lenvar(1),1:1,1,1) ) 
+                CASE( 3 )
+                   WRITE(*,*) 'This is a 3D integer.'
+                   ! Assume third dimension is time.
+                   iostat = nf90_get_var( ncid_in, jv, varin_int(1:lenvar(1),1:1,1,1:lenvar(3)) )
+                   DO itime = 1,lenvar(3)
+                      DO ib = 1,lenvar(1)
+                         varout_int(ib,1,1,itime) = varin_int(imap(ib,jgrid),1,1,itime)
+                      END DO
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_int(1:lenvar(1),1:1,1,1:lenvar(3)) ) 
+                CASE( 4 )
+                   WRITE(*,*) 'This is a 4D integer.'
+                   ! Assume third and fourth dimensions are depth and time respectively.
+                   iostat = nf90_get_var( ncid_in, jv, varin_int(1:lenvar(1),1:1,1:lenvar(3),1:lenvar(4)) )
+                   DO itime = 1,lenvar(4)
+                      DO idepth = 1,lenvar(3)
+                         DO ib = 1,lenvar(1)
+                            varout_int(ib,1,idepth,itime) = varin_int(imap(ib,jgrid),1,idepth,itime)
+                         END DO
+                      END DO
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_int(1:lenvar(1),1:1,1:lenvar(3),1:lenvar(4)) ) 
+                CASE DEFAULT
+                   WRITE(*,*) 'ERROR : Variable with ',ndims_var,' dimensions. Case not coded.'
+                   STOP
+             END SELECT
+
+          CASE( NF90_FLOAT ) 
+             SELECT CASE(ndims_var)
+                CASE( 1 )
+                   WRITE(*,*) 'This is a 1D float.'
+                   ! Assume this is a depth or time coordinate variable and copy across unchanged.
+                   iostat = nf90_get_var( ncid_in, jv, varin_float(1:lenvar(1),1,1,1) )
+                   iostat = nf90_put_var( ncid_out, jv, varout_float(1:lenvar(1),1,1,1) ) 
+                CASE( 2 )
+                   WRITE(*,*) 'This is a 2D float.'
+                   iostat = nf90_get_var( ncid_in, jv, varin_float(1:lenvar(1),1:1,1,1) )
+                   DO ib = 1,lenvar(1)
+                      varout_float(ib,1,1,1) = varin_float(imap(ib,jgrid),1,1,1)
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_float(1:lenvar(1),1:1,1,1) ) 
+                CASE( 3 )
+                   WRITE(*,*) 'This is a 3D float.'
+                   ! Assume third dimension is time.
+                   iostat = nf90_get_var( ncid_in, jv, varin_float(1:lenvar(1),1:1,1,1:lenvar(3)) )
+                   DO itime = 1,lenvar(3)
+                      DO ib = 1,lenvar(1)
+                         varout_float(ib,1,1,itime) = varin_float(imap(ib,jgrid),1,1,itime)
+                      END DO
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_float(1:lenvar(1),1:1,1,1:lenvar(3)) ) 
+                CASE( 4 )
+                   WRITE(*,*) 'This is a 4D float.'
+                   ! Assume third and fourth dimensions are depth and time respectively.
+                   iostat = nf90_get_var( ncid_in, jv, varin_float(1:lenvar(1),1:1,1:lenvar(3),1:lenvar(4)) )
+                   DO itime = 1,lenvar(4)
+                      DO idepth = 1,lenvar(3)
+                         DO ib = 1,lenvar(1)
+                            varout_float(ib,1,idepth,itime) = varin_float(imap(ib,jgrid),1,idepth,itime)
+                         END DO
+                      END DO
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_float(1:lenvar(1),1:1,1:lenvar(3),1:lenvar(4)) ) 
+                CASE DEFAULT
+                   WRITE(*,*) 'ERROR : Variable with ',ndims_var,' dimensions. Case not coded.'
+                   STOP
+             END SELECT
+
+          CASE( NF90_DOUBLE ) 
+             SELECT CASE(ndims_var)
+                CASE( 1 )
+                   WRITE(*,*) 'This is a 1D double.'
+                   ! Assume this is a depth or time coordinate variable and copy across unchanged.
+                   iostat = nf90_get_var( ncid_in, jv, varin_dble(1:lenvar(1),1,1,1) )
+                   iostat = nf90_put_var( ncid_out, jv, varout_dble(1:lenvar(1),1,1,1) ) 
+                CASE( 2 )
+                   WRITE(*,*) 'This is a 2D double.'
+                   iostat = nf90_get_var( ncid_in, jv, varin_dble(1:lenvar(1),1:1,1,1) )
+                   DO ib = 1,lenvar(1)
+                      varout_dble(ib,1,1,1) = varin_dble(imap(ib,jgrid),1,1,1)
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_dble(1:lenvar(1),1:1,1,1) ) 
+                CASE( 3 )
+                   WRITE(*,*) 'This is a 3D double.'
+                   ! Assume third dimension is time.
+                   iostat = nf90_get_var( ncid_in, jv, varin_dble(1:lenvar(1),1:1,1,1:lenvar(3)) )
+                   DO itime = 1,lenvar(3)
+                      DO ib = 1,lenvar(1)
+                         varout_dble(ib,1,1,itime) = varin_dble(imap(ib,jgrid),1,1,itime)
+                      END DO
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_dble(1:lenvar(1),1:1,1,1:lenvar(3)) ) 
+                CASE( 4 )
+                   WRITE(*,*) 'This is a 4D double.'
+                   ! Assume third and fourth dimensions are depth and time respectively.
+                   iostat = nf90_get_var( ncid_in, jv, varin_dble(1:lenvar(1),1:1,1:lenvar(3),1:lenvar(4)) )
+                   DO itime = 1,lenvar(4)
+                      DO idepth = 1,lenvar(3)
+                         DO ib = 1,lenvar(1)
+                            varout_dble(ib,1,idepth,itime) = varin_dble(imap(ib,jgrid),1,idepth,itime)
+                         END DO
+                      END DO
+                   END DO
+                   iostat = nf90_put_var( ncid_out, jv, varout_dble(1:lenvar(1),1:1,1:lenvar(3),1:lenvar(4)) ) 
+                CASE DEFAULT
+                   WRITE(*,*) 'ERROR : Variable with ',ndims_var,' dimensions. Case not coded.'
+                   STOP
+             END SELECT
+
+             CASE DEFAULT
+                WRITE(*,*) 'ERROR : Unrecognised data type.'           
+                STOP
+
+       END SELECT
+
+       END DO ! jv
+
+!-----------------------------------------------------------------------------
+! 4. Close input and output files
+!----------------------------------------------------------------------------- 
+
+      iostat = nf90_close( ncid_out )
+      iostat = nf90_close( ncid_in )
+
+
+END PROGRAM bdy_reorder
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_archfile.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_archfile.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_archfile.sh	(revision 7)
@@ -52,5 +52,5 @@
 # ==========
 #
-# $Id: Fcheck_archfile.sh 3207 2011-12-09 14:33:57Z rblod $
+# $Id: Fcheck_archfile.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_config.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_config.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_config.sh	(revision 7)
@@ -58,5 +58,5 @@
 # ==========
 #
-# $Id: Fcheck_config.sh 3198 2011-12-07 14:53:38Z rblod $
+# $Id: Fcheck_config.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_script.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_script.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_script.sh	(revision 7)
@@ -45,5 +45,5 @@
 # ==========
 #
-# $Id: Fcheck_script.sh 2520 2010-12-27 14:43:36Z rblod $
+# $Id: Fcheck_script.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fclean_config.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fclean_config.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fclean_config.sh	(revision 7)
@@ -64,23 +64,27 @@
 #-
  NEW_CONF=${x_n}
- echo "Are you sure that you want to remove this directory ? [y/n] "
- read answer
- answer=`echo $answer | sed 's/^[y].*$/y/'`
- if [  -z "$answer" -o "x$answer" = "xy" ]; then
- 	# testing if configuration exists
- 	if [ "$(cat ${CONFIG_DIR}/cfg.txt | grep "${NEW_CONF} ")"  == "" ] ; then
-		echo "The configuration ${NEW_CONF} does not exist in file cfg.txt"     
-		echo "No removing configuration"
-		echo " "
+ if [ ${#NEW_CONF} -eq 0 ] ; then
+ 	   echo " "
+	   echo "No configuration specified, please use makenemo -n CONFIG clean_config "
+ else
+    echo "Are you sure that you want to remove this directory $NEW_CONF? [y/n] "
+    read answer
+    answer=`echo $answer | sed 's/^[y].*$/y/'`
+    if [  -z "$answer" -o "x$answer" = "xy" ]; then
+ 	   # testing if configuration exists
+ 	   if [ "$(cat ${CONFIG_DIR}/cfg.txt | grep "${NEW_CONF} ")"  == "" ] ; then
+		  echo "The configuration ${NEW_CONF} does not exist in file cfg.txt"     
+		  echo "No removing configuration"
+		  echo " "
         else
-		rm -rf ${CONFIG_DIR}/${NEW_CONF}
-		sed -e "/${NEW_CONF} /d"  ${CONFIG_DIR}/cfg.txt >  ${CONFIG_DIR}/cfg.tmp
-		mv  ${CONFIG_DIR}/cfg.tmp  ${CONFIG_DIR}/cfg.txt
-		echo "${NEW_CONF} configuration REMOVED" 
+		  rm -rf ${CONFIG_DIR}/${NEW_CONF}
+		  sed -e "/${NEW_CONF} /d"  ${CONFIG_DIR}/cfg.txt >  ${CONFIG_DIR}/cfg.tmp
+		  mv  ${CONFIG_DIR}/cfg.tmp  ${CONFIG_DIR}/cfg.txt
+		  echo "${NEW_CONF} configuration REMOVED" 
         fi
- else
-	echo " "
-	echo "nothing to remove"
- fi
-
+    else
+	   echo " "
+	   echo "nothing to remove"
+    fi
+ fi 
  unset -v answer
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fclean_var.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fclean_var.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fclean_var.sh	(revision 7)
@@ -45,5 +45,5 @@
 # ==========
 #
-# $Id: Fclean_var.sh 2384 2010-11-15 03:20:07Z rblod $
+# $Id: Fclean_var.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fcopy_dir.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fcopy_dir.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fcopy_dir.sh	(revision 7)
@@ -46,5 +46,5 @@
 # ==========
 #
-# $Id: Fcopy_dir.sh 3198 2011-12-07 14:53:38Z rblod $
+# $Id: Fcopy_dir.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fgo_to_TOOLS.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fgo_to_TOOLS.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fgo_to_TOOLS.sh	(revision 7)
@@ -45,5 +45,5 @@
 # ==========
 #
-# $Id: Fgo_to_TOOLS.sh 2263 2010-10-14 10:13:18Z rblod $
+# $Id: Fgo_to_TOOLS.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Flist_archfile.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Flist_archfile.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Flist_archfile.sh	(revision 7)
@@ -48,5 +48,5 @@
 # ==========
 #
-# $Id: Flist_archfile.sh 3198 2011-12-07 14:53:38Z rblod $
+# $Id: Flist_archfile.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
@@ -82,6 +82,5 @@
       done
    done
-else
-   if [ -d ${MAIN_DIR}/ARCH/${1} ]; then
+elif [ -d ${MAIN_DIR}/ARCH/${1} ]; then
       echo "Available compilers at $1 :"
       for file in  $(ls ${MAIN_DIR}/ARCH/$1 | grep fcm )
@@ -92,4 +91,10 @@
       printf "%-20s %s %-s\n" "${zvar1%.fcm}" : "${zvar2#\#}"
       done
-   fi
+else
+      echo "Available consortium member sub-directories :"
+      for dir  in  $(ls ${MAIN_DIR}/ARCH | grep -v fcm )
+      do
+         echo ${dir}
+      done
+      echo "use \"makenemo -h all\" or \"makenemo -m help\" to see compilers available in member's sub-directories"
 fi
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_WORK.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_WORK.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_WORK.sh	(revision 7)
@@ -57,5 +57,5 @@
 # ==========
 #
-# $Id: Fmake_WORK.sh 3198 2011-12-07 14:53:38Z rblod $
+# $Id: Fmake_WORK.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_bld.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_bld.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_bld.sh	(revision 7)
@@ -51,5 +51,5 @@
 # ==========
 #
-# $Id: Fmake_bld.sh 2520 2010-12-27 14:43:36Z rblod $
+# $Id: Fmake_bld.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_config.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_config.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fmake_config.sh	(revision 7)
@@ -50,5 +50,5 @@
 # ==========
 #
-# $Id: Fmake_config.sh 2520 2010-12-27 14:43:36Z rblod $
+# $Id: Fmake_config.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fprep_agrif.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fprep_agrif.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fprep_agrif.sh	(revision 7)
@@ -47,5 +47,5 @@
 # ==========
 #
-# $Id: Fprep_agrif.sh 2520 2010-12-27 14:43:36Z rblod $
+# $Id: Fprep_agrif.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/COMPILE/Fread_dir.sh
===================================================================
--- /trunk/NEMOGCM/TOOLS/COMPILE/Fread_dir.sh	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/COMPILE/Fread_dir.sh	(revision 7)
@@ -45,5 +45,5 @@
 # ==========
 #
-# $Id: Fread_dir.sh 2542 2011-01-10 13:18:31Z rblod $
+# $Id: Fread_dir.sh 3294 2012-01-28 16:44:18Z rblod $
 #
 #
Index: /trunk/NEMOGCM/TOOLS/maketools
===================================================================
--- /trunk/NEMOGCM/TOOLS/maketools	(revision 6)
+++ /trunk/NEMOGCM/TOOLS/maketools	(revision 7)
@@ -64,5 +64,5 @@
 # ==========
 #
-# $Id: maketools 3213 2011-12-12 12:43:24Z rblod $
+# $Id: maketools 3294 2012-01-28 16:44:18Z rblod $
 #
 #
