diff --git a/Geo/GModelIO_Geo.cpp b/Geo/GModelIO_Geo.cpp
index 69454a6cfc9c9ebbe5e34982113bdfa3d77ede52..77a3860e0c0340f8f46721b29247ce058e95f884 100644
--- a/Geo/GModelIO_Geo.cpp
+++ b/Geo/GModelIO_Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: GModelIO_Geo.cpp,v 1.4 2006-12-16 01:25:58 geuzaine Exp $
+// $Id: GModelIO_Geo.cpp,v 1.5 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -245,19 +245,17 @@ class writeGFaceGEO {
       return;
     
     int NUMLOOP = s->Num + 1000000;
-    if(s->Typ != MSH_SURF_NURBS) {
-      if(List_Nbr(s->Generatrices)){
-	fprintf(geo, "Line Loop (%d) = ", NUMLOOP);
-	for(int i = 0; i < List_Nbr(s->Generatrices); i++) {
-	  Curve *c;
-	  List_Read(s->Generatrices, i, &c);
-	  if(i)
-	    fprintf(geo, ", %d", c->Num);
-	  else
-	    fprintf(geo, "{%d", c->Num);
-	}
-	fprintf(geo, "};\n");
+    if(List_Nbr(s->Generatrices)){
+      fprintf(geo, "Line Loop (%d) = ", NUMLOOP);
+      for(int i = 0; i < List_Nbr(s->Generatrices); i++) {
+	Curve *c;
+	List_Read(s->Generatrices, i, &c);
+	if(i)
+	  fprintf(geo, ", %d", c->Num);
+	else
+	  fprintf(geo, "{%d", c->Num);
       }
+      fprintf(geo, "};\n");
     }
     
     switch (s->Typ) {
@@ -268,47 +266,6 @@ class writeGFaceGEO {
     case MSH_SURF_PLAN:
       fprintf(geo, "Plane Surface (%d) = {%d};\n", s->Num, NUMLOOP);
       break;
-    case MSH_SURF_TRIMMED:
-      fprintf(geo, "Trimmed Surface (%d) = %d {%d};\n", s->Num,
-	      s->Support->Num, NUMLOOP);
-      break;
-    case MSH_SURF_NURBS:
-      fprintf(geo, "Nurbs Surface (%d) = {\n", s->Num);
-      for(int i = 0; i < s->Nv; i++) {
-	fprintf(geo, "  {");
-	for(int j = 0; j < s->Nu; j++) {
-	  Vertex *v;
-	  List_Read(s->Control_Points, j + s->Nu * i, &v);
-	  if(!j)
-	    fprintf(geo, "%d", v->Num);
-	  else
-	    fprintf(geo, ", %d", v->Num);
-	}
-	if(i != s->Nv - 1)
-	  fprintf(geo, "},\n");
-	else
-	  fprintf(geo, "}}\n");
-      }
-      fprintf(geo, "  Knots\n  {");
-      for(int j = 0; j < s->Nu + s->OrderU + 1; j++) {
-	if(!j)
-	  fprintf(geo, "%.16g", s->ku[j]);
-	else
-	  fprintf(geo, ", %.16g", s->ku[j]);
-	if(j % 5 == 4 && j != s->Nu + s->OrderU)
-	  fprintf(geo, "\n  ");
-      }
-      fprintf(geo, "}\n  {");
-      for(int j = 0; j < s->Nv + s->OrderV + 1; j++) {
-	if(!j)
-	  fprintf(geo, "%.16g", s->kv[j]);
-	else
-	  fprintf(geo, ", %.16g", s->kv[j]);
-	if(j % 5 == 4 && j != s->Nv + s->OrderV)
-	  fprintf(geo, "\n  ");
-      }
-      fprintf(geo, "}\n  Order %d %d;\n", s->OrderU, s->OrderV);
-      break;
     }
   }
 };
diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index 6202a71995ea8e2d23fa111269830946a85d21a2..a63e52ae1f1a780f8b18da9720d59f8c51ea9421 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1,4 +1,4 @@
-// $Id: Geo.cpp,v 1.68 2006-12-24 13:37:20 remacle Exp $
+// $Id: Geo.cpp,v 1.69 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -61,108 +61,76 @@ void Mesh::free_all()
 
 int compareVertex(const void *a, const void *b)
 {
-  int i, j;
-  Vertex **q, **w;
-
-  q = (Vertex **) a;
-  w = (Vertex **) b;
-  i = abs((*q)->Num);
-  j = abs((*w)->Num);
+  Vertex **q = (Vertex **) a;
+  Vertex **w = (Vertex **) b;
+  int i = abs((*q)->Num);
+  int j = abs((*w)->Num);
   return (i - j);
 }
 
 int comparePosition(const void *a, const void *b)
 {
-  int i, j;
-  Vertex **q, **w;
-  // TOLERANCE ! WARNING WARNING
+  // Warning: tolerance! (before 1.61, it was set to 1.e-10 * CTX.lc)
   double eps = 1.e-6 * CTX.lc; 
-  // the above tol was changed in 1.61 (before 1.61, it was set to
-  // double eps = 1.e-10 * CTX.lc;
 
-  q = (Vertex **) a;
-  w = (Vertex **) b;
-  i = ((*q)->Num);
-  j = ((*w)->Num);
+  Vertex **q = (Vertex **) a;
+  Vertex **w = (Vertex **) b;
 
   if((*q)->Pos.X - (*w)->Pos.X > eps)
-    return (1);
+    return 1;
   if((*q)->Pos.X - (*w)->Pos.X < -eps)
-    return (-1);
+    return -1;
   if((*q)->Pos.Y - (*w)->Pos.Y > eps)
-    return (1);
+    return 1;
   if((*q)->Pos.Y - (*w)->Pos.Y < -eps)
-    return (-1);
+    return -1;
   if((*q)->Pos.Z - (*w)->Pos.Z > eps)
-    return (1);
+    return 1;
   if((*q)->Pos.Z - (*w)->Pos.Z < -eps)
-    return (-1);
-
-  if(i != j) {
-    /*
-     *w = *q;
-     printf("Les points %d et %d sont a la meme position\n",i,j);
-     printf("%12.5E %12.5E %12.5E\n",(*w)->Pos.X,(*w)->Pos.Y,(*w)->Pos.Z);
-     printf("%12.5E %12.5E %12.5E\n",(*q)->Pos.X,(*q)->Pos.Y,(*q)->Pos.Z);
-     */
-  }
+    return -1;
   return 0;
-
 }
 
 int compareSurfaceLoop(const void *a, const void *b)
 {
-  SurfaceLoop **q, **w;
-
-  q = (SurfaceLoop **) a;
-  w = (SurfaceLoop **) b;
+  SurfaceLoop **q = (SurfaceLoop **) a;
+  SurfaceLoop **w = (SurfaceLoop **) b;
   return ((*q)->Num - (*w)->Num);
 }
 
 int compareEdgeLoop(const void *a, const void *b)
 {
-  EdgeLoop **q, **w;
-
-  q = (EdgeLoop **) a;
-  w = (EdgeLoop **) b;
+  EdgeLoop **q = (EdgeLoop **) a;
+  EdgeLoop **w = (EdgeLoop **) b;
   return ((*q)->Num - (*w)->Num);
 }
 
 int compareCurve(const void *a, const void *b)
 {
-  Curve **q, **w;
-
-  q = (Curve **) a;
-  w = (Curve **) b;
+  Curve **q = (Curve **) a;
+  Curve **w = (Curve **) b;
   return ((*q)->Num - (*w)->Num);
 }
 
 int compareSurface(const void *a, const void *b)
 {
-  Surface **q, **w;
-
-  q = (Surface **) a;
-  w = (Surface **) b;
+  Surface **q = (Surface **) a;
+  Surface **w = (Surface **) b;
   return ((*q)->Num - (*w)->Num);
 }
 
 int compareVolume(const void *a, const void *b)
 {
-  Volume **q, **w;
-
-  q = (Volume **) a;
-  w = (Volume **) b;
+  Volume **q = (Volume **) a;
+  Volume **w = (Volume **) b;
   return ((*q)->Num - (*w)->Num);
 }
 
 int comparePhysicalGroup(const void *a, const void *b)
 {
-  PhysicalGroup *q, *w;
-  int cmp;
-
-  q = *(PhysicalGroup **) a;
-  w = *(PhysicalGroup **) b;
-  cmp = q->Typ - w->Typ;
+  PhysicalGroup *q = *(PhysicalGroup **) a;
+  PhysicalGroup *w = *(PhysicalGroup **) b;
+  int cmp = q->Typ - w->Typ;
 
   if(cmp)
     return cmp;
@@ -175,9 +143,7 @@ int comparePhysicalGroup(const void *a, const void *b)
 Vertex *Create_Vertex(int Num, double X, double Y, double Z, double lc,
                       double u)
 {
-  Vertex *pV;
-
-  pV = new Vertex(X, Y, Z, lc);
+  Vertex *pV = new Vertex(X, Y, Z, lc);
   pV->w = 1.0;
   pV->Num = Num;
   THEM->MaxPointNum = IMAX(THEM->MaxPointNum, Num);
@@ -268,6 +234,13 @@ void Free_SurfaceLoop(void *a, void *b)
   }
 }
 
+static void direction(Vertex * v1, Vertex * v2, double d[3])
+{
+  d[0] = v2->Pos.X - v1->Pos.X;
+  d[1] = v2->Pos.Y - v1->Pos.Y;
+  d[2] = v2->Pos.Z - v1->Pos.Z;
+}
+
 void End_Curve(Curve * c)
 {
   double R2, mat[3][3], R, A3, A1, A4;
@@ -377,11 +350,15 @@ void End_Curve(Curve * c)
     R = sqrt(v0.Pos.X * v0.Pos.X + v0.Pos.Y * v0.Pos.Y);
     R2 = sqrt(v2.Pos.X * v2.Pos.X + v2.Pos.Y * v2.Pos.Y);
 
-    if(!R || !R2)       // check radius
+    if(!R || !R2){
+      // check radius
       Msg(GERROR, "Zero radius in Circle/Ellipse %d", c->Num);
-    else if(!v[3] && fabs((R - R2) / (R + R2)) > 0.1)   // check cocircular pts (allow 10% error)
+    }
+    else if(!v[3] && fabs((R - R2) / (R + R2)) > 0.1){
+      // check cocircular pts (allow 10% error)
       Msg(GERROR, "Control points of Circle %d are not cocircular %g %g",
           c->Num, R, R2);
+    }
 
     // A1 = angle first pt
     // A3 = angle last pt
@@ -434,9 +411,6 @@ void End_Curve(Curve * c)
     if(A1 >= A3)
       A3 += 2 * Pi;
 
-    //printf("f1=%g f2=%g a1=%g a3=%g a4=%g\n", 
-    //     f1, f2, A1*180./M_PI, A3*180./Pi, A4*180./Pi);
-
     Curve->Circle.t1 = A1;
     Curve->Circle.t2 = A3;
     Curve->Circle.incl = A4;
@@ -455,47 +429,14 @@ void End_Curve(Curve * c)
     }
 
   }
-
-  if(c->cp){
-    Free(c->cp);
-    c->cp = NULL;
-  }
-
-  if(List_Nbr(c->Control_Points)){
-    c->cp = (float *)Malloc(4 * List_Nbr(c->Control_Points) * sizeof(float));
-    for(i = 0; i < List_Nbr(c->Control_Points); i++) {
-      List_Read(c->Control_Points, i, &v[0]);
-      c->cp[4 * i] = v[0]->Pos.X;
-      c->cp[4 * i + 1] = v[0]->Pos.Y;
-      c->cp[4 * i + 2] = v[0]->Pos.Z;
-      c->cp[4 * i + 3] = v[0]->w;
-    }
-  }
 }
 
 void End_Surface(Surface * s, int reset_orientations)
 {
-  int i;
-  Vertex *v;
-  
   if(reset_orientations) 
     List_Reset(s->Orientations);
-
-  if(!s->Control_Points || !List_Nbr(s->Control_Points))
-    return;
-
-  s->cp = (float *)Malloc(4 * List_Nbr(s->Control_Points) * sizeof(float));
-  for(i = 0; i < List_Nbr(s->Control_Points); i++) {
-    List_Read(s->Control_Points, i, &v);
-    s->cp[4 * i] = v->Pos.X;
-    s->cp[4 * i + 1] = v->Pos.Y;
-    s->cp[4 * i + 2] = v->Pos.Z;
-    s->cp[4 * i + 3] = v->w;
-  }
-
 }
 
-
 Curve *Create_Curve(int Num, int Typ, int Order, List_T * Liste,
                     List_T * Knots, int p1, int p2, double u1, double u2)
 {
@@ -515,7 +456,6 @@ Curve *Create_Curve(int Num, int Typ, int Order, List_T * Liste,
   Curve *pC = (Curve *) Malloc(sizeof(Curve));
   pC->Color.type = 0;
   pC->Visible = 1;
-  pC->cp = NULL;
   pC->Extrude = NULL;
   pC->Typ = Typ;
   pC->Num = Num;
@@ -618,7 +558,6 @@ void Free_Curve(void *a, void *b)
   if(pC) {
     Free(pC->k);
     List_Delete(pC->Control_Points);
-    Free(pC->cp);
     Free(pC);
     pC = NULL;
   }
@@ -641,7 +580,6 @@ Surface *Create_Surface(int Num, int Typ)
   pS->TrsfPoints = List_Create(4, 4, sizeof(Vertex *));
   pS->Contours = List_Create(1, 1, sizeof(List_T *));
   pS->Orientations = List_Create(20, 2, sizeof(Vertex));
-  pS->Support = pS;
   pS->Control_Points = List_Create(1, 10, sizeof(Vertex *));
   pS->Generatrices = NULL;
   pS->EmbeddedPoints = NULL;
@@ -650,213 +588,6 @@ Surface *Create_Surface(int Num, int Typ)
   return (pS);
 }
 
-void CreateNurbsSurfaceSupport(int Num, int Order1, int Order2,
-                               List_T * List, List_T * ku, List_T * kv)
-{
-  // This routine has been heavily modified to fit the new interfaces,
-  // but has not been tested since then. It's probably full of bugs
-  // now.
-  List_T *ListOfDouble_L;
-  List_T *ListCP = List_Create(2, 2, sizeof(int));
-
-  for(int j = 0; j < List_Nbr(List); j++) {
-    List_Read(List, j, &ListOfDouble_L);
-    for(int i = 0; i < List_Nbr(ListOfDouble_L); i++) {
-      double d;
-      List_Read(ListOfDouble_L, i, &d);
-      int N = (int)d;
-      List_Add(ListCP, &N);
-    }
-  }
-  List_Read(List, 0, &ListOfDouble_L);
-  int Nu = List_Nbr(List);
-  int Nv = List_Nbr(ListOfDouble_L);
-
-  Surface *s = Create_Surface(Num, MSH_SURF_NURBS);
-  s->Support = NULL;
-  s->Control_Points = List_Create(4, 1, sizeof(Vertex *));
-  s->OrderU = Order1;
-  s->OrderV = Order2;
-  s->Nu = Nu;
-  s->Nv = Nv;
-  for(int i = 0; i < List_Nbr(ListCP); i++) {
-    int j;
-    List_Read(ListCP, i, &j);
-    Vertex *v = FindPoint(j);
-    if(v){
-      List_Add(s->Control_Points, &v);
-    }
-    else{
-      Msg(GERROR, "Unknown control point %d in nurbs surface", j);
-    }
-  }
-
-  s->ku = (float *)malloc(List_Nbr(ku) * sizeof(float));
-  s->kv = (float *)malloc(List_Nbr(kv) * sizeof(float));
-
-  double kumin = 0., kumax = 1.;
-  double kvmin = 0., kvmax = 1.;
-
-  for(int i = 0; i < List_Nbr(ku); i++) {
-    double d;
-    List_Read(ku, i, &d);
-    float f = (float)((d - kumin) / (kumax - kumin));
-    s->ku[i] = f;
-  }
-  for(int i = 0; i < List_Nbr(kv); i++) {
-    double d;
-    List_Read(kv, i, &d);
-    float f = (float)((d - kvmin) / (kvmax - kvmin));
-    s->kv[i] = f;
-  }
-
-  List_Delete(ListCP);
-
-  End_Surface(s);
-  Tree_Add(THEM->Surfaces, &s);
-}
-
-void CreateNurbsSurface(int Num, int Order1, int Order2, List_T * List,
-                        List_T * ku, List_T * kv)
-{
-  // This routine has been heavily modified to fit the new interfaces,
-  // but has not been tested since then. It's probably full of bugs
-  // now.
-
-  List_T *ListOfDouble_L, *Listint, *ListCP;
-  int Loop[4];
-
-  ListCP = List_Create(2, 2, sizeof(int));
-
-  double kumin, kumax;
-  List_Read(ku, 0, &kumin);
-  List_Read(ku, List_Nbr(ku) - 1, &kumax);
-  double kvmin, kvmax;
-  List_Read(kv, 0, &kvmin);
-  List_Read(kv, List_Nbr(kv) - 1, &kvmax);
-  for(int j = 0; j < List_Nbr(List); j++) {
-    List_Read(List, j, &ListOfDouble_L);
-    for(int i = 0; i < List_Nbr(ListOfDouble_L); i++) {
-      double d;
-      List_Read(ListOfDouble_L, i, &d);
-      int N = (int)d;
-      List_Add(ListCP, &N);
-    }
-  }
-
-  // 1st and 3rd gen
-  List_Read(List, 0, &ListOfDouble_L);
-  Listint = ListOfDouble2ListOfInt(ListOfDouble_L);
-  if(recognize_seg(MSH_SEGM_NURBS, Listint, &Loop[0])) {
-  }
-  else {
-    Loop[0] = NEWREG();
-    Curve *c = Create_Curve(Loop[0], MSH_SEGM_NURBS, Order1, Listint, NULL, 
-			    -1, -1, kumin, kumax);
-    Tree_Add(THEM->Curves, &c);
-    CreateReversedCurve(c);
-    c->k = (float *)malloc(4 * List_Nbr(ku) * sizeof(float));
-    for(int i = 0; i < List_Nbr(ku); i++) {
-      double d;
-      List_Read(ku, i, &d);
-      c->k[i] = (float)d /*((d-kumin)/(kumax-kumin)) */ ;
-    }
-  }
-  List_Delete(Listint);
-
-  List_Read(List, List_Nbr(List) - 1, &ListOfDouble_L);
-  Listint = ListOfDouble2ListOfInt(ListOfDouble_L);
-  if(recognize_seg(MSH_SEGM_NURBS, Listint, &Loop[2])) {
-  }
-  else {
-    Loop[2] = NEWREG();
-    Curve *c = Create_Curve(Loop[2], MSH_SEGM_NURBS, Order1, Listint, NULL, 
-			    -1, -1, kumin, kumax);
-    Tree_Add(THEM->Curves, &c);
-    CreateReversedCurve(c);
-    c->k = (float *)malloc(4 * List_Nbr(ku) * sizeof(float));
-    for(int i = 0; i < List_Nbr(ku); i++) {
-      double d;
-      List_Read(ku, i, &d);
-      c->k[i] = (float)d /*((d-kumin)/(kumax-kumin)) */ ;
-    }
-  }
-  List_Delete(Listint);
-
-  // 2nd and 4th gen
-  List_T *List1 = List_Create(List_Nbr(List), 1, sizeof(double));
-  List_T *List2 = List_Create(List_Nbr(List), 1, sizeof(double));
-  for(int i = 0; i < List_Nbr(List); i++) {
-    List_Read(List, i, &ListOfDouble_L);
-    List_Add(List1, List_Pointer(ListOfDouble_L, 0));
-    List_Add(List2, List_Pointer(ListOfDouble_L, List_Nbr(ListOfDouble_L) - 1));
-  }
-
-  Listint = ListOfDouble2ListOfInt(List1);
-  if(recognize_seg(MSH_SEGM_NURBS, Listint, &Loop[1])) {
-  }
-  else {
-    Loop[1] = NEWREG();
-    Curve *c = Create_Curve(Loop[1], MSH_SEGM_NURBS, Order2, Listint, NULL, 
-			    -1, -1, kumin, kumax);
-    Tree_Add(THEM->Curves, &c);
-    CreateReversedCurve(c);
-    c->k = (float *)malloc(4 * List_Nbr(kv) * sizeof(float));
-    for(int i = 0; i < List_Nbr(kv); i++) {
-      double d;
-      List_Read(kv, i, &d);
-      c->k[i] = (float)d /*((d-kvmin)/(kvmax-kvmin)) */ ;
-    }
-  }
-  List_Delete(Listint);
-
-  Listint = ListOfDouble2ListOfInt(List2);
-  if(recognize_seg(MSH_SEGM_NURBS, Listint, &Loop[3])) {
-  }
-  else {
-    Loop[3] = NEWREG();
-    Curve *c = Create_Curve(Loop[3], MSH_SEGM_NURBS, Order2, Listint, NULL,
-			    -1, -1, kumin, kumax);
-    Tree_Add(THEM->Curves, &c);
-    CreateReversedCurve(c);
-    c->k = (float *)malloc(4 * List_Nbr(kv) * sizeof(float));
-    for(int i = 0; i < List_Nbr(kv); i++) {
-      double d;
-      List_Read(kv, i, &d);
-      c->k[i] = (float)d /*((d-kvmin)/(kvmax-kvmin)) */ ;
-    }
-  }
-  List_Delete(Listint);
-  List_Delete(List1);
-  List_Delete(List2);
-
-  Listint = List_Create(10, 10, sizeof(int));
-  int l0 = -Loop[0];
-  List_Add(Listint, &l0);
-  List_Add(Listint, &Loop[1]);
-  List_Add(Listint, &Loop[2]);
-  int l3 = -Loop[3];
-  List_Add(Listint, &l3);
-
-  int topnew = NEWREG();
-  CreateNurbsSurfaceSupport(topnew, Order1, Order2, List, ku, kv);
-
-  int il = NEWREG();
-  SurfaceLoop *l = Create_SurfaceLoop(il, Listint);
-  Tree_Add(THEM->SurfaceLoops, &l);
-  List_Reset(Listint);
-  List_Add(Listint, &il);
-
-  Surface *s = Create_Surface(NEWREG(), MSH_SURF_TRIMMED);
-  setSurfaceGeneratrices(s, Listint);
-  s->Support = s;
-  End_Surface(s);
-  Tree_Add(THEM->Surfaces, &s);
-
-  List_Delete(Listint);
-  List_Delete(ListCP);
-}
-
 void Free_Surface(void *a, void *b)
 {
   Surface *pS = *(Surface **) a;
@@ -892,11 +623,6 @@ Volume *Create_Volume(int Num, int Typ)
 }
 
 void Free_Volume(void *a, void *b)
-{
-  Free_Volume_But_Not_Elements(a, b);
-}
-
-void Free_Volume_But_Not_Elements(void *a, void *b)
 {
   Volume *pV = *(Volume **) a;
   if(pV) {
@@ -972,9 +698,6 @@ int NEWREG(void)
           + 1);
 }
 
-
-
-
 int compare2Lists(List_T * List1, List_T * List2,
                   int (*fcmp) (const void *a, const void *b))
 {
@@ -1175,8 +898,6 @@ void CopySurface(Surface * s, Surface * ss)
   //ss->RecombineAngle = s->RecombineAngle;
   for(i = 0; i < 4; i++)
     ss->ipar[i] = s->ipar[i];
-  ss->Nu = s->Nu;
-  ss->Nv = s->Nv;
   ss->a = s->a;
   ss->b = s->b;
   ss->c = s->c;
@@ -1255,7 +976,6 @@ void CopyShape(int Type, int Num, int *New)
     newc = DuplicateCurve(c);
     *New = newc->Num;
     break;
-  case MSH_SURF_NURBS:
   case MSH_SURF_TRIC:
   case MSH_SURF_REGL:
   case MSH_SURF_PLAN:
@@ -1371,7 +1091,6 @@ void DeleteShape(int Type, int Num)
     DeleteCurve(Num);
     DeleteCurve(-Num);
     break;
-  case MSH_SURF_NURBS:
   case MSH_SURF_TRIC:
   case MSH_SURF_REGL:
   case MSH_SURF_PLAN:
@@ -1431,7 +1150,6 @@ void ColorShape(int Type, int Num, unsigned int Color)
   case MSH_SEGM_DISCRETE:
     ColorCurve(Num, Color);
     break;
-  case MSH_SURF_NURBS:
   case MSH_SURF_TRIC:
   case MSH_SURF_REGL:
   case MSH_SURF_PLAN:
@@ -1477,7 +1195,6 @@ void VisibilityShape(int Type, int Num, int Mode)
     else
       Msg(WARNING, "Unknown line %d (use '*' to hide/show all lines)", Num);
     break;
-  case MSH_SURF_NURBS:
   case MSH_SURF_TRIC:
   case MSH_SURF_REGL:
   case MSH_SURF_PLAN:
@@ -1547,13 +1264,12 @@ Curve *CreateReversedCurve(Curve * c)
   }
 
   if(c->Typ == MSH_SEGM_NURBS && c->k) {
-    newc->k =
-      (float *)malloc((c->degre + List_Nbr(c->Control_Points) + 1) *
-                      sizeof(float));
+    newc->k = (float *)malloc((c->degre + List_Nbr(c->Control_Points) + 1) *
+			      sizeof(float));
     for(i = 0; i < c->degre + List_Nbr(c->Control_Points) + 1; i++)
       newc->k[c->degre + List_Nbr(c->Control_Points) - i] = c->k[i];
   }
-
+  
   if(c->Typ == MSH_SEGM_CIRC)
     newc->Typ = MSH_SEGM_CIRC_INV;
   if(c->Typ == MSH_SEGM_CIRC_INV)
@@ -1563,7 +1279,6 @@ Curve *CreateReversedCurve(Curve * c)
   if(c->Typ == MSH_SEGM_ELLI_INV)
     newc->Typ = MSH_SEGM_ELLI;
 
-
   newc->beg = c->end;
   newc->end = c->beg;
   newc->Method = c->Method;
@@ -1572,9 +1287,7 @@ Curve *CreateReversedCurve(Curve * c)
   newc->uend = 1. - c->ubeg;
   End_Curve(newc);
 
-
   Curve **pc;
-
   if((pc = (Curve **) Tree_PQuery(THEM->Curves, &newc))) {
     Free_Curve(&newc, NULL);
     return *pc;
@@ -1913,7 +1626,7 @@ void ApplyTransformationToSurface(double matrix[4][4], Surface * s)
 
   for(i = 0; i < List_Nbr(s->Generatrices); i++) {
     List_Read(s->Generatrices, i, &c);
-    // FIXME: this fixes benchmarks/bug/transfo_neg_curves.geo, but is
+    // FIXME: this fixes benchmarks/2d/transfo_neg_curves.geo, but is
     // it the correct fix?
     //ApplyTransformationToCurve(matrix, c);
     Curve *cc = FindCurve(abs(c->Num));
@@ -1962,7 +1675,6 @@ void ApplicationOnShapes(double matrix[4][4], List_T * ListShapes)
       else
         Msg(GERROR, "Unknown curve %d", O.Num);
       break;
-    case MSH_SURF_NURBS:
     case MSH_SURF_REGL:
     case MSH_SURF_TRIC:
     case MSH_SURF_PLAN:
@@ -2648,7 +2360,6 @@ void ExtrudeShapes(int type, List_T *in,
 	List_Add(out, &TheShape);
       }
       break;
-    case MSH_SURF_NURBS:
     case MSH_SURF_REGL:
     case MSH_SURF_TRIC:
     case MSH_SURF_PLAN:
@@ -3003,7 +2714,7 @@ void ReplaceAllDuplicates()
 }
 
 
-// Projection of point on curve or surface
+// Projection of a point on a curve or a surface
 
 static Curve *CURVE;
 static Surface *SURFACE;
@@ -3037,43 +2748,14 @@ static void projectPS(int N, double x[], double res[])
 
 static double projectPC(double u)
 {
-  //x[1] = u x[2] = v
   if(u < CURVE->ubeg)
     u = CURVE->ubeg;
   if(u < CURVE->ubeg)
     u = CURVE->ubeg;
-  Vertex c;
-  c = InterpolateCurve(CURVE, u, 0);
-  return sqrt(DSQR(c.Pos.X - VERTEX->Pos.X) +
-              DSQR(c.Pos.Y - VERTEX->Pos.Y) + DSQR(c.Pos.Z - VERTEX->Pos.Z));
-}
-
-static int UFIXED = 0;
-static double FIX;
-static double projectPCS(double u)
-{
-  //x[1] = u x[2] = v
-  double tmin, tmax;
-  if(UFIXED) {
-    tmin = SURFACE->kv[0];
-    tmax = SURFACE->kv[SURFACE->Nv + SURFACE->OrderV];
-  }
-  else {
-    tmin = SURFACE->ku[0];
-    tmax = SURFACE->ku[SURFACE->Nu + SURFACE->OrderU];
-  }
-
-  if(u < tmin)
-    u = tmin;
-  if(u > tmax)
-    u = tmax;
-  Vertex c;
-  if(UFIXED)
-    c = InterpolateSurface(SURFACE, FIX, u, 0, 0);
-  else
-    c = InterpolateSurface(SURFACE, u, FIX, 0, 0);
+  Vertex c = InterpolateCurve(CURVE, u, 0);
   return sqrt(DSQR(c.Pos.X - VERTEX->Pos.X) +
-              DSQR(c.Pos.Y - VERTEX->Pos.Y) + DSQR(c.Pos.Z - VERTEX->Pos.Z));
+              DSQR(c.Pos.Y - VERTEX->Pos.Y) + 
+	      DSQR(c.Pos.Z - VERTEX->Pos.Z));
 }
 
 bool ProjectPointOnCurve(Curve * c, Vertex * v, Vertex * RES, Vertex * DER)
@@ -3097,81 +2779,6 @@ bool ProjectPointOnCurve(Curve * c, Vertex * v, Vertex * RES, Vertex * DER)
   return true;
 }
 
-bool search_in_boundary(Surface * s, Vertex * p, double t, int Fixu,
-                        double *uu, double *vv)
-{
-  double l, umin = 0., vmin = 0., lmin = 1.e200;
-  int i, N;
-  Vertex vr;
-  double tmin, tmax, u, v;
-
-  if(Fixu) {
-    tmin = s->kv[0];
-    tmax = s->kv[s->Nv + s->OrderV];
-    N = 3 * s->Nu;
-  }
-  else {
-    tmin = s->ku[0];
-    tmax = s->ku[s->Nu + s->OrderU];
-    N = 3 * s->Nv;
-  }
-  for(i = 0; i < N; i++) {
-    if(Fixu) {
-      u = t;
-      v = tmin + (tmax - tmin) * (double)(i) / (double)(N - 1);
-    }
-    else {
-      v = t;
-      u = tmin + (tmax - tmin) * (double)(i) / (double)(N - 1);
-    }
-    vr = InterpolateSurface(SURFACE, u, v, 0, 0);
-    l = sqrt(DSQR(vr.Pos.X - p->Pos.X) +
-             DSQR(vr.Pos.Y - p->Pos.Y) + DSQR(vr.Pos.Z - p->Pos.Z));
-    if(l < lmin) {
-      lmin = l;
-      umin = u;
-      vmin = v;
-    }
-  }
-
-  FIX = t;
-  UFIXED = Fixu;
-  double xm;
-  if(Fixu)
-    xm = vmin;
-  else
-    xm = umin;
-  if(lmin > 1.e-3)
-    min1d(projectPCS, &xm);
-  if(Fixu) {
-    *uu = t;
-    *vv = xm;
-  }
-  else {
-    *vv = t;
-    *uu = xm;
-  }
-  vr = InterpolateSurface(SURFACE, *uu, *vv, 0, 0);
-  l = sqrt(DSQR(vr.Pos.X - p->Pos.X) +
-           DSQR(vr.Pos.Y - p->Pos.Y) + DSQR(vr.Pos.Z - p->Pos.Z));
-  if(l < 1.e-3)
-    return true;
-  return false;
-}
-
-bool try_a_value(Surface * s, Vertex * p, double u, double v, double *uu,
-                 double *vv)
-{
-  Vertex vr = InterpolateSurface(s, u, v, 0, 0);
-  double l = sqrt(DSQR(vr.Pos.X - p->Pos.X) +
-                  DSQR(vr.Pos.Y - p->Pos.Y) + DSQR(vr.Pos.Z - p->Pos.Z));
-  *uu = u;
-  *vv = v;
-  if(l < 1.e-3)
-    return true;
-  return false;
-}
-
 bool ProjectPointOnSurface(Surface * s, Vertex & p)
 {
   double x[3] = { 0.5, 0.5, 0.5 };
@@ -3202,96 +2809,6 @@ bool ProjectPointOnSurface(Surface * s, Vertex & p)
   return true;
 }
 
-bool ProjectPointOnSurface(Surface * s, Vertex * p, double *u, double *v)
-{
-  static double x[3];
-  int check;
-  static int deb = 1;
-  double VMIN, VMAX, UMIN, UMAX, l, lmin;
-  Vertex vv;
-
-  SURFACE = s;
-  VERTEX = p;
-  lmin = 1.e24;
-  UMAX = s->ku[s->Nu + s->OrderU];
-  UMIN = s->ku[0];
-  VMAX = s->kv[s->Nv + s->OrderV];
-  VMIN = s->kv[0];
-  if(deb) {
-    x[1] = UMIN + (UMAX - UMIN) * ((rand() % 10000) / 10000.);
-    x[2] = VMIN + (VMAX - VMIN) * ((rand() % 10000) / 10000.);
-    deb = 0;
-  }
-
-  if(try_a_value(SURFACE, VERTEX, SURFACE->ku[0] + VERTEX->u,
-                 SURFACE->kv[0], u, v))
-    return true;
-  if(try_a_value(SURFACE, VERTEX, SURFACE->ku[0] + VERTEX->u,
-                 SURFACE->kv[SURFACE->Nv + SURFACE->OrderV], u, v))
-    return true;
-  if(try_a_value
-     (SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU] - VERTEX->u,
-      SURFACE->kv[0], u, v))
-    return true;
-  if(try_a_value
-     (SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU] - VERTEX->u,
-      SURFACE->kv[SURFACE->Nv + SURFACE->OrderV], u, v))
-    return true;
-  if(try_a_value
-     (SURFACE, VERTEX, SURFACE->ku[0], SURFACE->kv[0] + VERTEX->u, u, v))
-    return true;
-  if(try_a_value(SURFACE, VERTEX, SURFACE->ku[0],
-                 SURFACE->kv[SURFACE->Nv + SURFACE->OrderV] - VERTEX->u, u,
-                 v))
-    return true;
-  if(try_a_value(SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU],
-                 SURFACE->kv[0] + VERTEX->u, u, v))
-    return true;
-  if(try_a_value(SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU],
-                 SURFACE->kv[SURFACE->Nv + SURFACE->OrderV] - VERTEX->u, u,
-                 v))
-    return true;
-
-
-  if(search_in_boundary(SURFACE, VERTEX, SURFACE->kv[0], 0, u, v))
-    return true;
-  if(search_in_boundary
-     (SURFACE, VERTEX, SURFACE->kv[SURFACE->Nv + SURFACE->OrderV], 0, u, v))
-    return true;
-  if(search_in_boundary(SURFACE, VERTEX, SURFACE->ku[0], 1, u, v))
-    return true;
-  if(search_in_boundary
-     (SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU], 1, u, v))
-    return true;
-
-  while(1) {
-    newt(x, 2, &check, projectPS);
-    vv = InterpolateSurface(s, x[1], x[2], 0, 0);
-    l = sqrt(DSQR(vv.Pos.X - p->Pos.X) +
-             DSQR(vv.Pos.Y - p->Pos.Y) + DSQR(vv.Pos.Z - p->Pos.Z));
-    if(l < 1.e-1)
-      break;
-    else {
-      x[1] = UMIN + (UMAX - UMIN) * ((rand() % 10000) / 10000.);
-      x[2] = VMIN + (VMAX - VMIN) * ((rand() % 10000) / 10000.);
-    }
-  }
-  *u = x[1];
-  *v = x[2];
-
-  if(!check) {
-    return false;
-  }
-  return true;
-}
-
-void direction(Vertex * v1, Vertex * v2, double d[3])
-{
-  d[0] = v2->Pos.X - v1->Pos.X;
-  d[1] = v2->Pos.Y - v1->Pos.Y;
-  d[2] = v2->Pos.Z - v1->Pos.Z;
-}
-
 void Projette(Vertex * v, double mat[3][3])
 {
   double X, Y, Z;
@@ -3303,18 +2820,3 @@ void Projette(Vertex * v, double mat[3][3])
   v->Pos.Y = Y;
   v->Pos.Z = Z;
 }
-
-
-void Surface::print_info ()
-{
-  Msg(INFO,"Surface %d of type %d",Num,Typ);
-  Msg(INFO,"Generatrices : ");
-  Curve *C;
-  for(int i = 0; i < List_Nbr(Generatrices); i++) {
-    List_Read(Generatrices, i, &C);
-    Msg(INFO,"%d of type %d begin %d end %d ",C->Num,C->Typ,C->beg->Num,C->end->Num);  
-    Msg(INFO,"CircleParams : %g %g %g %g %g %g %g %g",
-	C->Circle.t1,C->Circle.t2,C->Circle.f1,C->Circle.f2,C->Circle.incl,C->Circle.n[0],C->Circle.n[1],C->Circle.n[2]);
-  }
-  
-}
diff --git a/Geo/Geo.h b/Geo/Geo.h
index 60a49f75340c003fdb2046d1cfac7e5d2602cc25..eadead0e11598bdcdb718cdd3d1bc832357e36c6 100644
--- a/Geo/Geo.h
+++ b/Geo/Geo.h
@@ -37,7 +37,6 @@
 #define MSH_SEGM_ELLI_INV    7
 #define MSH_SEGM_LOOP        8
 #define MSH_SEGM_BSPLN       15
-#define MSH_SEGM_URBS        16
 #define MSH_SEGM_NURBS       17
 #define MSH_SEGM_BEZIER      18
 #define MSH_SEGM_PARAMETRIC  19
@@ -46,9 +45,7 @@
 #define MSH_SURF_PLAN        9
 #define MSH_SURF_REGL        10
 #define MSH_SURF_TRIC        11
-#define MSH_SURF_NURBS       12
 #define MSH_SURF_LOOP        13
-#define MSH_SURF_TRIMMED     21
 #define MSH_SURF_DISCRETE    102
 
 #define MSH_VOLUME           14
@@ -59,78 +56,12 @@
 #define MSH_PHYSICAL_SURFACE 320
 #define MSH_PHYSICAL_VOLUME  330
 
-class DrawingColor{
- public:
-  int type;
-  unsigned int geom, mesh;
-};
-
-struct _Surf{
-  int Num;
-  int Typ;
-  char Visible;
-  int Method;
-  int Recombine;
-  int Recombine_Dir; // -1 is left, +1 is right, 0 is alternated
-  double RecombineAngle;
-  int ipar[5];
-  int Nu, Nv;
-  List_T *Generatrices;
-  List_T *EmbeddedCurves;
-  List_T *EmbeddedPoints;
-  List_T *Control_Points;
-  List_T *TrsfPoints;
-  double plan[3][3];
-  double invplan[3][3];
-  double a, b, c, d;
-  List_T *Orientations;
-  List_T *Contours;
-  int OrderU, OrderV;
-  float *ku, *kv, *cp;
-  struct _Surf *Support;
-  ExtrudeParams *Extrude;
-  DrawingColor Color;
-  void print_info ();
-};
-
-typedef struct _Surf Surface;
-
-typedef struct{
-  int Num;
-  List_T *Curves;
-}EdgeLoop;
-
-typedef struct{
-  int Num;
-  List_T *Surfaces;
-}SurfaceLoop;
-
-typedef struct{
-  int Num;
-  int Typ;
-  char Visible;
-  List_T *Entities;
-}PhysicalGroup;
-
-typedef struct {
-  int Num;
-  int Typ;
-  char Visible;
-  int Method;
-  int ipar[8];
-  ExtrudeParams *Extrude;
-  List_T *TrsfPoints;
-  List_T *Surfaces;
-  List_T *SurfacesOrientations;
-  DrawingColor Color;
-}Volume;
-
 struct Coord{
   double X,Y,Z;
 };
 
 class Vertex {
-  public :
+ public :
   int Num;
   char Visible;
   double lc, u, us[3], w;
@@ -170,6 +101,12 @@ class Vertex {
   }
 };
 
+class DrawingColor{
+ public:
+  int type;
+  unsigned int geom, mesh;
+};
+
 typedef struct{
   double t1, t2, f1, f2, incl;
   Vertex *v[4];
@@ -190,18 +127,71 @@ typedef struct{
   double ubeg, uend;
   List_T *Control_Points;
   ExtrudeParams *Extrude;
-  float *k, *cp;
+  float *k;
   int degre;
   CircParam Circle;
   char functu[256], functv[256], functw[256];
   DrawingColor Color;
 }Curve;
 
+typedef struct{
+  int Num;
+  List_T *Curves;
+}EdgeLoop;
+
+typedef struct{
+  int Num;
+  int Typ;
+  char Visible;
+  int Method;
+  int Recombine;
+  int Recombine_Dir; // -1 is left, +1 is right, 0 is alternated
+  double RecombineAngle;
+  int ipar[5];
+  List_T *Generatrices;
+  List_T *EmbeddedCurves;
+  List_T *EmbeddedPoints;
+  List_T *Control_Points;
+  List_T *TrsfPoints;
+  double plan[3][3];
+  double invplan[3][3];
+  double a, b, c, d;
+  List_T *Orientations;
+  List_T *Contours;
+  ExtrudeParams *Extrude;
+  DrawingColor Color;
+}Surface;
+
+typedef struct{
+  int Num;
+  List_T *Surfaces;
+}SurfaceLoop;
+
+typedef struct {
+  int Num;
+  int Typ;
+  char Visible;
+  int Method;
+  int ipar[8];
+  ExtrudeParams *Extrude;
+  List_T *TrsfPoints;
+  List_T *Surfaces;
+  List_T *SurfacesOrientations;
+  DrawingColor Color;
+}Volume;
+
+typedef struct{
+  int Num;
+  int Typ;
+  char Visible;
+  List_T *Entities;
+}PhysicalGroup;
+
 class Mesh{
-private:
+ private:
   void alloc_all();
   void free_all();
-public:
+ public:
   Tree_T *Points;
   Tree_T *Curves;
   Tree_T *Surfaces;
@@ -219,49 +209,38 @@ public:
 typedef struct {
   int Type;
   int Num;
-  union {
-    int I;
-    double F;
-    double V[4];
-    List_T *ListDouble;
-  } obj;
 } Shape;
 
-int compareVertex (const void *a, const void *b);
-int comparePosition (const void *a, const void *b);
-int compareSurfaceLoop(const void *a, const void *b);
-int compareEdgeLoop(const void *a, const void *b);
-int compareQuality(const void *a, const void *b);
+int comparePosition(const void *a, const void *b);
+int compareVertex(const void *a, const void *b);
 int compareCurve(const void *a, const void *b);
+int compareEdgeLoop(const void *a, const void *b);
 int compareSurface(const void *a, const void *b);
+int compareSurfaceLoop(const void *a, const void *b);
 int compareVolume(const void *a, const void *b);
-int compareSxF(const void *a, const void *b);
 int comparePhysicalGroup(const void *a, const void *b);
 
-Vertex        *Create_Vertex (int Num, double X, double Y, double Z, double lc, double u);
+Vertex *Create_Vertex(int Num, double X, double Y, double Z, double lc, double u);
+Curve *Create_Curve(int Num, int Typ, int Order, List_T * Liste,
+		    List_T * Knots, int p1, int p2, double u1, double u2);
+Surface *Create_Surface(int Num, int Typ);
+Volume *Create_Volume(int Num, int Typ);
+EdgeLoop *Create_EdgeLoop(int Num, List_T * intlist);
+SurfaceLoop *Create_SurfaceLoop(int Num, List_T * intlist);
 PhysicalGroup *Create_PhysicalGroup(int Num, int typ, List_T * intlist);
-Curve         *Create_Curve(int Num, int Typ, int Order, List_T * Liste,
-			    List_T * Knots, int p1, int p2, double u1, double u2);
-Surface       *Create_Surface(int Num, int Typ);
-Volume        *Create_Volume(int Num, int Typ);
-EdgeLoop      *Create_EdgeLoop(int Num, List_T * intlist);
-SurfaceLoop   *Create_SurfaceLoop(int Num, List_T * intlist);
 
-void CreateNurbsSurface (int Num, int Order1, int Order2, List_T *, List_T *, List_T *);
-void CreateNurbsSurfaceSupport (int Num, int Order2, int Order1, 
-                                List_T * List, List_T *, List_T *);
+Curve *CreateReversedCurve(Curve *c);
+
+void End_Curve(Curve * c);
+void End_Surface(Surface * s, int reset_orientations=1);
 
 void Free_Vertex (void *a, void *b);
-void Free_PhysicalGroup(void *a, void *b);
-void Free_Surface(void *a, void *b);
-void Free_Volume(void *a, void *b);
-void Free_Volume_But_Not_Elements(void *a, void *b);
 void Free_Curve(void *a, void *b);
 void Free_EdgeLoop(void *a, void *b);
+void Free_Surface(void *a, void *b);
 void Free_SurfaceLoop(void *a, void *b);
-
-void End_Curve(Curve * c);
-void End_Surface(Surface * s, int reset_orientations=1);
+void Free_Volume(void *a, void *b);
+void Free_PhysicalGroup(void *a, void *b);
 
 int NEWPOINT(void);
 int NEWLINE(void);
@@ -274,13 +253,12 @@ int NEWREG(void);
 
 Vertex *FindPoint(int inum);
 Curve *FindCurve(int inum);
-Surface *FindSurface(int inum);
-Volume *FindVolume(int inum);
 EdgeLoop *FindEdgeLoop(int inum);
+Surface *FindSurface(int inum);
 SurfaceLoop *FindSurfaceLoop(int inum);
+Volume *FindVolume(int inum);
 PhysicalGroup *FindPhysicalGroup(int inum, int type);
 
-Curve *CreateReversedCurve(Curve *c);
 void ModifyLcPoint(int ip, double lc);
 
 void TranslateShapes(double X,double Y,double Z,
@@ -316,13 +294,11 @@ void ReplaceAllDuplicates();
 
 bool ProjectPointOnCurve(Curve *c, Vertex *v, Vertex *RES, Vertex *DER);
 bool ProjectPointOnSurface(Surface *s, Vertex &p);
-bool ProjectPointOnSurface(Surface *s, Vertex *p,double *u, double *v);
 
 int recognize_seg(int typ, List_T *liste, int *seg);
 int recognize_loop(List_T *liste, int *loop);
 int recognize_surfloop(List_T *liste, int *loop);
 
-void direction(Vertex * v1, Vertex * v2, double d[3]);
 void Projette(Vertex * v, double mat[3][3]);
 
 #endif
diff --git a/Geo/GeoInterpolation.cpp b/Geo/GeoInterpolation.cpp
index b0adbc90df9b81692f74aeff31fd42bd8271d984..55229f7cf47c268c4cefe8a53b656eed4a931d3d 100644
--- a/Geo/GeoInterpolation.cpp
+++ b/Geo/GeoInterpolation.cpp
@@ -1,4 +1,4 @@
-// $Id: GeoInterpolation.cpp,v 1.13 2007-01-10 13:48:46 geuzaine Exp $
+// $Id: GeoInterpolation.cpp,v 1.14 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -28,6 +28,170 @@
 
 // Curves
 
+Vertex InterpolateCubicSpline(Vertex * v[4], double t, double mat[4][4],
+                              int derivee, double t1, double t2)
+{
+  Vertex V;
+  int i, j;
+  double vec[4], T[4];
+
+  V.Pos.X = V.Pos.Y = V.Pos.Z = 0.0;
+  V.lc = (1 - t) * v[1]->lc + t * v[2]->lc;
+  V.w = (1 - t) * v[1]->w + t * v[2]->w;
+
+  if(derivee) {
+    T[3] = 0.;
+    T[2] = 1.;
+    T[1] = 2. * t;
+    T[0] = 3. * t * t;
+  }
+  else {
+    T[3] = 1.;
+    T[2] = t;
+    T[1] = t * t;
+    T[0] = t * t * t;
+  }
+
+  for(i = 0; i < 4; i++) {
+    vec[i] = 0.0;
+  }
+
+  /* X */
+  for(i = 0; i < 4; i++) {
+    for(j = 0; j < 4; j++) {
+      vec[i] += mat[i][j] * v[j]->Pos.X;
+    }
+  }
+
+  for(j = 0; j < 4; j++) {
+    V.Pos.X += T[j] * vec[j];
+    vec[j] = 0.0;
+  }
+
+  /* Y */
+  for(i = 0; i < 4; i++) {
+    for(j = 0; j < 4; j++) {
+      vec[i] += mat[i][j] * v[j]->Pos.Y;
+    }
+  }
+
+  for(j = 0; j < 4; j++) {
+    V.Pos.Y += T[j] * vec[j];
+    vec[j] = 0.0;
+  }
+
+  /* Z */
+  for(i = 0; i < 4; i++) {
+    for(j = 0; j < 4; j++) {
+      vec[i] += mat[i][j] * v[j]->Pos.Z;
+    }
+  }
+  for(j = 0; j < 4; j++) {
+    V.Pos.Z += T[j] * vec[j];
+    vec[j] = 0.0;
+  }
+
+  if(derivee) {
+    V.Pos.X /= ((t2 - t1));
+    V.Pos.Y /= ((t2 - t1));
+    V.Pos.Z /= ((t2 - t1));
+  }
+
+  return V;
+}
+
+// Uniform BSplines
+Vertex InterpolateUBS(Curve * Curve, double u, int derivee)
+{
+  int NbControlPoints, NbCurves, iCurve;
+  double t, t1, t2;
+  Vertex *v[4];
+
+  NbControlPoints = List_Nbr(Curve->Control_Points);
+  NbCurves = NbControlPoints - 3;
+
+  iCurve = (int)(u * (double)NbCurves) + 1;
+
+  if(iCurve > NbCurves)
+    iCurve = NbCurves;
+  else if (iCurve < 1)
+    iCurve = 1;
+
+  t1 = (double)(iCurve - 1) / (double)(NbCurves);
+  t2 = (double)(iCurve) / (double)(NbCurves);
+
+  t = (u - t1) / (t2 - t1);
+
+  List_Read(Curve->Control_Points, iCurve - 1, &v[0]);
+  List_Read(Curve->Control_Points, iCurve, &v[1]);
+  List_Read(Curve->Control_Points, iCurve + 1, &v[2]);
+  List_Read(Curve->Control_Points, iCurve + 2, &v[3]);
+
+  return InterpolateCubicSpline(v, t, Curve->mat, derivee, t1, t2);
+}
+
+// Non Uniform BSplines
+int findSpan(double u, int deg, int n, float *U)
+{
+  if(u >= U[n])
+    return n - 1;
+  if(u <= U[0])
+    return deg;
+
+  int low = deg;
+  int high = n + 1;
+  int mid = (low + high) / 2;
+
+  while(u < U[mid] || u >= U[mid + 1]) {
+    if(u < U[mid])
+      high = mid;
+    else
+      low = mid;
+    mid = (low + high) / 2;
+  }
+  return mid;
+}
+
+void basisFuns(double u, int i, int deg, float *U, double *N)
+{
+  double left[1000];
+  double *right = &left[deg + 1];
+
+  double temp, saved;
+
+  N[0] = 1.0;
+  for(int j = 1; j <= deg; j++) {
+    left[j] = u - U[i + 1 - j];
+    right[j] = U[i + j] - u;
+    saved = 0.0;
+    for(int r = 0; r < j; r++) {
+      temp = N[r] / (right[r + 1] + left[j - r]);
+      N[r] = saved + right[r + 1] * temp;
+      saved = left[j - r] * temp;
+    }
+    N[j] = saved;
+  }
+}
+
+Vertex InterpolateNurbs(Curve * Curve, double u, int derivee)
+{
+  static double Nb[1000];
+  int span = findSpan(u, Curve->degre, List_Nbr(Curve->Control_Points), Curve->k);
+  Vertex p, *v;
+
+  basisFuns(u, span, Curve->degre, Curve->k, Nb);
+  p.Pos.X = p.Pos.Y = p.Pos.Z = p.w = p.lc = 0.0;
+  for(int i = Curve->degre; i >= 0; --i) {
+    List_Read(Curve->Control_Points, span - Curve->degre + i, &v);
+    p.Pos.X += Nb[i] * v->Pos.X;
+    p.Pos.Y += Nb[i] * v->Pos.Y;
+    p.Pos.Z += Nb[i] * v->Pos.Z;
+    p.w += Nb[i] * v->w;
+    p.lc += Nb[i] * v->lc;
+  }
+  return p;
+}
+
 Vertex InterpolateCurve(Curve * c, double u, int derivee)
 {
   if(c->Num < 0) {
@@ -381,8 +545,6 @@ Vertex InterpolateSurface(Surface * s, double u, double v, int derivee, int u_v)
   case MSH_SURF_REGL:
   case MSH_SURF_TRIC: 
     return InterpolateRuledSurface(s, u, v);
-  case MSH_SURF_NURBS:
-    return InterpolateNurbsSurface(s, u, v);
   case MSH_SURF_PLAN:
     {
       Vertex T(u, v, .0);
@@ -403,210 +565,3 @@ Vertex InterpolateSurface(Surface * s, double u, double v, int derivee, int u_v)
   }
 }
 
-// Cubic spline
-
-Vertex InterpolateCubicSpline(Vertex * v[4], double t, double mat[4][4],
-                              int derivee, double t1, double t2)
-{
-  Vertex V;
-  int i, j;
-  double vec[4], T[4];
-
-  V.Pos.X = V.Pos.Y = V.Pos.Z = 0.0;
-  V.lc = (1 - t) * v[1]->lc + t * v[2]->lc;
-  V.w = (1 - t) * v[1]->w + t * v[2]->w;
-
-  if(derivee) {
-    T[3] = 0.;
-    T[2] = 1.;
-    T[1] = 2. * t;
-    T[0] = 3. * t * t;
-  }
-  else {
-    T[3] = 1.;
-    T[2] = t;
-    T[1] = t * t;
-    T[0] = t * t * t;
-  }
-
-  for(i = 0; i < 4; i++) {
-    vec[i] = 0.0;
-  }
-
-  /* X */
-  for(i = 0; i < 4; i++) {
-    for(j = 0; j < 4; j++) {
-      vec[i] += mat[i][j] * v[j]->Pos.X;
-    }
-  }
-
-  for(j = 0; j < 4; j++) {
-    V.Pos.X += T[j] * vec[j];
-    vec[j] = 0.0;
-  }
-
-  /* Y */
-  for(i = 0; i < 4; i++) {
-    for(j = 0; j < 4; j++) {
-      vec[i] += mat[i][j] * v[j]->Pos.Y;
-    }
-  }
-
-  for(j = 0; j < 4; j++) {
-    V.Pos.Y += T[j] * vec[j];
-    vec[j] = 0.0;
-  }
-
-  /* Z */
-  for(i = 0; i < 4; i++) {
-    for(j = 0; j < 4; j++) {
-      vec[i] += mat[i][j] * v[j]->Pos.Z;
-    }
-  }
-  for(j = 0; j < 4; j++) {
-    V.Pos.Z += T[j] * vec[j];
-    vec[j] = 0.0;
-  }
-
-  if(derivee) {
-    V.Pos.X /= ((t2 - t1));
-    V.Pos.Y /= ((t2 - t1));
-    V.Pos.Z /= ((t2 - t1));
-  }
-
-  return V;
-}
-
-
-// Uniform BSplines
-
-Vertex InterpolateUBS(Curve * Curve, double u, int derivee)
-{
-  int NbControlPoints, NbCurves, iCurve;
-  double t, t1, t2;
-  Vertex *v[4];
-
-  NbControlPoints = List_Nbr(Curve->Control_Points);
-  NbCurves = NbControlPoints - 3;
-
-  iCurve = (int)(u * (double)NbCurves) + 1;
-
-  if(iCurve > NbCurves)
-    iCurve = NbCurves;
-  else if (iCurve < 1)
-    iCurve = 1;
-
-  t1 = (double)(iCurve - 1) / (double)(NbCurves);
-  t2 = (double)(iCurve) / (double)(NbCurves);
-
-  t = (u - t1) / (t2 - t1);
-
-  List_Read(Curve->Control_Points, iCurve - 1, &v[0]);
-  List_Read(Curve->Control_Points, iCurve, &v[1]);
-  List_Read(Curve->Control_Points, iCurve + 1, &v[2]);
-  List_Read(Curve->Control_Points, iCurve + 2, &v[3]);
-
-  return InterpolateCubicSpline(v, t, Curve->mat, derivee, t1, t2);
-}
-
-// Non Uniform BSplines
-
-int findSpan(double u, int deg, int n, float *U)
-{
-  if(u >= U[n])
-    return n - 1;
-  if(u <= U[0])
-    return deg;
-
-  int low = deg;
-  int high = n + 1;
-  int mid = (low + high) / 2;
-
-  while(u < U[mid] || u >= U[mid + 1]) {
-    if(u < U[mid])
-      high = mid;
-    else
-      low = mid;
-    mid = (low + high) / 2;
-  }
-  return mid;
-}
-
-void basisFuns(double u, int i, int deg, float *U, double *N)
-{
-  double left[1000];
-  double *right = &left[deg + 1];
-
-  double temp, saved;
-
-  //N.resize(deg+1) ;
-
-  N[0] = 1.0;
-  for(int j = 1; j <= deg; j++) {
-    left[j] = u - U[i + 1 - j];
-    right[j] = U[i + j] - u;
-    saved = 0.0;
-    for(int r = 0; r < j; r++) {
-      temp = N[r] / (right[r + 1] + left[j - r]);
-      N[r] = saved + right[r + 1] * temp;
-      saved = left[j - r] * temp;
-    }
-    N[j] = saved;
-  }
-}
-
-Vertex InterpolateNurbs(Curve * Curve, double u, int derivee)
-{
-  static double Nb[1000];
-  int span =
-    findSpan(u, Curve->degre, List_Nbr(Curve->Control_Points), Curve->k);
-  Vertex p, *v;
-
-  basisFuns(u, span, Curve->degre, Curve->k, Nb);
-  p.Pos.X = p.Pos.Y = p.Pos.Z = p.w = p.lc = 0.0;
-  for(int i = Curve->degre; i >= 0; --i) {
-    List_Read(Curve->Control_Points, span - Curve->degre + i, &v);
-    p.Pos.X += Nb[i] * v->Pos.X;
-    p.Pos.Y += Nb[i] * v->Pos.Y;
-    p.Pos.Z += Nb[i] * v->Pos.Z;
-    p.w += Nb[i] * v->w;
-    p.lc += Nb[i] * v->lc;
-  }
-  return p;
-}
-
-Vertex InterpolateNurbsSurface(Surface * s, double u, double v)
-{
-  int uspan = findSpan(u, s->OrderU, s->Nu, s->ku);
-  int vspan = findSpan(v, s->OrderV, s->Nv, s->kv);
-  double Nu[1000], Nv[1000];
-  Vertex sp, temp[1000], *pv;
-
-  basisFuns(u, uspan, s->OrderU, s->ku, Nu);
-  basisFuns(v, vspan, s->OrderV, s->kv, Nv);
-
-  int l, ll, kk;
-  for(l = 0; l <= s->OrderV; l++) {
-    temp[l].Pos.X = temp[l].Pos.Y = temp[l].Pos.Z = temp[l].w = temp[l].lc =
-      0.0;
-    for(int k = 0; k <= s->OrderU; k++) {
-      kk = uspan - s->OrderU + k;
-      ll = vspan - s->OrderV + l;
-      List_Read(s->Control_Points, kk + s->Nu * ll, &pv);
-      temp[l].Pos.X += Nu[k] * pv->Pos.X;
-      temp[l].Pos.Y += Nu[k] * pv->Pos.Y;
-      temp[l].Pos.Z += Nu[k] * pv->Pos.Z;
-      temp[l].w += Nu[k] * pv->w;
-      temp[l].lc += Nu[k] * pv->lc;
-    }
-  }
-  sp.Pos.X = sp.Pos.Y = sp.Pos.Z = sp.w = sp.lc = 0.0;
-  for(l = 0; l <= s->OrderV; l++) {
-    sp.Pos.X += Nv[l] * temp[l].Pos.X;
-    sp.Pos.Y += Nv[l] * temp[l].Pos.Y;
-    sp.Pos.Z += Nv[l] * temp[l].Pos.Z;
-    sp.w += Nv[l] * temp[l].w;
-    sp.lc += Nv[l] * temp[l].lc;
-  }
-  return sp;
-}
diff --git a/Geo/GeoInterpolation.h b/Geo/GeoInterpolation.h
index ebe4bfa7f20e74872f4401beb1f57f44c51fe2fd..32ad551c139a0bf96526127f3e9b5eff90b025bd 100644
--- a/Geo/GeoInterpolation.h
+++ b/Geo/GeoInterpolation.h
@@ -27,20 +27,4 @@ Vertex InterpolateCurve (Curve * Curve, double u, int derivee);
 Vertex InterpolateSurface (Surface * s, double u, double v, 
                            int derivee, int u_v);
 
-Vertex TransfiniteQua (Vertex c1, Vertex c2, Vertex c3, Vertex c4,
-                       Vertex s1, Vertex s2, Vertex s3, Vertex s4,
-                       double u, double v);
-
-Vertex TransfiniteTri (Vertex c1, Vertex c2, Vertex c3,
-                       Vertex s1, Vertex s2, Vertex s3,
-                       double u, double v);
-
-void TransfiniteSph (Vertex S, Vertex center, Vertex * T);
-
-Vertex InterpolateCubicSpline (Vertex * v[4], double t, double mat[4][4],
-                               int derivee, double t1, double t2);
-Vertex InterpolateUBS (Curve * Curve, double u, int derivee);
-Vertex InterpolateNurbs (Curve * Curve, double u, int derivee);
-Vertex InterpolateNurbsSurface (Surface * s, double u, double v);
-
 #endif
diff --git a/Geo/GeoStringInterface.cpp b/Geo/GeoStringInterface.cpp
index eed7fd8c8ee18fd3db201f18e7a92d3309cd8275..947125c1fcf9fde0327f83d4181b23fcf7bf1b07 100644
--- a/Geo/GeoStringInterface.cpp
+++ b/Geo/GeoStringInterface.cpp
@@ -1,4 +1,4 @@
-// $Id: GeoStringInterface.cpp,v 1.3 2006-12-16 01:25:58 geuzaine Exp $
+// $Id: GeoStringInterface.cpp,v 1.4 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -359,11 +359,8 @@ void add_surf(List_T *list, char *fich, int support, int typ)
   if(typ == 1) {
     snprintf(text, BUFFSIZE, "Ruled Surface(%d) = {", NEWSURFACE());
   }
-  else if(typ == 2) {
-    snprintf(text, BUFFSIZE, "Plane Surface(%d) = {", NEWSURFACE());
-  }
   else {
-    snprintf(text, BUFFSIZE, "Trimmed Surface(%d) = %d {", NEWSURFACE(), support);
+    snprintf(text, BUFFSIZE, "Plane Surface(%d) = {", NEWSURFACE());
   }
   strncat_list(text, list);
   strncat(text, "};", BUFFSIZE-strlen(text));
diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp
index 3ef716bbeb0954500e9bee864476bf76bb51692a..179df3e5d7ec4aa5628544b05fbbc83a5f6cda89 100644
--- a/Geo/gmshFace.cpp
+++ b/Geo/gmshFace.cpp
@@ -1,4 +1,4 @@
-// $Id: gmshFace.cpp,v 1.32 2006-12-24 13:37:20 remacle Exp $
+// $Id: gmshFace.cpp,v 1.33 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -217,7 +217,6 @@ SPoint2 gmshFace::parFromPoint(const SPoint3 &qp) const
 GEntity::GeomType gmshFace::geomType() const
 {
   switch(s->Typ){
-  case MSH_SURF_NURBS: return Nurb;
   case MSH_SURF_PLAN: return Plane;
   case MSH_SURF_REGL:
   case MSH_SURF_TRIC: return RuledSurface;
diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l
index 4819a0df20f04ecc21d188b688d45c5f67585794..e0970e5b1de49fefe102b9b34e56c25d2596b4f2 100644
--- a/Parser/Gmsh.l
+++ b/Parser/Gmsh.l
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.l,v 1.81 2006-11-27 22:22:17 geuzaine Exp $
+// $Id: Gmsh.l,v 1.82 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -171,7 +171,6 @@ Hypot                   return tHypot;
 
 In                      return tIn;
 If                      return tIf;
-Intersect               return tIntersect;
 
 Knots			return tKnots;
 
@@ -222,7 +221,6 @@ Transfinite             return tTransfinite;
 Translate               return tTranslate;
 Tanh                    return tTanh;
 Tan                     return tTan;
-Trimmed			return tTrimmed;
 Today                   return tToday;
 
 Using                   return tUsing;
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 7c83953e230e11df004b88d7eb7305bf11abcfd2..2385de666b939883afa8eb02f251543f5fd387fd 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -72,61 +72,59 @@
 #define	tRecombine	322
 #define	tDelete	323
 #define	tCoherence	324
-#define	tIntersect	325
-#define	tAttractor	326
-#define	tLayers	327
-#define	tAlias	328
-#define	tAliasWithOptions	329
-#define	tText2D	330
-#define	tText3D	331
-#define	tInterpolationScheme	332
-#define	tTime	333
-#define	tGrain	334
-#define	tCombine	335
-#define	tBSpline	336
-#define	tBezier	337
-#define	tNurbs	338
-#define	tOrder	339
-#define	tWith	340
-#define	tBounds	341
-#define	tKnots	342
-#define	tColor	343
-#define	tColorTable	344
-#define	tFor	345
-#define	tIn	346
-#define	tEndFor	347
-#define	tIf	348
-#define	tEndIf	349
-#define	tExit	350
-#define	tReturn	351
-#define	tCall	352
-#define	tFunction	353
-#define	tTrimmed	354
-#define	tShow	355
-#define	tHide	356
-#define	tGetValue	357
-#define	tGMSH_MAJOR_VERSION	358
-#define	tGMSH_MINOR_VERSION	359
-#define	tGMSH_PATCH_VERSION	360
-#define	tAFFECTPLUS	361
-#define	tAFFECTMINUS	362
-#define	tAFFECTTIMES	363
-#define	tAFFECTDIVIDE	364
-#define	tOR	365
-#define	tAND	366
-#define	tEQUAL	367
-#define	tNOTEQUAL	368
-#define	tAPPROXEQUAL	369
-#define	tLESSOREQUAL	370
-#define	tGREATEROREQUAL	371
-#define	tCROSSPRODUCT	372
-#define	tPLUSPLUS	373
-#define	tMINUSMINUS	374
-#define	UNARYPREC	375
+#define	tAttractor	325
+#define	tLayers	326
+#define	tAlias	327
+#define	tAliasWithOptions	328
+#define	tText2D	329
+#define	tText3D	330
+#define	tInterpolationScheme	331
+#define	tTime	332
+#define	tGrain	333
+#define	tCombine	334
+#define	tBSpline	335
+#define	tBezier	336
+#define	tNurbs	337
+#define	tOrder	338
+#define	tWith	339
+#define	tBounds	340
+#define	tKnots	341
+#define	tColor	342
+#define	tColorTable	343
+#define	tFor	344
+#define	tIn	345
+#define	tEndFor	346
+#define	tIf	347
+#define	tEndIf	348
+#define	tExit	349
+#define	tReturn	350
+#define	tCall	351
+#define	tFunction	352
+#define	tShow	353
+#define	tHide	354
+#define	tGetValue	355
+#define	tGMSH_MAJOR_VERSION	356
+#define	tGMSH_MINOR_VERSION	357
+#define	tGMSH_PATCH_VERSION	358
+#define	tAFFECTPLUS	359
+#define	tAFFECTMINUS	360
+#define	tAFFECTTIMES	361
+#define	tAFFECTDIVIDE	362
+#define	tOR	363
+#define	tAND	364
+#define	tEQUAL	365
+#define	tNOTEQUAL	366
+#define	tAPPROXEQUAL	367
+#define	tLESSOREQUAL	368
+#define	tGREATEROREQUAL	369
+#define	tCROSSPRODUCT	370
+#define	tPLUSPLUS	371
+#define	tMINUSMINUS	372
+#define	UNARYPREC	373
 
 #line 1 "Gmsh.y"
 
-// $Id: Gmsh.tab.cpp,v 1.295 2007-01-10 13:48:46 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.296 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -219,26 +217,26 @@ typedef union {
 
 
 
-#define	YYFINAL		1227
+#define	YYFINAL		1168
 #define	YYFLAG		-32768
-#define	YYNTBASE	142
+#define	YYNTBASE	140
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 375 ? yytranslate[x] : 209)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 373 ? yytranslate[x] : 206)
 
 static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   127,     2,   137,     2,   125,     2,     2,   132,
-   133,   123,   121,   138,   122,   136,   124,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   117,
-     2,   119,   111,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,   125,     2,   135,     2,   123,     2,     2,   130,
+   131,   121,   119,   136,   120,   134,   122,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,   115,
+     2,   117,   109,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-   134,     2,   135,   131,     2,     2,     2,     2,     2,     2,
+   132,     2,   133,   129,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   139,     2,   140,   141,     2,     2,     2,     2,
+     2,     2,   137,     2,   138,   139,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -262,8 +260,8 @@ static const short yytranslate[] = {     0,
     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
     97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   112,   113,   114,   115,   116,   118,
-   120,   126,   128,   129,   130
+   107,   108,   110,   111,   112,   113,   114,   116,   118,   124,
+   126,   127,   128
 };
 
 #if YYDEBUG != 0
@@ -278,235 +276,228 @@ static const short yyprhs[] = {     0,
    290,   300,   306,   315,   324,   336,   343,   353,   363,   373,
    375,   377,   385,   394,   407,   414,   422,   430,   438,   448,
    456,   466,   484,   492,   500,   512,   521,   534,   543,   552,
-   561,   574,   597,   618,   627,   636,   645,   653,   662,   668,
-   680,   686,   696,   698,   700,   702,   703,   706,   713,   720,
-   727,   734,   739,   746,   753,   760,   765,   772,   776,   781,
-   787,   791,   795,   800,   805,   809,   817,   825,   829,   837,
-   841,   844,   847,   863,   866,   873,   882,   891,   902,   904,
-   907,   909,   913,   918,   920,   926,   938,   952,   953,   961,
-   962,   976,   977,   993,  1002,  1011,  1020,  1033,  1046,  1059,
-  1074,  1089,  1104,  1105,  1118,  1119,  1132,  1133,  1146,  1147,
-  1164,  1165,  1182,  1183,  1200,  1201,  1220,  1221,  1240,  1241,
-  1260,  1262,  1265,  1271,  1279,  1289,  1292,  1299,  1309,  1319,
-  1328,  1338,  1347,  1356,  1363,  1368,  1375,  1382,  1389,  1396,
-  1399,  1402,  1404,  1408,  1411,  1414,  1417,  1421,  1425,  1429,
-  1433,  1437,  1441,  1445,  1449,  1453,  1457,  1461,  1465,  1469,
-  1473,  1479,  1484,  1489,  1494,  1499,  1504,  1509,  1514,  1519,
-  1524,  1529,  1536,  1541,  1546,  1551,  1556,  1561,  1566,  1573,
-  1580,  1587,  1592,  1597,  1602,  1607,  1612,  1617,  1622,  1627,
-  1632,  1637,  1642,  1649,  1654,  1659,  1664,  1669,  1674,  1679,
-  1686,  1693,  1700,  1705,  1707,  1709,  1711,  1713,  1715,  1717,
-  1719,  1721,  1727,  1732,  1737,  1740,  1746,  1750,  1757,  1762,
-  1770,  1777,  1779,  1782,  1785,  1789,  1793,  1805,  1815,  1823,
-  1831,  1832,  1836,  1840,  1842,  1846,  1848,  1850,  1853,  1857,
-  1862,  1866,  1872,  1877,  1879,  1881,  1883,  1887,  1892,  1899,
-  1907,  1909,  1911,  1915,  1919,  1929,  1937,  1939,  1945,  1949,
-  1956,  1958,  1962,  1964,  1966,  1973,  1978,  1983,  1988,  1995,
-  2002
+   561,   570,   579,   588,   596,   605,   611,   623,   629,   639,
+   641,   643,   645,   646,   649,   656,   663,   670,   677,   682,
+   689,   696,   703,   708,   715,   719,   724,   730,   734,   738,
+   743,   748,   752,   760,   768,   772,   780,   784,   787,   790,
+   806,   809,   816,   825,   834,   845,   847,   850,   852,   856,
+   861,   863,   869,   881,   895,   896,   904,   905,   919,   920,
+   936,   945,   954,   963,   976,   989,  1002,  1017,  1032,  1047,
+  1048,  1061,  1062,  1075,  1076,  1089,  1090,  1107,  1108,  1125,
+  1126,  1143,  1144,  1163,  1164,  1183,  1184,  1203,  1205,  1208,
+  1214,  1222,  1232,  1235,  1242,  1252,  1262,  1271,  1281,  1290,
+  1299,  1306,  1311,  1318,  1325,  1332,  1339,  1342,  1344,  1348,
+  1351,  1354,  1357,  1361,  1365,  1369,  1373,  1377,  1381,  1385,
+  1389,  1393,  1397,  1401,  1405,  1409,  1413,  1419,  1424,  1429,
+  1434,  1439,  1444,  1449,  1454,  1459,  1464,  1469,  1476,  1481,
+  1486,  1491,  1496,  1501,  1506,  1513,  1520,  1527,  1532,  1537,
+  1542,  1547,  1552,  1557,  1562,  1567,  1572,  1577,  1582,  1589,
+  1594,  1599,  1604,  1609,  1614,  1619,  1626,  1633,  1640,  1645,
+  1647,  1649,  1651,  1653,  1655,  1657,  1659,  1661,  1667,  1672,
+  1677,  1680,  1686,  1690,  1697,  1702,  1710,  1717,  1719,  1722,
+  1725,  1729,  1733,  1745,  1755,  1763,  1771,  1772,  1776,  1780,
+  1782,  1786,  1788,  1790,  1793,  1797,  1802,  1806,  1812,  1817,
+  1819,  1821,  1823,  1827,  1832,  1839,  1847,  1849,  1851,  1855,
+  1859,  1869,  1877,  1879,  1885,  1889,  1896,  1898,  1902,  1904,
+  1906,  1913,  1918,  1923,  1928,  1935,  1942
 };
 
-static const short yyrhs[] = {   143,
-     0,     1,     6,     0,     0,   143,   144,     0,   147,     0,
-   146,     0,   166,     0,   168,     0,   169,     0,   172,     0,
-   173,     0,   174,     0,   175,     0,   178,     0,   193,     0,
-   194,     0,   195,     0,   177,     0,   176,     0,   119,     0,
-   119,   119,     0,    33,   132,     5,   133,     6,     0,    33,
-   132,     5,   133,   145,   208,     6,     0,    33,   132,     5,
-   138,   204,   133,     6,     0,    33,   132,     5,   138,   204,
-   133,   145,   208,     6,     0,     4,     5,   139,   148,   140,
-     6,     0,     4,     5,     4,   198,   139,   148,   140,     6,
-     0,     0,   148,   151,     0,   148,   155,     0,   148,   158,
-     0,   148,   160,     0,   148,   161,     0,   148,   163,     0,
-   196,     0,   149,   138,   196,     0,   196,     0,   150,   138,
-   196,     0,     0,     0,     4,   152,   132,   149,   133,   153,
-   139,   150,   140,     6,     0,   208,     0,   154,   138,   208,
-     0,     0,    76,   132,   196,   138,   196,   138,   196,   133,
-   156,   139,   154,   140,     6,     0,   208,     0,   157,   138,
-   208,     0,     0,    77,   132,   196,   138,   196,   138,   196,
-   138,   196,   133,   159,   139,   157,   140,     6,     0,    78,
-   139,   201,   140,   139,   201,   140,     6,     0,     0,    79,
-   162,   139,   150,   140,     6,     0,    80,   132,   196,   133,
-   202,     6,     0,     7,     0,   107,     0,   108,     0,   109,
-     0,   110,     0,   128,     0,   129,     0,     4,   164,   196,
-     6,     0,     4,   134,   196,   135,   164,   196,     6,     0,
-     4,   134,   139,   204,   140,   135,   164,   202,     6,     0,
-     4,   134,   135,     7,   202,     6,     0,     4,   134,   135,
-   107,   202,     6,     0,     4,   165,     6,     0,     4,   134,
-   196,   135,   165,     6,     0,     4,   136,     4,     7,   208,
-     6,     0,     4,   134,   196,   135,   136,     4,     7,   208,
-     6,     0,     4,   136,     4,   164,   196,     6,     0,     4,
-   134,   196,   135,   136,     4,   164,   196,     6,     0,     4,
-   136,     4,   165,     6,     0,     4,   134,   196,   135,   136,
-     4,   165,     6,     0,     4,   136,    89,   136,     4,     7,
-   205,     6,     0,     4,   134,   196,   135,   136,    89,   136,
-     4,     7,   205,     6,     0,     4,   136,    90,     7,   206,
-     6,     0,     4,   134,   196,   135,   136,    90,     7,   206,
-     6,     0,    60,   132,     4,   133,   136,     4,     7,   196,
-     6,     0,    60,   132,     4,   133,   136,     4,     7,   208,
-     6,     0,   196,     0,   208,     0,    41,   132,   196,   133,
-     7,   198,     6,     0,    56,    41,   132,   167,   133,     7,
-   202,     6,     0,    72,    41,   202,     7,   139,   196,   138,
-   196,   138,   196,   140,     6,     0,    48,    49,   202,     7,
-   196,     6,     0,    44,   132,   196,   133,     7,   202,     6,
-     0,    46,   132,   196,   133,     7,   202,     6,     0,    42,
-   132,   196,   133,     7,   202,     6,     0,    42,   132,   196,
-   133,     7,   202,    52,   198,     6,     0,    43,   132,   196,
-   133,     7,   202,     6,     0,    43,   132,   196,   133,     7,
-   202,    52,   198,     6,     0,    50,   132,   196,   133,     7,
-   139,   196,   138,   196,   138,     5,   138,     5,   138,     5,
-   140,     6,     0,    82,   132,   196,   133,     7,   202,     6,
-     0,    83,   132,   196,   133,     7,   202,     6,     0,    84,
-   132,   196,   133,     7,   202,    88,   202,    85,   196,     6,
-     0,    44,    67,   132,   196,   133,     7,   202,     6,     0,
-    72,    44,   202,     7,   139,   196,   138,   196,   138,   196,
-   140,     6,     0,    56,    44,   132,   167,   133,     7,   202,
-     6,     0,    52,    45,   132,   196,   133,     7,   202,     6,
-     0,    53,    45,   132,   196,   133,     7,   202,     6,     0,
-   100,    45,   132,   196,   133,     7,   139,   196,   138,   202,
-   140,     6,     0,    84,    45,    86,    87,   132,   196,   133,
-     7,   200,    88,   139,   202,   138,   202,   140,    85,   139,
-   196,   138,   196,   140,     6,     0,    84,    45,   132,   196,
-   133,     7,   200,    88,   139,   202,   138,   202,   140,    85,
-   139,   196,   138,   196,   140,     6,     0,    45,    67,   132,
-   196,   133,     7,   202,     6,     0,    56,    45,   132,   167,
-   133,     7,   202,     6,     0,    55,    47,   132,   196,   133,
-     7,   202,     6,     0,    47,   132,   196,   133,     7,   202,
-     6,     0,    56,    47,   132,   167,   133,     7,   202,     6,
-     0,    62,   198,   139,   170,   140,     0,    61,   139,   198,
-   138,   198,   138,   196,   140,   139,   170,   140,     0,    63,
-   198,   139,   170,   140,     0,    64,   139,   198,   138,   196,
-   140,   139,   170,   140,     0,   172,     0,   171,     0,   169,
-     0,     0,   171,   168,     0,   171,    41,   139,   204,   140,
-     6,     0,   171,    44,   139,   204,   140,     6,     0,   171,
-    45,   139,   204,   140,     6,     0,   171,    47,   139,   204,
-   140,     6,     0,    66,   139,   171,   140,     0,    66,     4,
-   134,   196,   135,     6,     0,    74,     4,   134,   196,   135,
-     6,     0,    75,     4,   134,   196,   135,     6,     0,    69,
-   139,   171,   140,     0,    69,     4,   134,   196,   135,     6,
-     0,    69,     4,     6,     0,    69,     4,     4,     6,     0,
-    89,   205,   139,   171,   140,     0,   101,   208,     6,     0,
-   102,   208,     6,     0,   101,   139,   171,   140,     0,   102,
-   139,   171,   140,     0,     4,   208,     6,     0,     4,     4,
-   134,   196,   135,   208,     6,     0,     4,     4,     4,   134,
-   196,   135,     6,     0,     4,   196,     6,     0,    60,   132,
-     4,   133,   136,     4,     6,     0,    81,     4,     6,     0,
-    96,     6,     0,    38,     6,     0,    38,   139,   196,   138,
-   196,   138,   196,   138,   196,   138,   196,   138,   196,   140,
-     6,     0,    39,     6,     0,    91,   132,   196,     8,   196,
-   133,     0,    91,   132,   196,     8,   196,     8,   196,   133,
-     0,    91,     4,    92,   139,   196,     8,   196,   140,     0,
-    91,     4,    92,   139,   196,     8,   196,     8,   196,   140,
-     0,    93,     0,    99,     4,     0,    97,     0,    98,     4,
-     6,     0,    94,   132,   196,   133,     0,    95,     0,    65,
-   198,   139,   171,   140,     0,    65,   139,   198,   138,   198,
-   138,   196,   140,   139,   171,   140,     0,    65,   139,   198,
-   138,   198,   138,   198,   138,   196,   140,   139,   171,   140,
-     0,     0,    65,   198,   139,   171,   179,   191,   140,     0,
-     0,    65,   139,   198,   138,   198,   138,   196,   140,   139,
-   171,   180,   191,   140,     0,     0,    65,   139,   198,   138,
-   198,   138,   198,   138,   196,   140,   139,   171,   181,   191,
-   140,     0,    65,    41,   139,   196,   138,   198,   140,     6,
-     0,    65,    44,   139,   196,   138,   198,   140,     6,     0,
-    65,    45,   139,   196,   138,   198,   140,     6,     0,    65,
-    41,   139,   196,   138,   198,   138,   198,   138,   196,   140,
-     6,     0,    65,    44,   139,   196,   138,   198,   138,   198,
-   138,   196,   140,     6,     0,    65,    45,   139,   196,   138,
-   198,   138,   198,   138,   196,   140,     6,     0,    65,    41,
-   139,   196,   138,   198,   138,   198,   138,   198,   138,   196,
-   140,     6,     0,    65,    44,   139,   196,   138,   198,   138,
-   198,   138,   198,   138,   196,   140,     6,     0,    65,    45,
-   139,   196,   138,   198,   138,   198,   138,   198,   138,   196,
-   140,     6,     0,     0,    65,    41,   139,   196,   138,   198,
-   140,   182,   139,   191,   140,     6,     0,     0,    65,    44,
-   139,   196,   138,   198,   140,   183,   139,   191,   140,     6,
-     0,     0,    65,    45,   139,   196,   138,   198,   140,   184,
-   139,   191,   140,     6,     0,     0,    65,    41,   139,   196,
-   138,   198,   138,   198,   138,   196,   140,   185,   139,   191,
-   140,     6,     0,     0,    65,    44,   139,   196,   138,   198,
-   138,   198,   138,   196,   140,   186,   139,   191,   140,     6,
-     0,     0,    65,    45,   139,   196,   138,   198,   138,   198,
-   138,   196,   140,   187,   139,   191,   140,     6,     0,     0,
-    65,    41,   139,   196,   138,   198,   138,   198,   138,   198,
-   138,   196,   140,   188,   139,   191,   140,     6,     0,     0,
-    65,    44,   139,   196,   138,   198,   138,   198,   138,   198,
-   138,   196,   140,   189,   139,   191,   140,     6,     0,     0,
-    65,    45,   139,   196,   138,   198,   138,   198,   138,   198,
-   138,   196,   140,   190,   139,   191,   140,     6,     0,   192,
-     0,   191,   192,     0,    73,   139,   196,   140,     6,     0,
-    73,   139,   202,   138,   202,   140,     6,     0,    73,   139,
-   202,   138,   202,   138,   202,   140,     6,     0,    68,     6,
-     0,    54,    44,   202,     7,   196,     6,     0,    54,    44,
-   202,     7,   196,    57,    59,   196,     6,     0,    54,    44,
-   202,     7,   196,    57,    58,   196,     6,     0,    54,    45,
-   139,   196,   140,     7,   202,     6,     0,    54,    45,   139,
-   196,   140,     7,   202,     4,     6,     0,    51,    45,   139,
-   196,   140,     7,   202,     6,     0,    54,    47,   139,   196,
-   140,     7,   202,     6,     0,    68,    45,   202,     7,   196,
-     6,     0,    68,    45,   202,     6,     0,    41,   202,    92,
-    45,   196,     6,     0,    44,   202,    92,    45,   196,     6,
-     0,    44,   202,    92,    47,   196,     6,     0,    45,   202,
-    92,    47,   196,     6,     0,    70,     6,     0,    71,     6,
-     0,   197,     0,   132,   196,   133,     0,   122,   196,     0,
-   121,   196,     0,   127,   196,     0,   196,   122,   196,     0,
-   196,   121,   196,     0,   196,   123,   196,     0,   196,   124,
-   196,     0,   196,   125,   196,     0,   196,   131,   196,     0,
-   196,   117,   196,     0,   196,   119,   196,     0,   196,   118,
-   196,     0,   196,   120,   196,     0,   196,   114,   196,     0,
-   196,   115,   196,     0,   196,   113,   196,     0,   196,   112,
-   196,     0,   196,   111,   196,     8,   196,     0,    12,   132,
-   196,   133,     0,    13,   132,   196,   133,     0,    14,   132,
-   196,   133,     0,    15,   132,   196,   133,     0,    16,   132,
-   196,   133,     0,    17,   132,   196,   133,     0,    18,   132,
-   196,   133,     0,    19,   132,   196,   133,     0,    20,   132,
-   196,   133,     0,    22,   132,   196,   133,     0,    23,   132,
-   196,   138,   196,   133,     0,    24,   132,   196,   133,     0,
-    25,   132,   196,   133,     0,    26,   132,   196,   133,     0,
-    27,   132,   196,   133,     0,    28,   132,   196,   133,     0,
-    29,   132,   196,   133,     0,    30,   132,   196,   138,   196,
-   133,     0,    31,   132,   196,   138,   196,   133,     0,    32,
-   132,   196,   138,   196,   133,     0,    21,   132,   196,   133,
-     0,    12,   134,   196,   135,     0,    13,   134,   196,   135,
-     0,    14,   134,   196,   135,     0,    15,   134,   196,   135,
-     0,    16,   134,   196,   135,     0,    17,   134,   196,   135,
-     0,    18,   134,   196,   135,     0,    19,   134,   196,   135,
-     0,    20,   134,   196,   135,     0,    22,   134,   196,   135,
-     0,    23,   134,   196,   138,   196,   135,     0,    24,   134,
-   196,   135,     0,    25,   134,   196,   135,     0,    26,   134,
-   196,   135,     0,    27,   134,   196,   135,     0,    28,   134,
-   196,   135,     0,    29,   134,   196,   135,     0,    30,   134,
-   196,   138,   196,   135,     0,    31,   134,   196,   138,   196,
-   135,     0,    32,   134,   196,   138,   196,   135,     0,    21,
-   134,   196,   135,     0,     3,     0,     9,     0,    10,     0,
-    11,     0,   104,     0,   105,     0,   106,     0,     4,     0,
-     4,   141,   139,   196,   140,     0,     4,   134,   196,   135,
-     0,   137,     4,   134,   135,     0,     4,   165,     0,     4,
-   134,   196,   135,   165,     0,     4,   136,     4,     0,     4,
-   134,   196,   135,   136,     4,     0,     4,   136,     4,   165,
-     0,     4,   134,   196,   135,   136,     4,   165,     0,   103,
-   132,     5,   138,   196,   133,     0,   199,     0,   122,   198,
-     0,   121,   198,     0,   198,   122,   198,     0,   198,   121,
-   198,     0,   139,   196,   138,   196,   138,   196,   138,   196,
-   138,   196,   140,     0,   139,   196,   138,   196,   138,   196,
-   138,   196,   140,     0,   139,   196,   138,   196,   138,   196,
-   140,     0,   132,   196,   138,   196,   138,   196,   133,     0,
-     0,   139,   201,   140,     0,   132,   201,   133,     0,   202,
-     0,   201,   138,   202,     0,   196,     0,   203,     0,   139,
-   140,     0,   139,   204,   140,     0,   122,   139,   204,   140,
-     0,   196,     8,   196,     0,   196,     8,   196,     8,   196,
-     0,    41,   139,   196,   140,     0,   169,     0,   172,     0,
-   178,     0,     4,   134,   135,     0,   122,     4,   134,   135,
-     0,     4,   134,   139,   204,   140,   135,     0,   122,     4,
-   134,   139,   204,   140,   135,     0,   196,     0,   203,     0,
-   204,   138,   196,     0,   204,   138,   203,     0,   139,   196,
-   138,   196,   138,   196,   138,   196,   140,     0,   139,   196,
-   138,   196,   138,   196,   140,     0,     4,     0,     4,   136,
-    89,   136,     4,     0,   139,   207,   140,     0,     4,   134,
-   196,   135,   136,    90,     0,   205,     0,   207,   138,   205,
-     0,     5,     0,    40,     0,    35,   132,   208,   138,   208,
-   133,     0,    36,   132,   208,   133,     0,    37,   132,   208,
-   133,     0,    34,   132,   208,   133,     0,    34,   132,   208,
-   138,   204,   133,     0,    34,   132,     4,   136,     4,   133,
-     0,    34,   132,     4,   134,   196,   135,   136,     4,   133,
+static const short yyrhs[] = {   141,
+     0,     1,     6,     0,     0,   141,   142,     0,   145,     0,
+   144,     0,   164,     0,   166,     0,   167,     0,   170,     0,
+   171,     0,   172,     0,   173,     0,   176,     0,   191,     0,
+   192,     0,   193,     0,   175,     0,   174,     0,   117,     0,
+   117,   117,     0,    33,   130,     5,   131,     6,     0,    33,
+   130,     5,   131,   143,   205,     6,     0,    33,   130,     5,
+   136,   201,   131,     6,     0,    33,   130,     5,   136,   201,
+   131,   143,   205,     6,     0,     4,     5,   137,   146,   138,
+     6,     0,     4,     5,     4,   196,   137,   146,   138,     6,
+     0,     0,   146,   149,     0,   146,   153,     0,   146,   156,
+     0,   146,   158,     0,   146,   159,     0,   146,   161,     0,
+   194,     0,   147,   136,   194,     0,   194,     0,   148,   136,
+   194,     0,     0,     0,     4,   150,   130,   147,   131,   151,
+   137,   148,   138,     6,     0,   205,     0,   152,   136,   205,
+     0,     0,    75,   130,   194,   136,   194,   136,   194,   131,
+   154,   137,   152,   138,     6,     0,   205,     0,   155,   136,
+   205,     0,     0,    76,   130,   194,   136,   194,   136,   194,
+   136,   194,   131,   157,   137,   155,   138,     6,     0,    77,
+   137,   198,   138,   137,   198,   138,     6,     0,     0,    78,
+   160,   137,   148,   138,     6,     0,    79,   130,   194,   131,
+   199,     6,     0,     7,     0,   105,     0,   106,     0,   107,
+     0,   108,     0,   126,     0,   127,     0,     4,   162,   194,
+     6,     0,     4,   132,   194,   133,   162,   194,     6,     0,
+     4,   132,   137,   201,   138,   133,   162,   199,     6,     0,
+     4,   132,   133,     7,   199,     6,     0,     4,   132,   133,
+   105,   199,     6,     0,     4,   163,     6,     0,     4,   132,
+   194,   133,   163,     6,     0,     4,   134,     4,     7,   205,
+     6,     0,     4,   132,   194,   133,   134,     4,     7,   205,
+     6,     0,     4,   134,     4,   162,   194,     6,     0,     4,
+   132,   194,   133,   134,     4,   162,   194,     6,     0,     4,
+   134,     4,   163,     6,     0,     4,   132,   194,   133,   134,
+     4,   163,     6,     0,     4,   134,    88,   134,     4,     7,
+   202,     6,     0,     4,   132,   194,   133,   134,    88,   134,
+     4,     7,   202,     6,     0,     4,   134,    89,     7,   203,
+     6,     0,     4,   132,   194,   133,   134,    89,     7,   203,
+     6,     0,    60,   130,     4,   131,   134,     4,     7,   194,
+     6,     0,    60,   130,     4,   131,   134,     4,     7,   205,
+     6,     0,   194,     0,   205,     0,    41,   130,   194,   131,
+     7,   196,     6,     0,    56,    41,   130,   165,   131,     7,
+   199,     6,     0,    71,    41,   199,     7,   137,   194,   136,
+   194,   136,   194,   138,     6,     0,    48,    49,   199,     7,
+   194,     6,     0,    44,   130,   194,   131,     7,   199,     6,
+     0,    46,   130,   194,   131,     7,   199,     6,     0,    42,
+   130,   194,   131,     7,   199,     6,     0,    42,   130,   194,
+   131,     7,   199,    52,   196,     6,     0,    43,   130,   194,
+   131,     7,   199,     6,     0,    43,   130,   194,   131,     7,
+   199,    52,   196,     6,     0,    50,   130,   194,   131,     7,
+   137,   194,   136,   194,   136,     5,   136,     5,   136,     5,
+   138,     6,     0,    81,   130,   194,   131,     7,   199,     6,
+     0,    82,   130,   194,   131,     7,   199,     6,     0,    83,
+   130,   194,   131,     7,   199,    87,   199,    84,   194,     6,
+     0,    44,    67,   130,   194,   131,     7,   199,     6,     0,
+    71,    44,   199,     7,   137,   194,   136,   194,   136,   194,
+   138,     6,     0,    56,    44,   130,   165,   131,     7,   199,
+     6,     0,    52,    45,   130,   194,   131,     7,   199,     6,
+     0,    53,    45,   130,   194,   131,     7,   199,     6,     0,
+    45,    67,   130,   194,   131,     7,   199,     6,     0,    56,
+    45,   130,   165,   131,     7,   199,     6,     0,    55,    47,
+   130,   194,   131,     7,   199,     6,     0,    47,   130,   194,
+   131,     7,   199,     6,     0,    56,    47,   130,   165,   131,
+     7,   199,     6,     0,    62,   196,   137,   168,   138,     0,
+    61,   137,   196,   136,   196,   136,   194,   138,   137,   168,
+   138,     0,    63,   196,   137,   168,   138,     0,    64,   137,
+   196,   136,   194,   138,   137,   168,   138,     0,   170,     0,
+   169,     0,   167,     0,     0,   169,   166,     0,   169,    41,
+   137,   201,   138,     6,     0,   169,    44,   137,   201,   138,
+     6,     0,   169,    45,   137,   201,   138,     6,     0,   169,
+    47,   137,   201,   138,     6,     0,    66,   137,   169,   138,
+     0,    66,     4,   132,   194,   133,     6,     0,    73,     4,
+   132,   194,   133,     6,     0,    74,     4,   132,   194,   133,
+     6,     0,    69,   137,   169,   138,     0,    69,     4,   132,
+   194,   133,     6,     0,    69,     4,     6,     0,    69,     4,
+     4,     6,     0,    88,   202,   137,   169,   138,     0,    99,
+   205,     6,     0,   100,   205,     6,     0,    99,   137,   169,
+   138,     0,   100,   137,   169,   138,     0,     4,   205,     6,
+     0,     4,     4,   132,   194,   133,   205,     6,     0,     4,
+     4,     4,   132,   194,   133,     6,     0,     4,   194,     6,
+     0,    60,   130,     4,   131,   134,     4,     6,     0,    80,
+     4,     6,     0,    95,     6,     0,    38,     6,     0,    38,
+   137,   194,   136,   194,   136,   194,   136,   194,   136,   194,
+   136,   194,   138,     6,     0,    39,     6,     0,    90,   130,
+   194,     8,   194,   131,     0,    90,   130,   194,     8,   194,
+     8,   194,   131,     0,    90,     4,    91,   137,   194,     8,
+   194,   138,     0,    90,     4,    91,   137,   194,     8,   194,
+     8,   194,   138,     0,    92,     0,    98,     4,     0,    96,
+     0,    97,     4,     6,     0,    93,   130,   194,   131,     0,
+    94,     0,    65,   196,   137,   169,   138,     0,    65,   137,
+   196,   136,   196,   136,   194,   138,   137,   169,   138,     0,
+    65,   137,   196,   136,   196,   136,   196,   136,   194,   138,
+   137,   169,   138,     0,     0,    65,   196,   137,   169,   177,
+   189,   138,     0,     0,    65,   137,   196,   136,   196,   136,
+   194,   138,   137,   169,   178,   189,   138,     0,     0,    65,
+   137,   196,   136,   196,   136,   196,   136,   194,   138,   137,
+   169,   179,   189,   138,     0,    65,    41,   137,   194,   136,
+   196,   138,     6,     0,    65,    44,   137,   194,   136,   196,
+   138,     6,     0,    65,    45,   137,   194,   136,   196,   138,
+     6,     0,    65,    41,   137,   194,   136,   196,   136,   196,
+   136,   194,   138,     6,     0,    65,    44,   137,   194,   136,
+   196,   136,   196,   136,   194,   138,     6,     0,    65,    45,
+   137,   194,   136,   196,   136,   196,   136,   194,   138,     6,
+     0,    65,    41,   137,   194,   136,   196,   136,   196,   136,
+   196,   136,   194,   138,     6,     0,    65,    44,   137,   194,
+   136,   196,   136,   196,   136,   196,   136,   194,   138,     6,
+     0,    65,    45,   137,   194,   136,   196,   136,   196,   136,
+   196,   136,   194,   138,     6,     0,     0,    65,    41,   137,
+   194,   136,   196,   138,   180,   137,   189,   138,     6,     0,
+     0,    65,    44,   137,   194,   136,   196,   138,   181,   137,
+   189,   138,     6,     0,     0,    65,    45,   137,   194,   136,
+   196,   138,   182,   137,   189,   138,     6,     0,     0,    65,
+    41,   137,   194,   136,   196,   136,   196,   136,   194,   138,
+   183,   137,   189,   138,     6,     0,     0,    65,    44,   137,
+   194,   136,   196,   136,   196,   136,   194,   138,   184,   137,
+   189,   138,     6,     0,     0,    65,    45,   137,   194,   136,
+   196,   136,   196,   136,   194,   138,   185,   137,   189,   138,
+     6,     0,     0,    65,    41,   137,   194,   136,   196,   136,
+   196,   136,   196,   136,   194,   138,   186,   137,   189,   138,
+     6,     0,     0,    65,    44,   137,   194,   136,   196,   136,
+   196,   136,   196,   136,   194,   138,   187,   137,   189,   138,
+     6,     0,     0,    65,    45,   137,   194,   136,   196,   136,
+   196,   136,   196,   136,   194,   138,   188,   137,   189,   138,
+     6,     0,   190,     0,   189,   190,     0,    72,   137,   194,
+   138,     6,     0,    72,   137,   199,   136,   199,   138,     6,
+     0,    72,   137,   199,   136,   199,   136,   199,   138,     6,
+     0,    68,     6,     0,    54,    44,   199,     7,   194,     6,
+     0,    54,    44,   199,     7,   194,    57,    59,   194,     6,
+     0,    54,    44,   199,     7,   194,    57,    58,   194,     6,
+     0,    54,    45,   137,   194,   138,     7,   199,     6,     0,
+    54,    45,   137,   194,   138,     7,   199,     4,     6,     0,
+    51,    45,   137,   194,   138,     7,   199,     6,     0,    54,
+    47,   137,   194,   138,     7,   199,     6,     0,    68,    45,
+   199,     7,   194,     6,     0,    68,    45,   199,     6,     0,
+    41,   199,    91,    45,   194,     6,     0,    44,   199,    91,
+    45,   194,     6,     0,    44,   199,    91,    47,   194,     6,
+     0,    45,   199,    91,    47,   194,     6,     0,    70,     6,
+     0,   195,     0,   130,   194,   131,     0,   120,   194,     0,
+   119,   194,     0,   125,   194,     0,   194,   120,   194,     0,
+   194,   119,   194,     0,   194,   121,   194,     0,   194,   122,
+   194,     0,   194,   123,   194,     0,   194,   129,   194,     0,
+   194,   115,   194,     0,   194,   117,   194,     0,   194,   116,
+   194,     0,   194,   118,   194,     0,   194,   112,   194,     0,
+   194,   113,   194,     0,   194,   111,   194,     0,   194,   110,
+   194,     0,   194,   109,   194,     8,   194,     0,    12,   130,
+   194,   131,     0,    13,   130,   194,   131,     0,    14,   130,
+   194,   131,     0,    15,   130,   194,   131,     0,    16,   130,
+   194,   131,     0,    17,   130,   194,   131,     0,    18,   130,
+   194,   131,     0,    19,   130,   194,   131,     0,    20,   130,
+   194,   131,     0,    22,   130,   194,   131,     0,    23,   130,
+   194,   136,   194,   131,     0,    24,   130,   194,   131,     0,
+    25,   130,   194,   131,     0,    26,   130,   194,   131,     0,
+    27,   130,   194,   131,     0,    28,   130,   194,   131,     0,
+    29,   130,   194,   131,     0,    30,   130,   194,   136,   194,
+   131,     0,    31,   130,   194,   136,   194,   131,     0,    32,
+   130,   194,   136,   194,   131,     0,    21,   130,   194,   131,
+     0,    12,   132,   194,   133,     0,    13,   132,   194,   133,
+     0,    14,   132,   194,   133,     0,    15,   132,   194,   133,
+     0,    16,   132,   194,   133,     0,    17,   132,   194,   133,
+     0,    18,   132,   194,   133,     0,    19,   132,   194,   133,
+     0,    20,   132,   194,   133,     0,    22,   132,   194,   133,
+     0,    23,   132,   194,   136,   194,   133,     0,    24,   132,
+   194,   133,     0,    25,   132,   194,   133,     0,    26,   132,
+   194,   133,     0,    27,   132,   194,   133,     0,    28,   132,
+   194,   133,     0,    29,   132,   194,   133,     0,    30,   132,
+   194,   136,   194,   133,     0,    31,   132,   194,   136,   194,
+   133,     0,    32,   132,   194,   136,   194,   133,     0,    21,
+   132,   194,   133,     0,     3,     0,     9,     0,    10,     0,
+    11,     0,   102,     0,   103,     0,   104,     0,     4,     0,
+     4,   139,   137,   194,   138,     0,     4,   132,   194,   133,
+     0,   135,     4,   132,   133,     0,     4,   163,     0,     4,
+   132,   194,   133,   163,     0,     4,   134,     4,     0,     4,
+   132,   194,   133,   134,     4,     0,     4,   134,     4,   163,
+     0,     4,   132,   194,   133,   134,     4,   163,     0,   101,
+   130,     5,   136,   194,   131,     0,   197,     0,   120,   196,
+     0,   119,   196,     0,   196,   120,   196,     0,   196,   119,
+   196,     0,   137,   194,   136,   194,   136,   194,   136,   194,
+   136,   194,   138,     0,   137,   194,   136,   194,   136,   194,
+   136,   194,   138,     0,   137,   194,   136,   194,   136,   194,
+   138,     0,   130,   194,   136,   194,   136,   194,   131,     0,
+     0,   137,   198,   138,     0,   130,   198,   131,     0,   199,
+     0,   198,   136,   199,     0,   194,     0,   200,     0,   137,
+   138,     0,   137,   201,   138,     0,   120,   137,   201,   138,
+     0,   194,     8,   194,     0,   194,     8,   194,     8,   194,
+     0,    41,   137,   194,   138,     0,   167,     0,   170,     0,
+   176,     0,     4,   132,   133,     0,   120,     4,   132,   133,
+     0,     4,   132,   137,   201,   138,   133,     0,   120,     4,
+   132,   137,   201,   138,   133,     0,   194,     0,   200,     0,
+   201,   136,   194,     0,   201,   136,   200,     0,   137,   194,
+   136,   194,   136,   194,   136,   194,   138,     0,   137,   194,
+   136,   194,   136,   194,   138,     0,     4,     0,     4,   134,
+    88,   134,     4,     0,   137,   204,   138,     0,     4,   132,
+   194,   133,   134,    89,     0,   202,     0,   204,   136,   202,
+     0,     5,     0,    40,     0,    35,   130,   205,   136,   205,
+   131,     0,    36,   130,   205,   131,     0,    37,   130,   205,
+   131,     0,    34,   130,   205,   131,     0,    34,   130,   205,
+   136,   201,   131,     0,    34,   130,     4,   134,     4,   131,
+     0,    34,   130,     4,   132,   194,   133,   134,     4,   131,
      0
 };
 
@@ -523,32 +514,31 @@ static const short yyrline[] = { 0,
    603,   638,   677,   731,   748,   766,   777,   796,   810,   827,
    853,   880,   894,   911,   925,   942,   962,   985,   995,  1009,
   1014,  1021,  1043,  1059,  1066,  1088,  1106,  1124,  1142,  1168,
-  1186,  1212,  1232,  1256,  1280,  1306,  1323,  1330,  1349,  1368,
-  1407,  1432,  1451,  1470,  1486,  1506,  1523,  1540,  1560,  1566,
-  1571,  1576,  1583,  1585,  1586,  1589,  1594,  1598,  1614,  1630,
-  1646,  1666,  1681,  1687,  1693,  1704,  1714,  1724,  1739,  1757,
-  1771,  1778,  1784,  1793,  1806,  1852,  1867,  1878,  1898,  1908,
-  1930,  1934,  1939,  1944,  1954,  1971,  1987,  2013,  2040,  2072,
-  2079,  2084,  2090,  2094,  2102,  2111,  2119,  2127,  2132,  2140,
-  2145,  2153,  2158,  2168,  2175,  2182,  2189,  2196,  2203,  2210,
-  2217,  2224,  2231,  2236,  2243,  2248,  2255,  2260,  2267,  2272,
-  2279,  2284,  2291,  2296,  2303,  2308,  2315,  2320,  2327,  2332,
-  2342,  2346,  2351,  2361,  2383,  2407,  2415,  2434,  2452,  2470,
-  2499,  2534,  2539,  2566,  2580,  2598,  2605,  2611,  2614,  2620,
-  2625,  2634,  2636,  2637,  2638,  2639,  2640,  2641,  2642,  2643,
-  2650,  2651,  2652,  2653,  2654,  2655,  2656,  2657,  2658,  2659,
-  2660,  2661,  2662,  2663,  2664,  2665,  2666,  2667,  2668,  2669,
-  2670,  2671,  2672,  2673,  2674,  2675,  2676,  2677,  2678,  2679,
-  2680,  2681,  2683,  2684,  2685,  2686,  2687,  2688,  2689,  2690,
-  2691,  2692,  2693,  2694,  2695,  2696,  2697,  2698,  2699,  2700,
-  2701,  2702,  2703,  2708,  2713,  2714,  2715,  2716,  2717,  2718,
-  2722,  2738,  2753,  2773,  2787,  2800,  2823,  2841,  2859,  2877,
-  2895,  2902,  2907,  2911,  2915,  2919,  2925,  2930,  2934,  2938,
-  2944,  2948,  2952,  2958,  2964,  2971,  2977,  2981,  2986,  2990,
-  3001,  3008,  3019,  3039,  3049,  3059,  3069,  3086,  3105,  3129,
-  3157,  3163,  3167,  3171,  3183,  3188,  3200,  3207,  3228,  3233,
-  3247,  3253,  3259,  3264,  3272,  3280,  3294,  3308,  3312,  3331,
-  3353
+  1186,  1212,  1232,  1256,  1280,  1306,  1323,  1330,  1349,  1367,
+  1405,  1421,  1441,  1458,  1475,  1495,  1501,  1506,  1511,  1518,
+  1520,  1521,  1524,  1529,  1533,  1549,  1565,  1581,  1601,  1616,
+  1622,  1628,  1639,  1649,  1659,  1674,  1692,  1706,  1713,  1719,
+  1728,  1741,  1787,  1802,  1813,  1833,  1843,  1865,  1869,  1874,
+  1879,  1889,  1906,  1922,  1948,  1975,  2007,  2014,  2019,  2025,
+  2029,  2037,  2046,  2054,  2062,  2067,  2075,  2080,  2088,  2093,
+  2103,  2110,  2117,  2124,  2131,  2138,  2145,  2152,  2159,  2166,
+  2171,  2178,  2183,  2190,  2195,  2202,  2207,  2214,  2219,  2226,
+  2231,  2238,  2243,  2250,  2255,  2262,  2267,  2277,  2281,  2286,
+  2296,  2318,  2342,  2350,  2369,  2387,  2405,  2434,  2469,  2474,
+  2501,  2515,  2533,  2540,  2546,  2549,  2557,  2567,  2569,  2570,
+  2571,  2572,  2573,  2574,  2575,  2576,  2583,  2584,  2585,  2586,
+  2587,  2588,  2589,  2590,  2591,  2592,  2593,  2594,  2595,  2596,
+  2597,  2598,  2599,  2600,  2601,  2602,  2603,  2604,  2605,  2606,
+  2607,  2608,  2609,  2610,  2611,  2612,  2613,  2614,  2616,  2617,
+  2618,  2619,  2620,  2621,  2622,  2623,  2624,  2625,  2626,  2627,
+  2628,  2629,  2630,  2631,  2632,  2633,  2634,  2635,  2636,  2641,
+  2646,  2647,  2648,  2649,  2650,  2651,  2655,  2671,  2686,  2706,
+  2720,  2733,  2756,  2774,  2792,  2810,  2828,  2835,  2840,  2844,
+  2848,  2852,  2858,  2863,  2867,  2871,  2877,  2881,  2885,  2891,
+  2897,  2904,  2910,  2914,  2919,  2923,  2934,  2941,  2952,  2972,
+  2982,  2992,  3002,  3019,  3038,  3062,  3090,  3096,  3100,  3104,
+  3116,  3121,  3133,  3140,  3161,  3166,  3180,  3186,  3192,  3197,
+  3205,  3213,  3227,  3241,  3245,  3264,  3286
 };
 #endif
 
@@ -564,64 +554,63 @@ static const char * const yytname[] = {   "$","error","$undefined.","tDOUBLE",
 "tVolume","tCharacteristic","tLength","tParametric","tElliptic","tPlane","tRuled",
 "tTransfinite","tComplex","tPhysical","tUsing","tBump","tProgression","tPlugin",
 "tRotate","tTranslate","tSymmetry","tDilate","tExtrude","tDuplicata","tLoop",
-"tRecombine","tDelete","tCoherence","tIntersect","tAttractor","tLayers","tAlias",
-"tAliasWithOptions","tText2D","tText3D","tInterpolationScheme","tTime","tGrain",
-"tCombine","tBSpline","tBezier","tNurbs","tOrder","tWith","tBounds","tKnots",
-"tColor","tColorTable","tFor","tIn","tEndFor","tIf","tEndIf","tExit","tReturn",
-"tCall","tFunction","tTrimmed","tShow","tHide","tGetValue","tGMSH_MAJOR_VERSION",
-"tGMSH_MINOR_VERSION","tGMSH_PATCH_VERSION","tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES",
-"tAFFECTDIVIDE","'?'","tOR","tAND","tEQUAL","tNOTEQUAL","tAPPROXEQUAL","'<'",
-"tLESSOREQUAL","'>'","tGREATEROREQUAL","'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT",
-"'!'","tPLUSPLUS","tMINUSMINUS","UNARYPREC","'^'","'('","')'","'['","']'","'.'",
-"'#'","','","'{'","'}'","'~'","All","GeoFormatItems","GeoFormatItem","SendToFile",
-"Printf","View","Views","ElementCoords","ElementValues","Element","@1","@2",
-"Text2DValues","Text2D","@3","Text3DValues","Text3D","@4","InterpolationMatrix",
-"Time","@5","Grain","NumericAffectation","NumericIncrement","Affectation","PhysicalId",
-"Shape","Transform","MultipleShape","ListOfShapes","Duplicata","Delete","Colorify",
-"Visibility","Command","Loop","Extrude","@6","@7","@8","@9","@10","@11","@12",
-"@13","@14","@15","@16","@17","ExtrudeParameters","ExtrudeParameter","Transfinite",
-"Embedding","Coherence","FExpr","FExpr_Single","VExpr","VExpr_Single","ListOfListOfDouble",
-"RecursiveListOfListOfDouble","ListOfDouble","FExpr_Multi","RecursiveListOfDouble",
-"ColorExpr","ListOfColor","RecursiveListOfColor","StringExpr", NULL
+"tRecombine","tDelete","tCoherence","tAttractor","tLayers","tAlias","tAliasWithOptions",
+"tText2D","tText3D","tInterpolationScheme","tTime","tGrain","tCombine","tBSpline",
+"tBezier","tNurbs","tOrder","tWith","tBounds","tKnots","tColor","tColorTable",
+"tFor","tIn","tEndFor","tIf","tEndIf","tExit","tReturn","tCall","tFunction",
+"tShow","tHide","tGetValue","tGMSH_MAJOR_VERSION","tGMSH_MINOR_VERSION","tGMSH_PATCH_VERSION",
+"tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES","tAFFECTDIVIDE","'?'","tOR","tAND",
+"tEQUAL","tNOTEQUAL","tAPPROXEQUAL","'<'","tLESSOREQUAL","'>'","tGREATEROREQUAL",
+"'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT","'!'","tPLUSPLUS","tMINUSMINUS",
+"UNARYPREC","'^'","'('","')'","'['","']'","'.'","'#'","','","'{'","'}'","'~'",
+"All","GeoFormatItems","GeoFormatItem","SendToFile","Printf","View","Views",
+"ElementCoords","ElementValues","Element","@1","@2","Text2DValues","Text2D",
+"@3","Text3DValues","Text3D","@4","InterpolationMatrix","Time","@5","Grain",
+"NumericAffectation","NumericIncrement","Affectation","PhysicalId","Shape","Transform",
+"MultipleShape","ListOfShapes","Duplicata","Delete","Colorify","Visibility",
+"Command","Loop","Extrude","@6","@7","@8","@9","@10","@11","@12","@13","@14",
+"@15","@16","@17","ExtrudeParameters","ExtrudeParameter","Transfinite","Embedding",
+"Coherence","FExpr","FExpr_Single","VExpr","VExpr_Single","RecursiveListOfListOfDouble",
+"ListOfDouble","FExpr_Multi","RecursiveListOfDouble","ColorExpr","ListOfColor",
+"RecursiveListOfColor","StringExpr", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-   142,   142,   143,   143,   144,   144,   144,   144,   144,   144,
-   144,   144,   144,   144,   144,   144,   144,   144,   144,   145,
-   145,   146,   146,   146,   146,   147,   147,   148,   148,   148,
-   148,   148,   148,   148,   149,   149,   150,   150,   152,   153,
-   151,   154,   154,   156,   155,   157,   157,   159,   158,   160,
-   162,   161,   163,   164,   164,   164,   164,   164,   165,   165,
+   140,   140,   141,   141,   142,   142,   142,   142,   142,   142,
+   142,   142,   142,   142,   142,   142,   142,   142,   142,   143,
+   143,   144,   144,   144,   144,   145,   145,   146,   146,   146,
+   146,   146,   146,   146,   147,   147,   148,   148,   150,   151,
+   149,   152,   152,   154,   153,   155,   155,   157,   156,   158,
+   160,   159,   161,   162,   162,   162,   162,   162,   163,   163,
+   164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
+   164,   164,   164,   164,   164,   164,   164,   164,   164,   165,
+   165,   166,   166,   166,   166,   166,   166,   166,   166,   166,
    166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
-   166,   166,   166,   166,   166,   166,   166,   166,   166,   167,
-   167,   168,   168,   168,   168,   168,   168,   168,   168,   168,
-   168,   168,   168,   168,   168,   168,   168,   168,   168,   168,
-   168,   168,   168,   168,   168,   168,   168,   168,   169,   169,
-   169,   169,   170,   170,   170,   171,   171,   171,   171,   171,
-   171,   172,   172,   172,   172,   173,   173,   173,   173,   174,
-   175,   175,   175,   175,   176,   176,   176,   176,   176,   176,
-   176,   176,   176,   176,   177,   177,   177,   177,   177,   177,
-   177,   177,   177,   177,   178,   178,   178,   179,   178,   180,
-   178,   181,   178,   178,   178,   178,   178,   178,   178,   178,
-   178,   178,   182,   178,   183,   178,   184,   178,   185,   178,
-   186,   178,   187,   178,   188,   178,   189,   178,   190,   178,
-   191,   191,   192,   192,   192,   192,   193,   193,   193,   193,
-   193,   193,   193,   193,   193,   194,   194,   194,   194,   195,
-   195,   196,   196,   196,   196,   196,   196,   196,   196,   196,
-   196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
-   196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
-   196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
-   196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
-   196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
-   196,   196,   196,   197,   197,   197,   197,   197,   197,   197,
-   197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
-   197,   198,   198,   198,   198,   198,   199,   199,   199,   199,
-   200,   200,   200,   201,   201,   202,   202,   202,   202,   202,
-   203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
-   204,   204,   204,   204,   205,   205,   205,   205,   206,   206,
-   207,   207,   208,   208,   208,   208,   208,   208,   208,   208,
-   208
+   166,   166,   166,   166,   166,   167,   167,   167,   167,   168,
+   168,   168,   169,   169,   169,   169,   169,   169,   170,   170,
+   170,   170,   171,   171,   171,   171,   172,   173,   173,   173,
+   173,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+   174,   175,   175,   175,   175,   175,   175,   175,   175,   175,
+   175,   176,   176,   176,   177,   176,   178,   176,   179,   176,
+   176,   176,   176,   176,   176,   176,   176,   176,   176,   180,
+   176,   181,   176,   182,   176,   183,   176,   184,   176,   185,
+   176,   186,   176,   187,   176,   188,   176,   189,   189,   190,
+   190,   190,   190,   191,   191,   191,   191,   191,   191,   191,
+   191,   191,   192,   192,   192,   192,   193,   194,   194,   194,
+   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
+   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
+   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
+   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
+   194,   194,   194,   194,   194,   194,   194,   194,   194,   194,
+   194,   194,   194,   194,   194,   194,   194,   194,   194,   195,
+   195,   195,   195,   195,   195,   195,   195,   195,   195,   195,
+   195,   195,   195,   195,   195,   195,   195,   196,   196,   196,
+   196,   196,   197,   197,   197,   197,    -1,    -1,    -1,   198,
+   198,   199,   199,   199,   199,   199,   200,   200,   200,   200,
+   200,   200,   200,   200,   200,   200,   201,   201,   201,   201,
+   202,   202,   202,   202,   203,   203,   204,   204,   205,   205,
+   205,   205,   205,   205,   205,   205,   205
 };
 
 static const short yyr2[] = {     0,
@@ -635,31 +624,30 @@ static const short yyr2[] = {     0,
      9,     5,     8,     8,    11,     6,     9,     9,     9,     1,
      1,     7,     8,    12,     6,     7,     7,     7,     9,     7,
      9,    17,     7,     7,    11,     8,    12,     8,     8,     8,
-    12,    22,    20,     8,     8,     8,     7,     8,     5,    11,
-     5,     9,     1,     1,     1,     0,     2,     6,     6,     6,
-     6,     4,     6,     6,     6,     4,     6,     3,     4,     5,
-     3,     3,     4,     4,     3,     7,     7,     3,     7,     3,
-     2,     2,    15,     2,     6,     8,     8,    10,     1,     2,
-     1,     3,     4,     1,     5,    11,    13,     0,     7,     0,
-    13,     0,    15,     8,     8,     8,    12,    12,    12,    14,
-    14,    14,     0,    12,     0,    12,     0,    12,     0,    16,
-     0,    16,     0,    16,     0,    18,     0,    18,     0,    18,
-     1,     2,     5,     7,     9,     2,     6,     9,     9,     8,
-     9,     8,     8,     6,     4,     6,     6,     6,     6,     2,
-     2,     1,     3,     2,     2,     2,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     5,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     4,     6,     4,     4,     4,     4,     4,     4,     6,     6,
-     6,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     4,     4,     6,     4,     4,     4,     4,     4,     4,     6,
-     6,     6,     4,     1,     1,     1,     1,     1,     1,     1,
-     1,     5,     4,     4,     2,     5,     3,     6,     4,     7,
-     6,     1,     2,     2,     3,     3,    11,     9,     7,     7,
-     0,     3,     3,     1,     3,     1,     1,     2,     3,     4,
-     3,     5,     4,     1,     1,     1,     3,     4,     6,     7,
-     1,     1,     3,     3,     9,     7,     1,     5,     3,     6,
-     1,     3,     1,     1,     6,     4,     4,     4,     6,     6,
-     9
+     8,     8,     8,     7,     8,     5,    11,     5,     9,     1,
+     1,     1,     0,     2,     6,     6,     6,     6,     4,     6,
+     6,     6,     4,     6,     3,     4,     5,     3,     3,     4,
+     4,     3,     7,     7,     3,     7,     3,     2,     2,    15,
+     2,     6,     8,     8,    10,     1,     2,     1,     3,     4,
+     1,     5,    11,    13,     0,     7,     0,    13,     0,    15,
+     8,     8,     8,    12,    12,    12,    14,    14,    14,     0,
+    12,     0,    12,     0,    12,     0,    16,     0,    16,     0,
+    16,     0,    18,     0,    18,     0,    18,     1,     2,     5,
+     7,     9,     2,     6,     9,     9,     8,     9,     8,     8,
+     6,     4,     6,     6,     6,     6,     2,     1,     3,     2,
+     2,     2,     3,     3,     3,     3,     3,     3,     3,     3,
+     3,     3,     3,     3,     3,     3,     5,     4,     4,     4,
+     4,     4,     4,     4,     4,     4,     4,     6,     4,     4,
+     4,     4,     4,     4,     6,     6,     6,     4,     4,     4,
+     4,     4,     4,     4,     4,     4,     4,     4,     6,     4,
+     4,     4,     4,     4,     4,     6,     6,     6,     4,     1,
+     1,     1,     1,     1,     1,     1,     1,     5,     4,     4,
+     2,     5,     3,     6,     4,     7,     6,     1,     2,     2,
+     3,     3,    11,     9,     7,     7,     0,     3,     3,     1,
+     3,     1,     1,     2,     3,     4,     3,     5,     4,     1,
+     1,     1,     3,     4,     6,     7,     1,     1,     3,     3,
+     9,     7,     1,     5,     3,     6,     1,     3,     1,     1,
+     6,     4,     4,     4,     6,     6,     9
 };
 
 static const short yydefact[] = {     0,
@@ -667,1581 +655,1507 @@ static const short yydefact[] = {     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   149,     0,   154,     0,   151,     0,     0,     0,
-     0,     0,     4,     6,     5,     7,     8,     9,    10,    11,
-    12,    13,    19,    18,    14,    15,    16,    17,   274,   281,
-   333,    54,   275,   276,   277,     0,     0,     0,     0,     0,
+     0,   146,     0,   151,     0,   148,     0,     0,     0,     0,
+     4,     6,     5,     7,     8,     9,    10,    11,    12,    13,
+    19,    18,    14,    15,    16,    17,   270,   277,   329,    54,
+   271,   272,   273,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   330,     0,
+   274,   275,   276,    55,    56,    57,    58,     0,     0,     0,
+    59,    60,     0,     0,     0,     0,     0,     0,     0,   208,
+     0,     0,   139,     0,   141,   277,     0,     0,     0,     0,
+   310,   311,   312,   302,     0,   303,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   334,     0,   278,   279,   280,    55,    56,    57,    58,     0,
-     0,     0,    59,    60,     0,     0,     0,     0,     0,     0,
-     0,   212,     0,     0,   142,     0,   144,   281,     0,     0,
-     0,     0,   314,   315,   316,   306,     0,   307,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
+     0,     0,     0,     0,   113,     0,     0,   113,   207,     0,
+     0,     0,     0,     0,     0,     0,     0,   323,     0,     0,
+     0,     0,     0,   138,     0,   147,   329,   113,     0,   113,
+     0,     0,     0,     0,     0,   281,     0,    28,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   292,     0,     0,
-     0,     0,     0,     0,     0,     0,   116,     0,     0,   116,
-   210,   211,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   327,     0,     0,     0,     0,     0,   141,     0,   150,
-     0,   333,   116,     0,   116,     0,     0,     0,     0,     0,
-   285,     0,    28,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   277,   211,   210,   212,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    66,   135,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   281,   215,   214,   216,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    66,   138,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   132,     0,     0,     0,     0,
+   277,     0,     0,     0,   304,   317,   318,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   135,     0,     0,     0,     0,   281,     0,     0,     0,   308,
-   321,   322,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
-   293,     0,     0,     0,     0,   116,   116,     0,     0,     0,
-     0,     0,     0,     0,     0,   116,     0,     0,     0,     0,
-   128,     0,     0,     0,     0,     0,     0,   140,     0,     0,
-     0,     0,     0,     0,     0,   116,     0,     0,     0,   152,
-     0,     0,   131,     0,   132,     0,     0,   287,     0,     0,
+     0,     0,     0,     0,   290,   289,     0,     0,     0,     0,
+   113,   113,     0,     0,     0,     0,     0,     0,     0,     0,
+   113,     0,     0,     0,     0,   125,     0,     0,     0,     0,
+     0,     0,   137,     0,     0,     0,     0,     0,   113,     0,
+     0,     0,   149,     0,   128,     0,   129,     0,     0,   283,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   213,     0,     0,     0,     0,    54,     0,     0,     0,     0,
-     0,    61,     0,   230,   229,   227,   228,   223,   225,   224,
-   226,   218,   217,   219,   220,   221,   222,     0,     0,     0,
-   317,     0,     0,     0,     0,     0,   213,     0,   309,   311,
-     0,     0,     0,     0,   213,     0,     0,     0,     0,     0,
+     0,     0,   209,     0,     0,     0,     0,    54,     0,     0,
+     0,     0,     0,    61,     0,   226,   225,   223,   224,   219,
+   221,   220,   222,   214,   213,   215,   216,   217,   218,     0,
+     0,     0,   313,     0,     0,     0,     0,     0,   209,     0,
+   305,   307,     0,     0,     0,     0,   209,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    80,    81,     0,     0,     0,     0,     0,     0,     0,
-   296,   295,   115,     0,   114,   113,     0,     0,     0,     0,
-     0,     0,     0,   158,     0,     0,     0,     0,     0,   122,
-   117,   205,     0,   129,     0,   126,     0,     0,     0,     0,
+     0,     0,     0,    80,    81,     0,     0,     0,     0,     0,
+     0,     0,   292,   291,   112,     0,   111,   110,     0,     0,
+     0,     0,     0,     0,     0,   155,     0,     0,     0,     0,
+     0,   119,   114,   202,     0,   126,     0,   123,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   153,     0,   133,   134,     0,   283,   289,     0,    28,    39,
-     0,     0,     0,    51,     0,     0,    29,    30,    31,    32,
-    33,    34,   232,   253,   233,   254,   234,   255,   235,   256,
-   236,   257,   237,   258,   238,   259,   239,   260,   240,   261,
-   252,   273,   241,   262,     0,     0,   243,   264,   244,   265,
-   245,   266,   246,   267,   247,   268,   248,   269,     0,     0,
-     0,     0,     0,     0,     0,     0,   338,     0,     0,   336,
-   337,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    72,     0,     0,     0,     0,   284,     0,    22,    20,     0,
-     0,     0,     0,   283,   313,   318,     0,   310,     0,   323,
-   324,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   150,   130,   131,     0,   279,   285,     0,    28,    39,     0,
+     0,     0,    51,     0,     0,    29,    30,    31,    32,    33,
+    34,   228,   249,   229,   250,   230,   251,   231,   252,   232,
+   253,   233,   254,   234,   255,   235,   256,   236,   257,   248,
+   269,   237,   258,     0,     0,   239,   260,   240,   261,   241,
+   262,   242,   263,   243,   264,   244,   265,     0,     0,     0,
+     0,     0,     0,     0,     0,   334,     0,     0,   332,   333,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    72,
+     0,     0,     0,     0,   280,     0,    22,    20,     0,     0,
+     0,     0,   279,   309,   314,     0,   306,     0,   319,   320,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   109,   111,     0,     0,     0,     0,     0,   155,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   106,
+   108,     0,     0,     0,     0,     0,   152,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   130,
-     0,     0,     0,     0,     0,   286,     0,   282,     0,     0,
-     0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    64,
-    65,     0,     0,     0,     0,     0,    67,    68,    70,     0,
-     0,   331,     0,    76,   231,    21,     0,     0,     0,     0,
-     0,     0,   312,   206,     0,     0,     0,     0,   207,   208,
-     0,   209,     0,     0,    85,     0,     0,     0,     0,   197,
+     0,     0,     0,     0,     0,     0,   127,     0,     0,     0,
+     0,   282,     0,   278,     0,     0,     0,     0,     0,     0,
+     0,    26,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    64,    65,     0,     0,     0,
+     0,     0,    67,    68,    70,     0,     0,   327,     0,    76,
+   227,    21,     0,     0,     0,     0,     0,     0,   308,   203,
+     0,     0,     0,     0,   204,   205,     0,   206,     0,     0,
+    85,     0,     0,     0,     0,   194,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   188,   120,     0,     0,
+     0,     0,     0,     0,   201,   124,     0,     0,   121,   122,
+     0,     0,     0,   324,     0,     0,     0,   142,   134,   284,
+   133,     0,     0,     0,     0,     0,   300,     0,     0,   238,
+   259,   245,   266,   246,   267,   247,   268,     0,   336,   335,
+   331,   287,     0,    54,     0,     0,     0,     0,    62,     0,
+     0,     0,   325,    23,    24,     0,     0,   315,     0,    82,
+    88,     0,    90,     0,     0,    86,     0,    87,   104,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   191,   123,     0,     0,     0,     0,     0,     0,   204,   127,
-     0,     0,   124,   125,     0,     0,     0,   301,     0,   328,
-     0,     0,     0,   145,     0,   137,   288,   136,     0,     0,
-     0,     0,     0,   304,     0,     0,   242,   263,   249,   270,
-   250,   271,   251,   272,     0,   340,   339,   335,   291,     0,
-    54,     0,     0,     0,     0,    62,     0,     0,     0,   329,
-    23,    24,     0,     0,   319,     0,    82,    88,     0,    90,
-     0,     0,    86,     0,    87,   107,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   139,
-     0,     0,     0,     0,   116,     0,   173,     0,   175,     0,
-   177,     0,     0,   196,     0,   159,   192,     0,     0,     0,
-     0,     0,     0,     0,     0,    93,    94,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   290,    27,     0,    35,
-     0,     0,     0,     0,     0,    37,     0,     0,     0,     0,
-     0,    73,     0,     0,    74,     0,   332,     0,     0,   320,
-     0,     0,    96,   104,     0,   202,    99,   100,     0,     0,
-     0,   200,   203,   106,    83,    98,   105,   108,     0,     0,
-     0,   300,     0,   299,     0,     0,   164,     0,     0,   165,
-     0,     0,   166,     0,     0,     0,   306,     0,   118,   119,
-   120,   121,     0,     0,   301,     0,     0,     0,     0,     0,
-   326,     0,   147,   146,     0,    40,     0,     0,     0,   305,
-     0,     0,     0,     0,     0,    63,    69,    71,     0,    77,
-     0,    25,     0,    89,    91,     0,   199,   198,   201,    78,
-    79,   116,     0,   112,     0,     0,     0,     0,     0,     0,
-   116,     0,     0,     0,     0,     0,     0,   303,   302,     0,
-     0,     0,     0,     0,     0,    36,     0,     0,     0,    38,
-    52,    53,   341,     0,   330,     0,     0,     0,     0,   298,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   160,
-     0,   193,     0,     0,     0,     0,     0,     0,   325,   148,
-     0,     0,     0,     0,     0,    75,     0,     0,   110,     0,
-   179,     0,     0,   181,     0,     0,   183,     0,     0,   156,
-     0,   116,     0,     0,     0,     0,     0,     0,    95,     0,
-     0,    44,     0,    50,     0,     0,   297,   167,     0,     0,
-   174,   168,     0,     0,   176,   169,     0,     0,   178,     0,
-   162,     0,   194,    84,    97,     0,     0,   101,     0,     0,
-     0,     0,     0,     0,   185,     0,   187,     0,   189,   161,
-   157,     0,     0,     0,     0,    41,     0,    48,     0,     0,
-     0,   170,     0,     0,   171,     0,     0,   172,     0,     0,
-   195,     0,     0,     0,    42,     0,   143,     0,     0,     0,
-     0,     0,     0,     0,   163,     0,     0,     0,     0,     0,
-     0,   180,     0,   182,     0,   184,     0,     0,     0,    43,
-    45,     0,    46,    92,     0,     0,     0,     0,     0,     0,
-     0,   186,   188,   190,     0,     0,    47,    49,     0,     0,
-     0,   103,     0,   102,     0,     0,     0
+     0,     0,   136,     0,     0,     0,     0,   113,     0,   170,
+     0,   172,     0,   174,     0,     0,   193,     0,   156,   189,
+     0,     0,     0,     0,     0,     0,     0,     0,    93,    94,
+     0,     0,     0,     0,   286,    27,     0,    35,     0,     0,
+     0,     0,     0,    37,     0,     0,     0,     0,     0,    73,
+     0,     0,    74,     0,   328,     0,     0,   316,     0,     0,
+    96,   101,     0,   199,    99,   100,     0,     0,     0,   197,
+   200,   103,    83,    98,   102,   105,     0,     0,     0,   296,
+     0,   295,     0,     0,   161,     0,     0,   162,     0,     0,
+   163,     0,     0,     0,   302,     0,   115,   116,   117,   118,
+     0,     0,     0,     0,   322,     0,   144,   143,    40,     0,
+     0,     0,   301,     0,     0,     0,     0,     0,    63,    69,
+    71,     0,    77,     0,    25,     0,    89,    91,     0,   196,
+   195,   198,    78,    79,   113,     0,   109,     0,     0,     0,
+     0,     0,     0,   113,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    36,     0,     0,     0,    38,    52,    53,
+   337,     0,   326,     0,     0,     0,     0,   294,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   157,     0,   190,
+     0,     0,     0,     0,   321,   145,     0,     0,     0,     0,
+    75,     0,     0,   107,     0,   176,     0,     0,   178,     0,
+     0,   180,     0,     0,   153,     0,   113,     0,     0,     0,
+     0,    95,     0,    44,     0,    50,     0,     0,   293,   164,
+     0,     0,   171,   165,     0,     0,   173,   166,     0,     0,
+   175,     0,   159,     0,   191,    84,    97,     0,     0,     0,
+     0,     0,     0,   182,     0,   184,     0,   186,   158,   154,
+     0,     0,    41,     0,    48,     0,     0,     0,   167,     0,
+     0,   168,     0,     0,   169,     0,     0,   192,     0,    42,
+     0,   140,     0,     0,     0,     0,     0,     0,     0,   160,
+     0,     0,     0,     0,   177,     0,   179,     0,   181,     0,
+    43,    45,     0,    46,    92,     0,     0,     0,     0,     0,
+   183,   185,   187,    47,    49,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1225,
-     2,    53,   630,    54,    55,   381,   919,   925,   557,   710,
-  1045,  1174,   558,  1140,  1202,   559,  1176,   560,   561,   714,
-   562,   119,   211,    56,   491,   521,   133,   504,   505,   134,
-    60,    61,    62,    63,    64,   135,   679,  1101,  1152,   968,
-   971,   974,  1119,  1123,  1127,  1163,  1166,  1169,   790,   791,
-    66,    67,    68,   136,   122,   330,   168,   911,   823,   824,
-   138,   303,   194,   625,   743,   493
+static const short yydefgoto[] = {  1166,
+     2,    51,   619,    52,    53,   373,   897,   903,   546,   696,
+  1013,  1129,   547,  1099,  1153,   548,  1131,   549,   550,   700,
+   551,   117,   206,    54,   483,   513,   131,   496,   497,   132,
+    58,    59,    60,    61,    62,   133,   668,  1066,  1111,   946,
+   949,   952,  1081,  1085,  1089,  1120,  1123,  1126,   776,   777,
+    64,    65,    66,   134,   120,   325,   166,   806,   807,   136,
+   298,   190,   614,   729,   485
 };
 
-static const short yypact[] = {  2774,
-    21,  3171,-32768,  2316,  -114,    18,    29,  1719,   -84,   -63,
-  1457,  1588,   -60,   -50,    70,    -9,    84,   121,   128,   558,
-   132,   595,    74,   113,   -43,   -43,   119,   285,    10,   226,
-    11,   293,   310,   147,   330,   343,   352,   227,   239,   -33,
-    13,    19,-32768,   242,-32768,   318,-32768,   411,   417,   393,
-    17,    24,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    12,
-    15,-32768,-32768,-32768,-32768,   231,   250,   317,   398,   432,
-   459,   495,   503,   520,   521,   539,   540,   602,   607,   629,
-   648,   652,   679,   686,   700,   701,   263,   307,   321,   325,
--32768,   336,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  2531,
-  2531,  2531,-32768,-32768,  2531,  1917,    28,   472,  2531,   480,
-   635,-32768,   505,   474,-32768,  2531,-32768,   424,   362,  2155,
-  2531,  1308,-32768,-32768,-32768,  2588,   410,-32768,  2531,  2531,
-   413,  2531,   450,   438,   491,  2531,  2531,  1850,  2531,   467,
-   511,   543,  1850,   544,   550,   552,   565,   577,   578,   588,
-   608,   -43,   -43,   -43,  2531,  2531,   167,-32768,   315,   -43,
-   551,   574,   591,  2185,   320,   609,-32768,  1850,    34,-32768,
--32768,-32768,  1850,  1850,   617,   645,   732,  2531,  2531,   -31,
-  2531,   649,  2531,   671,   722,  2531,  2531,-32768,   809,-32768,
-   687,-32768,-32768,   831,-32768,   835,   719,  2531,   852,   721,
--32768,   -43,-32768,  2531,  2531,  2531,  2531,  2531,  2531,  2531,
-  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,
-  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,
-  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,
-  2531,  2531,  2531,  2531,  2531,   610,   457,   457,   457,   860,
-   735,   730,   730,   730,  5242,    14,  2366,  1644,   380,   746,
-   859,   754,   681,-32768,-32768,  2531,  2531,  2531,  2531,  2531,
-  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,  2531,
--32768,   -94,  3725,  1981,  2531,   775,  2366,  5265,  2561,-32768,
-  2588,-32768,   702,  2531,   847,  5288,  5311,  2531,  5334,   697,
-  2531,   861,  5357,  5380,   900,  5403,  2531,  2531,  2531,   906,
-  2531,  2531,  2531,  2496,  2496,  2496,  2496,   795,   -18,-32768,
--32768,  3747,  3769,   -43,   -43,   556,   556,   190,  2531,  2531,
-  2531,  2185,  2185,  2531,   267,-32768,  2531,  2836,    85,   908,
--32768,  2531,  2857,   950,   958,  2531,  2531,-32768,  5426,  5449,
-   828,  2531,  5472,   877,  3791,-32768,   843,  2603,  5495,-32768,
-  2531,  2903,-32768,  2963,-32768,  2531,  1775,   139,  2531,   324,
-    -3,  5518,  4517,  5541,  4542,  5564,  4567,  5587,  4592,  5610,
-  4617,  5633,  4642,  5656,  4667,  5679,  4692,  5702,  4717,  5725,
-  4742,  5748,  4767,  3813,  3835,  5771,  4792,  5794,  4817,  5817,
-  4842,  5840,  4867,  5863,  4892,  5886,  4917,  3857,  3879,  3901,
-  3923,  3945,  3967,   736,   -28,   845,   851,   857,   853,  2531,
--32768,  1850,  1850,   740,    73,   457,  2531,   979,   985,    16,
-   862,-32768,  2618,   545,   650,   705,   705,   666,   666,   666,
-   666,   375,   375,   730,   730,   730,   730,    20,  2366,  2531,
--32768,  2366,  4942,  2849,  2118,   743,   987,  2366,-32768,  2633,
-  2531,   988,   989,  5909,   997,  2531,  2531,  5932,  2531,  1007,
-  1008,  2531,  1009,  2976,  5955,  5978,  2531,  3193,  3217,  6001,
-   884,  6369,-32768,   885,   887,   891,   890,   -43,  2531,  2531,
--32768,-32768,-32768,   889,   802,-32768,   893,  2531,  3989,  4011,
-  4033,  3697,   -43,  2984,  4967,   -76,   -30,   -42,    32,-32768,
--32768,-32768,  2531,-32768,  4992,-32768,   895,   896,  5017,  5042,
-  1021,  1031,   907,  6024,  1033,   905,  2531,  3030,  2531,  2531,
--32768,  6047,-32768,-32768,  5067,    31,-32768,  3241,-32768,-32768,
-   910,   913,   909,-32768,   914,   986,-32768,-32768,-32768,-32768,
+static const short yypact[] = {  2724,
+    27,  3035,-32768,  2115,  -112,     8,    63,  1556,  -106,   -41,
+  1298,  1427,   -15,    -7,    82,    33,   103,   125,   132,   540,
+   153,   397,    73,    89,    72,    72,   100,   326,    12,   165,
+    13,   239,    26,   298,   305,   341,   218,   221,   228,    17,
+    39,-32768,   245,-32768,   362,-32768,   409,   417,    22,    60,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,     0,    18,-32768,
+-32768,-32768,-32768,   -77,   204,   259,   275,   432,   436,   450,
+   484,   494,   498,   511,   553,   554,   615,   616,   639,   642,
+   653,   654,   662,   672,   256,   317,   318,   323,-32768,   324,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,  2326,  2326,  2326,
+-32768,-32768,  2326,  1751,    40,   457,  2326,   477,   836,-32768,
+   478,   485,-32768,  2326,-32768,   449,   356,   678,  2326,  1162,
+-32768,-32768,-32768,  2454,   407,-32768,  2326,  2326,   383,  2326,
+   430,   399,   437,  2326,  2326,  1685,  2326,   411,   406,   426,
+  1685,   420,   468,   456,   517,   518,   527,   537,   650,    72,
+    72,    72,  2326,  2326,    79,-32768,   114,    72,   538,   539,
+   543,  1986,   176,   532,-32768,  1685,    32,-32768,-32768,  1685,
+  1685,   579,   580,   665,  2326,  2326,  2326,   585,  2326,   583,
+   637,  2326,  2326,-32768,   732,-32768,-32768,-32768,   736,-32768,
+   744,   607,  2326,   747,   621,-32768,    72,-32768,  2326,  2326,
+  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,
+  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,
+  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,
+  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,
+   505,   415,   415,   415,   763,   524,   647,   647,   647,  5017,
+    16,  2163,  1089,   112,   643,   789,   667,   858,-32768,-32768,
+  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,  2326,
+  2326,  2326,  2326,  2326,  2326,-32768,   -65,  3591,  1814,  2326,
+   534,  2163,  5040,  2356,-32768,  2454,-32768,   487,  2326,   761,
+  5063,  5086,  2326,  5109,   625,  2326,   771,  5132,  5155,   814,
+  5178,  2326,  2326,  2326,   821,  2326,  2326,  2326,  2291,  2291,
+  2291,  2291,   706,   104,-32768,-32768,  3613,  3635,    72,    72,
+   727,   727,   372,  2326,  2326,  2326,  1986,  1986,  2326,   396,
+-32768,  2326,  2784,   207,   838,-32768,  2326,  2801,   855,   859,
+  2326,  2326,-32768,  5201,  5224,  5247,   777,  3657,-32768,   740,
+  2469,  5270,-32768,  2844,-32768,  2861,-32768,  2326,  1483,   214,
+  2326,   192,     3,  5293,  1612,  5316,  4317,  5339,  4342,  5362,
+  4367,  5385,  4392,  5408,  4417,  5431,  4442,  5454,  4467,  5477,
+  4492,  5500,  4517,  5523,  4542,  3679,  3701,  5546,  4567,  5569,
+  4592,  5592,  4617,  5615,  4642,  5638,  4667,  5661,  4692,  3723,
+  3745,  3767,  3789,  3811,  3833,   673,   -23,   737,   748,   749,
+   742,  2326,-32768,  1685,  1685,   676,   291,   415,  2326,   875,
+   878,    21,   751,-32768,  2544,   797,  1357,   773,   773,   404,
+   404,   404,   404,   178,   178,   647,   647,   647,   647,    20,
+  2163,  2326,-32768,  2163,  4717,  3087,  1949,   681,   879,  2163,
+-32768,  2585,  2326,   892,   893,  5684,   894,  2326,  2326,  5707,
+  2326,   896,   898,  2326,   899,  3111,  5730,  5753,  2326,  3135,
+  3159,  5776,   780,  2570,-32768,   791,   792,   793,   794,    72,
+  2326,  2326,-32768,-32768,-32768,   787,  2559,-32768,   795,  2326,
+  3855,  3877,  3899,  2516,    72,  2904,  4742,   -69,   -47,   -26,
+   -31,-32768,-32768,-32768,  2326,-32768,  4767,-32768,   790,   798,
+  4792,  4817,   922,   925,   927,   802,  2326,  2921,  2326,  2326,
+-32768,-32768,-32768,  4842,    67,-32768,  3183,-32768,-32768,   807,
+   808,   803,-32768,   809,   935,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  2531,  2531,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  2531,  2531,
-  2531,  2531,  2531,  2531,  2531,  1043,-32768,  2366,   457,-32768,
--32768,  2531,  1044,  1045,   918,    86,  2531,  1048,  1055,   825,
--32768,  1042,   940,    13,  1069,-32768,  2531,-32768,   960,   457,
-   159,  4055,   749,   496,-32768,-32768,  2366,-32768,   -43,  2588,
--32768,  2531,   856,  1850,  1850,  1070,  1850,   888,   945,  1073,
-  1016,  1850,  1850,  1078,   942,  1075,  1076,  1079,   604,  1080,
-  1082,  1083,  1085,  1086,  1088,  1089,  1081,   322,  4077,  4099,
--32768,-32768,  3265,   -43,   -43,   -43,   344,-32768,   312,  1091,
-  2531,  2366,  2531,  2366,  2366,  2366,  1148,  1092,  2531,  2531,
-  1093,  1094,  1850,  1850,  2531,  1095,  1850,  1097,  4121,-32768,
-  2648,   581,  1096,  1098,  1101,-32768,  1100,-32768,     7,   975,
-  2531,  2531,  1850,   969,  2531,-32768,  6070,  5092,  6093,  5117,
-  6116,  5142,  6139,  5167,  5192,   977,   248,   980,  6162,-32768,
--32768,    23,   440,   976,  1107,  1179,-32768,-32768,-32768,    13,
-  2531,-32768,   758,-32768,  6369,-32768,  1109,    39,  2531,   981,
-   759,     3,  6369,-32768,    64,    82,  1850,  1113,-32768,-32768,
-  1850,-32768,  1115,  1116,-32768,  2531,  1850,  1850,  1850,-32768,
-   350,  1850,  1850,  1850,  1850,  1850,  1850,  1850,   642,  2531,
-  2531,  2531,   984,   187,   228,   391,  2185,  1118,   993,   -27,
--32768,-32768,  6185,   781,  6208,   782,   785,   786,-32768,-32768,
-  4143,  4165,-32768,-32768,  1136,  1137,  6231,    68,  1056,-32768,
-  2531,  2531,  2531,-32768,  1006,-32768,   139,-32768,  1140,  2531,
-  4187,  4209,   789,-32768,  2531,  6254,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1012,-32768,-32768,-32768,-32768,  1850,
-   457,  2531,  1143,  1146,    16,-32768,  1145,  5217,    13,-32768,
--32768,-32768,   457,  4231,-32768,  1017,-32768,-32768,   -43,-32768,
-   -43,  1147,-32768,  1150,-32768,-32768,  4253,  1151,  1152,  1153,
-  2531,  2531,   869,  1154,  1155,  1156,  1157,  1158,  1159,-32768,
-  2496,  3289,  6277,  2343,   556,   -43,  1162,   -43,  1163,   -43,
-  1165,  3313,   416,-32768,  1850,-32768,-32768,   987,  1166,   997,
-  1167,  1168,  1169,  2531,  2531,-32768,-32768,  1170,  1850,  1850,
-  1090,  1850,  2670,   279,  6300,  2531,-32768,-32768,   447,  6369,
-  2531,  2531,  1850,  1037,   793,  6369,  1850,  1175,  1174,  1176,
-  1233,-32768,  1180,  1188,-32768,  1071,-32768,  1200,  2531,-32768,
-    56,    75,-32768,-32768,  2531,-32768,-32768,-32768,  1422,  1553,
-  1204,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1684,  1205,
-  1074,-32768,  2531,-32768,  1041,   419,-32768,  1077,   434,-32768,
-  1084,   441,-32768,  1087,  1099,  2531,   403,  1105,-32768,-32768,
--32768,-32768,  4275,  4297,    68,   478,   794,  1114,  1127,  2531,
--32768,  2531,-32768,-32768,  4319,-32768,  2531,  4341,  4363,-32768,
-  1850,  2531,  1208,  1211,  1102,-32768,-32768,-32768,    13,-32768,
-  1128,-32768,  4385,-32768,-32768,  4407,-32768,-32768,-32768,-32768,
--32768,   556,  3163,-32768,  2185,   312,  2185,   312,  2185,   312,
--32768,  3337,  1213,  1850,  2531,  2531,  1132,-32768,-32768,  1850,
-  2531,  3361,  3385,  1850,  1125,  6369,  2531,  2531,   814,  6369,
--32768,-32768,-32768,  1215,-32768,  2531,  1217,  1104,  2531,-32768,
-  3409,   452,   -26,  3433,   454,    25,  3457,   456,   122,  3090,
-  1135,-32768,   815,  3481,  3505,  1138,  1117,  1946,-32768,-32768,
-  1112,  2531,  6323,  4429,  1218,-32768,  4451,  1119,-32768,  3529,
-  1219,  2531,  1221,  1222,  2531,  1223,  1225,  2531,  1226,-32768,
-   312,-32768,  1850,  1227,  1230,  1231,  1850,  1850,-32768,  1248,
-   820,-32768,  2531,-32768,  2531,  1270,-32768,-32768,  1139,  3553,
--32768,-32768,  1141,  3577,-32768,-32768,  1142,  3601,-32768,   130,
-  3111,  1144,-32768,-32768,-32768,  1171,  1149,-32768,  1276,  1177,
-  6346,  3625,  1203,   312,  1280,   312,  1282,   312,  1289,-32768,
--32768,   312,  1299,  1850,  1191,-32768,   457,-32768,  1300,  1302,
-   191,-32768,  1220,   192,-32768,  1224,   193,-32768,  1228,   237,
--32768,  1202,  1236,   823,-32768,  1237,-32768,  1238,  1309,   312,
-  1337,   312,  1354,   312,-32768,  1229,  2531,   457,  1355,   457,
-  1356,-32768,   278,-32768,   287,-32768,   289,  1240,  4473,-32768,
--32768,   824,-32768,-32768,  1359,  1360,  1371,  2531,  2531,   457,
-  1374,-32768,-32768,-32768,  4495,  3649,-32768,-32768,  2531,  1375,
-  3673,-32768,  1378,-32768,  1386,  1387,-32768
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,  2326,  2326,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,  2326,  2326,  2326,
+  2326,  2326,  2326,  2326,   940,-32768,  2163,   415,-32768,-32768,
+  2326,   944,   955,   829,    47,  2326,   957,   958,   976,-32768,
+   965,   851,    17,   979,-32768,  2326,-32768,   869,   415,   -14,
+  3921,   688,    78,-32768,-32768,  2163,-32768,    72,  2454,-32768,
+  2326,  1013,  1685,  1685,   981,  1685,  1132,  1225,   982,  1264,
+  1685,  1685,  1397,   853,   984,   985,   986,   480,   988,   989,
+   991,   992,   993,   994,   996,  1000,   427,  3943,  3965,-32768,
+-32768,  3207,    72,    72,    72,   431,-32768,   117,   999,  2326,
+  2163,  2326,  2163,  2163,  2163,  1526,  1002,  2326,  2326,  1004,
+  1005,  1685,  1685,  1685,  1011,  3987,-32768,  2600,   644,  1014,
+  1017,-32768,  1016,-32768,     9,   876,  2326,  2326,  1685,   880,
+  2326,-32768,  5799,  4867,  5822,  4892,  5845,  4917,  5868,  4942,
+  4967,   895,     2,   897,  5891,-32768,-32768,   136,   296,   889,
+  1018,  1784,-32768,-32768,-32768,    17,  2326,-32768,   689,-32768,
+  2570,-32768,  1021,    23,  2326,   891,   693,     5,  2570,-32768,
+    24,    25,  1685,  1023,-32768,-32768,  1685,-32768,  1024,  1027,
+-32768,  2326,  1685,  1685,  1685,-32768,   368,  1685,  1685,  1685,
+  1685,  1685,  1685,  1685,   429,  2326,  2326,  2326,   900,   -45,
+   369,   382,  1986,  1029,   901,   -40,-32768,-32768,  5914,   697,
+  5937,   698,   707,   711,-32768,-32768,  4009,  4031,-32768,-32768,
+  1030,  1036,   959,-32768,  2326,  2326,  2326,-32768,-32768,   214,
+-32768,  1038,  2326,  4053,  4075,   712,-32768,  2326,  5960,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   913,-32768,-32768,
+-32768,-32768,  1685,   415,  2326,  1042,  1045,    21,-32768,  1044,
+  4992,    17,-32768,-32768,-32768,   415,  4097,-32768,   921,-32768,
+-32768,    72,-32768,    72,  1049,-32768,  1050,-32768,-32768,  4119,
+  1051,  1054,  1055,  2326,  2326,   848,  1056,  1057,  1058,  1059,
+  1060,  1062,-32768,  2291,  3231,  5983,  2622,   727,    72,  1063,
+    72,  1065,    72,  1066,  3255,   433,-32768,  1685,-32768,-32768,
+   879,  1067,   894,  1068,  1069,  1070,  2326,  2326,-32768,-32768,
+  1685,  3027,   358,  6006,-32768,-32768,    48,  2570,  2326,  2326,
+  1685,   941,   717,  2570,  1685,  1073,  1077,  1078,  1913,-32768,
+  1072,  1095,-32768,   968,-32768,  1098,  2326,-32768,    42,    46,
+-32768,-32768,  2326,-32768,-32768,-32768,  2383,  2398,  1101,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,  2413,  1102,   972,-32768,
+  2326,-32768,   973,   435,-32768,   975,   441,-32768,   977,   491,
+-32768,   978,   980,  2326,   614,   983,-32768,-32768,-32768,-32768,
+  4141,  4163,  1032,  2326,-32768,  2326,-32768,-32768,-32768,  2326,
+  4185,  4207,-32768,  1685,  2326,  1107,  1115,  1009,-32768,-32768,
+-32768,    17,-32768,  1061,-32768,  4229,-32768,-32768,  4251,-32768,
+-32768,-32768,-32768,-32768,   727,  3057,-32768,  1986,   117,  1986,
+   117,  1986,   117,-32768,  3279,  1121,  1685,  2326,  2326,  2326,
+  3303,  3327,  1006,  2570,  2326,  2326,   721,  2570,-32768,-32768,
+-32768,  1138,-32768,  2326,  1141,  1010,  2326,-32768,  3351,   493,
+   -18,  3375,   519,    -8,  3399,   526,    37,  2964,  1012,-32768,
+   725,  3423,  3447,  2428,-32768,-32768,  2326,  6029,  4273,  1148,
+-32768,  4295,  1028,-32768,  3471,  1157,  2326,  1161,  1163,  2326,
+  1164,  1189,  2326,  1190,-32768,   117,-32768,  1685,  1191,  1207,
+  1208,-32768,   733,-32768,  2326,-32768,  2326,  1142,-32768,-32768,
+  1031,  3495,-32768,-32768,  1079,  3519,-32768,-32768,  1080,  3543,
+-32768,   159,  2981,  1081,-32768,-32768,-32768,  1209,  1083,  6052,
+  3567,  1093,   117,  1224,   117,  1226,   117,  1227,-32768,-32768,
+   117,  1228,-32768,   415,-32768,  1231,  1233,   236,-32768,  1103,
+   238,-32768,  1109,   301,-32768,  1119,   320,-32768,   734,-32768,
+  1120,-32768,  1122,  1252,   117,  1253,   117,  1256,   117,-32768,
+   415,  1261,   415,  1262,-32768,   344,-32768,   347,-32768,   361,
+-32768,-32768,   738,-32768,-32768,  1263,  1265,  1266,   415,  1267,
+-32768,-32768,-32768,-32768,-32768,  1239,  1274,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,   560,-32768,-32768,   839,-32768,   308,-32768,-32768,
+-32768,-32768,   541,-32768,-32768,   739,-32768,   231,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  -263,     0,-32768,   -24,  1389,     5,  -334,  -172,     8,
--32768,-32768,-32768,-32768,-32768,  1390,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -732,  -690,
--32768,-32768,-32768,    -4,-32768,   397,-32768,   404,  -815,   473,
-   -98,  -254,  -596,   548,-32768,    -2
+-32768,  -259,    30,-32768,   299,  1277,    -1,  -330,  -163,     7,
+-32768,-32768,-32768,-32768,-32768,  1278,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -993,  -684,
+-32768,-32768,-32768,    43,-32768,    14,-32768,   309,   398,   -67,
+  -243,  -610,   458,-32768,    -4
 };
 
 
-#define	YYLAST		6500
+#define	YYLAST		6183
 
 
 static const short yytable[] = {   121,
-   550,   123,   507,   120,   348,   437,    58,   353,   857,    59,
-   550,   190,   434,   176,   179,   207,   192,   124,   212,   623,
-   432,   202,   195,   125,   144,   628,     3,   742,   202,    72,
-   372,   269,   374,   302,   127,   202,   141,   350,   458,   351,
-   788,   788,   466,   459,   852,   789,   789,   139,   204,   206,
-    97,    98,    99,   100,   361,   681,   101,    97,    98,    99,
-   100,  1014,   682,   101,    97,    98,    99,   100,   140,   858,
-   101,   146,   551,   552,   553,   554,   555,   163,   164,    72,
-  1015,   147,   551,   552,   553,   554,   555,   860,   165,   733,
-   522,   523,   788,   986,   987,   166,   685,   789,   191,   897,
-   362,   683,   334,   335,   607,   262,   263,   264,   684,   608,
-   265,   268,   896,  1093,   273,   859,   270,   271,   148,   498,
-   433,   293,   149,   334,   335,   263,   298,   301,   150,   106,
-   107,   108,   109,   861,   306,   307,   556,   309,   629,   113,
-   114,   313,   314,   847,   316,   208,   819,   209,   177,   180,
-   196,   193,   210,   213,   624,   203,   126,   629,   113,   114,
-   332,   333,   205,   147,  1096,   151,   705,   352,   302,   333,
-   686,   617,   152,   514,   734,   735,   334,   335,   156,   106,
-   107,   108,   109,   359,   360,  1049,   363,   183,   365,   788,
-   184,   368,   369,   538,   789,   334,   335,   788,   302,   909,
-   113,   114,   789,   377,   631,   161,   910,   633,   616,   382,
+    56,   499,   728,   202,   429,  1031,   539,  1034,    57,  1037,
+   840,   343,   539,   123,   348,   174,   177,   122,   426,   139,
+   188,   207,   424,   137,   612,   617,   197,   774,   835,   841,
+   843,   775,     3,   118,   364,   345,   366,   346,   165,   167,
+   142,   173,   191,   264,   199,   201,   119,   987,   458,   774,
+   719,   988,   209,   775,   210,    95,    96,    97,    98,   774,
+   670,    99,   297,   775,   197,   450,   180,   671,   125,   181,
+   451,   197,  1092,   329,   330,   842,   844,   540,   541,   542,
+   543,   544,   672,   540,   541,   542,   543,   544,   138,   673,
+   869,   880,   870,    95,    96,    97,    98,   879,   145,    99,
+    95,    96,    97,    98,   774,   675,    99,   596,   775,  1118,
+   674,  1121,   597,  1124,   144,   830,   734,  1127,   428,  1058,
+   425,   460,   145,   329,   330,   111,   112,   265,   266,  1061,
+   146,   203,   820,   204,   720,   721,   618,   460,   205,   618,
+   545,  1146,    70,  1148,   124,  1150,   802,   148,   175,   178,
+   257,   258,   259,   189,   208,   260,   263,   613,   198,   268,
+   329,   330,   147,   347,   329,   330,   288,   606,   192,   149,
+   258,   293,   296,   324,  1064,   326,   150,   506,   969,   301,
+   302,   333,   304,   970,   774,   340,   308,   309,   775,   311,
+   161,   162,   111,   112,   297,   528,   200,   329,   330,   154,
+   691,   163,   159,   111,   112,   327,   328,   620,   164,   176,
+   622,   691,   514,   515,   328,   331,   104,   105,   106,   107,
+   372,   915,   329,   330,   297,   160,   774,   354,   355,   356,
+   775,   358,   329,   330,   361,   362,   168,   111,   112,   490,
+   104,   105,   106,   107,   179,   369,   417,   418,   419,   420,
+   332,   374,   375,   376,   377,   378,   379,   380,   381,   382,
    383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
    393,   394,   395,   396,   397,   398,   399,   400,   401,   402,
    403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
-   413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
-   423,   162,   937,   425,   426,   427,   428,   170,   788,   788,
-   788,  1099,   301,   789,   789,   789,   113,   114,   438,  1150,
-   178,   443,   444,   445,   446,   447,   448,   449,   450,   451,
-   452,   453,   454,   455,   456,   457,   992,   334,   335,   463,
-   464,   748,   301,  1063,   263,  1066,   468,  1069,   181,   470,
-   494,   495,   496,   474,   788,   336,   478,   334,   335,   789,
-   334,   335,   484,   485,   486,   182,   488,   489,   490,   492,
-   492,   492,   492,   198,   886,   171,   887,   508,   172,   173,
-  1179,  1181,  1183,   185,   509,   510,   511,   262,   263,   512,
-   503,   503,   515,   506,   506,   788,   186,   525,   334,   335,
-   789,   529,   530,   727,   788,   187,   788,   534,   188,   789,
-   302,   789,   214,   302,   215,   888,   542,   889,  1130,   641,
-   189,   545,   897,   197,   548,   897,  1185,   547,   897,   788,
-   837,   216,   751,   217,   789,   468,   436,   334,   335,   276,
-   277,   278,   279,   280,   256,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,   513,   163,   164,   871,   872,   290,
-   304,  1161,  1054,  1164,   199,  1167,   165,  1205,   993,  1170,
-   200,   167,   169,   174,   175,   463,  1206,   794,  1207,   796,
-   797,   798,   620,   619,   618,   334,   335,   201,   257,   897,
-   334,   335,   334,   335,   334,   335,   841,  1193,   218,  1195,
-   219,  1197,   258,   337,   301,   632,   259,   301,   346,   780,
-   463,   202,   549,   640,   334,   335,   643,   260,   840,   842,
-   897,   648,   649,   897,   651,   272,   897,   654,   292,   897,
-   137,   787,   659,   143,   145,   274,   106,   107,   108,   109,
-    97,    98,    99,   100,   669,   670,   101,   287,   288,   289,
-   295,   305,   897,   673,   897,   290,   897,   113,   114,   302,
-   291,   334,   335,   276,   277,   278,   279,   280,   687,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,   890,   220,
-   891,   221,   699,   290,   701,   702,   334,   335,   302,   334,
-   335,   310,  1033,   707,   308,   706,   106,   107,   108,   109,
-   965,   113,   114,   976,   334,   335,  1025,   294,   329,   209,
-   331,   334,   335,   222,   210,   223,   338,   113,   114,   311,
-   345,  1027,   334,   335,   334,   335,   334,   335,  1029,   996,
-   717,   718,   312,   302,   997,   302,   302,   302,   813,  1092,
-   224,  1095,   225,  1098,   719,   720,   721,   722,   723,   724,
-   725,   153,   154,   301,   155,   317,   728,   729,   380,   770,
-  1038,   328,   736,   424,   202,   923,    24,    25,    26,    27,
-   315,    29,   745,   113,   114,   320,   226,   747,   227,    35,
-    36,   705,   301,   706,   228,   157,   229,   753,   158,   159,
-   275,   160,   318,    97,    98,    99,   100,   880,   881,   101,
-   349,   230,   232,   231,   233,   354,   355,   278,   279,   280,
-   771,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-   234,   236,   235,   237,   319,   290,   793,   301,   795,   301,
-   301,   301,   321,   323,   801,   802,   442,  1058,   322,   339,
-   807,   276,   277,   278,   279,   280,   324,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,   821,   822,   325,   326,
-   826,   290,   340,   814,   276,   277,   278,   279,   280,   327,
-   281,   282,   283,   284,   285,   286,   287,   288,   289,   341,
-   501,   502,   843,   238,   290,   239,   848,   358,   240,   331,
-   241,   476,   347,   477,   854,   276,   277,   278,   279,   280,
-   356,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-   242,   867,   243,   279,   280,   290,   281,   282,   283,   284,
-   285,   286,   287,   288,   289,   882,   883,   884,   357,   244,
-   290,   245,   892,   246,   364,   247,   285,   286,   287,   288,
-   289,   276,   277,   278,   279,   280,   290,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,   913,   914,   915,   366,
-   248,   290,   249,   367,   370,   920,   917,   250,   371,   251,
-   926,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-   739,   252,   254,   253,   255,   290,   373,   931,   930,   468,
-   375,   469,   516,     9,    10,   517,   518,    13,   519,    15,
-   938,    16,   376,    18,    19,   378,    21,    22,  1070,   379,
-   290,   754,   113,   114,   429,   440,   949,   950,   430,   605,
-   209,   606,   951,    34,   952,   210,   959,   468,   960,   615,
-   468,   439,   638,    38,    39,    40,   468,   441,   750,   503,
-   977,   471,   506,   759,   668,   849,   468,   850,   856,   983,
-   984,    50,   113,   114,   613,   614,   482,   479,   465,   677,
-   209,   995,   487,   524,   533,   210,   998,   999,   468,   468,
-   899,   901,   468,   468,   902,   903,   923,   497,   924,  1131,
-  1002,   923,  1003,  1039,  1013,   276,   277,   278,   279,   280,
-  1016,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-   760,   923,  1103,  1085,  1104,   290,   527,  1002,  1023,  1139,
-  1188,  1210,  1189,  1211,   528,   536,   276,   277,   278,   279,
-   280,  1032,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,   539,   609,   610,   621,  1042,   290,  1043,   622,   611,
-   612,   716,  1046,   639,   644,   645,   626,  1050,   276,   277,
-   278,   279,   280,   647,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,   652,   653,   655,   663,   664,   290,   665,
-  1061,   762,  1064,   666,  1067,   667,   503,   693,   671,   506,
-  1074,  1075,   672,   689,   690,   752,  1078,   694,   695,   697,
-   698,   711,  1083,  1084,   712,   715,   726,   713,   740,   730,
-   731,  1087,   732,   737,  1090,   276,   277,   278,   279,   280,
-   738,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-   784,   785,   786,   741,   744,   290,   757,   926,   746,   761,
-   766,   767,   768,   765,   779,   769,   772,  1120,   773,   774,
-  1124,   775,   776,  1128,   777,   778,   792,   800,   803,   804,
-   810,   808,   815,   816,   817,   818,   820,   825,  1141,   836,
-  1142,   844,   838,   845,   851,   855,   755,   756,   863,   758,
-   865,   866,   885,   894,   763,   764,   276,   277,   278,   279,
-   280,   895,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,   906,   907,   912,   916,   918,   290,   928,   932,   933,
-   935,   940,   943,   799,  1175,   944,   946,   947,   948,   953,
-   954,   955,   956,   957,   958,   805,   806,   967,   970,   809,
-   973,   979,   980,   981,   982,  1001,   985,   988,  1005,  1006,
-  1024,  1007,  1199,   893,   846,  1200,  1009,  1203,   276,   277,
-   278,   279,   280,  1010,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,  1215,  1216,  1012,  1011,  1217,   290,  1019,
-  1021,  1041,  1022,  1051,  1221,  1026,  1052,  1055,  1072,  1076,
-  1086,  1088,  1028,  1114,  1118,  1030,  1121,  1122,  1125,   862,
-  1126,  1129,  1133,   864,  1053,  1134,  1135,  1031,  1008,   868,
-   869,   870,  1034,  1089,   873,   874,   875,   876,   877,   878,
-   879,  1110,  1040,  1138,  1108,   941,  1116,   942,   276,   277,
-   278,   279,   280,  1082,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,  1102,  1143,  1173,  1107,  1144,   290,  1146,
-  1148,  1156,   966,  1153,   969,  1162,   972,  1165,  1155,   276,
-   277,   278,   279,   280,  1168,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,  1171,  1177,  1178,   853,  1154,   290,
-    69,   128,   929,  1198,  1192,  1157,    73,    74,    75,    76,
+   413,   414,   415,   430,   329,   330,  1109,    70,   282,   283,
+   284,   182,   824,   774,   296,   774,   285,   775,   183,   775,
+   329,   330,   341,   435,   436,   437,   438,   439,   440,   441,
+   442,   443,   444,   445,   446,   447,   448,   449,   538,   495,
+   495,   455,   456,   211,   296,   212,   258,   498,   498,   111,
+   112,   462,   493,   494,   184,   466,   880,   185,   470,   880,
+   186,   326,   880,   713,   476,   477,   478,   187,   480,   481,
+   482,   484,   484,   484,   484,   966,   169,   194,   774,   170,
+   171,  1022,   775,  1134,   193,  1136,   501,   502,   503,   257,
+   258,   504,   737,   297,   507,   251,   297,   774,   213,   517,
+   214,   775,   630,   521,   522,   104,   105,   106,   107,   536,
+   104,   105,   106,   107,   215,   135,   216,   880,   141,   143,
+   534,   774,   195,   537,   774,   775,   111,   112,   775,   197,
+   196,   111,   112,   608,   605,   854,   855,   780,   774,   782,
+   783,   784,   775,   880,   863,   864,   880,   155,  1138,   880,
+   156,   157,   880,   158,   161,   162,   252,   253,    95,    96,
+    97,    98,   254,   255,    99,   163,   607,  1140,   823,   825,
+   267,   880,   172,   880,   455,   880,   271,   272,   273,   274,
+   275,   609,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,  1156,   269,   286,  1157,   756,   285,   329,   330,   287,
+   329,   330,   290,   296,   621,   967,   296,   300,  1158,   455,
+   329,   330,   629,   657,   871,   632,   872,   500,   416,   197,
+   637,   638,   303,   640,   329,   330,   643,   873,   666,   874,
+   305,   648,   280,   281,   282,   283,   284,   307,   306,   297,
+   693,   505,   285,   658,   659,   313,   757,   943,    95,    96,
+    97,    98,   662,   310,    99,   329,   330,   312,   315,   329,
+   330,   329,   330,   329,   330,   314,   316,   676,   297,   329,
+   330,   217,   766,   218,   692,   219,   773,   220,   954,   686,
+   998,   688,   689,   344,   111,   112,  1000,   349,   350,   221,
+   289,   222,   204,   151,   152,   318,   153,   205,   271,   272,
+   273,   274,   275,   714,   276,   277,   278,   279,   280,   281,
+   282,   283,   284,   297,   317,   297,   297,   297,   285,   329,
+   330,   329,   330,   223,   733,   224,   703,   704,   486,   487,
+   488,   299,   460,   225,   461,   226,  1002,   227,  1057,   228,
+   705,   706,   707,   708,   709,   710,   711,   329,   330,   296,
+   229,   738,   230,   715,   329,   330,   319,   320,   722,   111,
+   112,   797,   692,   323,  1060,   422,   321,   204,   731,   111,
+   112,  1063,   205,   342,  1026,   457,   322,   204,   296,   468,
+   353,   469,   205,   739,   334,   335,   770,   771,   772,   336,
+    67,   291,   231,   233,   232,   234,    71,    72,    73,    74,
+    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+    85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+   351,   352,   779,   296,   781,   296,   296,   296,   357,   359,
+   787,   788,   271,   272,   273,   274,   275,   360,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,   363,   368,   804,
+   805,   365,   285,   809,   235,   237,   236,   238,   826,   367,
+   370,  1006,   271,   272,   273,   274,   275,   371,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,   421,   239,   831,
+   240,   241,   285,   242,   798,   285,   431,   837,   100,   101,
+   102,   103,   243,   245,   244,   246,   876,    24,    25,    26,
+    27,   247,    29,   248,   850,   432,   108,   109,   433,    34,
+    35,   249,   110,   250,   594,   463,   595,   113,   865,   866,
+   867,   460,   116,   604,   292,   875,   460,   471,   627,   908,
+   474,   602,   603,   460,   832,   736,   833,   479,   460,   895,
+   839,   916,   460,   460,   882,   884,   489,   892,   893,   894,
+  1038,   270,   460,   516,   885,   898,   460,   901,   886,   902,
+   904,   929,   975,   930,   976,   919,   901,   920,  1050,   938,
+  1068,   519,  1069,   434,   526,   520,   495,   909,   975,  1141,
+  1098,  1142,   598,  1159,   498,  1160,   529,   601,   599,   600,
+   610,   611,   944,   615,   947,   628,   950,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,   927,   928,   633,   634,
+   636,   285,   641,  1093,   642,   644,   937,   273,   274,   275,
+   652,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+   955,   653,   654,   655,   660,   285,   678,   656,   682,   961,
+   962,   683,   661,   684,   679,   685,   697,   698,   701,   699,
+   702,   971,   972,   712,   271,   272,   273,   274,   275,   716,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,   986,
+   717,   718,   723,   724,   285,   989,   271,   272,   273,   274,
+   275,   726,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,   725,   727,   996,   730,   732,   285,   743,   747,   752,
+   753,   754,   755,   495,   758,   759,  1005,   760,   761,   762,
+   763,   498,   764,   765,   778,   803,  1011,   786,  1012,   789,
+   790,  1030,  1014,  1033,   794,  1036,   808,  1018,   740,   799,
+   800,   801,   827,   838,   828,   819,   834,   821,   846,   848,
+   741,   742,   849,   744,   877,   889,   868,   878,   749,   750,
+  1029,   890,  1032,   896,  1035,   891,   906,   910,   911,   913,
+  1042,  1043,  1044,   918,   921,   922,   924,  1048,  1049,   925,
+   926,   931,   932,   933,   934,   935,  1052,   936,   945,  1055,
+   948,   951,   957,   958,   959,   960,   978,   974,   982,   791,
+   792,   793,   979,   980,   271,   272,   273,   274,   275,   904,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,  1082,
+   983,   984,  1086,   985,   285,  1090,   992,   994,   995,  1130,
+   997,   999,  1019,  1001,  1003,  1010,  1004,  1100,  1007,  1101,
+  1020,   271,   272,   273,   274,   275,  1040,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,  1151,   745,  1154,  1021,
+   845,   285,  1047,  1051,   847,  1053,  1102,  1054,  1067,  1023,
+   851,   852,   853,  1076,  1164,   856,   857,   858,   859,   860,
+   861,   862,  1080,  1078,    67,   126,  1083,  1103,  1084,  1087,
+    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+    81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+    91,    92,    93,    94,  1088,  1091,  1095,   271,   272,   273,
+   274,   275,   127,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,  1096,  1097,  1113,  1105,  1107,   285,  1112,  1114,
+   907,   427,    24,    25,    26,    27,    28,    29,  1117,  1119,
+   746,  1122,  1125,  1128,    34,    35,  1132,  1133,  1167,  1135,
+   271,   272,   273,   274,   275,  1137,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,  1139,  1143,  1145,  1147,  1144,
+   285,  1149,   100,   101,   102,   103,  1152,  1155,  1161,   748,
+  1162,  1163,  1165,  1168,   836,   956,   695,  1073,    55,    63,
+   108,   294,  1017,     0,     0,   912,   110,     0,   963,     0,
+     0,   113,     0,     0,     0,     0,   116,     0,   973,   295,
+    67,   126,   977,     0,     0,     0,    71,    72,    73,    74,
+    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+    85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+     0,     0,     0,   271,   272,   273,   274,   275,   127,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,     0,     0,     0,    24,    25,
+    26,    27,    28,    29,   139,     0,     0,     0,     0,     0,
+    34,    35,   271,   272,   273,   274,   275,     0,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,     0,     0,     0,
+     0,     0,   285,     0,     0,     0,     0,     0,   100,   101,
+   102,   103,   751,     0,  1041,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   108,   128,     0,     0,
+     0,     0,   110,     0,     0,     0,     0,   140,     0,    67,
+   126,     0,   116,     0,   130,    71,    72,    73,    74,    75,
+    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+    86,    87,    88,    89,    90,    91,    92,    93,    94,     0,
+     0,     0,     0,     0,     0,  1094,     0,   127,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,    24,    25,    26,
+    27,    28,    29,   142,     0,     0,     0,     0,     0,    34,
+    35,     0,     0,     0,     0,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   100,   101,   102,
+   103,   785,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   108,   128,     0,     0,     0,
+     0,   110,     0,     0,     0,     0,   113,     0,    67,   126,
+     0,   116,     0,   130,    71,    72,    73,    74,    75,    76,
     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-  1160,  1186,  1194,   276,   277,   278,   279,   280,   129,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,  1180,  1196,
-  1201,  1204,  1182,   290,  1212,  1213,  1184,   978,    24,    25,
-    26,    27,    28,    29,  1187,  1190,  1214,  1191,  1208,  1218,
-  1222,    35,    36,  1224,   989,  1226,  1227,   709,  1037,  1111,
-    57,    65,   934,     0,     0,  1000,     0,     0,     0,  1004,
+    87,    88,    89,    90,    91,    92,    93,    94,     0,     0,
+     0,   271,   272,   273,   274,   275,   127,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,     0,     0,   535,    24,    25,    26,    27,
+    28,    29,     0,     0,     0,     0,     0,     0,    34,    35,
+     0,     0,     0,     0,   271,   272,   273,   274,   275,     0,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,     0,
+     0,     0,     0,     0,   285,     0,   100,   101,   102,   103,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   102,   103,   104,   105,     0,     0,     0,     0,     0,     0,
-     0,  1062,     0,  1065,     0,  1068,     0,  1017,   110,   299,
-     0,     0,     0,     0,   112,     0,     0,     0,     0,   115,
-     0,     0,     0,     0,   118,     0,     0,   300,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    69,
-   128,     0,     0,     0,     0,    73,    74,    75,    76,    77,
+     0,     0,     0,     0,   108,   128,     0,     0,     0,     0,
+   110,     0,     0,     0,     0,   129,     0,    67,   126,     0,
+   116,     0,   130,    71,    72,    73,    74,    75,    76,    77,
     78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-    88,    89,    90,    91,    92,    93,    94,    95,    96,     0,
-     0,     0,     0,     0,     0,     0,     0,   129,     0,     0,
-     0,     0,     0,     0,     0,     0,  1073,     0,     0,     0,
-     0,     0,  1077,     0,     0,     0,  1081,    24,    25,    26,
-    27,    28,    29,   141,     0,     0,     0,     0,     0,     0,
-    35,    36,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,     0,     0,  1018,   102,
-   103,   104,   105,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,  1132,     0,   110,   130,  1136,
-  1137,     0,     0,   112,     0,     0,     0,     0,   142,     0,
-    69,   128,     0,   118,     0,   132,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-     0,     0,     0,     0,     0,     0,  1172,     0,   129,     0,
+    88,    89,    90,    91,    92,    93,    94,     0,     0,     0,
+   271,   272,   273,   274,   275,   127,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   553,    24,    25,    26,    27,    28,
+    29,     0,     0,    67,   256,     0,     0,    34,    35,    71,
+    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+    82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+    92,    93,    94,     0,     0,   100,   101,   102,   103,   829,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
-    26,    27,    28,    29,   144,     0,     0,     0,     0,     0,
-     0,    35,    36,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,     0,     0,     0,     0,  1020,
-   102,   103,   104,   105,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   110,   130,
-     0,     0,     0,     0,   112,     0,     0,     0,     0,   115,
-     0,    69,   128,     0,   118,     0,   132,    73,    74,    75,
-    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-    96,     0,     0,     0,   276,   277,   278,   279,   280,   129,
-   281,   282,   283,   284,   285,   286,   287,   288,   289,     0,
-     0,     0,     0,     0,   290,     0,     0,     0,   435,    24,
-    25,    26,    27,    28,    29,     0,     0,     0,     0,     0,
-     0,     0,    35,    36,   276,   277,   278,   279,   280,     0,
-   281,   282,   283,   284,   285,   286,   287,   288,   289,     0,
-     0,     0,     0,     0,   290,     0,     0,     0,     0,     0,
-     0,   102,   103,   104,   105,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
-   130,     0,     0,     0,     0,   112,     0,     0,     0,     0,
-   131,     0,    69,   128,     0,   118,     0,   132,    73,    74,
-    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-    95,    96,     0,     0,     0,   276,   277,   278,   279,   280,
-   129,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,     0,     0,   546,
-    24,    25,    26,    27,    28,    29,     0,     0,     0,    69,
-   261,     0,     0,    35,    36,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-    88,    89,    90,    91,    92,    93,    94,    95,    96,     0,
-     0,  1109,   102,   103,   104,   105,     0,     0,     0,     0,
+     0,     0,     0,   108,   128,     0,     0,     0,     0,   110,
+     0,     0,     0,     0,   113,     0,    67,   256,     0,   116,
+     0,   130,    71,    72,    73,    74,    75,    76,    77,    78,
+    79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+    89,    90,    91,    92,    93,    94,     0,     0,     0,     0,
+     0,   100,   101,   102,   103,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   108,
+   109,     0,     0,     0,     0,   110,     0,     0,     0,     0,
+   113,     0,     0,   261,     0,   116,     0,   262,     0,     0,
+     0,     0,   271,   272,   273,   274,   275,     0,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,     0,     0,     0,
+     0,     0,   285,     0,   100,   101,   102,   103,   981,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   110,   130,     0,     0,     0,     0,   112,     0,     0,     0,
-     0,   115,     0,    69,   261,     0,   118,     0,   132,    73,
+     0,     0,   108,   109,     0,     0,     0,     0,   110,     0,
+     0,     0,     0,   113,     0,     0,   453,     0,   116,     0,
+   454,    67,   256,     0,     0,     0,     0,    71,    72,    73,
     74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
     84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-    94,    95,    96,     0,     0,     0,     0,     0,     0,   102,
-   103,   104,   105,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   110,   111,     0,
-     0,     0,     0,   112,     0,     0,     0,     0,   115,     0,
-     0,   266,     0,   118,     0,   267,   276,   277,   278,   279,
-   280,     0,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,     0,     0,     0,     0,     0,   290,     0,     0,     0,
-     0,     0,     0,   102,   103,   104,   105,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   110,   111,     0,     0,     0,     0,   112,     0,     0,
-     0,     0,   115,     0,     0,   461,     0,   118,     0,   462,
-    69,   261,     0,     0,     0,     0,    73,    74,    75,    76,
+    94,     0,     0,     0,     0,     0,     0,     0,    67,   256,
+     0,     0,     0,     0,    71,    72,    73,    74,    75,    76,
     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-     0,     0,     0,     0,     0,     0,     0,    69,   296,     0,
-     0,     0,     0,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-    90,    91,    92,    93,    94,    95,    96,    69,   261,     0,
-     0,     0,     0,    73,    74,    75,    76,    77,    78,    79,
+    87,    88,    89,    90,    91,    92,    93,    94,     0,     0,
+     0,   271,   272,   273,   274,   275,     0,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,     0,     0,     0,     0,     0,     0,   100,
+   101,   102,   103,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   108,   109,     0,
+     0,     0,     0,   110,     0,     0,     0,     0,   113,     0,
+     0,   625,     0,   116,     0,   626,   100,   101,   102,   103,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   337,   338,     0,     0,     0,     0,
+   110,     0,     0,     0,     0,   339,     0,    67,    68,    69,
+   116,    70,   164,    71,    72,    73,    74,    75,    76,    77,
+    78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+    88,    89,    90,    91,    92,    93,    94,     0,    95,    96,
+    97,    98,     0,     0,    99,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    67,   126,     0,     0,     0,
+     0,    71,    72,    73,    74,    75,    76,    77,    78,    79,
     80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-    90,    91,    92,    93,    94,    95,    96,     0,     0,     0,
-   102,   103,   104,   105,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   110,   111,
-     0,     0,     0,     0,   112,     0,     0,     0,     0,   115,
-     0,     0,   636,     0,   118,     0,   637,   102,   103,   104,
-   105,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   110,   111,     0,     0,     0,
-     0,   112,     0,     0,     0,     0,   115,   102,   103,   104,
-   105,   118,     0,   297,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   342,   343,     0,     0,     0,
-     0,   112,     0,     0,     0,     0,   344,     0,    69,    70,
-    71,   118,    72,   166,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,     0,    97,
-    98,    99,   100,     0,     0,   101,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    69,   128,
-     0,     0,     0,     0,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,     0,     0,
-     0,     0,     0,     0,     0,     0,   129,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   102,   103,
-   104,   105,   106,   107,   108,   109,    24,    25,    26,    27,
-    28,    29,     0,     0,     0,     0,   110,   111,     0,    35,
-    36,     0,   112,   113,   114,     0,     0,   115,     0,   116,
-     0,   117,   118,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,   102,   103,
-   104,   105,     0,   290,     0,     0,     0,     0,     0,     0,
-   963,     0,   964,     0,     0,     0,   110,   299,     0,     0,
-     0,     0,   112,     0,     0,     0,     0,   115,    69,   261,
-   202,     0,   118,     0,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,     0,    97,
-    98,    99,   100,    69,   261,   101,     0,     0,     0,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-    94,    95,    96,    69,   296,     0,     0,     0,     0,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-    94,    95,    96,     0,     0,   304,     0,     0,   102,   103,
-   104,   105,     0,     0,     0,     0,     0,     0,     0,     0,
-   540,     0,     0,     0,     0,     0,   110,   111,     0,     0,
-     0,     0,   112,     0,     0,   627,     0,   115,     0,     0,
-     0,     0,   118,   102,   103,   104,   105,     0,     0,     0,
-   642,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   110,   111,     0,     0,   812,     0,   112,     0,     0,
-     0,     0,   115,   102,   103,   104,   105,   118,     0,     0,
+    90,    91,    92,    93,    94,     0,     0,     0,     0,     0,
+     0,     0,     0,   127,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   100,   101,   102,   103,   104,
+   105,   106,   107,    24,    25,    26,    27,    28,    29,     0,
+     0,     0,     0,   108,   109,    34,    35,     0,     0,   110,
+   111,   112,     0,     0,   113,     0,   114,     0,   115,   116,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   110,   111,     0,     0,     0,     0,   112,     0,     0,
-     0,     0,   115,     0,     0,     0,     0,   118,   276,   277,
-   278,   279,   280,     0,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,   276,   277,   278,   279,   280,   290,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,   276,   277,
-   278,   279,   280,   290,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,   276,   277,   278,   279,   280,   290,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,   276,   277,
-   278,   279,   280,   290,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,    -3,     1,     0,     0,    -3,   290,     0,
-   276,   277,   278,   279,   280,     0,   281,   282,   283,   284,
-   285,   286,   287,   288,   289,     0,     0,     0,     0,     0,
-   290,     0,     0,     0,     0,     0,    -3,   990,     0,   991,
+     0,     0,     0,   100,   101,   102,   103,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   108,   294,     0,     0,     0,     0,   110,     0,     0,
+     0,     0,   113,    67,   256,   197,     0,   116,     0,    71,
+    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+    82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
+    92,    93,    94,     0,    95,    96,    97,    98,    67,   256,
+    99,     0,     0,     0,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+    87,    88,    89,    90,    91,    92,    93,    94,    67,   291,
+     0,     0,     0,     0,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+    87,    88,    89,    90,    91,    92,    93,    94,   990,     0,
+     0,   100,   101,   102,   103,     0,     0,     0,     0,     0,
+     0,     0,     0,   991,     0,     0,     0,     0,     0,   108,
+   109,     0,     0,     0,     0,   110,     0,     0,   993,     0,
+   113,     0,     0,     0,     0,   116,   100,   101,   102,   103,
+     0,     0,     0,  1072,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   108,   109,     0,     0,     0,     0,
+   110,     0,     0,     0,     0,   113,   100,   101,   102,   103,
+   116,   299,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   108,   109,   530,     0,     0,     0,
+   110,     0,     0,     0,     0,   113,     0,     0,     0,     0,
+   116,   271,   272,   273,   274,   275,     0,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,   271,   272,   273,   274,
+   275,   285,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,   271,   272,   273,   274,   275,   285,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,   271,   272,   273,   274,
+   275,   285,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,   616,     0,     0,     0,     0,   285,     0,     0,     0,
+     0,     0,   271,   272,   273,   274,   275,     0,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,   271,   272,   273,
+   274,   275,   285,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,   631,     0,     0,     0,     0,   285,     0,   508,
+     9,    10,   509,   510,    13,   511,    15,   796,    16,     0,
+    18,    19,     0,    21,    22,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   271,   272,   273,   274,   275,    33,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,    37,
+    38,    39,     0,     0,   285,     0,   423,     0,     0,     0,
+     0,   491,   271,   272,   273,   274,   275,     0,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,     0,     0,     0,
+     0,     0,   285,     0,     0,     0,     0,     0,   271,   272,
+   273,   274,   275,     0,   276,   277,   278,   279,   280,   281,
+   282,   283,   284,   271,   272,   273,   274,   275,   285,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,   271,   272,
+   273,   274,   275,   285,   276,   277,   278,   279,   280,   281,
+   282,   283,   284,    -3,     1,     0,     0,    -3,   285,     0,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,     0,     0,    -3,   941,     0,   942,
      0,    -3,    -3,     0,    -3,    -3,    -3,    -3,    -3,    -3,
     -3,    -3,     0,    -3,    -3,    -3,    -3,    -3,    -3,    -3,
      0,     0,     0,    -3,    -3,    -3,    -3,    -3,    -3,    -3,
-     0,    -3,    -3,    -3,    -3,    -3,     0,    -3,    -3,     0,
-     0,     0,     0,     0,    -3,    -3,    -3,    -3,     0,     0,
-     0,     0,    -3,     0,    -3,     0,    -3,    -3,    -3,    -3,
-    -3,    -3,    -3,    -3,    -3,    -3,   516,     9,    10,   517,
-   518,    13,   519,    15,     0,    16,     0,    18,    19,     0,
-    21,    22,     0,     0,     0,     0,     0,   516,     9,    10,
-   517,   518,    13,   519,    15,     0,    16,    34,    18,    19,
-     0,    21,    22,     0,     0,     0,     0,    38,    39,    40,
-     0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-     0,     0,     0,     0,     0,    50,     0,     0,    38,    39,
-    40,     0,     0,   516,     9,    10,   517,   518,    13,   519,
-    15,     0,    16,     0,    18,    19,    50,    21,    22,   276,
-   277,   278,   279,   280,     0,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,    34,   520,     0,     0,     0,   290,
-     0,     0,     0,     0,    38,    39,    40,     0,   635,     0,
-     0,     0,     0,     0,     0,     0,   526,     0,     0,     0,
-     0,     0,    50,   516,     9,    10,   517,   518,    13,   519,
-    15,     0,    16,     0,    18,    19,     0,    21,    22,     0,
-     0,     0,     0,     0,   516,     9,    10,   517,   518,    13,
-   519,    15,     0,    16,    34,    18,    19,     0,    21,    22,
-     0,     0,   543,     0,    38,    39,    40,     0,     0,     0,
-     0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-     0,     0,    50,     0,     0,    38,    39,    40,     0,     0,
-   516,     9,    10,   517,   518,    13,   519,    15,     0,    16,
-     0,    18,    19,    50,    21,    22,   276,   277,   278,   279,
-   280,     0,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,    34,   544,     0,     0,     0,   290,     0,     0,     0,
-     0,    38,    39,    40,     0,   656,     0,     0,     0,     0,
-     0,     0,     0,   678,     0,     0,     0,     0,     0,    50,
-   516,     9,    10,   517,   518,    13,   519,    15,     0,    16,
-     0,    18,    19,     0,    21,    22,     0,     0,     0,     0,
-     0,   516,     9,    10,   517,   518,    13,   519,    15,     0,
-    16,    34,    18,    19,     0,    21,    22,     0,     0,   700,
-     0,    38,    39,    40,     4,     0,     0,     0,     0,     0,
-     0,     0,    34,     0,     0,     0,     0,     0,     0,    50,
-     0,     0,    38,    39,    40,     0,     0,     0,     0,     0,
-     0,     0,     0,     5,     0,     0,     0,     0,     6,     7,
-    50,     8,     9,    10,    11,    12,    13,    14,    15,     0,
-    16,    17,    18,    19,    20,    21,    22,     0,     0,  1100,
-    23,    24,    25,    26,    27,    28,    29,     0,    30,    31,
-    32,    33,    34,     0,    35,    36,     0,     0,     0,     0,
-  1151,    37,    38,    39,    40,     0,     0,     0,     0,    41,
-     0,    42,     0,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,     0,     0,     0,     0,     0,
-  1059,     0,  1060,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,     0,     0,   276,   277,   278,
-   279,   280,   660,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   276,   277,   278,   279,   280,   661,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,     0,     0,   276,   277,   278,   279,   280,
-   708,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,     0,     0,   276,
-   277,   278,   279,   280,   783,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,     0,     0,   276,   277,   278,   279,   280,   961,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,     0,     0,   276,   277,   278,
-   279,   280,   975,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   276,   277,   278,   279,   280,  1071,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,     0,     0,   276,   277,   278,   279,   280,
-  1079,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,     0,     0,   276,
-   277,   278,   279,   280,  1080,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,     0,     0,   276,   277,   278,   279,   280,  1091,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,     0,     0,   276,   277,   278,
-   279,   280,  1094,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   276,   277,   278,   279,   280,  1097,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,     0,     0,   276,   277,   278,   279,   280,
-  1105,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,     0,     0,   276,
-   277,   278,   279,   280,  1106,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,     0,     0,   276,   277,   278,   279,   280,  1117,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,     0,     0,   276,   277,   278,
-   279,   280,  1145,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   276,   277,   278,   279,   280,  1147,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,     0,     0,   276,   277,   278,   279,   280,
-  1149,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,     0,     0,   276,
-   277,   278,   279,   280,  1159,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,     0,     0,   276,   277,   278,   279,   280,  1220,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,     0,     0,   276,   277,   278,
-   279,   280,  1223,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   431,
-     0,     0,     0,     0,   499,   276,   277,   278,   279,   280,
-     0,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   276,   277,   278,
-   279,   280,   460,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   276,
-   277,   278,   279,   280,   499,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   276,   277,   278,   279,   280,   500,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   276,   277,   278,   279,   280,   537,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   276,   277,   278,   279,   280,
-   585,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   276,   277,   278,
-   279,   280,   586,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   276,
-   277,   278,   279,   280,   599,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   276,   277,   278,   279,   280,   600,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   276,   277,   278,   279,   280,   601,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   276,   277,   278,   279,   280,
-   602,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   276,   277,   278,
-   279,   280,   603,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   276,
-   277,   278,   279,   280,   604,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   276,   277,   278,   279,   280,   674,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   276,   277,   278,   279,   280,   675,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   276,   277,   278,   279,   280,
-   676,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   276,   277,   278,
-   279,   280,   749,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   276,
-   277,   278,   279,   280,   781,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   276,   277,   278,   279,   280,   782,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   276,   277,   278,   279,   280,   811,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   276,   277,   278,   279,   280,
-   904,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   276,   277,   278,
-   279,   280,   905,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   276,
-   277,   278,   279,   280,   921,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   276,   277,   278,   279,   280,   922,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   276,   277,   278,   279,   280,   939,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   276,   277,   278,   279,   280,
-   945,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   276,   277,   278,
-   279,   280,  1035,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   276,
-   277,   278,   279,   280,  1036,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   276,   277,   278,   279,   280,  1044,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   276,   277,   278,   279,   280,  1047,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   276,   277,   278,   279,   280,
-  1048,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   276,   277,   278,
-   279,   280,  1056,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   276,
-   277,   278,   279,   280,  1057,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   276,   277,   278,   279,   280,  1113,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   276,   277,   278,   279,   280,  1115,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   276,   277,   278,   279,   280,
-  1209,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   276,   277,   278,
-   279,   280,  1219,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   564,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   566,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   568,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   570,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   572,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   574,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   576,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   578,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   580,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   582,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   584,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   588,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   590,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   592,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   594,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   596,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   598,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   634,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   680,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   688,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   691,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   692,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   704,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   828,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   830,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   832,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   834,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,     0,     0,   835,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,     0,
-     0,   936,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,   431,   276,   277,   278,   279,   280,
-     0,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   467,   276,   277,
-   278,   279,   280,     0,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,     0,     0,     0,     0,     0,   290,     0,
-   472,   276,   277,   278,   279,   280,     0,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   473,   276,   277,   278,   279,   280,     0,
-   281,   282,   283,   284,   285,   286,   287,   288,   289,     0,
-     0,     0,     0,     0,   290,     0,   475,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   480,
-   276,   277,   278,   279,   280,     0,   281,   282,   283,   284,
-   285,   286,   287,   288,   289,     0,     0,     0,     0,     0,
-   290,     0,   481,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   483,   276,   277,   278,   279,
-   280,     0,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,     0,     0,     0,     0,     0,   290,     0,   531,   276,
-   277,   278,   279,   280,     0,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   532,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,   535,   276,   277,   278,   279,   280,
-     0,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   541,   276,   277,
-   278,   279,   280,     0,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,     0,     0,     0,     0,     0,   290,     0,
-   563,   276,   277,   278,   279,   280,     0,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   565,   276,   277,   278,   279,   280,     0,
-   281,   282,   283,   284,   285,   286,   287,   288,   289,     0,
-     0,     0,     0,     0,   290,     0,   567,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   569,
-   276,   277,   278,   279,   280,     0,   281,   282,   283,   284,
-   285,   286,   287,   288,   289,     0,     0,     0,     0,     0,
-   290,     0,   571,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   573,   276,   277,   278,   279,
-   280,     0,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,     0,     0,     0,     0,     0,   290,     0,   575,   276,
-   277,   278,   279,   280,     0,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   577,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,   579,   276,   277,   278,   279,   280,
-     0,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   581,   276,   277,
-   278,   279,   280,     0,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,     0,     0,     0,     0,     0,   290,     0,
-   583,   276,   277,   278,   279,   280,     0,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   587,   276,   277,   278,   279,   280,     0,
-   281,   282,   283,   284,   285,   286,   287,   288,   289,     0,
-     0,     0,     0,     0,   290,     0,   589,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   591,
-   276,   277,   278,   279,   280,     0,   281,   282,   283,   284,
-   285,   286,   287,   288,   289,     0,     0,     0,     0,     0,
-   290,     0,   593,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   595,   276,   277,   278,   279,
-   280,     0,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,     0,     0,     0,     0,     0,   290,     0,   597,   276,
-   277,   278,   279,   280,     0,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   646,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,   650,   276,   277,   278,   279,   280,
-     0,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   657,   276,   277,
-   278,   279,   280,     0,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,     0,     0,     0,     0,     0,   290,     0,
-   658,   276,   277,   278,   279,   280,     0,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   662,   276,   277,   278,   279,   280,     0,
-   281,   282,   283,   284,   285,   286,   287,   288,   289,     0,
-     0,     0,     0,     0,   290,     0,   696,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   703,
-   276,   277,   278,   279,   280,     0,   281,   282,   283,   284,
-   285,   286,   287,   288,   289,     0,     0,     0,     0,     0,
-   290,     0,   827,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,   829,   276,   277,   278,   279,
-   280,     0,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,     0,     0,     0,     0,     0,   290,     0,   831,   276,
-   277,   278,   279,   280,     0,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290,
-     0,   833,   276,   277,   278,   279,   280,     0,   281,   282,
-   283,   284,   285,   286,   287,   288,   289,     0,     0,     0,
-     0,     0,   290,     0,   839,   276,   277,   278,   279,   280,
-     0,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-     0,     0,     0,     0,     0,   290,     0,   898,   276,   277,
-   278,   279,   280,     0,   281,   282,   283,   284,   285,   286,
-   287,   288,   289,     0,     0,     0,     0,     0,   290,     0,
-   900,   276,   277,   278,   279,   280,     0,   281,   282,   283,
-   284,   285,   286,   287,   288,   289,     0,     0,     0,     0,
-     0,   290,     0,   908,   276,   277,   278,   279,   280,     0,
-   281,   282,   283,   284,   285,   286,   287,   288,   289,     0,
-     0,     0,     0,     0,   290,     0,   927,   276,   277,   278,
-   279,   280,     0,   281,   282,   283,   284,   285,   286,   287,
-   288,   289,     0,     0,     0,     0,     0,   290,     0,   962,
-   276,   277,   278,   279,   280,     0,   281,   282,   283,   284,
-   285,   286,   287,   288,   289,     0,     0,     0,     0,     0,
-   290,     0,   994,   276,   277,   278,   279,   280,     0,   281,
-   282,   283,   284,   285,   286,   287,   288,   289,     0,     0,
-     0,     0,     0,   290,     0,  1112,   276,   277,   278,   279,
-   280,     0,   281,   282,   283,   284,   285,   286,   287,   288,
-   289,     0,     0,     0,     0,     0,   290,     0,  1158,   276,
-   277,   278,   279,   280,     0,   281,   282,   283,   284,   285,
-   286,   287,   288,   289,     0,     0,     0,     0,     0,   290
+     0,    -3,    -3,    -3,    -3,     0,    -3,    -3,     0,     0,
+     0,     0,     0,    -3,    -3,    -3,    -3,     0,     0,     0,
+     0,    -3,     0,    -3,     0,    -3,    -3,    -3,    -3,    -3,
+    -3,    -3,    -3,    -3,   508,     9,    10,   509,   510,    13,
+   511,    15,     0,    16,     0,    18,    19,     0,    21,    22,
+     0,   508,     9,    10,   509,   510,    13,   511,    15,     0,
+    16,     0,    18,    19,    33,    21,    22,     0,     0,     0,
+     0,     0,     0,     0,    37,    38,    39,     0,     0,     0,
+     0,    33,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    37,    38,    39,   508,     9,    10,   509,   510,    13,
+   511,    15,     0,    16,     0,    18,    19,     0,    21,    22,
+     0,   508,     9,    10,   509,   510,    13,   511,    15,     0,
+    16,     0,    18,    19,    33,    21,    22,     0,     0,     0,
+     0,   512,     0,     0,    37,    38,    39,     0,     0,     0,
+     0,    33,     0,     0,     0,     0,     0,     0,   518,     0,
+     0,    37,    38,    39,   508,     9,    10,   509,   510,    13,
+   511,    15,     0,    16,     0,    18,    19,     0,    21,    22,
+     0,   508,     9,    10,   509,   510,    13,   511,    15,     0,
+    16,     0,    18,    19,    33,    21,    22,     0,     0,     0,
+     0,   532,     0,     0,    37,    38,    39,     0,     0,     0,
+     0,    33,     0,     0,     0,     0,     0,     0,   533,     0,
+     0,    37,    38,    39,   508,     9,    10,   509,   510,    13,
+   511,    15,     0,    16,     0,    18,    19,     0,    21,    22,
+     0,   508,     9,    10,   509,   510,    13,   511,    15,     0,
+    16,     0,    18,    19,    33,    21,    22,     0,     4,     0,
+     0,   667,     0,     0,    37,    38,    39,     0,     0,     0,
+     0,    33,     0,     0,     0,     0,     0,     0,   687,     0,
+     0,    37,    38,    39,     0,     0,     0,     5,     0,     0,
+     0,     0,     6,     7,     0,     8,     9,    10,    11,    12,
+    13,    14,    15,     0,    16,    17,    18,    19,    20,    21,
+    22,     0,     0,     0,    23,    24,    25,    26,    27,    28,
+    29,  1065,    30,    31,    32,    33,     0,    34,    35,     0,
+     0,     0,     0,     0,    36,    37,    38,    39,  1110,     0,
+     0,     0,    40,     0,    41,     0,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,     0,
+     0,     0,   964,     0,   965,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,     0,
+     0,     0,  1027,     0,  1028,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   271,
+   272,   273,   274,   275,   624,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,     0,     0,   271,   272,   273,   274,   275,   645,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,     0,     0,   271,   272,   273,
+   274,   275,   649,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,     0,
+     0,   271,   272,   273,   274,   275,   650,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,     0,     0,   271,   272,   273,   274,   275,
+   694,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   271,
+   272,   273,   274,   275,   769,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,     0,     0,   271,   272,   273,   274,   275,   939,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,     0,     0,   271,   272,   273,
+   274,   275,   953,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,     0,
+     0,   271,   272,   273,   274,   275,  1039,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,     0,     0,   271,   272,   273,   274,   275,
+  1045,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   271,
+   272,   273,   274,   275,  1046,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,     0,     0,   271,   272,   273,   274,   275,  1056,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,     0,     0,   271,   272,   273,
+   274,   275,  1059,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,     0,
+     0,   271,   272,   273,   274,   275,  1062,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,     0,     0,   271,   272,   273,   274,   275,
+  1070,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   271,
+   272,   273,   274,   275,  1071,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,     0,     0,   271,   272,   273,   274,   275,  1079,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,     0,     0,   271,   272,   273,
+   274,   275,  1104,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,     0,
+     0,   271,   272,   273,   274,   275,  1106,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,     0,     0,   271,   272,   273,   274,   275,
+  1108,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   271,
+   272,   273,   274,   275,  1116,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   271,   272,   273,   274,   275,   452,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   271,   272,   273,   274,   275,   491,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   271,   272,   273,   274,   275,
+   492,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   271,   272,   273,
+   274,   275,   527,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   271,
+   272,   273,   274,   275,   574,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   271,   272,   273,   274,   275,   575,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   271,   272,   273,   274,   275,   588,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   271,   272,   273,   274,   275,
+   589,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   271,   272,   273,
+   274,   275,   590,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   271,
+   272,   273,   274,   275,   591,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   271,   272,   273,   274,   275,   592,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   271,   272,   273,   274,   275,   593,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   271,   272,   273,   274,   275,
+   663,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   271,   272,   273,
+   274,   275,   664,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   271,
+   272,   273,   274,   275,   665,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   271,   272,   273,   274,   275,   735,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   271,   272,   273,   274,   275,   767,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   271,   272,   273,   274,   275,
+   768,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   271,   272,   273,
+   274,   275,   795,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   271,
+   272,   273,   274,   275,   887,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   271,   272,   273,   274,   275,   888,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   271,   272,   273,   274,   275,   899,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   271,   272,   273,   274,   275,
+   900,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   271,   272,   273,
+   274,   275,   917,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   271,
+   272,   273,   274,   275,   923,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   271,   272,   273,   274,   275,  1008,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   271,   272,   273,   274,   275,  1009,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   271,   272,   273,   274,   275,
+  1015,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   271,   272,   273,
+   274,   275,  1016,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   271,
+   272,   273,   274,   275,  1024,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   271,   272,   273,   274,   275,  1025,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   271,   272,   273,   274,   275,  1075,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   271,   272,   273,   274,   275,
+  1077,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   555,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   557,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   559,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   561,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   563,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   565,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   567,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   569,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   571,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   573,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   577,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   579,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   581,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   583,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   585,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   587,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   623,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   669,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   677,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   680,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   681,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   690,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   811,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   813,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   815,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   817,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,     0,     0,   818,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,     0,     0,   914,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   423,   271,   272,
+   273,   274,   275,     0,   276,   277,   278,   279,   280,   281,
+   282,   283,   284,     0,     0,     0,     0,     0,   285,     0,
+   459,   271,   272,   273,   274,   275,     0,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   464,   271,   272,   273,   274,   275,     0,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,     0,
+     0,     0,     0,     0,   285,     0,   465,   271,   272,   273,
+   274,   275,     0,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   467,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,   472,   271,   272,   273,   274,   275,     0,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   473,   271,   272,   273,   274,
+   275,     0,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,     0,     0,     0,     0,     0,   285,     0,   475,   271,
+   272,   273,   274,   275,     0,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   523,   271,   272,   273,   274,   275,     0,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,     0,     0,     0,
+     0,     0,   285,     0,   524,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   525,   271,   272,
+   273,   274,   275,     0,   276,   277,   278,   279,   280,   281,
+   282,   283,   284,     0,     0,     0,     0,     0,   285,     0,
+   531,   271,   272,   273,   274,   275,     0,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   552,   271,   272,   273,   274,   275,     0,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,     0,
+     0,     0,     0,     0,   285,     0,   554,   271,   272,   273,
+   274,   275,     0,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   556,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,   558,   271,   272,   273,   274,   275,     0,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   560,   271,   272,   273,   274,
+   275,     0,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,     0,     0,     0,     0,     0,   285,     0,   562,   271,
+   272,   273,   274,   275,     0,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   564,   271,   272,   273,   274,   275,     0,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,     0,     0,     0,
+     0,     0,   285,     0,   566,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   568,   271,   272,
+   273,   274,   275,     0,   276,   277,   278,   279,   280,   281,
+   282,   283,   284,     0,     0,     0,     0,     0,   285,     0,
+   570,   271,   272,   273,   274,   275,     0,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   572,   271,   272,   273,   274,   275,     0,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,     0,
+     0,     0,     0,     0,   285,     0,   576,   271,   272,   273,
+   274,   275,     0,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   578,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,   580,   271,   272,   273,   274,   275,     0,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   582,   271,   272,   273,   274,
+   275,     0,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,     0,     0,     0,     0,     0,   285,     0,   584,   271,
+   272,   273,   274,   275,     0,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   586,   271,   272,   273,   274,   275,     0,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,     0,     0,     0,
+     0,     0,   285,     0,   635,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   639,   271,   272,
+   273,   274,   275,     0,   276,   277,   278,   279,   280,   281,
+   282,   283,   284,     0,     0,     0,     0,     0,   285,     0,
+   646,   271,   272,   273,   274,   275,     0,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   647,   271,   272,   273,   274,   275,     0,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,     0,
+     0,     0,     0,     0,   285,     0,   651,   271,   272,   273,
+   274,   275,     0,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,   810,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,   812,   271,   272,   273,   274,   275,     0,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,     0,     0,
+     0,     0,     0,   285,     0,   814,   271,   272,   273,   274,
+   275,     0,   276,   277,   278,   279,   280,   281,   282,   283,
+   284,     0,     0,     0,     0,     0,   285,     0,   816,   271,
+   272,   273,   274,   275,     0,   276,   277,   278,   279,   280,
+   281,   282,   283,   284,     0,     0,     0,     0,     0,   285,
+     0,   822,   271,   272,   273,   274,   275,     0,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,     0,     0,     0,
+     0,     0,   285,     0,   881,   271,   272,   273,   274,   275,
+     0,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     0,     0,     0,     0,     0,   285,     0,   883,   271,   272,
+   273,   274,   275,     0,   276,   277,   278,   279,   280,   281,
+   282,   283,   284,     0,     0,     0,     0,     0,   285,     0,
+   905,   271,   272,   273,   274,   275,     0,   276,   277,   278,
+   279,   280,   281,   282,   283,   284,     0,     0,     0,     0,
+     0,   285,     0,   940,   271,   272,   273,   274,   275,     0,
+   276,   277,   278,   279,   280,   281,   282,   283,   284,     0,
+     0,     0,     0,     0,   285,     0,   968,   271,   272,   273,
+   274,   275,     0,   276,   277,   278,   279,   280,   281,   282,
+   283,   284,     0,     0,     0,     0,     0,   285,     0,  1074,
+   271,   272,   273,   274,   275,     0,   276,   277,   278,   279,
+   280,   281,   282,   283,   284,     0,     0,     0,     0,     0,
+   285,     0,  1115
 };
 
 static const short yycheck[] = {     4,
-     4,     4,   337,     4,   177,   269,     2,   180,     6,     2,
-     4,    45,   267,     4,     4,     4,     4,   132,     4,     4,
-     7,     5,     4,     6,    67,     6,     6,   624,     5,     7,
-   203,     4,   205,   132,     6,     5,    67,     4,   133,     6,
-    68,    68,   297,   138,     6,    73,    73,   132,    51,    52,
-    34,    35,    36,    37,    86,   132,    40,    34,    35,    36,
-    37,     6,   139,    40,    34,    35,    36,    37,   132,     6,
-    40,   132,    76,    77,    78,    79,    80,   121,   122,     7,
-     6,   132,    76,    77,    78,    79,    80,     6,   132,     4,
-     6,     7,    68,   909,   910,   139,   139,    73,   132,   790,
-   132,   132,   121,   122,   133,   110,   111,   112,   139,   138,
-   115,   116,   140,   140,   119,    52,    89,    90,    49,   138,
-   107,   126,   132,   121,   122,   130,   131,   132,    45,   107,
-   108,   109,   110,    52,   139,   140,   140,   142,   119,   128,
-   129,   146,   147,   740,   149,   134,   140,   136,   139,   139,
-   132,   139,   141,   139,   139,   139,   139,   119,   128,   129,
-   165,   166,   139,   132,   140,    45,   136,   134,   267,   174,
-   139,   435,    45,   346,    89,    90,   121,   122,    47,   107,
-   108,   109,   110,   188,   189,  1001,   191,    41,   193,    68,
-    44,   196,   197,   366,    73,   121,   122,    68,   297,   132,
-   128,   129,    73,   208,   459,   132,   139,   462,   136,   214,
-   215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-   225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-   235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-   245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-   255,   139,   849,   256,   257,   258,   259,   139,    68,    68,
-    68,   140,   267,    73,    73,    73,   128,   129,   269,   140,
-    45,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-   285,   286,   287,   288,   289,   290,     8,   121,   122,   294,
-   295,   133,   297,  1026,   299,  1028,   138,  1030,     6,   304,
-   325,   326,   327,   308,    68,   139,   311,   121,   122,    73,
-   121,   122,   317,   318,   319,     6,   321,   322,   323,   324,
-   325,   326,   327,     6,   138,    41,   140,   138,    44,    45,
-   140,   140,   140,     4,   339,   340,   341,   342,   343,   344,
-   336,   337,   347,   336,   337,    68,     4,   352,   121,   122,
-    73,   356,   357,   608,    68,     4,    68,   362,   132,    73,
-   459,    73,   132,   462,   134,   138,   371,   140,  1101,   468,
-   132,   376,  1063,   132,   379,  1066,   140,   378,  1069,    68,
-   133,   132,   637,   134,    73,   138,     7,   121,   122,   111,
-   112,   113,   114,   115,   132,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,   138,   121,   122,    58,    59,   131,
-     8,  1144,  1009,  1146,     4,  1148,   132,   140,   140,  1152,
-     4,    25,    26,   139,    28,   430,   140,   682,   140,   684,
-   685,   686,   437,   436,   435,   121,   122,    45,   132,  1130,
-   121,   122,   121,   122,   121,   122,     7,  1180,   132,  1182,
-   134,  1184,   132,   139,   459,   460,   132,   462,   139,   138,
-   465,     5,   139,   468,   121,   122,   471,   132,   732,   733,
-  1161,   476,   477,  1164,   479,     4,  1167,   482,     5,  1170,
-     8,   138,   487,    11,    12,     6,   107,   108,   109,   110,
-    34,    35,    36,    37,   499,   500,    40,   123,   124,   125,
-   139,    92,  1193,   508,  1195,   131,  1197,   128,   129,   608,
-     6,   121,   122,   111,   112,   113,   114,   115,   523,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,   138,   132,
-   140,   134,   537,   131,   539,   540,   121,   122,   637,   121,
-   122,    92,   140,   546,   132,   546,   107,   108,   109,   110,
-   885,   128,   129,   138,   121,   122,   138,   134,   162,   136,
-   164,   121,   122,   132,   141,   134,   170,   128,   129,   132,
-   174,   138,   121,   122,   121,   122,   121,   122,   138,   133,
-   585,   586,    92,   682,   138,   684,   685,   686,     8,   138,
-   132,   138,   134,   138,   599,   600,   601,   602,   603,   604,
-   605,    44,    45,   608,    47,   139,   609,   612,   212,     6,
-   133,     4,   617,     4,     5,   138,    61,    62,    63,    64,
-   148,    66,   627,   128,   129,   153,   132,   630,   134,    74,
-    75,   136,   637,   634,   132,    41,   134,   642,    44,    45,
-     6,    47,   132,    34,    35,    36,    37,     6,     7,    40,
-   178,   132,   132,   134,   134,   183,   184,   113,   114,   115,
-    57,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-   132,   132,   134,   134,   132,   131,   681,   682,   683,   684,
-   685,   686,   139,   132,   689,   690,     6,  1022,   139,   139,
-   695,   111,   112,   113,   114,   115,   132,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,   711,   712,   132,   132,
-   715,   131,   139,   133,   111,   112,   113,   114,   115,   132,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,   139,
-   334,   335,   733,   132,   131,   134,   741,     6,   132,   343,
-   134,    45,   134,    47,   749,   111,   112,   113,   114,   115,
-   134,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-   132,   766,   134,   114,   115,   131,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,   780,   781,   782,   134,   132,
-   131,   134,   787,   132,   136,   134,   121,   122,   123,   124,
-   125,   111,   112,   113,   114,   115,   131,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,   811,   812,   813,   139,
-   132,   131,   134,    92,     6,   820,   817,   132,   132,   134,
-   825,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     6,   132,   132,   134,   134,   131,     6,   842,   841,   138,
-     6,   140,    41,    42,    43,    44,    45,    46,    47,    48,
-   853,    50,   134,    52,    53,     4,    55,    56,  1031,   139,
-   131,     6,   128,   129,     5,     7,   871,   872,   134,   134,
-   136,   136,     4,    72,     6,   141,   881,   138,   881,   140,
-   138,   136,   140,    82,    83,    84,   138,   134,   140,   885,
-   895,    45,   885,     6,   498,   138,   138,   140,   140,   904,
-   905,   100,   128,   129,   432,   433,     7,    47,   134,   513,
-   136,   916,     7,     6,    87,   141,   921,   922,   138,   138,
-   140,   140,   138,   138,   140,   140,   138,   133,   140,  1102,
-   138,   138,   140,   140,   939,   111,   112,   113,   114,   115,
-   945,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     6,   138,   138,   140,   140,   131,     7,   138,   963,   140,
-   138,   138,   140,   140,     7,    89,   111,   112,   113,   114,
-   115,   976,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,   139,   138,   133,     6,   990,   131,   992,     4,   133,
-   138,     6,   997,     7,     7,     7,   135,  1002,   111,   112,
-   113,   114,   115,     7,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,     7,     7,     7,   133,   133,   131,   133,
-  1025,     6,  1027,   133,  1029,   136,  1022,     7,   140,  1022,
-  1035,  1036,   140,   139,   139,   639,  1041,     7,   132,     7,
-   136,   132,  1047,  1048,   132,   132,     4,   139,     7,     6,
-     6,  1056,   135,     6,  1059,   111,   112,   113,   114,   115,
-     6,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-   674,   675,   676,   134,     6,   131,     7,  1082,   119,     7,
-   139,     7,     7,     6,     4,     7,     7,  1092,     7,     7,
-  1095,     7,     7,  1098,     7,     7,     6,     6,     6,     6,
-     4,     7,     7,     6,     4,     6,   132,   139,  1113,   133,
-  1115,   136,   133,     7,     6,   135,   644,   645,     6,   647,
-     6,     6,   139,     6,   652,   653,   111,   112,   113,   114,
-   115,   139,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,     6,     6,    88,   139,     6,   131,   136,     6,     4,
-     6,   135,     6,     6,  1157,     6,     6,     6,     6,     6,
-     6,     6,     6,     6,     6,   693,   694,     6,     6,   697,
-     6,     6,     6,     6,     6,   139,     7,    88,     4,     6,
-   140,     6,  1187,   787,     6,  1188,     7,  1190,   111,   112,
-   113,   114,   115,     6,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,  1208,  1209,     6,   136,  1210,   131,     6,
-     6,    85,   139,     6,  1219,   139,     6,    90,     6,    88,
-     6,     5,   139,     6,     6,   139,     6,     6,     6,   757,
-     6,     6,     6,   761,   133,     6,     6,   139,     6,   767,
-   768,   769,   138,   140,   772,   773,   774,   775,   776,   777,
-   778,   140,   139,     6,   138,   859,   138,   861,   111,   112,
-   113,   114,   115,   139,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,   139,     5,    85,   139,   139,   131,   139,
-   139,     6,   886,   140,   888,     6,   890,     6,   140,   111,
-   112,   113,   114,   115,     6,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,     6,     6,     5,   748,   138,   131,
-     3,     4,   840,    85,     6,   139,     9,    10,    11,    12,
+     2,   332,   613,     4,   264,   999,     4,  1001,     2,  1003,
+     6,   175,     4,     6,   178,     4,     4,   130,   262,    67,
+     4,     4,     7,   130,     4,     6,     5,    68,     6,     6,
+     6,    72,     6,     4,   198,     4,   200,     6,    25,    26,
+    67,    28,     4,     4,    49,    50,     4,     6,   292,    68,
+     4,     6,   130,    72,   132,    34,    35,    36,    37,    68,
+   130,    40,   130,    72,     5,   131,    41,   137,     6,    44,
+   136,     5,  1066,   119,   120,    52,    52,    75,    76,    77,
+    78,    79,   130,    75,    76,    77,    78,    79,   130,   137,
+   136,   776,   138,    34,    35,    36,    37,   138,   130,    40,
+    34,    35,    36,    37,    68,   137,    40,   131,    72,  1103,
+   137,  1105,   136,  1107,   130,   726,   131,  1111,     7,   138,
+   105,   136,   130,   119,   120,   126,   127,    88,    89,   138,
+    49,   132,   131,   134,    88,    89,   117,   136,   139,   117,
+   138,  1135,     7,  1137,   137,  1139,   138,    45,   137,   137,
+   108,   109,   110,   137,   137,   113,   114,   137,   137,   117,
+   119,   120,   130,   132,   119,   120,   124,   427,   130,    45,
+   128,   129,   130,   160,   138,   162,    45,   341,   131,   137,
+   138,   168,   140,   136,    68,   172,   144,   145,    72,   147,
+   119,   120,   126,   127,   262,   359,   137,   119,   120,    47,
+   134,   130,   130,   126,   127,   163,   164,   451,   137,    45,
+   454,   134,     6,     7,   172,   137,   105,   106,   107,   108,
+   207,   832,   119,   120,   292,   137,    68,   185,   186,   187,
+    72,   189,   119,   120,   192,   193,   137,   126,   127,   136,
+   105,   106,   107,   108,     6,   203,   251,   252,   253,   254,
+   137,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+   218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+   228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+   238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
+   248,   249,   250,   264,   119,   120,   138,     7,   121,   122,
+   123,     4,     7,    68,   262,    68,   129,    72,     4,    72,
+   119,   120,   137,   271,   272,   273,   274,   275,   276,   277,
+   278,   279,   280,   281,   282,   283,   284,   285,   137,   331,
+   332,   289,   290,   130,   292,   132,   294,   331,   332,   126,
+   127,   299,   329,   330,     4,   303,  1031,   130,   306,  1034,
+   130,   338,  1037,   597,   312,   313,   314,   130,   316,   317,
+   318,   319,   320,   321,   322,     8,    41,     6,    68,    44,
+    45,   982,    72,   138,   130,   138,   334,   335,   336,   337,
+   338,   339,   626,   451,   342,   130,   454,    68,   130,   347,
+   132,    72,   460,   351,   352,   105,   106,   107,   108,   370,
+   105,   106,   107,   108,   130,     8,   132,  1092,    11,    12,
+   368,    68,     4,   371,    68,    72,   126,   127,    72,     5,
+     4,   126,   127,   428,   134,    58,    59,   671,    68,   673,
+   674,   675,    72,  1118,     6,     7,  1121,    41,   138,  1124,
+    44,    45,  1127,    47,   119,   120,   130,   130,    34,    35,
+    36,    37,   130,   130,    40,   130,   427,   138,   718,   719,
+     4,  1146,   137,  1148,   422,  1150,   109,   110,   111,   112,
+   113,   429,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,   138,     6,     6,   138,     6,   129,   119,   120,     5,
+   119,   120,   137,   451,   452,   138,   454,    91,   138,   457,
+   119,   120,   460,   490,   136,   463,   138,   136,     4,     5,
+   468,   469,   130,   471,   119,   120,   474,   136,   505,   138,
+    91,   479,   119,   120,   121,   122,   123,    91,   130,   597,
+   535,   136,   129,   491,   492,   130,    57,   868,    34,    35,
+    36,    37,   500,   146,    40,   119,   120,   137,   151,   119,
+   120,   119,   120,   119,   120,   130,   137,   515,   626,   119,
+   120,   130,   136,   132,   535,   130,   136,   132,   136,   527,
+   136,   529,   530,   176,   126,   127,   136,   180,   181,   130,
+   132,   132,   134,    44,    45,   130,    47,   139,   109,   110,
+   111,   112,   113,   598,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,   671,   137,   673,   674,   675,   129,   119,
+   120,   119,   120,   130,   619,   132,   574,   575,   320,   321,
+   322,     8,   136,   130,   138,   132,   136,   130,   136,   132,
+   588,   589,   590,   591,   592,   593,   594,   119,   120,   597,
+   130,   628,   132,   601,   119,   120,   130,   130,   606,   126,
+   127,     8,   623,     4,   136,   132,   130,   134,   616,   126,
+   127,   136,   139,   132,   995,   132,   130,   134,   626,    45,
+     6,    47,   139,   631,   137,   137,   663,   664,   665,   137,
+     3,     4,   130,   130,   132,   132,     9,    10,    11,    12,
     13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-   138,   140,     6,   111,   112,   113,   114,   115,    41,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,   139,     6,
-     6,     6,   139,   131,     6,     6,   139,   895,    61,    62,
-    63,    64,    65,    66,   139,   139,     6,   140,   139,     6,
-     6,    74,    75,     6,   912,     0,     0,   549,   985,  1082,
-     2,     2,   845,    -1,    -1,   923,    -1,    -1,    -1,   927,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   103,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,  1025,    -1,  1027,    -1,  1029,    -1,     6,   121,   122,
-    -1,    -1,    -1,    -1,   127,    -1,    -1,    -1,    -1,   132,
-    -1,    -1,    -1,    -1,   137,    -1,    -1,   140,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
-     4,    -1,    -1,    -1,    -1,     9,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,  1034,    -1,    -1,    -1,
-    -1,    -1,  1040,    -1,    -1,    -1,  1044,    61,    62,    63,
-    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-    74,    75,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,     6,   103,
-   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,  1103,    -1,   121,   122,  1107,
-  1108,    -1,    -1,   127,    -1,    -1,    -1,    -1,   132,    -1,
-     3,     4,    -1,   137,    -1,   139,     9,    10,    11,    12,
+   132,   132,   670,   671,   672,   673,   674,   675,   134,   137,
+   678,   679,   109,   110,   111,   112,   113,    91,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,     6,   132,   697,
+   698,     6,   129,   701,   130,   130,   132,   132,   719,     6,
+     4,   138,   109,   110,   111,   112,   113,   137,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,     5,   130,   727,
+   132,   130,   129,   132,   131,   129,   134,   735,   101,   102,
+   103,   104,   130,   130,   132,   132,   773,    61,    62,    63,
+    64,   130,    66,   132,   752,     7,   119,   120,   132,    73,
+    74,   130,   125,   132,   132,    45,   134,   130,   766,   767,
+   768,   136,   135,   138,   137,   773,   136,    47,   138,   824,
+     7,   424,   425,   136,   136,   138,   138,     7,   136,   800,
+   138,   836,   136,   136,   138,   138,   131,   795,   796,   797,
+  1004,     6,   136,     6,   138,   803,   136,   136,   138,   138,
+   808,     4,   136,     6,   138,   842,   136,   844,   138,   864,
+   136,     7,   138,     6,    88,     7,   868,   825,   136,   136,
+   138,   138,   136,   136,   868,   138,   137,   136,   131,   131,
+     6,     4,   869,   133,   871,     7,   873,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,   854,   855,     7,     7,
+     7,   129,     7,  1067,     7,     7,   864,   111,   112,   113,
+   131,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+   878,   131,   131,   131,   138,   129,   137,   134,     7,   887,
+   888,     7,   138,     7,   137,   134,   130,   130,   130,   137,
+     6,   899,   900,     4,   109,   110,   111,   112,   113,     6,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,   917,
+     6,   133,     6,     6,   129,   923,   109,   110,   111,   112,
+   113,     7,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,     6,   132,   941,     6,   117,   129,     7,     7,   137,
+     7,     7,     7,   995,     7,     7,   954,     7,     7,     7,
+     7,   995,     7,     4,     6,   130,   964,     6,   966,     6,
+     6,   998,   970,  1000,     4,  1002,   137,   975,     6,     6,
+     4,     6,   134,   133,     7,   131,     6,   131,     6,     6,
+   633,   634,     6,   636,     6,     6,   137,   137,   641,   642,
+   998,     6,  1000,     6,  1002,    87,   134,     6,     4,     6,
+  1008,  1009,  1010,   133,     6,     6,     6,  1015,  1016,     6,
+     6,     6,     6,     6,     6,     6,  1024,     6,     6,  1027,
+     6,     6,     6,     6,     6,     6,     4,   137,     7,   682,
+   683,   684,     6,     6,   109,   110,   111,   112,   113,  1047,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,  1057,
+     6,   134,  1060,     6,   129,  1063,     6,     6,   137,  1114,
+   138,   137,     6,   137,   137,    84,   137,  1075,   136,  1077,
+     6,   109,   110,   111,   112,   113,     6,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,  1141,     6,  1143,   131,
+   743,   129,   137,     6,   747,     5,     5,   138,   137,    89,
+   753,   754,   755,     6,  1159,   758,   759,   760,   761,   762,
+   763,   764,     6,   136,     3,     4,     6,   137,     6,     6,
+     9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    30,    31,    32,     6,     6,     6,   109,   110,   111,
+   112,   113,    41,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,     6,     6,     6,   137,   137,   129,   138,   137,
+   823,   133,    61,    62,    63,    64,    65,    66,   136,     6,
+     6,     6,     6,     6,    73,    74,     6,     5,     0,   137,
+   109,   110,   111,   112,   113,   137,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,   137,   137,     6,     6,   138,
+   129,     6,   101,   102,   103,   104,     6,     6,     6,     6,
+     6,     6,     6,     0,   734,   878,   538,  1047,     2,     2,
+   119,   120,   974,    -1,    -1,   828,   125,    -1,   891,    -1,
+    -1,   130,    -1,    -1,    -1,    -1,   135,    -1,   901,   138,
+     3,     4,   905,    -1,    -1,    -1,     9,    10,    11,    12,
     13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-    -1,    -1,    -1,    -1,    -1,    -1,  1154,    -1,    41,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,    62,
+    -1,    -1,    -1,   109,   110,   111,   112,   113,    41,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,    61,    62,
     63,    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,
-    -1,    74,    75,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,     6,
-   103,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   121,   122,
-    -1,    -1,    -1,    -1,   127,    -1,    -1,    -1,    -1,   132,
-    -1,     3,     4,    -1,   137,    -1,   139,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-    32,    -1,    -1,    -1,   111,   112,   113,   114,   115,    41,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
-    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,   135,    61,
-    62,    63,    64,    65,    66,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    74,    75,   111,   112,   113,   114,   115,    -1,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
-    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,
-    -1,   103,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   121,
-   122,    -1,    -1,    -1,    -1,   127,    -1,    -1,    -1,    -1,
-   132,    -1,     3,     4,    -1,   137,    -1,   139,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    -1,    -1,    -1,   111,   112,   113,   114,   115,
-    41,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,   135,
-    61,    62,    63,    64,    65,    66,    -1,    -1,    -1,     3,
-     4,    -1,    -1,    74,    75,     9,    10,    11,    12,    13,
+    73,    74,   109,   110,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
+    -1,    -1,   129,    -1,    -1,    -1,    -1,    -1,   101,   102,
+   103,   104,     6,    -1,  1007,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,
+    -1,    -1,   125,    -1,    -1,    -1,    -1,   130,    -1,     3,
+     4,    -1,   135,    -1,   137,     9,    10,    11,    12,    13,
     14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
-    -1,     6,   103,   104,   105,   106,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,  1068,    -1,    41,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    61,    62,    63,
+    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,    73,
+    74,    -1,    -1,    -1,    -1,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   101,   102,   103,
+   104,     6,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,
+    -1,   125,    -1,    -1,    -1,    -1,   130,    -1,     3,     4,
+    -1,   135,    -1,   137,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
+    -1,   109,   110,   111,   112,   113,    41,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,    -1,    -1,   133,    61,    62,    63,    64,
+    65,    66,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
+    -1,    -1,    -1,    -1,   109,   110,   111,   112,   113,    -1,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,    -1,
+    -1,    -1,    -1,    -1,   129,    -1,   101,   102,   103,   104,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   121,   122,    -1,    -1,    -1,    -1,   127,    -1,    -1,    -1,
-    -1,   132,    -1,     3,     4,    -1,   137,    -1,   139,     9,
+    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,
+   125,    -1,    -1,    -1,    -1,   130,    -1,     3,     4,    -1,
+   135,    -1,   137,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
+   109,   110,   111,   112,   113,    41,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,    61,    62,    63,    64,    65,
+    66,    -1,    -1,     3,     4,    -1,    -1,    73,    74,     9,
     10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,   103,
-   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   121,   122,    -1,
-    -1,    -1,    -1,   127,    -1,    -1,    -1,    -1,   132,    -1,
-    -1,   135,    -1,   137,    -1,   139,   111,   112,   113,   114,
-   115,    -1,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,
-    -1,    -1,    -1,   103,   104,   105,   106,    -1,    -1,    -1,
+    30,    31,    32,    -1,    -1,   101,   102,   103,   104,     6,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   121,   122,    -1,    -1,    -1,    -1,   127,    -1,    -1,
-    -1,    -1,   132,    -1,    -1,   135,    -1,   137,    -1,   139,
-     3,     4,    -1,    -1,    -1,    -1,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
-    -1,    -1,    -1,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,     3,     4,    -1,
-    -1,    -1,    -1,     9,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
-   103,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   121,   122,
-    -1,    -1,    -1,    -1,   127,    -1,    -1,    -1,    -1,   132,
-    -1,    -1,   135,    -1,   137,    -1,   139,   103,   104,   105,
-   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
-    -1,   127,    -1,    -1,    -1,    -1,   132,   103,   104,   105,
-   106,   137,    -1,   139,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,    -1,
-    -1,   127,    -1,    -1,    -1,    -1,   132,    -1,     3,     4,
-     5,   137,     7,   139,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    -1,    34,
-    35,    36,    37,    -1,    -1,    40,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
+    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,   125,
+    -1,    -1,    -1,    -1,   130,    -1,     3,     4,    -1,   135,
+    -1,   137,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,
+    -1,   101,   102,   103,   104,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
+   120,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,
+   130,    -1,    -1,   133,    -1,   135,    -1,   137,    -1,    -1,
+    -1,    -1,   109,   110,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
+    -1,    -1,   129,    -1,   101,   102,   103,   104,     6,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,   125,    -1,
+    -1,    -1,    -1,   130,    -1,    -1,   133,    -1,   135,    -1,
+   137,     3,     4,    -1,    -1,    -1,    -1,     9,    10,    11,
+    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
     -1,    -1,    -1,    -1,     9,    10,    11,    12,    13,    14,
     15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,   104,
-   105,   106,   107,   108,   109,   110,    61,    62,    63,    64,
-    65,    66,    -1,    -1,    -1,    -1,   121,   122,    -1,    74,
-    75,    -1,   127,   128,   129,    -1,    -1,   132,    -1,   134,
-    -1,   136,   137,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,   103,   104,
-   105,   106,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,
-   138,    -1,   140,    -1,    -1,    -1,   121,   122,    -1,    -1,
-    -1,    -1,   127,    -1,    -1,    -1,    -1,   132,     3,     4,
-     5,    -1,   137,    -1,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    -1,    34,
-    35,    36,    37,     3,     4,    40,    -1,    -1,    -1,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,     3,     4,    -1,    -1,    -1,    -1,     9,
+    -1,   109,   110,   111,   112,   113,    -1,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+   102,   103,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,    -1,
+    -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,   130,    -1,
+    -1,   133,    -1,   135,    -1,   137,   101,   102,   103,   104,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,
+   125,    -1,    -1,    -1,    -1,   130,    -1,     3,     4,     5,
+   135,     7,   137,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
+    36,    37,    -1,    -1,    40,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,    -1,
+    -1,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   101,   102,   103,   104,   105,
+   106,   107,   108,    61,    62,    63,    64,    65,    66,    -1,
+    -1,    -1,    -1,   119,   120,    73,    74,    -1,    -1,   125,
+   126,   127,    -1,    -1,   130,    -1,   132,    -1,   134,   135,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   101,   102,   103,   104,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   119,   120,    -1,    -1,    -1,    -1,   125,    -1,    -1,
+    -1,    -1,   130,     3,     4,     5,    -1,   135,    -1,     9,
     10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    -1,    -1,     8,    -1,    -1,   103,   104,
-   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     8,    -1,    -1,    -1,    -1,    -1,   121,   122,    -1,    -1,
-    -1,    -1,   127,    -1,    -1,     8,    -1,   132,    -1,    -1,
-    -1,    -1,   137,   103,   104,   105,   106,    -1,    -1,    -1,
-     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   121,   122,    -1,    -1,     8,    -1,   127,    -1,    -1,
-    -1,    -1,   132,   103,   104,   105,   106,   137,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   121,   122,    -1,    -1,    -1,    -1,   127,    -1,    -1,
-    -1,    -1,   132,    -1,    -1,    -1,    -1,   137,   111,   112,
-   113,   114,   115,    -1,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,   111,   112,   113,   114,   115,   131,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,   111,   112,
-   113,   114,   115,   131,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,   111,   112,   113,   114,   115,   131,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,   111,   112,
-   113,   114,   115,   131,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,     0,     1,    -1,    -1,     4,   131,    -1,
-   111,   112,   113,   114,   115,    -1,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,
-   131,    -1,    -1,    -1,    -1,    -1,    33,   138,    -1,   140,
+    30,    31,    32,    -1,    34,    35,    36,    37,     3,     4,
+    40,    -1,    -1,    -1,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    28,    29,    30,    31,    32,     3,     4,
+    -1,    -1,    -1,    -1,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    28,    29,    30,    31,    32,     6,    -1,
+    -1,   101,   102,   103,   104,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,     6,    -1,    -1,    -1,    -1,    -1,   119,
+   120,    -1,    -1,    -1,    -1,   125,    -1,    -1,     6,    -1,
+   130,    -1,    -1,    -1,    -1,   135,   101,   102,   103,   104,
+    -1,    -1,    -1,     6,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,    -1,
+   125,    -1,    -1,    -1,    -1,   130,   101,   102,   103,   104,
+   135,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   119,   120,     8,    -1,    -1,    -1,
+   125,    -1,    -1,    -1,    -1,   130,    -1,    -1,    -1,    -1,
+   135,   109,   110,   111,   112,   113,    -1,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,   109,   110,   111,   112,
+   113,   129,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,   109,   110,   111,   112,   113,   129,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,   109,   110,   111,   112,
+   113,   129,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,     8,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,
+    -1,    -1,   109,   110,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,   109,   110,   111,
+   112,   113,   129,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,     8,    -1,    -1,    -1,    -1,   129,    -1,    41,
+    42,    43,    44,    45,    46,    47,    48,     8,    50,    -1,
+    52,    53,    -1,    55,    56,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   109,   110,   111,   112,   113,    71,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,    81,
+    82,    83,    -1,    -1,   129,    -1,   131,    -1,    -1,    -1,
+    -1,   136,   109,   110,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
+    -1,    -1,   129,    -1,    -1,    -1,    -1,    -1,   109,   110,
+   111,   112,   113,    -1,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,   109,   110,   111,   112,   113,   129,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,   109,   110,
+   111,   112,   113,   129,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,     0,     1,    -1,    -1,     4,   129,    -1,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,    -1,    -1,    33,   136,    -1,   138,
     -1,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
     47,    48,    -1,    50,    51,    52,    53,    54,    55,    56,
     -1,    -1,    -1,    60,    61,    62,    63,    64,    65,    66,
-    -1,    68,    69,    70,    71,    72,    -1,    74,    75,    -1,
-    -1,    -1,    -1,    -1,    81,    82,    83,    84,    -1,    -1,
-    -1,    -1,    89,    -1,    91,    -1,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,    41,    42,    43,    44,
-    45,    46,    47,    48,    -1,    50,    -1,    52,    53,    -1,
-    55,    56,    -1,    -1,    -1,    -1,    -1,    41,    42,    43,
-    44,    45,    46,    47,    48,    -1,    50,    72,    52,    53,
-    -1,    55,    56,    -1,    -1,    -1,    -1,    82,    83,    84,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
-    -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,    82,    83,
-    84,    -1,    -1,    41,    42,    43,    44,    45,    46,    47,
-    48,    -1,    50,    -1,    52,    53,   100,    55,    56,   111,
-   112,   113,   114,   115,    -1,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    72,   140,    -1,    -1,    -1,   131,
-    -1,    -1,    -1,    -1,    82,    83,    84,    -1,   140,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   140,    -1,    -1,    -1,
-    -1,    -1,   100,    41,    42,    43,    44,    45,    46,    47,
-    48,    -1,    50,    -1,    52,    53,    -1,    55,    56,    -1,
-    -1,    -1,    -1,    -1,    41,    42,    43,    44,    45,    46,
-    47,    48,    -1,    50,    72,    52,    53,    -1,    55,    56,
-    -1,    -1,   140,    -1,    82,    83,    84,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
-    -1,    -1,   100,    -1,    -1,    82,    83,    84,    -1,    -1,
-    41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
-    -1,    52,    53,   100,    55,    56,   111,   112,   113,   114,
-   115,    -1,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    72,   140,    -1,    -1,    -1,   131,    -1,    -1,    -1,
-    -1,    82,    83,    84,    -1,   140,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   140,    -1,    -1,    -1,    -1,    -1,   100,
-    41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
-    -1,    52,    53,    -1,    55,    56,    -1,    -1,    -1,    -1,
+    -1,    68,    69,    70,    71,    -1,    73,    74,    -1,    -1,
+    -1,    -1,    -1,    80,    81,    82,    83,    -1,    -1,    -1,
+    -1,    88,    -1,    90,    -1,    92,    93,    94,    95,    96,
+    97,    98,    99,   100,    41,    42,    43,    44,    45,    46,
+    47,    48,    -1,    50,    -1,    52,    53,    -1,    55,    56,
     -1,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
-    50,    72,    52,    53,    -1,    55,    56,    -1,    -1,   140,
-    -1,    82,    83,    84,     4,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,   100,
-    -1,    -1,    82,    83,    84,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,    38,    39,
-   100,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
-    50,    51,    52,    53,    54,    55,    56,    -1,    -1,   140,
-    60,    61,    62,    63,    64,    65,    66,    -1,    68,    69,
-    70,    71,    72,    -1,    74,    75,    -1,    -1,    -1,    -1,
-   140,    81,    82,    83,    84,    -1,    -1,    -1,    -1,    89,
-    -1,    91,    -1,    93,    94,    95,    96,    97,    98,    99,
-   100,   101,   102,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,
-   138,    -1,   140,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,   112,   113,
-   114,   115,   140,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   111,   112,   113,   114,   115,   140,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,    -1,    -1,   111,   112,   113,   114,   115,
-   140,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,
-   112,   113,   114,   115,   140,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,    -1,    -1,   111,   112,   113,   114,   115,   140,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,   112,   113,
-   114,   115,   140,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   111,   112,   113,   114,   115,   140,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,    -1,    -1,   111,   112,   113,   114,   115,
-   140,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,
-   112,   113,   114,   115,   140,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,    -1,    -1,   111,   112,   113,   114,   115,   140,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,   112,   113,
-   114,   115,   140,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   111,   112,   113,   114,   115,   140,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,    -1,    -1,   111,   112,   113,   114,   115,
-   140,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,
-   112,   113,   114,   115,   140,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,    -1,    -1,   111,   112,   113,   114,   115,   140,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,   112,   113,
-   114,   115,   140,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   111,   112,   113,   114,   115,   140,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,    -1,    -1,   111,   112,   113,   114,   115,
-   140,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,
-   112,   113,   114,   115,   140,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,    -1,    -1,   111,   112,   113,   114,   115,   140,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,    -1,    -1,   111,   112,   113,
-   114,   115,   140,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,
-    -1,    -1,    -1,    -1,   138,   111,   112,   113,   114,   115,
-    -1,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,   112,   113,
-   114,   115,   138,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,
-   112,   113,   114,   115,   138,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   111,   112,   113,   114,   115,   138,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   111,   112,   113,   114,   115,   138,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   111,   112,   113,   114,   115,
-   138,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,   112,   113,
-   114,   115,   138,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,
-   112,   113,   114,   115,   138,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   111,   112,   113,   114,   115,   138,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   111,   112,   113,   114,   115,   138,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   111,   112,   113,   114,   115,
-   138,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,   112,   113,
-   114,   115,   138,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,
-   112,   113,   114,   115,   138,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   111,   112,   113,   114,   115,   138,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   111,   112,   113,   114,   115,   138,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   111,   112,   113,   114,   115,
-   138,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,   112,   113,
-   114,   115,   138,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,
-   112,   113,   114,   115,   138,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   111,   112,   113,   114,   115,   138,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   111,   112,   113,   114,   115,   138,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   111,   112,   113,   114,   115,
-   138,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,   112,   113,
-   114,   115,   138,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,
-   112,   113,   114,   115,   138,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   111,   112,   113,   114,   115,   138,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   111,   112,   113,   114,   115,   138,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   111,   112,   113,   114,   115,
-   138,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,   112,   113,
-   114,   115,   138,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,
-   112,   113,   114,   115,   138,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   111,   112,   113,   114,   115,   138,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   111,   112,   113,   114,   115,   138,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   111,   112,   113,   114,   115,
-   138,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,   112,   113,
-   114,   115,   138,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,
-   112,   113,   114,   115,   138,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   111,   112,   113,   114,   115,   138,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   111,   112,   113,   114,   115,   138,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   111,   112,   113,   114,   115,
-   138,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   111,   112,   113,
-   114,   115,   138,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,    -1,    -1,   135,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
-    -1,   135,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,   115,
-    -1,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,
-   113,   114,   115,    -1,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,
-   133,   111,   112,   113,   114,   115,    -1,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   133,   111,   112,   113,   114,   115,    -1,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
-    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,
-   111,   112,   113,   114,   115,    -1,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,
-   131,    -1,   133,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,
-   115,    -1,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,
-   112,   113,   114,   115,    -1,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   133,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,   115,
-    -1,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,
-   113,   114,   115,    -1,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,
-   133,   111,   112,   113,   114,   115,    -1,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   133,   111,   112,   113,   114,   115,    -1,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
-    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,
-   111,   112,   113,   114,   115,    -1,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,
-   131,    -1,   133,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,
-   115,    -1,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,
-   112,   113,   114,   115,    -1,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   133,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,   115,
-    -1,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,
-   113,   114,   115,    -1,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,
-   133,   111,   112,   113,   114,   115,    -1,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   133,   111,   112,   113,   114,   115,    -1,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
-    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,
-   111,   112,   113,   114,   115,    -1,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,
-   131,    -1,   133,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,
-   115,    -1,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,
-   112,   113,   114,   115,    -1,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   133,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,   115,
-    -1,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,
-   113,   114,   115,    -1,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,
-   133,   111,   112,   113,   114,   115,    -1,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   133,   111,   112,   113,   114,   115,    -1,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
-    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,
-   111,   112,   113,   114,   115,    -1,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,
-   131,    -1,   133,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,
-   115,    -1,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,
-   112,   113,   114,   115,    -1,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,
-    -1,   133,   111,   112,   113,   114,   115,    -1,   117,   118,
-   119,   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,
-    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,   115,
-    -1,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,
-   113,   114,   115,    -1,   117,   118,   119,   120,   121,   122,
-   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,
-   133,   111,   112,   113,   114,   115,    -1,   117,   118,   119,
-   120,   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,
-    -1,   131,    -1,   133,   111,   112,   113,   114,   115,    -1,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,    -1,
-    -1,    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,
-   114,   115,    -1,   117,   118,   119,   120,   121,   122,   123,
-   124,   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,
-   111,   112,   113,   114,   115,    -1,   117,   118,   119,   120,
-   121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,
-   131,    -1,   133,   111,   112,   113,   114,   115,    -1,   117,
-   118,   119,   120,   121,   122,   123,   124,   125,    -1,    -1,
-    -1,    -1,    -1,   131,    -1,   133,   111,   112,   113,   114,
-   115,    -1,   117,   118,   119,   120,   121,   122,   123,   124,
-   125,    -1,    -1,    -1,    -1,    -1,   131,    -1,   133,   111,
-   112,   113,   114,   115,    -1,   117,   118,   119,   120,   121,
-   122,   123,   124,   125,    -1,    -1,    -1,    -1,    -1,   131
+    50,    -1,    52,    53,    71,    55,    56,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    81,    82,    83,    41,    42,    43,    44,    45,    46,
+    47,    48,    -1,    50,    -1,    52,    53,    -1,    55,    56,
+    -1,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
+    50,    -1,    52,    53,    71,    55,    56,    -1,    -1,    -1,
+    -1,   138,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,
+    -1,    81,    82,    83,    41,    42,    43,    44,    45,    46,
+    47,    48,    -1,    50,    -1,    52,    53,    -1,    55,    56,
+    -1,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
+    50,    -1,    52,    53,    71,    55,    56,    -1,    -1,    -1,
+    -1,   138,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,
+    -1,    81,    82,    83,    41,    42,    43,    44,    45,    46,
+    47,    48,    -1,    50,    -1,    52,    53,    -1,    55,    56,
+    -1,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
+    50,    -1,    52,    53,    71,    55,    56,    -1,     4,    -1,
+    -1,   138,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,
+    -1,    81,    82,    83,    -1,    -1,    -1,    33,    -1,    -1,
+    -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    45,
+    46,    47,    48,    -1,    50,    51,    52,    53,    54,    55,
+    56,    -1,    -1,    -1,    60,    61,    62,    63,    64,    65,
+    66,   138,    68,    69,    70,    71,    -1,    73,    74,    -1,
+    -1,    -1,    -1,    -1,    80,    81,    82,    83,   138,    -1,
+    -1,    -1,    88,    -1,    90,    -1,    92,    93,    94,    95,
+    96,    97,    98,    99,   100,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,
+    -1,    -1,   136,    -1,   138,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,
+    -1,    -1,   136,    -1,   138,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,
+   110,   111,   112,   113,   138,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,    -1,    -1,   109,   110,   111,   112,   113,   138,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,   110,   111,
+   112,   113,   138,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,
+    -1,   109,   110,   111,   112,   113,   138,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,    -1,    -1,   109,   110,   111,   112,   113,
+   138,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,
+   110,   111,   112,   113,   138,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,    -1,    -1,   109,   110,   111,   112,   113,   138,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,   110,   111,
+   112,   113,   138,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,
+    -1,   109,   110,   111,   112,   113,   138,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,    -1,    -1,   109,   110,   111,   112,   113,
+   138,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,
+   110,   111,   112,   113,   138,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,    -1,    -1,   109,   110,   111,   112,   113,   138,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,   110,   111,
+   112,   113,   138,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,
+    -1,   109,   110,   111,   112,   113,   138,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,    -1,    -1,   109,   110,   111,   112,   113,
+   138,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,
+   110,   111,   112,   113,   138,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,    -1,    -1,   109,   110,   111,   112,   113,   138,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,   110,   111,
+   112,   113,   138,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,
+    -1,   109,   110,   111,   112,   113,   138,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,    -1,    -1,   109,   110,   111,   112,   113,
+   138,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   109,
+   110,   111,   112,   113,   138,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   109,   110,   111,   112,   113,   136,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   109,   110,   111,   112,   113,   136,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   109,   110,   111,   112,   113,
+   136,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,   110,   111,
+   112,   113,   136,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,
+   110,   111,   112,   113,   136,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   109,   110,   111,   112,   113,   136,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   109,   110,   111,   112,   113,   136,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   109,   110,   111,   112,   113,
+   136,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,   110,   111,
+   112,   113,   136,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,
+   110,   111,   112,   113,   136,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   109,   110,   111,   112,   113,   136,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   109,   110,   111,   112,   113,   136,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   109,   110,   111,   112,   113,
+   136,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,   110,   111,
+   112,   113,   136,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,
+   110,   111,   112,   113,   136,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   109,   110,   111,   112,   113,   136,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   109,   110,   111,   112,   113,   136,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   109,   110,   111,   112,   113,
+   136,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,   110,   111,
+   112,   113,   136,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,
+   110,   111,   112,   113,   136,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   109,   110,   111,   112,   113,   136,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   109,   110,   111,   112,   113,   136,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   109,   110,   111,   112,   113,
+   136,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,   110,   111,
+   112,   113,   136,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,
+   110,   111,   112,   113,   136,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   109,   110,   111,   112,   113,   136,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   109,   110,   111,   112,   113,   136,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   109,   110,   111,   112,   113,
+   136,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,   110,   111,
+   112,   113,   136,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   109,
+   110,   111,   112,   113,   136,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   109,   110,   111,   112,   113,   136,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   109,   110,   111,   112,   113,   136,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   109,   110,   111,   112,   113,
+   136,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,   133,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,    -1,    -1,   133,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,
+   111,   112,   113,    -1,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,
+   131,   109,   110,   111,   112,   113,    -1,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   131,   109,   110,   111,   112,   113,    -1,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,    -1,
+    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,   131,   109,   110,   111,   112,   113,    -1,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,   112,
+   113,    -1,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,
+   110,   111,   112,   113,    -1,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   131,   109,   110,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
+    -1,    -1,   129,    -1,   131,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,
+   111,   112,   113,    -1,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,
+   131,   109,   110,   111,   112,   113,    -1,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   131,   109,   110,   111,   112,   113,    -1,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,    -1,
+    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,   131,   109,   110,   111,   112,   113,    -1,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,   112,
+   113,    -1,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,
+   110,   111,   112,   113,    -1,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   131,   109,   110,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
+    -1,    -1,   129,    -1,   131,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,
+   111,   112,   113,    -1,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,
+   131,   109,   110,   111,   112,   113,    -1,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   131,   109,   110,   111,   112,   113,    -1,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,    -1,
+    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,   131,   109,   110,   111,   112,   113,    -1,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,   112,
+   113,    -1,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,
+   110,   111,   112,   113,    -1,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   131,   109,   110,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
+    -1,    -1,   129,    -1,   131,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,
+   111,   112,   113,    -1,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,
+   131,   109,   110,   111,   112,   113,    -1,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   131,   109,   110,   111,   112,   113,    -1,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,    -1,
+    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,   131,   109,   110,   111,   112,   113,    -1,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,    -1,    -1,
+    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,   112,
+   113,    -1,   115,   116,   117,   118,   119,   120,   121,   122,
+   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,
+   110,   111,   112,   113,    -1,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,
+    -1,   131,   109,   110,   111,   112,   113,    -1,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,
+    -1,    -1,   129,    -1,   131,   109,   110,   111,   112,   113,
+    -1,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,
+   111,   112,   113,    -1,   115,   116,   117,   118,   119,   120,
+   121,   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,
+   131,   109,   110,   111,   112,   113,    -1,   115,   116,   117,
+   118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
+    -1,   129,    -1,   131,   109,   110,   111,   112,   113,    -1,
+   115,   116,   117,   118,   119,   120,   121,   122,   123,    -1,
+    -1,    -1,    -1,    -1,   129,    -1,   131,   109,   110,   111,
+   112,   113,    -1,   115,   116,   117,   118,   119,   120,   121,
+   122,   123,    -1,    -1,    -1,    -1,    -1,   129,    -1,   131,
+   109,   110,   111,   112,   113,    -1,   115,   116,   117,   118,
+   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,    -1,
+   129,    -1,   131
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -4098,7 +4012,6 @@ case 99:
 	List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
 	setSurfaceGeneratrices(s, temp);
 	List_Delete(temp);
-	s->Support = s;
 	End_Surface(s);
 	Tree_Add(THEM->Surfaces, &s);
       }
@@ -4108,7 +4021,7 @@ case 99:
     ;
     break;}
 case 100:
-#line 1369 "Gmsh.y"
+#line 1368 "Gmsh.y"
 {
       int num = (int)yyvsp[-4].d, type = 0;
       if(FindSurface(num)){
@@ -4138,7 +4051,6 @@ case 100:
 	  List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l);
 	  setSurfaceGeneratrices(s, temp);
 	  List_Delete(temp);
-	  s->Support = s;
 	  End_Surface(s);
 	  Tree_Add(THEM->Surfaces, &s);
 	}
@@ -4149,72 +4061,7 @@ case 100:
     ;
     break;}
 case 101:
-#line 1408 "Gmsh.y"
-{
-      int num = (int)yyvsp[-8].d;
-      Surface *support = FindSurface((int)yyvsp[-4].d);
-      if(!support){
-	yymsg(GERROR, "Unknown support surface %d", (int)yyvsp[-4].d);
-      }
-      else{
-	if(FindSurface(num)){
-	  yymsg(GERROR, "Surface %d already exists", num);
-	}
-	else{
-	  Surface *s = Create_Surface(num, MSH_SURF_TRIMMED);
-	  List_T *temp = ListOfDouble2ListOfInt(yyvsp[-2].l);
-	  setSurfaceGeneratrices(s, temp);
-	  List_Delete(temp);
-	  s->Support = support;
-	  End_Surface(s);
-	  Tree_Add(THEM->Surfaces, &s);
-	}
-      }
-      List_Delete(yyvsp[-2].l);
-      yyval.s.Type = MSH_SURF_TRIMMED;
-      yyval.s.Num = num;
-    ;
-    break;}
-case 102:
-#line 1435 "Gmsh.y"
-{
-      int num = (int)yyvsp[-16].d;
-      if(FindSurface(num)){
-	yymsg(GERROR, "Surface %d already exists", num);
-      }
-      else{
-	CreateNurbsSurface(num, (int)yyvsp[-4].d, (int)yyvsp[-2].d, yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
-      }
-      for(int i = 0; i < List_Nbr(yyvsp[-13].l); i++)
-	List_Delete((List_T*)List_Pointer(yyvsp[-13].l, i));
-      List_Delete(yyvsp[-13].l);
-      List_Delete(yyvsp[-10].l);
-      List_Delete(yyvsp[-8].l);
-      yyval.s.Type = MSH_SURF_NURBS;
-      yyval.s.Num = num;
-    ;
-    break;}
-case 103:
-#line 1454 "Gmsh.y"
-{
-      int num = (int)yyvsp[-16].d;
-      if(FindSurface(num)){
-	yymsg(GERROR, "Surface %d already exists", num);
-      }
-      else{
-	CreateNurbsSurfaceSupport(num, (int)yyvsp[-4].d, (int)yyvsp[-2].d, yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
-      }
-      for(int i = 0; i < List_Nbr(yyvsp[-13].l); i++)
-	List_Delete((List_T*)List_Pointer(yyvsp[-13].l, i));
-      List_Delete(yyvsp[-13].l);
-      List_Delete(yyvsp[-10].l);
-      List_Delete(yyvsp[-8].l);
-      yyval.s.Type = MSH_SURF_NURBS;
-      yyval.s.Num = num;
-    ;
-    break;}
-case 104:
-#line 1471 "Gmsh.y"
+#line 1406 "Gmsh.y"
 {
       int num = (int)yyvsp[-4].d;
       if(FindSurfaceLoop(num)){
@@ -4231,8 +4078,8 @@ case 104:
       yyval.s.Num = num;
     ;
     break;}
-case 105:
-#line 1487 "Gmsh.y"
+case 102:
+#line 1422 "Gmsh.y"
 {
       int num = (int)yyvsp[-4].i;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE)){
@@ -4249,8 +4096,8 @@ case 105:
       yyval.s.Num = num;
     ;
     break;}
-case 106:
-#line 1507 "Gmsh.y"
+case 103:
+#line 1442 "Gmsh.y"
 {
       int num = (int)yyvsp[-4].d;
       if(FindVolume(num)){
@@ -4268,8 +4115,8 @@ case 106:
       yyval.s.Num = num;
     ;
     break;}
-case 107:
-#line 1524 "Gmsh.y"
+case 104:
+#line 1459 "Gmsh.y"
 {
       int num = (int)yyvsp[-4].d;
       if(FindVolume(num)){
@@ -4287,8 +4134,8 @@ case 107:
       yyval.s.Num = num;
     ;
     break;}
-case 108:
-#line 1541 "Gmsh.y"
+case 105:
+#line 1476 "Gmsh.y"
 {
       int num = (int)yyvsp[-4].i;
       if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME)){
@@ -4305,60 +4152,60 @@ case 108:
       yyval.s.Num = num;
     ;
     break;}
-case 109:
-#line 1562 "Gmsh.y"
+case 106:
+#line 1497 "Gmsh.y"
 {
       TranslateShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-1].l, 1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
-case 110:
-#line 1567 "Gmsh.y"
+case 107:
+#line 1502 "Gmsh.y"
 {
       RotateShapes(yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
-case 111:
-#line 1572 "Gmsh.y"
+case 108:
+#line 1507 "Gmsh.y"
 {
       SymmetryShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-3].v[3], yyvsp[-1].l, 1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
-case 112:
-#line 1577 "Gmsh.y"
+case 109:
+#line 1512 "Gmsh.y"
 {
       DilatShapes(yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
-case 113:
-#line 1584 "Gmsh.y"
+case 110:
+#line 1519 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
-case 114:
-#line 1585 "Gmsh.y"
+case 111:
+#line 1520 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
-case 115:
-#line 1586 "Gmsh.y"
+case 112:
+#line 1521 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
-case 116:
-#line 1591 "Gmsh.y"
+case 113:
+#line 1526 "Gmsh.y"
 {
       yyval.l = List_Create(3, 3, sizeof(Shape));
     ;
     break;}
-case 117:
-#line 1595 "Gmsh.y"
+case 114:
+#line 1530 "Gmsh.y"
 {
       List_Add(yyval.l, &yyvsp[0].s);
     ;
     break;}
-case 118:
-#line 1599 "Gmsh.y"
+case 115:
+#line 1534 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
@@ -4375,8 +4222,8 @@ case 118:
       }
     ;
     break;}
-case 119:
-#line 1615 "Gmsh.y"
+case 116:
+#line 1550 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
@@ -4393,8 +4240,8 @@ case 119:
       }
     ;
     break;}
-case 120:
-#line 1631 "Gmsh.y"
+case 117:
+#line 1566 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
@@ -4411,8 +4258,8 @@ case 120:
       }
     ;
     break;}
-case 121:
-#line 1647 "Gmsh.y"
+case 118:
+#line 1582 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){
 	double d;
@@ -4429,8 +4276,8 @@ case 121:
       }
     ;
     break;}
-case 122:
-#line 1668 "Gmsh.y"
+case 119:
+#line 1603 "Gmsh.y"
 {
       yyval.l = List_Create(3, 3, sizeof(Shape));
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
@@ -4444,32 +4291,32 @@ case 122:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 123:
-#line 1682 "Gmsh.y"
+case 120:
+#line 1617 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
       Free(yyvsp[-4].c);
       yyval.l = NULL;
     ;
     break;}
-case 124:
-#line 1688 "Gmsh.y"
+case 121:
+#line 1623 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0);
       Free(yyvsp[-4].c);
       yyval.l = NULL;
     ;
     break;}
-case 125:
-#line 1694 "Gmsh.y"
+case 122:
+#line 1629 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 1);
       Free(yyvsp[-4].c);
       yyval.l = NULL;
     ;
     break;}
-case 126:
-#line 1706 "Gmsh.y"
+case 123:
+#line 1641 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
@@ -4479,8 +4326,8 @@ case 126:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 127:
-#line 1715 "Gmsh.y"
+case 124:
+#line 1650 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-4].c, "View")){
 	RemoveViewByIndex((int)yyvsp[-2].d);
@@ -4491,8 +4338,8 @@ case 127:
       Free(yyvsp[-4].c);
     ;
     break;}
-case 128:
-#line 1725 "Gmsh.y"
+case 125:
+#line 1660 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All")){
 	GMODEL->destroy();
@@ -4508,8 +4355,8 @@ case 128:
       Free(yyvsp[-1].c);
     ;
     break;}
-case 129:
-#line 1740 "Gmsh.y"
+case 126:
+#line 1675 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-2].c, "Empty") && !strcmp(yyvsp[-1].c, "Views")){
 	for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--){
@@ -4524,8 +4371,8 @@ case 129:
       Free(yyvsp[-2].c); Free(yyvsp[-1].c);
     ;
     break;}
-case 130:
-#line 1759 "Gmsh.y"
+case 127:
+#line 1694 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
@@ -4535,24 +4382,24 @@ case 130:
       List_Delete(yyvsp[-1].l);      
     ;
     break;}
-case 131:
-#line 1773 "Gmsh.y"
+case 128:
+#line 1708 "Gmsh.y"
 {
       for(int i = 0; i < 4; i++)
 	VisibilityShape(yyvsp[-1].c, i, 1);
       Free(yyvsp[-1].c);
     ;
     break;}
-case 132:
-#line 1779 "Gmsh.y"
+case 129:
+#line 1714 "Gmsh.y"
 {
       for(int i = 0; i < 4; i++)
 	VisibilityShape(yyvsp[-1].c, i, 0);
       Free(yyvsp[-1].c);
     ;
     break;}
-case 133:
-#line 1785 "Gmsh.y"
+case 130:
+#line 1720 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
@@ -4562,8 +4409,8 @@ case 133:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 134:
-#line 1794 "Gmsh.y"
+case 131:
+#line 1729 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	Shape TheShape;
@@ -4573,8 +4420,8 @@ case 134:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 135:
-#line 1808 "Gmsh.y"
+case 132:
+#line 1743 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-2].c, "Include")){
 	char tmpstring[1024];
@@ -4620,8 +4467,8 @@ case 135:
       Free(yyvsp[-2].c); Free(yyvsp[-1].c);
     ;
     break;}
-case 136:
-#line 1853 "Gmsh.y"
+case 133:
+#line 1788 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){
 	Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d);
@@ -4637,8 +4484,8 @@ case 136:
       Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-1].c);
     ;
     break;}
-case 137:
-#line 1868 "Gmsh.y"
+case 134:
+#line 1803 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-6].c, "Background") && !strcmp(yyvsp[-5].c, "Mesh")  && !strcmp(yyvsp[-4].c, "View")){
 	Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-2].d);
@@ -4650,8 +4497,8 @@ case 137:
       Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-4].c);
     ;
     break;}
-case 138:
-#line 1879 "Gmsh.y"
+case 135:
+#line 1814 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-2].c, "Sleep")){
 	SleepInSeconds(yyvsp[-1].d);
@@ -4672,8 +4519,8 @@ case 138:
       Free(yyvsp[-2].c);
     ;
     break;}
-case 139:
-#line 1899 "Gmsh.y"
+case 136:
+#line 1834 "Gmsh.y"
 {
        try {
 	 GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0);
@@ -4684,8 +4531,8 @@ case 139:
        Free(yyvsp[-4].c); Free(yyvsp[-1].c);
      ;
     break;}
-case 140:
-#line 1909 "Gmsh.y"
+case 137:
+#line 1844 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-1].c, "ElementsFromAllViews"))
 	CombineViews(0, 1, CTX.post.combine_remove_orig);
@@ -4708,36 +4555,36 @@ case 140:
       Free(yyvsp[-1].c);
     ;
     break;}
-case 141:
-#line 1931 "Gmsh.y"
+case 138:
+#line 1866 "Gmsh.y"
 {
       exit(0);
     ;
     break;}
-case 142:
-#line 1935 "Gmsh.y"
+case 139:
+#line 1870 "Gmsh.y"
 {
       CTX.forced_bbox = 0;
       SetBoundingBox();
     ;
     break;}
-case 143:
-#line 1940 "Gmsh.y"
+case 140:
+#line 1875 "Gmsh.y"
 {
       CTX.forced_bbox = 1;
       SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
     ;
     break;}
-case 144:
-#line 1945 "Gmsh.y"
+case 141:
+#line 1880 "Gmsh.y"
 {
 #if defined(HAVE_FLTK)
       Draw();
 #endif
     ;
     break;}
-case 145:
-#line 1957 "Gmsh.y"
+case 142:
+#line 1892 "Gmsh.y"
 {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
@@ -4753,8 +4600,8 @@ case 145:
       if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
     ;
     break;}
-case 146:
-#line 1972 "Gmsh.y"
+case 143:
+#line 1907 "Gmsh.y"
 {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
@@ -4771,8 +4618,8 @@ case 146:
 	skip_until("For", "EndFor");
     ;
     break;}
-case 147:
-#line 1988 "Gmsh.y"
+case 144:
+#line 1923 "Gmsh.y"
 {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d;
@@ -4799,8 +4646,8 @@ case 147:
       if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor");
     ;
     break;}
-case 148:
-#line 2014 "Gmsh.y"
+case 145:
+#line 1949 "Gmsh.y"
 {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d;
@@ -4828,8 +4675,8 @@ case 148:
 	skip_until("For", "EndFor");
     ;
     break;}
-case 149:
-#line 2041 "Gmsh.y"
+case 146:
+#line 1976 "Gmsh.y"
 {
       if(ImbricatedLoop <= 0){
 	yymsg(GERROR, "Invalid For/EndFor loop");
@@ -4862,8 +4709,8 @@ case 149:
       }
     ;
     break;}
-case 150:
-#line 2073 "Gmsh.y"
+case 147:
+#line 2008 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno))
 	yymsg(GERROR, "Redefinition of function %s", yyvsp[0].c);
@@ -4871,34 +4718,34 @@ case 150:
       //FIXME: wee leak $2
     ;
     break;}
-case 151:
-#line 2080 "Gmsh.y"
+case 148:
+#line 2015 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno))
 	yymsg(GERROR, "Error while exiting function");
     ;
     break;}
-case 152:
-#line 2085 "Gmsh.y"
+case 149:
+#line 2020 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno))
 	yymsg(GERROR, "Unknown function %s", yyvsp[-1].c);
       //FIXME: wee leak $2
     ;
     break;}
-case 153:
-#line 2091 "Gmsh.y"
+case 150:
+#line 2026 "Gmsh.y"
 {
       if(!yyvsp[-1].d) skip_until("If", "EndIf");
     ;
     break;}
-case 154:
-#line 2095 "Gmsh.y"
+case 151:
+#line 2030 "Gmsh.y"
 {
     ;
     break;}
-case 155:
-#line 2104 "Gmsh.y"
+case 152:
+#line 2039 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(TRANSLATE, yyvsp[-1].l, 
@@ -4907,8 +4754,8 @@ case 155:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 156:
-#line 2112 "Gmsh.y"
+case 153:
+#line 2047 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(ROTATE, yyvsp[-1].l, 
@@ -4917,8 +4764,8 @@ case 156:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 157:
-#line 2120 "Gmsh.y"
+case 154:
+#line 2055 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-1].l, 
@@ -4927,15 +4774,15 @@ case 157:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 158:
-#line 2128 "Gmsh.y"
+case 155:
+#line 2063 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 159:
-#line 2133 "Gmsh.y"
+case 156:
+#line 2068 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(TRANSLATE, yyvsp[-3].l, 
@@ -4944,15 +4791,15 @@ case 159:
       List_Delete(yyvsp[-3].l);
     ;
     break;}
-case 160:
-#line 2141 "Gmsh.y"
+case 157:
+#line 2076 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 161:
-#line 2146 "Gmsh.y"
+case 158:
+#line 2081 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(ROTATE, yyvsp[-3].l, 
@@ -4961,15 +4808,15 @@ case 161:
       List_Delete(yyvsp[-3].l);
     ;
     break;}
-case 162:
-#line 2154 "Gmsh.y"
+case 159:
+#line 2089 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 163:
-#line 2159 "Gmsh.y"
+case 160:
+#line 2094 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-3].l, 
@@ -4978,8 +4825,8 @@ case 163:
       List_Delete(yyvsp[-3].l);
     ;
     break;}
-case 164:
-#line 2169 "Gmsh.y"
+case 161:
+#line 2104 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-4].d, 
@@ -4987,8 +4834,8 @@ case 164:
 		   NULL, yyval.l);
     ;
     break;}
-case 165:
-#line 2176 "Gmsh.y"
+case 162:
+#line 2111 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-4].d, 
@@ -4996,8 +4843,8 @@ case 165:
 		   NULL, yyval.l);
     ;
     break;}
-case 166:
-#line 2183 "Gmsh.y"
+case 163:
+#line 2118 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-4].d, 
@@ -5005,8 +4852,8 @@ case 166:
 		   NULL, yyval.l);
     ;
     break;}
-case 167:
-#line 2190 "Gmsh.y"
+case 164:
+#line 2125 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-8].d, 
@@ -5014,8 +4861,8 @@ case 167:
 		   NULL, yyval.l);
     ;
     break;}
-case 168:
-#line 2197 "Gmsh.y"
+case 165:
+#line 2132 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, 
@@ -5023,8 +4870,8 @@ case 168:
 		   NULL, yyval.l);
     ;
     break;}
-case 169:
-#line 2204 "Gmsh.y"
+case 166:
+#line 2139 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, 
@@ -5032,8 +4879,8 @@ case 169:
 		   NULL, yyval.l);
     ;
     break;}
-case 170:
-#line 2211 "Gmsh.y"
+case 167:
+#line 2146 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-10].d, 
@@ -5041,8 +4888,8 @@ case 170:
 		   NULL, yyval.l);
     ;
     break;}
-case 171:
-#line 2218 "Gmsh.y"
+case 168:
+#line 2153 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-10].d, 
@@ -5050,8 +4897,8 @@ case 171:
 		   NULL, yyval.l);
     ;
     break;}
-case 172:
-#line 2225 "Gmsh.y"
+case 169:
+#line 2160 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-10].d, 
@@ -5059,15 +4906,15 @@ case 172:
 		   NULL, yyval.l);
     ;
     break;}
-case 173:
-#line 2232 "Gmsh.y"
+case 170:
+#line 2167 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 174:
-#line 2237 "Gmsh.y"
+case 171:
+#line 2172 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-8].d, 
@@ -5075,15 +4922,15 @@ case 174:
 		   &extr, yyval.l);
     ;
     break;}
-case 175:
-#line 2244 "Gmsh.y"
+case 172:
+#line 2179 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 176:
-#line 2249 "Gmsh.y"
+case 173:
+#line 2184 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, 
@@ -5091,15 +4938,15 @@ case 176:
 		   &extr, yyval.l);
     ;
     break;}
-case 177:
-#line 2256 "Gmsh.y"
+case 174:
+#line 2191 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 178:
-#line 2261 "Gmsh.y"
+case 175:
+#line 2196 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, 
@@ -5107,15 +4954,15 @@ case 178:
 		   &extr, yyval.l);
     ;
     break;}
-case 179:
-#line 2268 "Gmsh.y"
+case 176:
+#line 2203 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 180:
-#line 2273 "Gmsh.y"
+case 177:
+#line 2208 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-12].d, 
@@ -5123,15 +4970,15 @@ case 180:
 		   &extr, yyval.l);
     ;
     break;}
-case 181:
-#line 2280 "Gmsh.y"
+case 178:
+#line 2215 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 182:
-#line 2285 "Gmsh.y"
+case 179:
+#line 2220 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-12].d, 
@@ -5139,15 +4986,15 @@ case 182:
 		   &extr, yyval.l);
     ;
     break;}
-case 183:
-#line 2292 "Gmsh.y"
+case 180:
+#line 2227 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 184:
-#line 2297 "Gmsh.y"
+case 181:
+#line 2232 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-12].d, 
@@ -5155,15 +5002,15 @@ case 184:
 		   &extr, yyval.l);
     ;
     break;}
-case 185:
-#line 2304 "Gmsh.y"
+case 182:
+#line 2239 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 186:
-#line 2309 "Gmsh.y"
+case 183:
+#line 2244 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-14].d, 
@@ -5171,15 +5018,15 @@ case 186:
 		   &extr, yyval.l);
     ;
     break;}
-case 187:
-#line 2316 "Gmsh.y"
+case 184:
+#line 2251 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 188:
-#line 2321 "Gmsh.y"
+case 185:
+#line 2256 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-14].d, 
@@ -5187,15 +5034,15 @@ case 188:
 		   &extr, yyval.l);
     ;
     break;}
-case 189:
-#line 2328 "Gmsh.y"
+case 186:
+#line 2263 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
-case 190:
-#line 2333 "Gmsh.y"
+case 187:
+#line 2268 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(Shape));
       ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-14].d, 
@@ -5203,18 +5050,18 @@ case 190:
 		   &extr, yyval.l);
     ;
     break;}
-case 191:
-#line 2344 "Gmsh.y"
+case 188:
+#line 2279 "Gmsh.y"
 {
     ;
     break;}
-case 192:
-#line 2347 "Gmsh.y"
+case 189:
+#line 2282 "Gmsh.y"
 {
     ;
     break;}
-case 193:
-#line 2353 "Gmsh.y"
+case 190:
+#line 2288 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = true;
       extr.mesh.NbLayer = 1;
@@ -5224,8 +5071,8 @@ case 193:
       extr.mesh.hLayer.push_back(1.);
     ;
     break;}
-case 194:
-#line 2362 "Gmsh.y"
+case 191:
+#line 2297 "Gmsh.y"
 {
       double d;
       extr.mesh.ExtrudeMesh = true;
@@ -5248,8 +5095,8 @@ case 194:
       List_Delete(yyvsp[-2].l);
     ;
     break;}
-case 195:
-#line 2384 "Gmsh.y"
+case 192:
+#line 2319 "Gmsh.y"
 {
       yymsg(WARNING, "Explicit region numbers in layers are deprecated");
       double d;
@@ -5274,14 +5121,14 @@ case 195:
       List_Delete(yyvsp[-2].l);
     ;
     break;}
-case 196:
-#line 2408 "Gmsh.y"
+case 193:
+#line 2343 "Gmsh.y"
 {
       extr.mesh.Recombine = true;
     ;
     break;}
-case 197:
-#line 2417 "Gmsh.y"
+case 194:
+#line 2352 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
 	double d;
@@ -5300,8 +5147,8 @@ case 197:
       List_Delete(yyvsp[-3].l);
     ;
     break;}
-case 198:
-#line 2435 "Gmsh.y"
+case 195:
+#line 2370 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
 	double d;
@@ -5320,8 +5167,8 @@ case 198:
       List_Delete(yyvsp[-6].l);
     ;
     break;}
-case 199:
-#line 2453 "Gmsh.y"
+case 196:
+#line 2388 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){
 	double d;
@@ -5340,8 +5187,8 @@ case 199:
       List_Delete(yyvsp[-6].l);
     ;
     break;}
-case 200:
-#line 2471 "Gmsh.y"
+case 197:
+#line 2406 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d);
       if(!s)
@@ -5371,8 +5218,8 @@ case 200:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 201:
-#line 2500 "Gmsh.y"
+case 198:
+#line 2435 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-5].d);
       if(!s)
@@ -5408,15 +5255,15 @@ case 201:
       Free(yyvsp[-1].c);
     ;
     break;}
-case 202:
-#line 2535 "Gmsh.y"
+case 199:
+#line 2470 "Gmsh.y"
 {
       yymsg(WARNING, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)");
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 203:
-#line 2540 "Gmsh.y"
+case 200:
+#line 2475 "Gmsh.y"
 {
       Volume *v = FindVolume((int)yyvsp[-4].d);
       if(!v)
@@ -5444,8 +5291,8 @@ case 203:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 204:
-#line 2567 "Gmsh.y"
+case 201:
+#line 2502 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){
 	double d;
@@ -5460,8 +5307,8 @@ case 204:
       List_Delete(yyvsp[-3].l);
     ;
     break;}
-case 205:
-#line 2581 "Gmsh.y"
+case 202:
+#line 2516 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){
 	double d;
@@ -5475,78 +5322,72 @@ case 205:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 206:
-#line 2600 "Gmsh.y"
+case 203:
+#line 2535 "Gmsh.y"
 { 
       Surface *s = FindSurface((int)yyvsp[-1].d);
       if(s)
 	setSurfaceEmbeddedPoints(s, yyvsp[-4].l);
     ;
     break;}
-case 207:
-#line 2606 "Gmsh.y"
+case 204:
+#line 2541 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-1].d);
       if(s)
 	setSurfaceEmbeddedCurves(s, yyvsp[-4].l);
     ;
     break;}
-case 208:
-#line 2612 "Gmsh.y"
+case 205:
+#line 2547 "Gmsh.y"
 {
     ;
     break;}
-case 209:
-#line 2615 "Gmsh.y"
+case 206:
+#line 2550 "Gmsh.y"
 {
     ;
     break;}
-case 210:
-#line 2622 "Gmsh.y"
+case 207:
+#line 2559 "Gmsh.y"
 { 
       ReplaceAllDuplicates();
     ;
     break;}
-case 211:
-#line 2626 "Gmsh.y"
-{ 
-      yymsg(GERROR, "Intersect is deprecated");
-    ;
-    break;}
-case 212:
-#line 2635 "Gmsh.y"
+case 208:
+#line 2568 "Gmsh.y"
 { yyval.d = yyvsp[0].d;           ;
     break;}
-case 213:
-#line 2636 "Gmsh.y"
+case 209:
+#line 2569 "Gmsh.y"
 { yyval.d = yyvsp[-1].d;           ;
     break;}
-case 214:
-#line 2637 "Gmsh.y"
+case 210:
+#line 2570 "Gmsh.y"
 { yyval.d = -yyvsp[0].d;          ;
     break;}
-case 215:
-#line 2638 "Gmsh.y"
+case 211:
+#line 2571 "Gmsh.y"
 { yyval.d = yyvsp[0].d;           ;
     break;}
-case 216:
-#line 2639 "Gmsh.y"
+case 212:
+#line 2572 "Gmsh.y"
 { yyval.d = !yyvsp[0].d;          ;
     break;}
-case 217:
-#line 2640 "Gmsh.y"
+case 213:
+#line 2573 "Gmsh.y"
 { yyval.d = yyvsp[-2].d - yyvsp[0].d;      ;
     break;}
-case 218:
-#line 2641 "Gmsh.y"
+case 214:
+#line 2574 "Gmsh.y"
 { yyval.d = yyvsp[-2].d + yyvsp[0].d;      ;
     break;}
-case 219:
-#line 2642 "Gmsh.y"
+case 215:
+#line 2575 "Gmsh.y"
 { yyval.d = yyvsp[-2].d * yyvsp[0].d;      ;
     break;}
-case 220:
-#line 2644 "Gmsh.y"
+case 216:
+#line 2577 "Gmsh.y"
 { 
       if(!yyvsp[0].d)
 	yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
@@ -5554,248 +5395,248 @@ case 220:
 	yyval.d = yyvsp[-2].d / yyvsp[0].d;     
     ;
     break;}
-case 221:
-#line 2650 "Gmsh.y"
+case 217:
+#line 2583 "Gmsh.y"
 { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d;  ;
     break;}
-case 222:
-#line 2651 "Gmsh.y"
+case 218:
+#line 2584 "Gmsh.y"
 { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d);  ;
     break;}
-case 223:
-#line 2652 "Gmsh.y"
+case 219:
+#line 2585 "Gmsh.y"
 { yyval.d = yyvsp[-2].d < yyvsp[0].d;      ;
     break;}
-case 224:
-#line 2653 "Gmsh.y"
+case 220:
+#line 2586 "Gmsh.y"
 { yyval.d = yyvsp[-2].d > yyvsp[0].d;      ;
     break;}
-case 225:
-#line 2654 "Gmsh.y"
+case 221:
+#line 2587 "Gmsh.y"
 { yyval.d = yyvsp[-2].d <= yyvsp[0].d;     ;
     break;}
-case 226:
-#line 2655 "Gmsh.y"
+case 222:
+#line 2588 "Gmsh.y"
 { yyval.d = yyvsp[-2].d >= yyvsp[0].d;     ;
     break;}
-case 227:
-#line 2656 "Gmsh.y"
+case 223:
+#line 2589 "Gmsh.y"
 { yyval.d = yyvsp[-2].d == yyvsp[0].d;     ;
     break;}
-case 228:
-#line 2657 "Gmsh.y"
+case 224:
+#line 2590 "Gmsh.y"
 { yyval.d = yyvsp[-2].d != yyvsp[0].d;     ;
     break;}
-case 229:
-#line 2658 "Gmsh.y"
+case 225:
+#line 2591 "Gmsh.y"
 { yyval.d = yyvsp[-2].d && yyvsp[0].d;     ;
     break;}
-case 230:
-#line 2659 "Gmsh.y"
+case 226:
+#line 2592 "Gmsh.y"
 { yyval.d = yyvsp[-2].d || yyvsp[0].d;     ;
     break;}
-case 231:
-#line 2660 "Gmsh.y"
+case 227:
+#line 2593 "Gmsh.y"
 { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d;  ;
     break;}
-case 232:
-#line 2661 "Gmsh.y"
+case 228:
+#line 2594 "Gmsh.y"
 { yyval.d = exp(yyvsp[-1].d);      ;
     break;}
-case 233:
-#line 2662 "Gmsh.y"
+case 229:
+#line 2595 "Gmsh.y"
 { yyval.d = log(yyvsp[-1].d);      ;
     break;}
-case 234:
-#line 2663 "Gmsh.y"
+case 230:
+#line 2596 "Gmsh.y"
 { yyval.d = log10(yyvsp[-1].d);    ;
     break;}
-case 235:
-#line 2664 "Gmsh.y"
+case 231:
+#line 2597 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-1].d);     ;
     break;}
-case 236:
-#line 2665 "Gmsh.y"
+case 232:
+#line 2598 "Gmsh.y"
 { yyval.d = sin(yyvsp[-1].d);      ;
     break;}
-case 237:
-#line 2666 "Gmsh.y"
+case 233:
+#line 2599 "Gmsh.y"
 { yyval.d = asin(yyvsp[-1].d);     ;
     break;}
-case 238:
-#line 2667 "Gmsh.y"
+case 234:
+#line 2600 "Gmsh.y"
 { yyval.d = cos(yyvsp[-1].d);      ;
     break;}
-case 239:
-#line 2668 "Gmsh.y"
+case 235:
+#line 2601 "Gmsh.y"
 { yyval.d = acos(yyvsp[-1].d);     ;
     break;}
-case 240:
-#line 2669 "Gmsh.y"
+case 236:
+#line 2602 "Gmsh.y"
 { yyval.d = tan(yyvsp[-1].d);      ;
     break;}
-case 241:
-#line 2670 "Gmsh.y"
+case 237:
+#line 2603 "Gmsh.y"
 { yyval.d = atan(yyvsp[-1].d);     ;
     break;}
-case 242:
-#line 2671 "Gmsh.y"
+case 238:
+#line 2604 "Gmsh.y"
 { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
     break;}
-case 243:
-#line 2672 "Gmsh.y"
+case 239:
+#line 2605 "Gmsh.y"
 { yyval.d = sinh(yyvsp[-1].d);     ;
     break;}
-case 244:
-#line 2673 "Gmsh.y"
+case 240:
+#line 2606 "Gmsh.y"
 { yyval.d = cosh(yyvsp[-1].d);     ;
     break;}
-case 245:
-#line 2674 "Gmsh.y"
+case 241:
+#line 2607 "Gmsh.y"
 { yyval.d = tanh(yyvsp[-1].d);     ;
     break;}
-case 246:
-#line 2675 "Gmsh.y"
+case 242:
+#line 2608 "Gmsh.y"
 { yyval.d = fabs(yyvsp[-1].d);     ;
     break;}
-case 247:
-#line 2676 "Gmsh.y"
+case 243:
+#line 2609 "Gmsh.y"
 { yyval.d = floor(yyvsp[-1].d);    ;
     break;}
-case 248:
-#line 2677 "Gmsh.y"
+case 244:
+#line 2610 "Gmsh.y"
 { yyval.d = ceil(yyvsp[-1].d);     ;
     break;}
-case 249:
-#line 2678 "Gmsh.y"
+case 245:
+#line 2611 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
     break;}
-case 250:
-#line 2679 "Gmsh.y"
+case 246:
+#line 2612 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
     break;}
-case 251:
-#line 2680 "Gmsh.y"
+case 247:
+#line 2613 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
     break;}
-case 252:
-#line 2681 "Gmsh.y"
+case 248:
+#line 2614 "Gmsh.y"
 { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
     break;}
-case 253:
-#line 2683 "Gmsh.y"
+case 249:
+#line 2616 "Gmsh.y"
 { yyval.d = exp(yyvsp[-1].d);      ;
     break;}
-case 254:
-#line 2684 "Gmsh.y"
+case 250:
+#line 2617 "Gmsh.y"
 { yyval.d = log(yyvsp[-1].d);      ;
     break;}
-case 255:
-#line 2685 "Gmsh.y"
+case 251:
+#line 2618 "Gmsh.y"
 { yyval.d = log10(yyvsp[-1].d);    ;
     break;}
-case 256:
-#line 2686 "Gmsh.y"
+case 252:
+#line 2619 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-1].d);     ;
     break;}
-case 257:
-#line 2687 "Gmsh.y"
+case 253:
+#line 2620 "Gmsh.y"
 { yyval.d = sin(yyvsp[-1].d);      ;
     break;}
-case 258:
-#line 2688 "Gmsh.y"
+case 254:
+#line 2621 "Gmsh.y"
 { yyval.d = asin(yyvsp[-1].d);     ;
     break;}
-case 259:
-#line 2689 "Gmsh.y"
+case 255:
+#line 2622 "Gmsh.y"
 { yyval.d = cos(yyvsp[-1].d);      ;
     break;}
-case 260:
-#line 2690 "Gmsh.y"
+case 256:
+#line 2623 "Gmsh.y"
 { yyval.d = acos(yyvsp[-1].d);     ;
     break;}
-case 261:
-#line 2691 "Gmsh.y"
+case 257:
+#line 2624 "Gmsh.y"
 { yyval.d = tan(yyvsp[-1].d);      ;
     break;}
-case 262:
-#line 2692 "Gmsh.y"
+case 258:
+#line 2625 "Gmsh.y"
 { yyval.d = atan(yyvsp[-1].d);     ;
     break;}
-case 263:
-#line 2693 "Gmsh.y"
+case 259:
+#line 2626 "Gmsh.y"
 { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);;
     break;}
-case 264:
-#line 2694 "Gmsh.y"
+case 260:
+#line 2627 "Gmsh.y"
 { yyval.d = sinh(yyvsp[-1].d);     ;
     break;}
-case 265:
-#line 2695 "Gmsh.y"
+case 261:
+#line 2628 "Gmsh.y"
 { yyval.d = cosh(yyvsp[-1].d);     ;
     break;}
-case 266:
-#line 2696 "Gmsh.y"
+case 262:
+#line 2629 "Gmsh.y"
 { yyval.d = tanh(yyvsp[-1].d);     ;
     break;}
-case 267:
-#line 2697 "Gmsh.y"
+case 263:
+#line 2630 "Gmsh.y"
 { yyval.d = fabs(yyvsp[-1].d);     ;
     break;}
-case 268:
-#line 2698 "Gmsh.y"
+case 264:
+#line 2631 "Gmsh.y"
 { yyval.d = floor(yyvsp[-1].d);    ;
     break;}
-case 269:
-#line 2699 "Gmsh.y"
+case 265:
+#line 2632 "Gmsh.y"
 { yyval.d = ceil(yyvsp[-1].d);     ;
     break;}
-case 270:
-#line 2700 "Gmsh.y"
+case 266:
+#line 2633 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
     break;}
-case 271:
-#line 2701 "Gmsh.y"
+case 267:
+#line 2634 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ;
     break;}
-case 272:
-#line 2702 "Gmsh.y"
+case 268:
+#line 2635 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
     break;}
-case 273:
-#line 2703 "Gmsh.y"
+case 269:
+#line 2636 "Gmsh.y"
 { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
     break;}
-case 274:
-#line 2712 "Gmsh.y"
+case 270:
+#line 2645 "Gmsh.y"
 { yyval.d = yyvsp[0].d; ;
     break;}
-case 275:
-#line 2713 "Gmsh.y"
+case 271:
+#line 2646 "Gmsh.y"
 { yyval.d = 3.141592653589793; ;
     break;}
-case 276:
-#line 2714 "Gmsh.y"
+case 272:
+#line 2647 "Gmsh.y"
 { yyval.d = ParUtil::Instance()->rank(); ;
     break;}
-case 277:
-#line 2715 "Gmsh.y"
+case 273:
+#line 2648 "Gmsh.y"
 { yyval.d = ParUtil::Instance()->size(); ;
     break;}
-case 278:
-#line 2716 "Gmsh.y"
+case 274:
+#line 2649 "Gmsh.y"
 { yyval.d = Get_GmshMajorVersion(); ;
     break;}
-case 279:
-#line 2717 "Gmsh.y"
+case 275:
+#line 2650 "Gmsh.y"
 { yyval.d = Get_GmshMinorVersion(); ;
     break;}
-case 280:
-#line 2718 "Gmsh.y"
+case 276:
+#line 2651 "Gmsh.y"
 { yyval.d = Get_GmshPatchVersion(); ;
     break;}
-case 281:
-#line 2723 "Gmsh.y"
+case 277:
+#line 2656 "Gmsh.y"
 {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[0].c;
@@ -5809,8 +5650,8 @@ case 281:
       Free(yyvsp[0].c);
     ;
     break;}
-case 282:
-#line 2739 "Gmsh.y"
+case 278:
+#line 2672 "Gmsh.y"
 {
       char tmpstring[1024];
       sprintf(tmpstring, "%s_%d", yyvsp[-4].c, (int)yyvsp[-1].d) ;
@@ -5826,8 +5667,8 @@ case 282:
       Free(yyvsp[-4].c);
     ;
     break;}
-case 283:
-#line 2754 "Gmsh.y"
+case 279:
+#line 2687 "Gmsh.y"
 {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-3].c;
@@ -5848,8 +5689,8 @@ case 283:
       Free(yyvsp[-3].c);
     ;
     break;}
-case 284:
-#line 2774 "Gmsh.y"
+case 280:
+#line 2707 "Gmsh.y"
 {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-2].c;
@@ -5864,8 +5705,8 @@ case 284:
       Free(yyvsp[-2].c);
     ;
     break;}
-case 285:
-#line 2788 "Gmsh.y"
+case 281:
+#line 2721 "Gmsh.y"
 {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-1].c;
@@ -5879,8 +5720,8 @@ case 285:
       Free(yyvsp[-1].c);
     ;
     break;}
-case 286:
-#line 2801 "Gmsh.y"
+case 282:
+#line 2734 "Gmsh.y"
 {
       Symbol TheSymbol;
       TheSymbol.Name = yyvsp[-4].c;
@@ -5901,8 +5742,8 @@ case 286:
       Free(yyvsp[-4].c);
     ;
     break;}
-case 287:
-#line 2824 "Gmsh.y"
+case 283:
+#line 2757 "Gmsh.y"
 {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -5921,8 +5762,8 @@ case 287:
       Free(yyvsp[-2].c); Free(yyvsp[0].c);
     ;
     break;}
-case 288:
-#line 2842 "Gmsh.y"
+case 284:
+#line 2775 "Gmsh.y"
 {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -5941,8 +5782,8 @@ case 288:
       Free(yyvsp[-5].c); Free(yyvsp[0].c);
     ;
     break;}
-case 289:
-#line 2860 "Gmsh.y"
+case 285:
+#line 2793 "Gmsh.y"
 {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -5961,8 +5802,8 @@ case 289:
       Free(yyvsp[-3].c); Free(yyvsp[-1].c);
     ;
     break;}
-case 290:
-#line 2878 "Gmsh.y"
+case 286:
+#line 2811 "Gmsh.y"
 {
       double (*pNumOpt)(int num, int action, double value);
       StringXNumber *pNumCat;
@@ -5981,125 +5822,125 @@ case 290:
       Free(yyvsp[-6].c); Free(yyvsp[-1].c);
     ;
     break;}
-case 291:
-#line 2896 "Gmsh.y"
+case 287:
+#line 2829 "Gmsh.y"
 { 
       yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d);
       Free(yyvsp[-3].c);
     ;
     break;}
-case 292:
-#line 2904 "Gmsh.y"
+case 288:
+#line 2837 "Gmsh.y"
 {
       memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double));
     ;
     break;}
-case 293:
-#line 2908 "Gmsh.y"
+case 289:
+#line 2841 "Gmsh.y"
 {
       for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i];
     ;
     break;}
-case 294:
-#line 2912 "Gmsh.y"
+case 290:
+#line 2845 "Gmsh.y"
 { 
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i];
     ;
     break;}
-case 295:
-#line 2916 "Gmsh.y"
+case 291:
+#line 2849 "Gmsh.y"
 { 
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i];
     ;
     break;}
-case 296:
-#line 2920 "Gmsh.y"
+case 292:
+#line 2853 "Gmsh.y"
 {
       for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i];
     ;
     break;}
-case 297:
-#line 2927 "Gmsh.y"
+case 293:
+#line 2860 "Gmsh.y"
 { 
       yyval.v[0] = yyvsp[-9].d;  yyval.v[1] = yyvsp[-7].d;  yyval.v[2] = yyvsp[-5].d;  yyval.v[3] = yyvsp[-3].d; yyval.v[4] = yyvsp[-1].d;
     ;
     break;}
-case 298:
-#line 2931 "Gmsh.y"
+case 294:
+#line 2864 "Gmsh.y"
 { 
       yyval.v[0] = yyvsp[-7].d;  yyval.v[1] = yyvsp[-5].d;  yyval.v[2] = yyvsp[-3].d;  yyval.v[3] = yyvsp[-1].d; yyval.v[4] = 1.0;
     ;
     break;}
-case 299:
-#line 2935 "Gmsh.y"
+case 295:
+#line 2868 "Gmsh.y"
 {
       yyval.v[0] = yyvsp[-5].d;  yyval.v[1] = yyvsp[-3].d;  yyval.v[2] = yyvsp[-1].d;  yyval.v[3] = 0.0; yyval.v[4] = 1.0;
     ;
     break;}
-case 300:
-#line 2939 "Gmsh.y"
+case 296:
+#line 2872 "Gmsh.y"
 {
       yyval.v[0] = yyvsp[-5].d;  yyval.v[1] = yyvsp[-3].d;  yyval.v[2] = yyvsp[-1].d;  yyval.v[3] = 0.0; yyval.v[4] = 1.0;
     ;
     break;}
-case 301:
-#line 2946 "Gmsh.y"
+case 297:
+#line 2879 "Gmsh.y"
 {
     ;
     break;}
-case 302:
-#line 2949 "Gmsh.y"
+case 298:
+#line 2882 "Gmsh.y"
 {
        yyval.l = yyvsp[-1].l;
     ;
     break;}
-case 303:
-#line 2953 "Gmsh.y"
+case 299:
+#line 2886 "Gmsh.y"
 {
        yyval.l = yyvsp[-1].l;
     ;
     break;}
-case 304:
-#line 2960 "Gmsh.y"
+case 300:
+#line 2893 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(List_T*));
       List_Add(yyval.l, &(yyvsp[0].l));
     ;
     break;}
-case 305:
-#line 2965 "Gmsh.y"
+case 301:
+#line 2898 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].l));
     ;
     break;}
-case 306:
-#line 2973 "Gmsh.y"
+case 302:
+#line 2906 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(double));
       List_Add(yyval.l, &(yyvsp[0].d));
     ;
     break;}
-case 307:
-#line 2978 "Gmsh.y"
+case 303:
+#line 2911 "Gmsh.y"
 {
       yyval.l = yyvsp[0].l;
     ;
     break;}
-case 308:
-#line 2982 "Gmsh.y"
+case 304:
+#line 2915 "Gmsh.y"
 {
       // creates an empty list
       yyval.l = List_Create(2, 1, sizeof(double));
     ;
     break;}
-case 309:
-#line 2987 "Gmsh.y"
+case 305:
+#line 2920 "Gmsh.y"
 {
       yyval.l = yyvsp[-1].l;
     ;
     break;}
-case 310:
-#line 2991 "Gmsh.y"
+case 306:
+#line 2924 "Gmsh.y"
 {
       yyval.l = yyvsp[-1].l;
       double *pd;
@@ -6109,16 +5950,16 @@ case 310:
       }
     ;
     break;}
-case 311:
-#line 3003 "Gmsh.y"
+case 307:
+#line 2936 "Gmsh.y"
 { 
       yyval.l = List_Create(2, 1, sizeof(double)); 
       for(double d = yyvsp[-2].d; (yyvsp[-2].d < yyvsp[0].d) ? (d <= yyvsp[0].d) : (d >= yyvsp[0].d); (yyvsp[-2].d < yyvsp[0].d) ? (d += 1.) : (d -= 1.)) 
 	List_Add(yyval.l, &d);
     ;
     break;}
-case 312:
-#line 3009 "Gmsh.y"
+case 308:
+#line 2942 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(double)); 
       if(!yyvsp[0].d || (yyvsp[-4].d < yyvsp[-2].d && yyvsp[0].d < 0) || (yyvsp[-4].d > yyvsp[-2].d && yyvsp[0].d > 0)){
@@ -6130,8 +5971,8 @@ case 312:
 	  List_Add(yyval.l, &d);
    ;
     break;}
-case 313:
-#line 3020 "Gmsh.y"
+case 309:
+#line 2953 "Gmsh.y"
 {
       // Returns the coordinates of a point and fills a list with it.
       // This allows to ensure e.g. that relative point positions are
@@ -6152,8 +5993,8 @@ case 313:
       }
     ;
     break;}
-case 314:
-#line 3040 "Gmsh.y"
+case 310:
+#line 2973 "Gmsh.y"
 {
       yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
       for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
@@ -6164,8 +6005,8 @@ case 314:
       List_Delete(yyvsp[0].l);
     ;
     break;}
-case 315:
-#line 3050 "Gmsh.y"
+case 311:
+#line 2983 "Gmsh.y"
 {
       yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
       for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
@@ -6176,8 +6017,8 @@ case 315:
       List_Delete(yyvsp[0].l);
     ;
     break;}
-case 316:
-#line 3060 "Gmsh.y"
+case 312:
+#line 2993 "Gmsh.y"
 {
       yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double));
       for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
@@ -6188,8 +6029,8 @@ case 316:
       List_Delete(yyvsp[0].l);
     ;
     break;}
-case 317:
-#line 3070 "Gmsh.y"
+case 313:
+#line 3003 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
@@ -6207,8 +6048,8 @@ case 317:
       Free(yyvsp[-2].c);
     ;
     break;}
-case 318:
-#line 3087 "Gmsh.y"
+case 314:
+#line 3020 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
@@ -6228,8 +6069,8 @@ case 318:
       Free(yyvsp[-2].c);
     ;
     break;}
-case 319:
-#line 3106 "Gmsh.y"
+case 315:
+#line 3039 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
@@ -6254,8 +6095,8 @@ case 319:
       List_Delete(yyvsp[-2].l);
     ;
     break;}
-case 320:
-#line 3130 "Gmsh.y"
+case 316:
+#line 3063 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(double));
       Symbol TheSymbol;
@@ -6282,27 +6123,27 @@ case 320:
       List_Delete(yyvsp[-2].l);
     ;
     break;}
-case 321:
-#line 3159 "Gmsh.y"
+case 317:
+#line 3092 "Gmsh.y"
 {
       yyval.l = List_Create(2, 1, sizeof(double));
       List_Add(yyval.l, &(yyvsp[0].d));
     ;
     break;}
-case 322:
-#line 3164 "Gmsh.y"
+case 318:
+#line 3097 "Gmsh.y"
 {
       yyval.l = yyvsp[0].l;
     ;
     break;}
-case 323:
-#line 3168 "Gmsh.y"
+case 319:
+#line 3101 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].d));
     ;
     break;}
-case 324:
-#line 3172 "Gmsh.y"
+case 320:
+#line 3105 "Gmsh.y"
 {
       for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){
 	double d;
@@ -6312,20 +6153,20 @@ case 324:
       List_Delete(yyvsp[0].l);
     ;
     break;}
-case 325:
-#line 3185 "Gmsh.y"
+case 321:
+#line 3118 "Gmsh.y"
 {
       yyval.u = CTX.PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
     ;
     break;}
-case 326:
-#line 3189 "Gmsh.y"
+case 322:
+#line 3122 "Gmsh.y"
 {
       yyval.u = CTX.PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
     ;
     break;}
-case 327:
-#line 3201 "Gmsh.y"
+case 323:
+#line 3134 "Gmsh.y"
 {
       int flag;
       yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
@@ -6333,8 +6174,8 @@ case 327:
       Free(yyvsp[0].c);
     ;
     break;}
-case 328:
-#line 3208 "Gmsh.y"
+case 324:
+#line 3141 "Gmsh.y"
 {
       unsigned int (*pColOpt)(int num, int action, unsigned int value);
       StringXColor *pColCat;
@@ -6354,14 +6195,14 @@ case 328:
       Free(yyvsp[-4].c); Free(yyvsp[0].c);
     ;
     break;}
-case 329:
-#line 3230 "Gmsh.y"
+case 325:
+#line 3163 "Gmsh.y"
 {
       yyval.l = yyvsp[-1].l;
     ;
     break;}
-case 330:
-#line 3234 "Gmsh.y"
+case 326:
+#line 3167 "Gmsh.y"
 {
       yyval.l = List_Create(256, 10, sizeof(unsigned int));
       GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d);
@@ -6374,27 +6215,27 @@ case 330:
       Free(yyvsp[-5].c);
     ;
     break;}
-case 331:
-#line 3249 "Gmsh.y"
+case 327:
+#line 3182 "Gmsh.y"
 {
       yyval.l = List_Create(256, 10, sizeof(unsigned int));
       List_Add(yyval.l, &(yyvsp[0].u));
     ;
     break;}
-case 332:
-#line 3254 "Gmsh.y"
+case 328:
+#line 3187 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].u));
     ;
     break;}
-case 333:
-#line 3261 "Gmsh.y"
+case 329:
+#line 3194 "Gmsh.y"
 {
       yyval.c = yyvsp[0].c;
     ;
     break;}
-case 334:
-#line 3265 "Gmsh.y"
+case 330:
+#line 3198 "Gmsh.y"
 {
       yyval.c = (char *)Malloc(32*sizeof(char));
       time_t now;
@@ -6403,8 +6244,8 @@ case 334:
       yyval.c[strlen(yyval.c) - 1] = '\0';
     ;
     break;}
-case 335:
-#line 3273 "Gmsh.y"
+case 331:
+#line 3206 "Gmsh.y"
 {
       yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char));
       strcpy(yyval.c, yyvsp[-3].c);
@@ -6413,8 +6254,8 @@ case 335:
       Free(yyvsp[-1].c);
     ;
     break;}
-case 336:
-#line 3281 "Gmsh.y"
+case 332:
+#line 3214 "Gmsh.y"
 {
       yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char));
       int i;
@@ -6429,8 +6270,8 @@ case 336:
       Free(yyvsp[-1].c);
     ;
     break;}
-case 337:
-#line 3295 "Gmsh.y"
+case 333:
+#line 3228 "Gmsh.y"
 {
       yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char));
       int i;
@@ -6445,14 +6286,14 @@ case 337:
       Free(yyvsp[-1].c);
     ;
     break;}
-case 338:
-#line 3309 "Gmsh.y"
+case 334:
+#line 3242 "Gmsh.y"
 {
       yyval.c = yyvsp[-1].c;
     ;
     break;}
-case 339:
-#line 3313 "Gmsh.y"
+case 335:
+#line 3246 "Gmsh.y"
 {
       char tmpstring[1024];
       int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring);
@@ -6472,8 +6313,8 @@ case 339:
       List_Delete(yyvsp[-1].l);
     ;
     break;}
-case 340:
-#line 3332 "Gmsh.y"
+case 336:
+#line 3265 "Gmsh.y"
 { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
@@ -6496,8 +6337,8 @@ case 340:
       }
     ;
     break;}
-case 341:
-#line 3354 "Gmsh.y"
+case 337:
+#line 3287 "Gmsh.y"
 { 
       char* (*pStrOpt)(int num, int action, char *value);
       StringXString *pStrCat;
@@ -6742,7 +6583,7 @@ yyerrhandle:
     }
   return 1;
 }
-#line 3377 "Gmsh.y"
+#line 3310 "Gmsh.y"
 
 
 void DeleteSymbol(void *a, void *b){
diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp
index af1ab7c30b444aa2aa8e031579148479936bc4df..b9aedac7fae358113326eb3cb25b0534ebbcedcb 100644
--- a/Parser/Gmsh.tab.hpp
+++ b/Parser/Gmsh.tab.hpp
@@ -75,57 +75,55 @@ typedef union {
 #define	tRecombine	322
 #define	tDelete	323
 #define	tCoherence	324
-#define	tIntersect	325
-#define	tAttractor	326
-#define	tLayers	327
-#define	tAlias	328
-#define	tAliasWithOptions	329
-#define	tText2D	330
-#define	tText3D	331
-#define	tInterpolationScheme	332
-#define	tTime	333
-#define	tGrain	334
-#define	tCombine	335
-#define	tBSpline	336
-#define	tBezier	337
-#define	tNurbs	338
-#define	tOrder	339
-#define	tWith	340
-#define	tBounds	341
-#define	tKnots	342
-#define	tColor	343
-#define	tColorTable	344
-#define	tFor	345
-#define	tIn	346
-#define	tEndFor	347
-#define	tIf	348
-#define	tEndIf	349
-#define	tExit	350
-#define	tReturn	351
-#define	tCall	352
-#define	tFunction	353
-#define	tTrimmed	354
-#define	tShow	355
-#define	tHide	356
-#define	tGetValue	357
-#define	tGMSH_MAJOR_VERSION	358
-#define	tGMSH_MINOR_VERSION	359
-#define	tGMSH_PATCH_VERSION	360
-#define	tAFFECTPLUS	361
-#define	tAFFECTMINUS	362
-#define	tAFFECTTIMES	363
-#define	tAFFECTDIVIDE	364
-#define	tOR	365
-#define	tAND	366
-#define	tEQUAL	367
-#define	tNOTEQUAL	368
-#define	tAPPROXEQUAL	369
-#define	tLESSOREQUAL	370
-#define	tGREATEROREQUAL	371
-#define	tCROSSPRODUCT	372
-#define	tPLUSPLUS	373
-#define	tMINUSMINUS	374
-#define	UNARYPREC	375
+#define	tAttractor	325
+#define	tLayers	326
+#define	tAlias	327
+#define	tAliasWithOptions	328
+#define	tText2D	329
+#define	tText3D	330
+#define	tInterpolationScheme	331
+#define	tTime	332
+#define	tGrain	333
+#define	tCombine	334
+#define	tBSpline	335
+#define	tBezier	336
+#define	tNurbs	337
+#define	tOrder	338
+#define	tWith	339
+#define	tBounds	340
+#define	tKnots	341
+#define	tColor	342
+#define	tColorTable	343
+#define	tFor	344
+#define	tIn	345
+#define	tEndFor	346
+#define	tIf	347
+#define	tEndIf	348
+#define	tExit	349
+#define	tReturn	350
+#define	tCall	351
+#define	tFunction	352
+#define	tShow	353
+#define	tHide	354
+#define	tGetValue	355
+#define	tGMSH_MAJOR_VERSION	356
+#define	tGMSH_MINOR_VERSION	357
+#define	tGMSH_PATCH_VERSION	358
+#define	tAFFECTPLUS	359
+#define	tAFFECTMINUS	360
+#define	tAFFECTTIMES	361
+#define	tAFFECTDIVIDE	362
+#define	tOR	363
+#define	tAND	364
+#define	tEQUAL	365
+#define	tNOTEQUAL	366
+#define	tAPPROXEQUAL	367
+#define	tLESSOREQUAL	368
+#define	tGREATEROREQUAL	369
+#define	tCROSSPRODUCT	370
+#define	tPLUSPLUS	371
+#define	tMINUSMINUS	372
+#define	UNARYPREC	373
 
 
 extern YYSTYPE yylval;
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 369903014c04109e86300cd09f2df6f549896a14..6f96fb08778b4ed50db7b04edbb7d9d3dba569cc 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,5 +1,5 @@
 %{
-// $Id: Gmsh.y,v 1.253 2007-01-10 13:48:49 geuzaine Exp $
+// $Id: Gmsh.y,v 1.254 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -97,12 +97,12 @@ int CheckViewErrorFlags(Post_View *v);
 %token tPlane tRuled tTransfinite tComplex tPhysical
 %token tUsing tBump tProgression tPlugin 
 %token tRotate tTranslate tSymmetry tDilate tExtrude tDuplicata
-%token tLoop tRecombine tDelete tCoherence tIntersect
+%token tLoop tRecombine tDelete tCoherence
 %token tAttractor tLayers tAlias tAliasWithOptions
 %token tText2D tText3D tInterpolationScheme tTime tGrain tCombine
 %token tBSpline tBezier tNurbs tOrder tWith tBounds tKnots
 %token tColor tColorTable tFor tIn tEndFor tIf tEndIf tExit
-%token tReturn tCall tFunction tTrimmed tShow tHide tGetValue
+%token tReturn tCall tFunction tShow tHide tGetValue
 %token tGMSH_MAJOR_VERSION tGMSH_MINOR_VERSION tGMSH_PATCH_VERSION
 
 %type <d> FExpr FExpr_Single 
@@ -1357,7 +1357,6 @@ Shape :
 	List_T *temp = ListOfDouble2ListOfInt($7);
 	setSurfaceGeneratrices(s, temp);
 	List_Delete(temp);
-	s->Support = s;
 	End_Surface(s);
 	Tree_Add(THEM->Surfaces, &s);
       }
@@ -1395,7 +1394,6 @@ Shape :
 	  List_T *temp = ListOfDouble2ListOfInt($7);
 	  setSurfaceGeneratrices(s, temp);
 	  List_Delete(temp);
-	  s->Support = s;
 	  End_Surface(s);
 	  Tree_Add(THEM->Surfaces, &s);
 	}
@@ -1404,69 +1402,6 @@ Shape :
       $$.Type = type;
       $$.Num = num;
     }
-  | tTrimmed tSurface '(' FExpr ')' tAFFECT '{' FExpr ',' ListOfDouble '}' tEND
-    {
-      int num = (int)$4;
-      Surface *support = FindSurface((int)$8);
-      if(!support){
-	yymsg(GERROR, "Unknown support surface %d", (int)$8);
-      }
-      else{
-	if(FindSurface(num)){
-	  yymsg(GERROR, "Surface %d already exists", num);
-	}
-	else{
-	  Surface *s = Create_Surface(num, MSH_SURF_TRIMMED);
-	  List_T *temp = ListOfDouble2ListOfInt($10);
-	  setSurfaceGeneratrices(s, temp);
-	  List_Delete(temp);
-	  s->Support = support;
-	  End_Surface(s);
-	  Tree_Add(THEM->Surfaces, &s);
-	}
-      }
-      List_Delete($10);
-      $$.Type = MSH_SURF_TRIMMED;
-      $$.Num = num;
-    }
-  | tNurbs tSurface tWith tBounds '(' FExpr ')' tAFFECT 
-       ListOfListOfDouble tKnots  '{' ListOfDouble ',' ListOfDouble '}'
-       tOrder '{' FExpr ',' FExpr '}' tEND
-    {
-      int num = (int)$6;
-      if(FindSurface(num)){
-	yymsg(GERROR, "Surface %d already exists", num);
-      }
-      else{
-	CreateNurbsSurface(num, (int)$18, (int)$20, $9, $12, $14);
-      }
-      for(int i = 0; i < List_Nbr($9); i++)
-	List_Delete((List_T*)List_Pointer($9, i));
-      List_Delete($9);
-      List_Delete($12);
-      List_Delete($14);
-      $$.Type = MSH_SURF_NURBS;
-      $$.Num = num;
-    }
-  | tNurbs  tSurface '(' FExpr ')' tAFFECT 
-       ListOfListOfDouble tKnots  '{' ListOfDouble ',' ListOfDouble '}'
-       tOrder '{' FExpr ',' FExpr '}' tEND
-    {
-      int num = (int)$4;
-      if(FindSurface(num)){
-	yymsg(GERROR, "Surface %d already exists", num);
-      }
-      else{
-	CreateNurbsSurfaceSupport(num, (int)$16, (int)$18, $7, $10, $12);
-      }
-      for(int i = 0; i < List_Nbr($7); i++)
-	List_Delete((List_T*)List_Pointer($7, i));
-      List_Delete($7);
-      List_Delete($10);
-      List_Delete($12);
-      $$.Type = MSH_SURF_NURBS;
-      $$.Num = num;
-    }
   | tSurface tLoop '(' FExpr ')' tAFFECT ListOfDouble tEND
     {
       int num = (int)$4;
@@ -2615,6 +2550,8 @@ Embedding :
     {
     }
 ;
+
+
 //  C O H E R E N C E
 
 Coherence : 
@@ -2622,10 +2559,6 @@ Coherence :
     { 
       ReplaceAllDuplicates();
     }
-  | tIntersect tEND
-    { 
-      yymsg(GERROR, "Intersect is deprecated");
-    }
 ;
 
 
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 9464c46d5ae310e6b2ed9b41bbebc90554df5a2b..b607559387c5282aa4fd8919cd8ffd5f29b0d65c 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -2,7 +2,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.294 2007-01-10 13:48:49 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.295 2007-01-12 08:10:32 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -283,74 +283,73 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 143
-#define YY_END_OF_BUFFER 144
-static yyconst short int yy_accept[589] =
+#define YY_NUM_RULES 141
+#define YY_END_OF_BUFFER 142
+static yyconst short int yy_accept[577] =
     {   0,
-        0,    0,  144,  142,    1,    1,  142,    5,  142,    6,
-      142,  142,  142,  142,  142,  137,   20,    2,  142,   15,
-      142,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  142,  142,   28,   24,   18,   25,
-       16,   26,   17,    0,  139,    3,    4,   19,   22,  138,
-      137,    0,   30,   27,   31,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,   84,   83,
-
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,   99,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  132,  133,  141,  141,
-      141,  141,  141,  141,  141,  141,   23,   29,   21,    0,
-      138,    0,    0,  140,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,   51,  141,  141,  141,  141,  141,  141,  141,
-       64,  141,  141,  141,  141,   75,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,   90,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-
-      141,  141,  141,  141,  141,  141,  141,  141,  113,  141,
-      141,  141,  141,  141,  141,  141,  126,  141,  141,  141,
-      141,  141,  141,  141,    0,  139,    0,    0,  138,   32,
-      141,  141,  141,  141,   36,   38,  141,  141,  141,  141,
-       44,   59,  141,   48,  141,  141,  141,  141,  141,  141,
-       50,  141,  141,   63,  141,  141,  141,  141,   71,  141,
-       72,  141,   74,  141,  141,  141,  141,   81,  141,  141,
-      141,  141,  141,  141,   88,  141,   89,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  110,
-      141,  141,  141,  141,  122,  114,  141,  141,  112,  141,
-
-      141,  141,  141,  141,  135,  125,  141,  141,  141,  141,
-      141,  131,   10,    9,    8,  141,   12,   14,    0,  138,
-       34,  141,  141,  141,   40,  141,  141,  141,  141,  141,
-      141,  141,  141,   56,  141,  141,  141,  141,  141,  141,
-      141,   70,  141,   73,  141,  141,  136,  141,   82,  141,
-      141,   86,  141,  141,   91,  141,  141,  141,   96,   97,
-      141,  141,  100,  141,  101,  102,  141,  141,  141,  141,
-      141,  109,  141,  141,  141,  141,  141,  141,  141,  128,
-      141,  141,  129,  141,   11,  141,   13,  141,   33,   37,
-       39,  141,  141,   43,  141,   46,  141,  141,   53,  141,
-
-      141,  141,  141,   60,   61,  141,  141,  141,   69,  141,
-      141,  141,  141,  141,  141,  141,   92,   87,  141,  141,
-       93,  141,  141,  106,  105,  141,  141,  111,  108,  115,
-      141,  119,  141,  141,  141,  141,  141,  141,  141,  130,
-        7,  141,   41,  141,   45,  141,  141,  141,  141,  141,
-       49,   55,  141,   66,  141,  141,   67,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      118,  141,  141,  116,  141,  141,  141,  127,  141,  141,
-      141,  141,  141,  141,  141,  141,   65,   68,   76,  141,
-      141,  141,   77,  141,  141,   94,   95,  141,   98,  141,
-
-      141,  141,  141,  117,  141,  141,  141,   42,  141,  141,
-      141,   54,  141,   62,  141,  141,  141,  141,   85,  141,
-      141,  107,  120,  141,  141,  124,  141,  141,   58,  141,
-       57,  141,  141,  141,  141,  104,  141,  141,  141,  141,
-       47,  141,  141,  141,  141,  141,  103,  121,  123,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,   52,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,   35,  141,  141,  141,  141,  141,  141,  141,
-      141,   78,   79,   80,  141,  141,  134,    0
+        0,    0,  142,  140,    1,    1,  140,    5,  140,    6,
+      140,  140,  140,  140,  140,  135,   20,    2,  140,   15,
+      140,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  140,  140,   28,   24,   18,   25,
+       16,   26,   17,    0,  137,    3,    4,   19,   22,  136,
+      135,    0,   30,   27,   31,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,   84,   83,
+
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,   98,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  130,  131,  139,  139,
+      139,  139,  139,  139,  139,  139,   23,   29,   21,    0,
+      136,    0,    0,  138,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  139,   51,  139,  139,  139,  139,  139,  139,  139,
+       64,  139,  139,  139,  139,   75,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,   89,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+
+      139,  139,  139,  139,  139,  139,  139,  112,  139,  139,
+      139,  139,  139,  139,  139,  125,  139,  139,  139,  139,
+      139,  139,    0,  137,    0,    0,  136,   32,  139,  139,
+      139,  139,   36,   38,  139,  139,  139,  139,   44,   59,
+      139,   48,  139,  139,  139,  139,  139,  139,   50,  139,
+      139,   63,  139,  139,  139,  139,   71,  139,   72,  139,
+       74,  139,  139,  139,  139,   81,  139,  139,  139,  139,
+      139,   87,  139,   88,  139,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  109,  139,  139,  139,
+      139,  121,  113,  139,  139,  111,  139,  139,  139,  139,
+
+      139,  133,  124,  139,  139,  139,  139,  129,   10,    9,
+        8,  139,   12,   14,    0,  136,   34,  139,  139,  139,
+       40,  139,  139,  139,  139,  139,  139,  139,  139,   56,
+      139,  139,  139,  139,  139,  139,  139,   70,  139,   73,
+      139,  139,  134,  139,   82,  139,   85,  139,  139,   90,
+      139,  139,  139,   95,   96,  139,  139,   99,  139,  100,
+      101,  139,  139,  139,  139,  139,  108,  139,  139,  139,
+      139,  139,  139,  139,  126,  139,  127,  139,   11,  139,
+       13,  139,   33,   37,   39,  139,  139,   43,  139,   46,
+      139,  139,   53,  139,  139,  139,  139,   60,   61,  139,
+
+      139,  139,   69,  139,  139,  139,  139,  139,  139,   91,
+       86,  139,  139,   92,  139,  139,  105,  104,  139,  139,
+      110,  107,  114,  139,  118,  139,  139,  139,  139,  139,
+      139,  128,    7,  139,   41,  139,   45,  139,  139,  139,
+      139,  139,   49,   55,  139,   66,  139,  139,   67,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+      139,  117,  139,  139,  115,  139,  139,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,   65,   68,   76,  139,
+      139,  139,   77,  139,   93,   94,  139,   97,  139,  139,
+      139,  139,  116,  139,  139,  139,   42,  139,  139,  139,
+
+       54,  139,   62,  139,  139,  139,  139,  139,  139,  106,
+      119,  139,  139,  123,  139,  139,   58,  139,   57,  139,
+      139,  139,  139,  103,  139,  139,  139,  139,   47,  139,
+      139,  139,  139,  139,  102,  120,  122,  139,  139,  139,
+      139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+       52,  139,  139,  139,  139,  139,  139,  139,  139,  139,
+       35,  139,  139,  139,  139,  139,  139,  139,  139,   78,
+       79,   80,  139,  139,  132,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -397,143 +396,141 @@ static yyconst int yy_meta[75] =
         2,    2,    1,    1
     } ;
 
-static yyconst short int yy_base[590] =
+static yyconst short int yy_base[578] =
     {   0,
-        0,    0,  710,  711,  711,  711,  688,  711,  702,  711,
-      686,   66,   67,   65,   77,   79,  711,  711,  685,  684,
-      683,   47,   58,   66,   68,   68,   81,   51,   44,   48,
-        0,  643,   85,   69,  635,  637,   95,   97,   99,  152,
-      635,  638,  642,  645,  623,  674,  711,  711,  711,  711,
-      711,  711,  711,  683,  158,  711,  711,  711,  711,  163,
-      178,  208,  711,  711,  711,    0,  632,  636,  641,  634,
-       68,  627,  616,  620,  627,   51,  629,  636,  619,  143,
-      624,  623,  632,  617,  620,  626,  141,  627,  614,  613,
-      609,  612,  630,  647,  603,  617,  605,  624,    0,  599,
-
-      603,  592,  602,  601,  127,  629,  608,  594,  606,  592,
-      584,    0,   35,   88,   91,  594,  146,  587,  594,  590,
-      590,  105,  585,  584,  583,  587,    0,    0,  610,  584,
-      592,  158,  586,  583,  574,  570,  711,  711,  711,  218,
-      223,  232,  238,  243,  573,  589,  236,  576,  575,  570,
-      575,  576,  571,  568,  571,  569,  569,  562,  575,  572,
-      562,  137,  567,  569,  572,  550,  560,  561,  156,  550,
-        0,  551,  549,  552,  561,    0,  561,  580,  578,  564,
-      555,  545,  578,  552,  537,  550,  547,  548,  585,  536,
-      550,  529,  546,  542,  545,  527,  531,  536,  529,  536,
-
-      527,  532,  534,  523,  516,  534,  529,  511,  524,  522,
-      521,  510,  241,  522,  515,  546,  517,  523,  510,  510,
-      508,  500,  511,  218,  256,  274,  283,  288,  293,    0,
-      500,  503,  507,  514,    0,  546,  512,  503,  506,  506,
-        0,    0,  489,    0,  507,  496,  489,  488,  495,  492,
-        0,  483,  482,    0,  491,  484,  484,  491,    0,  476,
-        0,  478,    0,  475,  493,  503,  490,    0,  471,  496,
-      471,  469,  469,  466,    0,  518,    0,  179,  472,  464,
-      464,  468,  470,  473,  468,  457,  458,  455,  456,    0,
-      460,  454,  451,  465,    0,    0,  455,  454,    0,  465,
-
-      448,  459,  462,  457,    0,    0,  437,  442,  447,  451,
-      445,    0,    0,  445,    0,  450,  443,    0,  298,  303,
-      455,  434,  438,  437,    0,  446,  435,  430,  209,  435,
-      442,  439,  438,  447,  428,  435,  434,  433,  434,  178,
-      419,    0,  431,    0,  425,  191,    0,  422,    0,  441,
-      413,    0,  412,  421,    0,  427,  418,  412,    0,    0,
-      420,  421,    0,  410,    0,    0,  416,  416,  418,  406,
-      413,    0,  412,  397,  396,  409,  402,  409,  392,    0,
-      151,  405,    0,  404,    0,  401,    0,  398,    0,    0,
-      438,  386,  399,    0,  390,    0,  391,  382,    0,  387,
-
-      398,  393,  374,    0,    0,  395,  211,  386,    0,  389,
-      379,  298,  416,  371,  400,  384,    0,    0,  375,  362,
-        0,  367,  384,    0,    0,  366,  374,    0,    0,    0,
-      376,    0,  375,  379,  374,  361,  368,  375,  371,    0,
-        0,  355,    0,  359,    0,  365,  378,  365,  366,  366,
-        0,    0,  348,    0,  348,  362,    0,  351,  378,  373,
-      366,  355,  372,  355,  347,  351,  338,  343,  335,  339,
-        0,  342,  331,    0,  325,  335,  328,    0,  338,  328,
-      367,  329,  325,  336,  329,  338,    0,    0,    0,  348,
-      347,  358,    0,  359,  315,    0,    0,  324,    0,  323,
-
-      326,  307,  320,    0,  319,  322,  336,    0,  311,  312,
-      314,    0,  317,    0,  328,  327,  336,  323,    0,  314,
-      302,    0,    0,  294,  295,    0,  298,  289,    0,  293,
-        0,  310,  309,  308,  323,    0,  293,  300,  299,  284,
-        0,  283,  304,  303,  302,  308,    0,    0,    0,  288,
-      287,  315,  314,  313,  303,  277,  287,  296,  295,  294,
-      286,  272,    0,  290,  289,  287,  286,  261,  294,  293,
-      292,  297,    0,  258,  257,  248,  254,  228,  226,  175,
-      155,    0,    0,    0,  125,  109,    0,  711,  102
+        0,    0,  698,  699,  699,  699,  676,  699,  690,  699,
+      674,   66,   67,   65,   77,   79,  699,  699,  673,  672,
+      671,   47,   58,   66,   68,   68,   81,   51,   44,   48,
+        0,  631,   85,   69,  623,  625,   95,   97,   99,  152,
+      623,  626,  630,  633,  611,  662,  699,  699,  699,  699,
+      699,  699,  699,  671,  158,  699,  699,  699,  699,  163,
+      178,  208,  699,  699,  699,    0,  620,  624,  629,  622,
+       68,  615,  604,  608,  615,   51,  617,  624,  607,  143,
+      612,  611,  620,  605,  608,  614,  141,  615,  602,  601,
+      597,  600,  618,  635,  591,  605,  593,  612,    0,    0,
+
+      592,  581,  591,  590,  127,  618,  597,  583,  595,  581,
+      573,    0,   35,   88,   91,  583,  146,  576,  583,  579,
+      579,  105,  574,  573,  572,  576,    0,    0,  599,  573,
+      581,  583,  574,  571,  562,  558,  699,  699,  699,  218,
+      223,  232,  238,  243,  561,  577,  236,  564,  563,  558,
+      563,  564,  559,  556,  559,  557,  557,  550,  563,  560,
+      550,  137,  555,  557,  560,  538,  548,  549,  156,  538,
+        0,  539,  537,  540,  549,    0,  549,  568,  566,  552,
+      543,  533,  566,  526,  539,  536,  537,  574,  525,  539,
+      518,  535,  531,  534,  516,  520,  525,  518,  525,  516,
+
+      521,  523,  512,  505,  523,  518,  500,  513,  511,  510,
+      499,  241,  511,  504,  535,  506,  512,  499,  498,  490,
+      501,  218,  256,  274,  283,  288,  293,    0,  490,  493,
+      497,  504,    0,  536,  502,  493,  496,  496,    0,    0,
+      479,    0,  497,  486,  479,  478,  485,  482,    0,  473,
+      472,    0,  481,  474,  474,  481,    0,  466,    0,  468,
+        0,  465,  483,  493,  480,    0,  461,  486,  460,  460,
+      457,    0,  509,    0,  179,  463,  455,  455,  459,  461,
+      464,  459,  448,  449,  446,  447,    0,  451,  445,  442,
+      456,    0,    0,  446,  445,    0,  456,  439,  450,  453,
+
+      448,    0,    0,  428,  433,  443,  437,    0,    0,  437,
+        0,  442,  435,    0,  298,  303,  447,  426,  430,  429,
+        0,  438,  427,  422,  209,  427,  434,  431,  430,  439,
+      420,  427,  426,  425,  426,  178,  411,    0,  423,    0,
+      417,  171,    0,  414,    0,  433,    0,  405,  414,    0,
+      420,  411,  405,    0,    0,  413,  414,    0,  403,    0,
+        0,  409,  409,  411,  399,  406,    0,  405,  390,  389,
+      402,  395,  402,  385,    0,  209,    0,  398,    0,  395,
+        0,  392,    0,    0,  432,  380,  393,    0,  384,    0,
+      385,  376,    0,  381,  392,  387,  368,    0,    0,  389,
+
+      269,  380,    0,  383,  373,  299,  410,  365,  394,    0,
+        0,  370,  357,    0,  362,  379,    0,    0,  361,  369,
+        0,    0,    0,  371,    0,  370,  374,  369,  356,  363,
+      370,    0,    0,  351,    0,  355,    0,  361,  374,  361,
+      362,  362,    0,    0,  344,    0,  344,  358,    0,  347,
+      374,  369,  362,  351,  368,  344,  348,  335,  340,  332,
+      336,    0,  339,  328,    0,  322,  332,  325,  335,  325,
+      364,  326,  322,  333,  326,  335,    0,    0,    0,  345,
+      344,  355,    0,  356,    0,    0,  322,    0,  321,  324,
+      305,  318,    0,  317,  320,  334,    0,  309,  310,  312,
+
+        0,  315,    0,  326,  325,  334,  321,  312,  300,    0,
+        0,  292,  293,    0,  296,  287,    0,  291,    0,  308,
+      307,  306,  321,    0,  291,  298,  297,  282,    0,  281,
+      302,  301,  300,  306,    0,    0,    0,  286,  285,  313,
+      312,  311,  301,  275,  285,  294,  293,  292,  284,  269,
+        0,  287,  286,  285,  283,  258,  264,  263,  254,  259,
+        0,  227,  226,  192,  196,  178,  175,  168,  155,    0,
+        0,    0,  125,  109,    0,  699,  102
     } ;
 
-static yyconst short int yy_def[590] =
+static yyconst short int yy_def[578] =
     {   0,
-      588,    1,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  588,  588,  588,  588,
-      588,  588,  588,  588,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  588,  588,  588,  588,  588,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  588,  588,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  589,  589,    0,  588
+      576,    1,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  576,  576,  576,  576,
+      576,  576,  576,  576,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  576,  576,  576,  576,  576,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  576,  576,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,  577,  577,  577,  577,  577,
+      577,  577,  577,  577,  577,    0,  576
     } ;
 
-static yyconst short int yy_nxt[786] =
+static yyconst short int yy_nxt[774] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
        14,   15,   16,   16,   16,   16,   16,   17,   18,   19,
@@ -543,87 +540,86 @@ static yyconst short int yy_nxt[786] =
        31,   31,   31,   31,   31,   31,   31,   31,   31,   44,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   45,   46,   50,   54,   52,   55,   55,   55,
-       55,   55,  197,   98,   56,   93,   51,   53,   57,   60,
+       55,   55,  196,   98,   56,   93,   51,   53,   57,   60,
        94,   61,   61,   61,   61,   61,   67,   58,   72,   96,
 
-       99,  198,   95,   66,   68,   62,  106,  100,  155,   73,
+       99,  197,   95,   66,   68,   62,  106,  100,  155,   73,
        69,   70,   71,   76,   97,  149,  156,   77,   74,   81,
        78,   79,   59,   82,   75,   85,   80,   86,   88,  107,
-       62,   83,  102,  150,   84,  587,  103,   87,   89,   90,
-      104,   91,  110,  199,  116,  105,  201,   92,  117,  111,
-      112,  202,  113,  120,  121,  114,  200,  118,  115,  586,
-      122,  123,  210,  119,  124,  125,  127,  128,  211,  126,
+       62,   83,  102,  150,   84,  575,  103,   87,   89,   90,
+      104,   91,  110,  198,  116,  105,  200,   92,  117,  111,
+      112,  201,  113,  120,  121,  114,  199,  118,  115,  574,
+      122,  123,  209,  119,  124,  125,  127,  128,  210,  126,
        55,   55,   55,   55,   55,  141,  141,  141,  141,  141,
-      189,  585,  129,  257,  140,  249,  258,  190,   60,  142,
-       61,   61,   61,   61,   61,  204,  170,  160,  250,  130,
-
-      161,  162,  171,  437,   62,  219,  172,  163,  438,  140,
-      584,  205,  131,  220,  142,  132,  143,  143,  356,  357,
-      144,  144,  144,  144,  144,  412,  225,  225,  413,   62,
-      226,  226,  226,  226,  226,  141,  141,  141,  141,  141,
-      228,  228,  407,  408,  229,  229,  229,  229,  229,  227,
+      188,  573,  129,  255,  140,  247,  256,  189,   60,  142,
+       61,   61,   61,   61,   61,  203,  170,  160,  248,  130,
+
+      161,  162,  171,  572,   62,  406,  172,  163,  407,  140,
+      571,  204,  131,  570,  142,  132,  143,  143,  351,  352,
+      144,  144,  144,  144,  144,  569,  223,  223,  568,   62,
+      224,  224,  224,  224,  224,  141,  141,  141,  141,  141,
+      226,  226,  401,  402,  227,  227,  227,  227,  227,  225,
       144,  144,  144,  144,  144,  144,  144,  144,  144,  144,
-      232,  583,  454,  582,  395,  300,  455,  313,  226,  226,
-      226,  226,  226,  396,  227,  314,  233,  234,  301,  315,
-      302,  316,  317,  581,  580,  318,  226,  226,  226,  226,
-      226,  319,  319,  579,  578,  320,  320,  320,  320,  320,
-
-      229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
-      320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
-      459,  577,  576,  575,  574,  573,  572,  571,  460,  570,
-      569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
-      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
-      549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
-      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
-      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
-      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
-      509,  508,  507,  506,  505,  504,  503,  502,  501,  500,
-
-      499,  498,  497,  496,  495,  494,  493,  492,  491,  490,
-      489,  488,  487,  486,  485,  484,  483,  482,  481,  480,
-      479,  478,  477,  476,  475,  474,  473,  472,  471,  470,
-      469,  468,  467,  466,  465,  464,  463,  462,  461,  458,
-      457,  456,  453,  452,  451,  450,  449,  448,  447,  446,
-      445,  444,  443,  442,  441,  440,  439,  436,  435,  434,
-      433,  432,  431,  430,  429,  428,  427,  426,  425,  424,
-      423,  422,  421,  420,  419,  418,  417,  416,  415,  414,
-      411,  410,  409,  406,  405,  404,  403,  402,  401,  400,
-      399,  398,  397,  394,  393,  392,  391,  390,  389,  388,
-
-      387,  386,  385,  384,  383,  382,  381,  380,  379,  378,
-      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
-      367,  366,  365,  364,  363,  362,  361,  360,  359,  358,
-      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
-      345,  344,  343,  342,  341,  340,  339,  338,  337,  336,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
-      325,  324,  323,  322,  321,  312,  311,  310,  309,  308,
-      307,  306,  305,  304,  303,  299,  298,  297,  296,  295,
-      294,  293,  292,  291,  290,  289,  288,  287,  286,  285,
-      284,  283,  282,  281,  280,  279,  278,  277,  276,  275,
-
-      274,  273,  272,  271,  270,  269,  268,  267,  266,  265,
-      264,  263,  262,  261,  260,  259,  256,  255,  254,  253,
-      252,  251,  248,  247,  246,  245,  244,  243,  242,  241,
-      240,  239,  238,  237,  236,  235,  231,  230,  224,  223,
-      222,  221,  218,  217,  216,  215,  214,  213,  212,  209,
-      208,  207,  206,  203,  196,  195,  194,  193,  192,  191,
-      188,  187,  186,  185,  184,  183,  182,  181,  180,  179,
-      178,  177,  176,  175,  174,  173,  169,  168,  167,  166,
-      165,  164,  159,  158,  157,  154,  153,  152,  151,  148,
-      147,  146,  145,  139,  138,  137,  136,  135,  134,  133,
-
-      109,  108,  101,   65,   64,   63,   49,   48,   47,  588,
-        3,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588
+      230,  430,  567,  566,  389,  297,  431,  309,  224,  224,
+      224,  224,  224,  390,  225,  310,  231,  232,  298,  311,
+      299,  312,  313,  565,  564,  314,  224,  224,  224,  224,
+      224,  315,  315,  563,  562,  316,  316,  316,  316,  316,
+
+      227,  227,  227,  227,  227,  227,  227,  227,  227,  227,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      446,  451,  561,  560,  447,  559,  558,  557,  556,  452,
+      555,  554,  553,  552,  551,  550,  549,  548,  547,  546,
+      545,  544,  543,  542,  541,  540,  539,  538,  537,  536,
+      535,  534,  533,  532,  531,  530,  529,  528,  527,  526,
+      525,  524,  523,  522,  521,  520,  519,  518,  517,  516,
+      515,  514,  513,  512,  511,  510,  509,  508,  507,  506,
+      505,  504,  503,  502,  501,  500,  499,  498,  497,  496,
+      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
+
+      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
+      475,  474,  473,  472,  471,  470,  469,  468,  467,  466,
+      465,  464,  463,  462,  461,  460,  459,  458,  457,  456,
+      455,  454,  453,  450,  449,  448,  445,  444,  443,  442,
+      441,  440,  439,  438,  437,  436,  435,  434,  433,  432,
+      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
+      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
+      409,  408,  405,  404,  403,  400,  399,  398,  397,  396,
+      395,  394,  393,  392,  391,  388,  387,  386,  385,  384,
+      383,  382,  381,  380,  379,  378,  377,  376,  375,  374,
+
+      373,  372,  371,  370,  369,  368,  367,  366,  365,  364,
+      363,  362,  361,  360,  359,  358,  357,  356,  355,  354,
+      353,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
+      331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
+      321,  320,  319,  318,  317,  308,  307,  306,  305,  304,
+      303,  302,  301,  300,  296,  295,  294,  293,  292,  291,
+      290,  289,  288,  287,  286,  285,  284,  283,  282,  281,
+      280,  279,  278,  277,  276,  275,  274,  273,  272,  271,
+      270,  269,  268,  267,  266,  265,  264,  263,  262,  261,
+
+      260,  259,  258,  257,  254,  253,  252,  251,  250,  249,
+      246,  245,  244,  243,  242,  241,  240,  239,  238,  237,
+      236,  235,  234,  233,  229,  228,  222,  221,  220,  219,
+      218,  217,  216,  215,  214,  213,  212,  211,  208,  207,
+      206,  205,  202,  195,  194,  193,  192,  191,  190,  187,
+      186,  185,  184,  183,  182,  181,  180,  179,  178,  177,
+      176,  175,  174,  173,  169,  168,  167,  166,  165,  164,
+      159,  158,  157,  154,  153,  152,  151,  148,  147,  146,
+      145,  139,  138,  137,  136,  135,  134,  133,  109,  108,
+      101,   65,   64,   63,   49,   48,   47,  576,    3,  576,
+
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576
     } ;
 
-static yyconst short int yy_chk[786] =
+static yyconst short int yy_chk[774] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -636,81 +632,80 @@ static yyconst short int yy_chk[786] =
        14,   14,  113,   30,   15,   28,   12,   13,   15,   16,
        28,   16,   16,   16,   16,   16,   22,   15,   23,   29,
 
-       30,  113,   28,  589,   22,   16,   34,   30,   76,   23,
+       30,  113,   28,  577,   22,   16,   34,   30,   76,   23,
        22,   22,   22,   24,   29,   71,   76,   24,   23,   25,
        24,   24,   15,   25,   23,   26,   24,   26,   27,   34,
-       16,   25,   33,   71,   25,  586,   33,   26,   27,   27,
+       16,   25,   33,   71,   25,  574,   33,   26,   27,   27,
        33,   27,   37,  114,   38,   33,  115,   27,   38,   37,
-       37,  115,   37,   39,   39,   37,  114,   38,   37,  585,
+       37,  115,   37,   39,   39,   37,  114,   38,   37,  573,
        39,   39,  122,   38,   39,   39,   40,   40,  122,   39,
        55,   55,   55,   55,   55,   60,   60,   60,   60,   60,
-      105,  581,   40,  169,   55,  162,  169,  105,   61,   60,
+      105,  569,   40,  169,   55,  162,  169,  105,   61,   60,
        61,   61,   61,   61,   61,  117,   87,   80,  162,   40,
 
-       80,   80,   87,  381,   61,  132,   87,   80,  381,   55,
-      580,  117,   40,  132,   60,   40,   62,   62,  278,  278,
-       62,   62,   62,   62,   62,  346,  140,  140,  346,   61,
+       80,   80,   87,  568,   61,  342,   87,   80,  342,   55,
+      567,  117,   40,  566,   60,   40,   62,   62,  275,  275,
+       62,   62,   62,   62,   62,  565,  140,  140,  564,   61,
       140,  140,  140,  140,  140,  141,  141,  141,  141,  141,
-      142,  142,  340,  340,  142,  142,  142,  142,  142,  141,
+      142,  142,  336,  336,  142,  142,  142,  142,  142,  141,
       143,  143,  143,  143,  143,  144,  144,  144,  144,  144,
-      147,  579,  407,  578,  329,  213,  407,  224,  225,  225,
-      225,  225,  225,  329,  141,  224,  147,  147,  213,  224,
-      213,  224,  224,  577,  576,  224,  226,  226,  226,  226,
-      226,  227,  227,  575,  574,  227,  227,  227,  227,  227,
-
-      228,  228,  228,  228,  228,  229,  229,  229,  229,  229,
-      319,  319,  319,  319,  319,  320,  320,  320,  320,  320,
-      412,  572,  571,  570,  569,  568,  567,  566,  412,  565,
-      564,  562,  561,  560,  559,  558,  557,  556,  555,  554,
-      553,  552,  551,  550,  546,  545,  544,  543,  542,  540,
-      539,  538,  537,  535,  534,  533,  532,  530,  528,  527,
-      525,  524,  521,  520,  518,  517,  516,  515,  513,  511,
-      510,  509,  507,  506,  505,  503,  502,  501,  500,  498,
-      495,  494,  492,  491,  490,  486,  485,  484,  483,  482,
-      481,  480,  479,  477,  476,  475,  473,  472,  470,  469,
-
-      468,  467,  466,  465,  464,  463,  462,  461,  460,  459,
-      458,  456,  455,  453,  450,  449,  448,  447,  446,  444,
-      442,  439,  438,  437,  436,  435,  434,  433,  431,  427,
-      426,  423,  422,  420,  419,  416,  415,  414,  413,  411,
-      410,  408,  406,  403,  402,  401,  400,  398,  397,  395,
-      393,  392,  391,  388,  386,  384,  382,  379,  378,  377,
-      376,  375,  374,  373,  371,  370,  369,  368,  367,  364,
-      362,  361,  358,  357,  356,  354,  353,  351,  350,  348,
-      345,  343,  341,  339,  338,  337,  336,  335,  334,  333,
-      332,  331,  330,  328,  327,  326,  324,  323,  322,  321,
-
-      317,  316,  314,  311,  310,  309,  308,  307,  304,  303,
-      302,  301,  300,  298,  297,  294,  293,  292,  291,  289,
-      288,  287,  286,  285,  284,  283,  282,  281,  280,  279,
-      276,  274,  273,  272,  271,  270,  269,  267,  266,  265,
-      264,  262,  260,  258,  257,  256,  255,  253,  252,  250,
-      249,  248,  247,  246,  245,  243,  240,  239,  238,  237,
-      236,  234,  233,  232,  231,  223,  222,  221,  220,  219,
-      218,  217,  216,  215,  214,  212,  211,  210,  209,  208,
-      207,  206,  205,  204,  203,  202,  201,  200,  199,  198,
-      197,  196,  195,  194,  193,  192,  191,  190,  189,  188,
-
-      187,  186,  185,  184,  183,  182,  181,  180,  179,  178,
-      177,  175,  174,  173,  172,  170,  168,  167,  166,  165,
-      164,  163,  161,  160,  159,  158,  157,  156,  155,  154,
-      153,  152,  151,  150,  149,  148,  146,  145,  136,  135,
-      134,  133,  131,  130,  129,  126,  125,  124,  123,  121,
-      120,  119,  118,  116,  111,  110,  109,  108,  107,  106,
-      104,  103,  102,  101,  100,   98,   97,   96,   95,   94,
-       93,   92,   91,   90,   89,   88,   86,   85,   84,   83,
-       82,   81,   79,   78,   77,   75,   74,   73,   72,   70,
-       69,   68,   67,   54,   46,   45,   44,   43,   42,   41,
-
-       36,   35,   32,   21,   20,   19,   11,    9,    7,    3,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588
+      147,  376,  563,  562,  325,  212,  376,  222,  223,  223,
+      223,  223,  223,  325,  141,  222,  147,  147,  212,  222,
+      212,  222,  222,  560,  559,  222,  224,  224,  224,  224,
+      224,  225,  225,  558,  557,  225,  225,  225,  225,  225,
+
+      226,  226,  226,  226,  226,  227,  227,  227,  227,  227,
+      315,  315,  315,  315,  315,  316,  316,  316,  316,  316,
+      401,  406,  556,  555,  401,  554,  553,  552,  550,  406,
+      549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
+      539,  538,  534,  533,  532,  531,  530,  528,  527,  526,
+      525,  523,  522,  521,  520,  518,  516,  515,  513,  512,
+      509,  508,  507,  506,  505,  504,  502,  500,  499,  498,
+      496,  495,  494,  492,  491,  490,  489,  487,  484,  482,
+      481,  480,  476,  475,  474,  473,  472,  471,  470,  469,
+      468,  467,  466,  464,  463,  461,  460,  459,  458,  457,
+
+      456,  455,  454,  453,  452,  451,  450,  448,  447,  445,
+      442,  441,  440,  439,  438,  436,  434,  431,  430,  429,
+      428,  427,  426,  424,  420,  419,  416,  415,  413,  412,
+      409,  408,  407,  405,  404,  402,  400,  397,  396,  395,
+      394,  392,  391,  389,  387,  386,  385,  382,  380,  378,
+      374,  373,  372,  371,  370,  369,  368,  366,  365,  364,
+      363,  362,  359,  357,  356,  353,  352,  351,  349,  348,
+      346,  344,  341,  339,  337,  335,  334,  333,  332,  331,
+      330,  329,  328,  327,  326,  324,  323,  322,  320,  319,
+      318,  317,  313,  312,  310,  307,  306,  305,  304,  301,
+
+      300,  299,  298,  297,  295,  294,  291,  290,  289,  288,
+      286,  285,  284,  283,  282,  281,  280,  279,  278,  277,
+      276,  273,  271,  270,  269,  268,  267,  265,  264,  263,
+      262,  260,  258,  256,  255,  254,  253,  251,  250,  248,
+      247,  246,  245,  244,  243,  241,  238,  237,  236,  235,
+      234,  232,  231,  230,  229,  221,  220,  219,  218,  217,
+      216,  215,  214,  213,  211,  210,  209,  208,  207,  206,
+      205,  204,  203,  202,  201,  200,  199,  198,  197,  196,
+      195,  194,  193,  192,  191,  190,  189,  188,  187,  186,
+      185,  184,  183,  182,  181,  180,  179,  178,  177,  175,
+
+      174,  173,  172,  170,  168,  167,  166,  165,  164,  163,
+      161,  160,  159,  158,  157,  156,  155,  154,  153,  152,
+      151,  150,  149,  148,  146,  145,  136,  135,  134,  133,
+      132,  131,  130,  129,  126,  125,  124,  123,  121,  120,
+      119,  118,  116,  111,  110,  109,  108,  107,  106,  104,
+      103,  102,  101,   98,   97,   96,   95,   94,   93,   92,
+       91,   90,   89,   88,   86,   85,   84,   83,   82,   81,
+       79,   78,   77,   75,   74,   73,   72,   70,   69,   68,
+       67,   54,   46,   45,   44,   43,   42,   41,   36,   35,
+       32,   21,   20,   19,   11,    9,    7,    3,  576,  576,
+
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -727,7 +722,7 @@ char *yytext;
 #line 1 "Gmsh.l"
 #define INITIAL 0
 #line 2 "Gmsh.l"
-// $Id: Gmsh.yy.cpp,v 1.294 2007-01-10 13:48:49 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.295 2007-01-12 08:10:32 geuzaine Exp $
 //
 // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 //
@@ -788,7 +783,7 @@ void   skipline(void);
 	     && ferror( yyin ) )					\
      Msg(FATAL, "Input in flex scanner failed");
 
-#line 792 "Gmsh.yy.cpp"
+#line 787 "Gmsh.yy.cpp"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -942,7 +937,7 @@ YY_DECL
 #line 79 "Gmsh.l"
 
 
-#line 946 "Gmsh.yy.cpp"
+#line 941 "Gmsh.yy.cpp"
 
 	if ( yy_init )
 		{
@@ -993,13 +988,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 589 )
+				if ( yy_current_state >= 577 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 711 );
+		while ( yy_base[yy_current_state] != 699 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -1447,88 +1442,88 @@ return tIf;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 174 "Gmsh.l"
-return tIntersect;
+#line 175 "Gmsh.l"
+return tKnots;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 176 "Gmsh.l"
-return tKnots;
+#line 177 "Gmsh.l"
+return tLength;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 178 "Gmsh.l"
-return tLength;
+return tLine;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 179 "Gmsh.l"
-return tLine;
+return tLoop;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 180 "Gmsh.l"
-return tLoop;
+return tLog;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 181 "Gmsh.l"
-return tLog;
+return tLog10;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 182 "Gmsh.l"
-return tLog10;
+return tLayers;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 183 "Gmsh.l"
-return tLayers;
+#line 184 "Gmsh.l"
+return tModulo;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 185 "Gmsh.l"
-return tModulo;
+return tMPI_Rank;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 186 "Gmsh.l"
-return tMPI_Rank;
+return tMPI_Size;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 187 "Gmsh.l"
-return tMPI_Size;
+#line 188 "Gmsh.l"
+return tNurbs;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 189 "Gmsh.l"
-return tNurbs;
+#line 190 "Gmsh.l"
+return tOrder;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 191 "Gmsh.l"
-return tOrder;
+#line 192 "Gmsh.l"
+return tPhysical;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 193 "Gmsh.l"
-return tPhysical;
+return tPi;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 194 "Gmsh.l"
-return tPi;
+return tPlane;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 195 "Gmsh.l"
-return tPlane;
+return tPoint;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 196 "Gmsh.l"
-return tPoint;
+return tProgression;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
@@ -1538,200 +1533,190 @@ return tProgression;
 case 103:
 YY_RULE_SETUP
 #line 198 "Gmsh.l"
-return tProgression;
+return tParametric;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 199 "Gmsh.l"
-return tParametric;
+return tPrintf;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 200 "Gmsh.l"
-return tPrintf;
+return tPlugin;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 201 "Gmsh.l"
-return tPlugin;
+#line 202 "Gmsh.l"
+return tRecombine;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 203 "Gmsh.l"
-return tRecombine;
+return tRotate;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 204 "Gmsh.l"
-return tRotate;
+return tRuled;
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 205 "Gmsh.l"
-return tRuled;
+return tRand;
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 206 "Gmsh.l"
-return tRand;
+return tReturn;
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 207 "Gmsh.l"
-return tReturn;
+#line 208 "Gmsh.l"
+return tSqrt;
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 209 "Gmsh.l"
-return tSqrt;
+return tSin;
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 210 "Gmsh.l"
-return tSin;
+return tSinh;
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 211 "Gmsh.l"
-return tSinh;
+return tSpline;
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 212 "Gmsh.l"
-return tSpline;
+return tSurface;
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 213 "Gmsh.l"
-return tSurface;
+return tSymmetry;
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 214 "Gmsh.l"
-return tSymmetry;
+return tSprintf;
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 215 "Gmsh.l"
-return tSprintf;
+return tStrCat;
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 216 "Gmsh.l"
-return tStrCat;
+return tStrPrefix;
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 217 "Gmsh.l"
-return tStrPrefix;
+return tStrRelative;
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 218 "Gmsh.l"
-return tStrRelative;
+return tShow;
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 219 "Gmsh.l"
-return tShow;
+#line 220 "Gmsh.l"
+return tTransfinite;
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 221 "Gmsh.l"
-return tTransfinite;
+return tTranslate;
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 222 "Gmsh.l"
-return tTranslate;
+return tTanh;
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 223 "Gmsh.l"
-return tTanh;
+return tTan;
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 224 "Gmsh.l"
-return tTan;
+return tToday;
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 225 "Gmsh.l"
-return tTrimmed;
+#line 226 "Gmsh.l"
+return tUsing;
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 226 "Gmsh.l"
-return tToday;
+#line 228 "Gmsh.l"
+return tVolume;
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 228 "Gmsh.l"
-return tUsing;
+#line 230 "Gmsh.l"
+return tWith;
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 230 "Gmsh.l"
-return tVolume;
+#line 232 "Gmsh.l"
+return tText2D;
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 232 "Gmsh.l"
-return tWith;
+#line 233 "Gmsh.l"
+return tText3D;
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 234 "Gmsh.l"
-return tText2D;
+return tInterpolationScheme;
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 235 "Gmsh.l"
-return tText3D;
+return tTime;
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 236 "Gmsh.l"
-return tInterpolationScheme;
+return tGrain;
 	YY_BREAK
 case 135:
-YY_RULE_SETUP
-#line 237 "Gmsh.l"
-return tTime;
-	YY_BREAK
+#line 239 "Gmsh.l"
 case 136:
-YY_RULE_SETUP
-#line 238 "Gmsh.l"
-return tGrain;
-	YY_BREAK
+#line 240 "Gmsh.l"
 case 137:
 #line 241 "Gmsh.l"
 case 138:
-#line 242 "Gmsh.l"
-case 139:
-#line 243 "Gmsh.l"
-case 140:
 YY_RULE_SETUP
-#line 243 "Gmsh.l"
+#line 241 "Gmsh.l"
 {yylval.d = atof((char *)yytext); return tDOUBLE;}
 	YY_BREAK
-case 141:
+case 139:
 YY_RULE_SETUP
-#line 245 "Gmsh.l"
+#line 243 "Gmsh.l"
 {yylval.c = strsave((char*)yytext); return tSTRING;}
 	YY_BREAK
-case 142:
+case 140:
 YY_RULE_SETUP
-#line 247 "Gmsh.l"
+#line 245 "Gmsh.l"
 return yytext[0];
 	YY_BREAK
-case 143:
+case 141:
 YY_RULE_SETUP
-#line 249 "Gmsh.l"
+#line 247 "Gmsh.l"
 ECHO;
 	YY_BREAK
-#line 1735 "Gmsh.yy.cpp"
+#line 1720 "Gmsh.yy.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2023,7 +2008,7 @@ static yy_state_type yy_get_previous_state()
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 589 )
+			if ( yy_current_state >= 577 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2058,11 +2043,11 @@ yy_state_type yy_current_state;
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 589 )
+		if ( yy_current_state >= 577 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 588);
+	yy_is_jam = (yy_current_state == 576);
 
 	return yy_is_jam ? 0 : yy_current_state;
 	}
@@ -2617,7 +2602,7 @@ int main()
 	return 0;
 	}
 #endif
-#line 249 "Gmsh.l"
+#line 247 "Gmsh.l"
 
 
 #undef yywrap
diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi
index 7d5382934c264262b7aa4a6f9e6ebade86a63558..f68fd42028336b1f02a714b967f66a6553ac4d4d 100644
--- a/doc/texinfo/gmsh.texi
+++ b/doc/texinfo/gmsh.texi
@@ -1,5 +1,5 @@
 \input texinfo.tex @c -*-texinfo-*-
-@c $Id: gmsh.texi,v 1.224 2006-12-21 17:10:15 geuzaine Exp $
+@c $Id: gmsh.texi,v 1.225 2007-01-12 08:10:32 geuzaine Exp $
 @c
 @c Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
 @c
@@ -1573,12 +1573,6 @@ elementary lines in the saved mesh.
 @cindex Surfaces, physical
 
 @ftable @code
-@c todo:
-@c @item Nurbs Surface ( @var{expression} ) = @{ @var{expression-list-list} @} Knots @{ @{ @var{expression-list} @}, @{ @var{expression-list} @} @} Order @{ @var{expression}, @var{expression} @};
-
-@c todo:
-@c @item Nurbs Surface With Bounds ( @var{expression} ) = @{ @var{expression-list-list} @} Knots @{ @{ @var{expression-list} @}, @{ @var{expression-list} @} @} Order @{ @var{expression}, @var{expression} @};
-
 @item Plane Surface ( @var{expression} ) = @{ @var{expression-list} @};
 Creates a plane surface. The @var{expression} inside the parentheses is the
 plane surface's identification number; the @var{expression-list} on the
@@ -1598,9 +1592,6 @@ the ruled surface's identification number; the @var{expression-list} on the
 right hand side should the identification number of a single line loop,
 composed of either three or four elementary lines.
 
-@c todo:
-@c @item Trimmed Surface ( @var{expression} ) = @{ @var{expression}, @{ @var{expression-list} @} @};
-
 @item Surface Loop ( @var{expression} ) = @{ @var{expression-list} @};
 Creates a surface loop (a shell). The @var{expression} inside the
 parentheses is the surface loop's identification number; the
@@ -1805,10 +1796,6 @@ Show the entities listed in @var{expression-list}, if
 Show the entity @var{char-expression}, if @code{General.VisibilityMode} is
 set to @code{0} or @code{1} (@var{char-expression} can for example be
 @code{"*"}).
-
-@c todo:
-@c @item Intersect;
-@c Intersects all lines.
 @end ftable
 
 @c -------------------------------------------------------------------------