diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 2a30618c0cac5a6afe2087986cd10c9cd249f435..d5a25c74f1bae18613fe45dd0fc81d3c85cec85d 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -825,10 +825,18 @@ StringXNumber ViewOptions_Number[] = { { F, "CustomMin" , opt_view_custom_min , 0. , "User defined minimum value to be displayed" }, + { F|O, "DrawHexahedra" , opt_view_draw_hexahedra , 1. , + "Display post-processing hexahedra?" }, { F|O, "DrawLines" , opt_view_draw_lines , 1. , "Display post-processing lines?" }, { F|O, "DrawPoints" , opt_view_draw_points , 1. , "Display post-processing points?" }, + { F|O, "DrawPrisms" , opt_view_draw_prisms , 1. , + "Display post-processing prisms?" }, + { F|O, "DrawPyramids" , opt_view_draw_pyramids , 1. , + "Display post-processing pyramids?" }, + { F|O, "DrawQuadrangles" , opt_view_draw_quadrangles , 1. , + "Display post-processing quadrangles?" }, { F|O, "DrawScalars" , opt_view_draw_scalars , 1. , "Display scalar values?" }, { F|O, "DrawStrings" , opt_view_draw_strings , 1. , diff --git a/Common/Options.cpp b/Common/Options.cpp index d8196d31f32a5358bd1853d29a2de1aee2033911..990a86c2baf25d47d5fc75bff79a2b1ff4d107b7 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.84 2002-08-07 00:30:25 geuzaine Exp $ +// $Id: Options.cpp,v 1.85 2002-09-01 21:54:10 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -2602,6 +2602,18 @@ double opt_view_draw_triangles(OPT_ARGS_NUM){ #endif return v->DrawTriangles; } +double opt_view_draw_quadrangles(OPT_ARGS_NUM){ + GET_VIEW(0.) ; + if(action & GMSH_SET){ + v->DrawQuadrangles = (int)val; + v->Changed = 1; + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI) && (num == WID->view_number)) + WID->view_butt[16]->value(v->DrawQuadrangles); +#endif + return v->DrawQuadrangles; +} double opt_view_draw_tetrahedra(OPT_ARGS_NUM){ GET_VIEW(0.) ; if(action & GMSH_SET){ @@ -2610,10 +2622,46 @@ double opt_view_draw_tetrahedra(OPT_ARGS_NUM){ } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[16]->value(v->DrawTetrahedra); + WID->view_butt[17]->value(v->DrawTetrahedra); #endif return v->DrawTetrahedra; } +double opt_view_draw_hexahedra(OPT_ARGS_NUM){ + GET_VIEW(0.) ; + if(action & GMSH_SET){ + v->DrawHexahedra = (int)val; + v->Changed = 1; + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI) && (num == WID->view_number)) + WID->view_butt[18]->value(v->DrawHexahedra); +#endif + return v->DrawHexahedra; +} +double opt_view_draw_prisms(OPT_ARGS_NUM){ + GET_VIEW(0.) ; + if(action & GMSH_SET){ + v->DrawPrisms = (int)val; + v->Changed = 1; + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI) && (num == WID->view_number)) + WID->view_butt[19]->value(v->DrawPrisms); +#endif + return v->DrawPrisms; +} +double opt_view_draw_pyramids(OPT_ARGS_NUM){ + GET_VIEW(0.) ; + if(action & GMSH_SET){ + v->DrawPyramids = (int)val; + v->Changed = 1; + } +#ifdef _FLTK + if(WID && (action & GMSH_GUI) && (num == WID->view_number)) + WID->view_butt[20]->value(v->DrawPyramids); +#endif + return v->DrawPyramids; +} double opt_view_draw_scalars(OPT_ARGS_NUM){ GET_VIEW(0.) ; if(action & GMSH_SET){ @@ -2622,7 +2670,7 @@ double opt_view_draw_scalars(OPT_ARGS_NUM){ } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[17]->value(v->DrawScalars); + WID->view_butt[21]->value(v->DrawScalars); #endif return v->DrawScalars; } @@ -2634,7 +2682,7 @@ double opt_view_draw_vectors(OPT_ARGS_NUM){ } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[18]->value(v->DrawVectors); + WID->view_butt[22]->value(v->DrawVectors); #endif return v->DrawVectors; } @@ -2646,7 +2694,7 @@ double opt_view_draw_tensors(OPT_ARGS_NUM){ } #ifdef _FLTK if(WID && (action & GMSH_GUI) && (num == WID->view_number)) - WID->view_butt[19]->value(v->DrawTensors); + WID->view_butt[23]->value(v->DrawTensors); #endif return v->DrawTensors; } diff --git a/Common/Options.h b/Common/Options.h index 6a4efc86df730b88951991e6134214dcc8d204fe..877bb04b863b1b9b7ba61fb1716a40d07099fcad 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -420,9 +420,13 @@ double opt_view_show_time(OPT_ARGS_NUM); double opt_view_show_scale(OPT_ARGS_NUM); double opt_view_draw_strings(OPT_ARGS_NUM); double opt_view_draw_points(OPT_ARGS_NUM); +double opt_view_draw_quadrangles(OPT_ARGS_NUM); double opt_view_draw_lines(OPT_ARGS_NUM); double opt_view_draw_triangles(OPT_ARGS_NUM); double opt_view_draw_tetrahedra(OPT_ARGS_NUM); +double opt_view_draw_hexahedra(OPT_ARGS_NUM); +double opt_view_draw_prisms(OPT_ARGS_NUM); +double opt_view_draw_pyramids(OPT_ARGS_NUM); double opt_view_draw_scalars(OPT_ARGS_NUM); double opt_view_draw_vectors(OPT_ARGS_NUM); double opt_view_draw_tensors(OPT_ARGS_NUM); diff --git a/Common/Views.cpp b/Common/Views.cpp index 1dc6d871ab851eb3bb05ec4551463a4d8e30b76d..907064543672249d4a1e73831e6ce51efe51f8c5 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,4 +1,4 @@ -// $Id: Views.cpp,v 1.72 2002-06-15 21:25:27 geuzaine Exp $ +// $Id: Views.cpp,v 1.73 2002-09-01 21:54:10 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -71,7 +71,11 @@ Post_View * BeginView(int allocate){ v->NbSP = v->NbVP = v->NbTP = 0; v->NbSL = v->NbVL = v->NbTL = 0; v->NbST = v->NbVT = v->NbTT = 0; + v->NbSQ = v->NbVQ = v->NbTQ = 0; v->NbSS = v->NbVS = v->NbTS = 0; + v->NbSH = v->NbVH = v->NbTH = 0; + v->NbSI = v->NbVI = v->NbTI = 0; + v->NbSY = v->NbVY = v->NbTY = 0; v->NbT2 = v->NbT3 = 0; if(allocate){ @@ -90,11 +94,27 @@ Post_View * BeginView(int allocate){ v->ST = List_Create(100,1000,sizeof(double)); v->VT = List_Create(100,1000,sizeof(double)); v->TT = List_Create(100,1000,sizeof(double)); + + v->SQ = List_Create(100,1000,sizeof(double)); + v->VQ = List_Create(100,1000,sizeof(double)); + v->TQ = List_Create(100,1000,sizeof(double)); v->SS = List_Create(100,1000,sizeof(double)); v->VS = List_Create(100,1000,sizeof(double)); v->TS = List_Create(100,1000,sizeof(double)); + v->SH = List_Create(100,1000,sizeof(double)); + v->VH = List_Create(100,1000,sizeof(double)); + v->TH = List_Create(100,1000,sizeof(double)); + + v->SI = List_Create(100,1000,sizeof(double)); + v->VI = List_Create(100,1000,sizeof(double)); + v->TI = List_Create(100,1000,sizeof(double)); + + v->SY = List_Create(100,1000,sizeof(double)); + v->VY = List_Create(100,1000,sizeof(double)); + v->TY = List_Create(100,1000,sizeof(double)); + v->T2D = List_Create(10,100,sizeof(double)); v->T2C = List_Create(100,1000,sizeof(char)); v->T3D = List_Create(10,100,sizeof(double)); @@ -105,7 +125,11 @@ Post_View * BeginView(int allocate){ v->SP = NULL; v->VP = NULL; v->TP = NULL; v->SL = NULL; v->VL = NULL; v->TL = NULL; v->ST = NULL; v->VT = NULL; v->TT = NULL; + v->SQ = NULL; v->VQ = NULL; v->TQ = NULL; v->SS = NULL; v->VS = NULL; v->TS = NULL; + v->SH = NULL; v->VH = NULL; v->TH = NULL; + v->SI = NULL; v->VI = NULL; v->TI = NULL; + v->SY = NULL; v->VY = NULL; v->TY = NULL; v->T2D = NULL; v->T2C = NULL; v->T3D = NULL; v->T3C = NULL; } @@ -129,53 +153,64 @@ Post_View * BeginView(int allocate){ return v; } -void Stat_ScalarSimplex(Post_View *v, int nbnod, int N, - double *X, double *Y, double *Z, double *V){ +void Stat_Element(Post_View *v, int type, int nbnod, int N, + double *X, double *Y, double *Z, double *V){ int i; + double l0; - if(v->Min == INFINITY || v->Max == -INFINITY){ - v->Min = V[0]; - v->Max = V[0]; - v->NbTimeStep = N/nbnod; - } - else if(N/nbnod < v->NbTimeStep) - v->NbTimeStep = N/nbnod ; - - for(i=0 ; i<N ; i++){ - if(V[i] < v->Min) v->Min = V[i] ; - if(V[i] > v->Max) v->Max = V[i] ; - } - - for(i=0 ; i<nbnod ; i++){ - if(X[i] < v->BBox[0]) v->BBox[0] = X[i] ; - if(X[i] > v->BBox[1]) v->BBox[1] = X[i] ; - if(Y[i] < v->BBox[2]) v->BBox[2] = Y[i] ; - if(Y[i] > v->BBox[3]) v->BBox[3] = Y[i] ; - if(Z[i] < v->BBox[4]) v->BBox[4] = Z[i] ; - if(Z[i] > v->BBox[5]) v->BBox[5] = Z[i] ; - } - - v->TextOnly = 0; -} + switch(type){ -void Stat_VectorSimplex(Post_View *v, int nbnod, int N, - double *X, double *Y, double *Z, double *V){ - double l0; - int i; + case 0 : // scalar + if(v->Min == INFINITY || v->Max == -INFINITY){ + v->Min = V[0]; + v->Max = V[0]; + v->NbTimeStep = N/nbnod; + } + else if(N/nbnod < v->NbTimeStep) + v->NbTimeStep = N/nbnod ; + + for(i=0 ; i<N ; i++){ + if(V[i] < v->Min) v->Min = V[i] ; + if(V[i] > v->Max) v->Max = V[i] ; + } + break; + + case 1 : // vector + if(v->Min == INFINITY || v->Max == -INFINITY){ + l0 = sqrt(DSQR(V[0])+DSQR(V[1])+DSQR(V[2])); + v->Min = l0; + v->Max = l0; + v->NbTimeStep = N/(3*nbnod) ; + } + else if(N/(3*nbnod) < v->NbTimeStep) + v->NbTimeStep = N/(3*nbnod) ; + + for(i=0 ; i<N ; i+=3){ + l0 = sqrt(DSQR(V[i])+DSQR(V[i+1])+DSQR(V[i+2])); + if(l0 < v->Min) v->Min = l0 ; + if(l0 > v->Max) v->Max = l0 ; + } + v->ScalarOnly = 0; + break; + + case 2 : // tensor - TODO! + if(v->Min == INFINITY || v->Max == -INFINITY){ + l0 = sqrt(DSQR(V[0])+DSQR(V[4])+DSQR(V[8])); + v->Min = l0; + v->Max = l0; + v->NbTimeStep = N/(9*nbnod) ; + } + else if(N/(9*nbnod) < v->NbTimeStep) + v->NbTimeStep = N/(9*nbnod) ; - if(v->Min == INFINITY || v->Max == -INFINITY){ - l0 = sqrt(DSQR(V[0])+DSQR(V[1])+DSQR(V[2])); - v->Min = l0; - v->Max = l0; - v->NbTimeStep = N/(3*nbnod) ; - } - else if(N/(3*nbnod) < v->NbTimeStep) - v->NbTimeStep = N/(3*nbnod) ; + for(i=0 ; i<N ; i+=9){ + l0 = sqrt(DSQR(V[i])+DSQR(V[i+4])+DSQR(V[i+8])); + if(l0 < v->Min) v->Min = l0 ; + if(l0 > v->Max) v->Max = l0 ; + } + v->ScalarOnly = 0; + break; - for(i=0 ; i<N ; i+=3){ - l0 = sqrt(DSQR(V[i])+DSQR(V[i+1])+DSQR(V[i+2])); - if(l0 < v->Min) v->Min = l0 ; - if(l0 > v->Max) v->Max = l0 ; } for(i=0 ; i<nbnod ; i++){ @@ -187,167 +222,65 @@ void Stat_VectorSimplex(Post_View *v, int nbnod, int N, if(Z[i] > v->BBox[5]) v->BBox[5] = Z[i] ; } - v->ScalarOnly = 0; v->TextOnly = 0; } -void Stat_TensorSimplex(Post_View *v, int nbnod, int N, - double *X, double *Y, double *Z, double *V){ - double l0; - int i; - - if(v->Min == INFINITY || v->Max == -INFINITY){ - l0 = sqrt(DSQR(V[0])+DSQR(V[1])+DSQR(V[2])); - v->Min = l0; - v->Max = l0; - v->NbTimeStep = N/(3*nbnod) ; - } - else if(N/(3*nbnod) < v->NbTimeStep) - v->NbTimeStep = N/(3*nbnod) ; - - for(i=0 ; i<N ; i+=3){ - l0 = sqrt(DSQR(V[i])+DSQR(V[i+1])+DSQR(V[i+2])); - if(l0 < v->Min) v->Min = l0 ; - if(l0 > v->Max) v->Max = l0 ; - } - - for(i=0 ; i<nbnod ; i++){ - if(X[i] < v->BBox[0]) v->BBox[0] = X[i] ; - if(X[i] > v->BBox[1]) v->BBox[1] = X[i] ; - if(Y[i] < v->BBox[2]) v->BBox[2] = Y[i] ; - if(Y[i] > v->BBox[3]) v->BBox[3] = Y[i] ; - if(Z[i] < v->BBox[4]) v->BBox[4] = Z[i] ; - if(Z[i] > v->BBox[5]) v->BBox[5] = Z[i] ; +void Stat_List(Post_View *v, List_T *listelm, int type, int nbelm, int nbnod){ + int i, nb; + if(nbelm){ + nb = List_Nbr(listelm) / nbelm ; + for(i = 0 ; i < List_Nbr(listelm) ; i+=nb) + Stat_Element(v, type, nbnod, nb-3*nbnod, + (double*)List_Pointer_Fast(listelm,i), + (double*)List_Pointer_Fast(listelm,i+1*nbnod), + (double*)List_Pointer_Fast(listelm,i+2*nbnod), + (double*)List_Pointer_Fast(listelm,i+3*nbnod)); } - - v->ScalarOnly = 0; - v->TextOnly = 0; } - void EndView(Post_View *v, int add_in_gui, char *file_name, char *name){ - int i, nb; + int i; double d; // Points - - if(v->NbSP){ - nb = List_Nbr(v->SP) / v->NbSP ; - for(i = 0 ; i < List_Nbr(v->SP) ; i+=nb) - Stat_ScalarSimplex(v, 1, nb-3, - (double*)List_Pointer_Fast(v->SP,i), - (double*)List_Pointer_Fast(v->SP,i+1), - (double*)List_Pointer_Fast(v->SP,i+2), - (double*)List_Pointer_Fast(v->SP,i+3)); - } - if(v->NbVP){ - nb = List_Nbr(v->VP) / v->NbVP ; - for(i = 0 ; i < List_Nbr(v->VP) ; i+=nb) - Stat_VectorSimplex(v, 1, nb-3, - (double*)List_Pointer_Fast(v->VP,i), - (double*)List_Pointer_Fast(v->VP,i+1), - (double*)List_Pointer_Fast(v->VP,i+2), - (double*)List_Pointer_Fast(v->VP,i+3)); - } - if(v->NbTP){ - nb = List_Nbr(v->TP) / v->NbTP ; - for(i = 0 ; i < List_Nbr(v->TP) ; i+=nb) - Stat_TensorSimplex(v, 1, nb-3, - (double*)List_Pointer_Fast(v->TP,i), - (double*)List_Pointer_Fast(v->TP,i+1), - (double*)List_Pointer_Fast(v->TP,i+2), - (double*)List_Pointer_Fast(v->TP,i+3)); - } - - // Lines - - if(v->NbSL){ - nb = List_Nbr(v->SL) / v->NbSL ; - for(i = 0 ; i < List_Nbr(v->SL) ; i+=nb) - Stat_ScalarSimplex(v, 2, nb-6, - (double*)List_Pointer_Fast(v->SL,i), - (double*)List_Pointer_Fast(v->SL,i+2), - (double*)List_Pointer_Fast(v->SL,i+4), - (double*)List_Pointer_Fast(v->SL,i+6)); - } - if(v->NbVL){ - nb = List_Nbr(v->VL) / v->NbVL ; - for(i = 0 ; i < List_Nbr(v->VL) ; i+=nb) - Stat_VectorSimplex(v, 2, nb-6, - (double*)List_Pointer_Fast(v->VL,i), - (double*)List_Pointer_Fast(v->VL,i+2), - (double*)List_Pointer_Fast(v->VL,i+4), - (double*)List_Pointer_Fast(v->VL,i+6)); - } - if(v->NbTL){ - nb = List_Nbr(v->TL) / v->NbTL ; - for(i = 0 ; i < List_Nbr(v->TL) ; i+=nb) - Stat_TensorSimplex(v, 2, nb-6, - (double*)List_Pointer_Fast(v->TL,i), - (double*)List_Pointer_Fast(v->TL,i+2), - (double*)List_Pointer_Fast(v->TL,i+4), - (double*)List_Pointer_Fast(v->TL,i+6)); - } - - // Triangles - - if(v->NbST){ - nb = List_Nbr(v->ST) / v->NbST ; - for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb) - Stat_ScalarSimplex(v, 3, nb-9, - (double*)List_Pointer_Fast(v->ST,i), - (double*)List_Pointer_Fast(v->ST,i+3), - (double*)List_Pointer_Fast(v->ST,i+6), - (double*)List_Pointer_Fast(v->ST,i+9)); - } - if(v->NbVT){ - nb = List_Nbr(v->VT) / v->NbVT ; - for(i = 0 ; i < List_Nbr(v->VT) ; i+=nb) - Stat_VectorSimplex(v, 3, nb-9, - (double*)List_Pointer_Fast(v->VT,i), - (double*)List_Pointer_Fast(v->VT,i+3), - (double*)List_Pointer_Fast(v->VT,i+6), - (double*)List_Pointer_Fast(v->VT,i+9)); - } - if(v->NbTT){ - nb = List_Nbr(v->TT) / v->NbTT ; - for(i = 0 ; i < List_Nbr(v->TT) ; i+=nb) - Stat_TensorSimplex(v, 3, nb-9, - (double*)List_Pointer_Fast(v->TT,i), - (double*)List_Pointer_Fast(v->TT,i+3), - (double*)List_Pointer_Fast(v->TT,i+6), - (double*)List_Pointer_Fast(v->TT,i+9)); - } - - // Tetrahedra - - if(v->NbSS){ - nb = List_Nbr(v->SS) / v->NbSS ; - for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb) - Stat_ScalarSimplex(v, 4, nb-12, - (double*)List_Pointer_Fast(v->SS,i), - (double*)List_Pointer_Fast(v->SS,i+4), - (double*)List_Pointer_Fast(v->SS,i+8), - (double*)List_Pointer_Fast(v->SS,i+12)); - } - if(v->NbVS){ - nb = List_Nbr(v->VS) / v->NbVS ; - for(i = 0 ; i < List_Nbr(v->VS) ; i+=nb) - Stat_VectorSimplex(v, 4, nb-12, - (double*)List_Pointer_Fast(v->VS,i), - (double*)List_Pointer_Fast(v->VS,i+4), - (double*)List_Pointer_Fast(v->VS,i+8), - (double*)List_Pointer_Fast(v->VS,i+12)); - } - if(v->NbTS){ - nb = List_Nbr(v->TS) / v->NbTS ; - for(i = 0 ; i < List_Nbr(v->TS) ; i+=nb) - Stat_TensorSimplex(v, 4, nb-12, - (double*)List_Pointer_Fast(v->TS,i), - (double*)List_Pointer_Fast(v->TS,i+4), - (double*)List_Pointer_Fast(v->TS,i+8), - (double*)List_Pointer_Fast(v->TS,i+12)); - } + Stat_List(v, v->SP, 0, v->NbSP, 1); + Stat_List(v, v->VP, 1, v->NbVP, 1); + Stat_List(v, v->TP, 2, v->NbTP, 1); + + // Lines + Stat_List(v, v->SL, 0, v->NbSL, 2); + Stat_List(v, v->VL, 1, v->NbVL, 2); + Stat_List(v, v->TL, 2, v->NbTL, 2); + + // Triangles + Stat_List(v, v->ST, 0, v->NbST, 3); + Stat_List(v, v->VT, 1, v->NbVT, 3); + Stat_List(v, v->TT, 2, v->NbTT, 3); + + // Quadrangles + Stat_List(v, v->SQ, 0, v->NbSQ, 4); + Stat_List(v, v->VQ, 1, v->NbVQ, 4); + Stat_List(v, v->TQ, 2, v->NbTQ, 4); + + // Tetrahedra + Stat_List(v, v->SS, 0, v->NbSS, 4); + Stat_List(v, v->VS, 1, v->NbVS, 4); + Stat_List(v, v->TS, 2, v->NbTS, 4); + + // Hexahedra + Stat_List(v, v->SH, 0, v->NbSH, 8); + Stat_List(v, v->VH, 1, v->NbVH, 8); + Stat_List(v, v->TH, 2, v->NbTH, 8); + + // Prisms + Stat_List(v, v->SI, 0, v->NbSI, 6); + Stat_List(v, v->VI, 1, v->NbVI, 6); + Stat_List(v, v->TI, 2, v->NbTI, 6); + + // Pyramids + Stat_List(v, v->SY, 0, v->NbSY, 5); + Stat_List(v, v->VY, 1, v->NbVY, 5); + Stat_List(v, v->TY, 2, v->NbTY, 5); // Dummy time values if using old parsed format if(v->Time && !List_Nbr(v->Time)){ @@ -434,7 +367,11 @@ void FreeView(Post_View *v){ List_Delete(v->SP); List_Delete(v->VP); List_Delete(v->TP); List_Delete(v->SL); List_Delete(v->VL); List_Delete(v->TL); List_Delete(v->ST); List_Delete(v->VT); List_Delete(v->TT); + List_Delete(v->SQ); List_Delete(v->VQ); List_Delete(v->TQ); List_Delete(v->SS); List_Delete(v->VS); List_Delete(v->TS); + List_Delete(v->SH); List_Delete(v->VH); List_Delete(v->TH); + List_Delete(v->SI); List_Delete(v->VI); List_Delete(v->TI); + List_Delete(v->SY); List_Delete(v->VY); List_Delete(v->TY); List_Delete(v->T2D); List_Delete(v->T2C); List_Delete(v->T3D); List_Delete(v->T3C); //set to NULL in case we don't free v (e.g. when doing a 'reload') @@ -444,7 +381,11 @@ void FreeView(Post_View *v){ v->SP = v->VP = v->TP = NULL; v->SL = v->VL = v->TL = NULL; v->ST = v->VT = v->TT = NULL; + v->SQ = v->VQ = v->TQ = NULL; v->SS = v->VS = v->TS = NULL; + v->SH = v->VH = v->TH = NULL; + v->SI = v->VI = v->TI = NULL; + v->SY = v->VY = v->TY = NULL; v->T2D = v->T2C = NULL; v->T3D = v->T3C = NULL; v->reset_normals(); @@ -486,7 +427,11 @@ void CopyViewOptions(Post_View *src, Post_View *dest){ dest->DrawPoints = src->DrawPoints; dest->DrawLines = src->DrawLines; dest->DrawTriangles = src->DrawTriangles; + dest->DrawQuadrangles = src->DrawQuadrangles; dest->DrawTetrahedra = src->DrawTetrahedra; + dest->DrawHexahedra = src->DrawHexahedra; + dest->DrawPrisms = src->DrawPrisms; + dest->DrawPyramids = src->DrawPyramids; dest->DrawScalars = src->DrawScalars; dest->DrawVectors = src->DrawVectors; dest->DrawTensors = src->DrawTensors; @@ -606,7 +551,21 @@ void Read_View(FILE *file, char *filename){ v = BeginView(0); - if(version >= 1.1){ + if(version >= 1.2){ + fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d " + "%d %d %d %d %d %d %d %d %d %d %d %d %d\n", + name, &v->NbTimeStep, + &v->NbSP, &v->NbVP, &v->NbTP, + &v->NbSL, &v->NbVL, &v->NbTL, + &v->NbST, &v->NbVT, &v->NbTT, + &v->NbSQ, &v->NbVQ, &v->NbTQ, + &v->NbSS, &v->NbVS, &v->NbTS, + &v->NbSH, &v->NbVH, &v->NbTH, + &v->NbSI, &v->NbVI, &v->NbTI, + &v->NbSY, &v->NbVY, &v->NbTY, + &v->NbT2, &t2l, &v->NbT3, &t3l); + } + else if(version >= 1.1){ fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", name, &v->NbTimeStep, &v->NbSP, &v->NbVP, &v->NbTP, @@ -671,6 +630,16 @@ void Read_View(FILE *file, char *filename){ nb = v->NbTT ? v->NbTT * (v->NbTimeStep*3*9+9) : 0 ; v->TT = List_CreateFromFile(nb, size, file, format, swap); + // Quadrangles + nb = v->NbSQ ? v->NbSQ * (v->NbTimeStep*4 +12) : 0 ; + v->SQ = List_CreateFromFile(nb, size, file, format, swap); + + nb = v->NbVQ ? v->NbVQ * (v->NbTimeStep*4*3+12) : 0 ; + v->VQ = List_CreateFromFile(nb, size, file, format, swap); + + nb = v->NbTQ ? v->NbTQ * (v->NbTimeStep*4*9+12) : 0 ; + v->TQ = List_CreateFromFile(nb, size, file, format, swap); + // Tetrahedra nb = v->NbSS ? v->NbSS * (v->NbTimeStep*4 +12) : 0 ; v->SS = List_CreateFromFile(nb, size, file, format, swap); @@ -681,6 +650,36 @@ void Read_View(FILE *file, char *filename){ nb = v->NbTS ? v->NbTS * (v->NbTimeStep*4*9+12) : 0 ; v->TS = List_CreateFromFile(nb, size, file, format, swap); + // Hexahedra + nb = v->NbSH ? v->NbSH * (v->NbTimeStep*8 +24) : 0 ; + v->SH = List_CreateFromFile(nb, size, file, format, swap); + + nb = v->NbVH ? v->NbVH * (v->NbTimeStep*8*3+24) : 0 ; + v->VH = List_CreateFromFile(nb, size, file, format, swap); + + nb = v->NbTH ? v->NbTH * (v->NbTimeStep*8*9+24) : 0 ; + v->TH = List_CreateFromFile(nb, size, file, format, swap); + + // Prisms + nb = v->NbSI ? v->NbSI * (v->NbTimeStep*6 +18) : 0 ; + v->SI = List_CreateFromFile(nb, size, file, format, swap); + + nb = v->NbVI ? v->NbVI * (v->NbTimeStep*6*3+18) : 0 ; + v->VI = List_CreateFromFile(nb, size, file, format, swap); + + nb = v->NbTI ? v->NbTI * (v->NbTimeStep*6*9+18) : 0 ; + v->TI = List_CreateFromFile(nb, size, file, format, swap); + + // Pyramids + nb = v->NbSY ? v->NbSY * (v->NbTimeStep*5 +15) : 0 ; + v->SY = List_CreateFromFile(nb, size, file, format, swap); + + nb = v->NbVY ? v->NbVY * (v->NbTimeStep*5*3+15) : 0 ; + v->VY = List_CreateFromFile(nb, size, file, format, swap); + + nb = v->NbTY ? v->NbTY * (v->NbTimeStep*5*9+15) : 0 ; + v->TY = List_CreateFromFile(nb, size, file, format, swap); + // Strings nb = v->NbT2 ? v->NbT2 * 4 : 0 ; v->T2D = List_CreateFromFile(nb, size, file, format, swap); @@ -691,23 +690,36 @@ void Read_View(FILE *file, char *filename){ v->T3C = List_CreateFromFile(t3l, sizeof(char), file, format, swap); - Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d %d %d", + Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d " + "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", name, v->NbTimeStep, v->NbSP, v->NbVP, v->NbTP, v->NbSL, v->NbVL, v->NbTL, v->NbST, v->NbVT, v->NbTT, + v->NbSQ, v->NbVQ, v->NbTQ, v->NbSS, v->NbVS, v->NbTS, + v->NbSH, v->NbVH, v->NbTH, + v->NbSI, v->NbVI, v->NbTI, + v->NbSY, v->NbVY, v->NbTY, v->NbT2, v->NbT3); Msg(DEBUG, "List_Nbrs: " "SP%d VP%d TP%d " "SL%d VL%d TL%d " "ST%d VT%d TT%d " + "SQ%d VQ%d TQ%d " "SS%d VS%d TS%d " + "SH%d VH%d TH%d " + "SI%d VI%d TI%d " + "SY%d VY%d TY%d " "T2D%d T2C%d T3D%d T3C%d", List_Nbr(v->SP), List_Nbr(v->VP), List_Nbr(v->TP), List_Nbr(v->SL), List_Nbr(v->VL), List_Nbr(v->TL), List_Nbr(v->ST), List_Nbr(v->VT), List_Nbr(v->TT), + List_Nbr(v->SQ), List_Nbr(v->VQ), List_Nbr(v->TQ), List_Nbr(v->SS), List_Nbr(v->VS), List_Nbr(v->TS), + List_Nbr(v->SH), List_Nbr(v->VH), List_Nbr(v->TH), + List_Nbr(v->SI), List_Nbr(v->VI), List_Nbr(v->TI), + List_Nbr(v->SY), List_Nbr(v->VY), List_Nbr(v->TY), List_Nbr(v->T2D), List_Nbr(v->T2C), List_Nbr(v->T3D), List_Nbr(v->T3C)); EndView(v, 1, filename, name); @@ -741,8 +753,8 @@ void Write_View(int Flag_BIN, Post_View *v, char *filename){ else file = stdout; - fprintf(file, "$PostFormat /* Gmsh 1.1, %s */\n", Flag_BIN ? "binary" : "ascii") ; - fprintf(file, "1.1 %d %d\n", Flag_BIN, (int)sizeof(double)) ; + fprintf(file, "$PostFormat /* Gmsh 1.2, %s */\n", Flag_BIN ? "binary" : "ascii") ; + fprintf(file, "1.2 %d %d\n", Flag_BIN, (int)sizeof(double)) ; fprintf(file, "$EndPostFormat\n") ; for(i=0;i<(int)strlen(v->Name);i++){ @@ -753,10 +765,13 @@ void Write_View(int Flag_BIN, Post_View *v, char *filename){ fprintf(file, "$View /* %s */\n", v->Name); fprintf(file, "%s ", name); - fprintf(file, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", + fprintf(file, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d " + "%d %d %d %d %d %d %d %d %d %d %d %d\n", List_Nbr(v->Time), v->NbSP, v->NbVP, v->NbTP, v->NbSL, v->NbVL, v->NbTL, - v->NbST, v->NbVT, v->NbTT, v->NbSS, v->NbVS, v->NbTS, + v->NbST, v->NbVT, v->NbTT, v->NbSQ, v->NbVQ, v->NbTQ, + v->NbSS, v->NbVS, v->NbTS, v->NbSH, v->NbVH, v->NbTH, + v->NbSI, v->NbVI, v->NbTI, v->NbSY, v->NbVY, v->NbTY, v->NbT2, List_Nbr(v->T2C), v->NbT3, List_Nbr(v->T3C)); if(Flag_BIN){ f = LIST_FORMAT_BINARY; @@ -766,11 +781,21 @@ void Write_View(int Flag_BIN, Post_View *v, char *filename){ f = LIST_FORMAT_ASCII; List_WriteToFile(v->Time, file, f); List_WriteToFile(v->SP, file, f); List_WriteToFile(v->VP, file, f); - List_WriteToFile(v->TP, file, f); List_WriteToFile(v->SL, file, f); - List_WriteToFile(v->VL, file, f); List_WriteToFile(v->TL, file, f); + List_WriteToFile(v->TP, file, f); + List_WriteToFile(v->SL, file, f); List_WriteToFile(v->VL, file, f); + List_WriteToFile(v->TL, file, f); List_WriteToFile(v->ST, file, f); List_WriteToFile(v->VT, file, f); - List_WriteToFile(v->TT, file, f); List_WriteToFile(v->SS, file, f); - List_WriteToFile(v->VS, file, f); List_WriteToFile(v->TS, file, f); + List_WriteToFile(v->TT, file, f); + List_WriteToFile(v->SQ, file, f); List_WriteToFile(v->VQ, file, f); + List_WriteToFile(v->TQ, file, f); + List_WriteToFile(v->SS, file, f); List_WriteToFile(v->VS, file, f); + List_WriteToFile(v->TS, file, f); + List_WriteToFile(v->SH, file, f); List_WriteToFile(v->VH, file, f); + List_WriteToFile(v->TH, file, f); + List_WriteToFile(v->SI, file, f); List_WriteToFile(v->VI, file, f); + List_WriteToFile(v->TI, file, f); + List_WriteToFile(v->SY, file, f); List_WriteToFile(v->VY, file, f); + List_WriteToFile(v->TY, file, f); List_WriteToFile(v->T2D, file, f); List_WriteToFile(v->T2C, file, f); List_WriteToFile(v->T3D, file, f); List_WriteToFile(v->T3C, file, f); fprintf(file, "\n"); @@ -1058,10 +1083,26 @@ void Post_View :: transform (double mat[3][3]){ nb = List_Nbr(ST) / NbST ; transform_list(ST, NbTimeStep, 3, nb, mat); } + if(NbSQ){ + nb = List_Nbr(SQ) / NbSQ ; + transform_list(SQ, NbTimeStep, 4, nb, mat); + } if(NbSS){ nb = List_Nbr(SS) / NbSS ; transform_list(SS, NbTimeStep, 4, nb, mat); } + if(NbSH){ + nb = List_Nbr(SH) / NbSH ; + transform_list(SH, NbTimeStep, 8, nb, mat); + } + if(NbSI){ + nb = List_Nbr(SI) / NbSI ; + transform_list(SI, NbTimeStep, 6, nb, mat); + } + if(NbSY){ + nb = List_Nbr(SY) / NbSY ; + transform_list(SY, NbTimeStep, 5, nb, mat); + } if(NbVP){ @@ -1076,9 +1117,25 @@ void Post_View :: transform (double mat[3][3]){ nb = List_Nbr(VT) / NbVT ; transform_list(VT, NbTimeStep, 3, nb, mat); } + if(NbVQ){ + nb = List_Nbr(VQ) / NbVQ ; + transform_list(VQ, NbTimeStep, 4, nb, mat); + } if(NbVS){ nb = List_Nbr(VS) / NbVS ; transform_list(VS, NbTimeStep, 4, nb, mat); } + if(NbVH){ + nb = List_Nbr(VH) / NbVH ; + transform_list(VH, NbTimeStep, 8, nb, mat); + } + if(NbVI){ + nb = List_Nbr(VI) / NbVI ; + transform_list(VI, NbTimeStep, 6, nb, mat); + } + if(NbVY){ + nb = List_Nbr(VY) / NbVY ; + transform_list(VY, NbTimeStep, 5, nb, mat); + } } diff --git a/Common/Views.h b/Common/Views.h index c1aa2b744add084d7cc894f85eaa382a6645ef7d..6f9581a7b43f349d7e419239b9685373f130444f 100644 --- a/Common/Views.h +++ b/Common/Views.h @@ -41,8 +41,16 @@ class Post_View{ List_T *SL, *VL, *TL; // lines int NbST, NbVT, NbTT; List_T *ST, *VT, *TT; // triangles + int NbSQ, NbVQ, NbTQ; + List_T *SQ, *VQ, *TQ; // quadrangles int NbSS, NbVS, NbTS; List_T *SS, *VS, *TS; // tetrahedra + int NbSH, NbVH, NbTH; + List_T *SH, *VH, *TH; // hexahedra + int NbSI, NbVI, NbTI; + List_T *SI, *VI, *TI; // prisms + int NbSY, NbVY, NbTY; + List_T *SY, *VY, *TY; // pyramids int NbT2, NbT3; List_T *T2D, *T2C, *T3D, *T3C; // 2D and 3D text strings @@ -59,7 +67,8 @@ class Post_View{ int ArrowType, ArrowLocation; int TimeStep; int DrawStrings; - int DrawPoints, DrawLines, DrawTriangles, DrawTetrahedra; + int DrawPoints, DrawLines, DrawTriangles, DrawQuadrangles; + int DrawTetrahedra, DrawHexahedra, DrawPrisms, DrawPyramids; int DrawScalars, DrawVectors, DrawTensors; int Boundary, Grid, PointType; double PointSize, LineWidth; diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 3e80da30b6279e0403fef72ba8b84c30b19d864d..c2b13fd913ee291b1a42ae5cd7fbdbee83a07fb1 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.137 2002-08-07 00:30:25 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.138 2002-09-01 21:54:10 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -2391,16 +2391,28 @@ void view_options_ok_cb(CALLBACK_ARGS){ opt_view_draw_triangles(i, GMSH_SET, WID->view_butt[15]->value()); if(force || WID->view_butt[16]->changed()) - opt_view_draw_tetrahedra(i, GMSH_SET, WID->view_butt[16]->value()); + opt_view_draw_quadrangles(i, GMSH_SET, WID->view_butt[16]->value()); if(force || WID->view_butt[17]->changed()) - opt_view_draw_scalars(i, GMSH_SET, WID->view_butt[17]->value()); + opt_view_draw_tetrahedra(i, GMSH_SET, WID->view_butt[17]->value()); if(force || WID->view_butt[18]->changed()) - opt_view_draw_vectors(i, GMSH_SET, WID->view_butt[18]->value()); + opt_view_draw_hexahedra(i, GMSH_SET, WID->view_butt[18]->value()); if(force || WID->view_butt[19]->changed()) - opt_view_draw_tensors(i, GMSH_SET, WID->view_butt[19]->value()); + opt_view_draw_prisms(i, GMSH_SET, WID->view_butt[19]->value()); + + if(force || WID->view_butt[20]->changed()) + opt_view_draw_pyramids(i, GMSH_SET, WID->view_butt[20]->value()); + + if(force || WID->view_butt[21]->changed()) + opt_view_draw_scalars(i, GMSH_SET, WID->view_butt[21]->value()); + + if(force || WID->view_butt[22]->changed()) + opt_view_draw_vectors(i, GMSH_SET, WID->view_butt[22]->value()); + + if(force || WID->view_butt[23]->changed()) + opt_view_draw_tensors(i, GMSH_SET, WID->view_butt[23]->value()); // view_values diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index e5b75d380a22a6de55c9a81cf84ac8f0e890ab10..7fe09c1e16564f886fab6eb901a4702e2b2d4210 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.193 2002-08-26 17:41:32 geuzaine Exp $ +// $Id: GUI.cpp,v 1.194 2002-09-01 21:54:10 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -1753,8 +1753,12 @@ void GUI::create_statistics_window(){ stat_value[num++] = new Fl_Output(2*WB, 2*WB+2*BH, IW, BH, "Visible points"); stat_value[num++] = new Fl_Output(2*WB, 2*WB+3*BH, IW, BH, "Visible lines"); stat_value[num++] = new Fl_Output(2*WB, 2*WB+4*BH, IW, BH, "Visible triangles"); - stat_value[num++] = new Fl_Output(2*WB, 2*WB+5*BH, IW, BH, "Visible tetrahedra"); - stat_value[num++] = new Fl_Output(2*WB, 2*WB+6*BH, IW, BH, "Visible strings"); + stat_value[num++] = new Fl_Output(2*WB, 2*WB+5*BH, IW, BH, "Visible quadrangles"); + stat_value[num++] = new Fl_Output(2*WB, 2*WB+6*BH, IW, BH, "Visible tetrahedra"); + stat_value[num++] = new Fl_Output(2*WB, 2*WB+7*BH, IW, BH, "Visible hexahedra"); + stat_value[num++] = new Fl_Output(2*WB, 2*WB+8*BH, IW, BH, "Visible prisms"); + stat_value[num++] = new Fl_Output(2*WB, 2*WB+9*BH, IW, BH, "Visible pyramids"); + stat_value[num++] = new Fl_Output(2*WB, 2*WB+10*BH, IW, BH, "Visible strings"); o->end(); } o->end(); @@ -1831,29 +1835,49 @@ void GUI::set_statistics(){ p[1] += v->NbSP + v->NbVP + v->NbTP; p[2] += v->NbSL + v->NbVL + v->NbTL; p[3] += v->NbST + v->NbVT + v->NbTT; - p[4] += v->NbSS + v->NbVS + v->NbTS; - p[5] += v->NbT2 + v->NbT3; + p[4] += v->NbSQ + v->NbVQ + v->NbTQ; + p[5] += v->NbSS + v->NbVS + v->NbTS; + p[6] += v->NbSH + v->NbVH + v->NbTH; + p[7] += v->NbSI + v->NbVI + v->NbTI; + p[8] += v->NbSY + v->NbVY + v->NbTY; + p[9] += v->NbT2 + v->NbT3; if(v->Visible){ - if(v->DrawPoints) p[6] += (v->DrawScalars ? v->NbSP : 0) + - (v->DrawVectors ? v->NbVP : 0) + - (v->DrawTensors ? v->NbTP : 0) ; - if(v->DrawLines) p[7] += (v->DrawScalars ? v->NbSL : 0) + - (v->DrawVectors ? v->NbVL : 0) + - (v->DrawTensors ? v->NbTL : 0) ; - if(v->DrawTriangles) p[8] += (v->DrawScalars ? v->NbST : 0) + - (v->DrawVectors ? v->NbVT : 0) + - (v->DrawTensors ? v->NbTT : 0) ; - if(v->DrawTetrahedra) p[9] += (v->DrawScalars ? v->NbSS : 0) + - (v->DrawVectors ? v->NbVS : 0) + - (v->DrawTensors ? v->NbTS : 0) ; - if(v->DrawStrings) p[10] += v->NbT2 + v->NbT3 ; + if(v->DrawPoints) p[10] += (v->DrawScalars ? v->NbSP : 0) + + (v->DrawVectors ? v->NbVP : 0) + + (v->DrawTensors ? v->NbTP : 0) ; + if(v->DrawLines) p[11] += (v->DrawScalars ? v->NbSL : 0) + + (v->DrawVectors ? v->NbVL : 0) + + (v->DrawTensors ? v->NbTL : 0) ; + if(v->DrawTriangles) p[12] += (v->DrawScalars ? v->NbST : 0) + + (v->DrawVectors ? v->NbVT : 0) + + (v->DrawTensors ? v->NbTT : 0) ; + if(v->DrawQuadrangles) p[13] += (v->DrawScalars ? v->NbSQ : 0) + + (v->DrawVectors ? v->NbVQ : 0) + + (v->DrawTensors ? v->NbTQ : 0) ; + if(v->DrawTetrahedra) p[14] += (v->DrawScalars ? v->NbSS : 0) + + (v->DrawVectors ? v->NbVS : 0) + + (v->DrawTensors ? v->NbTS : 0) ; + if(v->DrawHexahedra) p[15] += (v->DrawScalars ? v->NbSH : 0) + + (v->DrawVectors ? v->NbVH : 0) + + (v->DrawTensors ? v->NbTH : 0) ; + if(v->DrawPrisms) p[16] += (v->DrawScalars ? v->NbSI : 0) + + (v->DrawVectors ? v->NbVI : 0) + + (v->DrawTensors ? v->NbTI : 0) ; + if(v->DrawPyramids) p[17] += (v->DrawScalars ? v->NbSY : 0) + + (v->DrawVectors ? v->NbVY : 0) + + (v->DrawTensors ? v->NbTY : 0) ; + if(v->DrawStrings) p[18] += v->NbT2 + v->NbT3 ; } } - sprintf(label[num], "%g/%g", p[6],p[1]); stat_value[num]->value(label[num]); num++; - sprintf(label[num], "%g/%g", p[7],p[2]); stat_value[num]->value(label[num]); num++; - sprintf(label[num], "%g/%g", p[8],p[3]); stat_value[num]->value(label[num]); num++; - sprintf(label[num], "%g/%g", p[9],p[4]); stat_value[num]->value(label[num]); num++; - sprintf(label[num], "%g/%g", p[10],p[5]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[10],p[1]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[11],p[2]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[12],p[3]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[13],p[4]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[14],p[5]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[15],p[6]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[16],p[7]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[17],p[8]); stat_value[num]->value(label[num]); num++; + sprintf(label[num], "%g/%g", p[18],p[9]); stat_value[num]->value(label[num]); num++; } @@ -2317,14 +2341,18 @@ void GUI::create_view_options_window(int num){ view_value[i]->callback(set_changed_cb, 0); } - view_butt[13] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW/2-WB, BH, "Draw points"); - view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW/2-WB, BH, "Draw lines"); - view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW/2-WB, BH, "Draw triangles"); - view_butt[16] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW/2-WB, BH, "Draw tetrahedra"); - view_butt[17] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW/2-WB, BH, "Draw scalar values"); - view_butt[18] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW/2-WB, BH, "Draw vector values"); - view_butt[19] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW/2-WB, BH, "Draw tensor values"); - for(i=13 ; i<=19 ; i++){ + view_butt[13] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW/2-WB, BH, "Points"); + view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW/2-WB, BH, "Lines"); + view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW/2-WB, BH, "Triangles"); + view_butt[16] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW/2-WB, BH, "Quadrangles"); + view_butt[17] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW/2-WB, BH, "Tetrahedra"); + view_butt[18] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW/2-WB, BH, "Hexahedra"); + view_butt[19] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW/2-WB, BH, "Prisms"); + view_butt[20] = new Fl_Check_Button(2*WB, 2*WB+8*BH, BW/2-WB, BH, "Pyramids"); + view_butt[21] = new Fl_Check_Button(width/2, 2*WB+7*BH, BW/2-WB, BH, "Show scalar values"); + view_butt[22] = new Fl_Check_Button(width/2, 2*WB+8*BH, BW/2-WB, BH, "Show vector values"); + view_butt[23] = new Fl_Check_Button(width/2, 2*WB+9*BH, BW/2-WB, BH, "Show tensor values"); + for(i=13 ; i<=23 ; i++){ view_butt[i]->type(FL_TOGGLE_BUTTON); view_butt[i]->down_box(TOGGLE_BOX); view_butt[i]->selection_color(TOGGLE_COLOR); @@ -2585,7 +2613,11 @@ void GUI::update_view_window(int num){ opt_view_draw_points(num, GMSH_GUI, 0); opt_view_draw_lines(num, GMSH_GUI, 0); opt_view_draw_triangles(num, GMSH_GUI, 0); + opt_view_draw_quadrangles(num, GMSH_GUI, 0); opt_view_draw_tetrahedra(num, GMSH_GUI, 0); + opt_view_draw_hexahedra(num, GMSH_GUI, 0); + opt_view_draw_prisms(num, GMSH_GUI, 0); + opt_view_draw_pyramids(num, GMSH_GUI, 0); opt_view_draw_scalars(num, GMSH_GUI, 0); opt_view_draw_vectors(num, GMSH_GUI, 0); opt_view_draw_tensors(num, GMSH_GUI, 0); diff --git a/Graphics/Draw.h b/Graphics/Draw.h index 69aad5ea858ed30a3efcb22b4e76c67556d78f3f..6daad72a87688be23688f2a200c65fa2a86ec454 100644 --- a/Graphics/Draw.h +++ b/Graphics/Draw.h @@ -44,7 +44,7 @@ void set_s(int i, double val); void Replot(void); -void RaiseFill (int i, double Val, double ValMin, double Raise[3][5]); +void RaiseFill (int i, double Val, double ValMin, double Raise[3][8]); void Palette1 (Post_View * View, int nbi, int i); void Palette2 (Post_View * View, double min, double max, double val); void ColorSwitch(int i); @@ -71,17 +71,17 @@ void Draw_Text2D3D(int dim, int timestep, int nb, List_T *td, List_T *tc); void Draw_Scales(void); void Draw_Axes (double s); void Draw_SmallAxes(void); -void Draw_Point(int type, double size, double *x, double *y, double *z, double Raise[3][5]); -void Draw_Line (double *x, double *y, double *z, double Raise[3][5]); +void Draw_Point(int type, double size, double *x, double *y, double *z, double Raise[3][8]); +void Draw_Line (double *x, double *y, double *z, double Raise[3][8]); void Draw_Triangle (double *x, double *y, double *z,double *n, - double Raise[3][5], int shade); + double Raise[3][8], int shade); void Draw_Quadrangle (double *x, double *y, double *z, double *n, - double Raise[3][5], int shade); -void Draw_Polygon (int n, double *x, double *y, double *z, double Raise[3][5]); + double Raise[3][8], int shade); +void Draw_Polygon (int n, double *x, double *y, double *z, double Raise[3][8]); void Draw_Vector (int Type, int Fill, double x, double y, double z, double d, double dx, double dy, double dz, - double Raise[3][5]); + double Raise[3][8]); void Draw_Mesh_Volumes(void *a, void *b); void Draw_Mesh_Surfaces(void *a, void *b); @@ -97,41 +97,77 @@ void Draw_Hexahedron_Volume (void *a, void *b); void Draw_Prism_Volume (void *a, void *b); void Draw_Pyramid_Volume (void *a, void *b); -void Draw_ScalarPoint(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], +void Draw_ScalarPoint(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_VectorPoint(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_TensorPoint(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); -void Draw_ScalarLine(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], +void Draw_ScalarLine(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_VectorLine(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_TensorLine(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_ScalarTriangle(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_VectorTriangle(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_TensorTriangle(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_VectorTetrahedron(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); void Draw_TensorTetrahedron(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], + double ValMin, double ValMax, double Raise[3][8], double *X, double *Y, double *Z, double *V); +void Draw_ScalarQuadrangle(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_VectorQuadrangle(Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_TensorQuadrangle(Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_ScalarHexahedron(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_VectorHexahedron(Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_TensorHexahedron(Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_ScalarPrism(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_VectorPrism(Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_TensorPrism(Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_ScalarPyramid(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_VectorPyramid(Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); +void Draw_TensorPyramid(Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V); #endif diff --git a/Graphics/Entity.cpp b/Graphics/Entity.cpp index ee52857dd2488418f7b132f9fbc94ce57aaff6a5..ec5c71e6fe84c36f5df8d64232a98db2a48f0971 100644 --- a/Graphics/Entity.cpp +++ b/Graphics/Entity.cpp @@ -1,4 +1,4 @@ -// $Id: Entity.cpp,v 1.19 2002-06-16 03:53:33 geuzaine Exp $ +// $Id: Entity.cpp,v 1.20 2002-09-01 21:54:10 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -28,7 +28,7 @@ extern Context_T CTX; -void Draw_Point (int type, double size, double *x, double *y, double *z, double Raise[3][5]){ +void Draw_Point (int type, double size, double *x, double *y, double *z, double Raise[3][8]){ if(type){ static GLUquadricObj *qua; static int first=1; @@ -48,7 +48,7 @@ void Draw_Point (int type, double size, double *x, double *y, double *z, double } } -void Draw_Line (double *x, double *y, double *z, double Raise[3][5]){ +void Draw_Line (double *x, double *y, double *z, double Raise[3][8]){ glBegin(GL_LINES); glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]); glVertex3d(x[1]+Raise[0][1], y[1]+Raise[1][1], z[1]+Raise[2][1]); @@ -56,7 +56,7 @@ void Draw_Line (double *x, double *y, double *z, double Raise[3][5]){ } void Draw_Triangle (double *x, double *y, double *z, double *n, - double Raise[3][5], int shade){ + double Raise[3][8], int shade){ double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3]; @@ -95,7 +95,7 @@ void Draw_Triangle (double *x, double *y, double *z, double *n, } void Draw_Quadrangle (double *x, double *y, double *z, double *n, - double Raise[3][5], int shade){ + double Raise[3][8], int shade){ double x2[3]={x[2],x[3],x[0]}; double y2[3]={y[2],y[3],y[0]}; double z2[3]={z[2],z[3],z[0]}; @@ -120,7 +120,7 @@ void Draw_Quadrangle (double *x, double *y, double *z, double *n, } void Draw_Polygon (int n, double *x, double *y, double *z, - double Raise[3][5]){ + double Raise[3][8]){ int i; glBegin(GL_POLYGON); @@ -133,7 +133,7 @@ void Draw_Polygon (int n, double *x, double *y, double *z, void Draw_Vector (int Type, int Fill, double x, double y, double z, double d, double dx, double dy, double dz, - double Raise[3][5]){ + double Raise[3][8]){ double n[3],t[3],u[3]; double l,b,c, f1, f2; diff --git a/Graphics/Iso.cpp b/Graphics/Iso.cpp index 78b3187eadd06dd6ecaae97e2567d9ff968cfd3e..90b4fc546c2d7922589419deea06243868b638dd 100644 --- a/Graphics/Iso.cpp +++ b/Graphics/Iso.cpp @@ -1,4 +1,4 @@ -// $Id: Iso.cpp,v 1.13 2002-05-20 18:28:26 geuzaine Exp $ +// $Id: Iso.cpp,v 1.14 2002-09-01 21:54:10 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -30,7 +30,7 @@ extern Context_T CTX; -void RaiseFill(int i, double Val, double ValMin, double Raise[3][5]); +void RaiseFill(int i, double Val, double ValMin, double Raise[3][8]); // Iso line computation for triangles. @@ -367,7 +367,7 @@ void IsoSimplex( Post_View *View, int preproNormals, double *X, double *Y, double *Z, double *Val, double V, double Vmin, double Vmax, - double Raise[3][5]){ + double Raise[3][8]){ int nb; double Xp[6],Yp[6],Zp[6],PVals[6]; double norms[12]; diff --git a/Graphics/Iso.h b/Graphics/Iso.h index e4b33d63ae14dd21111e20ba6a43947d11480978..b4798585c4d59f053545d176cac90c1726dfd4b6 100644 --- a/Graphics/Iso.h +++ b/Graphics/Iso.h @@ -44,6 +44,6 @@ void IsoSimplex (Post_View *View, int preproNormals, double *X, double *Y, double *Z, double *Val, double V, double Vmin, double Vmax, - double Raise[3][5]); + double Raise[3][8]); #endif diff --git a/Graphics/Makefile b/Graphics/Makefile index 7c67a16963a356bada2ba42b0edd7dc0a47be226..be8ec96ebb415601b9a216c6e113bb459bb558e9 100644 --- a/Graphics/Makefile +++ b/Graphics/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.40 2002-05-18 21:08:22 geuzaine Exp $ +# $Id: Makefile,v 1.41 2002-09-01 21:54:10 geuzaine Exp $ # # Makefile for "libGmshGraphics.a" # @@ -24,7 +24,7 @@ SRC = Draw.cpp \ Mesh.cpp \ Geom.cpp \ Post.cpp \ - PostSimplex.cpp \ + PostElement.cpp \ Iso.cpp \ Entity.cpp \ Visibility.cpp \ @@ -89,7 +89,7 @@ Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \ ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h gl2ps.h -PostSimplex.o: PostSimplex.cpp ../Common/Gmsh.h ../Common/Message.h \ +PostElement.o: PostElement.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \ ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \ diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp index 378e8bbbd61644a8cc5d6aa2f2bdcb8857fe9e49..714d84b0fd1b25a573204247b4bdf536a6a9abb7 100644 --- a/Graphics/Post.cpp +++ b/Graphics/Post.cpp @@ -1,4 +1,4 @@ -// $Id: Post.cpp,v 1.40 2002-08-29 03:55:49 geuzaine Exp $ +// $Id: Post.cpp,v 1.41 2002-09-01 21:54:10 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -31,7 +31,7 @@ extern Context_T CTX; -static double Raise[3][5]; +static double Raise[3][8]; static double RaiseFactor[3]; // Give Value from Index @@ -100,13 +100,13 @@ void Palette2(Post_View *v,double min, double max, double val){ /* val in [min,m glColor4ubv((GLubyte *) &v->CT.table[index]); } -void RaiseFill(int i, double Val, double ValMin, double Raise[3][5]){ +void RaiseFill(int i, double Val, double ValMin, double Raise[3][8]){ int j ; for(j=0 ; j<3 ; j++) Raise[j][i] = (Val-ValMin) * RaiseFactor[j] ; } -// Draw Post routines +// Compute node coordinates taking Offset and Explode into account void Get_Coords(double Explode, double *Offset, int nbnod, double *x1, double *y1, double *z1, @@ -138,6 +138,8 @@ void Get_Coords(double Explode, double *Offset, int nbnod, } } +// Compare barycenters with viewpoint (eye) + static double storedEye[3]={0.,0.,0.}; int changedEye(){ @@ -157,25 +159,21 @@ int changedEye(){ return 0; } -// to be rigorous, we should take Raise into account... - -int compareTriangleEye(const void *a, const void *b){ - double d, dq, dw, *q=(double*)a, *w=(double*)b; - double cgq[3], cgw[3]; - - cgq[0] = q[0]+q[1]+q[2]; - cgq[1] = q[3]+q[4]+q[5]; - cgq[2] = q[6]+q[7]+q[8]; - - cgw[0] = w[0]+w[1]+w[2]; - cgw[1] = w[3]+w[4]+w[5]; - cgw[2] = w[6]+w[7]+w[8]; - +// to be rigorous, we should take Raise into account + +int compareEye(double *q, double *w, int nbnodes){ + double d, dq, dw, cgq[3]={0.,0.,0.}, cgw[3]={0.,0.,0.}; + for(int i=0; i<nbnodes; i++){ + cgq[0] += q[i]; + cgq[1] += q[i+nbnodes]; + cgq[2] += q[i+2*nbnodes]; + cgw[0] += w[i]; + cgw[1] += w[i+nbnodes]; + cgw[2] += w[i+2*nbnodes]; + } prosca(storedEye,cgq,&dq); prosca(storedEye,cgw,&dw); - d = dq-dw; - if(d > 0) return 1; if(d < 0) @@ -183,33 +181,103 @@ int compareTriangleEye(const void *a, const void *b){ return 0; } -int compareTetrahedronEye(const void *a, const void *b){ - double d, dq, dw, *q=(double*)a, *w=(double*)b; - double cgq[3], cgw[3]; +int compareEye3Nodes(const void *a, const void *b){ + return compareEye((double*)a,(double*)b,3); +} - cgq[0] = q[0]+q[1]+q[2]+q[3]; - cgq[1] = q[4]+q[5]+q[6]+q[7]; - cgq[2] = q[8]+q[9]+q[10]+q[11]; +int compareEye4Nodes(const void *a, const void *b){ + return compareEye((double*)a,(double*)b,4); +} - cgw[0] = w[0]+w[1]+w[2]+w[3]; - cgw[1] = w[4]+w[5]+w[6]+w[7]; - cgw[2] = w[8]+w[9]+w[10]+w[11]; +int compareEye5Nodes(const void *a, const void *b){ + return compareEye((double*)a,(double*)b,5); +} - prosca(storedEye,cgq,&dq); - prosca(storedEye,cgw,&dw); +int compareEye6Nodes(const void *a, const void *b){ + return compareEye((double*)a,(double*)b,6); +} - d = dq-dw; +int compareEye8Nodes(const void *a, const void *b){ + return compareEye((double*)a,(double*)b,8); +} - if(d > 0) - return 1; - if(d < 0) - return -1; - return 0; +// Draw_Post + +void Draw_ScalarList(Post_View *v, double ValMin, double ValMax, double Raise[3][8], + List_T *list, int nbelm, int nbnod, int smoothnormals, + void (*draw)(Post_View *, int, double, double, double [3][8], + double *, double *, double *, double *)){ + int i, nb; + double X[8],Y[8],Z[8]; + + if(nbelm && v->DrawScalars){ + nb = List_Nbr(list) / nbelm ; + if(smoothnormals && v->Light && v->SmoothNormals && v->Changed && + v->IntervalsType != DRAW_POST_ISO){ + Msg(DEBUG, "Preprocessing of normals in view %d", v->Num); + for(i = 0 ; i < List_Nbr(list) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, nbnod, + (double*)List_Pointer_Fast(list,i), + (double*)List_Pointer_Fast(list,i+nbnod), + (double*)List_Pointer_Fast(list,i+2*nbnod), X, Y, Z); + draw(v, 1, ValMin, ValMax, Raise, X, Y, Z, + (double*)List_Pointer_Fast(list,i+3*nbnod)); + } + } + for(i = 0 ; i < List_Nbr(list) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, nbnod, + (double*)List_Pointer_Fast(list,i), + (double*)List_Pointer_Fast(list,i+nbnod), + (double*)List_Pointer_Fast(list,i+2*nbnod), X, Y, Z); + draw(v, 0, ValMin, ValMax, Raise, X, Y, Z, + (double*)List_Pointer_Fast(list,i+3*nbnod)); + } + } } -void Draw_Post (void) { - int iView,i,j,k,nb; - double ValMin,ValMax,AbsMax,X[4],Y[4],Z[4]; +void Draw_VectorList(Post_View *v, double ValMin, double ValMax, double Raise[3][8], + List_T *list, int nbelm, int nbnod, + void (*draw)(Post_View *, double, double, double [3][8], + double *, double *, double *, double *)){ + int i, nb; + double X[8],Y[8],Z[8]; + + if(nbelm && v->DrawVectors){ + nb = List_Nbr(list) / nbelm ; + for(i = 0 ; i < List_Nbr(list) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, nbnod, + (double*)List_Pointer_Fast(list,i), + (double*)List_Pointer_Fast(list,i+nbnod), + (double*)List_Pointer_Fast(list,i+2*nbnod), X, Y, Z); + draw(v, ValMin, ValMax, Raise, X, Y, Z, + (double*)List_Pointer_Fast(list,i+3*nbnod)); + } + } +} + +void Draw_TensorList(Post_View *v, double ValMin, double ValMax, double Raise[3][8], + List_T *list, int nbelm, int nbnod, + void (*draw)(Post_View *, double, double, double [3][8], + double *, double *, double *, double *)){ + int i, nb; + double X[8],Y[8],Z[8]; + + if(nbelm && v->DrawTensors){ + nb = List_Nbr(list) / nbelm ; + for(i = 0 ; i < List_Nbr(list) ; i+=nb){ + Get_Coords(v->Explode, v->Offset, nbnod, + (double*)List_Pointer_Fast(list,i), + (double*)List_Pointer_Fast(list,i+nbnod), + (double*)List_Pointer_Fast(list,i+2*nbnod), X, Y, Z); + draw(v, ValMin, ValMax, Raise, X, Y, Z, + (double*)List_Pointer_Fast(list,i+3*nbnod)); + } + } +} + +void Draw_Post(void){ + int iView,j,k,nb; + double ValMin,ValMax,AbsMax; Post_View *v; if(!CTX.post.list) return; @@ -252,23 +320,57 @@ void Draw_Post (void) { if(v->Visible && !v->Dirty){ - // sort the data % eye for transparency + // sort the data % eye for transparency. Hybrid views + // (e.g. tri+qua) or multiple views will be sorted + // incorrectly... One should have a function (plugin?) to + // merge+decompose in simplices a group of views. if(CTX.alpha && ColorTable_IsAlpha(&v->CT) && changedEye()){ Msg(DEBUG, "Sorting view %d", v->Num); - if(v->NbST && v->DrawTriangles && v->DrawScalars){ - nb = List_Nbr(v->ST) / v->NbST ; - qsort(v->ST->array,v->NbST,nb*sizeof(double),compareTriangleEye); - v->Changed = 1; // force displaylist regeneration - } - // the following is of course not rigorous (we should store - // the triangles generated during the iso computation, and - // sort these... But this is better than doing nothing :-) - if(v->NbSS && v->DrawTetrahedra && v->DrawScalars){ - nb = List_Nbr(v->SS) / v->NbSS ; - qsort(v->SS->array,v->NbSS,nb*sizeof(double),compareTetrahedronEye); - v->Changed = 1; + + if(v->DrawScalars){ + + if(v->IntervalsType != DRAW_POST_ISO){ + + if(v->NbST && v->DrawTriangles){ + nb = List_Nbr(v->ST) / v->NbST ; + qsort(v->ST->array,v->NbST,nb*sizeof(double),compareEye3Nodes); + v->Changed = 1; + } + if(v->NbSQ && v->DrawQuadrangles){ + nb = List_Nbr(v->SQ) / v->NbSQ ; + qsort(v->SQ->array,v->NbSQ,nb*sizeof(double),compareEye4Nodes); + v->Changed = 1; + } + + } + + // the following is of course not rigorous (we should store + // the triangles generated during the iso computation, and + // sort these... But this is better than doing nothing :-) + if(v->NbSS && v->DrawTetrahedra){ + nb = List_Nbr(v->SS) / v->NbSS ; + qsort(v->SS->array,v->NbSS,nb*sizeof(double),compareEye4Nodes); + v->Changed = 1; + } + if(v->NbSH && v->DrawHexahedra){ + nb = List_Nbr(v->SH) / v->NbSH ; + qsort(v->SH->array,v->NbSH,nb*sizeof(double),compareEye8Nodes); + v->Changed = 1; + } + if(v->NbSI && v->DrawPrisms){ + nb = List_Nbr(v->SI) / v->NbSI ; + qsort(v->SI->array,v->NbSI,nb*sizeof(double),compareEye6Nodes); + v->Changed = 1; + } + if(v->NbSY && v->DrawPyramids){ + nb = List_Nbr(v->SY) / v->NbSY ; + qsort(v->SY->array,v->NbSY,nb*sizeof(double),compareEye5Nodes); + v->Changed = 1; + } + } + } if(CTX.display_lists && !v->Changed && v->DisplayListNum>0){ @@ -349,185 +451,63 @@ void Draw_Post (void) { } // Points - - if(v->Type==DRAW_POST_3D && v->NbSP && v->DrawPoints && v->DrawScalars){ - nb = List_Nbr(v->SP) / v->NbSP ; - for(i = 0 ; i < List_Nbr(v->SP) ; i+=nb){ - Get_Coords(1., v->Offset, 1, - (double*)List_Pointer_Fast(v->SP,i), - (double*)List_Pointer_Fast(v->SP,i+1), - (double*)List_Pointer_Fast(v->SP,i+2), - X, Y, Z); - Draw_ScalarPoint(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->SP,i+3)); - } - } - if(v->NbVP && v->DrawPoints && v->DrawVectors){ - nb = List_Nbr(v->VP) / v->NbVP ; - for(i = 0 ; i < List_Nbr(v->VP) ; i+=nb){ - Get_Coords(1., v->Offset, 1, - (double*)List_Pointer_Fast(v->VP,i), - (double*)List_Pointer_Fast(v->VP,i+1), - (double*)List_Pointer_Fast(v->VP,i+2), - X, Y, Z); - Draw_VectorPoint(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->VP,i+3)); - } - } - if(v->NbTP && v->DrawPoints && v->DrawTensors){ - nb = List_Nbr(v->TP) / v->NbTP ; - for(i = 0 ; i < List_Nbr(v->TP) ; i+=nb){ - Get_Coords(1., v->Offset, 1, - (double*)List_Pointer_Fast(v->TP,i), - (double*)List_Pointer_Fast(v->TP,i+1), - (double*)List_Pointer_Fast(v->TP,i+2), - X, Y, Z); - Draw_TensorPoint(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->TP,i+3)); - } + if(v->DrawPoints){ + if(v->Type==DRAW_POST_3D) + Draw_ScalarList(v, ValMin, ValMax, Raise, v->SP, v->NbSP, 1, 0, Draw_ScalarPoint); + Draw_VectorList(v, ValMin, ValMax, Raise, v->VP, v->NbVP, 1, Draw_VectorPoint); + Draw_TensorList(v, ValMin, ValMax, Raise, v->TP, v->NbTP, 1, Draw_TensorPoint); } // Lines - - if(v->NbSL && v->DrawLines && v->DrawScalars){ - nb = List_Nbr(v->SL) / v->NbSL ; - for(i = 0 ; i < List_Nbr(v->SL) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 2, - (double*)List_Pointer_Fast(v->SL,i), - (double*)List_Pointer_Fast(v->SL,i+2), - (double*)List_Pointer_Fast(v->SL,i+4), - X, Y, Z); - Draw_ScalarLine(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->SL,i+6)); - } - } - if(v->NbVL && v->DrawLines && v->DrawVectors){ - nb = List_Nbr(v->VL) / v->NbVL ; - for(i = 0 ; i < List_Nbr(v->VL) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 2, - (double*)List_Pointer_Fast(v->VL,i), - (double*)List_Pointer_Fast(v->VL,i+2), - (double*)List_Pointer_Fast(v->VL,i+4), - X, Y, Z); - Draw_VectorLine(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->VL,i+6)); - } - } - if(v->NbTL && v->DrawLines && v->DrawTensors){ - nb = List_Nbr(v->TL) / v->NbTL ; - for(i = 0 ; i < List_Nbr(v->TL) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 2, - (double*)List_Pointer_Fast(v->TL,i), - (double*)List_Pointer_Fast(v->TL,i+2), - (double*)List_Pointer_Fast(v->TL,i+4), - X, Y, Z); - Draw_TensorLine(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->TL,i+6)); - } + if(v->DrawLines){ + Draw_ScalarList(v, ValMin, ValMax, Raise, v->SL, v->NbSL, 2, 0, Draw_ScalarLine); + Draw_VectorList(v, ValMin, ValMax, Raise, v->VL, v->NbVL, 2, Draw_VectorLine); + Draw_TensorList(v, ValMin, ValMax, Raise, v->TL, v->NbTL, 2, Draw_TensorLine); } // Triangles - - if(v->NbST && v->DrawTriangles && v->DrawScalars){ - nb = List_Nbr(v->ST) / v->NbST ; - if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){ - Msg(DEBUG, "Preprocessing of triangle normals in view %d", v->Num); - for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 3, - (double*)List_Pointer_Fast(v->ST,i), - (double*)List_Pointer_Fast(v->ST,i+3), - (double*)List_Pointer_Fast(v->ST,i+6), - X, Y, Z); - Draw_ScalarTriangle(v, 1, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->ST,i+9)); - } - } - for(i = 0 ; i < List_Nbr(v->ST) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 3, - (double*)List_Pointer_Fast(v->ST,i), - (double*)List_Pointer_Fast(v->ST,i+3), - (double*)List_Pointer_Fast(v->ST,i+6), - X, Y, Z); - Draw_ScalarTriangle(v, 0, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->ST,i+9)); - } + if(v->DrawTriangles){ + Draw_ScalarList(v, ValMin, ValMax, Raise, v->ST, v->NbST, 3, 1, Draw_ScalarTriangle); + Draw_VectorList(v, ValMin, ValMax, Raise, v->VT, v->NbVT, 3, Draw_VectorTriangle); + Draw_TensorList(v, ValMin, ValMax, Raise, v->TT, v->NbTT, 3, Draw_TensorTriangle); } - if(v->NbVT && v->DrawTriangles && v->DrawVectors){ - nb = List_Nbr(v->VT) / v->NbVT ; - for(i = 0 ; i < List_Nbr(v->VT) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 3, - (double*)List_Pointer_Fast(v->VT,i), - (double*)List_Pointer_Fast(v->VT,i+3), - (double*)List_Pointer_Fast(v->VT,i+6), - X, Y, Z); - Draw_VectorTriangle(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->VT,i+9)); - } - } - if(v->NbTT && v->DrawTriangles && v->DrawTensors){ - nb = List_Nbr(v->TT) / v->NbTT ; - for(i = 0 ; i < List_Nbr(v->TT) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 3, - (double*)List_Pointer_Fast(v->TT,i), - (double*)List_Pointer_Fast(v->TT,i+3), - (double*)List_Pointer_Fast(v->TT,i+6), - X, Y, Z); - Draw_TensorTriangle(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->TT,i+9)); - } + + // Quadrangles + if(v->DrawQuadrangles){ + Draw_ScalarList(v, ValMin, ValMax, Raise, v->SQ, v->NbSQ, 4, 1, Draw_ScalarQuadrangle); + Draw_VectorList(v, ValMin, ValMax, Raise, v->VQ, v->NbVQ, 4, Draw_VectorQuadrangle); + Draw_TensorList(v, ValMin, ValMax, Raise, v->TQ, v->NbTQ, 4, Draw_TensorQuadrangle); } - + // Tetrahedra + if(v->DrawTetrahedra){ + Draw_ScalarList(v, ValMin, ValMax, Raise, v->SS, v->NbSS, 4, 1, Draw_ScalarTetrahedron); + Draw_VectorList(v, ValMin, ValMax, Raise, v->VS, v->NbVS, 4, Draw_VectorTetrahedron); + Draw_TensorList(v, ValMin, ValMax, Raise, v->TS, v->NbTS, 4, Draw_TensorTetrahedron); + } - if(v->NbSS && v->DrawTetrahedra && v->DrawScalars){ - nb = List_Nbr(v->SS) / v->NbSS ; - if(v->Light && v->SmoothNormals && v->Changed && v->IntervalsType != DRAW_POST_ISO){ - Msg(DEBUG, "Preprocessing of tets normals in view %d", v->Num); - for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 4, - (double*)List_Pointer_Fast(v->SS,i), - (double*)List_Pointer_Fast(v->SS,i+4), - (double*)List_Pointer_Fast(v->SS,i+8), - X, Y, Z); - Draw_ScalarTetrahedron(v, 1, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->SS,i+12)); - } - } - for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 4, - (double*)List_Pointer_Fast(v->SS,i), - (double*)List_Pointer_Fast(v->SS,i+4), - (double*)List_Pointer_Fast(v->SS,i+8), - X, Y, Z); - Draw_ScalarTetrahedron(v, 0, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->SS,i+12)); - } + // Hexahedra + if(v->DrawHexahedra){ + Draw_ScalarList(v, ValMin, ValMax, Raise, v->SH, v->NbSH, 8, 1, Draw_ScalarHexahedron); + Draw_VectorList(v, ValMin, ValMax, Raise, v->VH, v->NbVH, 8, Draw_VectorHexahedron); + Draw_TensorList(v, ValMin, ValMax, Raise, v->TH, v->NbTH, 8, Draw_TensorHexahedron); } - if(v->NbVS && v->DrawTetrahedra && v->DrawVectors){ - nb = List_Nbr(v->VS) / v->NbVS ; - for(i = 0 ; i < List_Nbr(v->VS) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 4, - (double*)List_Pointer_Fast(v->VS,i), - (double*)List_Pointer_Fast(v->VS,i+4), - (double*)List_Pointer_Fast(v->VS,i+8), - X, Y, Z); - Draw_VectorTetrahedron(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->VS,i+12)); - } + + // Prisms + if(v->DrawPrisms){ + Draw_ScalarList(v, ValMin, ValMax, Raise, v->SI, v->NbSI, 6, 1, Draw_ScalarPrism); + Draw_VectorList(v, ValMin, ValMax, Raise, v->VI, v->NbVI, 6, Draw_VectorPrism); + Draw_TensorList(v, ValMin, ValMax, Raise, v->TI, v->NbTI, 6, Draw_TensorPrism); } - if(v->NbTS && v->DrawTetrahedra && v->DrawTensors){ - nb = List_Nbr(v->TS) / v->NbTS ; - for(i = 0 ; i < List_Nbr(v->TS) ; i+=nb){ - Get_Coords(v->Explode, v->Offset, 4, - (double*)List_Pointer_Fast(v->TS,i), - (double*)List_Pointer_Fast(v->TS,i+4), - (double*)List_Pointer_Fast(v->TS,i+8), - X, Y, Z); - Draw_TensorTetrahedron(v, ValMin, ValMax, Raise, X, Y, Z, - (double*)List_Pointer_Fast(v->TS,i+12)); - } + + // Pyramids + if(v->DrawPyramids){ + Draw_ScalarList(v, ValMin, ValMax, Raise, v->SY, v->NbSY, 5, 1, Draw_ScalarPyramid); + Draw_VectorList(v, ValMin, ValMax, Raise, v->VY, v->NbVY, 5, Draw_VectorPyramid); + Draw_TensorList(v, ValMin, ValMax, Raise, v->TY, v->NbTY, 5, Draw_TensorPyramid); } + // Strings if(v->DrawStrings){ glColor4ubv((GLubyte*)&CTX.color.text); Draw_Text2D3D(3, v->TimeStep, v->NbT3, v->T3D, v->T3C); diff --git a/Graphics/PostElement.cpp b/Graphics/PostElement.cpp new file mode 100644 index 0000000000000000000000000000000000000000..aeaa5ef268c2ea2acfd7d0a18d2e57e74fc54785 --- /dev/null +++ b/Graphics/PostElement.cpp @@ -0,0 +1,853 @@ +// $Id: PostElement.cpp,v 1.1 2002-09-01 21:54:10 geuzaine Exp $ +// +// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems to "gmsh@geuz.org". + +#include "Gmsh.h" +#include "GmshUI.h" +#include "Geo.h" +#include "Mesh.h" +#include "Draw.h" +#include "Iso.h" +#include "Context.h" +#include "Numeric.h" + +#define POINT 0 +#define LINE 1 +#define TRIANGLE 2 +#define QUADRANGLE 3 +#define TETRAHEDRON 4 +#define HEXAHEDRON 5 +#define PRISM 6 +#define PYRAMID 7 + +extern Context_T CTX; + +void Draw_ElementBoundary(int type, Post_View *View, double *X, double *Y, double *Z, + double Raise[3][8]){ + int k; + double xx[8], yy[8], zz[8]; + + glColor4ubv((GLubyte*)&CTX.color.fg); + switch(type){ + case POINT : + Draw_Point(View->PointType,View->PointSize,X,Y,Z,Raise); + break; + case LINE : + Draw_Line(X,Y,Z,Raise); + break; + case TRIANGLE : + glBegin(GL_LINE_LOOP); + for(k=0 ; k<3 ; k++) + glVertex3d(X[k]+Raise[0][k], Y[k]+Raise[1][k], Z[k]+Raise[2][k]); + glEnd(); + break; + case TETRAHEDRON : + for(k=0 ; k<4 ; k++){ + xx[k] = X[k]+Raise[0][k] ; + yy[k] = Y[k]+Raise[1][k] ; + zz[k] = Z[k]+Raise[2][k] ; + } + if(View->Light) glDisable(GL_LIGHTING); + glBegin(GL_LINES); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[2], yy[2], zz[2]); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[3], yy[3], zz[3]); + glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[2], yy[2], zz[2]); + glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[3], yy[3], zz[3]); + glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[3], yy[3], zz[3]); + glEnd(); + if(View->Light) glEnable(GL_LIGHTING); + break; + case QUADRANGLE : + glBegin(GL_LINE_LOOP); + for(k=0 ; k<4 ; k++) + glVertex3d(X[k]+Raise[0][k], Y[k]+Raise[1][k], Z[k]+Raise[2][k]); + glEnd(); + break; + case HEXAHEDRON : + for(k=0 ; k<8 ; k++){ + xx[k] = X[k]+Raise[0][k] ; + yy[k] = Y[k]+Raise[1][k] ; + zz[k] = Z[k]+Raise[2][k] ; + } + if(View->Light) glDisable(GL_LIGHTING); + glBegin(GL_LINES); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[3], yy[3], zz[3]); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[4], yy[4], zz[4]); + glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[2], yy[2], zz[2]); + glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[5], yy[5], zz[5]); + glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[3], yy[3], zz[3]); + glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[6], yy[6], zz[6]); + glVertex3d(xx[3], yy[3], zz[3]); glVertex3d(xx[7], yy[7], zz[7]); + glVertex3d(xx[4], yy[4], zz[4]); glVertex3d(xx[5], yy[5], zz[5]); + glVertex3d(xx[4], yy[4], zz[4]); glVertex3d(xx[7], yy[7], zz[7]); + glVertex3d(xx[5], yy[5], zz[5]); glVertex3d(xx[6], yy[6], zz[6]); + glVertex3d(xx[6], yy[6], zz[6]); glVertex3d(xx[7], yy[7], zz[7]); + glEnd(); + if(View->Light) glEnable(GL_LIGHTING); + break; + case PRISM : + for(k=0 ; k<6 ; k++){ + xx[k] = X[k]+Raise[0][k] ; + yy[k] = Y[k]+Raise[1][k] ; + zz[k] = Z[k]+Raise[2][k] ; + } + if(View->Light) glDisable(GL_LIGHTING); + glBegin(GL_LINES); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[2], yy[2], zz[2]); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[3], yy[3], zz[3]); + glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[2], yy[2], zz[2]); + glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[4], yy[4], zz[4]); + glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[5], yy[5], zz[5]); + glVertex3d(xx[3], yy[3], zz[3]); glVertex3d(xx[4], yy[4], zz[4]); + glVertex3d(xx[3], yy[3], zz[3]); glVertex3d(xx[5], yy[5], zz[5]); + glVertex3d(xx[4], yy[4], zz[4]); glVertex3d(xx[5], yy[5], zz[5]); + glEnd(); + if(View->Light) glEnable(GL_LIGHTING); + break; + case PYRAMID : + for(k=0 ; k<5 ; k++){ + xx[k] = X[k]+Raise[0][k] ; + yy[k] = Y[k]+Raise[1][k] ; + zz[k] = Z[k]+Raise[2][k] ; + } + if(View->Light) glDisable(GL_LIGHTING); + glBegin(GL_LINES); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]); + glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[2], yy[2], zz[2]); + glVertex3d(xx[3], yy[3], zz[3]); glVertex3d(xx[2], yy[2], zz[2]); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[3], yy[3], zz[3]); + glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[4], yy[4], zz[4]); + glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[4], yy[4], zz[4]); + glVertex3d(xx[3], yy[3], zz[3]); glVertex3d(xx[4], yy[4], zz[4]); + glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[4], yy[4], zz[4]); + glEnd(); + if(View->Light) glEnable(GL_LIGHTING); + break; + } +} + +void SaturateValues(int saturate, double min, double max, + double *v1, double *v2, int nbnod){ + int i; + if(saturate){ + for(i=0;i<nbnod;i++){ + if(v1[i] > max) v2[i] = max; + else if(v1[i] < min) v2[i] = min; + else v2[i] = v1[i]; + } + } + else{ + for(i=0;i<nbnod;i++){ + v2[i] = v1[i]; + } + } +} + +#define REORDER2(e,f) \ + Xp[0] = X[e]; Yp[0] = Y[e]; Zp[0] = Z[e]; Val[0] = vv[e]; \ + Xp[1] = X[f]; Yp[1] = Y[f]; Zp[1] = Z[f]; Val[1] = vv[f] + +#define REORDER3(e,f,g) \ + Xp[0] = X[e]; Yp[0] = Y[e]; Zp[0] = Z[e]; Val[0] = vv[e]; \ + Xp[1] = X[f]; Yp[1] = Y[f]; Zp[1] = Z[f]; Val[1] = vv[f]; \ + Xp[2] = X[g]; Yp[2] = Y[g]; Zp[2] = Z[g]; Val[2] = vv[g] + +#define REORDER4(e,f,g,h) \ + Xp[0] = X[e]; Yp[0] = Y[e]; Zp[0] = Z[e]; Val[0] = vv[e]; \ + Xp[1] = X[f]; Yp[1] = Y[f]; Zp[1] = Z[f]; Val[1] = vv[f]; \ + Xp[2] = X[g]; Yp[2] = Y[g]; Zp[2] = Z[g]; Val[2] = vv[g]; \ + Xp[3] = X[h]; Yp[3] = Y[h]; Zp[3] = Z[h]; Val[3] = vv[h] + +#define REORDER6(e,f,g,h,i,j) \ + Xp[0] = X[e]; Yp[0] = Y[e]; Zp[0] = Z[e]; Val[0] = vv[e]; \ + Xp[1] = X[f]; Yp[1] = Y[f]; Zp[1] = Z[f]; Val[1] = vv[f]; \ + Xp[2] = X[g]; Yp[2] = Y[g]; Zp[2] = Z[g]; Val[2] = vv[g]; \ + Xp[3] = X[h]; Yp[3] = Y[h]; Zp[3] = Z[h]; Val[3] = vv[h]; \ + Xp[4] = X[i]; Yp[4] = Y[i]; Zp[4] = Z[i]; Val[4] = vv[i]; \ + Xp[5] = X[j]; Yp[5] = Y[j]; Zp[5] = Z[j]; Val[5] = vv[j] + +// Scalar Elements + +void Draw_ScalarPoint(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + double d; + char Num[100]; + + if(View->Boundary > 0) return; + + d = V[View->TimeStep]; + + if(View->SaturateValues){ + if(d > ValMax) d = ValMax; + else if(d < ValMin) d = ValMin; + } + + RaiseFill(0, d, ValMin, Raise); + + if(View->ShowElement) Draw_ElementBoundary(POINT,View,X,Y,Z,Raise); + + if(d>=ValMin && d<=ValMax){ + Palette2(View,ValMin,ValMax,d); + if(View->IntervalsType == DRAW_POST_NUMERIC){ + glRasterPos3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); + sprintf(Num, View->Format, d); + Draw_String(Num); + } + else + Draw_Point(View->PointType,View->PointSize,X,Y,Z,Raise); + } +} + +void Draw_ScalarLine(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + + int i,k,nb=0; + double d; + double Xp[5],Yp[5],Zp[5],Val[5],value[5],thev; + char Num[100] ; + + double *vv = &V[2*View->TimeStep]; + + if(View->Boundary > 0){ + View->Boundary--; + int ts = View->TimeStep; + View->TimeStep = 0; + Draw_ScalarPoint(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//0 + Draw_ScalarPoint(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//1 + View->TimeStep = ts; + View->Boundary++; + return; + } + + SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 2); + + for(k=0 ; k<2 ; k++) RaiseFill(k, Val[k], ValMin, Raise); + + if(View->ShowElement) Draw_ElementBoundary(LINE,View,X,Y,Z,Raise); + + if(View->IntervalsType == DRAW_POST_NUMERIC){ + + d = (Val[0]+Val[1]) / 2.; + + if(d >= ValMin && d <= ValMax){ + Palette2(View,ValMin,ValMax,d); + sprintf(Num, View->Format, d); + glRasterPos3d((X[0]+Raise[0][0] + X[1]+Raise[0][1])/2., + (Y[0]+Raise[1][0] + Y[1]+Raise[1][1])/2., + (Z[0]+Raise[2][0] + Z[1]+Raise[2][1])/2.); + Draw_String(Num); + } + + } + else{ + + if(View->IntervalsType==DRAW_POST_CONTINUOUS){ + + if(Val[0] >= ValMin && Val[0] <= ValMax && + Val[1] >= ValMin && Val[1] <= ValMax){ + glBegin(GL_LINES); + Palette2(View,ValMin,ValMax,Val[0]); + glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); + Palette2(View,ValMin,ValMax,Val[1]); + glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]); + glEnd(); + } + else{ + //todo + } + + } + else{ + for(k=0 ; k<View->NbIso ; k++){ + Palette1(View,View->NbIso,k); + if(View->IntervalsType==DRAW_POST_DISCRETE){ + CutLine1D(X,Y,Z,&Val[0], + View->GVFI(ValMin,ValMax,View->NbIso+1,k), + View->GVFI(ValMin,ValMax,View->NbIso+1,k+1), + ValMin,ValMax,Xp,Yp,Zp,&nb,value); + if(nb == 2){ + for(i=0;i<2;i++) RaiseFill(i,value[i],ValMin,Raise); + Draw_Line(Xp,Yp,Zp,Raise); + } + } + else{ + thev = View->GVFI(ValMin,ValMax,View->NbIso,k); + CutLine0D(X,Y,Z,&Val[0], + thev, ValMin,ValMax,Xp,Yp,Zp,&nb); + if(nb){ + RaiseFill(0,thev,ValMin,Raise); + Draw_Point(View->PointType,View->PointSize,Xp,Yp,Zp,Raise); + } + } + } + } + + } + +} + +void Draw_ScalarTriangle(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + + int i, k, nb=0; + double d; + double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3], norms[9]; + double Xp[5],Yp[5],Zp[5],Val[3],value[5],thev; + char Num[100] ; + + double *vv = &V[3*View->TimeStep]; + + if(!preproNormals && View->Boundary > 0){ + View->Boundary--; + int ts = View->TimeStep; + View->TimeStep = 0; + Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//01 + Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//12 + REORDER2(0,2); + Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//02 + View->TimeStep = ts; + View->Boundary++; + return; + } + + SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 3); + + for(k=0 ; k<3 ; k++) RaiseFill(k, Val[k], ValMin, Raise); + + if(View->Light){ + + x1x0 = (X[1]+Raise[0][1]) - (X[0]+Raise[0][0]); + y1y0 = (Y[1]+Raise[1][1]) - (Y[0]+Raise[1][0]); + z1z0 = (Z[1]+Raise[2][1]) - (Z[0]+Raise[2][0]); + x2x0 = (X[2]+Raise[0][2]) - (X[0]+Raise[0][0]); + y2y0 = (Y[2]+Raise[1][2]) - (Y[0]+Raise[1][0]); + z2z0 = (Z[2]+Raise[2][2]) - (Z[0]+Raise[2][0]); + nn[0] = y1y0 * z2z0 - z1z0 * y2y0 ; + nn[1] = z1z0 * x2x0 - x1x0 * z2z0 ; + nn[2] = x1x0 * y2y0 - y1y0 * x2x0 ; + + if(View->SmoothNormals){ + if(preproNormals){ + for(i=0;i<3;i++){ + View->add_normal(X[i]+Raise[0][i],Y[i]+Raise[1][i],Z[i]+Raise[2][i], + nn[0],nn[1],nn[2]); + } + return; + } + else{ + for(i=0;i<3;i++){ + norms[3*i] = nn[0]; + norms[3*i+1] = nn[1]; + norms[3*i+2] = nn[2]; + if(!View->get_normal(X[i]+Raise[0][i],Y[i]+Raise[1][i],Z[i]+Raise[2][i], + norms[3*i],norms[3*i+1],norms[3*i+2])){ + //don't print this (unless we fix draw_vector_triangle with displacement) + //Msg(WARNING, "Oups, did not find smoothed normal"); + } + } + } + } + else{ + for(i=0;i<3;i++){ + norms[3*i] = nn[0]; + norms[3*i+1] = nn[1]; + norms[3*i+2] = nn[2]; + } + } + //norme(norms); not necessary since GL_NORMALIZE is enabled + //norme(&norms[3]); + //norme(&norms[6]); + glNormal3dv(norms); + } + + if(preproNormals) return; + + if(View->ShowElement) Draw_ElementBoundary(TRIANGLE,View,X,Y,Z,Raise); + + if(View->IntervalsType == DRAW_POST_NUMERIC){ + + d = (Val[0]+Val[1]+Val[2]) / 3.; + if(d >= ValMin && d <= ValMax){ + Palette2(View,ValMin,ValMax,d); + sprintf(Num, View->Format, d); + glRasterPos3d( (X[0]+Raise[0][0] + X[1]+Raise[0][1] + X[2]+Raise[0][2])/3., + (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + Y[2]+Raise[1][2])/3., + (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + Z[2]+Raise[2][2])/3.); + Draw_String(Num); + } + + } + else{ + + if(View->IntervalsType == DRAW_POST_CONTINUOUS){ + if(Val[0] >= ValMin && Val[0] <= ValMax && + Val[1] >= ValMin && Val[1] <= ValMax && + Val[2] >= ValMin && Val[2] <= ValMax){ + glBegin(GL_TRIANGLES); + Palette2(View,ValMin,ValMax,Val[0]); + glNormal3dv(&norms[0]); + glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); + Palette2(View,ValMin,ValMax,Val[1]); + glNormal3dv(&norms[3]); + glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]); + Palette2(View,ValMin,ValMax,Val[2]); + glNormal3dv(&norms[6]); + glVertex3d(X[2]+Raise[0][2], Y[2]+Raise[1][2], Z[2]+Raise[2][2]); + glEnd(); + } + else{ + CutTriangle2D(X,Y,Z,Val, + ValMin,ValMax,ValMin,ValMax, + Xp,Yp,Zp,&nb,value); + if(nb >= 3){ + glBegin(GL_POLYGON); + for(i=0 ; i<nb ; i++){ + Palette2(View,ValMin,ValMax,value[i]); + RaiseFill(i,value[i],ValMin,Raise); + glVertex3d(Xp[i]+Raise[0][i], Yp[i]+Raise[1][i], Zp[i]+Raise[2][i]); + } + glEnd(); + } + } + } + else{ + for(k=0 ; k<View->NbIso ; k++){ + if(View->IntervalsType == DRAW_POST_DISCRETE){ + Palette1(View,View->NbIso,k); + CutTriangle2D(X,Y,Z,Val, + View->GVFI(ValMin,ValMax,View->NbIso+1,k), + View->GVFI(ValMin,ValMax,View->NbIso+1,k+1), + ValMin,ValMax, + Xp,Yp,Zp,&nb,value); + if(nb >= 3){ + for(i=0 ; i<nb ; i++) RaiseFill(i,value[i],ValMin,Raise); + Draw_Polygon(nb,Xp,Yp,Zp,Raise); + } + } + else{ + Palette1(View,View->NbIso,k); + thev = View->GVFI(ValMin,ValMax,View->NbIso,k); + CutTriangle1D(X,Y,Z,Val, + thev, ValMin,ValMax,Xp,Yp,Zp,&nb); + if(nb == 2){ + for(i=0 ; i<2 ; i++) RaiseFill(i,thev,ValMin,Raise); + Draw_Line(Xp,Yp,Zp,Raise); + } + } + } + } + + } + +} + +void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + + int k; + double d, Xp[4], Yp[4], Zp[4]; + char Num[100]; + double Val[4]; + + double *vv = &V[4*View->TimeStep]; + + if(!preproNormals && View->Boundary > 0){ + View->Boundary--; + int ts = View->TimeStep; + View->TimeStep = 0; + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//012 + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//123 + REORDER3(0,1,3); + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//013 + Xp[1] = X[2]; Yp[1] = Y[2]; Zp[1] = Z[2]; Val[1] = vv[2]; + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//023 + View->TimeStep = ts; + View->Boundary++; + return; + } + + SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 4); + + for(k=0 ; k<4 ; k++) RaiseFill(k, Val[k], ValMin, Raise); + + if(!preproNormals && View->ShowElement) Draw_ElementBoundary(TETRAHEDRON,View,X,Y,Z,Raise); + + if(!preproNormals && View->IntervalsType == DRAW_POST_NUMERIC){ + + d = 0.25 * (Val[0] +Val[1]+Val[2] + Val[3]); + if(d >= ValMin && d <= ValMax){ + Palette2(View,ValMin,ValMax,d); + sprintf(Num, View->Format, d); + glRasterPos3d(0.25 * (X[0]+Raise[0][0] + X[1]+Raise[0][1] + + X[2]+Raise[0][2] + X[3]+Raise[0][3]), + 0.25 * (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + + Y[2]+Raise[1][2] + Y[3]+Raise[1][3]), + 0.25 * (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + + Z[2]+Raise[2][2] + Z[3]+Raise[2][3])); + Draw_String(Num); + } + + } + else{ + for(k=0 ; k<View->NbIso ; k++){ + if(!preproNormals) Palette1(View,View->NbIso,k); + IsoSimplex(View, preproNormals, X, Y, Z, Val, + View->GVFI(ValMin,ValMax,View->NbIso,k), + ValMin, ValMax, Raise); + } + + } + +} + +void Draw_ScalarQuadrangle(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + int k, ts, show=0; + double Val[4],Xp[4],Yp[4],Zp[4]; + double *vv = &V[4*View->TimeStep]; + + ts = View->TimeStep; View->TimeStep = 0; + + if(!preproNormals && View->Boundary > 0){ + View->Boundary--; + Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//01 + Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//12 + Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, &X[2], &Y[2], &Z[2], &vv[2]);//23 + REORDER2(0,3); + Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//03 + View->TimeStep = ts; + View->Boundary++; + return; + } + + show = View->ShowElement; View->ShowElement = 0; + + if(!preproNormals && show){ + SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 4); + for(k=0 ; k<4 ; k++) RaiseFill(k, Val[k], ValMin, Raise); + Draw_ElementBoundary(QUADRANGLE,View,X,Y,Z,Raise); + } + + Draw_ScalarTriangle(View, preproNormals, ValMin, ValMax, Raise, X, Y, Z, vv); //012 + REORDER3(0,2,3); + Draw_ScalarTriangle(View, preproNormals, ValMin, ValMax, Raise, Xp,Yp,Zp,Val); //023 + + View->TimeStep = ts; + View->ShowElement = show; +} + +void Draw_ScalarHexahedron(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + int k, ts, show=0; + double Val[8],Xp[8],Yp[8],Zp[8]; + double *vv = &V[8*View->TimeStep]; + + ts = View->TimeStep; View->TimeStep = 0; + + if(!preproNormals && View->Boundary > 0){ + View->Boundary--; + REORDER4(0,1,5,4); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//0154 + REORDER4(0,3,2,1); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//0321 + REORDER4(0,4,7,3); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//0473 + REORDER4(1,2,6,5); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//1265 + REORDER4(2,3,7,6); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//2376 + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, &X[4], &Y[4], &Z[4], &vv[4]);//4567 + View->TimeStep = ts; + View->Boundary++; + return; + } + + show = View->ShowElement; View->ShowElement = 0; + + if(!preproNormals && show){ + SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 8); + for(k=0 ; k<8 ; k++) RaiseFill(k, Val[k], ValMin, Raise); + Draw_ElementBoundary(HEXAHEDRON,View,X,Y,Z,Raise); + } + + REORDER6(0,1,3, 4,5,7); + Draw_ScalarPrism(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + REORDER6(1,2,3, 5,6,7); + Draw_ScalarPrism(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + + View->TimeStep = ts; + View->ShowElement = show; +} + +void Draw_ScalarPrism(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + int k, ts, show=0; + double Val[6],Xp[6],Yp[6],Zp[6]; + double *vv = &V[6*View->TimeStep]; + + ts = View->TimeStep; View->TimeStep = 0; + + if(!preproNormals && View->Boundary > 0){ + View->Boundary--; + REORDER4(0,1,4,3); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + REORDER3(0,2,1); + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + REORDER4(0,3,5,2); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + REORDER4(1,2,5,4); + Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, Xp, Yp, Zp, Val); + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[3], &Y[3], &Z[3], &V[3]); + View->TimeStep = ts; + View->Boundary++; + return; + } + + show = View->ShowElement; View->ShowElement = 0; + + if(!preproNormals && show){ + SaturateValues(View->SaturateValues, ValMin, ValMax, vv, Val, 6); + for(k=0 ; k<6 ; k++) RaiseFill(k, Val[k], ValMin, Raise); + Draw_ElementBoundary(PRISM,View,X,Y,Z,Raise); + } + + Draw_ScalarTetrahedron(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &V[0]);//0123 + REORDER4(3,4,5,2); + Draw_ScalarTetrahedron(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//3452 + REORDER4(1,2,4,3); + Draw_ScalarTetrahedron(View, preproNormals, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//1243 + + View->TimeStep = ts; + View->ShowElement = show; +} + +void Draw_ScalarPyramid(Post_View *View, int preproNormals, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + static int error=0 ; + if(!error){ + error = 1; + Msg(GERROR, "Pyramid drawing not implemented yet..."); + } +} + +// Vector Elements + +void Draw_VectorElement(int type, Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + int j, k, nbnod ; + double fact, xx[8], yy[8], zz[8], xc=0., yc=0., zc=0., Val[8][3], d[8]; + double dx=0., dy=0., dz=0., dd; + char Num[100]; + + switch(type){ + case POINT : nbnod = 1; break; + case LINE : nbnod = 2; break; + case TRIANGLE : nbnod = 3; break; + case QUADRANGLE : nbnod = 4; break; + case TETRAHEDRON : nbnod = 4; break; + case HEXAHEDRON : nbnod = 8; break; + case PRISM : nbnod = 6; break; + case PYRAMID : nbnod = 5; break; + } + + for(k=0 ; k<nbnod ; k++){ + Val[k][0] = V[3*nbnod*View->TimeStep+3*k] ; + Val[k][1] = V[3*nbnod*View->TimeStep+3*k+1] ; + Val[k][2] = V[3*nbnod*View->TimeStep+3*k+2] ; + d[k] = sqrt(Val[k][0]*Val[k][0]+Val[k][1]*Val[k][1]+Val[k][2]*Val[k][2]); + RaiseFill(k, d[k], ValMin, Raise); + } + + if(View->ArrowType == DRAW_POST_DISPLACEMENT){ + + fact = View->ArrowScale/50. ; + for(k=0 ; k<nbnod ; k++){ + xx[k] = X[k] + fact * Val[k][0] + Raise[0][k]; + yy[k] = Y[k] + fact * Val[k][1] + Raise[1][k]; + zz[k] = Z[k] + fact * Val[k][2] + Raise[2][k]; + } + + int ts = View->TimeStep; + View->TimeStep = 0; + switch(type){ + case POINT: + Draw_ScalarPoint(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); + if(ts){//draw trajectory + glBegin(GL_LINE_STRIP); + for(j=0 ; j<ts+1 ; j++){ + dx = V[3*(ts-j)]; dy = V[3*(ts-j)+1]; dz = V[3*(ts-j)+2]; + dd = sqrt(dx*dx+dy*dy+dz*dz); + Palette2(View,ValMin,ValMax,dd); + glVertex3d(X[0] + fact*dx + Raise[0][0], + Y[0] + fact*dy + Raise[1][0], + Z[0] + fact*dz + Raise[2][0]); + } + glEnd(); + } + break; + case LINE: Draw_ScalarLine(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; + case TRIANGLE: Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; + case TETRAHEDRON: Draw_ScalarTetrahedron(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; + case QUADRANGLE: Draw_ScalarQuadrangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; + case HEXAHEDRON: Draw_ScalarHexahedron(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; + case PRISM: Draw_ScalarPrism(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; + case PYRAMID: Draw_ScalarPyramid(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; + } + View->TimeStep = ts; + return; + } + + if(View->ShowElement) Draw_ElementBoundary(type,View,X,Y,Z,Raise); + + if(View->ArrowLocation == DRAW_POST_LOCATE_COG || + View->IntervalsType == DRAW_POST_NUMERIC){ + for(k = 0 ; k<nbnod ; k++){ + dx += Val[k][0]; xc += X[k] + Raise[0][k]; + dy += Val[k][1]; yc += Y[k] + Raise[1][k]; + dz += Val[k][2]; zc += Z[k] + Raise[2][k]; + } + dx /= (double)nbnod; xc /= (double)nbnod; + dy /= (double)nbnod; yc /= (double)nbnod; + dz /= (double)nbnod; zc /= (double)nbnod; + dd = sqrt(dx*dx+dy*dy+dz*dz); + if(dd!=0.0 && dd>=ValMin && dd<=ValMax){ + Palette1(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,dd)); + if(View->IntervalsType == DRAW_POST_NUMERIC){ + glRasterPos3d(xc, yc, zc); + sprintf(Num, View->Format, dd); + Draw_String(Num); + } + else{ + fact = CTX.pixel_equiv_x/CTX.s[0] * View->ArrowScale/ValMax ; + if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ + dx /= dd ; dy /= dd ; dz /= dd ; + dd = log10(dd/ValMin) ; + dx *= dd ; dy *= dd ; dz *= dd ; + } + RaiseFill(0, dd, ValMin, Raise); + Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, + xc, yc, zc, fact*dd, fact*dx, fact*dy, fact*dz, Raise); + } + } + } + else{ + for(k=0 ; k<nbnod ; k++){ + if(d[k]!=0.0 && d[k]>=ValMin && d[k]<=ValMax){ + Palette1(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d[k])); + fact = CTX.pixel_equiv_x/CTX.s[0] * View->ArrowScale/ValMax ; + if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ + Val[k][0] /= d[k] ; Val[k][1] /= d[k] ; Val[k][2] /= d[k] ; + d[k] = log10(d[k]/ValMin) ; + Val[k][0] *= d[k] ; Val[k][1] *= d[k] ; Val[k][2] *= d[k] ; + } + RaiseFill(0, d[k], ValMin, Raise); + Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, + X[k], Y[k], Z[k], + fact*d[k], fact*Val[k][0], fact*Val[k][1], fact*Val[k][2], Raise); + } + } + } + +} + +#define ARGS Post_View *View, \ + double ValMin, double ValMax, double Raise[3][8], \ + double *X, double *Y, double *Z, double *V + +void Draw_VectorPoint(ARGS){ + Draw_VectorElement(POINT, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_VectorLine(ARGS){ + Draw_VectorElement(LINE, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_VectorTriangle(ARGS){ + Draw_VectorElement(TRIANGLE, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_VectorTetrahedron(ARGS){ + Draw_VectorElement(TETRAHEDRON, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_VectorQuadrangle(ARGS){ + Draw_VectorElement(QUADRANGLE, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_VectorHexahedron(ARGS){ + Draw_VectorElement(HEXAHEDRON, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_VectorPrism(ARGS){ + Draw_VectorElement(PRISM, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_VectorPyramid(ARGS){ + Draw_VectorElement(PYRAMID, View, ValMin, ValMax, Raise, X, Y, Z, V); } + +#undef ARGS + +// Tensor Elements + +void Draw_TensorElement(int type, Post_View *View, + double ValMin, double ValMax, double Raise[3][8], + double *X, double *Y, double *Z, double *V){ + static int error=0 ; + if(!error){ + error = 1; + Msg(GERROR, "Tensor field visualization is not implemented"); + Msg(GERROR, "We *need* some ideas on how to implement this!"); + Msg(GERROR, "Send your ideas to <gmsh@geuz.org>!"); + } +} + +#define ARGS Post_View *View, \ + double ValMin, double ValMax, double Raise[3][8], \ + double *X, double *Y, double *Z, double *V + +void Draw_TensorPoint(ARGS){ + Draw_TensorElement(POINT, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_TensorLine(ARGS){ + Draw_TensorElement(LINE, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_TensorTriangle(ARGS){ + /// we want to compute "von mises" value i.e. max eigenvalue + /// this will simply call the scalar function + if(View->TensorType == DRAW_POST_VONMISES){ + double V_VonMises [3]; + for(int i=0;i<3;i++){ + double xx = V[0+9*i]; + double yy = V[4+9*i]; + double xy = V[1+9*i]; + V_VonMises[i] = sqrt (0.5 * ( (xx-yy) * (xx-yy) + + (xx-xy) * (xx-xy) + + (xy-yy) * (xy-yy) ) ); + } + Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, X,Y,Z,V_VonMises); + } +} +void Draw_TensorTetrahedron(ARGS){ + Draw_TensorElement(TETRAHEDRON, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_TensorQuadrangle(ARGS){ + Draw_TensorElement(QUADRANGLE, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_TensorHexahedron(ARGS){ + Draw_TensorElement(HEXAHEDRON, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_TensorPrism(ARGS){ + Draw_TensorElement(PRISM, View, ValMin, ValMax, Raise, X, Y, Z, V); } +void Draw_TensorPyramid(ARGS){ + Draw_TensorElement(PYRAMID, View, ValMin, ValMax, Raise, X, Y, Z, V); } + diff --git a/Graphics/PostSimplex.cpp b/Graphics/PostSimplex.cpp deleted file mode 100644 index 5b4b782a1e75ab4d07a9c91c72f88115f09c91cd..0000000000000000000000000000000000000000 --- a/Graphics/PostSimplex.cpp +++ /dev/null @@ -1,640 +0,0 @@ -// $Id: PostSimplex.cpp,v 1.38 2002-06-15 21:29:59 geuzaine Exp $ -// -// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA. -// -// Please report all bugs and problems to "gmsh@geuz.org". - -#include "Gmsh.h" -#include "GmshUI.h" -#include "Geo.h" -#include "Mesh.h" -#include "Draw.h" -#include "Iso.h" -#include "Context.h" -#include "Numeric.h" - -extern Context_T CTX; - -void Draw_Simplex(Post_View *View, int nbnod, double *X, double *Y, double *Z, - double Raise[3][5]){ - int k; - double xx[4], yy[4], zz[4]; - - glColor4ubv((GLubyte*)&CTX.color.fg); - switch(nbnod){ - case 1 : - Draw_Point(View->PointType,View->PointSize,X,Y,Z,Raise); - break; - case 2 : - Draw_Line(X,Y,Z,Raise); - break; - case 3 : - glBegin(GL_LINE_LOOP); - for(k=0 ; k<3 ; k++) - glVertex3d(X[k]+Raise[0][k], Y[k]+Raise[1][k], Z[k]+Raise[2][k]); - glEnd(); - break; - case 4 : - for(k=0 ; k<4 ; k++){ - xx[k] = X[k]+Raise[0][k] ; - yy[k] = Y[k]+Raise[1][k] ; - zz[k] = Z[k]+Raise[2][k] ; - } - if(View->Light) glDisable(GL_LIGHTING); - glBegin(GL_LINES); - glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[1], yy[1], zz[1]); - glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[2], yy[2], zz[2]); - glVertex3d(xx[0], yy[0], zz[0]); glVertex3d(xx[3], yy[3], zz[3]); - glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[2], yy[2], zz[2]); - glVertex3d(xx[1], yy[1], zz[1]); glVertex3d(xx[3], yy[3], zz[3]); - glVertex3d(xx[2], yy[2], zz[2]); glVertex3d(xx[3], yy[3], zz[3]); - glEnd(); - if(View->Light) glEnable(GL_LIGHTING); - break; - } -} - - -// Scalar Simplices - -void Draw_ScalarPoint(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - double d; - char Num[100]; - - if(View->Boundary > 0) return; - - d = V[View->TimeStep]; - - if(View->SaturateValues){ - if(d > ValMax) d = ValMax; - else if(d < ValMin) d = ValMin; - } - - RaiseFill(0, d, ValMin, Raise); - - if(View->ShowElement) Draw_Simplex(View,1,X,Y,Z,Raise); - - if(d>=ValMin && d<=ValMax){ - Palette2(View,ValMin,ValMax,d); - if(View->IntervalsType == DRAW_POST_NUMERIC){ - glRasterPos3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); - sprintf(Num, View->Format, d); - Draw_String(Num); - } - else - Draw_Point(View->PointType,View->PointSize,X,Y,Z,Raise); - } -} - -void Draw_ScalarLine(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - - int i,k,nb=0; - double d; - double Xp[5],Yp[5],Zp[5],Val[5],value[5],thev; - char Num[100] ; - - double *vv = &V[2*View->TimeStep]; - - if(View->Boundary > 0){ - View->Boundary--; - int ts = View->TimeStep; - View->TimeStep = 0; - Draw_ScalarPoint(View, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//0 - Draw_ScalarPoint(View, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//1 - View->TimeStep = ts; - View->Boundary++; - return; - } - - if(View->SaturateValues){ - for(i=0;i<2;i++){ - if(vv[i] > ValMax) Val[i] = ValMax; - else if(vv[i] < ValMin) Val[i] = ValMin; - else Val[i] = vv[i]; - } - } - else{ - for(i=0;i<2;i++){ - Val[i] = vv[i]; - } - } - - for(k=0 ; k<2 ; k++) - RaiseFill(k, Val[k], ValMin, Raise); - - if(View->ShowElement) Draw_Simplex(View,2,X,Y,Z,Raise); - - if(View->IntervalsType == DRAW_POST_NUMERIC){ - - d = (Val[0]+Val[1]) / 2.; - - if(d >= ValMin && d <= ValMax){ - Palette2(View,ValMin,ValMax,d); - sprintf(Num, View->Format, d); - glRasterPos3d((X[0]+Raise[0][0] + X[1]+Raise[0][1])/2., - (Y[0]+Raise[1][0] + Y[1]+Raise[1][1])/2., - (Z[0]+Raise[2][0] + Z[1]+Raise[2][1])/2.); - Draw_String(Num); - } - - } - else{ - - if(View->IntervalsType==DRAW_POST_CONTINUOUS){ - - if(Val[0] >= ValMin && Val[0] <= ValMax && - Val[1] >= ValMin && Val[1] <= ValMax){ - glBegin(GL_LINES); - Palette2(View,ValMin,ValMax,Val[0]); - glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); - Palette2(View,ValMin,ValMax,Val[1]); - glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]); - glEnd(); - } - else{ - //todo - } - - } - else{ - for(k=0 ; k<View->NbIso ; k++){ - Palette1(View,View->NbIso,k); - if(View->IntervalsType==DRAW_POST_DISCRETE){ - CutLine1D(X,Y,Z,&Val[0], - View->GVFI(ValMin,ValMax,View->NbIso+1,k), - View->GVFI(ValMin,ValMax,View->NbIso+1,k+1), - ValMin,ValMax,Xp,Yp,Zp,&nb,value); - if(nb == 2){ - for(i=0;i<2;i++) RaiseFill(i,value[i],ValMin,Raise); - Draw_Line(Xp,Yp,Zp,Raise); - } - } - else{ - thev = View->GVFI(ValMin,ValMax,View->NbIso,k); - CutLine0D(X,Y,Z,&Val[0], - thev, ValMin,ValMax,Xp,Yp,Zp,&nb); - if(nb){ - RaiseFill(0,thev,ValMin,Raise); - Draw_Point(View->PointType,View->PointSize,Xp,Yp,Zp,Raise); - } - } - } - } - - } - -} - -void Draw_ScalarTriangle(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - - int i, k, nb=0; - double d; - double x1x0, y1y0, z1z0, x2x0, y2y0, z2z0, nn[3], norms[9]; - double Xp[5],Yp[5],Zp[5],Val[3],value[5],thev; - char Num[100] ; - - double *vv = &V[3*View->TimeStep]; - - if(!preproNormals && View->Boundary > 0){ - View->Boundary--; - int ts = View->TimeStep; - View->TimeStep = 0; - Draw_ScalarLine(View, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//01 - Draw_ScalarLine(View, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//12 - Xp[0] = X[0]; Yp[0] = Y[0]; Zp[0] = Z[0]; Val[0] = vv[0]; - Xp[1] = X[2]; Yp[1] = Y[2]; Zp[1] = Z[2]; Val[1] = vv[2]; - Draw_ScalarLine(View, ValMin, ValMax, Raise, Xp, Yp, Zp, Val);//02 - View->TimeStep = ts; - View->Boundary++; - return; - } - - if(View->SaturateValues){ - for(i=0;i<3;i++){ - if(vv[i] > ValMax) Val[i] = ValMax; - else if(vv[i] < ValMin) Val[i] = ValMin; - else Val[i] = vv[i]; - } - } - else{ - for(i=0;i<3;i++){ - Val[i] = vv[i]; - } - } - - for(k=0 ; k<3 ; k++) - RaiseFill(k, Val[k], ValMin, Raise); - - if(View->Light){ - - x1x0 = (X[1]+Raise[0][1]) - (X[0]+Raise[0][0]); - y1y0 = (Y[1]+Raise[1][1]) - (Y[0]+Raise[1][0]); - z1z0 = (Z[1]+Raise[2][1]) - (Z[0]+Raise[2][0]); - x2x0 = (X[2]+Raise[0][2]) - (X[0]+Raise[0][0]); - y2y0 = (Y[2]+Raise[1][2]) - (Y[0]+Raise[1][0]); - z2z0 = (Z[2]+Raise[2][2]) - (Z[0]+Raise[2][0]); - nn[0] = y1y0 * z2z0 - z1z0 * y2y0 ; - nn[1] = z1z0 * x2x0 - x1x0 * z2z0 ; - nn[2] = x1x0 * y2y0 - y1y0 * x2x0 ; - - if(View->SmoothNormals){ - if(preproNormals){ - for(i=0;i<3;i++){ - View->add_normal(X[i]+Raise[0][i],Y[i]+Raise[1][i],Z[i]+Raise[2][i], - nn[0],nn[1],nn[2]); - } - return; - } - else{ - for(i=0;i<3;i++){ - norms[3*i] = nn[0]; - norms[3*i+1] = nn[1]; - norms[3*i+2] = nn[2]; - if(!View->get_normal(X[i]+Raise[0][i],Y[i]+Raise[1][i],Z[i]+Raise[2][i], - norms[3*i],norms[3*i+1],norms[3*i+2])){ - //don't print this (unless we fix draw_vector_triangle with displacement) - //Msg(WARNING, "Oups, did not find smoothed normal"); - } - } - } - } - else{ - for(i=0;i<3;i++){ - norms[3*i] = nn[0]; - norms[3*i+1] = nn[1]; - norms[3*i+2] = nn[2]; - } - } - //norme(norms); not necessary since GL_NORMALIZE is enabled - //norme(&norms[3]); - //norme(&norms[6]); - glNormal3dv(norms); - } - - if(preproNormals) return; - - if(View->ShowElement) Draw_Simplex(View,3,X,Y,Z,Raise); - - if(View->IntervalsType == DRAW_POST_NUMERIC){ - - d = (Val[0]+Val[1]+Val[2]) / 3.; - if(d >= ValMin && d <= ValMax){ - Palette2(View,ValMin,ValMax,d); - sprintf(Num, View->Format, d); - glRasterPos3d( (X[0]+Raise[0][0] + X[1]+Raise[0][1] + X[2]+Raise[0][2])/3., - (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + Y[2]+Raise[1][2])/3., - (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + Z[2]+Raise[2][2])/3.); - Draw_String(Num); - } - - } - else{ - - if(View->IntervalsType == DRAW_POST_CONTINUOUS){ - if(Val[0] >= ValMin && Val[0] <= ValMax && - Val[1] >= ValMin && Val[1] <= ValMax && - Val[2] >= ValMin && Val[2] <= ValMax){ - glBegin(GL_TRIANGLES); - Palette2(View,ValMin,ValMax,Val[0]); - glNormal3dv(&norms[0]); - glVertex3d(X[0]+Raise[0][0], Y[0]+Raise[1][0], Z[0]+Raise[2][0]); - Palette2(View,ValMin,ValMax,Val[1]); - glNormal3dv(&norms[3]); - glVertex3d(X[1]+Raise[0][1], Y[1]+Raise[1][1], Z[1]+Raise[2][1]); - Palette2(View,ValMin,ValMax,Val[2]); - glNormal3dv(&norms[6]); - glVertex3d(X[2]+Raise[0][2], Y[2]+Raise[1][2], Z[2]+Raise[2][2]); - glEnd(); - } - else{ - CutTriangle2D(X,Y,Z,Val, - ValMin,ValMax,ValMin,ValMax, - Xp,Yp,Zp,&nb,value); - if(nb >= 3){ - glBegin(GL_POLYGON); - for(i=0 ; i<nb ; i++){ - Palette2(View,ValMin,ValMax,value[i]); - RaiseFill(i,value[i],ValMin,Raise); - glVertex3d(Xp[i]+Raise[0][i], Yp[i]+Raise[1][i], Zp[i]+Raise[2][i]); - } - glEnd(); - } - } - } - else{ - for(k=0 ; k<View->NbIso ; k++){ - if(View->IntervalsType == DRAW_POST_DISCRETE){ - Palette1(View,View->NbIso,k); - CutTriangle2D(X,Y,Z,Val, - View->GVFI(ValMin,ValMax,View->NbIso+1,k), - View->GVFI(ValMin,ValMax,View->NbIso+1,k+1), - ValMin,ValMax, - Xp,Yp,Zp,&nb,value); - if(nb >= 3){ - for(i=0 ; i<nb ; i++) RaiseFill(i,value[i],ValMin,Raise); - Draw_Polygon(nb,Xp,Yp,Zp,Raise); - } - } - else{ - Palette1(View,View->NbIso,k); - thev = View->GVFI(ValMin,ValMax,View->NbIso,k); - CutTriangle1D(X,Y,Z,Val, - thev, ValMin,ValMax,Xp,Yp,Zp,&nb); - if(nb == 2){ - for(i=0 ; i<2 ; i++) RaiseFill(i,thev,ValMin,Raise); - Draw_Line(Xp,Yp,Zp,Raise); - } - } - } - } - - } - -} - -void Draw_ScalarTetrahedron(Post_View *View, int preproNormals, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - - int k,i; - double d, xx[4], yy[4], zz[4]; - char Num[100]; - double Val[4]; - - double *vv = &V[4*View->TimeStep]; - - if(!preproNormals && View->Boundary > 0){ - View->Boundary--; - int ts = View->TimeStep; - View->TimeStep = 0; - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[0], &Y[0], &Z[0], &vv[0]);//012 - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, &X[1], &Y[1], &Z[1], &vv[1]);//123 - xx[0] = X[0]; yy[0] = Y[0]; zz[0] = Z[0]; Val[0] = vv[0]; - xx[1] = X[1]; yy[1] = Y[1]; zz[1] = Z[1]; Val[1] = vv[1]; - xx[2] = X[3]; yy[2] = Y[3]; zz[2] = Z[3]; Val[2] = vv[3]; - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, Val);//013 - xx[1] = X[2]; yy[1] = Y[2]; zz[1] = Z[2]; Val[1] = vv[2]; - Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, Val);//023 - View->TimeStep = ts; - View->Boundary++; - return; - } - - if(View->SaturateValues){ - for(i=0;i<4;i++){ - if(vv[i] > ValMax) Val[i] = ValMax; - else if(vv[i] < ValMin) Val[i] = ValMin; - else Val[i] = vv[i]; - } - } - else{ - for(i=0;i<4;i++){ - Val[i] = vv[i]; - } - } - - for(k=0 ; k<4 ; k++) - RaiseFill(k, Val[k], ValMin, Raise); - - if(!preproNormals && View->ShowElement) Draw_Simplex(View,4,X,Y,Z,Raise); - - if(!preproNormals && View->IntervalsType == DRAW_POST_NUMERIC){ - - d = 0.25 * (Val[0] +Val[1]+Val[2] + Val[3]); - if(d >= ValMin && d <= ValMax){ - Palette2(View,ValMin,ValMax,d); - sprintf(Num, View->Format, d); - glRasterPos3d(0.25 * (X[0]+Raise[0][0] + X[1]+Raise[0][1] + - X[2]+Raise[0][2] + X[3]+Raise[0][3]), - 0.25 * (Y[0]+Raise[1][0] + Y[1]+Raise[1][1] + - Y[2]+Raise[1][2] + Y[3]+Raise[1][3]), - 0.25 * (Z[0]+Raise[2][0] + Z[1]+Raise[2][1] + - Z[2]+Raise[2][2] + Z[3]+Raise[2][3])); - Draw_String(Num); - } - - } - else{ - for(k=0 ; k<View->NbIso ; k++){ - if(!preproNormals) Palette1(View,View->NbIso,k); - IsoSimplex(View, preproNormals, X, Y, Z, Val, - View->GVFI(ValMin,ValMax,View->NbIso,k), - ValMin, ValMax, Raise); - } - - } - -} - -// Vector Simplices - -void Draw_VectorSimplex(int nbnod, Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - int j, k ; - double fact, xx[4], yy[4], zz[4], xc=0., yc=0., zc=0., Val[4][3], d[4]; - double dx=0., dy=0., dz=0., dd; - char Num[100]; - - for(k=0 ; k<nbnod ; k++){ - Val[k][0] = V[3*nbnod*View->TimeStep+3*k] ; - Val[k][1] = V[3*nbnod*View->TimeStep+3*k+1] ; - Val[k][2] = V[3*nbnod*View->TimeStep+3*k+2] ; - d[k] = sqrt(Val[k][0]*Val[k][0]+Val[k][1]*Val[k][1]+Val[k][2]*Val[k][2]); - RaiseFill(k, d[k], ValMin, Raise); - } - - if(View->ArrowType == DRAW_POST_DISPLACEMENT){ - - fact = View->ArrowScale/50. ; - for(k=0 ; k<nbnod ; k++){ - xx[k] = X[k] + fact * Val[k][0] + Raise[0][k]; - yy[k] = Y[k] + fact * Val[k][1] + Raise[1][k]; - zz[k] = Z[k] + fact * Val[k][2] + Raise[2][k]; - } - - int ts = View->TimeStep; - View->TimeStep = 0; - switch(nbnod){ - case 1: - Draw_ScalarPoint(View, ValMin, ValMax, Raise, xx, yy, zz, d); - if(ts){//draw trajectory - glBegin(GL_LINE_STRIP); - for(j=0 ; j<ts+1 ; j++){ - dx = V[3*(ts-j)]; dy = V[3*(ts-j)+1]; dz = V[3*(ts-j)+2]; - dd = sqrt(dx*dx+dy*dy+dz*dz); - Palette2(View,ValMin,ValMax,dd); - glVertex3d(X[0] + fact*dx + Raise[0][0], - Y[0] + fact*dy + Raise[1][0], - Z[0] + fact*dz + Raise[2][0]); - } - glEnd(); - } - break; - case 2: Draw_ScalarLine(View, ValMin, ValMax, Raise, xx, yy, zz, d); break; - case 3: Draw_ScalarTriangle(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; - case 4: Draw_ScalarTetrahedron(View, 0, ValMin, ValMax, Raise, xx, yy, zz, d); break; - } - View->TimeStep = ts; - return; - } - - if(View->ShowElement) Draw_Simplex(View,nbnod,X,Y,Z,Raise); - - if(View->ArrowLocation == DRAW_POST_LOCATE_COG || - View->IntervalsType == DRAW_POST_NUMERIC){ - for(k = 0 ; k<nbnod ; k++){ - dx += Val[k][0]; xc += X[k] + Raise[0][k]; - dy += Val[k][1]; yc += Y[k] + Raise[1][k]; - dz += Val[k][2]; zc += Z[k] + Raise[2][k]; - } - dx /= (double)nbnod; xc /= (double)nbnod; - dy /= (double)nbnod; yc /= (double)nbnod; - dz /= (double)nbnod; zc /= (double)nbnod; - dd = sqrt(dx*dx+dy*dy+dz*dz); - if(dd!=0.0 && dd>=ValMin && dd<=ValMax){ - Palette1(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,dd)); - if(View->IntervalsType == DRAW_POST_NUMERIC){ - glRasterPos3d(xc, yc, zc); - sprintf(Num, View->Format, dd); - Draw_String(Num); - } - else{ - fact = CTX.pixel_equiv_x/CTX.s[0] * View->ArrowScale/ValMax ; - if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ - dx /= dd ; dy /= dd ; dz /= dd ; - dd = log10(dd/ValMin) ; - dx *= dd ; dy *= dd ; dz *= dd ; - } - RaiseFill(0, dd, ValMin, Raise); - Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, - xc, yc, zc, fact*dd, fact*dx, fact*dy, fact*dz, Raise); - } - } - } - else{ - for(k=0 ; k<nbnod ; k++){ - if(d[k]!=0.0 && d[k]>=ValMin && d[k]<=ValMax){ - Palette1(View,View->NbIso,View->GIFV(ValMin,ValMax,View->NbIso,d[k])); - fact = CTX.pixel_equiv_x/CTX.s[0] * View->ArrowScale/ValMax ; - if(View->ScaleType == DRAW_POST_LOGARITHMIC && ValMin>0){ - Val[k][0] /= d[k] ; Val[k][1] /= d[k] ; Val[k][2] /= d[k] ; - d[k] = log10(d[k]/ValMin) ; - Val[k][0] *= d[k] ; Val[k][1] *= d[k] ; Val[k][2] *= d[k] ; - } - RaiseFill(0, d[k], ValMin, Raise); - Draw_Vector(View->ArrowType, View->IntervalsType!=DRAW_POST_ISO, - X[k], Y[k], Z[k], - fact*d[k], fact*Val[k][0], fact*Val[k][1], fact*Val[k][2], Raise); - } - } - } - -} - -void Draw_VectorPoint(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - Draw_VectorSimplex(1, View, ValMin, ValMax, Raise, X, Y, Z, V); -} - -void Draw_VectorLine(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - Draw_VectorSimplex(2, View, ValMin, ValMax, Raise, X, Y, Z, V); -} - -void Draw_VectorTriangle(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - Draw_VectorSimplex(3, View, ValMin, ValMax, Raise, X, Y, Z, V); -} - -void Draw_VectorTetrahedron(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - Draw_VectorSimplex(4, View, ValMin, ValMax, Raise, X, Y, Z, V); -} - - -// Tensor Simplices - -static int TensorError = 0 ; - -void Draw_TensorSimplex(int nbnod, Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - - if(!TensorError){ - TensorError = 1; - Msg(GERROR, "Tensor field visualization is not implemented"); - Msg(GERROR, "We *need* some ideas on how to implement this!"); - Msg(GERROR, "Send your ideas to <gmsh@geuz.org>!"); - } -} - - -void Draw_TensorPoint(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - Draw_TensorSimplex(1, View, ValMin, ValMax, Raise, X, Y, Z, V); -} - -void Draw_TensorLine(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - Draw_TensorSimplex(2, View, ValMin, ValMax, Raise, X, Y, Z, V); -} - -void Draw_TensorTriangle(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - - /// we want to compute "von mises" value i.e. max eigenvalue - /// this will simply call the scalar function - - if(View->TensorType == DRAW_POST_VONMISES) - { - double V_VonMises [3]; - - for(int i=0;i<3;i++) - { - double xx = V[0+9*i]; - double yy = V[4+9*i]; - double xy = V[1+9*i]; - V_VonMises[i] = sqrt (0.5 * ( - (xx-yy) * (xx-yy) + - (xx-xy) * (xx-xy) + - (xy-yy) * (xy-yy) ) ); - } - Draw_ScalarTriangle(View, 0,ValMin, ValMax, Raise, X,Y,Z,V_VonMises); - } -} - -void Draw_TensorTetrahedron(Post_View *View, - double ValMin, double ValMax, double Raise[3][5], - double *X, double *Y, double *Z, double *V){ - Draw_TensorSimplex(4, View, ValMin, ValMax, Raise, X, Y, Z, V); -} - diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l index 69429c5583ed1b2ac91b1465bb6cb6d12e4b4943..6fb089b9356a07b25b330f665dbc8a5f61ed2d91 100644 --- a/Parser/Gmsh.l +++ b/Parser/Gmsh.l @@ -1,6 +1,6 @@ %{ -// $Id: Gmsh.l,v 1.42 2002-05-20 18:28:28 geuzaine Exp $ +// $Id: Gmsh.l,v 1.43 2002-09-01 21:54:11 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -30,7 +30,7 @@ #include "Numeric.h" #include "Geo.h" #include "CAD.h" -#include "Gmsh.tab.cpp.h" +#include "Gmsh.tab.hpp" char TmpString[1024]; int yywhere = INFILE; @@ -220,18 +220,30 @@ Volume return tVolume; With return tWith; -SS return tScalarTetrahedron; -VS return tVectorTetrahedron; -TS return tTensorTetrahedron; -ST return tScalarTriangle; -VT return tVectorTriangle; -TT return tTensorTriangle; -SL return tScalarLine; -VL return tVectorLine; -TL return tTensorLine; SP return tScalarPoint; VP return tVectorPoint; TP return tTensorPoint; +SL return tScalarLine; +VL return tVectorLine; +TL return tTensorLine; +ST return tScalarTriangle; +VT return tVectorTriangle; +TT return tTensorTriangle; +SQ return tScalarQuadrangle; +VQ return tVectorQuadrangle; +TQ return tTensorQuadrangle; +SS return tScalarTetrahedron; +VS return tVectorTetrahedron; +TS return tTensorTetrahedron; +SH return tScalarHexahedron; +VH return tVectorHexahedron; +TH return tTensorHexahedron; +SI return tScalarPrism; +VI return tVectorPrism; +TI return tTensorPrism; +SY return tScalarPyramid; +VY return tVectorPyramid; +TY return tTensorPyramid; T2 return tText2D; T3 return tText3D; diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 72977690e977cf120c2cb459e0cc91dcb2b47bc4..10c73b67716d8d9e8b5d5a5e7e39f37dc4521728 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -71,112 +71,124 @@ # define tIntersect 322 # define tAttractor 323 # define tLayers 324 -# define tScalarTetrahedron 325 -# define tVectorTetrahedron 326 -# define tTensorTetrahedron 327 -# define tScalarTriangle 328 -# define tVectorTriangle 329 -# define tTensorTriangle 330 -# define tScalarLine 331 -# define tVectorLine 332 -# define tTensorLine 333 -# define tScalarPoint 334 -# define tVectorPoint 335 -# define tTensorPoint 336 -# define tText2D 337 -# define tText3D 338 -# define tBSpline 339 -# define tBezier 340 -# define tNurbs 341 -# define tOrder 342 -# define tWith 343 -# define tBounds 344 -# define tKnots 345 -# define tColor 346 -# define tColorTable 347 -# define tFor 348 -# define tIn 349 -# define tEndFor 350 -# define tIf 351 -# define tEndIf 352 -# define tExit 353 -# define tReturn 354 -# define tCall 355 -# define tFunction 356 -# define tMesh 357 -# define tB_SPLINE_SURFACE_WITH_KNOTS 358 -# define tB_SPLINE_CURVE_WITH_KNOTS 359 -# define tCARTESIAN_POINT 360 -# define tTRUE 361 -# define tFALSE 362 -# define tUNSPECIFIED 363 -# define tU 364 -# define tV 365 -# define tEDGE_CURVE 366 -# define tVERTEX_POINT 367 -# define tORIENTED_EDGE 368 -# define tPLANE 369 -# define tFACE_OUTER_BOUND 370 -# define tEDGE_LOOP 371 -# define tADVANCED_FACE 372 -# define tVECTOR 373 -# define tDIRECTION 374 -# define tAXIS2_PLACEMENT_3D 375 -# define tISO 376 -# define tENDISO 377 -# define tENDSEC 378 -# define tDATA 379 -# define tHEADER 380 -# define tFILE_DESCRIPTION 381 -# define tFILE_SCHEMA 382 -# define tFILE_NAME 383 -# define tMANIFOLD_SOLID_BREP 384 -# define tCLOSED_SHELL 385 -# define tADVANCED_BREP_SHAPE_REPRESENTATION 386 -# define tFACE_BOUND 387 -# define tCYLINDRICAL_SURFACE 388 -# define tCONICAL_SURFACE 389 -# define tCIRCLE 390 -# define tTRIMMED_CURVE 391 -# define tGEOMETRIC_SET 392 -# define tCOMPOSITE_CURVE_SEGMENT 393 -# define tCONTINUOUS 394 -# define tCOMPOSITE_CURVE 395 -# define tTOROIDAL_SURFACE 396 -# define tPRODUCT_DEFINITION 397 -# define tPRODUCT_DEFINITION_SHAPE 398 -# define tSHAPE_DEFINITION_REPRESENTATION 399 -# define tELLIPSE 400 -# define tTrimmed 401 -# define tSolid 402 -# define tEndSolid 403 -# define tVertex 404 -# define tFacet 405 -# define tNormal 406 -# define tOuter 407 -# define tLoopSTL 408 -# define tEndLoop 409 -# define tEndFacet 410 -# define tAFFECTPLUS 411 -# define tAFFECTMINUS 412 -# define tAFFECTTIMES 413 -# define tAFFECTDIVIDE 414 -# define tOR 415 -# define tAND 416 -# define tEQUAL 417 -# define tNOTEQUAL 418 -# define tAPPROXEQUAL 419 -# define tLESSOREQUAL 420 -# define tGREATEROREQUAL 421 -# define tCROSSPRODUCT 422 -# define tPLUSPLUS 423 -# define tMINUSMINUS 424 -# define UNARYPREC 425 +# define tScalarPoint 325 +# define tVectorPoint 326 +# define tTensorPoint 327 +# define tScalarLine 328 +# define tVectorLine 329 +# define tTensorLine 330 +# define tScalarTriangle 331 +# define tVectorTriangle 332 +# define tTensorTriangle 333 +# define tScalarQuadrangle 334 +# define tVectorQuadrangle 335 +# define tTensorQuadrangle 336 +# define tScalarTetrahedron 337 +# define tVectorTetrahedron 338 +# define tTensorTetrahedron 339 +# define tScalarHexahedron 340 +# define tVectorHexahedron 341 +# define tTensorHexahedron 342 +# define tScalarPrism 343 +# define tVectorPrism 344 +# define tTensorPrism 345 +# define tScalarPyramid 346 +# define tVectorPyramid 347 +# define tTensorPyramid 348 +# define tText2D 349 +# define tText3D 350 +# define tBSpline 351 +# define tBezier 352 +# define tNurbs 353 +# define tOrder 354 +# define tWith 355 +# define tBounds 356 +# define tKnots 357 +# define tColor 358 +# define tColorTable 359 +# define tFor 360 +# define tIn 361 +# define tEndFor 362 +# define tIf 363 +# define tEndIf 364 +# define tExit 365 +# define tReturn 366 +# define tCall 367 +# define tFunction 368 +# define tMesh 369 +# define tB_SPLINE_SURFACE_WITH_KNOTS 370 +# define tB_SPLINE_CURVE_WITH_KNOTS 371 +# define tCARTESIAN_POINT 372 +# define tTRUE 373 +# define tFALSE 374 +# define tUNSPECIFIED 375 +# define tU 376 +# define tV 377 +# define tEDGE_CURVE 378 +# define tVERTEX_POINT 379 +# define tORIENTED_EDGE 380 +# define tPLANE 381 +# define tFACE_OUTER_BOUND 382 +# define tEDGE_LOOP 383 +# define tADVANCED_FACE 384 +# define tVECTOR 385 +# define tDIRECTION 386 +# define tAXIS2_PLACEMENT_3D 387 +# define tISO 388 +# define tENDISO 389 +# define tENDSEC 390 +# define tDATA 391 +# define tHEADER 392 +# define tFILE_DESCRIPTION 393 +# define tFILE_SCHEMA 394 +# define tFILE_NAME 395 +# define tMANIFOLD_SOLID_BREP 396 +# define tCLOSED_SHELL 397 +# define tADVANCED_BREP_SHAPE_REPRESENTATION 398 +# define tFACE_BOUND 399 +# define tCYLINDRICAL_SURFACE 400 +# define tCONICAL_SURFACE 401 +# define tCIRCLE 402 +# define tTRIMMED_CURVE 403 +# define tGEOMETRIC_SET 404 +# define tCOMPOSITE_CURVE_SEGMENT 405 +# define tCONTINUOUS 406 +# define tCOMPOSITE_CURVE 407 +# define tTOROIDAL_SURFACE 408 +# define tPRODUCT_DEFINITION 409 +# define tPRODUCT_DEFINITION_SHAPE 410 +# define tSHAPE_DEFINITION_REPRESENTATION 411 +# define tELLIPSE 412 +# define tTrimmed 413 +# define tSolid 414 +# define tEndSolid 415 +# define tVertex 416 +# define tFacet 417 +# define tNormal 418 +# define tOuter 419 +# define tLoopSTL 420 +# define tEndLoop 421 +# define tEndFacet 422 +# define tAFFECTPLUS 423 +# define tAFFECTMINUS 424 +# define tAFFECTTIMES 425 +# define tAFFECTDIVIDE 426 +# define tOR 427 +# define tAND 428 +# define tEQUAL 429 +# define tNOTEQUAL 430 +# define tAPPROXEQUAL 431 +# define tLESSOREQUAL 432 +# define tGREATEROREQUAL 433 +# define tCROSSPRODUCT 434 +# define tPLUSPLUS 435 +# define tMINUSMINUS 436 +# define UNARYPREC 437 #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.142 2002-05-20 18:28:28 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.143 2002-09-01 21:54:11 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -262,7 +274,7 @@ void vyyerror (char *fmt, ...); void skip_until (char *skip, char *until); int PrintListOfDouble(char *format, List_T *list, char *buffer); -#line 87 "Gmsh.y" +#line 90 "Gmsh.y" #ifndef YYSTYPE typedef union { char *c; @@ -282,12 +294,12 @@ typedef union { -#define YYFINAL 1706 +#define YYFINAL 2252 #define YYFLAG -32768 -#define YYNTBASE 190 +#define YYNTBASE 202 /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ -#define YYTRANSLATE(x) ((unsigned)(x) <= 425 ? yytranslate[x] : 284) +#define YYTRANSLATE(x) ((unsigned)(x) <= 437 ? yytranslate[x] : 332) /* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ static const short yytranslate[] = @@ -295,16 +307,16 @@ 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, 177, 2, 2, 2, 175, 2, 2, - 182, 183, 173, 171, 187, 172, 186, 174, 2, 2, + 2, 2, 2, 189, 2, 2, 2, 187, 2, 2, + 194, 195, 185, 183, 199, 184, 198, 186, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 167, 2, 169, 161, 2, 2, 2, 2, 2, 2, + 179, 2, 181, 173, 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, 184, 2, 185, 181, 2, 2, 2, 2, 2, + 2, 196, 2, 197, 193, 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, 188, 2, 189, 2, 2, 2, 2, + 2, 2, 2, 200, 2, 201, 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, @@ -333,8 +345,9 @@ static const short yytranslate[] = 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, - 168, 170, 176, 178, 179, 180 + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, + 177, 178, 180, 182, 188, 190, 191, 192 }; #if YYDEBUG @@ -348,291 +361,360 @@ static const short yyprhs[] = 461, 475, 487, 497, 498, 501, 503, 505, 507, 509, 511, 513, 515, 517, 519, 521, 523, 525, 527, 533, 541, 548, 557, 558, 561, 564, 567, 570, 573, 576, - 579, 582, 585, 588, 591, 594, 597, 600, 602, 606, - 607, 621, 623, 627, 628, 642, 644, 648, 649, 663, - 665, 669, 670, 690, 692, 696, 697, 717, 719, 723, - 724, 744, 746, 750, 751, 777, 779, 783, 784, 810, - 812, 816, 817, 843, 845, 849, 850, 882, 884, 888, - 889, 921, 923, 927, 928, 960, 962, 966, 967, 981, - 983, 987, 988, 1004, 1006, 1008, 1010, 1012, 1014, 1016, - 1018, 1023, 1031, 1041, 1048, 1052, 1059, 1066, 1076, 1083, - 1093, 1099, 1108, 1117, 1129, 1136, 1146, 1156, 1166, 1174, - 1183, 1196, 1203, 1211, 1219, 1232, 1240, 1248, 1258, 1276, - 1285, 1294, 1302, 1310, 1322, 1331, 1344, 1353, 1376, 1397, - 1406, 1415, 1424, 1432, 1441, 1447, 1459, 1465, 1475, 1477, - 1479, 1481, 1482, 1485, 1492, 1499, 1506, 1511, 1516, 1523, - 1527, 1533, 1537, 1541, 1549, 1552, 1555, 1562, 1571, 1580, - 1591, 1593, 1596, 1598, 1602, 1607, 1609, 1618, 1631, 1646, - 1655, 1668, 1683, 1684, 1697, 1698, 1715, 1716, 1735, 1744, - 1757, 1772, 1773, 1786, 1787, 1804, 1805, 1824, 1826, 1829, - 1839, 1847, 1850, 1857, 1867, 1877, 1886, 1895, 1904, 1911, - 1916, 1919, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1938, - 1941, 1944, 1947, 1951, 1955, 1959, 1963, 1967, 1971, 1975, - 1979, 1983, 1987, 1991, 1995, 1999, 2003, 2009, 2014, 2019, - 2024, 2029, 2034, 2039, 2044, 2049, 2054, 2059, 2066, 2071, - 2076, 2081, 2086, 2091, 2096, 2103, 2110, 2117, 2122, 2127, - 2132, 2137, 2142, 2147, 2152, 2157, 2162, 2167, 2172, 2179, - 2184, 2189, 2194, 2199, 2204, 2209, 2216, 2223, 2230, 2235, - 2237, 2239, 2241, 2243, 2245, 2250, 2253, 2259, 2263, 2270, - 2275, 2283, 2285, 2288, 2291, 2295, 2299, 2311, 2321, 2329, - 2337, 2338, 2342, 2344, 2348, 2349, 2353, 2357, 2359, 2363, - 2365, 2367, 2371, 2376, 2380, 2386, 2390, 2395, 2402, 2410, - 2412, 2414, 2418, 2422, 2432, 2440, 2442, 2448, 2452, 2459, - 2461, 2465, 2467, 2474, 2479, 2484, 2491, 2498 + 579, 582, 585, 588, 591, 594, 597, 600, 603, 606, + 609, 612, 615, 618, 621, 624, 627, 630, 633, 636, + 638, 642, 643, 657, 659, 663, 664, 678, 680, 684, + 685, 699, 701, 705, 706, 726, 728, 732, 733, 753, + 755, 759, 760, 780, 782, 786, 787, 813, 815, 819, + 820, 846, 848, 852, 853, 879, 881, 885, 886, 918, + 920, 924, 925, 957, 959, 963, 964, 996, 998, 1002, + 1003, 1035, 1037, 1041, 1042, 1074, 1076, 1080, 1081, 1113, + 1115, 1119, 1120, 1176, 1178, 1182, 1183, 1239, 1241, 1245, + 1246, 1302, 1304, 1308, 1309, 1353, 1355, 1359, 1360, 1404, + 1406, 1410, 1411, 1455, 1457, 1461, 1462, 1500, 1502, 1506, + 1507, 1545, 1547, 1551, 1552, 1590, 1592, 1596, 1597, 1611, + 1613, 1617, 1618, 1634, 1636, 1638, 1640, 1642, 1644, 1646, + 1648, 1653, 1661, 1671, 1678, 1682, 1689, 1696, 1706, 1713, + 1723, 1729, 1738, 1747, 1759, 1766, 1776, 1786, 1796, 1804, + 1813, 1826, 1833, 1841, 1849, 1862, 1870, 1878, 1888, 1906, + 1915, 1924, 1932, 1940, 1952, 1961, 1974, 1983, 2006, 2027, + 2036, 2045, 2054, 2062, 2071, 2077, 2089, 2095, 2105, 2107, + 2109, 2111, 2112, 2115, 2122, 2129, 2136, 2141, 2146, 2153, + 2157, 2163, 2167, 2171, 2179, 2182, 2185, 2192, 2201, 2210, + 2221, 2223, 2226, 2228, 2232, 2237, 2239, 2248, 2261, 2276, + 2285, 2298, 2313, 2314, 2327, 2328, 2345, 2346, 2365, 2374, + 2387, 2402, 2403, 2416, 2417, 2434, 2435, 2454, 2456, 2459, + 2469, 2477, 2480, 2487, 2497, 2507, 2516, 2525, 2534, 2541, + 2546, 2549, 2552, 2554, 2556, 2558, 2560, 2562, 2564, 2568, + 2571, 2574, 2577, 2581, 2585, 2589, 2593, 2597, 2601, 2605, + 2609, 2613, 2617, 2621, 2625, 2629, 2633, 2639, 2644, 2649, + 2654, 2659, 2664, 2669, 2674, 2679, 2684, 2689, 2696, 2701, + 2706, 2711, 2716, 2721, 2726, 2733, 2740, 2747, 2752, 2757, + 2762, 2767, 2772, 2777, 2782, 2787, 2792, 2797, 2802, 2809, + 2814, 2819, 2824, 2829, 2834, 2839, 2846, 2853, 2860, 2865, + 2867, 2869, 2871, 2873, 2875, 2880, 2883, 2889, 2893, 2900, + 2905, 2913, 2915, 2918, 2921, 2925, 2929, 2941, 2951, 2959, + 2967, 2968, 2972, 2974, 2978, 2979, 2983, 2987, 2989, 2993, + 2995, 2997, 3001, 3006, 3010, 3016, 3020, 3025, 3032, 3040, + 3042, 3044, 3048, 3052, 3062, 3070, 3072, 3078, 3082, 3089, + 3091, 3095, 3097, 3104, 3109, 3114, 3121, 3128 }; static const short yyrhs[] = { - 193, 0, 192, 0, 198, 0, 1, 6, 0, 3, - 0, 172, 3, 0, 148, 0, 151, 152, 191, 191, - 191, 153, 154, 150, 191, 191, 191, 150, 191, 191, - 191, 150, 191, 191, 191, 155, 156, 0, 149, 0, - 0, 193, 194, 0, 195, 0, 197, 0, 196, 0, - 122, 6, 0, 123, 6, 0, 125, 6, 0, 124, - 6, 0, 126, 6, 0, 127, 182, 273, 187, 5, - 183, 6, 0, 128, 182, 273, 183, 6, 0, 129, - 182, 5, 187, 5, 187, 273, 187, 273, 187, 5, - 187, 5, 187, 5, 183, 6, 0, 3, 7, 106, - 182, 5, 187, 271, 183, 6, 0, 3, 7, 105, - 182, 5, 187, 269, 187, 277, 187, 268, 187, 268, - 187, 268, 187, 277, 187, 277, 187, 268, 183, 6, - 0, 3, 7, 104, 182, 5, 187, 269, 187, 269, - 187, 275, 187, 268, 187, 268, 187, 268, 187, 268, - 187, 277, 187, 277, 187, 277, 187, 277, 187, 268, - 183, 6, 0, 3, 7, 112, 182, 5, 187, 3, - 187, 3, 187, 3, 187, 268, 183, 6, 0, 3, - 7, 116, 182, 5, 187, 3, 187, 268, 183, 6, - 0, 3, 7, 133, 182, 5, 187, 3, 187, 268, - 183, 6, 0, 3, 7, 114, 182, 5, 187, 173, - 187, 173, 187, 269, 187, 268, 183, 6, 0, 3, - 7, 117, 182, 5, 187, 277, 183, 6, 0, 3, - 7, 118, 182, 5, 187, 277, 187, 3, 187, 268, - 183, 6, 0, 3, 7, 113, 182, 5, 187, 3, - 183, 6, 0, 3, 7, 119, 182, 5, 187, 3, - 187, 269, 183, 6, 0, 3, 7, 121, 182, 5, - 187, 3, 187, 3, 187, 3, 183, 6, 0, 3, - 7, 120, 182, 5, 187, 271, 183, 6, 0, 3, - 7, 115, 182, 5, 187, 3, 183, 6, 0, 3, - 7, 41, 182, 5, 187, 3, 187, 3, 183, 6, - 0, 3, 7, 131, 182, 5, 187, 277, 183, 6, - 0, 3, 7, 132, 182, 5, 187, 277, 187, 3, - 183, 6, 0, 3, 7, 130, 182, 5, 187, 3, - 183, 6, 0, 3, 7, 134, 182, 5, 187, 3, - 187, 269, 183, 6, 0, 3, 7, 135, 182, 5, - 187, 3, 187, 269, 187, 269, 183, 6, 0, 3, - 7, 142, 182, 5, 187, 3, 187, 269, 187, 269, - 183, 6, 0, 3, 7, 136, 182, 5, 187, 3, - 187, 269, 183, 6, 0, 3, 7, 146, 182, 5, - 187, 3, 187, 269, 187, 269, 183, 6, 0, 3, - 7, 137, 182, 5, 187, 3, 187, 277, 187, 277, - 187, 268, 187, 268, 183, 6, 0, 3, 7, 138, - 182, 5, 187, 277, 183, 6, 0, 3, 7, 139, - 182, 140, 187, 268, 187, 3, 183, 6, 0, 3, - 7, 141, 182, 5, 187, 277, 187, 268, 183, 6, - 0, 3, 7, 143, 182, 5, 187, 5, 187, 3, - 187, 3, 183, 6, 0, 3, 7, 144, 182, 5, - 187, 5, 187, 3, 183, 6, 0, 3, 7, 145, - 182, 3, 187, 3, 183, 6, 0, 0, 198, 199, - 0, 201, 0, 200, 0, 247, 0, 248, 0, 249, - 0, 252, 0, 253, 0, 254, 0, 257, 0, 266, - 0, 267, 0, 256, 0, 255, 0, 33, 182, 5, - 183, 6, 0, 33, 182, 5, 187, 279, 183, 6, - 0, 4, 5, 188, 202, 189, 6, 0, 4, 5, - 4, 271, 188, 202, 189, 6, 0, 0, 202, 204, - 0, 202, 207, 0, 202, 210, 0, 202, 213, 0, - 202, 216, 0, 202, 219, 0, 202, 222, 0, 202, - 225, 0, 202, 228, 0, 202, 231, 0, 202, 234, - 0, 202, 237, 0, 202, 240, 0, 202, 243, 0, - 269, 0, 203, 187, 269, 0, 0, 80, 182, 269, - 187, 269, 187, 269, 183, 205, 188, 203, 189, 6, - 0, 269, 0, 206, 187, 269, 0, 0, 81, 182, - 269, 187, 269, 187, 269, 183, 208, 188, 206, 189, - 6, 0, 269, 0, 209, 187, 269, 0, 0, 82, - 182, 269, 187, 269, 187, 269, 183, 211, 188, 209, - 189, 6, 0, 269, 0, 212, 187, 269, 0, 0, - 77, 182, 269, 187, 269, 187, 269, 187, 269, 187, - 269, 187, 269, 183, 214, 188, 212, 189, 6, 0, - 269, 0, 215, 187, 269, 0, 0, 78, 182, 269, - 187, 269, 187, 269, 187, 269, 187, 269, 187, 269, - 183, 217, 188, 215, 189, 6, 0, 269, 0, 218, - 187, 269, 0, 0, 79, 182, 269, 187, 269, 187, - 269, 187, 269, 187, 269, 187, 269, 183, 220, 188, - 218, 189, 6, 0, 269, 0, 221, 187, 269, 0, - 0, 74, 182, 269, 187, 269, 187, 269, 187, 269, - 187, 269, 187, 269, 187, 269, 187, 269, 187, 269, - 183, 223, 188, 221, 189, 6, 0, 269, 0, 224, - 187, 269, 0, 0, 75, 182, 269, 187, 269, 187, - 269, 187, 269, 187, 269, 187, 269, 187, 269, 187, - 269, 187, 269, 183, 226, 188, 224, 189, 6, 0, - 269, 0, 227, 187, 269, 0, 0, 76, 182, 269, - 187, 269, 187, 269, 187, 269, 187, 269, 187, 269, - 187, 269, 187, 269, 187, 269, 183, 229, 188, 227, - 189, 6, 0, 269, 0, 230, 187, 269, 0, 0, - 71, 182, 269, 187, 269, 187, 269, 187, 269, 187, - 269, 187, 269, 187, 269, 187, 269, 187, 269, 187, - 269, 187, 269, 187, 269, 183, 232, 188, 230, 189, - 6, 0, 269, 0, 233, 187, 269, 0, 0, 72, - 182, 269, 187, 269, 187, 269, 187, 269, 187, 269, - 187, 269, 187, 269, 187, 269, 187, 269, 187, 269, - 187, 269, 187, 269, 183, 235, 188, 233, 189, 6, - 0, 269, 0, 236, 187, 269, 0, 0, 73, 182, - 269, 187, 269, 187, 269, 187, 269, 187, 269, 187, - 269, 187, 269, 187, 269, 187, 269, 187, 269, 187, - 269, 187, 269, 183, 238, 188, 236, 189, 6, 0, - 283, 0, 239, 187, 283, 0, 0, 83, 182, 269, - 187, 269, 187, 269, 183, 241, 188, 239, 189, 6, - 0, 283, 0, 242, 187, 283, 0, 0, 84, 182, - 269, 187, 269, 187, 269, 187, 269, 183, 244, 188, - 242, 189, 6, 0, 7, 0, 157, 0, 158, 0, - 159, 0, 160, 0, 178, 0, 179, 0, 4, 245, - 269, 6, 0, 4, 184, 269, 185, 245, 269, 6, - 0, 4, 184, 188, 279, 189, 185, 245, 277, 6, - 0, 4, 184, 185, 7, 277, 6, 0, 4, 246, - 6, 0, 4, 184, 269, 185, 246, 6, 0, 4, - 186, 4, 7, 283, 6, 0, 4, 184, 269, 185, - 186, 4, 7, 283, 6, 0, 4, 186, 4, 245, - 269, 6, 0, 4, 184, 269, 185, 186, 4, 245, - 269, 6, 0, 4, 186, 4, 246, 6, 0, 4, - 184, 269, 185, 186, 4, 246, 6, 0, 4, 186, - 92, 186, 4, 7, 280, 6, 0, 4, 184, 269, - 185, 186, 92, 186, 4, 7, 280, 6, 0, 4, - 186, 93, 7, 281, 6, 0, 4, 184, 269, 185, - 186, 93, 7, 281, 6, 0, 57, 182, 4, 183, - 186, 4, 7, 269, 6, 0, 57, 182, 4, 183, - 186, 4, 7, 283, 6, 0, 38, 182, 269, 183, - 7, 271, 6, 0, 53, 38, 182, 269, 183, 7, - 277, 6, 0, 69, 38, 277, 7, 188, 269, 187, - 269, 187, 269, 189, 6, 0, 45, 46, 277, 7, - 269, 6, 0, 41, 182, 269, 183, 7, 277, 6, - 0, 43, 182, 269, 183, 7, 277, 6, 0, 69, - 41, 277, 7, 188, 269, 187, 269, 187, 269, 189, - 6, 0, 39, 182, 269, 183, 7, 277, 6, 0, - 40, 182, 269, 183, 7, 277, 6, 0, 39, 182, - 269, 183, 7, 277, 49, 271, 6, 0, 47, 182, - 269, 183, 7, 188, 269, 187, 269, 187, 5, 187, - 5, 187, 5, 189, 6, 0, 53, 41, 182, 269, - 183, 7, 277, 6, 0, 41, 64, 182, 269, 183, - 7, 277, 6, 0, 85, 182, 269, 183, 7, 277, - 6, 0, 86, 182, 269, 183, 7, 277, 6, 0, - 87, 182, 269, 183, 7, 277, 91, 277, 88, 269, - 6, 0, 49, 42, 182, 269, 183, 7, 277, 6, - 0, 147, 42, 182, 269, 183, 7, 188, 269, 187, - 277, 189, 6, 0, 50, 42, 182, 269, 183, 7, - 277, 6, 0, 87, 42, 89, 90, 182, 269, 183, - 7, 275, 91, 188, 277, 187, 277, 189, 88, 188, - 269, 187, 269, 189, 6, 0, 87, 42, 182, 269, - 183, 7, 275, 91, 188, 277, 187, 277, 189, 88, - 188, 269, 187, 269, 189, 6, 0, 53, 42, 182, - 269, 183, 7, 277, 6, 0, 42, 64, 182, 269, - 183, 7, 277, 6, 0, 52, 44, 182, 269, 183, - 7, 277, 6, 0, 44, 182, 269, 183, 7, 277, - 6, 0, 53, 44, 182, 269, 183, 7, 277, 6, - 0, 59, 271, 188, 250, 189, 0, 58, 188, 271, - 187, 271, 187, 269, 189, 188, 250, 189, 0, 60, - 271, 188, 250, 189, 0, 61, 188, 271, 187, 269, - 189, 188, 250, 189, 0, 252, 0, 251, 0, 249, - 0, 0, 251, 248, 0, 251, 38, 188, 279, 189, - 6, 0, 251, 41, 188, 279, 189, 6, 0, 251, - 42, 188, 279, 189, 6, 0, 63, 188, 251, 189, - 0, 66, 188, 251, 189, 0, 66, 4, 184, 269, - 185, 6, 0, 66, 103, 6, 0, 92, 280, 188, - 251, 189, 0, 4, 283, 6, 0, 4, 269, 6, - 0, 57, 182, 4, 183, 186, 4, 6, 0, 99, - 6, 0, 37, 6, 0, 94, 182, 269, 8, 269, - 183, 0, 94, 182, 269, 8, 269, 8, 269, 183, - 0, 94, 4, 95, 188, 269, 8, 269, 189, 0, - 94, 4, 95, 188, 269, 8, 269, 8, 269, 189, - 0, 96, 0, 102, 4, 0, 100, 0, 101, 4, - 6, 0, 97, 182, 269, 183, 0, 98, 0, 62, - 38, 188, 269, 187, 271, 189, 6, 0, 62, 38, - 188, 269, 187, 271, 187, 271, 187, 269, 189, 6, - 0, 62, 38, 188, 269, 187, 271, 187, 271, 187, - 271, 187, 269, 189, 6, 0, 62, 41, 188, 269, - 187, 271, 189, 6, 0, 62, 41, 188, 269, 187, - 271, 187, 271, 187, 269, 189, 6, 0, 62, 41, - 188, 269, 187, 271, 187, 271, 187, 271, 187, 269, - 189, 6, 0, 0, 62, 41, 188, 269, 187, 271, - 189, 258, 188, 264, 189, 6, 0, 0, 62, 41, - 188, 269, 187, 271, 187, 271, 187, 269, 189, 259, - 188, 264, 189, 6, 0, 0, 62, 41, 188, 269, - 187, 271, 187, 271, 187, 271, 187, 269, 189, 260, - 188, 264, 189, 6, 0, 62, 42, 188, 269, 187, - 271, 189, 6, 0, 62, 42, 188, 269, 187, 271, - 187, 271, 187, 269, 189, 6, 0, 62, 42, 188, - 269, 187, 271, 187, 271, 187, 271, 187, 269, 189, - 6, 0, 0, 62, 42, 188, 269, 187, 271, 189, - 261, 188, 264, 189, 6, 0, 0, 62, 42, 188, - 269, 187, 271, 187, 271, 187, 269, 189, 262, 188, - 264, 189, 6, 0, 0, 62, 42, 188, 269, 187, - 271, 187, 271, 187, 271, 187, 269, 189, 263, 188, - 264, 189, 6, 0, 265, 0, 264, 265, 0, 70, - 188, 277, 187, 277, 187, 277, 189, 6, 0, 70, - 188, 277, 187, 277, 189, 6, 0, 65, 6, 0, - 51, 41, 277, 7, 269, 6, 0, 51, 41, 277, - 7, 269, 54, 56, 269, 6, 0, 51, 41, 277, - 7, 269, 54, 55, 269, 6, 0, 51, 42, 188, - 269, 189, 7, 277, 6, 0, 48, 42, 188, 269, - 189, 7, 277, 6, 0, 51, 44, 188, 269, 189, - 7, 277, 6, 0, 65, 42, 277, 7, 269, 6, - 0, 65, 42, 277, 6, 0, 67, 6, 0, 68, - 6, 0, 107, 0, 108, 0, 109, 0, 110, 0, - 111, 0, 270, 0, 182, 269, 183, 0, 172, 269, - 0, 171, 269, 0, 177, 269, 0, 269, 172, 269, - 0, 269, 171, 269, 0, 269, 173, 269, 0, 269, - 174, 269, 0, 269, 175, 269, 0, 269, 181, 269, - 0, 269, 167, 269, 0, 269, 169, 269, 0, 269, - 168, 269, 0, 269, 170, 269, 0, 269, 164, 269, - 0, 269, 165, 269, 0, 269, 163, 269, 0, 269, - 162, 269, 0, 269, 161, 269, 8, 269, 0, 12, - 182, 269, 183, 0, 13, 182, 269, 183, 0, 14, - 182, 269, 183, 0, 15, 182, 269, 183, 0, 16, - 182, 269, 183, 0, 17, 182, 269, 183, 0, 18, - 182, 269, 183, 0, 19, 182, 269, 183, 0, 20, - 182, 269, 183, 0, 22, 182, 269, 183, 0, 23, - 182, 269, 187, 269, 183, 0, 24, 182, 269, 183, - 0, 25, 182, 269, 183, 0, 26, 182, 269, 183, - 0, 27, 182, 269, 183, 0, 28, 182, 269, 183, - 0, 29, 182, 269, 183, 0, 30, 182, 269, 187, - 269, 183, 0, 31, 182, 269, 187, 269, 183, 0, - 32, 182, 269, 187, 269, 183, 0, 21, 182, 269, - 183, 0, 12, 184, 269, 185, 0, 13, 184, 269, - 185, 0, 14, 184, 269, 185, 0, 15, 184, 269, - 185, 0, 16, 184, 269, 185, 0, 17, 184, 269, - 185, 0, 18, 184, 269, 185, 0, 19, 184, 269, - 185, 0, 20, 184, 269, 185, 0, 22, 184, 269, - 185, 0, 23, 184, 269, 187, 269, 185, 0, 24, - 184, 269, 185, 0, 25, 184, 269, 185, 0, 26, - 184, 269, 185, 0, 27, 184, 269, 185, 0, 28, - 184, 269, 185, 0, 29, 184, 269, 185, 0, 30, - 184, 269, 187, 269, 185, 0, 31, 184, 269, 187, - 269, 185, 0, 32, 184, 269, 187, 269, 185, 0, - 21, 184, 269, 185, 0, 3, 0, 9, 0, 10, - 0, 11, 0, 4, 0, 4, 184, 269, 185, 0, - 4, 246, 0, 4, 184, 269, 185, 246, 0, 4, - 186, 4, 0, 4, 184, 269, 185, 186, 4, 0, - 4, 186, 4, 246, 0, 4, 184, 269, 185, 186, - 4, 246, 0, 272, 0, 172, 271, 0, 171, 271, - 0, 271, 172, 271, 0, 271, 171, 271, 0, 188, - 269, 187, 269, 187, 269, 187, 269, 187, 269, 189, - 0, 188, 269, 187, 269, 187, 269, 187, 269, 189, - 0, 188, 269, 187, 269, 187, 269, 189, 0, 182, - 269, 187, 269, 187, 269, 183, 0, 0, 182, 274, - 183, 0, 5, 0, 274, 187, 5, 0, 0, 188, - 276, 189, 0, 182, 276, 183, 0, 277, 0, 276, - 187, 277, 0, 269, 0, 278, 0, 188, 279, 189, - 0, 172, 188, 279, 189, 0, 269, 8, 269, 0, - 269, 8, 269, 8, 269, 0, 4, 184, 185, 0, - 172, 4, 184, 185, 0, 4, 184, 188, 279, 189, - 185, 0, 172, 4, 184, 188, 279, 189, 185, 0, - 269, 0, 278, 0, 279, 187, 269, 0, 279, 187, - 278, 0, 188, 269, 187, 269, 187, 269, 187, 269, - 189, 0, 188, 269, 187, 269, 187, 269, 189, 0, - 4, 0, 4, 186, 92, 186, 4, 0, 188, 282, - 189, 0, 4, 184, 269, 185, 186, 93, 0, 280, - 0, 282, 187, 280, 0, 5, 0, 35, 182, 283, - 187, 283, 183, 0, 36, 182, 283, 183, 0, 34, - 182, 283, 183, 0, 34, 182, 283, 187, 279, 183, - 0, 34, 182, 4, 186, 4, 183, 0, 34, 182, - 4, 184, 269, 185, 186, 4, 183, 0 + 205, 0, 204, 0, 210, 0, 1, 6, 0, 3, + 0, 184, 3, 0, 160, 0, 163, 164, 203, 203, + 203, 165, 166, 162, 203, 203, 203, 162, 203, 203, + 203, 162, 203, 203, 203, 167, 168, 0, 161, 0, + 0, 205, 206, 0, 207, 0, 209, 0, 208, 0, + 134, 6, 0, 135, 6, 0, 137, 6, 0, 136, + 6, 0, 138, 6, 0, 139, 194, 321, 199, 5, + 195, 6, 0, 140, 194, 321, 195, 6, 0, 141, + 194, 5, 199, 5, 199, 321, 199, 321, 199, 5, + 199, 5, 199, 5, 195, 6, 0, 3, 7, 118, + 194, 5, 199, 319, 195, 6, 0, 3, 7, 117, + 194, 5, 199, 317, 199, 325, 199, 316, 199, 316, + 199, 316, 199, 325, 199, 325, 199, 316, 195, 6, + 0, 3, 7, 116, 194, 5, 199, 317, 199, 317, + 199, 323, 199, 316, 199, 316, 199, 316, 199, 316, + 199, 325, 199, 325, 199, 325, 199, 325, 199, 316, + 195, 6, 0, 3, 7, 124, 194, 5, 199, 3, + 199, 3, 199, 3, 199, 316, 195, 6, 0, 3, + 7, 128, 194, 5, 199, 3, 199, 316, 195, 6, + 0, 3, 7, 145, 194, 5, 199, 3, 199, 316, + 195, 6, 0, 3, 7, 126, 194, 5, 199, 185, + 199, 185, 199, 317, 199, 316, 195, 6, 0, 3, + 7, 129, 194, 5, 199, 325, 195, 6, 0, 3, + 7, 130, 194, 5, 199, 325, 199, 3, 199, 316, + 195, 6, 0, 3, 7, 125, 194, 5, 199, 3, + 195, 6, 0, 3, 7, 131, 194, 5, 199, 3, + 199, 317, 195, 6, 0, 3, 7, 133, 194, 5, + 199, 3, 199, 3, 199, 3, 195, 6, 0, 3, + 7, 132, 194, 5, 199, 319, 195, 6, 0, 3, + 7, 127, 194, 5, 199, 3, 195, 6, 0, 3, + 7, 41, 194, 5, 199, 3, 199, 3, 195, 6, + 0, 3, 7, 143, 194, 5, 199, 325, 195, 6, + 0, 3, 7, 144, 194, 5, 199, 325, 199, 3, + 195, 6, 0, 3, 7, 142, 194, 5, 199, 3, + 195, 6, 0, 3, 7, 146, 194, 5, 199, 3, + 199, 317, 195, 6, 0, 3, 7, 147, 194, 5, + 199, 3, 199, 317, 199, 317, 195, 6, 0, 3, + 7, 154, 194, 5, 199, 3, 199, 317, 199, 317, + 195, 6, 0, 3, 7, 148, 194, 5, 199, 3, + 199, 317, 195, 6, 0, 3, 7, 158, 194, 5, + 199, 3, 199, 317, 199, 317, 195, 6, 0, 3, + 7, 149, 194, 5, 199, 3, 199, 325, 199, 325, + 199, 316, 199, 316, 195, 6, 0, 3, 7, 150, + 194, 5, 199, 325, 195, 6, 0, 3, 7, 151, + 194, 152, 199, 316, 199, 3, 195, 6, 0, 3, + 7, 153, 194, 5, 199, 325, 199, 316, 195, 6, + 0, 3, 7, 155, 194, 5, 199, 5, 199, 3, + 199, 3, 195, 6, 0, 3, 7, 156, 194, 5, + 199, 5, 199, 3, 195, 6, 0, 3, 7, 157, + 194, 3, 199, 3, 195, 6, 0, 0, 210, 211, + 0, 213, 0, 212, 0, 295, 0, 296, 0, 297, + 0, 300, 0, 301, 0, 302, 0, 305, 0, 314, + 0, 315, 0, 304, 0, 303, 0, 33, 194, 5, + 195, 6, 0, 33, 194, 5, 199, 327, 195, 6, + 0, 4, 5, 200, 214, 201, 6, 0, 4, 5, + 4, 319, 200, 214, 201, 6, 0, 0, 214, 216, + 0, 214, 219, 0, 214, 222, 0, 214, 225, 0, + 214, 228, 0, 214, 231, 0, 214, 234, 0, 214, + 237, 0, 214, 240, 0, 214, 243, 0, 214, 246, + 0, 214, 249, 0, 214, 252, 0, 214, 255, 0, + 214, 258, 0, 214, 261, 0, 214, 264, 0, 214, + 267, 0, 214, 270, 0, 214, 273, 0, 214, 276, + 0, 214, 279, 0, 214, 282, 0, 214, 285, 0, + 214, 288, 0, 214, 291, 0, 317, 0, 215, 199, + 317, 0, 0, 71, 194, 317, 199, 317, 199, 317, + 195, 217, 200, 215, 201, 6, 0, 317, 0, 218, + 199, 317, 0, 0, 72, 194, 317, 199, 317, 199, + 317, 195, 220, 200, 218, 201, 6, 0, 317, 0, + 221, 199, 317, 0, 0, 73, 194, 317, 199, 317, + 199, 317, 195, 223, 200, 221, 201, 6, 0, 317, + 0, 224, 199, 317, 0, 0, 74, 194, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 195, + 226, 200, 224, 201, 6, 0, 317, 0, 227, 199, + 317, 0, 0, 75, 194, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 195, 229, 200, 227, + 201, 6, 0, 317, 0, 230, 199, 317, 0, 0, + 76, 194, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 195, 232, 200, 230, 201, 6, 0, + 317, 0, 233, 199, 317, 0, 0, 77, 194, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 195, 235, 200, 233, + 201, 6, 0, 317, 0, 236, 199, 317, 0, 0, + 78, 194, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 195, + 238, 200, 236, 201, 6, 0, 317, 0, 239, 199, + 317, 0, 0, 79, 194, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 195, 241, 200, 239, 201, 6, 0, 317, + 0, 242, 199, 317, 0, 0, 80, 194, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 195, 244, 200, 242, 201, 6, 0, 317, 0, + 245, 199, 317, 0, 0, 81, 194, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 195, 247, 200, 245, 201, 6, 0, 317, 0, 248, + 199, 317, 0, 0, 82, 194, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 195, + 250, 200, 248, 201, 6, 0, 317, 0, 251, 199, + 317, 0, 0, 83, 194, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 195, 253, + 200, 251, 201, 6, 0, 317, 0, 254, 199, 317, + 0, 0, 84, 194, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 195, 256, 200, + 254, 201, 6, 0, 317, 0, 257, 199, 317, 0, + 0, 85, 194, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 195, 259, 200, 257, + 201, 6, 0, 317, 0, 260, 199, 317, 0, 0, + 86, 194, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 195, + 262, 200, 260, 201, 6, 0, 317, 0, 263, 199, + 317, 0, 0, 87, 194, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 195, 265, 200, 263, 201, 6, 0, 317, + 0, 266, 199, 317, 0, 0, 88, 194, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 195, 268, 200, 266, 201, + 6, 0, 317, 0, 269, 199, 317, 0, 0, 89, + 194, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 195, 271, 200, 269, + 201, 6, 0, 317, 0, 272, 199, 317, 0, 0, + 90, 194, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 195, 274, 200, + 272, 201, 6, 0, 317, 0, 275, 199, 317, 0, + 0, 91, 194, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 195, 277, + 200, 275, 201, 6, 0, 317, 0, 278, 199, 317, + 0, 0, 92, 194, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 195, 280, 200, 278, 201, 6, 0, + 317, 0, 281, 199, 317, 0, 0, 93, 194, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 199, 317, + 199, 317, 199, 317, 199, 317, 199, 317, 195, 283, + 200, 281, 201, 6, 0, 317, 0, 284, 199, 317, + 0, 0, 94, 194, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 199, + 317, 199, 317, 195, 286, 200, 284, 201, 6, 0, + 331, 0, 287, 199, 331, 0, 0, 95, 194, 317, + 199, 317, 199, 317, 195, 289, 200, 287, 201, 6, + 0, 331, 0, 290, 199, 331, 0, 0, 96, 194, + 317, 199, 317, 199, 317, 199, 317, 195, 292, 200, + 290, 201, 6, 0, 7, 0, 169, 0, 170, 0, + 171, 0, 172, 0, 190, 0, 191, 0, 4, 293, + 317, 6, 0, 4, 196, 317, 197, 293, 317, 6, + 0, 4, 196, 200, 327, 201, 197, 293, 325, 6, + 0, 4, 196, 197, 7, 325, 6, 0, 4, 294, + 6, 0, 4, 196, 317, 197, 294, 6, 0, 4, + 198, 4, 7, 331, 6, 0, 4, 196, 317, 197, + 198, 4, 7, 331, 6, 0, 4, 198, 4, 293, + 317, 6, 0, 4, 196, 317, 197, 198, 4, 293, + 317, 6, 0, 4, 198, 4, 294, 6, 0, 4, + 196, 317, 197, 198, 4, 294, 6, 0, 4, 198, + 104, 198, 4, 7, 328, 6, 0, 4, 196, 317, + 197, 198, 104, 198, 4, 7, 328, 6, 0, 4, + 198, 105, 7, 329, 6, 0, 4, 196, 317, 197, + 198, 105, 7, 329, 6, 0, 57, 194, 4, 195, + 198, 4, 7, 317, 6, 0, 57, 194, 4, 195, + 198, 4, 7, 331, 6, 0, 38, 194, 317, 195, + 7, 319, 6, 0, 53, 38, 194, 317, 195, 7, + 325, 6, 0, 69, 38, 325, 7, 200, 317, 199, + 317, 199, 317, 201, 6, 0, 45, 46, 325, 7, + 317, 6, 0, 41, 194, 317, 195, 7, 325, 6, + 0, 43, 194, 317, 195, 7, 325, 6, 0, 69, + 41, 325, 7, 200, 317, 199, 317, 199, 317, 201, + 6, 0, 39, 194, 317, 195, 7, 325, 6, 0, + 40, 194, 317, 195, 7, 325, 6, 0, 39, 194, + 317, 195, 7, 325, 49, 319, 6, 0, 47, 194, + 317, 195, 7, 200, 317, 199, 317, 199, 5, 199, + 5, 199, 5, 201, 6, 0, 53, 41, 194, 317, + 195, 7, 325, 6, 0, 41, 64, 194, 317, 195, + 7, 325, 6, 0, 97, 194, 317, 195, 7, 325, + 6, 0, 98, 194, 317, 195, 7, 325, 6, 0, + 99, 194, 317, 195, 7, 325, 103, 325, 100, 317, + 6, 0, 49, 42, 194, 317, 195, 7, 325, 6, + 0, 159, 42, 194, 317, 195, 7, 200, 317, 199, + 325, 201, 6, 0, 50, 42, 194, 317, 195, 7, + 325, 6, 0, 99, 42, 101, 102, 194, 317, 195, + 7, 323, 103, 200, 325, 199, 325, 201, 100, 200, + 317, 199, 317, 201, 6, 0, 99, 42, 194, 317, + 195, 7, 323, 103, 200, 325, 199, 325, 201, 100, + 200, 317, 199, 317, 201, 6, 0, 53, 42, 194, + 317, 195, 7, 325, 6, 0, 42, 64, 194, 317, + 195, 7, 325, 6, 0, 52, 44, 194, 317, 195, + 7, 325, 6, 0, 44, 194, 317, 195, 7, 325, + 6, 0, 53, 44, 194, 317, 195, 7, 325, 6, + 0, 59, 319, 200, 298, 201, 0, 58, 200, 319, + 199, 319, 199, 317, 201, 200, 298, 201, 0, 60, + 319, 200, 298, 201, 0, 61, 200, 319, 199, 317, + 201, 200, 298, 201, 0, 300, 0, 299, 0, 297, + 0, 0, 299, 296, 0, 299, 38, 200, 327, 201, + 6, 0, 299, 41, 200, 327, 201, 6, 0, 299, + 42, 200, 327, 201, 6, 0, 63, 200, 299, 201, + 0, 66, 200, 299, 201, 0, 66, 4, 196, 317, + 197, 6, 0, 66, 115, 6, 0, 104, 328, 200, + 299, 201, 0, 4, 331, 6, 0, 4, 317, 6, + 0, 57, 194, 4, 195, 198, 4, 6, 0, 111, + 6, 0, 37, 6, 0, 106, 194, 317, 8, 317, + 195, 0, 106, 194, 317, 8, 317, 8, 317, 195, + 0, 106, 4, 107, 200, 317, 8, 317, 201, 0, + 106, 4, 107, 200, 317, 8, 317, 8, 317, 201, + 0, 108, 0, 114, 4, 0, 112, 0, 113, 4, + 6, 0, 109, 194, 317, 195, 0, 110, 0, 62, + 38, 200, 317, 199, 319, 201, 6, 0, 62, 38, + 200, 317, 199, 319, 199, 319, 199, 317, 201, 6, + 0, 62, 38, 200, 317, 199, 319, 199, 319, 199, + 319, 199, 317, 201, 6, 0, 62, 41, 200, 317, + 199, 319, 201, 6, 0, 62, 41, 200, 317, 199, + 319, 199, 319, 199, 317, 201, 6, 0, 62, 41, + 200, 317, 199, 319, 199, 319, 199, 319, 199, 317, + 201, 6, 0, 0, 62, 41, 200, 317, 199, 319, + 201, 306, 200, 312, 201, 6, 0, 0, 62, 41, + 200, 317, 199, 319, 199, 319, 199, 317, 201, 307, + 200, 312, 201, 6, 0, 0, 62, 41, 200, 317, + 199, 319, 199, 319, 199, 319, 199, 317, 201, 308, + 200, 312, 201, 6, 0, 62, 42, 200, 317, 199, + 319, 201, 6, 0, 62, 42, 200, 317, 199, 319, + 199, 319, 199, 317, 201, 6, 0, 62, 42, 200, + 317, 199, 319, 199, 319, 199, 319, 199, 317, 201, + 6, 0, 0, 62, 42, 200, 317, 199, 319, 201, + 309, 200, 312, 201, 6, 0, 0, 62, 42, 200, + 317, 199, 319, 199, 319, 199, 317, 201, 310, 200, + 312, 201, 6, 0, 0, 62, 42, 200, 317, 199, + 319, 199, 319, 199, 319, 199, 317, 201, 311, 200, + 312, 201, 6, 0, 313, 0, 312, 313, 0, 70, + 200, 325, 199, 325, 199, 325, 201, 6, 0, 70, + 200, 325, 199, 325, 201, 6, 0, 65, 6, 0, + 51, 41, 325, 7, 317, 6, 0, 51, 41, 325, + 7, 317, 54, 56, 317, 6, 0, 51, 41, 325, + 7, 317, 54, 55, 317, 6, 0, 51, 42, 200, + 317, 201, 7, 325, 6, 0, 48, 42, 200, 317, + 201, 7, 325, 6, 0, 51, 44, 200, 317, 201, + 7, 325, 6, 0, 65, 42, 325, 7, 317, 6, + 0, 65, 42, 325, 6, 0, 67, 6, 0, 68, + 6, 0, 119, 0, 120, 0, 121, 0, 122, 0, + 123, 0, 318, 0, 194, 317, 195, 0, 184, 317, + 0, 183, 317, 0, 189, 317, 0, 317, 184, 317, + 0, 317, 183, 317, 0, 317, 185, 317, 0, 317, + 186, 317, 0, 317, 187, 317, 0, 317, 193, 317, + 0, 317, 179, 317, 0, 317, 181, 317, 0, 317, + 180, 317, 0, 317, 182, 317, 0, 317, 176, 317, + 0, 317, 177, 317, 0, 317, 175, 317, 0, 317, + 174, 317, 0, 317, 173, 317, 8, 317, 0, 12, + 194, 317, 195, 0, 13, 194, 317, 195, 0, 14, + 194, 317, 195, 0, 15, 194, 317, 195, 0, 16, + 194, 317, 195, 0, 17, 194, 317, 195, 0, 18, + 194, 317, 195, 0, 19, 194, 317, 195, 0, 20, + 194, 317, 195, 0, 22, 194, 317, 195, 0, 23, + 194, 317, 199, 317, 195, 0, 24, 194, 317, 195, + 0, 25, 194, 317, 195, 0, 26, 194, 317, 195, + 0, 27, 194, 317, 195, 0, 28, 194, 317, 195, + 0, 29, 194, 317, 195, 0, 30, 194, 317, 199, + 317, 195, 0, 31, 194, 317, 199, 317, 195, 0, + 32, 194, 317, 199, 317, 195, 0, 21, 194, 317, + 195, 0, 12, 196, 317, 197, 0, 13, 196, 317, + 197, 0, 14, 196, 317, 197, 0, 15, 196, 317, + 197, 0, 16, 196, 317, 197, 0, 17, 196, 317, + 197, 0, 18, 196, 317, 197, 0, 19, 196, 317, + 197, 0, 20, 196, 317, 197, 0, 22, 196, 317, + 197, 0, 23, 196, 317, 199, 317, 197, 0, 24, + 196, 317, 197, 0, 25, 196, 317, 197, 0, 26, + 196, 317, 197, 0, 27, 196, 317, 197, 0, 28, + 196, 317, 197, 0, 29, 196, 317, 197, 0, 30, + 196, 317, 199, 317, 197, 0, 31, 196, 317, 199, + 317, 197, 0, 32, 196, 317, 199, 317, 197, 0, + 21, 196, 317, 197, 0, 3, 0, 9, 0, 10, + 0, 11, 0, 4, 0, 4, 196, 317, 197, 0, + 4, 294, 0, 4, 196, 317, 197, 294, 0, 4, + 198, 4, 0, 4, 196, 317, 197, 198, 4, 0, + 4, 198, 4, 294, 0, 4, 196, 317, 197, 198, + 4, 294, 0, 320, 0, 184, 319, 0, 183, 319, + 0, 319, 184, 319, 0, 319, 183, 319, 0, 200, + 317, 199, 317, 199, 317, 199, 317, 199, 317, 201, + 0, 200, 317, 199, 317, 199, 317, 199, 317, 201, + 0, 200, 317, 199, 317, 199, 317, 201, 0, 194, + 317, 199, 317, 199, 317, 195, 0, 0, 194, 322, + 195, 0, 5, 0, 322, 199, 5, 0, 0, 200, + 324, 201, 0, 194, 324, 195, 0, 325, 0, 324, + 199, 325, 0, 317, 0, 326, 0, 200, 327, 201, + 0, 184, 200, 327, 201, 0, 317, 8, 317, 0, + 317, 8, 317, 8, 317, 0, 4, 196, 197, 0, + 184, 4, 196, 197, 0, 4, 196, 200, 327, 201, + 197, 0, 184, 4, 196, 200, 327, 201, 197, 0, + 317, 0, 326, 0, 327, 199, 317, 0, 327, 199, + 326, 0, 200, 317, 199, 317, 199, 317, 199, 317, + 201, 0, 200, 317, 199, 317, 199, 317, 201, 0, + 4, 0, 4, 198, 104, 198, 4, 0, 200, 330, + 201, 0, 4, 196, 317, 197, 198, 105, 0, 328, + 0, 330, 199, 328, 0, 5, 0, 35, 194, 331, + 199, 331, 195, 0, 36, 194, 331, 195, 0, 34, + 194, 331, 195, 0, 34, 194, 331, 199, 327, 195, + 0, 34, 194, 4, 198, 4, 195, 0, 34, 194, + 4, 196, 317, 197, 198, 4, 195, 0 }; #endif @@ -641,45 +723,51 @@ static const short yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const short yyrline[] = { - 0, 168, 170, 171, 172, 177, 179, 182, 190, 204, - 214, 216, 219, 221, 222, 225, 231, 236, 237, 238, - 241, 245, 248, 254, 259, 265, 273, 278, 282, 288, - 293, 297, 302, 306, 309, 314, 318, 322, 326, 331, - 335, 338, 342, 346, 350, 354, 358, 362, 365, 369, - 372, 376, 379, 386, 390, 396, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 412, 417, - 432, 437, 443, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 464, 467, 471, - 471, 483, 486, 490, 490, 502, 505, 509, 509, 521, - 524, 528, 528, 542, 545, 549, 549, 563, 566, 570, - 570, 584, 587, 591, 591, 609, 612, 616, 616, 634, - 637, 641, 641, 659, 662, 666, 666, 685, 688, 692, - 692, 711, 714, 718, 718, 737, 743, 750, 750, 764, - 770, 777, 777, 794, 796, 797, 798, 799, 802, 804, - 807, 838, 872, 919, 934, 943, 958, 970, 984, 1007, - 1031, 1043, 1057, 1069, 1083, 1103, 1125, 1137, 1153, 1164, - 1170, 1189, 1203, 1209, 1215, 1234, 1240, 1246, 1262, 1269, - 1275, 1281, 1292, 1303, 1328, 1334, 1353, 1374, 1382, 1388, - 1394, 1403, 1409, 1415, 1425, 1431, 1436, 1441, 1448, 1450, - 1451, 1454, 1459, 1464, 1479, 1494, 1513, 1529, 1537, 1542, - 1550, 1562, 1631, 1651, 1658, 1662, 1682, 1694, 1704, 1725, - 1746, 1767, 1773, 1778, 1783, 1787, 1795, 1806, 1813, 1823, - 1828, 1833, 1838, 1838, 1848, 1848, 1858, 1858, 1871, 1876, - 1881, 1886, 1886, 1897, 1897, 1909, 1909, 1923, 1927, 1932, - 1959, 1983, 1991, 2010, 2028, 2046, 2068, 2089, 2110, 2124, - 2143, 2148, 2157, 2159, 2160, 2161, 2162, 2165, 2167, 2168, - 2169, 2170, 2171, 2172, 2173, 2174, 2181, 2182, 2183, 2184, - 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, - 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, - 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2215, - 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, - 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2239, - 2244, 2245, 2246, 2250, 2261, 2278, 2289, 2308, 2324, 2340, - 2356, 2373, 2378, 2382, 2386, 2390, 2396, 2401, 2405, 2409, - 2415, 2419, 2424, 2428, 2433, 2437, 2441, 2447, 2453, 2460, - 2466, 2470, 2474, 2484, 2491, 2502, 2516, 2532, 2552, 2576, - 2582, 2586, 2590, 2601, 2606, 2617, 2622, 2640, 2645, 2658, - 2664, 2670, 2675, 2683, 2696, 2700, 2718, 2732 + 0, 175, 177, 178, 179, 184, 186, 189, 197, 211, + 221, 223, 226, 228, 229, 232, 238, 243, 244, 245, + 248, 252, 255, 261, 266, 272, 280, 285, 289, 295, + 300, 304, 309, 313, 316, 321, 325, 329, 333, 338, + 342, 345, 349, 353, 357, 361, 365, 369, 372, 376, + 379, 383, 386, 393, 397, 403, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 419, 424, + 439, 444, 450, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 483, + 486, 490, 490, 502, 505, 509, 509, 521, 524, 528, + 528, 540, 543, 547, 547, 561, 564, 568, 568, 582, + 585, 589, 589, 603, 606, 610, 610, 628, 631, 635, + 635, 653, 656, 660, 660, 678, 681, 685, 685, 704, + 707, 711, 711, 730, 733, 737, 737, 756, 759, 763, + 763, 782, 785, 789, 789, 808, 811, 815, 815, 834, + 837, 841, 841, 870, 873, 877, 877, 906, 909, 913, + 913, 942, 945, 949, 949, 973, 976, 980, 980, 1004, + 1007, 1011, 1011, 1035, 1038, 1042, 1042, 1065, 1068, 1072, + 1072, 1095, 1098, 1102, 1102, 1125, 1131, 1138, 1138, 1152, + 1158, 1165, 1165, 1182, 1184, 1185, 1186, 1187, 1190, 1192, + 1195, 1226, 1260, 1307, 1322, 1331, 1346, 1358, 1372, 1395, + 1419, 1431, 1445, 1457, 1471, 1491, 1513, 1525, 1541, 1552, + 1558, 1577, 1591, 1597, 1603, 1622, 1628, 1634, 1650, 1657, + 1663, 1669, 1680, 1691, 1716, 1722, 1741, 1762, 1770, 1776, + 1782, 1791, 1797, 1803, 1813, 1819, 1824, 1829, 1836, 1838, + 1839, 1842, 1847, 1852, 1867, 1882, 1901, 1917, 1925, 1930, + 1938, 1950, 2019, 2039, 2046, 2050, 2070, 2082, 2092, 2113, + 2134, 2155, 2161, 2166, 2171, 2175, 2183, 2194, 2201, 2211, + 2216, 2221, 2226, 2226, 2236, 2236, 2246, 2246, 2259, 2264, + 2269, 2274, 2274, 2285, 2285, 2297, 2297, 2311, 2315, 2320, + 2347, 2371, 2379, 2398, 2416, 2434, 2456, 2477, 2498, 2512, + 2531, 2536, 2545, 2547, 2548, 2549, 2550, 2553, 2555, 2556, + 2557, 2558, 2559, 2560, 2561, 2562, 2569, 2570, 2571, 2572, + 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582, + 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591, 2592, + 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2602, 2603, + 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611, 2612, 2613, + 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2627, + 2632, 2633, 2634, 2638, 2649, 2666, 2677, 2696, 2712, 2728, + 2744, 2761, 2766, 2770, 2774, 2778, 2784, 2789, 2793, 2797, + 2803, 2807, 2812, 2816, 2821, 2825, 2829, 2835, 2841, 2848, + 2854, 2858, 2862, 2872, 2879, 2890, 2904, 2920, 2940, 2964, + 2970, 2974, 2978, 2989, 2994, 3005, 3010, 3028, 3033, 3046, + 3052, 3058, 3063, 3071, 3084, 3088, 3106, 3120 }; #endif @@ -700,14 +788,18 @@ static const char *const yytname[] = "tComplex", "tPhysical", "tUsing", "tBump", "tProgression", "tPlugin", "tRotate", "tTranslate", "tSymmetry", "tDilate", "tExtrude", "tDuplicata", "tLoop", "tRecombine", "tDelete", "tCoherence", - "tIntersect", "tAttractor", "tLayers", "tScalarTetrahedron", - "tVectorTetrahedron", "tTensorTetrahedron", "tScalarTriangle", - "tVectorTriangle", "tTensorTriangle", "tScalarLine", "tVectorLine", - "tTensorLine", "tScalarPoint", "tVectorPoint", "tTensorPoint", - "tText2D", "tText3D", "tBSpline", "tBezier", "tNurbs", "tOrder", - "tWith", "tBounds", "tKnots", "tColor", "tColorTable", "tFor", "tIn", - "tEndFor", "tIf", "tEndIf", "tExit", "tReturn", "tCall", "tFunction", - "tMesh", "tB_SPLINE_SURFACE_WITH_KNOTS", "tB_SPLINE_CURVE_WITH_KNOTS", + "tIntersect", "tAttractor", "tLayers", "tScalarPoint", "tVectorPoint", + "tTensorPoint", "tScalarLine", "tVectorLine", "tTensorLine", + "tScalarTriangle", "tVectorTriangle", "tTensorTriangle", + "tScalarQuadrangle", "tVectorQuadrangle", "tTensorQuadrangle", + "tScalarTetrahedron", "tVectorTetrahedron", "tTensorTetrahedron", + "tScalarHexahedron", "tVectorHexahedron", "tTensorHexahedron", + "tScalarPrism", "tVectorPrism", "tTensorPrism", "tScalarPyramid", + "tVectorPyramid", "tTensorPyramid", "tText2D", "tText3D", "tBSpline", + "tBezier", "tNurbs", "tOrder", "tWith", "tBounds", "tKnots", "tColor", + "tColorTable", "tFor", "tIn", "tEndFor", "tIf", "tEndIf", "tExit", + "tReturn", "tCall", "tFunction", "tMesh", + "tB_SPLINE_SURFACE_WITH_KNOTS", "tB_SPLINE_CURVE_WITH_KNOTS", "tCARTESIAN_POINT", "tTRUE", "tFALSE", "tUNSPECIFIED", "tU", "tV", "tEDGE_CURVE", "tVERTEX_POINT", "tORIENTED_EDGE", "tPLANE", "tFACE_OUTER_BOUND", "tEDGE_LOOP", "tADVANCED_FACE", "tVECTOR", @@ -734,18 +826,28 @@ static const char *const yytname[] = "VectorLineValues", "VectorLine", "@5", "TensorLineValues", "TensorLine", "@6", "ScalarTriangleValues", "ScalarTriangle", "@7", "VectorTriangleValues", "VectorTriangle", "@8", "TensorTriangleValues", - "TensorTriangle", "@9", "ScalarTetrahedronValues", "ScalarTetrahedron", - "@10", "VectorTetrahedronValues", "VectorTetrahedron", "@11", - "TensorTetrahedronValues", "TensorTetrahedron", "@12", "Text2DValues", - "Text2D", "@13", "Text3DValues", "Text3D", "@14", "NumericAffectation", - "NumericIncrement", "Affectation", "Shape", "Transform", - "MultipleShape", "ListOfShapes", "Duplicata", "Delete", "Colorify", - "Command", "Loop", "Extrude", "@15", "@16", "@17", "@18", "@19", "@20", - "ExtrudeParameters", "ExtrudeParameter", "Transfini", "Coherence", - "BoolExpr", "FExpr", "FExpr_Single", "VExpr", "VExpr_Single", - "ListOfStrings", "RecursiveListOfStrings", "ListOfListOfDouble", - "RecursiveListOfListOfDouble", "ListOfDouble", "FExpr_Multi", - "RecursiveListOfDouble", "ColorExpr", "ListOfColor", + "TensorTriangle", "@9", "ScalarQuadrangleValues", "ScalarQuadrangle", + "@10", "VectorQuadrangleValues", "VectorQuadrangle", "@11", + "TensorQuadrangleValues", "TensorQuadrangle", "@12", + "ScalarTetrahedronValues", "ScalarTetrahedron", "@13", + "VectorTetrahedronValues", "VectorTetrahedron", "@14", + "TensorTetrahedronValues", "TensorTetrahedron", "@15", + "ScalarHexahedronValues", "ScalarHexahedron", "@16", + "VectorHexahedronValues", "VectorHexahedron", "@17", + "TensorHexahedronValues", "TensorHexahedron", "@18", + "ScalarPrismValues", "ScalarPrism", "@19", "VectorPrismValues", + "VectorPrism", "@20", "TensorPrismValues", "TensorPrism", "@21", + "ScalarPyramidValues", "ScalarPyramid", "@22", "VectorPyramidValues", + "VectorPyramid", "@23", "TensorPyramidValues", "TensorPyramid", "@24", + "Text2DValues", "Text2D", "@25", "Text3DValues", "Text3D", "@26", + "NumericAffectation", "NumericIncrement", "Affectation", "Shape", + "Transform", "MultipleShape", "ListOfShapes", "Duplicata", "Delete", + "Colorify", "Command", "Loop", "Extrude", "@27", "@28", "@29", "@30", + "@31", "@32", "ExtrudeParameters", "ExtrudeParameter", "Transfini", + "Coherence", "BoolExpr", "FExpr", "FExpr_Single", "VExpr", + "VExpr_Single", "ListOfStrings", "RecursiveListOfStrings", + "ListOfListOfDouble", "RecursiveListOfListOfDouble", "ListOfDouble", + "FExpr_Multi", "RecursiveListOfDouble", "ColorExpr", "ListOfColor", "RecursiveListOfColor", "StringExpr", 0 }; #endif @@ -753,45 +855,51 @@ static const char *const yytname[] = /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const short yyr1[] = { - 0, 190, 190, 190, 190, 191, 191, 192, 192, 192, - 193, 193, 194, 194, 194, 195, 195, 195, 195, 195, - 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 198, 198, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 200, 200, - 201, 201, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 203, 203, 205, - 204, 206, 206, 208, 207, 209, 209, 211, 210, 212, - 212, 214, 213, 215, 215, 217, 216, 218, 218, 220, - 219, 221, 221, 223, 222, 224, 224, 226, 225, 227, - 227, 229, 228, 230, 230, 232, 231, 233, 233, 235, - 234, 236, 236, 238, 237, 239, 239, 241, 240, 242, - 242, 244, 243, 245, 245, 245, 245, 245, 246, 246, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 249, 249, 249, 249, 250, 250, - 250, 251, 251, 251, 251, 251, 252, 253, 253, 253, - 254, 255, 255, 255, 255, 255, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 257, 257, 257, 257, - 257, 257, 258, 257, 259, 257, 260, 257, 257, 257, - 257, 261, 257, 262, 257, 263, 257, 264, 264, 265, - 265, 265, 266, 266, 266, 266, 266, 266, 266, 266, - 267, 267, 268, 268, 268, 268, 268, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 270, - 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, - 270, 271, 271, 271, 271, 271, 272, 272, 272, 272, - 273, 273, 274, 274, 275, 275, 275, 276, 276, 277, - 277, 277, 277, 278, 278, 278, 278, 278, 278, 279, - 279, 279, 279, 280, 280, 280, 280, 281, 281, 282, - 282, 283, 283, 283, 283, 283, 283, 283 + 0, 202, 202, 202, 202, 203, 203, 204, 204, 204, + 205, 205, 206, 206, 206, 207, 207, 207, 207, 207, + 208, 208, 208, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 210, 210, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 212, 212, + 213, 213, 214, 214, 214, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, + 214, 214, 214, 214, 214, 214, 214, 214, 214, 215, + 215, 217, 216, 218, 218, 220, 219, 221, 221, 223, + 222, 224, 224, 226, 225, 227, 227, 229, 228, 230, + 230, 232, 231, 233, 233, 235, 234, 236, 236, 238, + 237, 239, 239, 241, 240, 242, 242, 244, 243, 245, + 245, 247, 246, 248, 248, 250, 249, 251, 251, 253, + 252, 254, 254, 256, 255, 257, 257, 259, 258, 260, + 260, 262, 261, 263, 263, 265, 264, 266, 266, 268, + 267, 269, 269, 271, 270, 272, 272, 274, 273, 275, + 275, 277, 276, 278, 278, 280, 279, 281, 281, 283, + 282, 284, 284, 286, 285, 287, 287, 289, 288, 290, + 290, 292, 291, 293, 293, 293, 293, 293, 294, 294, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 297, 297, 297, 297, 298, 298, + 298, 299, 299, 299, 299, 299, 300, 301, 301, 301, + 302, 303, 303, 303, 303, 303, 304, 304, 304, 304, + 304, 304, 304, 304, 304, 304, 305, 305, 305, 305, + 305, 305, 306, 305, 307, 305, 308, 305, 305, 305, + 305, 309, 305, 310, 305, 311, 305, 312, 312, 313, + 313, 313, 314, 314, 314, 314, 314, 314, 314, 314, + 315, 315, 316, 316, 316, 316, 316, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 319, 319, 319, 319, 319, 320, 320, 320, 320, + 321, 321, 322, 322, 323, 323, 323, 324, 324, 325, + 325, 325, 325, 326, 326, 326, 326, 326, 326, 327, + 327, 327, 327, 328, 328, 328, 328, 329, 329, 330, + 330, 331, 331, 331, 331, 331, 331, 331 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -805,12 +913,18 @@ static const short yyr2[] = 13, 11, 9, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 7, 6, 8, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 3, 0, - 13, 1, 3, 0, 13, 1, 3, 0, 13, 1, - 3, 0, 19, 1, 3, 0, 19, 1, 3, 0, - 19, 1, 3, 0, 25, 1, 3, 0, 25, 1, - 3, 0, 25, 1, 3, 0, 31, 1, 3, 0, - 31, 1, 3, 0, 31, 1, 3, 0, 13, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 3, 0, 13, 1, 3, 0, 13, 1, 3, 0, + 13, 1, 3, 0, 19, 1, 3, 0, 19, 1, + 3, 0, 19, 1, 3, 0, 25, 1, 3, 0, + 25, 1, 3, 0, 25, 1, 3, 0, 31, 1, + 3, 0, 31, 1, 3, 0, 31, 1, 3, 0, + 31, 1, 3, 0, 31, 1, 3, 0, 31, 1, + 3, 0, 55, 1, 3, 0, 55, 1, 3, 0, + 55, 1, 3, 0, 43, 1, 3, 0, 43, 1, + 3, 0, 43, 1, 3, 0, 37, 1, 3, 0, + 37, 1, 3, 0, 37, 1, 3, 0, 13, 1, 3, 0, 15, 1, 1, 1, 1, 1, 1, 1, 4, 7, 9, 6, 3, 6, 6, 9, 6, 9, 5, 8, 8, 11, 6, 9, 9, 9, 7, 8, @@ -848,906 +962,1110 @@ static const short yydefact[] = 12, 14, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, - 225, 0, 222, 0, 0, 0, 54, 56, 55, 57, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, + 285, 0, 282, 0, 0, 0, 54, 56, 55, 57, 58, 59, 60, 61, 62, 67, 66, 63, 64, 65, - 5, 0, 0, 0, 15, 16, 18, 17, 19, 350, - 350, 0, 329, 333, 381, 143, 330, 331, 332, 0, + 5, 0, 0, 0, 15, 16, 18, 17, 19, 410, + 410, 0, 389, 393, 441, 203, 390, 391, 392, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 204, 205, 206, 207, 0, 0, 0, + 208, 209, 0, 0, 0, 0, 0, 0, 327, 0, + 0, 275, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 401, 0, 0, 0, 0, 0, 261, 0, 0, 0, + 261, 320, 321, 0, 0, 0, 0, 0, 0, 435, + 0, 0, 0, 0, 0, 274, 0, 281, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 144, 145, 146, 147, 0, 0, 0, - 148, 149, 0, 0, 0, 0, 0, 0, 267, 0, - 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 341, 0, 0, 0, 0, 0, 201, 0, 0, 0, - 201, 260, 261, 0, 0, 0, 0, 0, 0, 375, - 0, 0, 0, 0, 0, 214, 0, 221, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 395, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 335, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 330, 329, 331, 0, 0, + 0, 0, 0, 0, 0, 0, 214, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 393, 0, 0, 419, 0, 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 403, 402, 0, 0, 0, 0, 261, + 261, 0, 0, 0, 0, 0, 0, 0, 269, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 0, 0, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 270, 269, 271, 0, 0, - 0, 0, 0, 0, 0, 0, 154, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 333, 0, 0, 359, 0, 360, 0, + 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, + 0, 0, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 343, 342, 0, 0, 0, 0, 201, - 201, 0, 0, 0, 0, 0, 0, 0, 209, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, - 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 352, 0, 0, 0, - 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 441, 0, + 0, 0, 328, 0, 0, 429, 430, 0, 0, 203, + 0, 0, 0, 0, 210, 0, 345, 344, 342, 343, + 338, 340, 339, 341, 333, 332, 334, 335, 336, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 405, 404, 260, 0, 259, 258, 0, 0, + 0, 0, 0, 0, 0, 0, 266, 262, 319, 0, + 0, 267, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 381, 0, - 0, 0, 268, 0, 0, 369, 370, 0, 0, 143, - 0, 0, 0, 0, 150, 0, 285, 284, 282, 283, - 278, 280, 279, 281, 273, 272, 274, 275, 276, 277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 411, 0, 0, + 21, 0, 394, 399, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 344, 200, 0, 199, 198, 0, 0, - 0, 0, 0, 0, 0, 0, 206, 202, 259, 0, - 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 97, 98, 347, 368, + 348, 369, 349, 370, 350, 371, 351, 372, 352, 373, + 353, 374, 354, 375, 355, 376, 367, 388, 356, 377, + 0, 0, 358, 379, 359, 380, 360, 381, 361, 382, + 362, 383, 363, 384, 0, 0, 0, 0, 0, 0, + 0, 0, 444, 0, 0, 443, 0, 0, 0, 0, + 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, + 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 425, 0, 0, 0, 421, 423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 351, 0, 0, - 21, 0, 334, 339, 72, 0, 0, 0, 0, 0, + 0, 0, 0, 254, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 287, 308, 288, 309, 289, 310, - 290, 311, 291, 312, 292, 313, 293, 314, 294, 315, - 295, 316, 307, 328, 296, 317, 0, 0, 298, 319, - 299, 320, 300, 321, 301, 322, 302, 323, 303, 324, - 0, 0, 0, 0, 0, 0, 0, 0, 384, 0, - 0, 383, 0, 0, 0, 0, 0, 0, 0, 0, - 160, 0, 0, 0, 0, 0, 68, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 365, 0, 0, 0, - 361, 363, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, - 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, + 0, 0, 0, 270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, + 410, 0, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 353, 0, 350, 0, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 153, 371, 372, - 0, 0, 0, 0, 0, 155, 156, 158, 0, 0, - 379, 0, 164, 286, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 366, 0, 362, 0, 171, 0, - 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, + 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 213, 431, 432, 0, 0, 0, 0, + 0, 215, 216, 218, 0, 0, 439, 0, 224, 346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 258, 208, 0, 0, 0, 0, 0, - 354, 0, 376, 0, 0, 0, 216, 0, 0, 0, + 426, 0, 422, 0, 231, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, + 268, 0, 0, 0, 0, 0, 414, 0, 436, 0, + 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 262, 263, 264, 265, 266, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 338, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 322, 323, + 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 297, 318, 304, 325, 305, 326, 306, 327, - 0, 386, 385, 382, 0, 143, 0, 0, 0, 0, - 151, 0, 0, 0, 377, 69, 168, 175, 0, 176, - 0, 172, 0, 173, 192, 0, 0, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 213, 0, 0, 0, 0, 201, 0, 0, 0, - 232, 0, 241, 0, 0, 0, 0, 0, 181, 182, + 357, 378, 364, 385, 365, 386, 366, 387, 0, 446, + 445, 442, 0, 203, 0, 0, 0, 0, 211, 0, + 0, 0, 437, 69, 228, 235, 0, 236, 0, 232, + 0, 233, 252, 0, 0, 424, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 0, 0, 0, 261, 0, 0, 0, 292, 0, + 301, 0, 0, 0, 0, 0, 241, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 410, 400, + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 350, 340, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 161, 0, 0, 162, 0, 380, 0, 180, 190, - 367, 0, 0, 256, 184, 186, 0, 0, 255, 257, - 191, 169, 179, 189, 193, 0, 0, 0, 349, 0, - 348, 0, 0, 226, 0, 229, 0, 0, 238, 0, - 203, 204, 205, 0, 0, 354, 0, 357, 0, 0, - 0, 0, 374, 0, 218, 217, 0, 0, 0, 0, + 0, 221, 0, 0, 222, 0, 440, 0, 240, 250, + 427, 0, 0, 316, 244, 246, 0, 0, 315, 317, + 251, 229, 239, 249, 253, 0, 0, 0, 409, 0, + 408, 0, 0, 286, 0, 289, 0, 0, 298, 0, + 263, 264, 265, 0, 0, 414, 0, 417, 0, 0, + 0, 0, 434, 0, 278, 277, 0, 0, 0, 0, 0, 23, 0, 32, 0, 36, 0, 30, 0, 0, 35, 0, 40, 38, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 152, 157, 159, 0, 165, 0, - 177, 368, 0, 254, 253, 166, 167, 201, 0, 197, - 0, 0, 0, 0, 0, 0, 0, 0, 356, 0, - 355, 0, 0, 0, 0, 0, 0, 0, 354, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 212, 217, 219, 0, + 225, 0, 237, 428, 0, 314, 313, 226, 227, 261, + 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, + 416, 0, 415, 0, 0, 0, 0, 0, 0, 0, + 414, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 447, 0, 438, + 0, 0, 0, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 307, 0, 0, 0, 0, 0, + 0, 418, 0, 0, 433, 279, 0, 0, 37, 0, + 0, 0, 0, 27, 0, 33, 0, 39, 28, 41, + 0, 44, 0, 48, 49, 0, 0, 51, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 223, 0, 255, 0, + 0, 0, 0, 294, 0, 311, 0, 0, 308, 303, + 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 105, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 197, 0, 0, 406, 287, + 0, 290, 0, 0, 0, 293, 299, 0, 0, 302, + 230, 234, 0, 0, 245, 0, 0, 0, 0, 0, + 31, 34, 42, 0, 43, 50, 45, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 296, 0, 0, + 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 201, 0, 288, 0, 291, + 0, 0, 0, 300, 0, 0, 0, 0, 0, 0, + 26, 29, 0, 0, 0, 99, 0, 103, 0, 107, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 295, + 0, 0, 310, 304, 0, 0, 0, 0, 0, 0, + 46, 22, 100, 102, 104, 106, 108, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, + 198, 0, 199, 238, 0, 0, 0, 0, 0, 0, + 0, 0, 113, 117, 121, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 297, 309, 306, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 200, 202, 0, 0, 8, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 248, 0, 0, 0, 111, 0, 115, + 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 247, 0, 24, + 112, 114, 116, 118, 120, 122, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 125, 129, 133, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 387, 0, 378, 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 247, 0, 0, 0, 0, 0, 0, 358, 0, 0, - 373, 219, 0, 0, 37, 0, 0, 0, 0, 27, - 0, 33, 0, 39, 28, 41, 0, 44, 0, 48, - 49, 0, 0, 51, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 123, 0, 127, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 163, 0, 195, 0, 0, 0, 0, 234, 0, 251, - 0, 0, 248, 243, 0, 0, 0, 0, 0, 0, - 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 93, 97, 137, 0, 0, - 346, 227, 0, 230, 0, 0, 0, 233, 239, 0, - 0, 242, 170, 174, 0, 0, 185, 0, 0, 0, - 0, 0, 31, 34, 42, 0, 43, 50, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 236, 0, 0, - 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 124, 126, 128, 130, + 132, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 137, 141, + 145, 149, 153, 157, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 141, 0, 228, 0, 231, 0, 0, - 0, 240, 0, 0, 0, 0, 0, 0, 26, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87, 0, 91, 0, 95, 0, 135, 0, + 0, 0, 0, 0, 0, 135, 0, 139, 0, 143, + 0, 147, 0, 151, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 136, 138, 140, 142, + 144, 146, 148, 150, 152, 154, 156, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 235, 0, 0, 250, 244, 0, 0, - 0, 0, 0, 0, 46, 22, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 88, 90, 92, 94, 96, - 98, 136, 138, 0, 139, 178, 0, 0, 0, 0, + 0, 0, 0, 185, 189, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 101, 105, 109, 0, 0, 237, 249, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 140, 142, 0, 0, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, - 0, 103, 0, 107, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, - 0, 24, 0, 0, 0, 0, 0, 0, 100, 102, - 104, 106, 108, 110, 0, 0, 0, 0, 113, 117, - 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 183, 0, 187, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 0, 115, 0, 119, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, - 114, 116, 118, 120, 122, 0, 125, 129, 133, 25, - 0, 0, 0, 0, 0, 0, 0, 123, 0, 127, - 0, 131, 0, 0, 0, 0, 0, 0, 124, 126, - 128, 130, 132, 134, 0, 0, 0 + 0, 0, 0, 0, 184, 186, 188, 190, 192, 194, + 0, 0, 0, 173, 177, 181, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 171, 0, 175, 0, 179, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, + 174, 176, 178, 180, 182, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 161, 165, 169, 0, 0, 0, 0, + 0, 0, 0, 159, 0, 163, 0, 167, 0, 0, + 0, 0, 0, 0, 160, 162, 164, 166, 168, 170, + 0, 0, 0 }; static const short yydefgoto[] = { - 1704, 82, 5, 6, 19, 20, 21, 22, 7, 66, - 67, 68, 414, 1451, 610, 1389, 1453, 611, 1390, 1455, - 612, 1391, 1588, 613, 1559, 1590, 614, 1560, 1592, 615, - 1561, 1649, 616, 1635, 1651, 617, 1636, 1653, 618, 1637, - 1686, 619, 1680, 1688, 620, 1681, 1690, 621, 1682, 1457, - 622, 1392, 1523, 623, 1459, 135, 237, 69, 537, 524, - 525, 526, 527, 73, 74, 75, 76, 77, 1096, 1354, - 1428, 1099, 1359, 1432, 1249, 1250, 78, 79, 907, 326, - 138, 343, 170, 232, 407, 1003, 1106, 1107, 328, 467, - 191, 684, 821, 139 + 2250, 82, 5, 6, 19, 20, 21, 22, 7, 66, + 67, 68, 414, 1574, 622, 1488, 1576, 623, 1489, 1578, + 624, 1490, 1786, 625, 1733, 1788, 626, 1734, 1790, 627, + 1735, 1922, 628, 1884, 1924, 629, 1885, 1926, 630, 1886, + 2034, 631, 2004, 2036, 632, 2005, 2038, 633, 2006, 2040, + 634, 2007, 2042, 635, 2008, 2044, 636, 2009, 2232, 637, + 2226, 2234, 638, 2227, 2236, 639, 2228, 2181, 640, 2169, + 2183, 641, 2170, 2185, 642, 2171, 2130, 643, 2112, 2132, + 644, 2113, 2134, 645, 2114, 1601, 646, 1512, 1691, 647, + 1603, 135, 237, 69, 537, 524, 525, 526, 527, 73, + 74, 75, 76, 77, 1156, 1462, 1560, 1159, 1467, 1564, + 1333, 1334, 78, 79, 943, 326, 138, 343, 170, 232, + 407, 1051, 1166, 1167, 328, 467, 191, 708, 857, 139 }; static const short yypact[] = { - 2156, 137,-32768,-32768, -97,-32768, 480, 2336,-32768, 10, - 108, 141, 148, 155, 193, 260, 204, 215, 224,-32768, - -32768,-32768,-32768, 1734, 258, 320, 261, 262, 269, -43, - 227, 275, 304, 448, 317, 461, 470, 477, 133, 488, - 546, 372, 377, -80, -80, 383, 363, 391, 532, 14, - 590, 593, 49, 440, 450, -25, 2, 15,-32768, 454, - -32768, 642,-32768, 656, 659, 631,-32768,-32768,-32768,-32768, + 2651, 87,-32768,-32768, -42,-32768, 373, 2796,-32768, 16, + 104, 123, 143, 152, 163, 167, 77, 97, 139,-32768, + -32768,-32768,-32768, 2268, 146, 181, 156, 159, 202, -44, + 297, 234, 240, 334, 248, 401, 413, 416, 442, 161, + 415, 268, 263, -67, -67, 266, 337, 267, 443, 3, + 482, 489, 258, 302, 306, -14, 4, 12,-32768, 310, + -32768, 519,-32768, 515, 524, 516,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768, 673, 10, 2359,-32768,-32768,-32768,-32768,-32768, 502, - 502, 681,-32768, -90, 3,-32768,-32768,-32768,-32768, -128, - -60, -55, -18, 31, 116, 151, 266, 285, 294, 323, - 351, 357, 360, 364, 382, 386, 398, 409, 413, 437, - 508, 519, 527,-32768,-32768,-32768,-32768, 1944, 1944, 1944, - -32768,-32768, 1944, 346, 40, 1944, 700, 694,-32768, 711, - 719,-32768, 1944, 1944, 1944, 574, 1944, 594, 1944, 1944, - 1116, 1944, 606, 624, 625, 1116, 621, 622, 629, 633, - 635, 636, 637, 809, -80, -80, -80, 1944, 1944, -114, - -32768, 1, -80, 638, 639, 640,-32768, 1116, 641, 817, - -32768,-32768,-32768, 1116, 1116, 1944, 1944, -51, 1944, 643, - 1944, 645, 729, 1944, 1944,-32768, 828,-32768, 654,-32768, - 10, 655, 657, 658, 660, 661, 662, 664, 665, 666, - 667, 671, 678, 688, 689, 690, 691, 692, 695, 696, - 697, 699, 701, 702, 703, 704, 707, 708, 709, 710, - 712, 833, 713, 693, 715, 1944, 837,-32768, -80,-32768, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 47, 41, 41, 714, 714, 714, 5894, 875, - 1976, 5244, 161, 717, 892, 744,-32768,-32768, 1944, 1944, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944,-32768, -76, 5917, 5940, 5963, 1944, 5986, - 1944, 6009, 6032, 359, 1470, 1976, 1700, 903,-32768, 6055, - 1944, 1944, 1944, 913, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 738, 9,-32768,-32768, 2808, 2829, -80, -80, 567, - 567, 156, 1944, 1944, 1944, 891, 254, 1944,-32768, 2223, - 915, 917, 6078, 6101, 836, 1944, 6124, 835, 2850,-32768, - 740, 1763, 6147,-32768, 1944, 784, 937, 940, 941, 942, - 943, 947, 948, 949, 950, 951, 952, 953, 956, 957, - 958, 959, 960, 961, 962, 963, 964, 965, 966, 832, - 970, 974, 975, 976, 979, 978,-32768, -49, 981, 983, - 982, 5269, 144, 122, -11, 6170, 5294, 6193, 5319, 6216, - 5344, 6239, 5369, 6262, 5394, 6285, 5419, 6308, 5444, 6331, - 5469, 6354, 5494, 6377, 5519, 6400, 5544, 2871, 2892, 6423, - 5569, 6446, 5594, 6469, 5619, 6492, 5644, 6515, 5669, 6538, - 5694, 2913, 2934, 2955, 2976, 2997, 3018, 214,-32768, 5, - 797, 807,-32768, 1116, 2006, 1700,-32768, 286, 146, 41, - 1944, 985, 988, 7,-32768, 1889, 1269, 524, 497, 497, - 439, 439, 439, 439, 35, 35, 714, 714, 714, 714, - 987, 1976, 989, 990, 992, 6561, 993, 6584, 994, 995, - 404, 399, 1976, 442, 1944, 1944, 996, 2001, 6607, 6630, - 1944, 2182, 2440, 6653, 6676, 6699, 6722, 6745, 808, -80, - 1944, 1944,-32768,-32768,-32768, 806, 2401,-32768, 815, 1944, - 3039, 3060, 3081, -139, -42, -32,-32768,-32768,-32768, 1944, - 5719,-32768, 820, 821, 1003, 1004, 831, 6768, 1007, 829, - 1944, 2273, 1944, 1944,-32768, 6791, 863, 847, 848, 849, - 850, 852, 853, 854, 855, 856, 857, 858, 859, 861, - 880, 881, 883, 885, 886, 887, 888, 889, 894, 895, - 896, 897, 899, 904, 921, 923, 926,-32768, 1013, 867, - -32768, 927, -27,-32768,-32768, 933, 934, 935, 936, 939, - 969, 973, 977, 984, 986, 991, 998, 999, 1000, 1071, + -32768, 545, 16, 2900,-32768,-32768,-32768,-32768,-32768, 349, + 349, 546,-32768, 102, 8,-32768,-32768,-32768,-32768, -37, + 194, 233, 255, 280, 284, 295, 298, 305, 309, 321, + 324, 330, 346, 350, 353, 367, 368, 371, 372, 375, + 376, 382, 395,-32768,-32768,-32768,-32768, 2370, 2370, 2370, + -32768,-32768, 2370, 394, 36, 2370, 568, 636,-32768, 587, + 580,-32768, 2370, 2370, 2370, 402, 2370, 409, 2370, 2370, + 1172, 2370, 420, 422, 478, 1172, 484, 497, 500, 530, + 531, 535, 536, 610, -67, -67, -67, 2370, 2370, -105, + -32768, -97, -67, 533, 543, 544,-32768, 1172, 449, 703, + -32768,-32768,-32768, 1172, 1172, 2370, 2370, -48, 2370, 518, + 2370, 548, 633, 2370, 2370,-32768, 739,-32768, 555,-32768, + 16, 556, 563, 573, 574, 575, 576, 581, 582, 583, + 584, 585, 586, 613, 614, 630, 631, 632, 634, 637, + 644, 655, 657, 662, 675, 676, 679, 680, 681, 682, + 683, 768, 673, 635, 684, 2370, 874,-32768, -67,-32768, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 66, 79, 79, 688, 688, 688, 10437, 875, + 2400, 9787, 6, 686, 878, 731,-32768,-32768, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370,-32768, -63, 10460, 10483, 10506, 2370, 10529, + 2370, 10552, 10575, 193, 1457, 2400, 660, 882,-32768, 10598, + 2370, 2370, 2370, 883, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 696, -111,-32768,-32768, 1263, 3277, -67, -67, 412, + 412, -45, 2370, 2370, 2370, -8, 68, 2370,-32768, 1974, + 885, 886, 10621, 10644, 792, 2370, 10667, 791, 3298,-32768, + 697, 2049, 10690,-32768, 2370, 733, 891, 894, 895, 896, + 897, 904, 914, 915, 916, 917, 918, 920, 921, 925, + 926, 965, 967, 968, 969, 971, 973, 974, 975, 777, + 981, 991, 995, 997, 1000, 999,-32768, 69, 1004, 1005, + 1007, 9812, 11, -76, 2840, 10713, 9837, 10736, 9862, 10759, + 9887, 10782, 9912, 10805, 9937, 10828, 9962, 10851, 9987, 10874, + 10012, 10897, 10037, 10920, 10062, 10943, 10087, 3319, 3340, 10966, + 10112, 10989, 10137, 11012, 10162, 11035, 10187, 11058, 10212, 11081, + 10237, 3361, 3382, 3403, 3424, 3445, 3466, 18,-32768, 111, + 806, 818,-32768, 1172, 2489, 660,-32768, 374, 154, 79, + 2370, 1008, 1011, 13,-32768, 2072, 782, 678, 352, 352, + 253, 253, 253, 253, 208, 208, 688, 688, 688, 688, + 1010, 2400, 1012, 1013, 1017, 11104, 1018, 11127, 1019, 1020, + 924, 254, 2400, 380, 2370, 2370, 1021, 2395, 11150, 11173, + 2370, 2455, 2484, 11196, 11219, 11242, 11265, 11288, 819, -67, + 2370, 2370,-32768,-32768,-32768, 817, 2488,-32768, 828, 2370, + 3487, 3508, 3529, -134, -26, -21,-32768,-32768,-32768, 2370, + 10262,-32768, 830, 831, 1025, 1027, 841, 11311, 1030, 842, + 2370, 2683, 2370, 2370,-32768, 11334, 873, 843, 844, 845, + 846, 848, 849, 850, 851, 852, 853, 857, 858, 859, + 860, 862, 863, 864, 866, 867, 868, 898, 899, 900, + 901, 902, 903, 905, 906, 907, 911,-32768, 1036, 908, + -32768, 912, 71,-32768,-32768, 922, 923, 928, 929, 931, + 938, 948, 950, 955, 983, 984, 985, 986, 1016, 1026, + 1033, 1034, 1037, 1039, 1042, 1043, 1044, 1045, 1046, 1048, + 1049, 1088,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768,-32768, 1944, 1944,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1015,-32768, 1976, - 41,-32768, 1072, 1976, 938, 44, 1944, 1073, 1118, 890, - -32768, 1115, 968, 2, 1150, 1944,-32768, 24, -80, 1116, - 1116, 1154, 1116, 1157, 1116, 1116,-32768, 1976, 716, 446, - -32768, 1911, 1063, 1001, 1158, 1160, 1165, 388, 1167, 1168, - 1177, 1180, 1181, 1183, 1185, 1191, 208, 3102, 3123,-32768, - -32768, 2463, -80, -80, -80, 1976, 1976, 1976, 1173, 1206, - 1944, 1944, 1116, 1116, 1944, 1207, 1116, 1209, 3144,-32768, - 1937, 610, 1213, 1066, 1219, 1944, 1944, -80, 1226, 1236, - 1067, 1238, 1239, 1116, 1116, 1240, -80, 1243, 1246, 1116, - 1116, 1247, 1248, 1250, 1251, 1252, 1116, 237, 1116, 1253, - 1255, 1256, 1266, 1267,-32768, 1265, 502, 1268,-32768, 1021, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944, 1944,-32768, 6814, 5744, 6837, 5769, 6860, - 5794, 6883, 5819, 5844, 1090, 76, 1091,-32768, 1700,-32768, - 26, 331, 1094, 1270, 1205,-32768,-32768,-32768, 2, 1944, - -32768, 458,-32768, 2065, 1276, 22, 29, 1278, 1116, 1280, - 1116, 1283, 1284, 462,-32768, 1976,-32768, 1944,-32768, 1944, - 1116, 1116, 1116,-32768, 297, 1116, 1116, 1116, 1116, 1116, - 1116, 1116, 609, 1944, 1944, 1944, 1088, -92, -86, -73, - 465, 468, 469,-32768,-32768, 3165, 3186, 1286, 1288, 6906, - -135, 1204,-32768, 1944, 1944, 1944,-32768, 1108, 10, 1112, - 3207, 3228, 330, 1113, 1119, 1114, 1120, 1121, 1122, 1123, - 1124, 343, 1134, 1126, 1139, 1136, 1137, 1140, 1141, 1142, - 1143, 1148,-32768,-32768,-32768,-32768,-32768, 1145, 1146, 1162, - 1163, 1164, 1169, 1166,-32768, 1170, 144, 1300, 3249, 3270, - 3291, 3312, 3333, 3354, 3375, 3396, 3417, 3438, 3459, 3480, - 3501, 3522,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 1172,-32768,-32768,-32768, 1116, 41, 1944, 1301, 1322, 7, - -32768, 1349, 5869, 2,-32768,-32768,-32768,-32768, -80,-32768, - 1350,-32768, 1353,-32768,-32768, 1175, 472, 2065, 3543, 1357, - 1358, 1365, 1944, 1944, 1375, 1376, 1377, 1378, 1379, 1394, - 1395,-32768, 1769, 2486, 6929, 2345, 567, -80, 1396, -80, - 1402, -80, 1412, 1413, 1414, 1416, 1944, 1944,-32768,-32768, - 1417, 1116, 1116, 1334, 1116, 2382, 291, 6952, 1944, 10, - 1423, 1944, 1116, 1421, 1425, 1429, 1273, 1441, 237, 1443, - 1458, 1944, 1457, 1462, 1460, 1461, 1465, 237, 1944, 1944, - 1944, 1116, 1463, 1467, 237, 1944, 1468, 1469, 1471, 1944, - 502,-32768,-32768, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1472, 1497, 1498, - 1242,-32768, 1501, 1499,-32768, 1289,-32768, 34,-32768,-32768, - -32768, 1293, 1944,-32768,-32768,-32768, 1356, 1424,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, 1549, 1503, 1344,-32768, 1944, - -32768, 1321, 212,-32768, 216,-32768, 1345, 313,-32768, 1346, - -32768,-32768,-32768, 3564, 3585, -135, 109,-32768, 492, 1347, - 1434, 1944,-32768, 1944,-32768,-32768, 3606, 10, 1355, 3627, - 1352,-32768, 1369,-32768, 1370,-32768, 1359,-32768, 1371, 6975, - -32768, 1372,-32768,-32768, 1360, 1361, 6998, 3648, 7021, 1373, - -32768, 1362, 1380, 3669, 1374, 1381,-32768, 3690, 1382, 3711, - 3732, 3753, 3774, 3795, 3816, 3837, 3858, 3879, 3900, 3921, - 3942, 3963, 3984, 1383,-32768,-32768,-32768, 2,-32768, 1447, - -32768,-32768, 4005,-32768,-32768,-32768,-32768, 567, 2411,-32768, - 1671, 1671, 48, 1671, 48, 1944, 1944, 1445,-32768, 1116, - -32768, 1116, 1944, 2509, 2532, 1116, 1415, 1556, -135, 237, - 1564, 1944, 1562, 237, 1565, 1567, 1566, 1575, 1577, 1944, - 1584, 1116, 1594, 1595, 1944, 1570, 1601, 1944, 1604, 1944, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944,-32768, 1605,-32768, 1608, 1426, 1944,-32768, - 1671, 1671, 1944, 2555, 321, 2578, 324, 1616, 1422, -41, - -32768, 2601, 353, -40, 2624, 2647, 1435,-32768, 1427, 1658, - -32768,-32768, 1436, 10,-32768, 1437, 1439, 1440, 4026,-32768, - 1446,-32768, 1448,-32768,-32768,-32768, 7044,-32768, 1450,-32768, - -32768, 7067, 1449,-32768, 7090, 1452, 4047, 4068, 4089, 4110, - 4131, 4152, 4173, 4194, 4215, 7113, 7136, 7159, 7182, 4236, - -32768, 1456,-32768, 2670, 1968, 1624, 1944, 1638, 1944,-32768, - 1116, 1639,-32768, 1640, 1944, 1642, 1643, 1644, 1116, 1116, - -32768, 1645, 10, 237, 237, 237, 237, 1647, 1648, 1649, - 237, 1650, 1651, 1653, 1660, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944, 1944,-32768,-32768,-32768,-32768, 1944, 1661, - -32768,-32768, 2693,-32768, 1475, 2716, 1480,-32768,-32768, 1482, - 2739,-32768,-32768,-32768, 1481, 1483,-32768, 10, 1489, 1490, - 1495, 1496,-32768,-32768,-32768, 1517,-32768,-32768,-32768, 1518, - 4257, 4278, 4299, 4320, 4341, 4362, 4383, 4404, 4425, 1519, - 1521, 1527, 1537, 7205, 1539, 1722, 48, 1723, 1116, 48, - 1725, 1116, 1618, 1582, 237, 237, 1727, 1728, 237, 1735, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 41,-32768, 1737,-32768, -39,-32768, 1579, 493, - -31,-32768, 1587, 1588, 1614, 10, 1589, 1619,-32768,-32768, - 1625, 1626, 4446, 4467, 4488, 4509, 4530, 4551, 4572, 4593, - 4614, 496, 2065, 523, 2065, 526, 2065, 529,-32768, 1622, - 1623, 1801, 48, 1116, 1805, 1807, 48, 1726, 1944, 10, - 237, 1116, 1810, 1811, 1944, 1944, 1944, 1944, 1944, 1944, - 1944, 1944, 1944, 1944, 1818, 1944, 1828, 1944, 1829, 41, - 1830, 41, 1831,-32768, -29, 1652,-32768,-32768, -20, 1656, - 4635, 10, 1659, 1662,-32768,-32768, 4656, 4677, 4698, 4719, - 4740, 4761, 7228, 7251, 7274, 2065,-32768, 2065,-32768, 2065, - -32768,-32768,-32768, 562,-32768,-32768, 1832, 1834, 1839, 1944, - 1944, 1692, 237, 1116, 1944, 1944, 1944, 1944, 1944, 1944, - -32768,-32768,-32768, 41, 1844,-32768,-32768,-32768, 4782, 2762, - 1695, 1665, 1667, 4803, 4824, 4845, 4866, 4887, 4908, 1668, - 1669, 1670,-32768,-32768, 1944, 1849,-32768, 1116, 237, 1944, - 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 2785,-32768, - 1673, 1683, 4929, 4950, 4971, 4992, 5013, 5034, 565, 2065, - 566, 2065, 600, 2065, 1870, 1116, 1871, 1944, 1944, 1944, - 1944, 1944, 1944, 1944, 1872, 1944, 1873, 1944, 1876,-32768, - 1696,-32768, 5055, 5076, 5097, 7297, 7320, 7343, 2065,-32768, - 2065,-32768, 2065,-32768, 1116, 1944, 1944, 1944,-32768,-32768, - -32768, 1697, 5118, 5139, 5160, 1698, 1699, 1701, 1116, 1944, - 1944, 1944, 1944, 1944, 1944, 1703, 5181, 5202, 5223, 601, - 2065, 608, 2065, 611, 2065, 237, 1944, 1944, 1944, 1944, - 1879, 1944, 1890, 1944, 1892, 1712, 7366, 7389, 7412, 2065, - -32768, 2065,-32768, 2065,-32768, 1893,-32768,-32768,-32768,-32768, - 1713, 1714, 1715, 1944, 1944, 1944, 612, 2065, 615, 2065, - 616, 2065, 1944, 1894, 1944, 1898, 1944, 1901, 2065,-32768, - 2065,-32768, 2065,-32768, 1908, 1909,-32768 + 2370, 2370,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 1091,-32768, 2400, 79,-32768, 1090, 2400, 1024, 43, + 2370, 1106, 1108, 808,-32768, 1112, 919, 4, 1114, 2370, + -32768, 137, -67, 1172, 1172, 1237, 1172, 1238, 1172, 1172, + -32768, 2400, 1142, 381,-32768, 2425, 954, 1047, 1239, 1241, + 1242, 448, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1255, + 121, 3550, 3571,-32768,-32768, 2695, -67, -67, -67, 2400, + 2400, 2400, 1032, 1254, 2370, 2370, 1172, 1172, 2370, 1257, + 1172, 1258, 3592,-32768, 2440, 579, 1260, 1099, 1262, 2370, + 2370, -67, 1291, 1294, 1113, 1297, 1301, 1172, 1172, 1302, + -67, 1303, 1304, 1172, 1172, 1320, 1321, 1324, 1326, 1329, + 1172, 434, 1172, 1330, 1332, 1333, 1337, 1338,-32768, 1339, + 349, 1331,-32768, 2885, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + -32768, 11357, 10287, 11380, 10312, 11403, 10337, 11426, 10362, 10387, + 1148, 164, 1149,-32768, 660,-32768, 20, 177, 1150, 1340, + 1216,-32768,-32768,-32768, 4, 2370,-32768, 385,-32768, 12254, + 1343, 15, 50, 1344, 1172, 1345, 1172, 1346, 1347, 391, + -32768, 2400,-32768, 2370,-32768, 2370, 1172, 1172, 1172,-32768, + 210, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 393, 2370, + 2370, 2370, 1146, -116, -107, -103, 396, 414, 418,-32768, + -32768, 3613, 3634, 1348, 1351, 11449, 141, 1256,-32768, 2370, + 2370, 2370,-32768, 1158, 16, 1161, 3655, 3676, -53, 1163, + 1168, 1165, 1170, 1169, 1174, 1171, 1175, -31, 1176, 1178, + 1181, 1179, 1183, 1184, 1186, 1205, 1206, 1182,-32768,-32768, + -32768,-32768,-32768, 1207, 1208, 1209, 1211, 1233, 1185, 1235, + -32768, 1236, 11, 1361, 3697, 3718, 3739, 3760, 3781, 3802, + 3823, 3844, 3865, 3886, 3907, 3928, 3949, 3970, 3991, 4012, + 4033, 4054, 4075, 4096, 4117, 4138, 4159, 4180, 4201, 4222, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1173,-32768, + -32768,-32768, 1172, 79, 2370, 1445, 1448, 13,-32768, 1447, + 10412, 4,-32768,-32768,-32768,-32768, -67,-32768, 1449,-32768, + 1451,-32768,-32768, 1261, 438, 12254, 4243, 1453, 1459, 1485, + 2370, 2370, 1486, 1487, 1488, 1489, 1490, 1491, 1492,-32768, + 2302, 2921, 11472, 2622, 412, -67, 1493, -67, 1494, -67, + 1495, 1496, 1497, 1498, 2370, 2370,-32768,-32768, 1456, 1172, + 1172, 1387, 1172, 2810, 425, 11495, 2370, 16, 1502, 2370, + 1172, 1500, 1531, 1529, 1269, 1530, 434, 1560, 1573, 2370, + 1571, 1575, 1574, 1576, 1580, 434, 2370, 2370, 2370, 1172, + 1578, 1582, 434, 2370, 1583, 1584, 1585, 2370, 349,-32768, + -32768, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 1589, 1588, 1590, + 1388,-32768, 1581, 1592,-32768, 1392,-32768, 76,-32768,-32768, + -32768, 1403, 2370,-32768,-32768,-32768, 1586, 1641,-32768,-32768, + -32768,-32768,-32768,-32768,-32768, 1725, 1616, 1424,-32768, 2370, + -32768, 1425, 138,-32768, 144,-32768, 1427, 155,-32768, 1428, + -32768,-32768,-32768, 4264, 4285, 141, 178,-32768, 439, 1429, + 1525, 2370,-32768, 2370,-32768,-32768, 4306, 16, 1435, 4327, + 1432,-32768, 1433,-32768, 1434,-32768, 1440,-32768, 1437, 11518, + -32768, 1438,-32768,-32768, 1443, 1450, 11541, 4348, 11564, 1444, + -32768, 1454, 1455, 4369, 1460, 1458,-32768, 4390, 1461, 4411, + 4432, 4453, 4474, 4495, 4516, 4537, 4558, 4579, 4600, 4621, + 4642, 4663, 4684, 4705, 4726, 4747, 4768, 4789, 4810, 4831, + 4852, 4873, 4894, 4915, 4936, 1463,-32768,-32768,-32768, 4, + -32768, 1537,-32768,-32768, 4957,-32768,-32768,-32768,-32768, 412, + 2886,-32768, 1528, 1528, 90, 1528, 90, 2370, 2370, 1541, + -32768, 1172,-32768, 1172, 2370, 2944, 2967, 1172, 1501, 1642, + 141, 434, 1649, 2370, 1648, 434, 1650, 1652, 1656, 1658, + 1659, 2370, 1660, 1172, 1663, 1664, 2370, 1668, 1666, 2370, + 1671, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370,-32768, 1667,-32768, + 1672, 1477, 2370,-32768, 1528, 1528, 2370, 2990, 182, 3013, + 186, 1673, 1480, -19,-32768, 3036, 188, -16, 3065, 3088, + 1481,-32768, 1503, 1769,-32768,-32768, 1499, 16,-32768, 1504, + 1505, 1506, 4978,-32768, 1511,-32768, 1512,-32768,-32768,-32768, + 11587,-32768, 1509,-32768,-32768, 11610, 1514,-32768, 11633, 1515, + 11656, 11679, 11702, 4999, 5020, 5041, 5062, 5083, 5104, 5125, + 5146, 5167, 5188, 5209, 5230, 5251, 5272, 5293, 5314, 5335, + 5356, 5377, 5398, 5419, 11725, 5440,-32768, 1516,-32768, 3117, + 1135, 1695, 2370, 1704, 2370,-32768, 1172, 1707,-32768, 1710, + 2370, 1712, 1713, 1714, 1172, 1172,-32768, 1715, 16, 434, + 434, 434, 434, 1717, 1718, 1719, 434, 1720, 1721, 1723, + 1727,-32768,-32768,-32768, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370,-32768, 2370, 1729,-32768,-32768, + 3140,-32768, 1535, 3170, 1538,-32768,-32768, 1536, 3208,-32768, + -32768,-32768, 1565, 1577,-32768, 16, 1587, 1594, 1579, 1593, + -32768,-32768,-32768, 1596,-32768,-32768,-32768, 1620, 1591, 1629, + 1630, 5461, 5482, 5503, 5524, 5545, 5566, 5587, 5608, 5629, + 5650, 5671, 5692, 5713, 5734, 5755, 5776, 5797, 5818, 5839, + 5860, 5881, 1631, 11748, 1633, 1724, 90, 1770, 1172, 90, + 1771, 1172, 1680, 1619, 434, 434, 1776, 1777, 434, 1779, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 79,-32768, 1780,-32768, -15,-32768, + 1635, 445, -13,-32768, 1636, 1632, 1637, 16, 1639, 1640, + -32768,-32768, 1645, 1646, 450, 12254, 451, 12254, 454, 12254, + 5902, 5923, 5944, 5965, 5986, 6007, 6028, 6049, 6070, 6091, + 6112, 6133, 6154, 6175, 6196, 6217, 6238, 6259, 6280, 6301, + 6322, 455,-32768, 1643, 1661, 1781, 90, 1172, 1783, 1836, + 90, 1744, 2370, 16, 434, 1172, 1854, 1855, 2370, 1857, + 2370, 1858, 2370, 1859, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 79, 1860, 79, 1861,-32768, + -7, 1669,-32768,-32768, -6, 1674, 6343, 16, 1670, 1676, + -32768,-32768, 12254,-32768, 12254,-32768, 12254,-32768, 11771, 11794, + 11817, 6364, 6385, 6406, 6427, 6448, 6469, 6490, 6511, 6532, + 6553, 6574, 6595, 6616, 6637, 6658, 6679, 6700, 6721,-32768, + -32768, 458,-32768,-32768, 1862, 1865, 1866, 2370, 2370, 1706, + 434, 1172,-32768,-32768,-32768, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 79, 1870,-32768,-32768,-32768, 6742, 3231, + 1709, 1679, 1716, 1703, 1722, 1726, 6763, 6784, 6805, 6826, + 6847, 6868, 6889, 6910, 6931, 6952, 6973, 6994, 7015, 7036, + 7057, 7078, 7099, 7120,-32768,-32768, 2370, 1873,-32768, 1172, + 434, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 3254,-32768, 1758, 1763, 459, 12254, 470, 12254, + 474, 12254, 7141, 7162, 7183, 7204, 7225, 7246, 7267, 7288, + 7309, 7330, 7351, 7372, 7393, 7414, 7435, 7456, 7477, 7498, + 1907, 1172, 1908, 2370, 1910, 2370, 1911, 2370, 1913, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370,-32768, 1760,-32768, + 12254,-32768, 12254,-32768, 12254,-32768, 11840, 11863, 11886, 7519, + 7540, 7561, 7582, 7603, 7624, 7645, 7666, 7687, 7708, 7729, + 7750, 7771, 7792, 7813, 1172,-32768,-32768,-32768, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 1761, 1764, 1765, 1766, 7834, 7855, 7876, + 7897, 7918, 7939, 7960, 7981, 8002, 8023, 8044, 8065, 8086, + 8107, 8128, 1172, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 1762, 477, 12254, 480, 12254, 481, 12254, 8149, 8170, + 8191, 8212, 8233, 8254, 8275, 8296, 8317, 8338, 8359, 8380, + 8401, 8422, 8443, 434, 2370, 1914, 2370, 1918, 2370, 1957, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 1772, 12254,-32768, 12254,-32768, + 12254,-32768, 11909, 11932, 11955, 11978, 12001, 12024, 8464, 8485, + 8506, 8527, 8548, 8569, 8590, 8611, 8632, 1962,-32768,-32768, + -32768,-32768,-32768,-32768, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370,-32768, 1782, 1784, 1785, 1786, 1787, 1788, + 8653, 8674, 8695, 8716, 8737, 8758, 8779, 8800, 8821, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 486, 12254, 490, 12254, 491, 12254, + 494, 12254, 501, 12254, 502, 12254, 8842, 8863, 8884, 8905, + 8926, 8947, 8968, 8989, 9010, 2370, 1963, 2370, 1964, 2370, + 1975, 2370, 1977, 2370, 1983, 2370, 1984, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 2370, 2370, 12254,-32768, 12254,-32768, + 12254,-32768, 12254,-32768, 12254,-32768, 12254,-32768, 9031, 9052, + 9073, 9094, 9115, 9136, 12047, 12070, 12093, 2370, 2370, 2370, + 2370, 2370, 2370,-32768,-32768,-32768, 9157, 9178, 9199, 9220, + 9241, 9262, 1791, 1792, 1793, 2370, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 2370, 9283, 9304, 9325, 9346, 9367, 9388, + 505, 12254, 506, 12254, 509, 12254, 2370, 2370, 2370, 2370, + 2370, 2370, 2370, 1988, 2370, 1989, 2370, 2005, 9409, 9430, + 9451, 12116, 12139, 12162, 12254,-32768, 12254,-32768, 12254,-32768, + 2370, 2370, 2370,-32768,-32768,-32768, 9472, 9493, 9514, 1820, + 1822, 1825, 2370, 2370, 2370, 2370, 2370, 2370, 9535, 9556, + 9577, 513, 12254, 514, 12254, 521, 12254, 2370, 2370, 2370, + 2370, 2022, 2370, 2023, 2370, 2024, 9598, 9619, 9640, 12254, + -32768, 12254,-32768, 12254,-32768, 2370, 2370, 2370, 9661, 9682, + 9703, 2370, 2370, 2370, 9724, 9745, 9766, 2370, 2370, 2370, + 12185, 12208, 12231,-32768,-32768,-32768, 1831, 1833, 1835, 2370, + 2370, 2370, 522, 12254, 537, 12254, 540, 12254, 2370, 2031, + 2370, 2033, 2370, 2035, 12254,-32768, 12254,-32768, 12254,-32768, + 1980, 2053,-32768 }; static const short yypgoto[] = { - -32768, -70,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768, 1316,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768, -34,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768, 1462,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, -289, -19,-32768, 1907, 1910, - -342, -171, 1914,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768, -1125, -1226,-32768,-32768, -934, -23, - -32768, 98,-32768, -89,-32768, -1063, 920, 417, -288, -315, - -663, 980,-32768, -268 + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768, -287, -20,-32768, 2047, 2048, -346, -154, 2051,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -1246, -1268,-32768,-32768, -1064, -23,-32768, -29,-32768, -89, + -32768, -1136, 1009, 1484, -228, -319, -698, 1063,-32768, -259 }; -#define YYLAST 7595 +#define YYLAST 12447 static const short yytable[] = { - 137, 233, 466, 470, 136, 355, 189, 238, 528, 359, - 503, 682, 200, 80, 459, 460, 461, 187, 178, 192, - 820, 145, 145, 1312, 1247, 1247, 1247, 1312, 956, 1248, - 1248, 1248, 147, 95, 1247, 957, 1247, 466, 364, 1248, - 1170, 1248, 1187, 142, 292, 1247, 458, 1001, 811, 725, - 1248, 457, 458, 1002, 240, 9, 241, 347, 348, 1253, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 349, 120, 121, 122, 958, 347, - 348, 120, 121, 122, 1126, 347, 348, 183, 130, 131, - 184, 165, 166, 1135, 235, 987, 236, 988, 347, 348, - 1142, 989, 167, 990, 285, 286, 287, 490, 168, 288, - 291, 491, 295, 1247, 991, 83, 992, 179, 1248, 315, - 316, 317, 242, 319, 243, 321, 322, 244, 329, 245, - 375, 365, 293, 294, 587, 1265, 812, 813, 588, 146, - 146, 169, 171, 8, 345, 346, 726, 84, 1311, 1315, - 1461, 130, 131, 95, 85, 951, 727, 188, 1465, 777, - 1526, 86, 362, 363, 246, 366, 247, 368, 469, 1528, - 371, 372, 347, 348, 155, 156, 687, 157, 609, 676, - 347, 348, 81, 123, 124, 125, 126, 699, 668, 350, - 190, 239, 669, 347, 348, 683, 519, 193, 551, 87, - 1312, 678, 180, 466, 1312, 347, 348, 824, 309, 310, - 311, 673, 411, 248, 466, 249, 312, 415, 416, 417, + 137, 233, 1186, 136, 528, 470, 503, 178, 189, 856, + 1337, 1195, 238, 469, 169, 171, 192, 706, 1202, 80, + 145, 1004, 355, 459, 460, 461, 359, 95, 187, 1259, + 533, 27, 28, 534, 535, 31, 32, 33, 145, 34, + 292, 36, 37, 147, 39, 40, 1331, 847, 200, 1331, + 1331, 1332, 1331, 364, 1332, 1332, 1005, 1332, 1331, 1331, + 142, 52, 466, 1332, 1332, 1408, 749, 347, 348, 1408, + 457, 458, 347, 348, 538, 539, 347, 348, 347, 348, + 347, 348, 1242, 1035, 458, 1036, 347, 348, 519, 53, + 54, 55, 1037, 8, 1038, 349, 1039, 466, 1040, 1006, + 120, 121, 122, 350, 285, 286, 287, 347, 348, 288, + 291, 83, 295, 120, 121, 122, 165, 166, 179, 315, + 316, 317, 9, 319, 594, 321, 322, 167, 329, 84, + 347, 348, 490, 168, 1349, 342, 491, 344, 347, 348, + 293, 294, 1061, 351, 345, 346, 365, 848, 849, 85, + 146, 65, 347, 348, 529, 1331, 999, 240, 86, 241, + 1332, 95, 362, 363, 1070, 366, 375, 368, 146, 87, + 371, 372, 711, 88, 750, 123, 124, 125, 126, 751, + 188, 700, 1407, 723, 993, 1411, 1605, 141, 1609, 123, + 124, 125, 126, 536, 1694, 1696, 130, 131, 347, 348, + 81, 130, 131, 180, 190, 158, 193, 1350, 239, 413, + 702, 1354, 411, 707, 690, 551, 691, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 942, - 538, 539, 342, 673, 344, 1266, 88, 465, 1312, 1270, - 351, 1426, 1312, 471, 1430, 475, 476, 477, 478, 479, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 347, + 348, 130, 131, 466, 587, 1020, 1021, 465, 588, 801, + 1558, 89, 471, 1562, 466, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, - 1066, 147, 1188, 347, 348, 495, 1189, 497, 250, 1113, - 251, 286, 465, 123, 124, 125, 126, 507, 508, 509, - 594, 511, 512, 513, 514, 515, 516, 517, 123, 124, - 125, 126, 130, 131, 130, 131, 141, 347, 348, 530, - 531, 532, 675, 252, 540, 253, 413, 1494, 945, 130, - 131, 1498, 547, 529, 902, 903, 904, 905, 906, 92, - 93, 555, 972, 973, 805, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 347, - 348, 466, 833, 347, 348, 809, 89, 347, 348, 1368, - 1369, 1370, 1371, 593, 843, 853, 1375, 90, 666, 1180, - 667, 173, 806, 1181, 174, 175, 91, 92, 93, 466, - 860, 861, 862, 96, 97, 98, 99, 100, 101, 102, + 1408, 90, 130, 131, 1408, 495, 183, 497, 235, 184, + 236, 286, 465, 1126, 347, 348, 692, 507, 508, 509, + 693, 511, 512, 513, 514, 515, 516, 517, 522, 523, + 889, 347, 348, 123, 124, 125, 126, 347, 348, 530, + 531, 532, 860, 91, 540, 1049, 697, 1252, 347, 348, + 140, 1050, 547, 1253, 130, 131, 123, 124, 125, 126, + 142, 555, 699, 143, 1255, 1476, 1477, 1478, 1479, 990, + 1650, 147, 1483, 697, 1654, 347, 348, 130, 131, 347, + 348, 347, 348, 1260, 841, 173, 10, 1261, 174, 175, + 150, 1402, 1408, 130, 131, 1404, 1408, 1410, 242, 500, + 243, 236, 593, 309, 310, 311, 144, 92, 93, 1029, + 1030, 312, 869, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 244, 148, 245, + 896, 897, 898, 1173, 149, 842, 307, 308, 309, 310, + 311, 286, 151, 152, 130, 131, 312, 703, 701, 246, + 722, 247, 236, 159, 879, 153, 160, 161, 154, 162, + 1568, 1569, 163, 164, 1572, 466, 172, 176, 465, 845, + 42, 43, 44, 45, 248, 47, 249, 411, 250, 465, + 251, 725, 726, 155, 156, 177, 157, 731, 181, 252, + 740, 253, 254, 466, 255, 182, 185, 741, 742, 256, + 186, 257, 880, 258, 194, 259, 745, 11, 12, 13, + 14, 15, 16, 17, 18, 260, 752, 261, 262, 196, + 263, 466, 466, 466, 264, 195, 265, 762, 197, 764, + 765, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 266, 1318, 267, 231, 268, 312, 269, 270, 199, 271, + 1658, 234, 1014, 938, 939, 940, 941, 942, 198, 992, + 994, 272, 274, 273, 275, 276, 278, 277, 279, 280, + 282, 281, 802, 697, 296, 698, 283, 127, 128, 697, + 697, 724, 872, 129, 1001, 314, 1002, 911, 132, 284, + 697, 289, 1013, 313, 290, 697, 318, 1041, 298, 299, + 300, 301, 302, 320, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 697, 341, 1042, 331, 697, 312, 1043, + 330, 298, 299, 300, 301, 302, 1174, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 1731, 697, 1261, 1131, + 1262, 312, 297, 466, 1607, 357, 1608, 831, 832, 1618, + 1620, 1619, 1621, 1622, 1645, 1623, 1646, 1723, 1813, 1724, + 1814, 833, 834, 835, 836, 837, 838, 839, 504, 1815, + 465, 1816, 332, 1817, 844, 1818, 1944, 850, 1945, 1946, + 1948, 1947, 1949, 861, 334, 2055, 859, 2056, 1151, 2057, + 2059, 2058, 2060, 2061, 336, 2062, 1785, 335, 465, 411, + 2063, 2065, 2064, 2066, 2142, 2144, 2143, 2145, 2146, 358, + 2147, 951, 2190, 2192, 2191, 2193, 367, 893, 894, 895, + 2194, 2238, 2195, 2239, 337, 338, 465, 465, 465, 339, + 340, 901, 902, 352, 1119, 905, 2240, 474, 2241, 2242, + 370, 2243, 918, 353, 354, 373, 916, 917, 369, 374, + 376, 927, 298, 299, 300, 301, 302, 377, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 378, 379, 380, + 381, 1146, 312, 406, 912, 382, 383, 384, 385, 386, + 387, 954, 955, 956, 957, 958, 959, 960, 961, 962, + 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, + 973, 974, 975, 976, 977, 978, 979, 388, 389, 298, + 299, 300, 301, 302, 853, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 390, 391, 392, 995, 393, 312, + 409, 394, 1000, 298, 299, 300, 301, 302, 395, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 465, 396, + 1015, 397, 1016, 312, 301, 302, 398, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 1031, 1032, 1033, 399, + 400, 312, 408, 401, 402, 403, 404, 405, 412, 1965, + 1057, 312, 463, 410, 472, 473, 1053, 1054, 1055, 505, + 510, 518, 542, 543, 546, 549, 557, 552, 556, 558, + 559, 560, 561, 1321, 298, 299, 300, 301, 302, 562, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 563, + 564, 565, 566, 567, 312, 568, 569, 92, 93, 580, + 570, 571, 1089, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 466, 466, 466, - 140, 286, 844, 142, 143, 522, 523, 679, 254, 677, - 255, 144, 298, 299, 300, 301, 302, 148, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 256, 465, 257, - 1436, 1437, 312, 673, 1440, 674, 258, 411, 259, 465, - 1114, 701, 702, 10, 347, 348, 149, 707, 123, 124, - 125, 126, 347, 348, 150, 347, 348, 717, 718, 151, - 1183, 347, 348, 152, 1234, 260, 721, 261, 1306, 130, - 131, 1308, 153, 1013, 347, 348, 728, 127, 128, 154, - 966, 944, 946, 129, 347, 348, 1022, 738, 132, 740, - 741, 289, 158, 262, 290, 263, 1502, 130, 131, 264, - 1314, 265, 266, 500, 267, 236, 268, 466, 269, 298, - 299, 300, 301, 302, 163, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 270, 164, 271, 327, 272, 312, - 273, 172, 333, 778, 177, 127, 128, 130, 131, 176, - 274, 129, 275, 698, 159, 236, 132, 160, 161, 696, - 162, 276, 697, 277, 356, 278, 181, 279, 1551, 182, - 360, 361, 11, 12, 13, 14, 15, 16, 17, 18, - 307, 308, 309, 310, 311, 981, 982, 716, 875, 280, - 312, 281, 185, 795, 796, 42, 43, 44, 45, 673, - 47, 700, 186, 673, 1581, 836, 194, 797, 798, 799, - 800, 801, 802, 803, 1091, 953, 465, 954, 195, 673, - 808, 965, 673, 814, 993, 673, 673, 994, 995, 673, - 196, 1071, 823, 197, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 198, 465, 411, 199, 1059, 312, 1189, - 1463, 1190, 1464, 1483, 231, 1484, 234, 915, 301, 302, - 282, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 297, 283, 465, 465, 465, 312, 296, 865, 866, 284, - 1485, 869, 1486, 1487, 1086, 1488, 1489, 313, 1490, 92, - 93, 1665, 880, 881, 314, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 1543, - 474, 1544, 1603, 1605, 1604, 1606, 318, 918, 919, 920, - 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, - 931, 298, 299, 300, 301, 302, 320, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 825, 1607, 1659, 1608, - 1660, 312, 947, 876, 330, 1661, 952, 1662, 1663, 1692, - 1664, 1693, 1694, 1696, 1695, 1697, 331, 332, 1009, 334, - 335, 336, 465, 341, 967, 337, 968, 338, 339, 340, - 857, 858, 859, 358, 370, 357, 352, 353, 354, 367, - 983, 984, 985, 369, 373, 1237, 374, 376, 406, 377, - 378, 412, 379, 380, 381, 882, 382, 383, 384, 385, - 1005, 1006, 1007, 386, 891, 298, 299, 300, 301, 302, - 387, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 388, 389, 390, 391, 392, 312, 409, 393, 394, 395, - 672, 396, 463, 397, 398, 399, 400, 127, 128, 401, - 402, 403, 404, 129, 405, 312, 817, 1041, 132, 473, - 408, 834, 410, 472, 835, 298, 299, 300, 301, 302, - 505, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 510, 518, 542, 1060, 543, 312, 546, 549, 552, 533, - 27, 28, 534, 535, 31, 32, 33, 556, 34, 1117, - 36, 37, 557, 39, 40, 558, 559, 560, 561, 1076, - 1077, 1148, 562, 563, 564, 565, 566, 567, 568, 1085, - 52, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 1103, 1104, 581, 53, 54, 55, 582, - 583, 584, 585, 586, 670, 1116, 589, 591, 1119, 590, - 671, 680, 681, 686, 715, 719, 688, 689, 1129, 690, - 692, 694, 695, 703, 720, 1136, 1137, 1138, 730, 731, - 732, 733, 1143, 734, 736, 737, 1147, 743, 774, 804, - 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, - 1159, 1160, 1161, 1162, 744, 745, 746, 747, 65, 748, - 749, 750, 751, 752, 753, 754, 755, 1196, 756, 1172, - 775, 298, 299, 300, 301, 302, 1067, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 1178, 757, 758, 838, - 759, 312, 760, 761, 762, 763, 764, 794, 807, 815, - 536, 765, 766, 767, 768, 1092, 769, 1094, 1193, 1097, - 1194, 770, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 826, 827, 771, 829, - 772, 831, 832, 773, 776, 780, 781, 782, 783, 92, - 323, 784, 818, 810, 816, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 867, - 868, 785, 819, 871, 1458, 786, 822, 1243, 1245, 787, - 1251, 828, 1254, 1255, 830, 840, 788, 841, 789, 1259, - 888, 889, 842, 790, 845, 846, 894, 895, 1268, 863, - 791, 792, 793, 901, 847, 908, 1276, 848, 849, 839, - 850, 1281, 851, 1322, 1284, 852, 1286, 1287, 1288, 1289, - 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, - 917, 950, 864, 872, 870, 1303, 878, 285, 286, 1304, - 877, 1521, 879, 1524, 298, 299, 300, 301, 302, 883, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 884, - 885, 886, 887, 890, 312, 960, 892, 962, 1166, 893, - 896, 897, 1367, 898, 899, 900, 909, 969, 970, 971, - 910, 911, 974, 975, 976, 977, 978, 979, 980, 912, - 913, 914, 916, 941, 943, 1562, 986, 949, 1244, 1246, - 948, 1252, 955, 1352, 959, 1355, 961, 127, 324, 963, - 964, 1360, 998, 129, 999, 1004, 1008, 1403, 132, 1010, - 1014, 1016, 1015, 1017, 325, 1019, 1042, 1061, 1018, 1024, - 1020, 1021, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, - 1388, 1023, 1025, 1026, 1027, 1393, 1062, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 298, 299, 300, 301, 302, 344, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 1035, - 1036, 1037, 1038, 1039, 312, 1064, 1068, 1040, 1057, 1069, - 1070, 1058, 1173, 1073, 1074, 1469, 298, 299, 300, 301, - 302, 1075, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 1078, 1079, 1080, 1081, 1082, 312, 1442, 1443, 1444, - 1445, 1446, 1447, 1448, 1449, 1450, 1452, 1454, 1456, 1501, - 1083, 1084, 1093, 298, 299, 300, 301, 302, 1095, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 1098, 1100, - 1101, 1110, 1102, 312, 1105, 1109, 1118, 1121, 1122, 1120, - 1174, 1531, 300, 301, 302, 1123, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 1500, 1124, 1125, 1139, 1127, - 312, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, - 1515, 1128, 1517, 1130, 1519, 1131, 1132, 1133, 1134, 1140, - 1141, 1144, 1145, 92, 501, 1169, 1163, 1146, 1171, 96, + 113, 114, 115, 116, 117, 118, 119, 300, 301, 302, + 874, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 572, 1120, 573, 574, 575, 312, 576, 1127, 577, 578, + 579, 298, 299, 300, 301, 302, 581, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 582, 1136, 1137, 1208, + 583, 312, 584, 585, 586, 694, 1152, 1145, 1154, 589, + 1157, 590, 591, 695, 704, 705, 710, 739, 743, 712, + 713, 1163, 1164, 1177, 714, 716, 718, 719, 727, 744, + 754, 755, 756, 1176, 757, 758, 1179, 760, 899, 767, + 761, 798, 768, 769, 770, 771, 1189, 772, 773, 774, + 775, 776, 777, 1196, 1197, 1198, 778, 779, 780, 781, + 1203, 782, 783, 784, 1207, 785, 786, 787, 1209, 1210, + 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, + 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, + 1231, 1232, 1233, 1234, 830, 840, 843, 788, 789, 790, + 791, 792, 793, 799, 794, 795, 796, 127, 128, 1244, + 797, 800, 851, 129, 852, 855, 804, 805, 132, 854, + 858, 720, 806, 807, 721, 808, 1250, 298, 299, 300, + 301, 302, 809, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 810, 1268, 811, 92, 93, 312, 1265, 812, + 1266, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 92, 323, 813, 814, 815, + 816, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 298, 299, 300, 301, 302, + 817, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 818, 846, 998, 1328, 1330, 312, 1336, 819, 820, 1327, + 1329, 821, 1335, 822, 1338, 1339, 823, 824, 825, 826, + 827, 1343, 828, 829, 864, 866, 876, 875, 877, 878, + 1352, 881, 882, 883, 884, 885, 886, 887, 1360, 888, + 900, 914, 908, 1365, 906, 915, 1368, 913, 1370, 1371, + 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, + 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, + 1392, 1393, 1394, 1395, 919, 1602, 344, 920, 921, 1399, + 922, 285, 286, 1400, 923, 926, 928, 929, 298, 299, + 300, 301, 302, 1418, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 932, 933, 127, 128, 934, 312, 935, + 462, 129, 936, 945, 520, 952, 132, 946, 947, 870, + 948, 949, 871, 989, 991, 950, 1034, 997, 996, 1003, + 1007, 1009, 1011, 1012, 1046, 127, 324, 1047, 1056, 1052, + 1058, 129, 1062, 1063, 1064, 1065, 132, 1090, 1066, 1067, + 1068, 1117, 325, 1072, 1069, 1071, 1073, 1080, 1074, 1460, + 1086, 1463, 1075, 1076, 1475, 1077, 1689, 1468, 1692, 298, + 299, 300, 301, 302, 1238, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 1078, 1079, 1081, 1082, 1083, 312, + 1084, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, + 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, + 1510, 1511, 1085, 1513, 1087, 1088, 298, 299, 300, 301, + 302, 1523, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 1121, 1122, 1124, 1184, 1128, 312, 1129, 1130, 1133, + 92, 501, 520, 1165, 1754, 1134, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 1169, 1135, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1153, + 1155, 1158, 1160, 1161, 1162, 1178, 1181, 1575, 1577, 1579, + 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, + 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, + 1600, 92, 93, 1613, 1182, 1183, 1185, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 298, 299, 300, 301, 302, 1187, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 1188, 1190, 1191, 1657, + 1192, 312, 1193, 1194, 1200, 1201, 1204, 1205, 1239, 1656, + 1241, 1206, 1245, 1235, 1236, 1662, 1237, 1664, 1240, 1666, + 1243, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, + 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, + 1687, 1688, 1248, 1699, 1249, 1264, 1251, 1254, 1256, 1263, + 1269, 1271, 1272, 1273, 327, 1274, 1275, 1277, 1278, 333, + 127, 128, 1319, 1283, 1340, 1279, 129, 1246, 1348, 1284, + 1285, 132, 1351, 1288, 1353, 1356, 1355, 502, 1317, 1287, + 1290, 356, 1357, 1347, 1358, 1359, 1361, 360, 361, 1363, + 1364, 1366, 1367, 1396, 1728, 1729, 1369, 1397, 1398, 1405, + 1406, 1414, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, + 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, + 1417, 1459, 1415, 1419, 1420, 1421, 1423, 1424, 1426, 1428, + 1461, 1324, 1325, 1465, 1430, 1457, 1466, 129, 1469, 1470, + 1471, 1474, 1326, 1480, 1481, 1482, 1484, 1485, 168, 1486, + 1557, 1247, 1487, 1782, 1514, 1516, 1519, 1518, 1787, 1789, + 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, + 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 298, + 299, 300, 301, 302, 1521, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 1526, 1416, 1559, 1563, 1522, 312, + 1566, 1567, 1570, 1571, 1573, 1604, 1524, 1649, 1527, 1652, + 1840, 1530, 1842, 1525, 1844, 1528, 1846, 1847, 1848, 1849, + 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, + 1860, 1861, 1862, 1863, 298, 299, 300, 301, 302, 1529, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 1531, + 1532, 1554, 1556, 1611, 312, 1606, 1610, 1612, 1614, 1615, + 1616, 1617, 1653, 1647, 1655, 1887, 1888, 1889, 1890, 1891, + 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, + 1660, 1661, 1648, 1663, 1665, 1667, 1690, 1693, 1725, 1700, + 1695, 1726, 1727, 1730, 1697, 1701, 1755, 1758, 1759, 1783, + 1923, 1925, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, + 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 298, 299, + 300, 301, 302, 1761, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 1837, 1839, 1760, 1841, 1843, 312, 1845, + 1967, 1966, 1762, 1968, 1969, 1970, 1763, 1972, 1973, 1974, + 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, + 1985, 1986, 298, 299, 300, 301, 302, 696, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 1811, 1812, 1864, + 1902, 1943, 312, 1971, 1903, 1904, 1905, 1987, 2003, 2077, + 2079, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, + 2251, 2081, 2019, 2083, 2020, 2021, 2022, 2023, 2024, 2085, + 2087, 2121, 2122, 2123, 2155, 2157, 2035, 2037, 2039, 2041, + 2043, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, + 2054, 2159, 533, 27, 28, 534, 535, 31, 32, 33, + 2175, 34, 2176, 36, 37, 2177, 39, 40, 2200, 2202, + 2204, 2229, 2076, 2230, 2078, 2231, 2080, 2245, 2082, 2247, + 2084, 2249, 2086, 52, 2088, 2089, 2090, 2091, 2092, 2093, + 2094, 2095, 2096, 2252, 70, 71, 803, 553, 72, 1168, + 1123, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 53, 54, 55, 2106, 2107, 2108, 2109, 2110, 2111, + 709, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2124, 2125, 2126, 2127, 2128, 2129, 2131, 2133, + 2135, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2148, 2149, 2150, 2151, 2152, 2153, 2154, + 0, 2156, 0, 2158, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 0, 0, 0, 2166, 2167, 2168, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2178, + 2179, 2180, 2182, 2184, 2186, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2196, 2197, 2198, 2199, 0, 2201, + 0, 2203, 0, 0, 0, 541, 0, 0, 0, 0, + 0, 0, 2208, 2209, 2210, 0, 0, 0, 2214, 2215, + 2216, 0, 0, 0, 2220, 2221, 2222, 862, 863, 0, + 865, 0, 867, 868, 0, 0, 2233, 2235, 2237, 0, + 0, 0, 0, 0, 0, 2244, 0, 2246, 0, 2248, + 0, 0, 298, 299, 300, 301, 302, 0, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 903, 904, 312, 0, 907, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 924, 925, 0, 0, 312, 0, 930, 931, 0, + 0, 92, 93, 94, 937, 95, 944, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 0, 120, 121, 122, 92, 93, 458, 0, 0, + 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 0, 120, 121, 122, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1008, 0, + 1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1017, 1018, 1019, 0, 0, 1022, 1023, 1024, 1025, 1026, + 1027, 1028, 0, 92, 93, 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 1164, 1165, 1168, 1548, 1549, 1167, 1176, - 1179, 1553, 1554, 1555, 1556, 1557, 1558, 298, 299, 300, - 301, 302, 1192, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 1177, 1182, 1184, 1191, 1256, 312, 1197, 1199, - 1235, 1578, 1202, 1206, 1207, 1212, 1582, 1583, 1584, 1585, - 1586, 1587, 1589, 1591, 1593, 1175, 1200, 1201, 1203, 1205, - 1211, 1215, 1264, 1213, 1216, 1263, 1233, 1267, 1269, 1218, - 1272, 1271, 1273, 1282, 1612, 1613, 1614, 1615, 1616, 1617, - 1618, 1274, 1620, 1275, 1622, 298, 299, 300, 301, 302, - 1277, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 1279, 1280, 1632, 1633, 1634, 312, 1257, 1283, 1258, 1285, - 1310, 1300, 1262, 1301, 1319, 1302, 1646, 1647, 1648, 1650, - 1652, 1654, 1309, 1318, 1323, 1321, 1324, 1325, 1278, 1327, - 1351, 1328, 1332, 1666, 1667, 1668, 1669, 1330, 1671, 1334, - 1673, 127, 128, 1349, 1353, 1357, 1358, 129, 1361, 1362, - 1363, 1366, 132, 1372, 1373, 1374, 1376, 1377, 502, 1378, - 1687, 1689, 1691, 1396, 1320, 1379, 1394, 1398, 1401, 1698, - 1399, 1700, 1402, 1702, 92, 93, 1404, 1405, 1406, 1407, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 1408, 1409, 1434, 1419, 504, 1420, - 298, 299, 300, 301, 302, 1421, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 1422, 1424, 1356, 1425, 1427, - 312, 1431, 1435, 1438, 1439, 1364, 1365, 92, 93, 94, - 1441, 95, 1460, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 1462, 120, 121, - 122, 553, 92, 93, 458, 1466, 1470, 1467, 96, 97, + 117, 118, 119, 92, 323, 0, 0, 0, 0, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 873, 0, 0, 0, 123, 124, 125, + 126, 0, 0, 0, 0, 0, 0, 0, 910, 0, + 0, 127, 128, 0, 0, 0, 0, 129, 130, 131, + 0, 0, 132, 0, 133, 0, 134, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1118, 0, 0, 0, + 0, 0, 0, 0, 0, 127, 128, 0, 0, 0, + 0, 129, 92, 501, 0, 0, 132, 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 1468, 120, 121, 122, 1471, 1493, 1472, 1473, - 1491, 1496, 1492, 1497, 1499, 1429, 1504, 1505, 1433, 298, - 299, 300, 301, 302, 1516, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 1518, 1520, 1522, 1525, 1545, 312, - 1546, 1527, 1240, 1241, 1529, 1547, 1532, 1550, 129, 1533, - 1563, 1566, 1567, 1242, 1568, 1579, 1575, 1576, 1577, 168, - 1595, 298, 299, 300, 301, 302, 1596, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 1609, 1611, 1619, 1621, - 1495, 312, 1623, 1624, 1638, 1670, 1642, 1643, 1503, 1644, - 1655, 123, 124, 125, 126, 1675, 1672, 685, 1674, 1679, - 1699, 1683, 1684, 1685, 1701, 127, 128, 1703, 1705, 1706, - 779, 129, 130, 131, 70, 0, 132, 71, 133, 837, - 134, 72, 1108, 0, 298, 299, 300, 301, 302, 1063, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 127, 128, 0, 0, 312, 874, 129, 92, 93, 0, - 1552, 132, 0, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 0, 0, 92, - 323, 0, 0, 0, 1580, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 92, - 501, 0, 1610, 0, 0, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 0, - 0, 1631, 0, 0, 0, 0, 0, 0, 0, 0, - 298, 299, 300, 301, 302, 1645, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 298, 299, 300, 301, 302, 0, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 0, 0, 0, 0, 298, 299, + 118, 119, 0, 0, 0, 0, 533, 27, 28, 534, + 535, 31, 32, 33, 0, 34, 1170, 36, 37, 0, + 39, 40, 0, 0, 1180, 0, 0, 0, 0, 0, + 0, 0, 0, 127, 128, 0, 0, 52, 0, 129, + 0, 0, 0, 1199, 132, 0, 0, 0, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 0, 0, 127, 128, 0, 312, 0, - 0, 129, 0, 0, 0, 0, 132, 0, 0, 298, - 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 0, 0, 0, 127, 464, 312, - 0, 462, 0, 129, 0, 520, -10, 1, 132, -10, - -53, 0, 298, 299, 300, 301, 302, 0, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 127, 128, 0, - 0, 0, 312, 129, 0, 0, 0, 0, 132, -53, - 704, 0, 0, -53, -53, -53, -53, -53, -53, -53, - -53, -53, 0, -53, -53, -53, -53, -53, -53, -53, - 0, 0, 0, -53, -53, -53, -53, -53, -53, -53, - 0, -53, -53, -53, -53, -53, 298, 299, 300, 301, - 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, - 311, -53, -53, -53, 0, 0, 312, 0, -53, 0, - -53, 0, -53, -53, -53, -53, -53, -53, -53, 0, - 0, 533, 27, 28, 534, 535, 31, 32, 33, 0, - 34, 0, 36, 37, 0, 39, 40, 0, -10, -10, - -10, -10, -10, -10, -10, -10, 0, 0, 0, 0, - 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -53, 2, 3, 0, 4, 53, 54, - 55, 533, 27, 28, 534, 535, 31, 32, 33, 0, + 309, 310, 311, 127, 464, 53, 54, 55, 312, 129, + 0, 0, 0, 0, 132, 0, 728, 0, 298, 299, + 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 298, 299, 300, 301, 302, 312, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 298, 299, + 300, 301, 302, 312, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 65, 312, 0, + 0, -10, 1, 0, -10, -53, 732, 298, 299, 300, + 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 127, 128, 0, 0, 0, 312, 129, 0, + 0, 0, 0, 132, -53, 733, 0, 0, -53, -53, + -53, -53, -53, -53, -53, -53, -53, 0, -53, -53, + -53, -53, -53, -53, -53, 0, 0, 0, -53, -53, + -53, -53, -53, -53, -53, 0, -53, -53, -53, -53, + -53, 533, 27, 28, 534, 535, 31, 32, 33, 0, 34, 0, 36, 37, 0, 39, 40, 0, 0, 0, + 0, 0, 0, 0, 0, 1341, 0, 1342, -53, -53, + -53, 1346, 52, 0, 0, -53, 0, -53, 0, -53, + -53, -53, -53, -53, -53, -53, 0, 1362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 0, 52, 298, 299, 300, 301, 302, 0, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 53, 54, - 55, 0, 0, 312, 0, 0, 0, 0, 0, 24, - 65, 708, 0, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 0, 34, 35, 36, 37, 38, 39, 40, + 53, 54, 55, 0, 0, -10, -10, -10, -10, -10, + -10, -10, -10, 0, 0, 298, 299, 300, 301, 302, + 23, 303, 304, 305, 306, 307, 308, 309, 310, 311, + -53, 2, 3, 0, 4, 312, 0, 0, 0, 0, + 0, 1149, 0, 1150, 0, 0, 0, 0, 0, 24, + 0, 0, 0, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 65, 34, 35, 36, 37, 38, 39, 40, 0, 0, 0, 41, 42, 43, 44, 45, 46, 47, - 201, 48, 49, 50, 51, 52, 0, 0, 0, 0, - 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, - 65, 53, 54, 55, 0, 0, 0, 0, 56, 0, - 57, 0, 58, 59, 60, 61, 62, 63, 64, 533, - 27, 28, 534, 535, 31, 32, 33, 0, 34, 0, - 36, 37, 0, 39, 40, 0, 0, 0, 0, 0, - 0, 0, 739, 202, 203, 204, 0, 0, 0, 0, - 52, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 0, 0, 65, 0, 0, 53, 54, 55, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 0, - 225, 226, 227, 228, 229, 230, 298, 299, 300, 301, - 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 312, 0, 0, 0, - 0, 0, 1089, 0, 1090, 0, 0, 0, 0, 0, - 0, 0, 0, 298, 299, 300, 301, 302, 65, 303, + 0, 48, 49, 50, 51, 52, 0, 0, 298, 299, + 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 763, 0, 0, 0, 312, 0, + 1464, 0, 0, 53, 54, 55, 892, 0, 1472, 1473, + 56, 0, 57, 0, 58, 59, 60, 61, 62, 63, + 64, 595, 596, 597, 598, 599, 600, 601, 602, 603, + 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, + 614, 615, 616, 617, 618, 619, 620, 0, 0, 0, + 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 595, 596, 597, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, + 619, 620, 0, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 0, 0, 0, 0, 1111, - 0, 1112, 298, 299, 300, 301, 302, 0, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 0, 0, 0, 0, 1238, 0, - 1239, 298, 299, 300, 301, 302, 0, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 0, 298, 299, 300, 301, 302, 709, + 0, 0, 1561, 312, 0, 1565, 0, 0, 0, 1171, + 0, 1172, 0, 0, 0, 0, 202, 203, 204, 0, + 0, 0, 0, 0, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 0, 0, 0, 0, 0, 0, + 0, 621, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 0, 225, 226, 227, 228, 229, 230, 298, + 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 0, 0, 0, 0, 0, 1322, 953, 1323, 0, 0, + 0, 1651, 0, 0, 298, 299, 300, 301, 302, 1659, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, 0, 298, 299, 300, - 301, 302, 856, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1147, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, 0, - 298, 299, 300, 301, 302, 1087, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1344, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 298, 299, 300, 301, 302, 1260, 303, + 312, 0, 0, 298, 299, 300, 301, 302, 1345, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 0, 298, 299, 300, 301, - 302, 1261, 303, 304, 305, 306, 307, 308, 309, 310, + 0, 0, 0, 312, 0, 1732, 298, 299, 300, 301, + 302, 1401, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, 0, 298, - 299, 300, 301, 302, 1305, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1403, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 0, 0, 298, 299, 300, 301, 302, 1307, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 0, 298, 299, 300, 301, 302, - 1313, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 298, 299, - 300, 301, 302, 1316, 303, 304, 305, 306, 307, 308, + 0, 0, 0, 0, 0, 0, 0, 1409, 298, 299, + 300, 301, 302, 1784, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, - 0, 298, 299, 300, 301, 302, 1317, 303, 304, 305, + 0, 298, 299, 300, 301, 302, 1412, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 0, 0, 0, 0, 0, 0, 0, 1413, + 298, 299, 300, 301, 302, 1838, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 298, 299, 300, 301, 302, 1458, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, + 0, 1515, 0, 298, 299, 300, 301, 302, 1883, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, + 0, 1517, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 298, 299, 300, 301, 302, 1921, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 0, 298, 299, 300, 301, 302, 1350, + 0, 312, 0, 0, 298, 299, 300, 301, 302, 1520, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, 0, 298, 299, 300, - 301, 302, 1395, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1757, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, 0, - 298, 299, 300, 301, 302, 1397, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1810, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 298, 299, 300, 301, 302, 1400, 303, + 312, 298, 299, 300, 301, 302, 521, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 550, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 670, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 0, 298, 299, 300, 301, - 302, 1565, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 312, 0, 0, 298, - 299, 300, 301, 302, 1594, 303, 304, 305, 306, 307, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 671, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 684, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 685, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 686, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 687, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 688, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 520, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 689, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 521, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 746, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 550, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 747, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 646, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 748, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 647, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 890, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 660, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 891, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 661, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 909, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 662, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1044, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 663, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1045, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 664, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1059, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 665, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1060, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 722, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1091, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 723, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1092, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 724, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1093, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 854, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1094, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 855, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1095, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 873, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1096, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 996, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1097, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 997, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1098, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1011, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1099, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1012, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1100, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1043, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1101, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1044, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1102, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1045, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1103, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1046, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1104, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1047, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1105, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1048, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1106, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 1049, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1107, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 1050, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1108, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1051, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1109, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1052, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1110, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1053, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1111, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1054, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1112, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1055, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1113, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1056, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1114, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1072, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1115, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1185, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1116, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 1186, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1132, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 1195, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1257, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1198, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1258, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1209, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1267, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1214, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1270, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1217, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1281, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1219, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1286, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1220, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1289, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1221, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1291, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1222, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1292, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 1223, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1293, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 1224, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1294, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1225, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1295, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1226, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1296, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1227, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1297, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1228, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1298, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1229, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1299, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1230, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1300, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1231, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1301, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1232, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 1236, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1303, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 1326, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1304, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1335, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1305, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1306, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 1307, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 1308, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1309, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1310, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1311, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1312, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1313, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1314, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1315, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1336, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1316, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1337, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1320, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1338, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1422, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1339, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1434, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1340, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1435, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1341, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1436, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1342, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1437, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 1343, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1438, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 1348, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1439, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1410, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1440, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1411, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1441, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1412, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1442, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1413, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1443, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1414, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1444, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1415, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1445, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1416, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1446, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1417, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1447, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 1418, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1448, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 1474, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1449, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1475, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1450, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1476, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1451, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1477, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1452, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1478, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1453, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1479, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1454, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1480, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1456, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1481, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1533, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1482, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1534, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 1530, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1535, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 1534, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1536, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1535, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1537, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1536, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1538, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1537, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1539, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1538, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1540, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1539, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1541, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1564, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1542, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1569, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1543, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1570, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1544, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, - 301, 302, 1571, 303, 304, 305, 306, 307, 308, 309, + 301, 302, 1545, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, - 300, 301, 302, 1572, 303, 304, 305, 306, 307, 308, + 300, 301, 302, 1546, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, - 299, 300, 301, 302, 1573, 303, 304, 305, 306, 307, + 299, 300, 301, 302, 1547, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1574, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1548, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1597, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1549, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1598, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1550, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1599, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1551, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1600, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1552, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1601, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 1553, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, - 302, 1602, 303, 304, 305, 306, 307, 308, 309, 310, + 302, 1624, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, 1625, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, @@ -1755,1000 +2073,1882 @@ static const short yytable[] = 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, 1627, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 298, 299, 300, 301, 302, 1639, 303, 304, 305, 306, + 298, 299, 300, 301, 302, 1628, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 298, 299, 300, 301, 302, 1640, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1629, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 298, 299, 300, 301, 302, 1641, 303, 304, + 0, 312, 298, 299, 300, 301, 302, 1630, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 298, 299, 300, 301, 302, 1656, 303, + 0, 0, 312, 298, 299, 300, 301, 302, 1631, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 298, 299, 300, 301, 302, 1657, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1632, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, - 1658, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 468, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 592, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 625, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 627, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 629, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 631, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 633, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 635, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 637, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 639, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 641, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 643, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 645, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 649, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 651, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 653, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 655, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 657, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 659, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 729, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 933, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 935, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 937, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 939, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 940, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 1633, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1634, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1635, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1636, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1637, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1638, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 0, 0, 1065, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 462, 298, 299, - 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, - 492, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 312, 298, 299, 300, 301, 302, 1639, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 493, 298, 299, 300, 301, 302, 0, + 0, 312, 298, 299, 300, 301, 302, 1640, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1641, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1642, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 0, 0, 0, 0, 312, 0, 494, 298, 299, 300, - 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 0, 0, 0, 0, 0, 312, 0, 496, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1643, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1644, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1698, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1705, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1706, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1707, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 498, 298, 299, 300, 301, 302, 0, 303, + 312, 298, 299, 300, 301, 302, 1708, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 1709, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1710, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 499, 298, 299, 300, 301, - 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 312, 0, 506, 298, - 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1711, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1712, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1713, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1714, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1715, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1716, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 0, 544, 298, 299, 300, 301, 302, 0, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 545, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 548, 298, 299, - 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, - 554, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 298, 299, 300, 301, 302, 1717, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 1718, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 624, 298, 299, 300, 301, 302, 0, + 0, 312, 298, 299, 300, 301, 302, 1719, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1720, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1721, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 0, 0, 0, 0, 312, 0, 626, 298, 299, 300, - 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 0, 0, 0, 0, 0, 312, 0, 628, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1722, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1756, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1764, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1765, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1766, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1767, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 630, 298, 299, 300, 301, 302, 0, 303, + 312, 298, 299, 300, 301, 302, 1768, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 1769, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1770, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 632, 298, 299, 300, 301, - 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 312, 0, 634, 298, - 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1771, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1772, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1773, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1774, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1775, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1776, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 0, 636, 298, 299, 300, 301, 302, 0, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 638, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 640, 298, 299, - 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, - 642, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 298, 299, 300, 301, 302, 1777, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 1778, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 644, 298, 299, 300, 301, 302, 0, + 0, 312, 298, 299, 300, 301, 302, 1779, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1780, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1781, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 0, 0, 0, 0, 312, 0, 648, 298, 299, 300, - 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 0, 0, 0, 0, 0, 312, 0, 650, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1819, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1820, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1821, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1822, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1823, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1824, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 652, 298, 299, 300, 301, 302, 0, 303, + 312, 298, 299, 300, 301, 302, 1825, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 1826, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1827, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 654, 298, 299, 300, 301, - 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 312, 0, 656, 298, - 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1828, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1829, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1830, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1831, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1832, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1833, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 0, 658, 298, 299, 300, 301, 302, 0, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 691, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 693, 298, 299, - 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, - 705, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 298, 299, 300, 301, 302, 1834, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 1835, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 706, 298, 299, 300, 301, 302, 0, + 0, 312, 298, 299, 300, 301, 302, 1836, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1868, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1869, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 0, 0, 0, 0, 312, 0, 710, 298, 299, 300, - 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 0, 0, 0, 0, 0, 312, 0, 711, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1870, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1871, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1872, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1873, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1874, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1875, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 712, 298, 299, 300, 301, 302, 0, 303, + 312, 298, 299, 300, 301, 302, 1876, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 1877, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1878, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 713, 298, 299, 300, 301, - 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 312, 0, 714, 298, - 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1879, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1880, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1881, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1882, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1906, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1907, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 0, 735, 298, 299, 300, 301, 302, 0, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 742, 298, 299, 300, 301, 302, - 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 932, 298, 299, - 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, - 934, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 298, 299, 300, 301, 302, 1908, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 1909, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 936, 298, 299, 300, 301, 302, 0, + 0, 312, 298, 299, 300, 301, 302, 1910, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1911, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1912, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 0, 0, 0, 0, 312, 0, 938, 298, 299, 300, - 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 0, 0, 0, 0, 0, 312, 0, 1000, - 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1913, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1914, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1915, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1916, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1917, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1918, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 1088, 298, 299, 300, 301, 302, 0, 303, + 312, 298, 299, 300, 301, 302, 1919, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 1920, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1950, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 1115, 298, 299, 300, 301, - 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 312, 0, 1204, 298, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1951, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1952, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1953, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1954, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1955, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1956, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1957, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 1958, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 1959, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1960, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 1961, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 1962, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 1963, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 1964, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 1994, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 1995, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 1996, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 1997, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 1998, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 1999, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 2000, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 2001, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 2002, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 2025, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 2026, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 2027, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 2028, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 2029, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 2030, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 2031, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 2032, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 2033, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 2067, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 2068, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 2069, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 2070, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 2071, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 2072, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 2073, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 2074, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 2075, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 2097, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 2098, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 2099, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 2100, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 2101, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 2102, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 2115, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 2116, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 2117, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 2118, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 2119, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 2120, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 2136, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 2137, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 2138, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 2139, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 2140, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 2141, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 2160, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 2161, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 2162, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 2172, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 2173, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 2174, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 2187, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 2188, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 298, 299, 300, 301, 302, 2189, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 298, 299, 300, 301, 302, 2205, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 298, 299, 300, 301, 302, 2206, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 298, 299, 300, 301, 302, 2207, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 298, 299, 300, 301, 302, + 2211, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 298, 299, 300, 301, + 302, 2212, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 298, 299, 300, + 301, 302, 2213, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 298, 299, + 300, 301, 302, 2217, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 298, + 299, 300, 301, 302, 2218, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 298, 299, 300, 301, 302, 2219, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 468, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 592, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 649, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 651, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 653, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 655, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 657, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 659, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 661, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 663, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 665, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 667, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 669, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 673, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 675, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 677, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 679, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 681, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 683, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 753, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 981, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 983, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 985, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 987, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 988, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 1125, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 462, 298, 299, 300, 301, 302, 0, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 0, 492, 298, 299, 300, 301, + 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 0, 493, 298, + 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 0, 494, 298, 299, 300, 301, 302, 0, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 0, 496, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 498, 298, 299, + 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, + 499, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 0, 506, 298, 299, 300, 301, 302, 0, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 0, 544, 298, 299, 300, + 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 0, 545, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 548, 298, 299, 300, 301, 302, 0, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 0, 554, 298, 299, 300, 301, + 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 0, 648, 298, + 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 0, 650, 298, 299, 300, 301, 302, 0, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 0, 652, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 654, 298, 299, + 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, + 656, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 0, 658, 298, 299, 300, 301, 302, 0, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 0, 660, 298, 299, 300, + 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 0, 662, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 664, 298, 299, 300, 301, 302, 0, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 0, 666, 298, 299, 300, 301, + 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 0, 668, 298, + 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 0, 672, 298, 299, 300, 301, 302, 0, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 0, 674, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 676, 298, 299, + 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, + 678, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 0, 680, 298, 299, 300, 301, 302, 0, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 0, 682, 298, 299, 300, + 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 0, 715, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 717, 298, 299, 300, 301, 302, 0, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 0, 729, 298, 299, 300, 301, + 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 0, 730, 298, + 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 0, 734, 298, 299, 300, 301, 302, 0, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 0, 735, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 736, 298, 299, + 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, + 737, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 0, 738, 298, 299, 300, 301, 302, 0, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 0, 759, 298, 299, 300, + 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 0, 766, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 980, 298, 299, 300, 301, 302, 0, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 0, 982, 298, 299, 300, 301, + 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 0, 984, 298, + 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 0, 986, 298, 299, 300, 301, 302, 0, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 0, 1048, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 1148, 298, 299, + 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, + 1175, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 0, 1276, 298, 299, 300, 301, 302, 0, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 0, 1280, 298, 299, 300, + 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312, 0, 1282, + 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, + 312, 0, 1425, 298, 299, 300, 301, 302, 0, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, + 0, 0, 0, 312, 0, 1427, 298, 299, 300, 301, + 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 0, 1429, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 0, 1208, 298, 299, 300, 301, 302, 0, 303, 304, + 0, 1431, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 1210, 298, 299, 300, 301, 302, + 0, 0, 312, 0, 1432, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 1329, 298, 299, + 0, 0, 0, 0, 0, 312, 0, 1433, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, - 1331, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 1455, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 1333, 298, 299, 300, 301, 302, 0, + 0, 312, 0, 1555, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 0, 0, 0, 0, 312, 0, 1344, 298, 299, 300, + 0, 0, 0, 0, 312, 0, 1702, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 0, 0, 0, 0, 0, 312, 0, 1345, + 310, 311, 0, 0, 0, 0, 0, 312, 0, 1703, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 1346, 298, 299, 300, 301, 302, 0, 303, + 312, 0, 1704, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 1347, 298, 299, 300, 301, + 0, 0, 0, 312, 0, 1865, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 312, 0, 1423, 298, + 311, 0, 0, 0, 0, 0, 312, 0, 1866, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, - 0, 1540, 298, 299, 300, 301, 302, 0, 303, 304, + 0, 1867, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, - 0, 0, 312, 0, 1541, 298, 299, 300, 301, 302, + 0, 0, 312, 0, 1988, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 0, 0, 0, 0, 0, 312, 0, 1542, 298, 299, + 0, 0, 0, 0, 0, 312, 0, 1989, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, - 1628, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 1990, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, - 0, 312, 0, 1629, 298, 299, 300, 301, 302, 0, + 0, 312, 0, 1991, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, - 0, 0, 0, 0, 312, 0, 1630, 298, 299, 300, + 0, 0, 0, 0, 312, 0, 1992, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 0, 0, 0, 0, 0, 312, 0, 1676, + 310, 311, 0, 0, 0, 0, 0, 312, 0, 1993, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 312, 0, 1677, 298, 299, 300, 301, 302, 0, 303, + 312, 0, 2103, 298, 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 312, 0, 1678 + 0, 0, 0, 312, 0, 2104, 298, 299, 300, 301, + 302, 0, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 0, 0, 0, 0, 0, 312, 0, 2105, 298, + 299, 300, 301, 302, 0, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 0, 0, 0, 0, 0, 312, + 0, 2163, 298, 299, 300, 301, 302, 0, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 0, 0, 0, + 0, 0, 312, 0, 2164, 298, 299, 300, 301, 302, + 0, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 0, 0, 0, 0, 0, 312, 0, 2165, 298, 299, + 300, 301, 302, 0, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 0, 0, 0, 0, 0, 312, 0, + 2223, 298, 299, 300, 301, 302, 0, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 0, 0, 0, 0, + 0, 312, 0, 2224, 298, 299, 300, 301, 302, 0, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 0, + 0, 0, 0, 0, 312, 0, 2225, 298, 299, 300, + 301, 302, 0, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 0, 0, 0, 0, 0, 312 }; static const short yycheck[] = { - 23, 90, 290, 292, 23, 176, 4, 4, 350, 180, - 325, 4, 82, 3, 282, 283, 284, 42, 4, 4, - 683, 64, 64, 1249, 65, 65, 65, 1253, 6, 70, - 70, 70, 64, 7, 65, 6, 65, 325, 89, 70, - 6, 70, 1105, 182, 4, 65, 5, 182, 4, 188, - 70, 4, 5, 188, 182, 152, 184, 171, 172, 1184, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 188, 34, 35, 36, 49, 171, - 172, 34, 35, 36, 1018, 171, 172, 38, 178, 179, - 41, 171, 172, 1027, 184, 187, 186, 189, 171, 172, - 1034, 187, 182, 189, 127, 128, 129, 183, 188, 132, - 133, 187, 135, 65, 187, 7, 189, 103, 70, 142, - 143, 144, 182, 146, 184, 148, 149, 182, 151, 184, - 200, 182, 92, 93, 183, 1198, 92, 93, 187, 182, - 182, 43, 44, 6, 167, 168, 188, 6, 189, 189, - 189, 178, 179, 7, 6, 818, 188, 182, 189, 186, - 189, 6, 185, 186, 182, 188, 184, 190, 7, 189, - 193, 194, 171, 172, 41, 42, 491, 44, 189, 468, - 171, 172, 172, 157, 158, 159, 160, 502, 183, 188, - 188, 188, 187, 171, 172, 188, 187, 182, 369, 6, - 1426, 469, 188, 491, 1430, 171, 172, 183, 173, 174, - 175, 187, 235, 182, 502, 184, 181, 240, 241, 242, + 23, 90, 1066, 23, 350, 292, 325, 4, 4, 707, + 1256, 1075, 4, 7, 43, 44, 4, 4, 1082, 3, + 64, 6, 176, 282, 283, 284, 180, 7, 42, 1165, + 38, 39, 40, 41, 42, 43, 44, 45, 64, 47, + 4, 49, 50, 64, 52, 53, 65, 4, 82, 65, + 65, 70, 65, 101, 70, 70, 6, 70, 65, 65, + 194, 69, 290, 70, 70, 1333, 200, 183, 184, 1337, + 4, 5, 183, 184, 6, 7, 183, 184, 183, 184, + 183, 184, 6, 199, 5, 201, 183, 184, 199, 97, + 98, 99, 199, 6, 201, 200, 199, 325, 201, 49, + 34, 35, 36, 200, 127, 128, 129, 183, 184, 132, + 133, 7, 135, 34, 35, 36, 183, 184, 115, 142, + 143, 144, 164, 146, 200, 148, 149, 194, 151, 6, + 183, 184, 195, 200, 1270, 164, 199, 166, 183, 184, + 104, 105, 195, 172, 167, 168, 194, 104, 105, 6, + 194, 159, 183, 184, 199, 65, 854, 194, 6, 196, + 70, 7, 185, 186, 195, 188, 200, 190, 194, 6, + 193, 194, 491, 6, 200, 169, 170, 171, 172, 200, + 194, 468, 201, 502, 7, 201, 201, 6, 201, 169, + 170, 171, 172, 201, 201, 201, 190, 191, 183, 184, + 184, 190, 191, 200, 200, 44, 194, 1271, 200, 238, + 469, 1275, 235, 200, 196, 369, 198, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 183, - 6, 7, 164, 187, 166, 1199, 6, 290, 1494, 1203, - 172, 1396, 1498, 292, 1399, 298, 299, 300, 301, 302, + 184, 190, 191, 491, 195, 55, 56, 290, 199, 198, + 1516, 194, 292, 1519, 502, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 953, 64, 183, 171, 172, 318, 187, 320, 182, 8, - 184, 324, 325, 157, 158, 159, 160, 330, 331, 332, - 188, 334, 335, 336, 337, 338, 339, 340, 157, 158, - 159, 160, 178, 179, 178, 179, 6, 171, 172, 352, - 353, 354, 186, 182, 357, 184, 238, 1462, 7, 178, - 179, 1466, 365, 187, 107, 108, 109, 110, 111, 3, - 4, 374, 55, 56, 669, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 171, - 172, 669, 697, 171, 172, 673, 182, 171, 172, 1323, - 1324, 1325, 1326, 412, 6, 187, 1330, 182, 184, 187, - 186, 38, 670, 187, 41, 42, 182, 3, 4, 697, - 725, 726, 727, 9, 10, 11, 12, 13, 14, 15, + 1558, 194, 190, 191, 1562, 318, 38, 320, 196, 41, + 198, 324, 325, 1001, 183, 184, 195, 330, 331, 332, + 199, 334, 335, 336, 337, 338, 339, 340, 347, 348, + 199, 183, 184, 169, 170, 171, 172, 183, 184, 352, + 353, 354, 195, 194, 357, 194, 199, 199, 183, 184, + 194, 200, 365, 199, 190, 191, 169, 170, 171, 172, + 194, 374, 198, 194, 199, 1419, 1420, 1421, 1422, 195, + 1606, 64, 1426, 199, 1610, 183, 184, 190, 191, 183, + 184, 183, 184, 195, 693, 38, 3, 199, 41, 42, + 46, 199, 1650, 190, 191, 199, 1654, 199, 194, 196, + 196, 198, 412, 185, 186, 187, 194, 3, 4, 6, + 7, 193, 721, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 194, 194, 196, + 749, 750, 751, 8, 194, 694, 183, 184, 185, 186, + 187, 464, 194, 42, 190, 191, 193, 470, 468, 194, + 196, 196, 198, 38, 6, 42, 41, 42, 42, 44, + 1524, 1525, 194, 200, 1528, 693, 200, 200, 491, 697, + 58, 59, 60, 61, 194, 63, 196, 500, 194, 502, + 196, 504, 505, 41, 42, 42, 44, 510, 6, 194, + 519, 196, 194, 721, 196, 6, 194, 520, 521, 194, + 194, 196, 54, 194, 194, 196, 529, 134, 135, 136, + 137, 138, 139, 140, 141, 194, 539, 196, 194, 4, + 196, 749, 750, 751, 194, 6, 196, 550, 4, 552, + 553, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 194, 1239, 196, 194, 194, 193, 196, 194, 3, 196, + 1614, 5, 871, 119, 120, 121, 122, 123, 42, 846, + 847, 194, 194, 196, 196, 194, 194, 196, 196, 194, + 194, 196, 592, 199, 6, 201, 194, 183, 184, 199, + 199, 201, 201, 189, 199, 5, 201, 8, 194, 194, + 199, 197, 201, 6, 200, 199, 194, 201, 173, 174, + 175, 176, 177, 194, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 199, 4, 201, 194, 199, 193, 201, + 200, 173, 174, 175, 176, 177, 201, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 1700, 199, 199, 201, + 201, 193, 6, 871, 199, 196, 201, 670, 671, 199, + 199, 201, 201, 199, 199, 201, 201, 199, 199, 201, + 201, 684, 685, 686, 687, 688, 689, 690, 8, 199, + 693, 201, 194, 199, 697, 201, 199, 700, 201, 199, + 199, 201, 201, 712, 200, 199, 709, 201, 1034, 199, + 199, 201, 201, 199, 194, 201, 1760, 200, 721, 722, + 199, 199, 201, 201, 199, 199, 201, 201, 199, 6, + 201, 800, 199, 199, 201, 201, 198, 746, 747, 748, + 199, 199, 201, 201, 194, 194, 749, 750, 751, 194, + 194, 754, 755, 200, 993, 758, 199, 6, 201, 199, + 107, 201, 771, 200, 200, 6, 769, 770, 200, 194, + 194, 780, 173, 174, 175, 176, 177, 194, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 194, 194, 194, + 194, 1030, 193, 5, 195, 194, 194, 194, 194, 194, + 194, 804, 805, 806, 807, 808, 809, 810, 811, 812, + 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, + 823, 824, 825, 826, 827, 828, 829, 194, 194, 173, + 174, 175, 176, 177, 6, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 194, 194, 194, 847, 194, 193, + 195, 194, 855, 173, 174, 175, 176, 177, 194, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 871, 194, + 873, 194, 875, 193, 176, 177, 194, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 889, 890, 891, 194, + 194, 193, 199, 194, 194, 194, 194, 194, 4, 1943, + 914, 193, 7, 199, 198, 7, 909, 910, 911, 7, + 7, 195, 7, 7, 102, 104, 5, 200, 165, 5, + 5, 5, 5, 1249, 173, 174, 175, 176, 177, 5, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 5, + 5, 5, 5, 5, 193, 5, 5, 3, 4, 152, + 5, 5, 952, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 725, 726, 727, - 182, 464, 54, 182, 182, 347, 348, 470, 182, 468, - 184, 182, 161, 162, 163, 164, 165, 182, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 182, 491, 184, - 1404, 1405, 181, 187, 1408, 189, 182, 500, 184, 502, - 189, 504, 505, 3, 171, 172, 182, 510, 157, 158, - 159, 160, 171, 172, 46, 171, 172, 520, 521, 182, - 187, 171, 172, 42, 1167, 182, 529, 184, 187, 178, - 179, 187, 42, 183, 171, 172, 539, 171, 172, 42, - 835, 810, 811, 177, 171, 172, 183, 550, 182, 552, - 553, 185, 44, 182, 188, 184, 1470, 178, 179, 182, - 187, 184, 182, 184, 184, 186, 182, 835, 184, 161, - 162, 163, 164, 165, 182, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 182, 188, 184, 150, 182, 181, - 184, 188, 155, 592, 42, 171, 172, 178, 179, 188, - 182, 177, 184, 184, 38, 186, 182, 41, 42, 185, - 44, 182, 188, 184, 177, 182, 6, 184, 1532, 6, - 183, 184, 122, 123, 124, 125, 126, 127, 128, 129, - 171, 172, 173, 174, 175, 6, 7, 519, 8, 182, - 181, 184, 182, 646, 647, 58, 59, 60, 61, 187, - 63, 189, 182, 187, 1568, 189, 182, 660, 661, 662, - 663, 664, 665, 666, 986, 187, 669, 189, 6, 187, - 673, 189, 187, 676, 189, 187, 187, 189, 189, 187, - 4, 189, 685, 4, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 42, 697, 698, 3, 945, 181, 187, - 187, 189, 189, 187, 182, 189, 5, 776, 164, 165, - 182, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 6, 182, 725, 726, 727, 181, 6, 730, 731, 182, - 187, 734, 189, 187, 982, 189, 187, 6, 189, 3, - 4, 1655, 745, 746, 5, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 187, - 6, 189, 187, 187, 189, 189, 182, 780, 781, 782, - 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, - 793, 161, 162, 163, 164, 165, 182, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 688, 187, 187, 189, - 189, 181, 811, 183, 188, 187, 819, 189, 187, 187, - 189, 189, 187, 187, 189, 189, 182, 182, 878, 188, - 188, 182, 835, 4, 837, 182, 839, 182, 182, 182, - 722, 723, 724, 6, 95, 184, 188, 188, 188, 186, - 853, 854, 855, 188, 6, 1177, 182, 182, 5, 182, - 182, 4, 182, 182, 182, 747, 182, 182, 182, 182, - 873, 874, 875, 182, 756, 161, 162, 163, 164, 165, - 182, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 182, 182, 182, 182, 182, 181, 183, 182, 182, 182, - 463, 182, 7, 182, 182, 182, 182, 171, 172, 182, - 182, 182, 182, 177, 182, 181, 6, 916, 182, 7, - 187, 185, 187, 186, 188, 161, 162, 163, 164, 165, - 7, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 7, 183, 7, 946, 7, 181, 90, 92, 188, 38, - 39, 40, 41, 42, 43, 44, 45, 153, 47, 1009, - 49, 50, 5, 52, 53, 5, 5, 5, 5, 972, - 973, 1040, 5, 5, 5, 5, 5, 5, 5, 982, - 69, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 140, 996, 997, 5, 85, 86, 87, 5, - 5, 5, 3, 5, 187, 1008, 5, 5, 1011, 6, - 183, 6, 4, 6, 186, 189, 7, 7, 1021, 7, - 7, 7, 7, 7, 189, 1028, 1029, 1030, 188, 188, - 7, 7, 1035, 182, 7, 186, 1039, 154, 5, 4, - 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, - 1053, 1054, 1055, 1056, 187, 187, 187, 187, 147, 187, - 187, 187, 187, 187, 187, 187, 187, 1117, 187, 1072, - 183, 161, 162, 163, 164, 165, 958, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 1089, 187, 187, 6, - 187, 181, 187, 187, 187, 187, 187, 6, 6, 6, - 189, 187, 187, 187, 187, 987, 187, 989, 1111, 991, - 1113, 187, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 689, 690, 187, 692, - 187, 694, 695, 187, 187, 182, 182, 182, 182, 3, - 4, 182, 7, 185, 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, 732, - 733, 182, 184, 736, 1422, 182, 6, 1180, 1181, 182, - 1183, 7, 1185, 1186, 7, 7, 182, 7, 182, 1192, - 753, 754, 7, 182, 7, 7, 759, 760, 1201, 6, - 182, 182, 182, 766, 7, 768, 1209, 7, 7, 188, - 7, 1214, 7, 1263, 1217, 4, 1219, 1220, 1221, 1222, - 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, - 189, 6, 6, 4, 7, 1238, 150, 1240, 1241, 1242, - 7, 1489, 3, 1491, 161, 162, 163, 164, 165, 3, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 3, - 173, 3, 3, 3, 181, 828, 3, 830, 6, 3, - 3, 3, 1322, 3, 3, 3, 3, 840, 841, 842, - 5, 5, 845, 846, 847, 848, 849, 850, 851, 3, - 3, 6, 4, 183, 183, 1543, 188, 7, 1180, 1181, - 186, 1183, 6, 1306, 6, 1308, 6, 171, 172, 6, - 6, 1314, 6, 177, 6, 91, 188, 1367, 182, 187, - 187, 187, 183, 183, 188, 183, 6, 6, 187, 183, - 187, 187, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, - 1343, 187, 183, 187, 187, 1348, 4, 187, 187, 187, - 187, 183, 187, 187, 161, 162, 163, 164, 165, 1241, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 187, - 187, 187, 183, 187, 181, 6, 6, 187, 186, 6, - 185, 944, 6, 6, 6, 1435, 161, 162, 163, 164, - 165, 6, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 6, 6, 6, 6, 6, 181, 1410, 1411, 1412, - 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1469, - 6, 6, 6, 161, 162, 163, 164, 165, 6, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 6, 6, - 6, 1004, 6, 181, 7, 91, 3, 6, 3, 1012, - 6, 1501, 163, 164, 165, 6, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 1468, 173, 6, 1031, 6, - 181, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, - 1483, 3, 1485, 6, 1487, 3, 6, 6, 3, 6, - 3, 3, 3, 3, 4, 186, 4, 6, 185, 9, + 26, 27, 28, 29, 30, 31, 32, 175, 176, 177, + 6, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 5, 994, 5, 5, 5, 193, 5, 1006, 5, 5, + 5, 173, 174, 175, 176, 177, 5, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 5, 1020, 1021, 1088, + 5, 193, 5, 3, 5, 199, 1035, 1030, 1037, 5, + 1039, 6, 5, 195, 6, 4, 6, 198, 201, 7, + 7, 1044, 1045, 1057, 7, 7, 7, 7, 7, 201, + 200, 200, 7, 1056, 7, 194, 1059, 7, 6, 166, + 198, 5, 199, 199, 199, 199, 1069, 199, 199, 199, + 199, 199, 199, 1076, 1077, 1078, 199, 199, 199, 199, + 1083, 199, 199, 199, 1087, 199, 199, 199, 1091, 1092, + 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, + 1113, 1114, 1115, 1116, 6, 4, 6, 199, 199, 199, + 199, 199, 199, 195, 199, 199, 199, 183, 184, 1132, + 199, 199, 6, 189, 6, 196, 194, 194, 194, 7, + 6, 197, 194, 194, 200, 194, 1149, 173, 174, 175, + 176, 177, 194, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 194, 1177, 194, 3, 4, 193, 1171, 194, + 1173, 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, 194, 194, 194, + 194, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 173, 174, 175, 176, 177, + 194, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 194, 197, 6, 1252, 1253, 193, 1255, 194, 194, 1252, + 1253, 194, 1255, 194, 1257, 1258, 194, 194, 194, 194, + 194, 1264, 194, 194, 7, 7, 7, 200, 7, 7, + 1273, 7, 7, 7, 7, 7, 7, 7, 1281, 4, + 6, 162, 4, 1286, 7, 3, 1289, 7, 1291, 1292, + 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, + 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, + 1313, 1314, 1315, 1316, 3, 1554, 1325, 3, 185, 1322, + 3, 1324, 1325, 1326, 3, 3, 3, 3, 173, 174, + 175, 176, 177, 1347, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 3, 3, 183, 184, 3, 193, 3, + 195, 189, 3, 3, 199, 4, 194, 5, 5, 197, + 3, 3, 200, 195, 195, 6, 200, 7, 198, 6, + 6, 6, 6, 6, 6, 183, 184, 6, 200, 103, + 199, 189, 199, 195, 199, 195, 194, 6, 199, 195, + 199, 198, 200, 195, 199, 199, 195, 195, 199, 1402, + 195, 1404, 199, 199, 1418, 199, 1645, 1410, 1647, 173, + 174, 175, 176, 177, 6, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 199, 199, 199, 199, 199, 193, + 199, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, + 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, + 1453, 1454, 199, 1456, 199, 199, 173, 174, 175, 176, + 177, 1475, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 6, 4, 6, 185, 6, 193, 6, 197, 6, + 3, 4, 199, 7, 1723, 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, + 103, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 3, 6, 1530, 1531, 1532, + 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, + 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, + 1553, 3, 4, 1567, 3, 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, 173, 174, 175, 176, 177, 6, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 3, 6, 3, 1613, + 6, 193, 6, 3, 6, 3, 3, 3, 7, 1612, + 198, 6, 6, 4, 6, 1618, 6, 1620, 6, 1622, + 197, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, + 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, + 1643, 1644, 6, 1657, 200, 100, 201, 200, 200, 200, + 195, 199, 199, 199, 150, 195, 199, 199, 195, 155, + 183, 184, 105, 199, 103, 195, 189, 6, 6, 195, + 195, 194, 3, 195, 6, 3, 6, 200, 195, 199, + 199, 177, 6, 162, 6, 6, 6, 183, 184, 6, + 6, 3, 6, 6, 1697, 1698, 5, 5, 201, 6, + 200, 200, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, + 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, + 201, 6, 199, 199, 199, 199, 195, 195, 199, 195, + 6, 183, 184, 6, 199, 199, 6, 189, 6, 6, + 6, 6, 194, 6, 6, 6, 6, 6, 200, 6, + 6, 6, 5, 1756, 5, 200, 200, 199, 1761, 1762, + 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, + 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 195, 6, 6, 6, 201, 193, + 100, 162, 6, 6, 5, 5, 199, 6, 195, 6, + 1813, 200, 1815, 199, 1817, 199, 1819, 1820, 1821, 1822, + 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, + 1833, 1834, 1835, 1836, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 200, + 200, 200, 199, 201, 193, 200, 200, 200, 199, 199, + 195, 195, 6, 200, 100, 1868, 1869, 1870, 1871, 1872, + 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, + 6, 6, 201, 6, 6, 6, 6, 6, 6, 199, + 201, 6, 6, 167, 200, 199, 6, 168, 199, 6, + 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, + 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 173, 174, + 175, 176, 177, 200, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 6, 6, 199, 6, 6, 193, 6, + 6, 1944, 200, 1946, 6, 1948, 200, 1950, 1951, 1952, + 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, + 1963, 1964, 173, 174, 175, 176, 177, 463, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 199, 195, 199, + 199, 199, 193, 6, 200, 200, 200, 195, 6, 6, + 6, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, + 0, 6, 200, 6, 200, 200, 200, 200, 200, 6, + 6, 200, 200, 200, 6, 6, 2019, 2020, 2021, 2022, + 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, + 2033, 6, 38, 39, 40, 41, 42, 43, 44, 45, + 200, 47, 200, 49, 50, 200, 52, 53, 6, 6, + 6, 200, 2055, 200, 2057, 200, 2059, 6, 2061, 6, + 2063, 6, 2065, 69, 2067, 2068, 2069, 2070, 2071, 2072, + 2073, 2074, 2075, 0, 7, 7, 594, 8, 7, 1050, + 997, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 97, 98, 99, 2097, 2098, 2099, 2100, 2101, 2102, + 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, + 2123, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 2136, 2137, 2138, 2139, 2140, 2141, 2142, + -1, 2144, -1, 2146, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 159, -1, -1, -1, 2160, 2161, 2162, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 2172, + 2173, 2174, 2175, 2176, 2177, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 2187, 2188, 2189, 2190, -1, 2192, + -1, 2194, -1, -1, -1, 201, -1, -1, -1, -1, + -1, -1, 2205, 2206, 2207, -1, -1, -1, 2211, 2212, + 2213, -1, -1, -1, 2217, 2218, 2219, 713, 714, -1, + 716, -1, 718, 719, -1, -1, 2229, 2230, 2231, -1, + -1, -1, -1, -1, -1, 2238, -1, 2240, -1, 2242, + -1, -1, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + 756, 757, 193, -1, 760, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, 777, 778, -1, -1, 193, -1, 783, 784, -1, + -1, 3, 4, 5, 790, 7, 792, 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, 3, 4, 5, -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, 34, 35, 36, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 864, -1, + 866, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 876, 877, 878, -1, -1, 881, 882, 883, 884, 885, + 886, 887, -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, 6, 6, 6, 1529, 1530, 7, 6, - 189, 1534, 1535, 1536, 1537, 1538, 1539, 161, 162, 163, - 164, 165, 88, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 188, 188, 188, 188, 91, 181, 183, 187, - 93, 1564, 183, 183, 183, 183, 1569, 1570, 1571, 1572, - 1573, 1574, 1575, 1576, 1577, 6, 187, 187, 187, 187, - 187, 187, 6, 183, 183, 150, 183, 3, 6, 187, - 3, 6, 6, 3, 1597, 1598, 1599, 1600, 1601, 1602, - 1603, 6, 1605, 6, 1607, 161, 162, 163, 164, 165, - 6, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 6, 6, 1625, 1626, 1627, 181, 1189, 6, 1191, 5, - 188, 6, 1195, 5, 187, 189, 1639, 1640, 1641, 1642, - 1643, 1644, 6, 188, 187, 189, 187, 187, 1211, 183, - 6, 183, 183, 1656, 1657, 1658, 1659, 187, 1661, 187, - 1663, 171, 172, 187, 6, 6, 6, 177, 6, 6, - 6, 6, 182, 6, 6, 6, 6, 6, 188, 6, - 1683, 1684, 1685, 188, 6, 5, 5, 187, 187, 1692, - 188, 1694, 189, 1696, 3, 4, 187, 187, 183, 183, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 187, 187, 88, 188, 8, 188, - 161, 162, 163, 164, 165, 188, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 188, 187, 1310, 6, 6, - 181, 6, 150, 6, 6, 1318, 1319, 3, 4, 5, - 5, 7, 5, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 188, 34, 35, - 36, 8, 3, 4, 5, 188, 187, 189, 9, 10, + 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, 8, -1, -1, -1, 169, 170, 171, + 172, -1, -1, -1, -1, -1, -1, -1, 8, -1, + -1, 183, 184, -1, -1, -1, -1, 189, 190, 191, + -1, -1, 194, -1, 196, -1, 198, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 992, -1, -1, -1, + -1, -1, -1, -1, -1, 183, 184, -1, -1, -1, + -1, 189, 3, 4, -1, -1, 194, -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, 188, 34, 35, 36, 187, 6, 183, 183, - 188, 6, 189, 6, 88, 1398, 6, 6, 1401, 161, - 162, 163, 164, 165, 6, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 6, 6, 6, 6, 6, 181, - 6, 189, 171, 172, 188, 6, 187, 155, 177, 187, - 6, 156, 187, 182, 187, 6, 188, 188, 188, 188, - 187, 161, 162, 163, 164, 165, 183, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 6, 6, 6, 6, - 1463, 181, 6, 187, 187, 6, 188, 188, 1471, 188, - 187, 157, 158, 159, 160, 183, 6, 8, 6, 6, - 6, 188, 188, 188, 6, 171, 172, 6, 0, 0, - 594, 177, 178, 179, 7, -1, 182, 7, 184, 8, - 186, 7, 1002, -1, 161, 162, 163, 164, 165, 949, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - 171, 172, -1, -1, 181, 8, 177, 3, 4, -1, - 1533, 182, -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, 3, - 4, -1, -1, -1, 1567, 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, 1595, -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, 1624, -1, -1, -1, -1, -1, -1, -1, -1, - 161, 162, 163, 164, 165, 1638, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, -1, -1, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, 171, 172, -1, 181, -1, - -1, 177, -1, -1, -1, -1, 182, -1, -1, 161, - 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, 171, 172, 181, - -1, 183, -1, 177, -1, 187, 0, 1, 182, 3, - 4, -1, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 171, 172, -1, - -1, -1, 181, 177, -1, -1, -1, -1, 182, 33, - 189, -1, -1, 37, 38, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, - -1, -1, -1, 57, 58, 59, 60, 61, 62, 63, - -1, 65, 66, 67, 68, 69, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 85, 86, 87, -1, -1, 181, -1, 92, -1, - 94, -1, 96, 97, 98, 99, 100, 101, 102, -1, - -1, 38, 39, 40, 41, 42, 43, 44, 45, -1, - 47, -1, 49, 50, -1, 52, 53, -1, 122, 123, - 124, 125, 126, 127, 128, 129, -1, -1, -1, -1, - -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 147, 148, 149, -1, 151, 85, 86, - 87, 38, 39, 40, 41, 42, 43, 44, 45, -1, + 31, 32, -1, -1, -1, -1, 38, 39, 40, 41, + 42, 43, 44, 45, -1, 47, 1052, 49, 50, -1, + 52, 53, -1, -1, 1060, -1, -1, -1, -1, -1, + -1, -1, -1, 183, 184, -1, -1, 69, -1, 189, + -1, -1, -1, 1079, 194, -1, -1, -1, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 183, 184, 97, 98, 99, 193, 189, + -1, -1, -1, -1, 194, -1, 201, -1, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 173, 174, 175, 176, 177, 193, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 173, 174, + 175, 176, 177, 193, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, 159, 193, -1, + -1, 0, 1, -1, 3, 4, 201, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 183, 184, -1, -1, -1, 193, 189, -1, + -1, -1, -1, 194, 33, 201, -1, -1, 37, 38, + 39, 40, 41, 42, 43, 44, 45, -1, 47, 48, + 49, 50, 51, 52, 53, -1, -1, -1, 57, 58, + 59, 60, 61, 62, 63, -1, 65, 66, 67, 68, + 69, 38, 39, 40, 41, 42, 43, 44, 45, -1, 47, -1, 49, 50, -1, 52, 53, -1, -1, -1, + -1, -1, -1, -1, -1, 1261, -1, 1263, 97, 98, + 99, 1267, 69, -1, -1, 104, -1, 106, -1, 108, + 109, 110, 111, 112, 113, 114, -1, 1283, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 4, -1, 69, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 85, 86, - 87, -1, -1, 181, -1, -1, -1, -1, -1, 33, - 147, 189, -1, 37, 38, 39, 40, 41, 42, 43, - 44, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 97, 98, 99, -1, -1, 134, 135, 136, 137, 138, + 139, 140, 141, -1, -1, 173, 174, 175, 176, 177, + 4, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 159, 160, 161, -1, 163, 193, -1, -1, -1, -1, + -1, 199, -1, 201, -1, -1, -1, -1, -1, 33, + -1, -1, -1, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 159, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, 57, 58, 59, 60, 61, 62, 63, - 41, 65, 66, 67, 68, 69, -1, -1, -1, -1, - -1, -1, 189, -1, -1, -1, -1, -1, -1, -1, - 147, 85, 86, 87, -1, -1, -1, -1, 92, -1, - 94, -1, 96, 97, 98, 99, 100, 101, 102, 38, - 39, 40, 41, 42, 43, 44, 45, -1, 47, -1, - 49, 50, -1, 52, 53, -1, -1, -1, -1, -1, - -1, -1, 189, 104, 105, 106, -1, -1, -1, -1, - 69, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, -1, -1, 147, -1, -1, 85, 86, 87, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, -1, - 141, 142, 143, 144, 145, 146, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, -1, -1, - -1, -1, 187, -1, 189, -1, -1, -1, -1, -1, - -1, -1, -1, 161, 162, 163, 164, 165, 147, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, -1, -1, -1, -1, 187, - -1, 189, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, -1, -1, -1, 187, -1, - 189, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, -1, 161, 162, 163, 164, 165, 189, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, -1, 161, 162, 163, - 164, 165, 189, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - 161, 162, 163, 164, 165, 189, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, 161, 162, 163, 164, 165, 189, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, -1, 161, 162, 163, 164, - 165, 189, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, -1, 161, - 162, 163, 164, 165, 189, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, -1, 161, 162, 163, 164, 165, 189, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, -1, 161, 162, 163, 164, 165, - 189, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, 161, 162, - 163, 164, 165, 189, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - -1, 161, 162, 163, 164, 165, 189, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, -1, 161, 162, 163, 164, 165, 189, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, -1, 161, 162, 163, - 164, 165, 189, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, -1, - 161, 162, 163, 164, 165, 189, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, 161, 162, 163, 164, 165, 189, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, -1, 161, 162, 163, 164, - 165, 189, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, -1, 161, - 162, 163, 164, 165, 189, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, 161, 162, 163, 164, - 165, 187, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, 161, 162, 163, - 164, 165, 187, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, 161, 162, - 163, 164, 165, 187, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, 161, - 162, 163, 164, 165, 187, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - 161, 162, 163, 164, 165, 187, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, 161, 162, 163, 164, 165, 187, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, 161, 162, 163, 164, 165, 187, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, 161, 162, 163, 164, 165, 187, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, 161, 162, 163, 164, 165, 187, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, 161, 162, 163, 164, 165, - 187, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, -1, -1, 185, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, -1, -1, 185, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, - 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, - 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, - 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, - 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, - 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183, 161, 162, 163, 164, - 165, -1, 167, 168, 169, 170, 171, 172, 173, 174, - 175, -1, -1, -1, -1, -1, 181, -1, 183, 161, - 162, 163, 164, 165, -1, 167, 168, 169, 170, 171, - 172, 173, 174, 175, -1, -1, -1, -1, -1, 181, - -1, 183, 161, 162, 163, 164, 165, -1, 167, 168, - 169, 170, 171, 172, 173, 174, 175, -1, -1, -1, - -1, -1, 181, -1, 183, 161, 162, 163, 164, 165, - -1, 167, 168, 169, 170, 171, 172, 173, 174, 175, - -1, -1, -1, -1, -1, 181, -1, 183, 161, 162, - 163, 164, 165, -1, 167, 168, 169, 170, 171, 172, - 173, 174, 175, -1, -1, -1, -1, -1, 181, -1, - 183, 161, 162, 163, 164, 165, -1, 167, 168, 169, - 170, 171, 172, 173, 174, 175, -1, -1, -1, -1, - -1, 181, -1, 183, 161, 162, 163, 164, 165, -1, - 167, 168, 169, 170, 171, 172, 173, 174, 175, -1, - -1, -1, -1, -1, 181, -1, 183, 161, 162, 163, - 164, 165, -1, 167, 168, 169, 170, 171, 172, 173, - 174, 175, -1, -1, -1, -1, -1, 181, -1, 183, - 161, 162, 163, 164, 165, -1, 167, 168, 169, 170, - 171, 172, 173, 174, 175, -1, -1, -1, -1, -1, - 181, -1, 183, 161, 162, 163, 164, 165, -1, 167, - 168, 169, 170, 171, 172, 173, 174, 175, -1, -1, - -1, -1, -1, 181, -1, 183 + -1, 65, 66, 67, 68, 69, -1, -1, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, 201, -1, -1, -1, 193, -1, + 1406, -1, -1, 97, 98, 99, 201, -1, 1414, 1415, + 104, -1, 106, -1, 108, 109, 110, 111, 112, 113, + 114, 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, -1, -1, -1, + -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 159, 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, -1, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, 1518, 193, -1, 1521, -1, -1, -1, 199, + -1, 201, -1, -1, -1, -1, 116, 117, 118, -1, + -1, -1, -1, -1, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, -1, -1, -1, -1, -1, -1, + -1, 201, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, -1, 153, 154, 155, 156, 157, 158, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, -1, -1, -1, -1, 199, 201, 201, -1, -1, + -1, 1607, -1, -1, 173, 174, 175, 176, 177, 1615, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, -1, 173, 174, 175, + 176, 177, 201, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, -1, + 173, 174, 175, 176, 177, 201, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, 173, 174, 175, 176, 177, 201, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 1701, 173, 174, 175, 176, + 177, 201, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, -1, 173, + 174, 175, 176, 177, 201, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, -1, -1, -1, -1, -1, -1, 201, 173, 174, + 175, 176, 177, 1759, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + -1, 173, 174, 175, 176, 177, 201, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, -1, -1, -1, -1, -1, -1, 201, + 173, 174, 175, 176, 177, 1811, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, 173, 174, 175, 176, 177, 201, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, -1, -1, -1, -1, -1, + -1, 201, -1, 173, 174, 175, 176, 177, 1864, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, -1, -1, -1, -1, -1, + -1, 201, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 173, 174, 175, 176, 177, 1902, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, -1, 173, 174, 175, 176, 177, 201, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, -1, 173, 174, 175, + 176, 177, 201, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, -1, + 173, 174, 175, 176, 177, 201, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, 173, 174, 175, 176, 177, 199, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, 173, 174, 175, 176, 177, 199, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, 173, 174, 175, 176, 177, 199, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, 173, 174, 175, 176, 177, 199, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, 173, 174, 175, 176, 177, + 199, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, 173, 174, 175, 176, + 177, 199, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, 173, 174, 175, + 176, 177, 199, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, 173, 174, + 175, 176, 177, 199, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, 173, + 174, 175, 176, 177, 199, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + 173, 174, 175, 176, 177, 199, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, -1, -1, 197, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, -1, -1, 197, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, 195, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 195, 173, 174, 175, 176, + 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, 195, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, 195, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, -1, 195, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, 195, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + 195, 173, 174, 175, 176, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, 195, 173, 174, 175, 176, 177, -1, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, 195, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, 195, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, 195, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 195, 173, 174, 175, 176, + 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, 195, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, 195, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, -1, 195, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, 195, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + 195, 173, 174, 175, 176, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, 195, 173, 174, 175, 176, 177, -1, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, 195, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, 195, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, 195, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 195, 173, 174, 175, 176, + 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, 195, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, 195, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, -1, 195, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, 195, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + 195, 173, 174, 175, 176, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, 195, 173, 174, 175, 176, 177, -1, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, 195, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, 195, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, 195, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 195, 173, 174, 175, 176, + 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, 195, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, 195, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, -1, 195, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, 195, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + 195, 173, 174, 175, 176, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, 195, 173, 174, 175, 176, 177, -1, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, 195, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, 195, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, 195, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 195, 173, 174, 175, 176, + 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, 195, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, 195, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, -1, 195, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, 195, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + 195, 173, 174, 175, 176, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, 195, 173, 174, 175, 176, 177, -1, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, 195, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, 195, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, 195, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 195, 173, 174, 175, 176, + 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, 195, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, 195, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, -1, 195, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, 195, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + 195, 173, 174, 175, 176, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, 195, 173, 174, 175, 176, 177, -1, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, 195, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, 195, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, 195, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 195, 173, 174, 175, 176, + 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, 195, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, 195, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, -1, 195, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, 195, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + 195, 173, 174, 175, 176, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, 195, 173, 174, 175, 176, 177, -1, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, 195, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193, -1, 195, + 173, 174, 175, 176, 177, -1, 179, 180, 181, 182, + 183, 184, 185, 186, 187, -1, -1, -1, -1, -1, + 193, -1, 195, 173, 174, 175, 176, 177, -1, 179, + 180, 181, 182, 183, 184, 185, 186, 187, -1, -1, + -1, -1, -1, 193, -1, 195, 173, 174, 175, 176, + 177, -1, 179, 180, 181, 182, 183, 184, 185, 186, + 187, -1, -1, -1, -1, -1, 193, -1, 195, 173, + 174, 175, 176, 177, -1, 179, 180, 181, 182, 183, + 184, 185, 186, 187, -1, -1, -1, -1, -1, 193, + -1, 195, 173, 174, 175, 176, 177, -1, 179, 180, + 181, 182, 183, 184, 185, 186, 187, -1, -1, -1, + -1, -1, 193, -1, 195, 173, 174, 175, 176, 177, + -1, 179, 180, 181, 182, 183, 184, 185, 186, 187, + -1, -1, -1, -1, -1, 193, -1, 195, 173, 174, + 175, 176, 177, -1, 179, 180, 181, 182, 183, 184, + 185, 186, 187, -1, -1, -1, -1, -1, 193, -1, + 195, 173, 174, 175, 176, 177, -1, 179, 180, 181, + 182, 183, 184, 185, 186, 187, -1, -1, -1, -1, + -1, 193, -1, 195, 173, 174, 175, 176, 177, -1, + 179, 180, 181, 182, 183, 184, 185, 186, 187, -1, + -1, -1, -1, -1, 193, -1, 195, 173, 174, 175, + 176, 177, -1, 179, 180, 181, 182, 183, 184, 185, + 186, 187, -1, -1, -1, -1, -1, 193 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/bison/bison.simple" @@ -3458,19 +4658,19 @@ yyreduce: switch (yyn) { case 4: -#line 172 "Gmsh.y" +#line 179 "Gmsh.y" { yyerrok ; return 1; ; break;} case 5: -#line 178 "Gmsh.y" +#line 185 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 6: -#line 179 "Gmsh.y" +#line 186 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} case 7: -#line 184 "Gmsh.y" +#line 191 "Gmsh.y" { Msg(PARSER_INFO,"STL file format"); STL_Surf = Create_Surface(1,MSH_SURF_STL); @@ -3479,7 +4679,7 @@ case 7: ; break;} case 8: -#line 198 "Gmsh.y" +#line 205 "Gmsh.y" { STL_Surf->STL->Add_Facet( yyvsp[-12].d, yyvsp[-11].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-7].d, yyvsp[-6].d, @@ -3488,7 +4688,7 @@ case 8: ; break;} case 9: -#line 205 "Gmsh.y" +#line 212 "Gmsh.y" { Msg(PARSER_INFO,"STL file format read"); Tree_Add(THEM->Surfaces, &STL_Surf); @@ -3496,79 +4696,79 @@ case 9: ; break;} case 12: -#line 220 "Gmsh.y" +#line 227 "Gmsh.y" { return 1; ; break;} case 13: -#line 221 "Gmsh.y" +#line 228 "Gmsh.y" { return 1; ; break;} case 14: -#line 222 "Gmsh.y" +#line 229 "Gmsh.y" { return 1; ; break;} case 15: -#line 227 "Gmsh.y" +#line 234 "Gmsh.y" { Msg(PARSER_INFO,"Step Iso-10303-21 file format"); Create_Step_Solid_BRep(); ; break;} case 16: -#line 232 "Gmsh.y" +#line 239 "Gmsh.y" { Msg(PARSER_INFO,"Step Iso-10303-21 file format read"); Resolve_BREP (); ; break;} case 20: -#line 243 "Gmsh.y" +#line 250 "Gmsh.y" { ; break;} case 21: -#line 246 "Gmsh.y" +#line 253 "Gmsh.y" { ; break;} case 22: -#line 250 "Gmsh.y" +#line 257 "Gmsh.y" { ; break;} case 23: -#line 256 "Gmsh.y" +#line 263 "Gmsh.y" { Add_Cartesian_Point((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2]); ; break;} case 24: -#line 262 "Gmsh.y" +#line 269 "Gmsh.y" { Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1.); ; break;} case 25: -#line 269 "Gmsh.y" +#line 276 "Gmsh.y" { Add_BSpline_Surface_With_Knots ((int)yyvsp[-30].d, yyvsp[-26].c, (int) yyvsp[-24].d, (int) yyvsp[-22].d, yyvsp[-20].l, yyvsp[-10].l, yyvsp[-8].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1., 0., 1. ); ; break;} case 26: -#line 275 "Gmsh.y" +#line 282 "Gmsh.y" { Add_Edge_Curve ((int)yyvsp[-14].d, yyvsp[-10].c , (int)yyvsp[-8].d , (int)yyvsp[-6].d, (int)yyvsp[-4].d); ; break;} case 27: -#line 279 "Gmsh.y" +#line 286 "Gmsh.y" { Add_Face_Outer_Bound((int)yyvsp[-10].d,yyvsp[-6].c,(int)yyvsp[-4].d,yyvsp[-2].i,1); ; break;} case 28: -#line 283 "Gmsh.y" +#line 290 "Gmsh.y" { // check the norm! Face_Bound : hole outside surface! Msg(PARSER_INFO,"Found a face bound"); @@ -3576,211 +4776,211 @@ case 28: ; break;} case 29: -#line 290 "Gmsh.y" +#line 297 "Gmsh.y" { Add_Oriented_Edge((int)yyvsp[-14].d,yyvsp[-10].c,(int)yyvsp[-4].d,yyvsp[-2].i); ; break;} case 30: -#line 294 "Gmsh.y" +#line 301 "Gmsh.y" { Add_Edge_Loop((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].l); ; break;} case 31: -#line 299 "Gmsh.y" +#line 306 "Gmsh.y" { Add_Advanced_Face((int)yyvsp[-12].d,yyvsp[-8].c,yyvsp[-6].l,(int)yyvsp[-4].d,yyvsp[-2].i); ; break;} case 32: -#line 303 "Gmsh.y" +#line 310 "Gmsh.y" { Add_Vertex_Point((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d); ; break;} case 33: -#line 307 "Gmsh.y" +#line 314 "Gmsh.y" { ; break;} case 34: -#line 311 "Gmsh.y" +#line 318 "Gmsh.y" { Add_Axis2_Placement3D ( (int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d); ; break;} case 35: -#line 315 "Gmsh.y" +#line 322 "Gmsh.y" { Add_Direction((int)yyvsp[-8].d , yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]); ; break;} case 36: -#line 319 "Gmsh.y" +#line 326 "Gmsh.y" { Add_Plane((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d); ; break;} case 37: -#line 323 "Gmsh.y" +#line 330 "Gmsh.y" { Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d); ; break;} case 38: -#line 327 "Gmsh.y" +#line 334 "Gmsh.y" { Msg(PARSER_INFO,"Found a closed shell"); Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l); ; break;} case 39: -#line 333 "Gmsh.y" +#line 340 "Gmsh.y" { ; break;} case 40: -#line 336 "Gmsh.y" +#line 343 "Gmsh.y" { ; break;} case 41: -#line 339 "Gmsh.y" +#line 346 "Gmsh.y" { Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d); ; break;} case 42: -#line 343 "Gmsh.y" +#line 350 "Gmsh.y" { Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d); ; break;} case 43: -#line 347 "Gmsh.y" +#line 354 "Gmsh.y" { Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d); ; break;} case 44: -#line 351 "Gmsh.y" +#line 358 "Gmsh.y" { Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d); ; break;} case 45: -#line 355 "Gmsh.y" +#line 362 "Gmsh.y" { Add_Ellipse((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d); ; break;} case 46: -#line 360 "Gmsh.y" +#line 367 "Gmsh.y" { ; break;} case 47: -#line 363 "Gmsh.y" +#line 370 "Gmsh.y" { ; break;} case 48: -#line 367 "Gmsh.y" +#line 374 "Gmsh.y" { ; break;} case 49: -#line 370 "Gmsh.y" +#line 377 "Gmsh.y" { ; break;} case 50: -#line 374 "Gmsh.y" +#line 381 "Gmsh.y" { ; break;} case 51: -#line 377 "Gmsh.y" +#line 384 "Gmsh.y" { ; break;} case 52: -#line 380 "Gmsh.y" +#line 387 "Gmsh.y" { ; break;} case 53: -#line 388 "Gmsh.y" +#line 395 "Gmsh.y" { ; break;} case 54: -#line 391 "Gmsh.y" +#line 398 "Gmsh.y" { Msg(PARSER_INFO,"Gmsh file format read"); ; break;} case 55: -#line 397 "Gmsh.y" +#line 404 "Gmsh.y" { return 1; ; break;} case 56: -#line 398 "Gmsh.y" +#line 405 "Gmsh.y" { return 1; ; break;} case 57: -#line 399 "Gmsh.y" +#line 406 "Gmsh.y" { return 1; ; break;} case 58: -#line 400 "Gmsh.y" +#line 407 "Gmsh.y" { return 1; ; break;} case 59: -#line 401 "Gmsh.y" +#line 408 "Gmsh.y" { return 1; ; break;} case 60: -#line 402 "Gmsh.y" +#line 409 "Gmsh.y" { return 1; ; break;} case 61: -#line 403 "Gmsh.y" +#line 410 "Gmsh.y" { return 1; ; break;} case 62: -#line 404 "Gmsh.y" +#line 411 "Gmsh.y" { return 1; ; break;} case 63: -#line 405 "Gmsh.y" +#line 412 "Gmsh.y" { return 1; ; break;} case 64: -#line 406 "Gmsh.y" +#line 413 "Gmsh.y" { return 1; ; break;} case 65: -#line 407 "Gmsh.y" +#line 414 "Gmsh.y" { return 1; ; break;} case 66: -#line 408 "Gmsh.y" +#line 415 "Gmsh.y" { return 1; ; break;} case 67: -#line 409 "Gmsh.y" +#line 416 "Gmsh.y" { return 1; ; break;} case 68: -#line 414 "Gmsh.y" +#line 421 "Gmsh.y" { Msg(DIRECT, yyvsp[-2].c); ; break;} case 69: -#line 418 "Gmsh.y" +#line 425 "Gmsh.y" { i = PrintListOfDouble(yyvsp[-4].c,yyvsp[-2].l,tmpstring); if(i<0) @@ -3793,162 +4993,162 @@ case 69: ; break;} case 70: -#line 434 "Gmsh.y" +#line 441 "Gmsh.y" { if(!strcmp(yyvsp[-5].c, "View")) EndView(View, 1, yyname, yyvsp[-4].c); ; break;} case 71: -#line 438 "Gmsh.y" +#line 445 "Gmsh.y" { if(!strcmp(yyvsp[-7].c, "View")) EndView(View, 1, yyname, yyvsp[-6].c); ; break;} case 72: -#line 445 "Gmsh.y" +#line 452 "Gmsh.y" { View = BeginView(1); ; break;} -case 87: -#line 466 "Gmsh.y" +case 99: +#line 485 "Gmsh.y" { List_Add(View->SP, &yyvsp[0].d) ; ; break;} -case 88: -#line 468 "Gmsh.y" -{ List_Add(View->SP, &yyvsp[0].d) ; ; +case 100: +#line 487 "Gmsh.y" +{ List_Add(View->SP, &yyvsp[0].d) ; ; break;} -case 89: -#line 473 "Gmsh.y" +case 101: +#line 492 "Gmsh.y" { List_Add(View->SP, &yyvsp[-5].d); List_Add(View->SP, &yyvsp[-3].d); List_Add(View->SP, &yyvsp[-1].d); ; break;} -case 90: -#line 478 "Gmsh.y" +case 102: +#line 497 "Gmsh.y" { View->NbSP++ ; ; break;} -case 91: -#line 485 "Gmsh.y" +case 103: +#line 504 "Gmsh.y" { List_Add(View->VP, &yyvsp[0].d) ; ; break;} -case 92: -#line 487 "Gmsh.y" +case 104: +#line 506 "Gmsh.y" { List_Add(View->VP, &yyvsp[0].d) ; ; break;} -case 93: -#line 492 "Gmsh.y" +case 105: +#line 511 "Gmsh.y" { List_Add(View->VP, &yyvsp[-5].d); List_Add(View->VP, &yyvsp[-3].d); List_Add(View->VP, &yyvsp[-1].d); ; break;} -case 94: -#line 497 "Gmsh.y" +case 106: +#line 516 "Gmsh.y" { View->NbVP++ ; ; break;} -case 95: -#line 504 "Gmsh.y" +case 107: +#line 523 "Gmsh.y" { List_Add(View->TP, &yyvsp[0].d) ; ; break;} -case 96: -#line 506 "Gmsh.y" +case 108: +#line 525 "Gmsh.y" { List_Add(View->TP, &yyvsp[0].d) ; ; break;} -case 97: -#line 511 "Gmsh.y" +case 109: +#line 530 "Gmsh.y" { List_Add(View->TP, &yyvsp[-5].d); List_Add(View->TP, &yyvsp[-3].d); List_Add(View->TP, &yyvsp[-1].d); ; break;} -case 98: -#line 516 "Gmsh.y" +case 110: +#line 535 "Gmsh.y" { View->NbTP++ ; ; break;} -case 99: -#line 523 "Gmsh.y" +case 111: +#line 542 "Gmsh.y" { List_Add(View->SL, &yyvsp[0].d) ; ; break;} -case 100: -#line 525 "Gmsh.y" +case 112: +#line 544 "Gmsh.y" { List_Add(View->SL, &yyvsp[0].d) ; ; break;} -case 101: -#line 531 "Gmsh.y" +case 113: +#line 550 "Gmsh.y" { List_Add(View->SL, &yyvsp[-11].d); List_Add(View->SL, &yyvsp[-5].d); List_Add(View->SL, &yyvsp[-9].d); List_Add(View->SL, &yyvsp[-3].d); List_Add(View->SL, &yyvsp[-7].d); List_Add(View->SL, &yyvsp[-1].d); ; break;} -case 102: -#line 537 "Gmsh.y" +case 114: +#line 556 "Gmsh.y" { View->NbSL++ ; ; break;} -case 103: -#line 544 "Gmsh.y" +case 115: +#line 563 "Gmsh.y" { List_Add(View->VL, &yyvsp[0].d) ; ; break;} -case 104: -#line 546 "Gmsh.y" +case 116: +#line 565 "Gmsh.y" { List_Add(View->VL, &yyvsp[0].d) ; ; break;} -case 105: -#line 552 "Gmsh.y" +case 117: +#line 571 "Gmsh.y" { List_Add(View->VL, &yyvsp[-11].d); List_Add(View->VL, &yyvsp[-5].d); List_Add(View->VL, &yyvsp[-9].d); List_Add(View->VL, &yyvsp[-3].d); List_Add(View->VL, &yyvsp[-7].d); List_Add(View->VL, &yyvsp[-1].d); ; break;} -case 106: -#line 558 "Gmsh.y" +case 118: +#line 577 "Gmsh.y" { View->NbVL++ ; ; break;} -case 107: -#line 565 "Gmsh.y" +case 119: +#line 584 "Gmsh.y" { List_Add(View->TL, &yyvsp[0].d) ; ; break;} -case 108: -#line 567 "Gmsh.y" +case 120: +#line 586 "Gmsh.y" { List_Add(View->TL, &yyvsp[0].d) ; ; break;} -case 109: -#line 573 "Gmsh.y" +case 121: +#line 592 "Gmsh.y" { List_Add(View->TL, &yyvsp[-11].d); List_Add(View->TL, &yyvsp[-5].d); List_Add(View->TL, &yyvsp[-9].d); List_Add(View->TL, &yyvsp[-3].d); List_Add(View->TL, &yyvsp[-7].d); List_Add(View->TL, &yyvsp[-1].d); ; break;} -case 110: -#line 579 "Gmsh.y" +case 122: +#line 598 "Gmsh.y" { View->NbTL++ ; ; break;} -case 111: -#line 586 "Gmsh.y" +case 123: +#line 605 "Gmsh.y" { List_Add(View->ST, &yyvsp[0].d) ; ; break;} -case 112: -#line 588 "Gmsh.y" +case 124: +#line 607 "Gmsh.y" { List_Add(View->ST, &yyvsp[0].d) ; ; break;} -case 113: -#line 595 "Gmsh.y" +case 125: +#line 614 "Gmsh.y" { List_Add(View->ST, &yyvsp[-17].d); List_Add(View->ST, &yyvsp[-11].d); List_Add(View->ST, &yyvsp[-5].d); @@ -3958,22 +5158,22 @@ case 113: List_Add(View->ST, &yyvsp[-1].d); ; break;} -case 114: -#line 604 "Gmsh.y" +case 126: +#line 623 "Gmsh.y" { View->NbST++ ; ; break;} -case 115: -#line 611 "Gmsh.y" +case 127: +#line 630 "Gmsh.y" { List_Add(View->VT, &yyvsp[0].d) ; ; break;} -case 116: -#line 613 "Gmsh.y" +case 128: +#line 632 "Gmsh.y" { List_Add(View->VT, &yyvsp[0].d) ; ; break;} -case 117: -#line 620 "Gmsh.y" +case 129: +#line 639 "Gmsh.y" { List_Add(View->VT, &yyvsp[-17].d); List_Add(View->VT, &yyvsp[-11].d); List_Add(View->VT, &yyvsp[-5].d); @@ -3983,22 +5183,22 @@ case 117: List_Add(View->VT, &yyvsp[-1].d); ; break;} -case 118: -#line 629 "Gmsh.y" +case 130: +#line 648 "Gmsh.y" { View->NbVT++ ; ; break;} -case 119: -#line 636 "Gmsh.y" +case 131: +#line 655 "Gmsh.y" { List_Add(View->TT, &yyvsp[0].d) ; ; break;} -case 120: -#line 638 "Gmsh.y" +case 132: +#line 657 "Gmsh.y" { List_Add(View->TT, &yyvsp[0].d) ; ; break;} -case 121: -#line 645 "Gmsh.y" +case 133: +#line 664 "Gmsh.y" { List_Add(View->TT, &yyvsp[-17].d); List_Add(View->TT, &yyvsp[-11].d); List_Add(View->TT, &yyvsp[-5].d); @@ -4008,22 +5208,97 @@ case 121: List_Add(View->TT, &yyvsp[-1].d); ; break;} -case 122: -#line 654 "Gmsh.y" +case 134: +#line 673 "Gmsh.y" { View->NbTT++ ; ; break;} -case 123: -#line 661 "Gmsh.y" +case 135: +#line 680 "Gmsh.y" +{ List_Add(View->SQ, &yyvsp[0].d) ; ; + break;} +case 136: +#line 682 "Gmsh.y" +{ List_Add(View->SQ, &yyvsp[0].d) ; ; + break;} +case 137: +#line 690 "Gmsh.y" +{ + List_Add(View->SQ, &yyvsp[-23].d); List_Add(View->SQ, &yyvsp[-17].d); + List_Add(View->SQ, &yyvsp[-11].d); List_Add(View->SQ, &yyvsp[-5].d); + List_Add(View->SQ, &yyvsp[-21].d); List_Add(View->SQ, &yyvsp[-15].d); + List_Add(View->SQ, &yyvsp[-9].d); List_Add(View->SQ, &yyvsp[-3].d); + List_Add(View->SQ, &yyvsp[-19].d); List_Add(View->SQ, &yyvsp[-13].d); + List_Add(View->SQ, &yyvsp[-7].d); List_Add(View->SQ, &yyvsp[-1].d); + ; + break;} +case 138: +#line 699 "Gmsh.y" +{ + View->NbSQ++ ; + ; + break;} +case 139: +#line 706 "Gmsh.y" +{ List_Add(View->VQ, &yyvsp[0].d) ; ; + break;} +case 140: +#line 708 "Gmsh.y" +{ List_Add(View->VQ, &yyvsp[0].d) ; ; + break;} +case 141: +#line 716 "Gmsh.y" +{ + List_Add(View->VQ, &yyvsp[-23].d); List_Add(View->VQ, &yyvsp[-17].d); + List_Add(View->VQ, &yyvsp[-11].d); List_Add(View->VQ, &yyvsp[-5].d); + List_Add(View->VQ, &yyvsp[-21].d); List_Add(View->VQ, &yyvsp[-15].d); + List_Add(View->VQ, &yyvsp[-9].d); List_Add(View->VQ, &yyvsp[-3].d); + List_Add(View->VQ, &yyvsp[-19].d); List_Add(View->VQ, &yyvsp[-13].d); + List_Add(View->VQ, &yyvsp[-7].d); List_Add(View->VQ, &yyvsp[-1].d); + ; + break;} +case 142: +#line 725 "Gmsh.y" +{ + View->NbVQ++ ; + ; + break;} +case 143: +#line 732 "Gmsh.y" +{ List_Add(View->TQ, &yyvsp[0].d) ; ; + break;} +case 144: +#line 734 "Gmsh.y" +{ List_Add(View->TQ, &yyvsp[0].d) ; ; + break;} +case 145: +#line 742 "Gmsh.y" +{ + List_Add(View->TQ, &yyvsp[-23].d); List_Add(View->TQ, &yyvsp[-17].d); + List_Add(View->TQ, &yyvsp[-11].d); List_Add(View->TQ, &yyvsp[-5].d); + List_Add(View->TQ, &yyvsp[-21].d); List_Add(View->TQ, &yyvsp[-15].d); + List_Add(View->TQ, &yyvsp[-9].d); List_Add(View->TQ, &yyvsp[-3].d); + List_Add(View->TQ, &yyvsp[-19].d); List_Add(View->TQ, &yyvsp[-13].d); + List_Add(View->TQ, &yyvsp[-7].d); List_Add(View->TQ, &yyvsp[-1].d); + ; + break;} +case 146: +#line 751 "Gmsh.y" +{ + View->NbTQ++ ; + ; + break;} +case 147: +#line 758 "Gmsh.y" { List_Add(View->SS, &yyvsp[0].d) ; ; break;} -case 124: -#line 663 "Gmsh.y" +case 148: +#line 760 "Gmsh.y" { List_Add(View->SS, &yyvsp[0].d) ; ; break;} -case 125: -#line 671 "Gmsh.y" +case 149: +#line 768 "Gmsh.y" { List_Add(View->SS, &yyvsp[-23].d); List_Add(View->SS, &yyvsp[-17].d); List_Add(View->SS, &yyvsp[-11].d); List_Add(View->SS, &yyvsp[-5].d); @@ -4033,22 +5308,22 @@ case 125: List_Add(View->SS, &yyvsp[-7].d); List_Add(View->SS, &yyvsp[-1].d); ; break;} -case 126: -#line 680 "Gmsh.y" +case 150: +#line 777 "Gmsh.y" { View->NbSS++ ; ; break;} -case 127: -#line 687 "Gmsh.y" +case 151: +#line 784 "Gmsh.y" { List_Add(View->VS, &yyvsp[0].d) ; ; break;} -case 128: -#line 689 "Gmsh.y" +case 152: +#line 786 "Gmsh.y" { List_Add(View->VS, &yyvsp[0].d) ; ; break;} -case 129: -#line 697 "Gmsh.y" +case 153: +#line 794 "Gmsh.y" { List_Add(View->VS, &yyvsp[-23].d); List_Add(View->VS, &yyvsp[-17].d); List_Add(View->VS, &yyvsp[-11].d); List_Add(View->VS, &yyvsp[-5].d); @@ -4058,22 +5333,22 @@ case 129: List_Add(View->VS, &yyvsp[-7].d); List_Add(View->VS, &yyvsp[-1].d); ; break;} -case 130: -#line 706 "Gmsh.y" +case 154: +#line 803 "Gmsh.y" { View->NbVS++ ; ; break;} -case 131: -#line 713 "Gmsh.y" +case 155: +#line 810 "Gmsh.y" { List_Add(View->TS, &yyvsp[0].d) ; ; break;} -case 132: -#line 715 "Gmsh.y" +case 156: +#line 812 "Gmsh.y" { List_Add(View->TS, &yyvsp[0].d) ; ; break;} -case 133: -#line 723 "Gmsh.y" +case 157: +#line 820 "Gmsh.y" { List_Add(View->TS, &yyvsp[-23].d); List_Add(View->TS, &yyvsp[-17].d); List_Add(View->TS, &yyvsp[-11].d); List_Add(View->TS, &yyvsp[-5].d); @@ -4083,28 +5358,289 @@ case 133: List_Add(View->TS, &yyvsp[-7].d); List_Add(View->TS, &yyvsp[-1].d); ; break;} -case 134: -#line 732 "Gmsh.y" +case 158: +#line 829 "Gmsh.y" +{ + View->NbTS++ ; + ; + break;} +case 159: +#line 836 "Gmsh.y" +{ List_Add(View->SH, &yyvsp[0].d) ; ; + break;} +case 160: +#line 838 "Gmsh.y" +{ List_Add(View->SH, &yyvsp[0].d) ; ; + break;} +case 161: +#line 850 "Gmsh.y" +{ + List_Add(View->SH, &yyvsp[-47].d); List_Add(View->SH, &yyvsp[-41].d); + List_Add(View->SH, &yyvsp[-35].d); List_Add(View->SH, &yyvsp[-29].d); + List_Add(View->SH, &yyvsp[-23].d); List_Add(View->SH, &yyvsp[-17].d); + List_Add(View->SH, &yyvsp[-11].d); List_Add(View->SH, &yyvsp[-5].d); + List_Add(View->SH, &yyvsp[-45].d); List_Add(View->SH, &yyvsp[-39].d); + List_Add(View->SH, &yyvsp[-33].d); List_Add(View->SH, &yyvsp[-27].d); + List_Add(View->SH, &yyvsp[-21].d); List_Add(View->SH, &yyvsp[-15].d); + List_Add(View->SH, &yyvsp[-9].d); List_Add(View->SH, &yyvsp[-3].d); + List_Add(View->SH, &yyvsp[-43].d); List_Add(View->SH, &yyvsp[-37].d); + List_Add(View->SH, &yyvsp[-31].d); List_Add(View->SH, &yyvsp[-25].d); + List_Add(View->SH, &yyvsp[-19].d); List_Add(View->SH, &yyvsp[-13].d); + List_Add(View->SH, &yyvsp[-7].d); List_Add(View->SH, &yyvsp[-1].d); + ; + break;} +case 162: +#line 865 "Gmsh.y" +{ + View->NbSH++ ; + ; + break;} +case 163: +#line 872 "Gmsh.y" +{ List_Add(View->VH, &yyvsp[0].d) ; ; + break;} +case 164: +#line 874 "Gmsh.y" +{ List_Add(View->VH, &yyvsp[0].d) ; ; + break;} +case 165: +#line 886 "Gmsh.y" +{ + List_Add(View->VH, &yyvsp[-47].d); List_Add(View->VH, &yyvsp[-41].d); + List_Add(View->VH, &yyvsp[-35].d); List_Add(View->VH, &yyvsp[-29].d); + List_Add(View->VH, &yyvsp[-23].d); List_Add(View->VH, &yyvsp[-17].d); + List_Add(View->VH, &yyvsp[-11].d); List_Add(View->VH, &yyvsp[-5].d); + List_Add(View->VH, &yyvsp[-45].d); List_Add(View->VH, &yyvsp[-39].d); + List_Add(View->VH, &yyvsp[-33].d); List_Add(View->VH, &yyvsp[-27].d); + List_Add(View->VH, &yyvsp[-21].d); List_Add(View->VH, &yyvsp[-15].d); + List_Add(View->VH, &yyvsp[-9].d); List_Add(View->VH, &yyvsp[-3].d); + List_Add(View->VH, &yyvsp[-43].d); List_Add(View->VH, &yyvsp[-37].d); + List_Add(View->VH, &yyvsp[-31].d); List_Add(View->VH, &yyvsp[-25].d); + List_Add(View->VH, &yyvsp[-19].d); List_Add(View->VH, &yyvsp[-13].d); + List_Add(View->VH, &yyvsp[-7].d); List_Add(View->VH, &yyvsp[-1].d); + ; + break;} +case 166: +#line 901 "Gmsh.y" +{ + View->NbVH++ ; + ; + break;} +case 167: +#line 908 "Gmsh.y" +{ List_Add(View->TH, &yyvsp[0].d) ; ; + break;} +case 168: +#line 910 "Gmsh.y" +{ List_Add(View->TH, &yyvsp[0].d) ; ; + break;} +case 169: +#line 922 "Gmsh.y" +{ + List_Add(View->TH, &yyvsp[-47].d); List_Add(View->TH, &yyvsp[-41].d); + List_Add(View->TH, &yyvsp[-35].d); List_Add(View->TH, &yyvsp[-29].d); + List_Add(View->TH, &yyvsp[-23].d); List_Add(View->TH, &yyvsp[-17].d); + List_Add(View->TH, &yyvsp[-11].d); List_Add(View->TH, &yyvsp[-5].d); + List_Add(View->TH, &yyvsp[-45].d); List_Add(View->TH, &yyvsp[-39].d); + List_Add(View->TH, &yyvsp[-33].d); List_Add(View->TH, &yyvsp[-27].d); + List_Add(View->TH, &yyvsp[-21].d); List_Add(View->TH, &yyvsp[-15].d); + List_Add(View->TH, &yyvsp[-9].d); List_Add(View->TH, &yyvsp[-3].d); + List_Add(View->TH, &yyvsp[-43].d); List_Add(View->TH, &yyvsp[-37].d); + List_Add(View->TH, &yyvsp[-31].d); List_Add(View->TH, &yyvsp[-25].d); + List_Add(View->TH, &yyvsp[-19].d); List_Add(View->TH, &yyvsp[-13].d); + List_Add(View->TH, &yyvsp[-7].d); List_Add(View->TH, &yyvsp[-1].d); + ; + break;} +case 170: +#line 937 "Gmsh.y" +{ + View->NbTH++ ; + ; + break;} +case 171: +#line 944 "Gmsh.y" +{ List_Add(View->SI, &yyvsp[0].d) ; ; + break;} +case 172: +#line 946 "Gmsh.y" +{ List_Add(View->SI, &yyvsp[0].d) ; ; + break;} +case 173: +#line 956 "Gmsh.y" +{ + List_Add(View->SI, &yyvsp[-35].d); List_Add(View->SI, &yyvsp[-29].d); + List_Add(View->SI, &yyvsp[-23].d); List_Add(View->SI, &yyvsp[-17].d); + List_Add(View->SI, &yyvsp[-11].d); List_Add(View->SI, &yyvsp[-5].d); + List_Add(View->SI, &yyvsp[-33].d); List_Add(View->SI, &yyvsp[-27].d); + List_Add(View->SI, &yyvsp[-21].d); List_Add(View->SI, &yyvsp[-15].d); + List_Add(View->SI, &yyvsp[-9].d); List_Add(View->SI, &yyvsp[-3].d); + List_Add(View->SI, &yyvsp[-31].d); List_Add(View->SI, &yyvsp[-25].d); + List_Add(View->SI, &yyvsp[-19].d); List_Add(View->SI, &yyvsp[-13].d); + List_Add(View->SI, &yyvsp[-7].d); List_Add(View->SI, &yyvsp[-1].d); + ; + break;} +case 174: +#line 968 "Gmsh.y" +{ + View->NbSI++ ; + ; + break;} +case 175: +#line 975 "Gmsh.y" +{ List_Add(View->VI, &yyvsp[0].d) ; ; + break;} +case 176: +#line 977 "Gmsh.y" +{ List_Add(View->VI, &yyvsp[0].d) ; ; + break;} +case 177: +#line 987 "Gmsh.y" +{ + List_Add(View->VI, &yyvsp[-35].d); List_Add(View->VI, &yyvsp[-29].d); + List_Add(View->VI, &yyvsp[-23].d); List_Add(View->VI, &yyvsp[-17].d); + List_Add(View->VI, &yyvsp[-11].d); List_Add(View->VI, &yyvsp[-5].d); + List_Add(View->VI, &yyvsp[-33].d); List_Add(View->VI, &yyvsp[-27].d); + List_Add(View->VI, &yyvsp[-21].d); List_Add(View->VI, &yyvsp[-15].d); + List_Add(View->VI, &yyvsp[-9].d); List_Add(View->VI, &yyvsp[-3].d); + List_Add(View->VI, &yyvsp[-31].d); List_Add(View->VI, &yyvsp[-25].d); + List_Add(View->VI, &yyvsp[-19].d); List_Add(View->VI, &yyvsp[-13].d); + List_Add(View->VI, &yyvsp[-7].d); List_Add(View->VI, &yyvsp[-1].d); + ; + break;} +case 178: +#line 999 "Gmsh.y" +{ + View->NbVI++ ; + ; + break;} +case 179: +#line 1006 "Gmsh.y" +{ List_Add(View->TI, &yyvsp[0].d) ; ; + break;} +case 180: +#line 1008 "Gmsh.y" +{ List_Add(View->TI, &yyvsp[0].d) ; ; + break;} +case 181: +#line 1018 "Gmsh.y" +{ + List_Add(View->TI, &yyvsp[-35].d); List_Add(View->TI, &yyvsp[-29].d); + List_Add(View->TI, &yyvsp[-23].d); List_Add(View->TI, &yyvsp[-17].d); + List_Add(View->TI, &yyvsp[-11].d); List_Add(View->TI, &yyvsp[-5].d); + List_Add(View->TI, &yyvsp[-33].d); List_Add(View->TI, &yyvsp[-27].d); + List_Add(View->TI, &yyvsp[-21].d); List_Add(View->TI, &yyvsp[-15].d); + List_Add(View->TI, &yyvsp[-9].d); List_Add(View->TI, &yyvsp[-3].d); + List_Add(View->TI, &yyvsp[-31].d); List_Add(View->TI, &yyvsp[-25].d); + List_Add(View->TI, &yyvsp[-19].d); List_Add(View->TI, &yyvsp[-13].d); + List_Add(View->TI, &yyvsp[-7].d); List_Add(View->TI, &yyvsp[-1].d); + ; + break;} +case 182: +#line 1030 "Gmsh.y" +{ + View->NbTI++ ; + ; + break;} +case 183: +#line 1037 "Gmsh.y" +{ List_Add(View->SY, &yyvsp[0].d) ; ; + break;} +case 184: +#line 1039 "Gmsh.y" +{ List_Add(View->SY, &yyvsp[0].d) ; ; + break;} +case 185: +#line 1048 "Gmsh.y" +{ + List_Add(View->SY, &yyvsp[-29].d); List_Add(View->SY, &yyvsp[-23].d); + List_Add(View->SY, &yyvsp[-17].d); List_Add(View->SY, &yyvsp[-11].d); + List_Add(View->SY, &yyvsp[-5].d); + List_Add(View->SY, &yyvsp[-27].d); List_Add(View->SY, &yyvsp[-21].d); + List_Add(View->SY, &yyvsp[-15].d); List_Add(View->SY, &yyvsp[-9].d); + List_Add(View->SY, &yyvsp[-3].d); + List_Add(View->SY, &yyvsp[-25].d); List_Add(View->SY, &yyvsp[-19].d); + List_Add(View->SY, &yyvsp[-13].d); List_Add(View->SY, &yyvsp[-7].d); + List_Add(View->SY, &yyvsp[-1].d); + ; + break;} +case 186: +#line 1060 "Gmsh.y" +{ + View->NbSY++ ; + ; + break;} +case 187: +#line 1067 "Gmsh.y" +{ List_Add(View->VY, &yyvsp[0].d) ; ; + break;} +case 188: +#line 1069 "Gmsh.y" +{ List_Add(View->VY, &yyvsp[0].d) ; ; + break;} +case 189: +#line 1078 "Gmsh.y" +{ + List_Add(View->VY, &yyvsp[-29].d); List_Add(View->VY, &yyvsp[-23].d); + List_Add(View->VY, &yyvsp[-17].d); List_Add(View->VY, &yyvsp[-11].d); + List_Add(View->VY, &yyvsp[-5].d); + List_Add(View->VY, &yyvsp[-27].d); List_Add(View->VY, &yyvsp[-21].d); + List_Add(View->VY, &yyvsp[-15].d); List_Add(View->VY, &yyvsp[-9].d); + List_Add(View->VY, &yyvsp[-3].d); + List_Add(View->VY, &yyvsp[-25].d); List_Add(View->VY, &yyvsp[-19].d); + List_Add(View->VY, &yyvsp[-13].d); List_Add(View->VY, &yyvsp[-7].d); + List_Add(View->VY, &yyvsp[-1].d); + ; + break;} +case 190: +#line 1090 "Gmsh.y" +{ + View->NbVY++ ; + ; + break;} +case 191: +#line 1097 "Gmsh.y" +{ List_Add(View->TY, &yyvsp[0].d) ; ; + break;} +case 192: +#line 1099 "Gmsh.y" +{ List_Add(View->TY, &yyvsp[0].d) ; ; + break;} +case 193: +#line 1108 "Gmsh.y" +{ + List_Add(View->TY, &yyvsp[-29].d); List_Add(View->TY, &yyvsp[-23].d); + List_Add(View->TY, &yyvsp[-17].d); List_Add(View->TY, &yyvsp[-11].d); + List_Add(View->TY, &yyvsp[-5].d); + List_Add(View->TY, &yyvsp[-27].d); List_Add(View->TY, &yyvsp[-21].d); + List_Add(View->TY, &yyvsp[-15].d); List_Add(View->TY, &yyvsp[-9].d); + List_Add(View->TY, &yyvsp[-3].d); + List_Add(View->TY, &yyvsp[-25].d); List_Add(View->TY, &yyvsp[-19].d); + List_Add(View->TY, &yyvsp[-13].d); List_Add(View->TY, &yyvsp[-7].d); + List_Add(View->TY, &yyvsp[-1].d); + ; + break;} +case 194: +#line 1120 "Gmsh.y" { - View->NbTS++ ; + View->NbTY++ ; ; break;} -case 135: -#line 739 "Gmsh.y" +case 195: +#line 1127 "Gmsh.y" { for(i=0; i<(int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T2C, &yyvsp[0].c[i]) ; Free(yyvsp[0].c); ; break;} -case 136: -#line 744 "Gmsh.y" +case 196: +#line 1132 "Gmsh.y" { for(i=0; i<(int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T2C, &yyvsp[0].c[i]) ; Free(yyvsp[0].c); ; break;} -case 137: -#line 752 "Gmsh.y" +case 197: +#line 1140 "Gmsh.y" { List_Add(View->T2D, &yyvsp[-5].d); List_Add(View->T2D, &yyvsp[-3].d); List_Add(View->T2D, &yyvsp[-1].d); @@ -4112,28 +5648,28 @@ case 137: List_Add(View->T2D, &d); ; break;} -case 138: -#line 759 "Gmsh.y" +case 198: +#line 1147 "Gmsh.y" { View->NbT2++ ; ; break;} -case 139: -#line 766 "Gmsh.y" +case 199: +#line 1154 "Gmsh.y" { for(i=0; i<(int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T3C, &yyvsp[0].c[i]) ; Free(yyvsp[0].c); ; break;} -case 140: -#line 771 "Gmsh.y" +case 200: +#line 1159 "Gmsh.y" { for(i=0; i<(int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T3C, &yyvsp[0].c[i]) ; Free(yyvsp[0].c); ; break;} -case 141: -#line 779 "Gmsh.y" +case 201: +#line 1167 "Gmsh.y" { List_Add(View->T3D, &yyvsp[-7].d); List_Add(View->T3D, &yyvsp[-5].d); List_Add(View->T3D, &yyvsp[-3].d); List_Add(View->T3D, &yyvsp[-1].d); @@ -4141,42 +5677,42 @@ case 141: List_Add(View->T3D, &d); ; break;} -case 142: -#line 786 "Gmsh.y" +case 202: +#line 1174 "Gmsh.y" { View->NbT3++ ; ; break;} -case 143: -#line 795 "Gmsh.y" +case 203: +#line 1183 "Gmsh.y" { yyval.i = 0 ; ; break;} -case 144: -#line 796 "Gmsh.y" +case 204: +#line 1184 "Gmsh.y" { yyval.i = 1 ; ; break;} -case 145: -#line 797 "Gmsh.y" +case 205: +#line 1185 "Gmsh.y" { yyval.i = 2 ; ; break;} -case 146: -#line 798 "Gmsh.y" +case 206: +#line 1186 "Gmsh.y" { yyval.i = 3 ; ; break;} -case 147: -#line 799 "Gmsh.y" +case 207: +#line 1187 "Gmsh.y" { yyval.i = 4 ; ; break;} -case 148: -#line 803 "Gmsh.y" +case 208: +#line 1191 "Gmsh.y" { yyval.i = 1 ; ; break;} -case 149: -#line 804 "Gmsh.y" +case 209: +#line 1192 "Gmsh.y" { yyval.i = -1 ; ; break;} -case 150: -#line 812 "Gmsh.y" +case 210: +#line 1200 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ @@ -4203,8 +5739,8 @@ case 150: } ; break;} -case 151: -#line 839 "Gmsh.y" +case 211: +#line 1227 "Gmsh.y" { TheSymbol.Name = yyvsp[-6].c; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ @@ -4238,8 +5774,8 @@ case 151: } ; break;} -case 152: -#line 873 "Gmsh.y" +case 212: +#line 1261 "Gmsh.y" { if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l)) vyyerror("Incompatible array dimensions in affectation"); @@ -4286,8 +5822,8 @@ case 152: List_Delete(yyvsp[-1].l); ; break;} -case 153: -#line 920 "Gmsh.y" +case 213: +#line 1308 "Gmsh.y" { TheSymbol.Name = yyvsp[-5].c; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ @@ -4302,8 +5838,8 @@ case 153: List_Delete(yyvsp[-1].l); ; break;} -case 154: -#line 935 "Gmsh.y" +case 214: +#line 1323 "Gmsh.y" { TheSymbol.Name = yyvsp[-2].c; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) @@ -4312,8 +5848,8 @@ case 154: *(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[-1].i; ; break;} -case 155: -#line 944 "Gmsh.y" +case 215: +#line 1332 "Gmsh.y" { TheSymbol.Name = yyvsp[-5].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) @@ -4326,8 +5862,8 @@ case 155: } ; break;} -case 156: -#line 959 "Gmsh.y" +case 216: +#line 1347 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c))) vyyerror("Unknown string option class '%s'", yyvsp[-5].c); @@ -4339,8 +5875,8 @@ case 156: } ; break;} -case 157: -#line 971 "Gmsh.y" +case 217: +#line 1359 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-8].c))) vyyerror("Unknown string option class '%s'", yyvsp[-8].c); @@ -4352,8 +5888,8 @@ case 157: } ; break;} -case 158: -#line 985 "Gmsh.y" +case 218: +#line 1373 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))) vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c); @@ -4376,8 +5912,8 @@ case 158: } ; break;} -case 159: -#line 1008 "Gmsh.y" +case 219: +#line 1396 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-8].c))) vyyerror("Unknown numeric option class '%s'", yyvsp[-8].c); @@ -4401,8 +5937,8 @@ case 159: } ; break;} -case 160: -#line 1032 "Gmsh.y" +case 220: +#line 1420 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c))) vyyerror("Unknown numeric option class '%s'", yyvsp[-4].c); @@ -4414,8 +5950,8 @@ case 160: } ; break;} -case 161: -#line 1044 "Gmsh.y" +case 221: +#line 1432 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-7].c))) vyyerror("Unknown numeric option class '%s'", yyvsp[-7].c); @@ -4427,8 +5963,8 @@ case 161: } ; break;} -case 162: -#line 1058 "Gmsh.y" +case 222: +#line 1446 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c))) vyyerror("Unknown color option class '%s'", yyvsp[-7].c); @@ -4440,8 +5976,8 @@ case 162: } ; break;} -case 163: -#line 1070 "Gmsh.y" +case 223: +#line 1458 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-10].c))) vyyerror("Unknown color option class '%s'", yyvsp[-10].c); @@ -4453,8 +5989,8 @@ case 163: } ; break;} -case 164: -#line 1084 "Gmsh.y" +case 224: +#line 1472 "Gmsh.y" { GmshColorTable *ct = Get_ColorTable(0); if(!ct) @@ -4474,8 +6010,8 @@ case 164: List_Delete(yyvsp[-1].l); ; break;} -case 165: -#line 1104 "Gmsh.y" +case 225: +#line 1492 "Gmsh.y" { GmshColorTable *ct = Get_ColorTable((int)yyvsp[-6].d); if(!ct) @@ -4495,8 +6031,8 @@ case 165: List_Delete(yyvsp[-1].l); ; break;} -case 166: -#line 1126 "Gmsh.y" +case 226: +#line 1514 "Gmsh.y" { if(CTX.default_plugins){ try { @@ -4508,8 +6044,8 @@ case 166: } ; break;} -case 167: -#line 1138 "Gmsh.y" +case 227: +#line 1526 "Gmsh.y" { if(CTX.default_plugins){ try { @@ -4521,24 +6057,24 @@ case 167: } ; break;} -case 168: -#line 1158 "Gmsh.y" +case 228: +#line 1546 "Gmsh.y" { Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]); yyval.s.Type = MSH_POINT; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 169: -#line 1165 "Gmsh.y" +case 229: +#line 1553 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_POINT; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 170: -#line 1171 "Gmsh.y" +case 230: +#line 1559 "Gmsh.y" { Vertex *v; Attractor *a; @@ -4558,8 +6094,8 @@ case 170: } ; break;} -case 171: -#line 1190 "Gmsh.y" +case 231: +#line 1578 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ List_Read(yyvsp[-3].l,i,&d); @@ -4571,24 +6107,24 @@ case 171: } ; break;} -case 172: -#line 1204 "Gmsh.y" +case 232: +#line 1592 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_LINE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 173: -#line 1210 "Gmsh.y" +case 233: +#line 1598 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_SPLN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 174: -#line 1216 "Gmsh.y" +case 234: +#line 1604 "Gmsh.y" { Curve *c; Attractor *a; @@ -4608,24 +6144,24 @@ case 174: } ; break;} -case 175: -#line 1235 "Gmsh.y" +case 235: +#line 1623 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_CIRC ; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 176: -#line 1241 "Gmsh.y" +case 236: +#line 1629 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_ELLI ; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 177: -#line 1247 "Gmsh.y" +case 237: +#line 1635 "Gmsh.y" { List_T *temp; int i,j; @@ -4642,32 +6178,32 @@ case 177: yyval.s.Num = (int)yyvsp[-6].d; ; break;} -case 178: -#line 1264 "Gmsh.y" +case 238: +#line 1652 "Gmsh.y" { Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c); yyval.s.Type = MSH_SEGM_PARAMETRIC ; yyval.s.Num = (int)yyvsp[-14].d; ; break;} -case 179: -#line 1270 "Gmsh.y" +case 239: +#line 1658 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_LINE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 180: -#line 1276 "Gmsh.y" +case 240: +#line 1664 "Gmsh.y" { yyval.s.Type = MSH_SEGM_LOOP; Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 181: -#line 1282 "Gmsh.y" +case 241: +#line 1670 "Gmsh.y" { if(List_Nbr(yyvsp[-1].l) > 3){ Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); @@ -4679,8 +6215,8 @@ case 181: List_Nbr(yyvsp[-1].l)); ; break;} -case 182: -#line 1293 "Gmsh.y" +case 242: +#line 1681 "Gmsh.y" { if(List_Nbr(yyvsp[-1].l) > 3){ Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BEZIER,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); @@ -4692,8 +6228,8 @@ case 182: List_Nbr(yyvsp[-1].l)); ; break;} -case 183: -#line 1304 "Gmsh.y" +case 243: +#line 1692 "Gmsh.y" { List_T *Temp; int i; @@ -4716,16 +6252,16 @@ case 183: } ; break;} -case 184: -#line 1329 "Gmsh.y" +case 244: +#line 1717 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_SURF_PLAN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 185: -#line 1335 "Gmsh.y" +case 245: +#line 1723 "Gmsh.y" { Surface *s,*support; support = FindSurface((int)yyvsp[-4].d,THEM); @@ -4745,8 +6281,8 @@ case 185: } ; break;} -case 186: -#line 1354 "Gmsh.y" +case 246: +#line 1742 "Gmsh.y" { List_Read(yyvsp[-1].l,0,&d); i = (int)d; @@ -4768,115 +6304,115 @@ case 186: } ; break;} -case 187: -#line 1377 "Gmsh.y" +case 247: +#line 1765 "Gmsh.y" { CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); yyval.s.Type = MSH_SURF_NURBS; yyval.s.Num = (int)yyvsp[-16].d; ; break;} -case 188: -#line 1385 "Gmsh.y" +case 248: +#line 1773 "Gmsh.y" { CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); ; break;} -case 189: -#line 1389 "Gmsh.y" +case 249: +#line 1777 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_SURFACE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 190: -#line 1395 "Gmsh.y" +case 250: +#line 1783 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_SURF_LOOP; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 191: -#line 1404 "Gmsh.y" +case 251: +#line 1792 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 192: -#line 1410 "Gmsh.y" +case 252: +#line 1798 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 193: -#line 1416 "Gmsh.y" +case 253: +#line 1804 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 194: -#line 1427 "Gmsh.y" +case 254: +#line 1815 "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 195: -#line 1432 "Gmsh.y" +case 255: +#line 1820 "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); yyval.l = yyvsp[-1].l; ; break;} -case 196: -#line 1437 "Gmsh.y" +case 256: +#line 1825 "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 197: -#line 1442 "Gmsh.y" +case 257: +#line 1830 "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 198: -#line 1449 "Gmsh.y" +case 258: +#line 1837 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 199: -#line 1450 "Gmsh.y" +case 259: +#line 1838 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 200: -#line 1451 "Gmsh.y" +case 260: +#line 1839 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 201: -#line 1456 "Gmsh.y" +case 261: +#line 1844 "Gmsh.y" { yyval.l = List_Create(3,3,sizeof(Shape)); ; break;} -case 202: -#line 1460 "Gmsh.y" +case 262: +#line 1848 "Gmsh.y" { List_Add(yyval.l,&yyvsp[0].s); yyval.l = yyvsp[-1].l; ; break;} -case 203: -#line 1465 "Gmsh.y" +case 263: +#line 1853 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-2].l);i++){ List_Read(yyvsp[-2].l, i, &d); @@ -4892,8 +6428,8 @@ case 203: yyval.l = yyvsp[-5].l; ; break;} -case 204: -#line 1480 "Gmsh.y" +case 264: +#line 1868 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-2].l);i++){ List_Read(yyvsp[-2].l, i, &d); @@ -4909,8 +6445,8 @@ case 204: yyval.l = yyvsp[-5].l; ; break;} -case 205: -#line 1495 "Gmsh.y" +case 265: +#line 1883 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-2].l);i++){ List_Read(yyvsp[-2].l, i, &d); @@ -4926,8 +6462,8 @@ case 205: yyval.l = yyvsp[-5].l; ; break;} -case 206: -#line 1515 "Gmsh.y" +case 266: +#line 1903 "Gmsh.y" { yyval.l = List_Create(3,3,sizeof(Shape)); for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -4938,8 +6474,8 @@ case 206: } ; break;} -case 207: -#line 1531 "Gmsh.y" +case 267: +#line 1919 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ List_Read (yyvsp[-1].l,i,&TheShape); @@ -4947,21 +6483,21 @@ case 207: } ; break;} -case 208: -#line 1538 "Gmsh.y" +case 268: +#line 1926 "Gmsh.y" { if(!strcmp(yyvsp[-4].c, "View")) FreeView((int)yyvsp[-2].d); ; break;} -case 209: -#line 1543 "Gmsh.y" +case 269: +#line 1931 "Gmsh.y" { Init_Mesh(THEM, 1); ; break;} -case 210: -#line 1552 "Gmsh.y" +case 270: +#line 1940 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ List_Read (yyvsp[-1].l,i,&TheShape); @@ -4969,8 +6505,8 @@ case 210: } ; break;} -case 211: -#line 1564 "Gmsh.y" +case 271: +#line 1952 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Include")){ @@ -5039,8 +6575,8 @@ case 211: vyyerror("Unknown command '%s'", yyvsp[-2].c); ; break;} -case 212: -#line 1632 "Gmsh.y" +case 272: +#line 2020 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Sleep")){ @@ -5061,8 +6597,8 @@ case 212: vyyerror("Unknown command '%s'", yyvsp[-2].c); ; break;} -case 213: -#line 1652 "Gmsh.y" +case 273: +#line 2040 "Gmsh.y" { #ifndef _NOPLUGIN if(CTX.default_plugins) @@ -5070,14 +6606,14 @@ case 213: #endif ; break;} -case 214: -#line 1659 "Gmsh.y" +case 274: +#line 2047 "Gmsh.y" { exit(0); ; break;} -case 215: -#line 1663 "Gmsh.y" +case 275: +#line 2051 "Gmsh.y" { #ifndef _BLACKBOX if(!CTX.batch){ // we're in interactive mode @@ -5094,8 +6630,8 @@ case 215: #endif ; break;} -case 216: -#line 1685 "Gmsh.y" +case 276: +#line 2073 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ; @@ -5106,8 +6642,8 @@ case 216: ImbricatedLoop++; ; break;} -case 217: -#line 1695 "Gmsh.y" +case 277: +#line 2083 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ; @@ -5118,8 +6654,8 @@ case 217: ImbricatedLoop++; ; break;} -case 218: -#line 1705 "Gmsh.y" +case 278: +#line 2093 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ; @@ -5141,8 +6677,8 @@ case 218: ImbricatedLoop++; ; break;} -case 219: -#line 1726 "Gmsh.y" +case 279: +#line 2114 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ; @@ -5164,8 +6700,8 @@ case 219: ImbricatedLoop++; ; break;} -case 220: -#line 1747 "Gmsh.y" +case 280: +#line 2135 "Gmsh.y" { if(LoopControlVariablesTab[ImbricatedLoop-1][1] > LoopControlVariablesTab[ImbricatedLoop-1][0]){ @@ -5187,41 +6723,41 @@ case 220: } ; break;} -case 221: -#line 1768 "Gmsh.y" +case 281: +#line 2156 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yyname,yylineno)) vyyerror("Redefinition of function %s",yyvsp[0].c); skip_until(NULL, "Return"); ; break;} -case 222: -#line 1774 "Gmsh.y" +case 282: +#line 2162 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction(&yyin,yyname,yylineno)) vyyerror("Error while exiting function"); ; break;} -case 223: -#line 1779 "Gmsh.y" +case 283: +#line 2167 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yyname,yylineno)) vyyerror("Unknown function %s",yyvsp[-1].c); ; break;} -case 224: -#line 1784 "Gmsh.y" +case 284: +#line 2172 "Gmsh.y" { if(!yyvsp[-1].d) skip_until("If", "EndIf"); ; break;} -case 225: -#line 1788 "Gmsh.y" +case 285: +#line 2176 "Gmsh.y" { ; break;} -case 226: -#line 1800 "Gmsh.y" +case 286: +#line 2188 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2], @@ -5229,8 +6765,8 @@ case 226: &pc,&prc,NULL); ; break;} -case 227: -#line 1807 "Gmsh.y" +case 287: +#line 2195 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(ROTATE,(int)yyvsp[-8].d,0.,0.,0., @@ -5238,8 +6774,8 @@ case 227: &pc,&prc,NULL); ; break;} -case 228: -#line 1814 "Gmsh.y" +case 288: +#line 2202 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(TRANSLATE_ROTATE,(int)yyvsp[-10].d,yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2], @@ -5247,147 +6783,147 @@ case 228: &pc,&prc,NULL); ; break;} -case 229: -#line 1824 "Gmsh.y" +case 289: +#line 2212 "Gmsh.y" { Extrude_ProtudeCurve(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2], 0.,0.,0.,0.,0.,0.,0.,1,NULL); ; break;} -case 230: -#line 1829 "Gmsh.y" +case 290: +#line 2217 "Gmsh.y" { Extrude_ProtudeCurve(ROTATE,(int)yyvsp[-8].d,0.,0.,0., yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,1,NULL); ; break;} -case 231: -#line 1834 "Gmsh.y" +case 291: +#line 2222 "Gmsh.y" { Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)yyvsp[-10].d,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].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,1,NULL); ; break;} -case 232: -#line 1839 "Gmsh.y" +case 292: +#line 2227 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 233: -#line 1844 "Gmsh.y" +case 293: +#line 2232 "Gmsh.y" { Extrude_ProtudeCurve(TRANSLATE,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2], 0.,0.,0.,0.,0.,0.,0.,1,&extr); ; break;} -case 234: -#line 1849 "Gmsh.y" +case 294: +#line 2237 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 235: -#line 1854 "Gmsh.y" +case 295: +#line 2242 "Gmsh.y" { Extrude_ProtudeCurve(ROTATE,(int)yyvsp[-12].d,0.,0.,0., yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,1,&extr); ; break;} -case 236: -#line 1859 "Gmsh.y" +case 296: +#line 2247 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 237: -#line 1864 "Gmsh.y" +case 297: +#line 2252 "Gmsh.y" { Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)yyvsp[-14].d,yyvsp[-12].v[0],yyvsp[-12].v[1],yyvsp[-12].v[2], yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,1,&extr); ; break;} -case 238: -#line 1872 "Gmsh.y" +case 298: +#line 2260 "Gmsh.y" { Extrude_ProtudeSurface(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2], 0.,0.,0.,0.,0.,0.,0.,0,NULL); ; break;} -case 239: -#line 1877 "Gmsh.y" +case 299: +#line 2265 "Gmsh.y" { Extrude_ProtudeSurface(ROTATE,(int)yyvsp[-8].d,0.,0.,0., yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL); ; break;} -case 240: -#line 1882 "Gmsh.y" +case 300: +#line 2270 "Gmsh.y" { Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)yyvsp[-10].d,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].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL); ; break;} -case 241: -#line 1887 "Gmsh.y" +case 301: +#line 2275 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 242: -#line 1892 "Gmsh.y" +case 302: +#line 2280 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(TRANSLATE,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2], 0.,0.,0.,0.,0.,0.,0.,vol,&extr); ; break;} -case 243: -#line 1898 "Gmsh.y" +case 303: +#line 2286 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 244: -#line 1904 "Gmsh.y" +case 304: +#line 2292 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(ROTATE,(int)yyvsp[-12].d,0.,0.,0., yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,vol,&extr); ; break;} -case 245: -#line 1910 "Gmsh.y" +case 305: +#line 2298 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 246: -#line 1916 "Gmsh.y" +case 306: +#line 2304 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)yyvsp[-14].d,yyvsp[-12].v[0],yyvsp[-12].v[1],yyvsp[-12].v[2], yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,vol,&extr); ; break;} -case 247: -#line 1925 "Gmsh.y" +case 307: +#line 2313 "Gmsh.y" { ; break;} -case 248: -#line 1928 "Gmsh.y" +case 308: +#line 2316 "Gmsh.y" { ; break;} -case 249: -#line 1934 "Gmsh.y" +case 309: +#line 2322 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -5414,8 +6950,8 @@ case 249: List_Delete(yyvsp[-2].l); ; break;} -case 250: -#line 1960 "Gmsh.y" +case 310: +#line 2348 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -5440,14 +6976,14 @@ case 250: List_Delete(yyvsp[-2].l); ; break;} -case 251: -#line 1984 "Gmsh.y" +case 311: +#line 2372 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} -case 252: -#line 1993 "Gmsh.y" +case 312: +#line 2381 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -5466,8 +7002,8 @@ case 252: List_Delete(yyvsp[-3].l); ; break;} -case 253: -#line 2011 "Gmsh.y" +case 313: +#line 2399 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -5486,8 +7022,8 @@ case 253: List_Delete(yyvsp[-6].l); ; break;} -case 254: -#line 2029 "Gmsh.y" +case 314: +#line 2417 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -5506,8 +7042,8 @@ case 254: List_Delete(yyvsp[-6].l); ; break;} -case 255: -#line 2047 "Gmsh.y" +case 315: +#line 2435 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -5530,8 +7066,8 @@ case 255: List_Delete(yyvsp[-1].l); ; break;} -case 256: -#line 2069 "Gmsh.y" +case 316: +#line 2457 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -5553,8 +7089,8 @@ case 256: List_Delete(yyvsp[-1].l); ; break;} -case 257: -#line 2090 "Gmsh.y" +case 317: +#line 2478 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d,THEM); if(!v) @@ -5576,8 +7112,8 @@ case 257: List_Delete(yyvsp[-1].l); ; break;} -case 258: -#line 2111 "Gmsh.y" +case 318: +#line 2499 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -5592,8 +7128,8 @@ case 258: List_Delete(yyvsp[-3].l); ; break;} -case 259: -#line 2125 "Gmsh.y" +case 319: +#line 2513 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -5608,72 +7144,72 @@ case 259: List_Delete(yyvsp[-1].l); ; break;} -case 260: -#line 2145 "Gmsh.y" +case 320: +#line 2533 "Gmsh.y" { ReplaceAllDuplicates(THEM); ; break;} -case 261: -#line 2149 "Gmsh.y" +case 321: +#line 2537 "Gmsh.y" { IntersectAllSegmentsTogether(); ; break;} -case 262: -#line 2158 "Gmsh.y" +case 322: +#line 2546 "Gmsh.y" {yyval.i = 1;; break;} -case 263: -#line 2159 "Gmsh.y" +case 323: +#line 2547 "Gmsh.y" {yyval.i = 0;; break;} -case 264: -#line 2160 "Gmsh.y" +case 324: +#line 2548 "Gmsh.y" {yyval.i = -1;; break;} -case 265: -#line 2161 "Gmsh.y" +case 325: +#line 2549 "Gmsh.y" {yyval.i = -1;; break;} -case 266: -#line 2162 "Gmsh.y" +case 326: +#line 2550 "Gmsh.y" {yyval.i = -1;; break;} -case 267: -#line 2166 "Gmsh.y" +case 327: +#line 2554 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 268: -#line 2167 "Gmsh.y" +case 328: +#line 2555 "Gmsh.y" { yyval.d = yyvsp[-1].d ; ; break;} -case 269: -#line 2168 "Gmsh.y" +case 329: +#line 2556 "Gmsh.y" { yyval.d = -yyvsp[0].d ; ; break;} -case 270: -#line 2169 "Gmsh.y" +case 330: +#line 2557 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 271: -#line 2170 "Gmsh.y" +case 331: +#line 2558 "Gmsh.y" { yyval.d = !yyvsp[0].d ; ; break;} -case 272: -#line 2171 "Gmsh.y" +case 332: +#line 2559 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d ; ; break;} -case 273: -#line 2172 "Gmsh.y" +case 333: +#line 2560 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d ; ; break;} -case 274: -#line 2173 "Gmsh.y" +case 334: +#line 2561 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d ; ; break;} -case 275: -#line 2175 "Gmsh.y" +case 335: +#line 2563 "Gmsh.y" { if(!yyvsp[0].d) vyyerror("Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -5681,236 +7217,236 @@ case 275: yyval.d = yyvsp[-2].d / yyvsp[0].d ; ; break;} -case 276: -#line 2181 "Gmsh.y" +case 336: +#line 2569 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ; ; break;} -case 277: -#line 2182 "Gmsh.y" +case 337: +#line 2570 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ; ; break;} -case 278: -#line 2183 "Gmsh.y" +case 338: +#line 2571 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d ; ; break;} -case 279: -#line 2184 "Gmsh.y" +case 339: +#line 2572 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d ; ; break;} -case 280: -#line 2185 "Gmsh.y" +case 340: +#line 2573 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d ; ; break;} -case 281: -#line 2186 "Gmsh.y" +case 341: +#line 2574 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d ; ; break;} -case 282: -#line 2187 "Gmsh.y" +case 342: +#line 2575 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d ; ; break;} -case 283: -#line 2188 "Gmsh.y" +case 343: +#line 2576 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d ; ; break;} -case 284: -#line 2189 "Gmsh.y" +case 344: +#line 2577 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d ; ; break;} -case 285: -#line 2190 "Gmsh.y" +case 345: +#line 2578 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d ; ; break;} -case 286: -#line 2191 "Gmsh.y" +case 346: +#line 2579 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ; break;} -case 287: -#line 2192 "Gmsh.y" +case 347: +#line 2580 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 288: -#line 2193 "Gmsh.y" +case 348: +#line 2581 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 289: -#line 2194 "Gmsh.y" +case 349: +#line 2582 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 290: -#line 2195 "Gmsh.y" +case 350: +#line 2583 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 291: -#line 2196 "Gmsh.y" +case 351: +#line 2584 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 292: -#line 2197 "Gmsh.y" +case 352: +#line 2585 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 293: -#line 2198 "Gmsh.y" +case 353: +#line 2586 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 294: -#line 2199 "Gmsh.y" +case 354: +#line 2587 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 295: -#line 2200 "Gmsh.y" +case 355: +#line 2588 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 296: -#line 2201 "Gmsh.y" +case 356: +#line 2589 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 297: -#line 2202 "Gmsh.y" +case 357: +#line 2590 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 298: -#line 2203 "Gmsh.y" +case 358: +#line 2591 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 299: -#line 2204 "Gmsh.y" +case 359: +#line 2592 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 300: -#line 2205 "Gmsh.y" +case 360: +#line 2593 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 301: -#line 2206 "Gmsh.y" +case 361: +#line 2594 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 302: -#line 2207 "Gmsh.y" +case 362: +#line 2595 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 303: -#line 2208 "Gmsh.y" +case 363: +#line 2596 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 304: -#line 2209 "Gmsh.y" +case 364: +#line 2597 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 305: -#line 2210 "Gmsh.y" +case 365: +#line 2598 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 306: -#line 2211 "Gmsh.y" +case 366: +#line 2599 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 307: -#line 2212 "Gmsh.y" +case 367: +#line 2600 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 308: -#line 2214 "Gmsh.y" +case 368: +#line 2602 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 309: -#line 2215 "Gmsh.y" +case 369: +#line 2603 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 310: -#line 2216 "Gmsh.y" +case 370: +#line 2604 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 311: -#line 2217 "Gmsh.y" +case 371: +#line 2605 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 312: -#line 2218 "Gmsh.y" +case 372: +#line 2606 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 313: -#line 2219 "Gmsh.y" +case 373: +#line 2607 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 314: -#line 2220 "Gmsh.y" +case 374: +#line 2608 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 315: -#line 2221 "Gmsh.y" +case 375: +#line 2609 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 316: -#line 2222 "Gmsh.y" +case 376: +#line 2610 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 317: -#line 2223 "Gmsh.y" +case 377: +#line 2611 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 318: -#line 2224 "Gmsh.y" +case 378: +#line 2612 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 319: -#line 2225 "Gmsh.y" +case 379: +#line 2613 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 320: -#line 2226 "Gmsh.y" +case 380: +#line 2614 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 321: -#line 2227 "Gmsh.y" +case 381: +#line 2615 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 322: -#line 2228 "Gmsh.y" +case 382: +#line 2616 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 323: -#line 2229 "Gmsh.y" +case 383: +#line 2617 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 324: -#line 2230 "Gmsh.y" +case 384: +#line 2618 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 325: -#line 2231 "Gmsh.y" +case 385: +#line 2619 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 326: -#line 2232 "Gmsh.y" +case 386: +#line 2620 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 327: -#line 2233 "Gmsh.y" +case 387: +#line 2621 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 328: -#line 2234 "Gmsh.y" +case 388: +#line 2622 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 329: -#line 2243 "Gmsh.y" +case 389: +#line 2631 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 330: -#line 2244 "Gmsh.y" +case 390: +#line 2632 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} -case 331: -#line 2245 "Gmsh.y" +case 391: +#line 2633 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} -case 332: -#line 2246 "Gmsh.y" +case 392: +#line 2634 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} -case 333: -#line 2251 "Gmsh.y" +case 393: +#line 2639 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5921,8 +7457,8 @@ case 333: yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ; ; break;} -case 334: -#line 2262 "Gmsh.y" +case 394: +#line 2650 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5939,8 +7475,8 @@ case 334: } ; break;} -case 335: -#line 2279 "Gmsh.y" +case 395: +#line 2667 "Gmsh.y" { TheSymbol.Name = yyvsp[-1].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5951,8 +7487,8 @@ case 335: yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i) ; ; break;} -case 336: -#line 2290 "Gmsh.y" +case 396: +#line 2678 "Gmsh.y" { TheSymbol.Name = yyvsp[-4].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { @@ -5969,8 +7505,8 @@ case 336: } ; break;} -case 337: -#line 2309 "Gmsh.y" +case 397: +#line 2697 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-2].c); @@ -5986,8 +7522,8 @@ case 337: } ; break;} -case 338: -#line 2325 "Gmsh.y" +case 398: +#line 2713 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c); @@ -6003,8 +7539,8 @@ case 338: } ; break;} -case 339: -#line 2341 "Gmsh.y" +case 399: +#line 2729 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-3].c); @@ -6020,8 +7556,8 @@ case 339: } ; break;} -case 340: -#line 2357 "Gmsh.y" +case 400: +#line 2745 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){ vyyerror("Unknown numeric option class '%s'", yyvsp[-6].c); @@ -6037,131 +7573,131 @@ case 340: } ; break;} -case 341: -#line 2375 "Gmsh.y" +case 401: +#line 2763 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ; ; break;} -case 342: -#line 2379 "Gmsh.y" +case 402: +#line 2767 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ; ; break;} -case 343: -#line 2383 "Gmsh.y" +case 403: +#line 2771 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} -case 344: -#line 2387 "Gmsh.y" +case 404: +#line 2775 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ; ; break;} -case 345: -#line 2391 "Gmsh.y" +case 405: +#line 2779 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ; ; break;} -case 346: -#line 2398 "Gmsh.y" +case 406: +#line 2786 "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 347: -#line 2402 "Gmsh.y" +case 407: +#line 2790 "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 348: -#line 2406 "Gmsh.y" +case 408: +#line 2794 "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 349: -#line 2410 "Gmsh.y" +case 409: +#line 2798 "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 350: -#line 2417 "Gmsh.y" +case 410: +#line 2805 "Gmsh.y" { ; break;} -case 351: -#line 2420 "Gmsh.y" +case 411: +#line 2808 "Gmsh.y" { ; break;} -case 352: -#line 2426 "Gmsh.y" +case 412: +#line 2814 "Gmsh.y" { ; break;} -case 353: -#line 2429 "Gmsh.y" +case 413: +#line 2817 "Gmsh.y" { ; break;} -case 354: -#line 2435 "Gmsh.y" +case 414: +#line 2823 "Gmsh.y" { ; break;} -case 355: -#line 2438 "Gmsh.y" +case 415: +#line 2826 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 356: -#line 2442 "Gmsh.y" +case 416: +#line 2830 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 357: -#line 2449 "Gmsh.y" +case 417: +#line 2837 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(List_T*)) ; List_Add(yyval.l, &(yyvsp[0].l)) ; ; break;} -case 358: -#line 2454 "Gmsh.y" +case 418: +#line 2842 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)) ; ; break;} -case 359: -#line 2462 "Gmsh.y" +case 419: +#line 2850 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 360: -#line 2467 "Gmsh.y" +case 420: +#line 2855 "Gmsh.y" { yyval.l = yyvsp[0].l ; ; break;} -case 361: -#line 2471 "Gmsh.y" +case 421: +#line 2859 "Gmsh.y" { yyval.l=yyvsp[-1].l; ; break;} -case 362: -#line 2475 "Gmsh.y" +case 422: +#line 2863 "Gmsh.y" { yyval.l=yyvsp[-1].l; for(i=0 ; i<List_Nbr(yyval.l) ; i++){ @@ -6170,16 +7706,16 @@ case 362: } ; break;} -case 363: -#line 2486 "Gmsh.y" +case 423: +#line 2874 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; for(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 364: -#line 2492 "Gmsh.y" +case 424: +#line 2880 "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)){ @@ -6191,8 +7727,8 @@ case 364: List_Add(yyval.l, &d) ; ; break;} -case 365: -#line 2503 "Gmsh.y" +case 425: +#line 2891 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -6207,8 +7743,8 @@ case 365: } ; break;} -case 366: -#line 2517 "Gmsh.y" +case 426: +#line 2905 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-2].c ; @@ -6225,8 +7761,8 @@ case 366: } ; break;} -case 367: -#line 2533 "Gmsh.y" +case 427: +#line 2921 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; @@ -6247,8 +7783,8 @@ case 367: List_Delete(yyvsp[-2].l); ; break;} -case 368: -#line 2553 "Gmsh.y" +case 428: +#line 2941 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; TheSymbol.Name = yyvsp[-5].c ; @@ -6271,27 +7807,27 @@ case 368: List_Delete(yyvsp[-2].l); ; break;} -case 369: -#line 2578 "Gmsh.y" +case 429: +#line 2966 "Gmsh.y" { yyval.l = List_Create(2,1,sizeof(double)) ; List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 370: -#line 2583 "Gmsh.y" +case 430: +#line 2971 "Gmsh.y" { yyval.l = yyvsp[0].l ; ; break;} -case 371: -#line 2587 "Gmsh.y" +case 431: +#line 2975 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)) ; ; break;} -case 372: -#line 2591 "Gmsh.y" +case 432: +#line 2979 "Gmsh.y" { for(i=0 ; i<List_Nbr(yyvsp[0].l) ; i++){ List_Read(yyvsp[0].l, i, &d) ; @@ -6300,27 +7836,27 @@ case 372: List_Delete(yyvsp[0].l); ; break;} -case 373: -#line 2603 "Gmsh.y" +case 433: +#line 2991 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} -case 374: -#line 2607 "Gmsh.y" +case 434: +#line 2995 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} -case 375: -#line 2618 "Gmsh.y" +case 435: +#line 3006 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); if(flag) vyyerror("Unknown color '%s'", yyvsp[0].c); ; break;} -case 376: -#line 2623 "Gmsh.y" +case 436: +#line 3011 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){ vyyerror("Unknown color option class '%s'", yyvsp[-4].c); @@ -6337,14 +7873,14 @@ case 376: } ; break;} -case 377: -#line 2642 "Gmsh.y" +case 437: +#line 3030 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 378: -#line 2646 "Gmsh.y" +case 438: +#line 3034 "Gmsh.y" { yyval.l = List_Create(256,10,sizeof(unsigned int)) ; GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -6356,27 +7892,27 @@ case 378: } ; break;} -case 379: -#line 2660 "Gmsh.y" +case 439: +#line 3048 "Gmsh.y" { yyval.l = List_Create(256,10,sizeof(unsigned int)) ; List_Add(yyval.l, &(yyvsp[0].u)) ; ; break;} -case 380: -#line 2665 "Gmsh.y" +case 440: +#line 3053 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)) ; ; break;} -case 381: -#line 2672 "Gmsh.y" +case 441: +#line 3060 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} -case 382: -#line 2676 "Gmsh.y" +case 442: +#line 3064 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)) ; strcpy(yyval.c, yyvsp[-3].c) ; @@ -6385,8 +7921,8 @@ case 382: Free(yyvsp[-1].c); ; break;} -case 383: -#line 2684 "Gmsh.y" +case 443: +#line 3072 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)) ; for(i=strlen(yyvsp[-1].c)-1; i>=0; i--){ @@ -6400,14 +7936,14 @@ case 383: Free(yyvsp[-1].c); ; break;} -case 384: -#line 2697 "Gmsh.y" +case 444: +#line 3085 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} -case 385: -#line 2701 "Gmsh.y" +case 445: +#line 3089 "Gmsh.y" { i = PrintListOfDouble(yyvsp[-3].c,yyvsp[-1].l,tmpstring); if(i<0){ @@ -6426,8 +7962,8 @@ case 385: List_Delete(yyvsp[-1].l); ; break;} -case 386: -#line 2719 "Gmsh.y" +case 446: +#line 3107 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c))) vyyerror("Unknown string option class '%s'", yyvsp[-3].c); @@ -6442,8 +7978,8 @@ case 386: } ; break;} -case 387: -#line 2733 "Gmsh.y" +case 447: +#line 3121 "Gmsh.y" { if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c))) vyyerror("Unknown string option class '%s'", yyvsp[-6].c); @@ -6691,7 +8227,7 @@ yyreturn: #endif return yyresult; } -#line 2748 "Gmsh.y" +#line 3136 "Gmsh.y" void InitSymbols(void){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index bb505d82dfccf8a5346d5a5257f9cd461d799612..17e3d476115b8f1f23be14fcdcc4988193621e1d 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,6 +1,6 @@ %{ -// $Id: Gmsh.y,v 1.123 2002-05-20 18:28:29 geuzaine Exp $ +// $Id: Gmsh.y,v 1.124 2002-09-01 21:54:13 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -111,10 +111,14 @@ int PrintListOfDouble(char *format, List_T *list, char *buffer); %token tRotate tTranslate tSymmetry tDilate tExtrude tDuplicata %token tLoop tRecombine tDelete tCoherence tIntersect %token tAttractor tLayers -%token tScalarTetrahedron tVectorTetrahedron tTensorTetrahedron -%token tScalarTriangle tVectorTriangle tTensorTriangle -%token tScalarLine tVectorLine tTensorLine %token tScalarPoint tVectorPoint tTensorPoint +%token tScalarLine tVectorLine tTensorLine +%token tScalarTriangle tVectorTriangle tTensorTriangle +%token tScalarQuadrangle tVectorQuadrangle tTensorQuadrangle +%token tScalarTetrahedron tVectorTetrahedron tTensorTetrahedron +%token tScalarHexahedron tVectorHexahedron tTensorHexahedron +%token tScalarPrism tVectorPrism tTensorPrism +%token tScalarPyramid tVectorPyramid tTensorPyramid %token tText2D tText3D %token tBSpline tBezier tNurbs tOrder tWith tBounds tKnots %token tColor tColorTable tFor tIn tEndFor tIf tEndIf tExit @@ -457,9 +461,21 @@ Views : | Views ScalarTriangle | Views VectorTriangle | Views TensorTriangle + | Views ScalarQuadrangle + | Views VectorQuadrangle + | Views TensorQuadrangle | Views ScalarTetrahedron | Views VectorTetrahedron | Views TensorTetrahedron + | Views ScalarHexahedron + | Views VectorHexahedron + | Views TensorHexahedron + | Views ScalarPrism + | Views VectorPrism + | Views TensorPrism + | Views ScalarPyramid + | Views VectorPyramid + | Views TensorPyramid | Views Text2D | Views Text3D ; @@ -659,6 +675,84 @@ TensorTriangle : } ; +ScalarQuadrangleValues : + FExpr + { List_Add(View->SQ, &$1) ; } + | ScalarQuadrangleValues ',' FExpr + { List_Add(View->SQ, &$3) ; } + ; + +ScalarQuadrangle : + tScalarQuadrangle '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->SQ, &$3); List_Add(View->SQ, &$9); + List_Add(View->SQ, &$15); List_Add(View->SQ, &$21); + List_Add(View->SQ, &$5); List_Add(View->SQ, &$11); + List_Add(View->SQ, &$17); List_Add(View->SQ, &$23); + List_Add(View->SQ, &$7); List_Add(View->SQ, &$13); + List_Add(View->SQ, &$19); List_Add(View->SQ, &$25); + } + '{' ScalarQuadrangleValues '}' tEND + { + View->NbSQ++ ; + } +; + +VectorQuadrangleValues : + FExpr + { List_Add(View->VQ, &$1) ; } + | VectorQuadrangleValues ',' FExpr + { List_Add(View->VQ, &$3) ; } + ; + +VectorQuadrangle : + tVectorQuadrangle '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->VQ, &$3); List_Add(View->VQ, &$9); + List_Add(View->VQ, &$15); List_Add(View->VQ, &$21); + List_Add(View->VQ, &$5); List_Add(View->VQ, &$11); + List_Add(View->VQ, &$17); List_Add(View->VQ, &$23); + List_Add(View->VQ, &$7); List_Add(View->VQ, &$13); + List_Add(View->VQ, &$19); List_Add(View->VQ, &$25); + } + '{' VectorQuadrangleValues '}' tEND + { + View->NbVQ++ ; + } +; + +TensorQuadrangleValues : + FExpr + { List_Add(View->TQ, &$1) ; } + | TensorQuadrangleValues ',' FExpr + { List_Add(View->TQ, &$3) ; } + ; + +TensorQuadrangle : + tTensorQuadrangle '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->TQ, &$3); List_Add(View->TQ, &$9); + List_Add(View->TQ, &$15); List_Add(View->TQ, &$21); + List_Add(View->TQ, &$5); List_Add(View->TQ, &$11); + List_Add(View->TQ, &$17); List_Add(View->TQ, &$23); + List_Add(View->TQ, &$7); List_Add(View->TQ, &$13); + List_Add(View->TQ, &$19); List_Add(View->TQ, &$25); + } + '{' TensorQuadrangleValues '}' tEND + { + View->NbTQ++ ; + } +; + ScalarTetrahedronValues : FExpr { List_Add(View->SS, &$1) ; } @@ -737,6 +831,297 @@ TensorTetrahedron : } ; +ScalarHexahedronValues : + FExpr + { List_Add(View->SH, &$1) ; } + | ScalarHexahedronValues ',' FExpr + { List_Add(View->SH, &$3) ; } + ; + +ScalarHexahedron : + tScalarHexahedron '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->SH, &$3); List_Add(View->SH, &$9); + List_Add(View->SH, &$15); List_Add(View->SH, &$21); + List_Add(View->SH, &$27); List_Add(View->SH, &$33); + List_Add(View->SH, &$39); List_Add(View->SH, &$45); + List_Add(View->SH, &$5); List_Add(View->SH, &$11); + List_Add(View->SH, &$17); List_Add(View->SH, &$23); + List_Add(View->SH, &$29); List_Add(View->SH, &$35); + List_Add(View->SH, &$41); List_Add(View->SH, &$47); + List_Add(View->SH, &$7); List_Add(View->SH, &$13); + List_Add(View->SH, &$19); List_Add(View->SH, &$25); + List_Add(View->SH, &$31); List_Add(View->SH, &$37); + List_Add(View->SH, &$43); List_Add(View->SH, &$49); + } + '{' ScalarHexahedronValues '}' tEND + { + View->NbSH++ ; + } +; + +VectorHexahedronValues : + FExpr + { List_Add(View->VH, &$1) ; } + | VectorHexahedronValues ',' FExpr + { List_Add(View->VH, &$3) ; } + ; + +VectorHexahedron : + tVectorHexahedron '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->VH, &$3); List_Add(View->VH, &$9); + List_Add(View->VH, &$15); List_Add(View->VH, &$21); + List_Add(View->VH, &$27); List_Add(View->VH, &$33); + List_Add(View->VH, &$39); List_Add(View->VH, &$45); + List_Add(View->VH, &$5); List_Add(View->VH, &$11); + List_Add(View->VH, &$17); List_Add(View->VH, &$23); + List_Add(View->VH, &$29); List_Add(View->VH, &$35); + List_Add(View->VH, &$41); List_Add(View->VH, &$47); + List_Add(View->VH, &$7); List_Add(View->VH, &$13); + List_Add(View->VH, &$19); List_Add(View->VH, &$25); + List_Add(View->VH, &$31); List_Add(View->VH, &$37); + List_Add(View->VH, &$43); List_Add(View->VH, &$49); + } + '{' VectorHexahedronValues '}' tEND + { + View->NbVH++ ; + } +; + +TensorHexahedronValues : + FExpr + { List_Add(View->TH, &$1) ; } + | TensorHexahedronValues ',' FExpr + { List_Add(View->TH, &$3) ; } + ; + +TensorHexahedron : + tTensorHexahedron '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->TH, &$3); List_Add(View->TH, &$9); + List_Add(View->TH, &$15); List_Add(View->TH, &$21); + List_Add(View->TH, &$27); List_Add(View->TH, &$33); + List_Add(View->TH, &$39); List_Add(View->TH, &$45); + List_Add(View->TH, &$5); List_Add(View->TH, &$11); + List_Add(View->TH, &$17); List_Add(View->TH, &$23); + List_Add(View->TH, &$29); List_Add(View->TH, &$35); + List_Add(View->TH, &$41); List_Add(View->TH, &$47); + List_Add(View->TH, &$7); List_Add(View->TH, &$13); + List_Add(View->TH, &$19); List_Add(View->TH, &$25); + List_Add(View->TH, &$31); List_Add(View->TH, &$37); + List_Add(View->TH, &$43); List_Add(View->TH, &$49); + } + '{' TensorHexahedronValues '}' tEND + { + View->NbTH++ ; + } +; + +ScalarPrismValues : + FExpr + { List_Add(View->SI, &$1) ; } + | ScalarPrismValues ',' FExpr + { List_Add(View->SI, &$3) ; } + ; + +ScalarPrism : + tScalarPrism '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->SI, &$3); List_Add(View->SI, &$9); + List_Add(View->SI, &$15); List_Add(View->SI, &$21); + List_Add(View->SI, &$27); List_Add(View->SI, &$33); + List_Add(View->SI, &$5); List_Add(View->SI, &$11); + List_Add(View->SI, &$17); List_Add(View->SI, &$23); + List_Add(View->SI, &$29); List_Add(View->SI, &$35); + List_Add(View->SI, &$7); List_Add(View->SI, &$13); + List_Add(View->SI, &$19); List_Add(View->SI, &$25); + List_Add(View->SI, &$31); List_Add(View->SI, &$37); + } + '{' ScalarPrismValues '}' tEND + { + View->NbSI++ ; + } +; + +VectorPrismValues : + FExpr + { List_Add(View->VI, &$1) ; } + | VectorPrismValues ',' FExpr + { List_Add(View->VI, &$3) ; } + ; + +VectorPrism : + tVectorPrism '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->VI, &$3); List_Add(View->VI, &$9); + List_Add(View->VI, &$15); List_Add(View->VI, &$21); + List_Add(View->VI, &$27); List_Add(View->VI, &$33); + List_Add(View->VI, &$5); List_Add(View->VI, &$11); + List_Add(View->VI, &$17); List_Add(View->VI, &$23); + List_Add(View->VI, &$29); List_Add(View->VI, &$35); + List_Add(View->VI, &$7); List_Add(View->VI, &$13); + List_Add(View->VI, &$19); List_Add(View->VI, &$25); + List_Add(View->VI, &$31); List_Add(View->VI, &$37); + } + '{' VectorPrismValues '}' tEND + { + View->NbVI++ ; + } +; + +TensorPrismValues : + FExpr + { List_Add(View->TI, &$1) ; } + | TensorPrismValues ',' FExpr + { List_Add(View->TI, &$3) ; } + ; + +TensorPrism : + tTensorPrism '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->TI, &$3); List_Add(View->TI, &$9); + List_Add(View->TI, &$15); List_Add(View->TI, &$21); + List_Add(View->TI, &$27); List_Add(View->TI, &$33); + List_Add(View->TI, &$5); List_Add(View->TI, &$11); + List_Add(View->TI, &$17); List_Add(View->TI, &$23); + List_Add(View->TI, &$29); List_Add(View->TI, &$35); + List_Add(View->TI, &$7); List_Add(View->TI, &$13); + List_Add(View->TI, &$19); List_Add(View->TI, &$25); + List_Add(View->TI, &$31); List_Add(View->TI, &$37); + } + '{' TensorPrismValues '}' tEND + { + View->NbTI++ ; + } +; + +ScalarPyramidValues : + FExpr + { List_Add(View->SY, &$1) ; } + | ScalarPyramidValues ',' FExpr + { List_Add(View->SY, &$3) ; } + ; + +ScalarPyramid : + tScalarPyramid '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->SY, &$3); List_Add(View->SY, &$9); + List_Add(View->SY, &$15); List_Add(View->SY, &$21); + List_Add(View->SY, &$27); + List_Add(View->SY, &$5); List_Add(View->SY, &$11); + List_Add(View->SY, &$17); List_Add(View->SY, &$23); + List_Add(View->SY, &$29); + List_Add(View->SY, &$7); List_Add(View->SY, &$13); + List_Add(View->SY, &$19); List_Add(View->SY, &$25); + List_Add(View->SY, &$31); + } + '{' ScalarPyramidValues '}' tEND + { + View->NbSY++ ; + } +; + +VectorPyramidValues : + FExpr + { List_Add(View->VY, &$1) ; } + | VectorPyramidValues ',' FExpr + { List_Add(View->VY, &$3) ; } + ; + +VectorPyramid : + tVectorPyramid '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->VY, &$3); List_Add(View->VY, &$9); + List_Add(View->VY, &$15); List_Add(View->VY, &$21); + List_Add(View->VY, &$27); + List_Add(View->VY, &$5); List_Add(View->VY, &$11); + List_Add(View->VY, &$17); List_Add(View->VY, &$23); + List_Add(View->VY, &$29); + List_Add(View->VY, &$7); List_Add(View->VY, &$13); + List_Add(View->VY, &$19); List_Add(View->VY, &$25); + List_Add(View->VY, &$31); + } + '{' VectorPyramidValues '}' tEND + { + View->NbVY++ ; + } +; + +TensorPyramidValues : + FExpr + { List_Add(View->TY, &$1) ; } + | TensorPyramidValues ',' FExpr + { List_Add(View->TY, &$3) ; } + ; + +TensorPyramid : + tTensorPyramid '(' FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ',' + FExpr ',' FExpr ',' FExpr ')' + { + List_Add(View->TY, &$3); List_Add(View->TY, &$9); + List_Add(View->TY, &$15); List_Add(View->TY, &$21); + List_Add(View->TY, &$27); + List_Add(View->TY, &$5); List_Add(View->TY, &$11); + List_Add(View->TY, &$17); List_Add(View->TY, &$23); + List_Add(View->TY, &$29); + List_Add(View->TY, &$7); List_Add(View->TY, &$13); + List_Add(View->TY, &$19); List_Add(View->TY, &$25); + List_Add(View->TY, &$31); + } + '{' TensorPyramidValues '}' tEND + { + View->NbTY++ ; + } +; + Text2DValues : StringExpr { diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 02527058a34706f9b0f36db1ab5a1f1614847e19..5d08bbf99e5c2f0fbe2683173bce811659c691a6 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.141 2002-05-20 18:28:29 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.142 2002-09-01 21:54:13 geuzaine Exp $ */ #define FLEX_SCANNER @@ -283,122 +283,123 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 192 -#define YY_END_OF_BUFFER 193 -static yyconst short int yy_accept[1020] = +#define YY_NUM_RULES 204 +#define YY_END_OF_BUFFER 205 +static yyconst short int yy_accept[1031] = { 0, - 0, 0, 193, 191, 1, 1, 191, 5, 185, 191, - 6, 191, 191, 191, 191, 191, 186, 17, 2, 191, - 12, 191, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 191, 191, 0, 0, 25, 185, 21, 15, 22, - 13, 23, 14, 0, 188, 0, 0, 0, 0, 3, - 4, 16, 19, 187, 186, 0, 27, 24, 28, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 73, 72, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 89, 190, 190, 190, 190, - 190, 190, 190, 190, 125, 128, 119, 122, 190, 190, - 190, 190, 190, 190, 131, 132, 127, 190, 130, 190, - 121, 124, 190, 190, 190, 190, 126, 129, 120, 123, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 20, 26, 0, 0, 18, 0, 138, 139, 140, 141, - - 187, 0, 0, 189, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 44, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 57, 190, 190, 190, 190, - 190, 190, 69, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 79, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 103, - 190, 190, 190, 190, 190, 190, 190, 190, 114, 190, - - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 0, 0, 0, 188, 0, 0, - 187, 190, 190, 190, 190, 29, 190, 190, 190, 31, - 33, 190, 190, 190, 190, 190, 39, 190, 190, 190, - 190, 190, 190, 52, 190, 42, 190, 190, 190, 190, - 190, 43, 155, 190, 190, 190, 56, 190, 190, 190, - 0, 190, 190, 190, 190, 65, 190, 190, 190, 66, - 190, 68, 190, 190, 190, 190, 0, 190, 190, 149, - 190, 190, 77, 190, 78, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - - 190, 190, 100, 190, 190, 190, 190, 190, 104, 190, - 190, 102, 190, 190, 190, 190, 190, 190, 113, 190, - 190, 190, 190, 190, 190, 118, 190, 190, 190, 190, - 180, 9, 8, 190, 10, 11, 190, 190, 190, 190, - 0, 0, 0, 187, 190, 190, 190, 190, 190, 190, - 190, 35, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 49, 190, 190, - 190, 190, 190, 190, 190, 0, 190, 190, 190, 64, - 190, 190, 190, 67, 190, 190, 190, 71, 0, 190, - 75, 190, 190, 80, 190, 190, 190, 190, 190, 86, - - 190, 87, 153, 190, 190, 190, 90, 190, 91, 92, - 190, 190, 190, 190, 190, 99, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 116, 190, 190, - 190, 190, 190, 190, 177, 190, 190, 179, 184, 190, - 0, 0, 190, 190, 190, 190, 30, 32, 34, 190, - 190, 190, 38, 41, 190, 168, 190, 190, 190, 190, - 190, 190, 46, 190, 190, 190, 190, 53, 54, 190, - 190, 190, 190, 0, 161, 190, 190, 63, 190, 190, - 190, 190, 190, 190, 190, 190, 154, 0, 190, 81, - 76, 190, 190, 190, 83, 82, 190, 190, 190, 190, - - 96, 95, 190, 190, 101, 98, 190, 105, 190, 109, - 190, 190, 190, 190, 190, 190, 190, 190, 150, 190, - 117, 190, 190, 190, 7, 178, 176, 0, 0, 190, - 190, 190, 190, 36, 190, 40, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 48, 190, 190, 190, - 190, 62, 0, 59, 190, 190, 60, 190, 190, 190, - 190, 190, 190, 190, 0, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 108, 190, 106, 190, - 190, 190, 190, 190, 115, 190, 190, 181, 190, 0, - 0, 190, 190, 190, 190, 190, 190, 190, 190, 190, - - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 0, 58, 61, 190, 190, 190, 190, 190, 70, 190, - 0, 190, 190, 84, 85, 190, 190, 190, 88, 190, - 190, 190, 190, 107, 190, 190, 190, 190, 190, 182, - 183, 0, 0, 190, 190, 190, 190, 37, 190, 190, - 190, 190, 190, 190, 190, 190, 47, 190, 151, 55, - 190, 144, 0, 190, 190, 190, 157, 190, 190, 0, - 74, 190, 190, 190, 190, 190, 97, 190, 110, 190, - 190, 190, 112, 190, 0, 0, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 51, 190, - - 50, 143, 0, 147, 190, 190, 190, 190, 0, 190, - 190, 190, 94, 190, 190, 190, 190, 190, 190, 0, - 0, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 0, 190, 190, 156, 190, 0, - 190, 190, 190, 93, 190, 190, 190, 111, 190, 137, - 0, 137, 190, 190, 190, 190, 190, 190, 190, 162, - 190, 190, 190, 190, 0, 190, 190, 190, 159, 190, - 190, 190, 190, 190, 190, 145, 136, 190, 148, 136, - 190, 190, 190, 190, 190, 190, 190, 190, 0, 190, - 190, 170, 190, 142, 190, 190, 190, 169, 190, 190, - - 190, 190, 190, 190, 190, 190, 45, 0, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 133, 172, - 166, 190, 0, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 160, 146, 158, 190, 190, - 190, 167, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 152, 190, 190, 190, 190, 190, 173, 190, - 190, 190, 190, 190, 165, 164, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 171, - 190, 190, 190, 190, 190, 174, 190, 190, 135, 190, - - 190, 190, 190, 190, 190, 134, 190, 190, 190, 190, - 190, 190, 190, 190, 175, 190, 190, 163, 0 + 0, 0, 205, 203, 1, 1, 203, 5, 197, 203, + 6, 203, 203, 203, 203, 203, 198, 17, 2, 203, + 12, 203, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 203, 203, 0, 0, 25, 197, 21, 15, 22, + 13, 23, 14, 0, 200, 0, 0, 0, 0, 3, + 4, 16, 19, 199, 198, 0, 27, 24, 28, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 73, 72, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 89, 202, 202, 202, 202, + 202, 202, 202, 134, 137, 122, 119, 128, 131, 125, + 140, 202, 202, 202, 202, 202, 202, 143, 144, 136, + 139, 124, 202, 121, 130, 202, 133, 127, 142, 202, + 202, 202, 202, 135, 138, 123, 120, 129, 132, 126, + 141, 202, 202, 202, 202, 202, 202, 202, 202, 202, + + 202, 20, 26, 0, 0, 18, 0, 150, 151, 152, + 153, 199, 0, 0, 201, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 44, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 57, 202, 202, 202, + 202, 202, 202, 69, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 79, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + + 103, 202, 202, 202, 202, 202, 202, 202, 202, 114, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 0, 0, 0, 200, 0, + 0, 199, 202, 202, 202, 202, 29, 202, 202, 202, + 31, 33, 202, 202, 202, 202, 202, 39, 202, 202, + 202, 202, 202, 202, 52, 202, 42, 202, 202, 202, + 202, 202, 43, 167, 202, 202, 202, 56, 202, 202, + 202, 0, 202, 202, 202, 202, 65, 202, 202, 202, + 66, 202, 68, 202, 202, 202, 202, 0, 202, 202, + 161, 202, 202, 77, 202, 78, 202, 202, 202, 202, + + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 100, 202, 202, 202, 202, 202, 104, + 202, 202, 102, 202, 202, 202, 202, 202, 202, 113, + 202, 202, 202, 202, 202, 202, 118, 202, 202, 202, + 202, 192, 9, 8, 202, 10, 11, 202, 202, 202, + 202, 0, 0, 0, 199, 202, 202, 202, 202, 202, + 202, 202, 35, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 49, 202, + 202, 202, 202, 202, 202, 202, 0, 202, 202, 202, + 64, 202, 202, 202, 67, 202, 202, 202, 71, 0, + + 202, 75, 202, 202, 80, 202, 202, 202, 202, 202, + 86, 202, 87, 165, 202, 202, 202, 90, 202, 91, + 92, 202, 202, 202, 202, 202, 99, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 116, 202, + 202, 202, 202, 202, 202, 189, 202, 202, 191, 196, + 202, 0, 0, 202, 202, 202, 202, 30, 32, 34, + 202, 202, 202, 38, 41, 202, 180, 202, 202, 202, + 202, 202, 202, 46, 202, 202, 202, 202, 53, 54, + 202, 202, 202, 202, 0, 173, 202, 202, 63, 202, + 202, 202, 202, 202, 202, 202, 202, 166, 0, 202, + + 81, 76, 202, 202, 202, 83, 82, 202, 202, 202, + 202, 96, 95, 202, 202, 101, 98, 202, 105, 202, + 109, 202, 202, 202, 202, 202, 202, 202, 202, 162, + 202, 117, 202, 202, 202, 7, 190, 188, 0, 0, + 202, 202, 202, 202, 36, 202, 40, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 48, 202, 202, + 202, 202, 62, 0, 59, 202, 202, 60, 202, 202, + 202, 202, 202, 202, 202, 0, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 108, 202, 106, + 202, 202, 202, 202, 202, 115, 202, 202, 193, 202, + + 0, 0, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 0, 58, 61, 202, 202, 202, 202, 202, 70, + 202, 0, 202, 202, 84, 85, 202, 202, 202, 88, + 202, 202, 202, 202, 107, 202, 202, 202, 202, 202, + 194, 195, 0, 0, 202, 202, 202, 202, 37, 202, + 202, 202, 202, 202, 202, 202, 202, 47, 202, 163, + 55, 202, 156, 0, 202, 202, 202, 169, 202, 202, + 0, 74, 202, 202, 202, 202, 202, 97, 202, 110, + 202, 202, 202, 112, 202, 0, 0, 202, 202, 202, + + 202, 202, 202, 202, 202, 202, 202, 202, 202, 51, + 202, 50, 155, 0, 159, 202, 202, 202, 202, 0, + 202, 202, 202, 94, 202, 202, 202, 202, 202, 202, + 0, 0, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 0, 202, 202, 168, 202, + 0, 202, 202, 202, 93, 202, 202, 202, 111, 202, + 149, 0, 149, 202, 202, 202, 202, 202, 202, 202, + 174, 202, 202, 202, 202, 0, 202, 202, 202, 171, + 202, 202, 202, 202, 202, 202, 157, 148, 202, 160, + 148, 202, 202, 202, 202, 202, 202, 202, 202, 0, + + 202, 202, 182, 202, 154, 202, 202, 202, 181, 202, + 202, 202, 202, 202, 202, 202, 202, 45, 0, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 145, + 184, 178, 202, 0, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 172, 158, 170, 202, + 202, 202, 179, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 164, 202, 202, 202, 202, 202, 185, + 202, 202, 202, 202, 202, 177, 176, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + + 183, 202, 202, 202, 202, 202, 186, 202, 202, 147, + 202, 202, 202, 202, 202, 202, 146, 202, 202, 202, + 202, 202, 202, 202, 202, 187, 202, 202, 175, 0 } ; static yyconst int yy_ec[256] = @@ -411,12 +412,12 @@ static yyconst int yy_ec[256] = 17, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 1, 1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 33, 40, 41, 42, 43, 44, 45, 46, 47, 33, - 1, 48, 1, 1, 49, 1, 50, 51, 52, 53, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 33, + 1, 49, 1, 1, 50, 1, 51, 52, 53, 54, - 54, 55, 56, 57, 58, 33, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 1, 75, 1, 76, 1, 1, 1, 1, + 55, 56, 57, 58, 59, 33, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 1, 76, 1, 77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -433,406 +434,410 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[77] = +static yyconst int yy_meta[78] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1 + 3, 3, 3, 3, 3, 1, 1 } ; -static yyconst short int yy_base[1025] = +static yyconst short int yy_base[1036] = { 0, - 0, 0, 1283, 51, 52, 1284, 57, 54, 70, 75, - 55, 67, 80, 81, 113, 95, 132, 73, 79, 89, - 111, 119, 125, 133, 179, 140, 181, 189, 135, 184, - 204, 83, 127, 222, 141, 208, 220, 238, 249, 293, - 351, 212, 274, 248, 264, 147, 267, 268, 218, 282, - 295, 271, 197, 1244, 1244, 1284, 253, 1284, 1284, 1284, - 1284, 1284, 1284, 1268, 325, 1267, 1266, 188, 1265, 1284, - 1284, 1284, 1284, 355, 388, 397, 1284, 1284, 1284, 0, - 1238, 1231, 1237, 1241, 1209, 1219, 1212, 131, 1205, 1227, - 1193, 1197, 1204, 1224, 1223, 1224, 83, 1226, 160, 1202, - - 1209, 1192, 287, 1215, 1216, 1195, 1194, 1203, 1188, 1221, - 1215, 1222, 1188, 1194, 265, 1220, 1210, 1193, 1180, 1179, - 1175, 1178, 1201, 1214, 1173, 1198, 0, 1167, 1171, 1196, - 1159, 1169, 1168, 226, 1192, 1196, 1160, 1173, 1159, 1192, - 1170, 1198, 1183, 1154, 1146, 0, 119, 292, 77, 1156, - 133, 1149, 1156, 1191, 0, 0, 0, 0, 1152, 196, - 1147, 1146, 1145, 1149, 0, 0, 0, 1169, 0, 1176, - 0, 0, 1145, 302, 1148, 338, 0, 0, 0, 0, - 1145, 1136, 1150, 1150, 1138, 1129, 1133, 1130, 1137, 1130, - 1284, 1284, 1158, 1153, 1284, 408, 1284, 1284, 1284, 1284, - - 413, 422, 381, 429, 1156, 1168, 1150, 1149, 1122, 333, - 1126, 1125, 1120, 1125, 1145, 1125, 1120, 1117, 1138, 1153, - 1137, 1138, 1144, 1143, 1114, 1112, 1112, 1105, 1118, 1115, - 1105, 1103, 1109, 1141, 1136, 1109, 1112, 1090, 1100, 1131, - 1126, 344, 1099, 352, 1088, 0, 1089, 1126, 1125, 1085, - 1088, 1097, 0, 1097, 1112, 1120, 1083, 1134, 1090, 1075, - 1114, 1087, 1084, 1085, 1123, 1073, 1104, 1086, 1077, 1064, - 1081, 1103, 1076, 1092, 1101, 1077, 1059, 1063, 1068, 1061, - 1068, 1059, 1064, 1066, 1055, 1048, 1066, 1061, 1075, 1056, - 1054, 1053, 1042, 395, 1054, 1047, 1069, 1070, 1048, 1042, - - 1042, 1040, 1059, 1058, 1030, 1041, 393, 1043, 1032, 398, - 1034, 1040, 1035, 1024, 1049, 1051, 440, 455, 464, 469, - 474, 1047, 1051, 1048, 1070, 0, 1022, 1026, 1033, 0, - 1066, 1031, 1022, 1044, 1024, 1024, 0, 1048, 1040, 1046, - 1035, 1046, 1034, 0, 1001, 0, 1019, 1008, 1001, 1000, - 1005, 0, 0, 1038, 995, 994, 0, 1003, 1011, 1020, - 1026, 1029, 992, 992, 999, 0, 984, 1003, 1002, 0, - 984, 0, 981, 1020, 1019, 978, 1030, 978, 976, 0, - 976, 973, 0, 1026, 0, 1010, 243, 984, 977, 969, - 998, 968, 1005, 989, 970, 972, 975, 970, 959, 960, - - 957, 958, 0, 962, 956, 953, 967, 991, 0, 956, - 955, 0, 966, 949, 964, 959, 980, 975, 0, 943, - 948, 952, 969, 978, 944, 0, 954, 940, 939, 933, - 0, 0, 0, 946, 0, 0, 949, 932, 944, 942, - 963, 966, 479, 484, 961, 966, 963, 941, 922, 926, - 925, 0, 934, 923, 952, 917, 915, 940, 952, 952, - 937, 953, 949, 915, 922, 919, 918, 929, 916, 927, - 914, 913, 914, 330, 924, 923, 937, 320, 896, 0, - 908, 438, 476, 0, 902, 917, 918, 0, 943, 889, - 0, 888, 897, 0, 915, 902, 893, 883, 886, 0, - - 906, 0, 0, 921, 892, 893, 0, 882, 0, 0, - 888, 888, 890, 878, 885, 0, 889, 883, 868, 867, - 880, 881, 864, 904, 902, 406, 875, 0, 888, 881, - 872, 873, 861, 863, 0, 866, 861, 0, 0, 848, - 882, 892, 880, 888, 889, 875, 0, 0, 897, 844, - 857, 873, 0, 0, 877, 0, 859, 875, 871, 865, - 844, 835, 0, 840, 851, 828, 867, 0, 0, 848, - 854, 858, 867, 856, 0, 177, 835, 0, 838, 853, - 847, 861, 864, 861, 823, 845, 0, 867, 829, 0, - 0, 847, 819, 806, 0, 0, 851, 836, 809, 826, - - 0, 0, 808, 816, 0, 0, 846, 0, 817, 0, - 816, 816, 803, 844, 840, 808, 815, 811, 0, 814, - 0, 808, 797, 802, 0, 0, 0, 816, 826, 814, - 829, 823, 819, 0, 790, 0, 824, 827, 809, 807, - 799, 815, 806, 791, 792, 792, 0, 804, 773, 800, - 801, 0, 827, 0, 770, 784, 0, 792, 792, 792, - 796, 800, 768, 797, 814, 775, 799, 766, 770, 796, - 773, 755, 760, 752, 756, 789, 0, 758, 0, 742, - 779, 764, 750, 743, 0, 771, 741, 0, 755, 769, - 777, 767, 755, 774, 778, 735, 751, 762, 767, 769, - - 755, 769, 731, 727, 738, 731, 753, 739, 743, 745, - 766, 0, 0, 741, 63, 86, 86, 106, 0, 110, - 162, 237, 271, 0, 0, 278, 349, 322, 0, 324, - 356, 391, 363, 0, 400, 425, 394, 405, 439, 0, - 0, 461, 473, 463, 482, 476, 483, 0, 484, 463, - 486, 466, 473, 494, 458, 462, 0, 467, 0, 0, - 494, 0, 509, 497, 486, 487, 0, 492, 480, 519, - 0, 490, 504, 505, 482, 472, 0, 504, 0, 496, - 495, 471, 0, 508, 500, 514, 502, 504, 521, 518, - 519, 505, 506, 511, 516, 526, 513, 519, 0, 488, - - 0, 0, 539, 0, 508, 526, 535, 519, 545, 524, - 536, 535, 0, 503, 529, 524, 528, 515, 533, 0, - 544, 571, 546, 559, 559, 551, 548, 549, 557, 561, - 554, 569, 550, 532, 587, 577, 564, 0, 576, 590, - 571, 577, 576, 0, 577, 570, 567, 0, 570, 1284, - 0, 0, 574, 586, 647, 587, 572, 588, 586, 0, - 580, 597, 581, 565, 607, 587, 584, 585, 1284, 596, - 601, 593, 589, 603, 605, 0, 1284, 585, 0, 0, - 598, 608, 613, 601, 595, 614, 598, 590, 632, 601, - 613, 0, 623, 0, 629, 630, 639, 0, 623, 623, - - 622, 646, 631, 646, 647, 636, 0, 661, 641, 641, - 631, 639, 644, 657, 653, 636, 641, 659, 0, 639, - 0, 660, 675, 664, 655, 668, 662, 659, 669, 674, - 682, 668, 652, 661, 679, 1284, 0, 0, 664, 667, - 657, 0, 668, 681, 667, 665, 683, 686, 685, 677, - 675, 688, 0, 686, 686, 689, 692, 682, 675, 697, - 677, 678, 686, 693, 0, 0, 689, 692, 692, 699, - 703, 707, 705, 697, 710, 702, 691, 704, 718, 715, - 705, 707, 712, 705, 709, 708, 710, 709, 715, 0, - 725, 726, 727, 715, 719, 0, 721, 718, 0, 718, - - 719, 734, 722, 740, 728, 0, 724, 725, 736, 745, - 732, 729, 735, 741, 0, 736, 738, 0, 1284, 773, - 776, 779, 782, 785 + 0, 0, 1295, 52, 53, 1296, 58, 55, 72, 75, + 59, 69, 82, 83, 106, 116, 129, 67, 84, 108, + 114, 137, 127, 122, 173, 143, 192, 190, 89, 165, + 200, 135, 144, 217, 238, 189, 204, 248, 240, 290, + 349, 157, 391, 214, 194, 243, 159, 241, 244, 253, + 264, 274, 156, 1256, 1256, 1296, 325, 1296, 1296, 1296, + 1296, 1296, 1296, 1280, 330, 1279, 1278, 94, 1277, 1296, + 1296, 1296, 1296, 354, 387, 396, 1296, 1296, 1296, 0, + 1250, 1242, 1249, 1253, 1220, 1230, 1223, 229, 1216, 1238, + 1204, 1208, 1215, 1235, 1234, 1236, 153, 1238, 107, 1213, + + 1220, 1203, 315, 1226, 1227, 1206, 1205, 1214, 1199, 1233, + 1227, 1234, 1199, 1205, 292, 1232, 1222, 1204, 1191, 1190, + 1186, 1189, 1213, 1226, 1184, 1210, 0, 1178, 1182, 1208, + 1170, 1180, 1179, 43, 1204, 1208, 1171, 1184, 1170, 1204, + 1181, 1210, 1195, 1165, 1157, 0, 86, 252, 264, 1167, + 267, 1160, 1167, 1203, 0, 0, 0, 0, 0, 0, + 0, 1163, 145, 1158, 1157, 1156, 1160, 0, 0, 0, + 0, 0, 1180, 0, 0, 1188, 0, 0, 0, 1156, + 227, 1159, 209, 0, 0, 0, 0, 0, 0, 0, + 0, 1156, 1147, 1161, 1161, 1149, 1140, 1144, 1141, 1148, + + 1141, 1296, 1296, 1170, 1164, 1296, 430, 1296, 1296, 1296, + 1296, 435, 450, 455, 460, 1168, 1180, 1161, 1160, 1133, + 311, 1137, 1136, 1131, 1136, 1157, 1136, 1131, 1128, 1149, + 1165, 1148, 1150, 1156, 1155, 1125, 1123, 1123, 1116, 1129, + 1126, 1116, 1114, 1120, 1153, 1148, 1120, 1123, 1101, 1111, + 1143, 1138, 72, 1110, 366, 1099, 0, 1100, 1138, 1137, + 1096, 1099, 1108, 0, 1108, 1124, 1132, 1094, 1146, 1101, + 1086, 1126, 1098, 1095, 1096, 1135, 1084, 1116, 1097, 1088, + 1075, 1092, 1115, 1087, 1104, 1113, 1088, 1070, 1074, 1079, + 1072, 1079, 1070, 1075, 1077, 1066, 1059, 1077, 1072, 1087, + + 1067, 1065, 1064, 1053, 287, 1065, 1058, 1081, 1082, 1059, + 1053, 1053, 1051, 1070, 1069, 1041, 1052, 306, 1054, 1043, + 426, 1045, 1051, 1046, 1035, 1060, 1063, 466, 471, 485, + 490, 495, 1058, 1063, 1060, 1082, 0, 1033, 1037, 1044, + 0, 1078, 1042, 1033, 1056, 1035, 1035, 0, 1060, 1052, + 1058, 1047, 1058, 1046, 0, 1012, 0, 1030, 1019, 1012, + 1011, 1016, 0, 0, 1050, 1006, 1005, 0, 1014, 1022, + 1032, 1038, 1041, 1003, 1003, 1010, 0, 995, 1014, 1013, + 0, 995, 0, 992, 1032, 1031, 989, 1042, 989, 987, + 0, 987, 984, 0, 1038, 0, 1022, 205, 995, 988, + + 980, 1010, 979, 1017, 1000, 981, 983, 986, 981, 970, + 971, 968, 969, 0, 973, 967, 964, 978, 1003, 0, + 967, 966, 0, 977, 960, 975, 970, 992, 987, 0, + 954, 959, 963, 981, 990, 955, 0, 965, 951, 950, + 944, 0, 0, 0, 957, 0, 0, 960, 943, 955, + 953, 975, 978, 500, 505, 973, 978, 975, 952, 933, + 937, 936, 0, 945, 934, 964, 928, 926, 951, 964, + 964, 948, 965, 961, 926, 933, 930, 929, 940, 927, + 938, 925, 924, 925, 392, 935, 934, 949, 310, 907, + 0, 919, 383, 401, 0, 913, 928, 929, 0, 955, + + 900, 0, 899, 908, 0, 927, 913, 904, 894, 897, + 0, 917, 0, 0, 933, 903, 904, 0, 893, 0, + 0, 899, 899, 901, 889, 896, 0, 900, 894, 879, + 878, 891, 892, 875, 916, 914, 364, 886, 0, 899, + 892, 883, 884, 872, 874, 0, 877, 872, 0, 0, + 859, 894, 904, 892, 900, 901, 887, 0, 0, 909, + 855, 868, 885, 0, 0, 889, 0, 870, 887, 883, + 876, 855, 846, 0, 851, 862, 839, 879, 0, 0, + 859, 865, 870, 879, 868, 0, 272, 846, 0, 849, + 865, 858, 873, 876, 873, 834, 856, 0, 879, 840, + + 0, 0, 859, 830, 817, 0, 0, 863, 847, 820, + 837, 0, 0, 819, 827, 0, 0, 858, 0, 828, + 0, 827, 827, 814, 856, 852, 819, 826, 822, 0, + 825, 0, 819, 808, 813, 0, 0, 0, 827, 838, + 825, 841, 835, 831, 0, 801, 0, 836, 839, 820, + 818, 810, 827, 817, 802, 803, 803, 0, 816, 784, + 811, 813, 0, 839, 0, 781, 795, 0, 803, 803, + 803, 808, 812, 779, 809, 826, 786, 811, 777, 781, + 808, 784, 766, 771, 763, 767, 801, 0, 769, 0, + 753, 791, 775, 761, 754, 0, 783, 752, 0, 766, + + 781, 789, 779, 766, 786, 790, 746, 762, 774, 779, + 781, 766, 781, 742, 738, 749, 742, 765, 750, 754, + 757, 778, 0, 0, 753, 84, 113, 134, 176, 0, + 249, 284, 234, 285, 0, 0, 302, 336, 327, 0, + 335, 341, 395, 356, 0, 382, 410, 378, 399, 418, + 0, 0, 413, 426, 415, 499, 430, 466, 0, 499, + 448, 498, 477, 485, 506, 469, 473, 0, 478, 0, + 0, 506, 0, 521, 509, 496, 497, 0, 503, 490, + 531, 0, 501, 516, 517, 493, 483, 0, 516, 0, + 507, 506, 482, 0, 520, 511, 526, 513, 515, 533, + + 530, 531, 516, 517, 523, 528, 538, 524, 531, 0, + 499, 0, 0, 551, 0, 519, 538, 547, 530, 557, + 536, 548, 547, 0, 514, 541, 535, 539, 526, 545, + 0, 556, 583, 558, 571, 571, 563, 559, 560, 569, + 573, 565, 581, 561, 543, 599, 589, 576, 0, 588, + 602, 583, 589, 588, 0, 589, 581, 578, 0, 581, + 1296, 0, 0, 586, 598, 660, 599, 583, 600, 598, + 0, 590, 609, 592, 576, 619, 599, 595, 596, 1296, + 608, 613, 605, 600, 615, 617, 0, 1296, 596, 0, + 0, 610, 620, 625, 613, 606, 626, 609, 601, 644, + + 612, 625, 0, 631, 0, 631, 642, 651, 0, 634, + 634, 628, 658, 642, 658, 659, 647, 0, 673, 653, + 653, 642, 650, 656, 669, 665, 647, 652, 671, 0, + 650, 0, 672, 687, 676, 667, 680, 674, 670, 680, + 686, 694, 680, 663, 672, 691, 1296, 0, 0, 675, + 679, 668, 0, 680, 693, 678, 676, 695, 698, 697, + 689, 686, 700, 0, 698, 698, 701, 704, 694, 684, + 707, 688, 689, 697, 705, 0, 0, 700, 704, 703, + 711, 715, 719, 717, 708, 722, 714, 702, 716, 730, + 727, 717, 719, 724, 716, 721, 719, 721, 720, 727, + + 0, 737, 738, 739, 726, 731, 0, 733, 729, 0, + 729, 730, 746, 733, 752, 740, 0, 735, 736, 748, + 757, 744, 740, 747, 753, 0, 748, 750, 0, 1296, + 785, 788, 791, 794, 797 } ; -static yyconst short int yy_def[1025] = +static yyconst short int yy_def[1036] = { 0, - 1019, 1, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - - 1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1019, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1019, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1019, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1019, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, - 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1019, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1019, 1019, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1019, 1020, 1020, 1020, 1020, 1020, 1019, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1021, - 1019, 1022, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1019, 1020, 1020, 1020, 1020, 1019, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, - 1023, 1020, 1020, 1020, 1024, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1019, 1020, 1020, 1020, 1019, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1019, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1019, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 0, 1019, - 1019, 1019, 1019, 1019 + 1030, 1, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + + 1031, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1030, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1030, 1030, 1030, 1030, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1030, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1030, + + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1030, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1030, 1031, + + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1030, 1030, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1030, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1030, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + + 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1030, 1031, 1031, 1031, 1031, 1031, 1031, + 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1030, 1030, 1031, 1031, 1031, + + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1030, 1031, 1031, 1031, 1031, 1031, 1030, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1032, 1030, 1033, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1030, 1031, 1031, 1031, 1031, + 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1030, 1034, 1031, 1031, 1031, 1035, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1030, 1031, 1031, 1031, 1030, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1030, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1030, + + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1030, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1030, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1030, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 0, + 1030, 1030, 1030, 1030, 1030 } ; -static yyconst short int yy_nxt[1361] = +static yyconst short int yy_nxt[1374] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 32, 32, 4, 32, 32, - 32, 32, 32, 45, 46, 32, 32, 32, 32, 47, - 32, 48, 49, 32, 32, 32, 50, 32, 32, 51, - 32, 32, 32, 32, 52, 53, 54, 54, 56, 54, - 54, 58, 54, 57, 57, 57, 57, 57, 59, 60, - 765, 62, 54, 55, 55, 54, 55, 55, 54, 55, - - 54, 61, 63, 70, 54, 54, 54, 71, 81, 55, - 77, 766, 55, 767, 54, 55, 72, 55, 222, 223, - 54, 55, 55, 55, 64, 83, 65, 65, 65, 65, - 65, 55, 78, 768, 282, 769, 54, 55, 54, 283, - 79, 66, 73, 74, 54, 75, 75, 75, 75, 75, - 81, 82, 81, 55, 67, 68, 69, 54, 81, 76, - 81, 55, 123, 104, 135, 81, 81, 83, 278, 83, - 84, 105, 81, 89, 55, 83, 85, 83, 770, 136, - 212, 90, 83, 83, 285, 76, 91, 279, 129, 83, - 86, 87, 88, 106, 137, 92, 184, 107, 213, 199, - - 286, 93, 94, 138, 81, 108, 81, 110, 109, 81, - 95, 124, 116, 96, 81, 111, 97, 112, 192, 225, - 117, 83, 54, 83, 194, 98, 83, 226, 99, 81, - 654, 83, 100, 81, 655, 101, 102, 81, 118, 55, - 113, 103, 114, 81, 126, 81, 83, 81, 119, 120, - 83, 121, 115, 130, 83, 291, 125, 122, 127, 140, - 83, 292, 83, 81, 83, 128, 57, 57, 57, 57, - 57, 131, 142, 81, 81, 132, 139, 143, 175, 133, - 83, 265, 496, 497, 134, 141, 188, 144, 266, 81, - 83, 83, 81, 81, 145, 146, 54, 147, 150, 81, - - 148, 176, 151, 149, 771, 182, 83, 81, 177, 83, - 83, 152, 178, 55, 179, 180, 83, 153, 81, 772, - 81, 186, 245, 154, 83, 183, 773, 155, 246, 185, - 187, 156, 247, 157, 158, 83, 181, 83, 65, 65, - 65, 65, 65, 230, 189, 191, 231, 232, 190, 280, - 159, 300, 196, 233, 361, 571, 160, 161, 327, 301, - 162, 163, 281, 303, 572, 164, 165, 166, 201, 201, - 201, 201, 201, 328, 329, 774, 81, 304, 196, 775, - 364, 776, 202, 365, 362, 167, 576, 577, 168, 169, - 170, 171, 172, 83, 204, 204, 204, 204, 204, 74, - - 173, 75, 75, 75, 75, 75, 203, 203, 202, 777, - 204, 204, 204, 204, 204, 76, 174, 317, 317, 778, - 413, 318, 318, 318, 318, 318, 201, 201, 201, 201, - 201, 320, 320, 414, 779, 321, 321, 321, 321, 321, - 319, 76, 204, 204, 204, 204, 204, 427, 780, 432, - 781, 782, 428, 318, 318, 318, 318, 318, 783, 429, - 616, 433, 580, 434, 435, 617, 319, 436, 318, 318, - 318, 318, 318, 443, 443, 581, 784, 444, 444, 444, - 444, 444, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 444, 444, 444, 444, 444, 444, 444, 444, - - 444, 444, 582, 785, 786, 787, 788, 790, 791, 792, - 789, 794, 583, 795, 796, 797, 584, 798, 799, 800, - 801, 802, 803, 804, 793, 805, 806, 807, 808, 809, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 32, + 39, 40, 41, 42, 43, 44, 32, 32, 4, 32, + 32, 32, 32, 32, 45, 46, 32, 32, 32, 32, + 47, 32, 48, 49, 32, 32, 32, 50, 32, 32, + 51, 32, 32, 32, 32, 52, 53, 54, 54, 56, + 54, 58, 372, 54, 54, 57, 57, 57, 57, 57, + 59, 60, 54, 62, 54, 55, 55, 54, 55, 276, + + 54, 55, 55, 61, 63, 210, 277, 54, 54, 54, + 55, 776, 55, 373, 81, 55, 123, 64, 55, 65, + 65, 65, 65, 65, 70, 55, 55, 55, 71, 77, + 205, 54, 83, 54, 66, 78, 289, 72, 777, 54, + 74, 54, 75, 75, 75, 75, 75, 81, 67, 68, + 69, 55, 81, 82, 54, 290, 76, 55, 79, 55, + 81, 778, 54, 89, 73, 83, 104, 236, 81, 81, + 83, 90, 55, 84, 105, 237, 91, 203, 83, 85, + 55, 54, 81, 76, 81, 92, 83, 83, 233, 234, + 81, 93, 124, 86, 87, 88, 94, 106, 81, 55, + + 83, 107, 83, 779, 95, 302, 129, 96, 83, 108, + 97, 303, 109, 116, 81, 81, 83, 81, 110, 81, + 98, 117, 196, 99, 182, 81, 111, 100, 112, 81, + 101, 102, 83, 83, 314, 83, 103, 83, 125, 81, + 118, 126, 81, 83, 140, 507, 508, 83, 130, 315, + 119, 120, 113, 121, 114, 127, 194, 83, 139, 122, + 83, 135, 128, 81, 115, 81, 81, 131, 81, 81, + 141, 132, 193, 81, 780, 133, 136, 311, 81, 223, + 134, 83, 142, 83, 83, 312, 83, 83, 143, 81, + 150, 83, 137, 195, 151, 197, 83, 224, 144, 54, + + 781, 138, 782, 152, 198, 145, 146, 83, 147, 153, + 291, 148, 424, 199, 149, 81, 200, 55, 201, 296, + 154, 155, 293, 292, 156, 425, 665, 294, 157, 158, + 666, 159, 160, 83, 783, 297, 338, 161, 57, 57, + 57, 57, 57, 65, 65, 65, 65, 65, 162, 202, + 256, 784, 339, 340, 163, 164, 257, 207, 165, 166, + 258, 438, 785, 167, 168, 169, 439, 212, 212, 212, + 212, 212, 241, 440, 81, 242, 243, 587, 588, 170, + 171, 213, 244, 172, 207, 786, 173, 174, 175, 176, + 177, 178, 83, 787, 375, 788, 179, 376, 74, 180, + + 75, 75, 75, 75, 75, 214, 214, 591, 213, 215, + 215, 215, 215, 215, 76, 181, 81, 582, 183, 627, + 592, 184, 185, 789, 628, 186, 583, 593, 790, 187, + 188, 791, 189, 190, 83, 792, 793, 594, 191, 328, + 328, 76, 595, 329, 329, 329, 329, 329, 212, 212, + 212, 212, 212, 794, 192, 795, 796, 797, 798, 331, + 331, 801, 330, 332, 332, 332, 332, 332, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 443, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 330, + 444, 802, 445, 446, 454, 454, 447, 805, 455, 455, + + 455, 455, 455, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 455, 455, 455, 455, 455, 455, 455, + 455, 455, 455, 799, 803, 806, 807, 800, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, - 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, - 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, - 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, - 851, 850, 850, 853, 850, 850, 850, 850, 850, 850, - 850, 850, 850, 850, 854, 855, 856, 857, 858, 850, - 850, 850, 850, 850, 859, 860, 861, 862, 863, 864, - - 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, - 875, 876, 878, 879, 881, 882, 883, 884, 850, 885, - 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, - 906, 907, 908, 909, 910, 850, 850, 877, 877, 911, - 877, 877, 877, 877, 877, 877, 877, 877, 877, 877, - 912, 913, 914, 915, 916, 877, 877, 877, 877, 877, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, - 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 940, 877, 941, 942, 943, 944, 945, - - 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, - 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, - 966, 877, 877, 967, 968, 969, 970, 971, 972, 973, - 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, - 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, - 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, - 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, - 1014, 1015, 1016, 1017, 1018, 80, 850, 764, 850, 852, - 763, 852, 877, 762, 877, 880, 761, 880, 760, 759, - 758, 757, 756, 755, 754, 753, 752, 751, 750, 749, - - 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, - 738, 737, 736, 735, 734, 733, 732, 731, 730, 729, - 728, 727, 726, 725, 724, 723, 722, 721, 720, 719, - 718, 717, 716, 715, 714, 713, 712, 711, 710, 709, - 708, 707, 706, 705, 704, 703, 702, 701, 700, 699, - 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, - 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, - 678, 677, 676, 675, 674, 673, 672, 671, 670, 669, - 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, - 658, 657, 656, 653, 652, 651, 650, 649, 648, 647, - - 646, 645, 644, 643, 642, 641, 640, 639, 638, 637, - 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, - 626, 625, 624, 623, 622, 621, 620, 619, 618, 615, - 614, 613, 612, 611, 610, 609, 608, 607, 606, 605, - 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, - 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, - 579, 578, 575, 574, 573, 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, 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, 452, 451, 450, 449, 448, 447, 446, 445, 442, - 441, 440, 439, 438, 437, 431, 430, 426, 425, 424, - - 423, 422, 421, 420, 419, 418, 417, 416, 415, 412, - 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, - 401, 400, 399, 398, 397, 396, 395, 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, 363, 360, 359, 358, - 357, 356, 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, 326, 325, - 324, 323, 322, 316, 315, 314, 313, 312, 311, 310, - - 309, 308, 307, 306, 305, 302, 299, 298, 297, 296, - 295, 294, 293, 290, 289, 288, 287, 284, 277, 276, - 275, 274, 273, 272, 271, 270, 269, 268, 267, 264, - 263, 262, 261, 260, 259, 258, 257, 256, 255, 254, - 253, 252, 251, 250, 249, 248, 244, 243, 242, 241, - 240, 239, 238, 237, 236, 235, 234, 229, 228, 227, - 224, 221, 220, 219, 218, 217, 216, 215, 214, 211, - 210, 209, 208, 207, 206, 205, 200, 198, 197, 195, - 194, 193, 1019, 3, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019 + 804, 820, 821, 822, 823, 824, 825, 826, 827, 828, + 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, + 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, + 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, + 859, 860, 862, 861, 861, 864, 861, 861, 861, 861, + 861, 861, 861, 861, 861, 861, 865, 866, 867, 868, + + 869, 861, 861, 861, 861, 861, 870, 871, 872, 873, + 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, + 884, 885, 886, 887, 889, 890, 892, 893, 894, 895, + 896, 861, 897, 898, 899, 900, 901, 902, 903, 904, + 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 922, 861, 861, + 888, 888, 923, 888, 888, 888, 888, 888, 888, 888, + 888, 888, 888, 924, 925, 926, 927, 928, 888, 888, + 888, 888, 888, 929, 930, 931, 932, 933, 934, 935, + 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, + + 946, 947, 948, 949, 950, 951, 952, 953, 888, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, + 975, 976, 977, 978, 979, 888, 888, 980, 981, 982, + 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, + 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, + 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, + 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, + 1023, 1024, 1025, 1026, 1027, 1028, 1029, 80, 861, 775, + 861, 863, 774, 863, 888, 773, 888, 891, 772, 891, + + 771, 770, 769, 768, 767, 766, 765, 764, 763, 762, + 761, 760, 759, 758, 757, 756, 755, 754, 753, 752, + 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, + 741, 740, 739, 738, 737, 736, 735, 734, 733, 732, + 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, + 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, + 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, + 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, + 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, + 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, + + 671, 670, 669, 668, 667, 664, 663, 662, 661, 660, + 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, + 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, + 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, + 629, 626, 625, 624, 623, 622, 621, 620, 619, 618, + 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, + 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, + 597, 596, 590, 589, 586, 585, 584, 581, 580, 579, + 578, 577, 576, 575, 574, 573, 572, 571, 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, + 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, 453, 452, 451, 450, 449, 448, 442, 441, 437, + 436, 435, 434, 433, 432, 431, 430, 429, 428, 427, + 426, 423, 422, 421, 420, 419, 418, 417, 416, 415, + 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, + 404, 403, 402, 401, 400, 399, 398, 397, 396, 395, + 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, + 384, 383, 382, 381, 380, 379, 378, 377, 374, 371, + 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, + 360, 359, 358, 357, 356, 355, 354, 353, 352, 351, + 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, + + 337, 336, 335, 334, 333, 327, 326, 325, 324, 323, + 322, 321, 320, 319, 318, 317, 316, 313, 310, 309, + 308, 307, 306, 305, 304, 301, 300, 299, 298, 295, + 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, + 278, 275, 274, 273, 272, 271, 270, 269, 268, 267, + 266, 265, 264, 263, 262, 261, 260, 259, 255, 254, + 253, 252, 251, 250, 249, 248, 247, 246, 245, 240, + 239, 238, 235, 232, 231, 230, 229, 228, 227, 226, + 225, 222, 221, 220, 219, 218, 217, 216, 211, 209, + 208, 206, 205, 204, 1030, 3, 1030, 1030, 1030, 1030, + + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030 } ; -static yyconst short int yy_chk[1361] = +static yyconst short int yy_chk[1374] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -841,148 +846,150 @@ static yyconst short int yy_chk[1361] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 5, 7, 8, - 11, 10, 7, 9, 9, 9, 9, 9, 12, 13, - 715, 14, 12, 4, 5, 9, 8, 11, 18, 7, - - 10, 13, 14, 16, 19, 13, 14, 16, 32, 12, - 20, 716, 9, 717, 20, 18, 16, 10, 97, 97, - 16, 19, 13, 14, 15, 32, 15, 15, 15, 15, - 15, 20, 21, 718, 149, 720, 21, 16, 15, 149, - 22, 15, 16, 17, 22, 17, 17, 17, 17, 17, - 23, 23, 33, 21, 15, 15, 15, 17, 24, 17, - 29, 22, 29, 26, 35, 26, 35, 23, 147, 33, - 23, 26, 46, 24, 17, 24, 23, 29, 721, 35, - 88, 24, 26, 35, 151, 17, 24, 147, 33, 46, - 23, 23, 23, 26, 35, 24, 46, 26, 88, 68, - - 151, 24, 25, 35, 25, 26, 27, 27, 26, 30, - 25, 30, 28, 25, 28, 27, 25, 27, 53, 99, - 28, 25, 53, 27, 68, 25, 30, 99, 25, 31, - 576, 28, 25, 36, 576, 25, 25, 42, 28, 53, - 27, 25, 27, 49, 31, 37, 31, 34, 28, 28, - 36, 28, 27, 34, 42, 160, 30, 28, 31, 37, - 49, 160, 37, 38, 34, 31, 57, 57, 57, 57, - 57, 34, 38, 44, 39, 34, 36, 38, 42, 34, - 38, 134, 387, 387, 34, 37, 49, 38, 134, 45, - 44, 39, 47, 48, 38, 38, 52, 38, 39, 43, - - 38, 43, 39, 38, 722, 44, 45, 50, 43, 47, - 48, 39, 43, 52, 43, 43, 43, 39, 40, 723, - 51, 48, 115, 40, 50, 45, 726, 40, 115, 47, - 48, 40, 115, 40, 40, 40, 43, 51, 65, 65, - 65, 65, 65, 103, 50, 52, 103, 103, 51, 148, - 40, 174, 65, 103, 242, 474, 40, 40, 210, 174, - 40, 40, 148, 176, 474, 40, 41, 41, 74, 74, - 74, 74, 74, 210, 210, 727, 41, 176, 65, 728, - 244, 730, 74, 244, 242, 41, 478, 478, 41, 41, - 41, 41, 41, 41, 203, 203, 203, 203, 203, 75, - - 41, 75, 75, 75, 75, 75, 76, 76, 74, 731, - 76, 76, 76, 76, 76, 75, 41, 196, 196, 732, - 294, 196, 196, 196, 196, 196, 201, 201, 201, 201, - 201, 202, 202, 294, 733, 202, 202, 202, 202, 202, - 201, 75, 204, 204, 204, 204, 204, 307, 735, 310, - 736, 737, 307, 317, 317, 317, 317, 317, 738, 307, - 526, 310, 482, 310, 310, 526, 201, 310, 318, 318, - 318, 318, 318, 319, 319, 482, 739, 319, 319, 319, - 319, 319, 320, 320, 320, 320, 320, 321, 321, 321, - 321, 321, 443, 443, 443, 443, 443, 444, 444, 444, - - 444, 444, 483, 742, 743, 744, 745, 746, 747, 749, - 745, 750, 483, 751, 752, 753, 483, 754, 755, 756, - 758, 761, 763, 764, 749, 765, 766, 768, 769, 770, - 772, 773, 774, 775, 776, 778, 780, 781, 782, 784, - 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, - 795, 796, 797, 798, 800, 803, 805, 806, 807, 808, - 809, 810, 811, 812, 814, 815, 816, 817, 818, 819, - 821, 822, 822, 823, 822, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 824, 825, 826, 827, 828, 822, - 822, 822, 822, 822, 829, 830, 831, 832, 833, 834, - - 835, 836, 837, 839, 840, 841, 842, 843, 845, 846, - 847, 849, 853, 854, 856, 857, 858, 859, 822, 861, - 862, 863, 864, 865, 866, 867, 868, 870, 871, 872, - 873, 874, 875, 878, 881, 882, 883, 884, 885, 886, - 887, 888, 889, 890, 891, 822, 822, 855, 855, 893, - 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, - 895, 896, 897, 899, 900, 855, 855, 855, 855, 855, - 901, 902, 903, 904, 905, 906, 908, 909, 910, 911, - 912, 913, 914, 915, 916, 917, 918, 920, 922, 923, - 924, 925, 926, 927, 855, 928, 929, 930, 931, 932, - - 933, 934, 935, 939, 940, 941, 943, 944, 945, 946, - 947, 948, 949, 950, 951, 952, 954, 955, 956, 957, - 958, 855, 855, 959, 960, 961, 962, 963, 964, 967, - 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, - 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, - 988, 989, 991, 992, 993, 994, 995, 997, 998, 1000, - 1001, 1002, 1003, 1004, 1005, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 1014, 1016, 1017, 1020, 1021, 714, 1021, 1022, - 711, 1022, 1023, 710, 1023, 1024, 709, 1024, 708, 707, - 706, 705, 704, 703, 702, 701, 700, 699, 698, 697, - - 696, 695, 694, 693, 692, 691, 690, 689, 687, 686, - 684, 683, 682, 681, 680, 678, 676, 675, 674, 673, - 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, - 662, 661, 660, 659, 658, 656, 655, 653, 651, 650, - 649, 648, 646, 645, 644, 643, 642, 641, 640, 639, - 638, 637, 635, 633, 632, 631, 630, 629, 628, 624, - 623, 622, 620, 618, 617, 616, 615, 614, 613, 612, - 611, 609, 607, 604, 603, 600, 599, 598, 597, 594, - 593, 592, 589, 588, 586, 585, 584, 583, 582, 581, - 580, 579, 577, 574, 573, 572, 571, 570, 567, 566, - - 565, 564, 562, 561, 560, 559, 558, 557, 555, 552, - 551, 550, 549, 546, 545, 544, 543, 542, 541, 540, - 537, 536, 534, 533, 532, 531, 530, 529, 527, 525, - 524, 523, 522, 521, 520, 519, 518, 517, 515, 514, - 513, 512, 511, 508, 506, 505, 504, 501, 499, 498, - 497, 496, 495, 493, 492, 490, 489, 487, 486, 485, - 481, 479, 477, 476, 475, 473, 472, 471, 470, 469, - 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, - 458, 457, 456, 455, 454, 453, 451, 450, 449, 448, - 447, 446, 445, 442, 441, 440, 439, 438, 437, 434, - - 430, 429, 428, 427, 425, 424, 423, 422, 421, 420, - 418, 417, 416, 415, 414, 413, 411, 410, 408, 407, - 406, 405, 404, 402, 401, 400, 399, 398, 397, 396, - 395, 394, 393, 392, 391, 390, 389, 388, 386, 384, - 382, 381, 379, 378, 377, 376, 375, 374, 373, 371, - 369, 368, 367, 365, 364, 363, 362, 361, 360, 359, - 358, 356, 355, 354, 351, 350, 349, 348, 347, 345, - 343, 342, 341, 340, 339, 338, 336, 335, 334, 333, - 332, 331, 329, 328, 327, 325, 324, 323, 322, 316, - 315, 314, 313, 312, 311, 309, 308, 306, 305, 304, - - 303, 302, 301, 300, 299, 298, 297, 296, 295, 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, 256, 255, 254, 252, - 251, 250, 249, 248, 247, 245, 243, 241, 240, 239, - 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, - 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, - 218, 217, 216, 215, 214, 213, 212, 211, 209, 208, - 207, 206, 205, 194, 193, 190, 189, 188, 187, 186, - - 185, 184, 183, 182, 181, 175, 173, 170, 168, 164, - 163, 162, 161, 159, 154, 153, 152, 150, 145, 144, - 143, 142, 141, 140, 139, 138, 137, 136, 135, 133, - 132, 131, 130, 129, 128, 126, 125, 124, 123, 122, - 121, 120, 119, 118, 117, 116, 114, 113, 112, 111, - 110, 109, 108, 107, 106, 105, 104, 102, 101, 100, - 98, 96, 95, 94, 93, 92, 91, 90, 89, 87, - 86, 85, 84, 83, 82, 81, 69, 67, 66, 64, - 55, 54, 3, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019 + 1, 1, 1, 1, 1, 1, 1, 4, 5, 7, + 8, 10, 253, 7, 11, 9, 9, 9, 9, 9, + 12, 13, 18, 14, 12, 4, 5, 9, 8, 134, + + 10, 7, 11, 13, 14, 68, 134, 13, 14, 19, + 18, 726, 12, 253, 29, 9, 29, 15, 10, 15, + 15, 15, 15, 15, 16, 13, 14, 19, 16, 20, + 68, 15, 29, 20, 15, 21, 147, 16, 727, 21, + 17, 16, 17, 17, 17, 17, 17, 24, 15, 15, + 15, 20, 23, 23, 17, 147, 17, 21, 22, 16, + 32, 728, 22, 24, 16, 24, 26, 99, 26, 33, + 23, 24, 17, 23, 26, 99, 24, 53, 32, 23, + 22, 53, 42, 17, 47, 24, 26, 33, 97, 97, + 30, 24, 30, 23, 23, 23, 25, 26, 25, 53, + + 42, 26, 47, 729, 25, 163, 33, 25, 30, 26, + 25, 163, 26, 28, 36, 28, 25, 27, 27, 45, + 25, 28, 47, 25, 42, 31, 27, 25, 27, 37, + 25, 25, 36, 28, 183, 27, 25, 45, 30, 44, + 28, 31, 34, 31, 37, 398, 398, 37, 34, 183, + 28, 28, 27, 28, 27, 31, 45, 44, 36, 28, + 34, 35, 31, 35, 27, 39, 48, 34, 46, 49, + 37, 34, 44, 38, 731, 34, 35, 181, 50, 88, + 34, 35, 38, 39, 48, 181, 46, 49, 38, 51, + 39, 38, 35, 46, 39, 48, 50, 88, 38, 52, + + 732, 35, 733, 39, 48, 38, 38, 51, 38, 39, + 148, 38, 305, 49, 38, 40, 50, 52, 51, 151, + 40, 40, 149, 148, 40, 305, 587, 149, 40, 40, + 587, 40, 40, 40, 734, 151, 221, 40, 57, 57, + 57, 57, 57, 65, 65, 65, 65, 65, 40, 52, + 115, 737, 221, 221, 40, 40, 115, 65, 40, 40, + 115, 318, 738, 40, 41, 41, 318, 74, 74, 74, + 74, 74, 103, 318, 41, 103, 103, 489, 489, 41, + 41, 74, 103, 41, 65, 739, 41, 41, 41, 41, + 41, 41, 41, 741, 255, 742, 41, 255, 75, 41, + + 75, 75, 75, 75, 75, 76, 76, 493, 74, 76, + 76, 76, 76, 76, 75, 41, 43, 485, 43, 537, + 493, 43, 43, 743, 537, 43, 485, 494, 744, 43, + 43, 746, 43, 43, 43, 747, 748, 494, 43, 207, + 207, 75, 494, 207, 207, 207, 207, 207, 212, 212, + 212, 212, 212, 749, 43, 750, 753, 754, 755, 213, + 213, 757, 212, 213, 213, 213, 213, 213, 214, 214, + 214, 214, 214, 215, 215, 215, 215, 215, 321, 328, + 328, 328, 328, 328, 329, 329, 329, 329, 329, 212, + 321, 758, 321, 321, 330, 330, 321, 761, 330, 330, + + 330, 330, 330, 331, 331, 331, 331, 331, 332, 332, + 332, 332, 332, 454, 454, 454, 454, 454, 455, 455, + 455, 455, 455, 756, 760, 762, 763, 756, 764, 765, + 766, 767, 769, 772, 774, 775, 776, 777, 779, 780, + 760, 781, 783, 784, 785, 786, 787, 789, 791, 792, + 793, 795, 796, 797, 798, 799, 800, 801, 802, 803, + 804, 805, 806, 807, 808, 809, 811, 814, 816, 817, + 818, 819, 820, 821, 822, 823, 825, 826, 827, 828, + 829, 830, 832, 833, 833, 834, 833, 833, 833, 833, + 833, 833, 833, 833, 833, 833, 835, 836, 837, 838, + + 839, 833, 833, 833, 833, 833, 840, 841, 842, 843, + 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, + 856, 857, 858, 860, 864, 865, 867, 868, 869, 870, + 872, 833, 873, 874, 875, 876, 877, 878, 879, 881, + 882, 883, 884, 885, 886, 889, 892, 893, 894, 895, + 896, 897, 898, 899, 900, 901, 902, 904, 833, 833, + 866, 866, 906, 866, 866, 866, 866, 866, 866, 866, + 866, 866, 866, 907, 908, 910, 911, 912, 866, 866, + 866, 866, 866, 913, 914, 915, 916, 917, 919, 920, + 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, + + 933, 934, 935, 936, 937, 938, 939, 940, 866, 941, + 942, 943, 944, 945, 946, 950, 951, 952, 954, 955, + 956, 957, 958, 959, 960, 961, 962, 963, 965, 966, + 967, 968, 969, 970, 971, 866, 866, 972, 973, 974, + 975, 978, 979, 980, 981, 982, 983, 984, 985, 986, + 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, + 997, 998, 999, 1000, 1002, 1003, 1004, 1005, 1006, 1008, + 1009, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1020, + 1021, 1022, 1023, 1024, 1025, 1027, 1028, 1031, 1032, 725, + 1032, 1033, 722, 1033, 1034, 721, 1034, 1035, 720, 1035, + + 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, + 709, 708, 707, 706, 705, 704, 703, 702, 701, 700, + 698, 697, 695, 694, 693, 692, 691, 689, 687, 686, + 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, + 675, 674, 673, 672, 671, 670, 669, 667, 666, 664, + 662, 661, 660, 659, 657, 656, 655, 654, 653, 652, + 651, 650, 649, 648, 646, 644, 643, 642, 641, 640, + 639, 635, 634, 633, 631, 629, 628, 627, 626, 625, + 624, 623, 622, 620, 618, 615, 614, 611, 610, 609, + 608, 605, 604, 603, 600, 599, 597, 596, 595, 594, + + 593, 592, 591, 590, 588, 585, 584, 583, 582, 581, + 578, 577, 576, 575, 573, 572, 571, 570, 569, 568, + 566, 563, 562, 561, 560, 557, 556, 555, 554, 553, + 552, 551, 548, 547, 545, 544, 543, 542, 541, 540, + 538, 536, 535, 534, 533, 532, 531, 530, 529, 528, + 526, 525, 524, 523, 522, 519, 517, 516, 515, 512, + 510, 509, 508, 507, 506, 504, 503, 501, 500, 498, + 497, 496, 492, 490, 488, 487, 486, 484, 483, 482, + 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, + 471, 470, 469, 468, 467, 466, 465, 464, 462, 461, + + 460, 459, 458, 457, 456, 453, 452, 451, 450, 449, + 448, 445, 441, 440, 439, 438, 436, 435, 434, 433, + 432, 431, 429, 428, 427, 426, 425, 424, 422, 421, + 419, 418, 417, 416, 415, 413, 412, 411, 410, 409, + 408, 407, 406, 405, 404, 403, 402, 401, 400, 399, + 397, 395, 393, 392, 390, 389, 388, 387, 386, 385, + 384, 382, 380, 379, 378, 376, 375, 374, 373, 372, + 371, 370, 369, 367, 366, 365, 362, 361, 360, 359, + 358, 356, 354, 353, 352, 351, 350, 349, 347, 346, + 345, 344, 343, 342, 340, 339, 338, 336, 335, 334, + + 333, 327, 326, 325, 324, 323, 322, 320, 319, 317, + 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, + 306, 304, 303, 302, 301, 300, 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, 263, 262, 261, 260, 259, 258, 256, 254, 252, + 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, + 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, + 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, + + 220, 219, 218, 217, 216, 205, 204, 201, 200, 199, + 198, 197, 196, 195, 194, 193, 192, 182, 180, 176, + 173, 167, 166, 165, 164, 162, 154, 153, 152, 150, + 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, + 135, 133, 132, 131, 130, 129, 128, 126, 125, 124, + 123, 122, 121, 120, 119, 118, 117, 116, 114, 113, + 112, 111, 110, 109, 108, 107, 106, 105, 104, 102, + 101, 100, 98, 96, 95, 94, 93, 92, 91, 90, + 89, 87, 86, 85, 84, 83, 82, 81, 69, 67, + 66, 64, 55, 54, 3, 1030, 1030, 1030, 1030, 1030, + + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030 } ; static yy_state_type yy_last_accepting_state; @@ -1000,7 +1007,7 @@ char *yytext; #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.141 2002-05-20 18:28:29 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.142 2002-09-01 21:54:13 geuzaine Exp $ // // Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle // @@ -1030,7 +1037,7 @@ char *yytext; #include "Numeric.h" #include "Geo.h" #include "CAD.h" -#include "Gmsh.tab.cpp.h" +#include "Gmsh.tab.hpp" char TmpString[1024]; int yywhere = INFILE; @@ -1062,7 +1069,7 @@ void skipline(void); && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); -#line 1063 "Gmsh.yy.cpp" +#line 1073 "Gmsh.yy.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1213,10 +1220,10 @@ YY_DECL register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; -#line 79 "Gmsh.l" +#line 82 "Gmsh.l" -#line 1217 "Gmsh.yy.cpp" +#line 1227 "Gmsh.yy.cpp" if ( yy_init ) { @@ -1267,13 +1274,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 >= 1020 ) + if ( yy_current_state >= 1031 ) 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] != 1284 ); + while ( yy_base[yy_current_state] != 1296 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1301,956 +1308,1016 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 81 "Gmsh.l" +#line 84 "Gmsh.l" /* none */ ; YY_BREAK case 2: YY_RULE_SETUP -#line 82 "Gmsh.l" +#line 85 "Gmsh.l" return tEND; YY_BREAK case 3: YY_RULE_SETUP -#line 83 "Gmsh.l" +#line 86 "Gmsh.l" skipcomments(); YY_BREAK case 4: YY_RULE_SETUP -#line 84 "Gmsh.l" +#line 87 "Gmsh.l" skipline(); YY_BREAK case 5: YY_RULE_SETUP -#line 85 "Gmsh.l" +#line 88 "Gmsh.l" {parsestring('\"'); return tBIGSTR;} YY_BREAK case 6: YY_RULE_SETUP -#line 86 "Gmsh.l" +#line 89 "Gmsh.l" {parsestring('\''); return tBIGSTR;} YY_BREAK case 7: YY_RULE_SETUP -#line 87 "Gmsh.l" +#line 90 "Gmsh.l" {yylval.d = NEWREG(); return tDOUBLE;} YY_BREAK case 8: YY_RULE_SETUP -#line 88 "Gmsh.l" +#line 91 "Gmsh.l" {yylval.d = NEWPOINT(); return tDOUBLE;} YY_BREAK case 9: YY_RULE_SETUP -#line 89 "Gmsh.l" +#line 92 "Gmsh.l" {yylval.d = NEWLINE(); return tDOUBLE;} YY_BREAK case 10: YY_RULE_SETUP -#line 90 "Gmsh.l" +#line 93 "Gmsh.l" {yylval.d = NEWSURFACE(); return tDOUBLE;} YY_BREAK case 11: YY_RULE_SETUP -#line 91 "Gmsh.l" +#line 94 "Gmsh.l" {yylval.d = NEWVOLUME(); return tDOUBLE;} YY_BREAK case 12: YY_RULE_SETUP -#line 92 "Gmsh.l" +#line 95 "Gmsh.l" return tAFFECT; YY_BREAK case 13: YY_RULE_SETUP -#line 93 "Gmsh.l" +#line 96 "Gmsh.l" return tAFFECTPLUS ; YY_BREAK case 14: YY_RULE_SETUP -#line 94 "Gmsh.l" +#line 97 "Gmsh.l" return tAFFECTMINUS ; YY_BREAK case 15: YY_RULE_SETUP -#line 95 "Gmsh.l" +#line 98 "Gmsh.l" return tAFFECTTIMES ; YY_BREAK case 16: YY_RULE_SETUP -#line 96 "Gmsh.l" +#line 99 "Gmsh.l" return tAFFECTDIVIDE ; YY_BREAK case 17: YY_RULE_SETUP -#line 97 "Gmsh.l" +#line 100 "Gmsh.l" return tDOTS; YY_BREAK case 18: YY_RULE_SETUP -#line 98 "Gmsh.l" +#line 101 "Gmsh.l" return tDOTS; YY_BREAK case 19: YY_RULE_SETUP -#line 99 "Gmsh.l" +#line 102 "Gmsh.l" return tCROSSPRODUCT ; YY_BREAK case 20: YY_RULE_SETUP -#line 100 "Gmsh.l" +#line 103 "Gmsh.l" return tOR ; YY_BREAK case 21: YY_RULE_SETUP -#line 101 "Gmsh.l" +#line 104 "Gmsh.l" return tAND ; YY_BREAK case 22: YY_RULE_SETUP -#line 102 "Gmsh.l" +#line 105 "Gmsh.l" return tPLUSPLUS ; YY_BREAK case 23: YY_RULE_SETUP -#line 103 "Gmsh.l" +#line 106 "Gmsh.l" return tMINUSMINUS ; YY_BREAK case 24: YY_RULE_SETUP -#line 104 "Gmsh.l" +#line 107 "Gmsh.l" return tEQUAL ; YY_BREAK case 25: YY_RULE_SETUP -#line 105 "Gmsh.l" +#line 108 "Gmsh.l" return tNOTEQUAL ; YY_BREAK case 26: YY_RULE_SETUP -#line 106 "Gmsh.l" +#line 109 "Gmsh.l" return tAPPROXEQUAL ; YY_BREAK case 27: YY_RULE_SETUP -#line 107 "Gmsh.l" +#line 110 "Gmsh.l" return tLESSOREQUAL ; YY_BREAK case 28: YY_RULE_SETUP -#line 108 "Gmsh.l" +#line 111 "Gmsh.l" return tGREATEROREQUAL ; YY_BREAK case 29: YY_RULE_SETUP -#line 110 "Gmsh.l" +#line 113 "Gmsh.l" return tAcos ; YY_BREAK case 30: YY_RULE_SETUP -#line 111 "Gmsh.l" +#line 114 "Gmsh.l" return tAcos ; YY_BREAK case 31: YY_RULE_SETUP -#line 112 "Gmsh.l" +#line 115 "Gmsh.l" return tAsin; YY_BREAK case 32: YY_RULE_SETUP -#line 113 "Gmsh.l" +#line 116 "Gmsh.l" return tAsin; YY_BREAK case 33: YY_RULE_SETUP -#line 114 "Gmsh.l" +#line 117 "Gmsh.l" return tAtan ; YY_BREAK case 34: YY_RULE_SETUP -#line 115 "Gmsh.l" +#line 118 "Gmsh.l" return tAtan ; YY_BREAK case 35: YY_RULE_SETUP -#line 116 "Gmsh.l" +#line 119 "Gmsh.l" return tAtan2 ; YY_BREAK case 36: YY_RULE_SETUP -#line 117 "Gmsh.l" +#line 120 "Gmsh.l" return tAtan2 ; YY_BREAK case 37: YY_RULE_SETUP -#line 118 "Gmsh.l" +#line 121 "Gmsh.l" return tAttractor; YY_BREAK case 38: YY_RULE_SETUP -#line 120 "Gmsh.l" +#line 123 "Gmsh.l" return tBezier; YY_BREAK case 39: YY_RULE_SETUP -#line 121 "Gmsh.l" +#line 124 "Gmsh.l" return tBump; YY_BREAK case 40: YY_RULE_SETUP -#line 122 "Gmsh.l" +#line 125 "Gmsh.l" return tBSpline; YY_BREAK case 41: YY_RULE_SETUP -#line 123 "Gmsh.l" +#line 126 "Gmsh.l" return tBounds; YY_BREAK case 42: YY_RULE_SETUP -#line 125 "Gmsh.l" +#line 128 "Gmsh.l" return tCeil ; YY_BREAK case 43: YY_RULE_SETUP -#line 126 "Gmsh.l" +#line 129 "Gmsh.l" return tCosh ; YY_BREAK case 44: YY_RULE_SETUP -#line 127 "Gmsh.l" +#line 130 "Gmsh.l" return tCos ; YY_BREAK case 45: YY_RULE_SETUP -#line 128 "Gmsh.l" +#line 131 "Gmsh.l" return tCharacteristic; YY_BREAK case 46: YY_RULE_SETUP -#line 129 "Gmsh.l" +#line 132 "Gmsh.l" return tCircle; YY_BREAK case 47: YY_RULE_SETUP -#line 130 "Gmsh.l" +#line 133 "Gmsh.l" return tCoherence; YY_BREAK case 48: YY_RULE_SETUP -#line 131 "Gmsh.l" +#line 134 "Gmsh.l" return tComplex; YY_BREAK case 49: YY_RULE_SETUP -#line 132 "Gmsh.l" +#line 135 "Gmsh.l" return tColor; YY_BREAK case 50: YY_RULE_SETUP -#line 133 "Gmsh.l" +#line 136 "Gmsh.l" return tColorTable; YY_BREAK case 51: YY_RULE_SETUP -#line 134 "Gmsh.l" +#line 137 "Gmsh.l" return tSpline; YY_BREAK case 52: YY_RULE_SETUP -#line 135 "Gmsh.l" +#line 138 "Gmsh.l" return tCall; YY_BREAK case 53: YY_RULE_SETUP -#line 137 "Gmsh.l" +#line 140 "Gmsh.l" return tDelete; YY_BREAK case 54: YY_RULE_SETUP -#line 138 "Gmsh.l" +#line 141 "Gmsh.l" return tDilate; YY_BREAK case 55: YY_RULE_SETUP -#line 139 "Gmsh.l" +#line 142 "Gmsh.l" return tDuplicata; YY_BREAK case 56: YY_RULE_SETUP -#line 140 "Gmsh.l" +#line 143 "Gmsh.l" return tDraw; YY_BREAK case 57: YY_RULE_SETUP -#line 142 "Gmsh.l" +#line 145 "Gmsh.l" return tExp ; YY_BREAK case 58: YY_RULE_SETUP -#line 143 "Gmsh.l" +#line 146 "Gmsh.l" return tEllipse; YY_BREAK case 59: YY_RULE_SETUP -#line 144 "Gmsh.l" +#line 147 "Gmsh.l" return tEllipse; YY_BREAK case 60: YY_RULE_SETUP -#line 145 "Gmsh.l" +#line 148 "Gmsh.l" return tExtrude; YY_BREAK case 61: YY_RULE_SETUP -#line 146 "Gmsh.l" +#line 149 "Gmsh.l" return tElliptic; YY_BREAK case 62: YY_RULE_SETUP -#line 147 "Gmsh.l" +#line 150 "Gmsh.l" return tELLIPSE; YY_BREAK case 63: YY_RULE_SETUP -#line 148 "Gmsh.l" +#line 151 "Gmsh.l" return tEndFor; YY_BREAK case 64: YY_RULE_SETUP -#line 149 "Gmsh.l" +#line 152 "Gmsh.l" return tEndIf; YY_BREAK case 65: YY_RULE_SETUP -#line 150 "Gmsh.l" +#line 153 "Gmsh.l" return tExit; YY_BREAK case 66: YY_RULE_SETUP -#line 152 "Gmsh.l" +#line 155 "Gmsh.l" return tFabs ; YY_BREAK case 67: YY_RULE_SETUP -#line 153 "Gmsh.l" +#line 156 "Gmsh.l" return tFloor ; YY_BREAK case 68: YY_RULE_SETUP -#line 154 "Gmsh.l" +#line 157 "Gmsh.l" return tFmod ; YY_BREAK case 69: YY_RULE_SETUP -#line 155 "Gmsh.l" +#line 158 "Gmsh.l" return tFor; YY_BREAK case 70: YY_RULE_SETUP -#line 156 "Gmsh.l" +#line 159 "Gmsh.l" return tFunction; YY_BREAK case 71: YY_RULE_SETUP -#line 158 "Gmsh.l" +#line 161 "Gmsh.l" return tHypot ; YY_BREAK case 72: YY_RULE_SETUP -#line 160 "Gmsh.l" +#line 163 "Gmsh.l" return tIn; YY_BREAK case 73: YY_RULE_SETUP -#line 161 "Gmsh.l" +#line 164 "Gmsh.l" return tIf; YY_BREAK case 74: YY_RULE_SETUP -#line 162 "Gmsh.l" +#line 165 "Gmsh.l" return tIntersect; YY_BREAK case 75: YY_RULE_SETUP -#line 164 "Gmsh.l" +#line 167 "Gmsh.l" return tKnots; YY_BREAK case 76: YY_RULE_SETUP -#line 166 "Gmsh.l" +#line 169 "Gmsh.l" return tLength; YY_BREAK case 77: YY_RULE_SETUP -#line 167 "Gmsh.l" +#line 170 "Gmsh.l" return tLine; YY_BREAK case 78: YY_RULE_SETUP -#line 168 "Gmsh.l" +#line 171 "Gmsh.l" return tLoop; YY_BREAK case 79: YY_RULE_SETUP -#line 169 "Gmsh.l" +#line 172 "Gmsh.l" return tLog ; YY_BREAK case 80: YY_RULE_SETUP -#line 170 "Gmsh.l" +#line 173 "Gmsh.l" return tLog10 ; YY_BREAK case 81: YY_RULE_SETUP -#line 171 "Gmsh.l" +#line 174 "Gmsh.l" return tLayers; YY_BREAK case 82: YY_RULE_SETUP -#line 173 "Gmsh.l" +#line 176 "Gmsh.l" return tModulo ; YY_BREAK case 83: YY_RULE_SETUP -#line 174 "Gmsh.l" +#line 177 "Gmsh.l" return tMesh; YY_BREAK case 84: YY_RULE_SETUP -#line 175 "Gmsh.l" +#line 178 "Gmsh.l" return tMPI_Rank; YY_BREAK case 85: YY_RULE_SETUP -#line 176 "Gmsh.l" +#line 179 "Gmsh.l" return tMPI_Size; YY_BREAK case 86: YY_RULE_SETUP -#line 178 "Gmsh.l" +#line 181 "Gmsh.l" return tNurbs; YY_BREAK case 87: YY_RULE_SETUP -#line 180 "Gmsh.l" +#line 183 "Gmsh.l" return tOrder; YY_BREAK case 88: YY_RULE_SETUP -#line 182 "Gmsh.l" +#line 185 "Gmsh.l" return tPhysical; YY_BREAK case 89: YY_RULE_SETUP -#line 183 "Gmsh.l" +#line 186 "Gmsh.l" return tPi; YY_BREAK case 90: YY_RULE_SETUP -#line 184 "Gmsh.l" +#line 187 "Gmsh.l" return tPlane; YY_BREAK case 91: YY_RULE_SETUP -#line 185 "Gmsh.l" +#line 188 "Gmsh.l" return tPoint; YY_BREAK case 92: YY_RULE_SETUP -#line 186 "Gmsh.l" +#line 189 "Gmsh.l" return tProgression; YY_BREAK case 93: YY_RULE_SETUP -#line 187 "Gmsh.l" +#line 190 "Gmsh.l" return tProgression; YY_BREAK case 94: YY_RULE_SETUP -#line 188 "Gmsh.l" +#line 191 "Gmsh.l" return tParametric; YY_BREAK case 95: YY_RULE_SETUP -#line 189 "Gmsh.l" +#line 192 "Gmsh.l" return tPrintf; YY_BREAK case 96: YY_RULE_SETUP -#line 190 "Gmsh.l" +#line 193 "Gmsh.l" return tPlugin; YY_BREAK case 97: YY_RULE_SETUP -#line 192 "Gmsh.l" +#line 195 "Gmsh.l" return tRecombine; YY_BREAK case 98: YY_RULE_SETUP -#line 193 "Gmsh.l" +#line 196 "Gmsh.l" return tRotate; YY_BREAK case 99: YY_RULE_SETUP -#line 194 "Gmsh.l" +#line 197 "Gmsh.l" return tRuled; YY_BREAK case 100: YY_RULE_SETUP -#line 195 "Gmsh.l" +#line 198 "Gmsh.l" return tRand; YY_BREAK case 101: YY_RULE_SETUP -#line 196 "Gmsh.l" +#line 199 "Gmsh.l" return tReturn; YY_BREAK case 102: YY_RULE_SETUP -#line 198 "Gmsh.l" +#line 201 "Gmsh.l" return tSqrt ; YY_BREAK case 103: YY_RULE_SETUP -#line 199 "Gmsh.l" +#line 202 "Gmsh.l" return tSin ; YY_BREAK case 104: YY_RULE_SETUP -#line 200 "Gmsh.l" +#line 203 "Gmsh.l" return tSinh ; YY_BREAK case 105: YY_RULE_SETUP -#line 201 "Gmsh.l" +#line 204 "Gmsh.l" return tSpline; YY_BREAK case 106: YY_RULE_SETUP -#line 202 "Gmsh.l" +#line 205 "Gmsh.l" return tSurface; YY_BREAK case 107: YY_RULE_SETUP -#line 203 "Gmsh.l" +#line 206 "Gmsh.l" return tSymmetry; YY_BREAK case 108: YY_RULE_SETUP -#line 204 "Gmsh.l" +#line 207 "Gmsh.l" return tSprintf ; YY_BREAK case 109: YY_RULE_SETUP -#line 205 "Gmsh.l" +#line 208 "Gmsh.l" return tStrCat ; YY_BREAK case 110: YY_RULE_SETUP -#line 206 "Gmsh.l" +#line 209 "Gmsh.l" return tStrPrefix ; YY_BREAK case 111: YY_RULE_SETUP -#line 208 "Gmsh.l" +#line 211 "Gmsh.l" return tTransfinite; YY_BREAK case 112: YY_RULE_SETUP -#line 209 "Gmsh.l" +#line 212 "Gmsh.l" return tTranslate; YY_BREAK case 113: YY_RULE_SETUP -#line 210 "Gmsh.l" +#line 213 "Gmsh.l" return tTanh ; YY_BREAK case 114: YY_RULE_SETUP -#line 211 "Gmsh.l" +#line 214 "Gmsh.l" return tTan; YY_BREAK case 115: YY_RULE_SETUP -#line 212 "Gmsh.l" +#line 215 "Gmsh.l" return tTrimmed; YY_BREAK case 116: YY_RULE_SETUP -#line 214 "Gmsh.l" +#line 217 "Gmsh.l" return tUsing; YY_BREAK case 117: YY_RULE_SETUP -#line 216 "Gmsh.l" +#line 219 "Gmsh.l" return tVolume; YY_BREAK case 118: YY_RULE_SETUP -#line 218 "Gmsh.l" +#line 221 "Gmsh.l" return tWith; YY_BREAK case 119: YY_RULE_SETUP -#line 220 "Gmsh.l" -return tScalarTetrahedron; +#line 223 "Gmsh.l" +return tScalarPoint; YY_BREAK case 120: YY_RULE_SETUP -#line 221 "Gmsh.l" -return tVectorTetrahedron; +#line 224 "Gmsh.l" +return tVectorPoint; YY_BREAK case 121: YY_RULE_SETUP -#line 222 "Gmsh.l" -return tTensorTetrahedron; +#line 225 "Gmsh.l" +return tTensorPoint; YY_BREAK case 122: YY_RULE_SETUP -#line 223 "Gmsh.l" -return tScalarTriangle; +#line 226 "Gmsh.l" +return tScalarLine; YY_BREAK case 123: YY_RULE_SETUP -#line 224 "Gmsh.l" -return tVectorTriangle; +#line 227 "Gmsh.l" +return tVectorLine; YY_BREAK case 124: YY_RULE_SETUP -#line 225 "Gmsh.l" -return tTensorTriangle; +#line 228 "Gmsh.l" +return tTensorLine; YY_BREAK case 125: YY_RULE_SETUP -#line 226 "Gmsh.l" -return tScalarLine; +#line 229 "Gmsh.l" +return tScalarTriangle; YY_BREAK case 126: YY_RULE_SETUP -#line 227 "Gmsh.l" -return tVectorLine; +#line 230 "Gmsh.l" +return tVectorTriangle; YY_BREAK case 127: YY_RULE_SETUP -#line 228 "Gmsh.l" -return tTensorLine; +#line 231 "Gmsh.l" +return tTensorTriangle; YY_BREAK case 128: YY_RULE_SETUP -#line 229 "Gmsh.l" -return tScalarPoint; +#line 232 "Gmsh.l" +return tScalarQuadrangle; YY_BREAK case 129: YY_RULE_SETUP -#line 230 "Gmsh.l" -return tVectorPoint; +#line 233 "Gmsh.l" +return tVectorQuadrangle; YY_BREAK case 130: YY_RULE_SETUP -#line 231 "Gmsh.l" -return tTensorPoint; +#line 234 "Gmsh.l" +return tTensorQuadrangle; YY_BREAK case 131: YY_RULE_SETUP -#line 232 "Gmsh.l" -return tText2D; +#line 235 "Gmsh.l" +return tScalarTetrahedron; YY_BREAK case 132: YY_RULE_SETUP -#line 233 "Gmsh.l" -return tText3D; +#line 236 "Gmsh.l" +return tVectorTetrahedron; YY_BREAK case 133: YY_RULE_SETUP -#line 236 "Gmsh.l" -return tCARTESIAN_POINT; +#line 237 "Gmsh.l" +return tTensorTetrahedron; YY_BREAK case 134: YY_RULE_SETUP -#line 237 "Gmsh.l" -return tB_SPLINE_SURFACE_WITH_KNOTS; +#line 238 "Gmsh.l" +return tScalarHexahedron; YY_BREAK case 135: YY_RULE_SETUP -#line 238 "Gmsh.l" -return tB_SPLINE_CURVE_WITH_KNOTS; +#line 239 "Gmsh.l" +return tVectorHexahedron; YY_BREAK case 136: YY_RULE_SETUP -#line 239 "Gmsh.l" -return tUNSPECIFIED; +#line 240 "Gmsh.l" +return tTensorHexahedron; YY_BREAK case 137: YY_RULE_SETUP -#line 240 "Gmsh.l" -return tCONTINUOUS; +#line 241 "Gmsh.l" +return tScalarPrism; YY_BREAK case 138: YY_RULE_SETUP -#line 241 "Gmsh.l" -return tFALSE; +#line 242 "Gmsh.l" +return tVectorPrism; YY_BREAK case 139: YY_RULE_SETUP -#line 242 "Gmsh.l" -return tTRUE; +#line 243 "Gmsh.l" +return tTensorPrism; YY_BREAK case 140: YY_RULE_SETUP -#line 243 "Gmsh.l" -return tU; +#line 244 "Gmsh.l" +return tScalarPyramid; YY_BREAK case 141: YY_RULE_SETUP -#line 244 "Gmsh.l" -return tV; +#line 245 "Gmsh.l" +return tVectorPyramid; YY_BREAK case 142: YY_RULE_SETUP -#line 245 "Gmsh.l" -return tORIENTED_EDGE; +#line 246 "Gmsh.l" +return tTensorPyramid; YY_BREAK case 143: YY_RULE_SETUP -#line 246 "Gmsh.l" -return tEDGE_CURVE; +#line 247 "Gmsh.l" +return tText2D; YY_BREAK case 144: YY_RULE_SETUP -#line 247 "Gmsh.l" -return tEDGE_LOOP; +#line 248 "Gmsh.l" +return tText3D; YY_BREAK case 145: YY_RULE_SETUP -#line 248 "Gmsh.l" -return tVERTEX_POINT; +#line 251 "Gmsh.l" +return tCARTESIAN_POINT; YY_BREAK case 146: YY_RULE_SETUP -#line 249 "Gmsh.l" -return tFACE_OUTER_BOUND; +#line 252 "Gmsh.l" +return tB_SPLINE_SURFACE_WITH_KNOTS; YY_BREAK case 147: YY_RULE_SETUP -#line 250 "Gmsh.l" -return tFACE_BOUND; +#line 253 "Gmsh.l" +return tB_SPLINE_CURVE_WITH_KNOTS; YY_BREAK case 148: YY_RULE_SETUP -#line 251 "Gmsh.l" -return tADVANCED_FACE; +#line 254 "Gmsh.l" +return tUNSPECIFIED; YY_BREAK case 149: YY_RULE_SETUP -#line 252 "Gmsh.l" -return tLine; +#line 255 "Gmsh.l" +return tCONTINUOUS; YY_BREAK case 150: YY_RULE_SETUP -#line 253 "Gmsh.l" -return tVECTOR; +#line 256 "Gmsh.l" +return tFALSE; YY_BREAK case 151: YY_RULE_SETUP -#line 254 "Gmsh.l" -return tDIRECTION; +#line 257 "Gmsh.l" +return tTRUE; YY_BREAK case 152: YY_RULE_SETUP -#line 255 "Gmsh.l" -return tAXIS2_PLACEMENT_3D; +#line 258 "Gmsh.l" +return tU; YY_BREAK case 153: YY_RULE_SETUP -#line 256 "Gmsh.l" -return tPLANE; +#line 259 "Gmsh.l" +return tV; YY_BREAK case 154: YY_RULE_SETUP -#line 257 "Gmsh.l" -return tHEADER; +#line 260 "Gmsh.l" +return tORIENTED_EDGE; YY_BREAK case 155: YY_RULE_SETUP -#line 258 "Gmsh.l" -return tDATA; +#line 261 "Gmsh.l" +return tEDGE_CURVE; YY_BREAK case 156: YY_RULE_SETUP -#line 259 "Gmsh.l" -return tFILE_SCHEMA; +#line 262 "Gmsh.l" +return tEDGE_LOOP; YY_BREAK case 157: YY_RULE_SETUP -#line 260 "Gmsh.l" -return tFILE_NAME; +#line 263 "Gmsh.l" +return tVERTEX_POINT; YY_BREAK case 158: YY_RULE_SETUP -#line 261 "Gmsh.l" -return tFILE_DESCRIPTION; +#line 264 "Gmsh.l" +return tFACE_OUTER_BOUND; YY_BREAK case 159: YY_RULE_SETUP -#line 262 "Gmsh.l" -return tISO; +#line 265 "Gmsh.l" +return tFACE_BOUND; YY_BREAK case 160: YY_RULE_SETUP -#line 263 "Gmsh.l" -return tENDISO; +#line 266 "Gmsh.l" +return tADVANCED_FACE; YY_BREAK case 161: YY_RULE_SETUP -#line 264 "Gmsh.l" -return tENDSEC; +#line 267 "Gmsh.l" +return tLine; YY_BREAK case 162: YY_RULE_SETUP -#line 265 "Gmsh.l" -return tCLOSED_SHELL; +#line 268 "Gmsh.l" +return tVECTOR; YY_BREAK case 163: YY_RULE_SETUP -#line 266 "Gmsh.l" -return tADVANCED_BREP_SHAPE_REPRESENTATION; +#line 269 "Gmsh.l" +return tDIRECTION; YY_BREAK case 164: YY_RULE_SETUP -#line 267 "Gmsh.l" -return tMANIFOLD_SOLID_BREP; +#line 270 "Gmsh.l" +return tAXIS2_PLACEMENT_3D; YY_BREAK case 165: YY_RULE_SETUP -#line 268 "Gmsh.l" -return tCYLINDRICAL_SURFACE; +#line 271 "Gmsh.l" +return tPLANE; YY_BREAK case 166: YY_RULE_SETUP -#line 269 "Gmsh.l" -return tCONICAL_SURFACE; +#line 272 "Gmsh.l" +return tHEADER; YY_BREAK case 167: YY_RULE_SETUP -#line 270 "Gmsh.l" -return tTOROIDAL_SURFACE; +#line 273 "Gmsh.l" +return tDATA; YY_BREAK case 168: YY_RULE_SETUP -#line 271 "Gmsh.l" -return tCIRCLE; +#line 274 "Gmsh.l" +return tFILE_SCHEMA; YY_BREAK case 169: YY_RULE_SETUP -#line 272 "Gmsh.l" -return tTRIMMED_CURVE; +#line 275 "Gmsh.l" +return tFILE_NAME; YY_BREAK case 170: YY_RULE_SETUP -#line 273 "Gmsh.l" -return tGEOMETRIC_SET; +#line 276 "Gmsh.l" +return tFILE_DESCRIPTION; YY_BREAK case 171: YY_RULE_SETUP -#line 274 "Gmsh.l" -return tCOMPOSITE_CURVE_SEGMENT; +#line 277 "Gmsh.l" +return tISO; YY_BREAK case 172: YY_RULE_SETUP -#line 275 "Gmsh.l" -return tCOMPOSITE_CURVE; +#line 278 "Gmsh.l" +return tENDISO; YY_BREAK case 173: YY_RULE_SETUP -#line 276 "Gmsh.l" -return tPRODUCT_DEFINITION; +#line 279 "Gmsh.l" +return tENDSEC; YY_BREAK case 174: YY_RULE_SETUP -#line 277 "Gmsh.l" -return tPRODUCT_DEFINITION_SHAPE; +#line 280 "Gmsh.l" +return tCLOSED_SHELL; YY_BREAK case 175: YY_RULE_SETUP -#line 278 "Gmsh.l" -return tSHAPE_DEFINITION_REPRESENTATION; +#line 281 "Gmsh.l" +return tADVANCED_BREP_SHAPE_REPRESENTATION; YY_BREAK case 176: YY_RULE_SETUP -#line 280 "Gmsh.l" -return tVertex; +#line 282 "Gmsh.l" +return tMANIFOLD_SOLID_BREP; YY_BREAK case 177: YY_RULE_SETUP -#line 281 "Gmsh.l" -return tFacet; +#line 283 "Gmsh.l" +return tCYLINDRICAL_SURFACE; YY_BREAK case 178: YY_RULE_SETUP -#line 282 "Gmsh.l" -return tNormal; +#line 284 "Gmsh.l" +return tCONICAL_SURFACE; YY_BREAK case 179: YY_RULE_SETUP -#line 283 "Gmsh.l" -return tOuter; +#line 285 "Gmsh.l" +return tTOROIDAL_SURFACE; YY_BREAK case 180: YY_RULE_SETUP -#line 284 "Gmsh.l" -return tLoopSTL; +#line 286 "Gmsh.l" +return tCIRCLE; YY_BREAK case 181: YY_RULE_SETUP -#line 285 "Gmsh.l" -return tEndLoop; +#line 287 "Gmsh.l" +return tTRIMMED_CURVE; YY_BREAK case 182: YY_RULE_SETUP -#line 286 "Gmsh.l" -return tEndFacet; +#line 288 "Gmsh.l" +return tGEOMETRIC_SET; YY_BREAK case 183: YY_RULE_SETUP -#line 287 "Gmsh.l" -{skipline();return tEndSolid;} +#line 289 "Gmsh.l" +return tCOMPOSITE_CURVE_SEGMENT; YY_BREAK case 184: YY_RULE_SETUP -#line 288 "Gmsh.l" -{skipline();return tSolid;} +#line 290 "Gmsh.l" +return tCOMPOSITE_CURVE; YY_BREAK case 185: YY_RULE_SETUP -#line 290 "Gmsh.l" -{yylval.d = (double)atoi((char*)(yytext+1)); return tDOUBLE;} +#line 291 "Gmsh.l" +return tPRODUCT_DEFINITION; YY_BREAK case 186: -#line 293 "Gmsh.l" +YY_RULE_SETUP +#line 292 "Gmsh.l" +return tPRODUCT_DEFINITION_SHAPE; + YY_BREAK case 187: -#line 294 "Gmsh.l" +YY_RULE_SETUP +#line 293 "Gmsh.l" +return tSHAPE_DEFINITION_REPRESENTATION; + YY_BREAK case 188: +YY_RULE_SETUP #line 295 "Gmsh.l" +return tVertex; + YY_BREAK case 189: YY_RULE_SETUP -#line 295 "Gmsh.l" -{yylval.d = atof((char *)yytext); return tDOUBLE;} +#line 296 "Gmsh.l" +return tFacet; YY_BREAK case 190: YY_RULE_SETUP #line 297 "Gmsh.l" -{yylval.c = strsave((char*)yytext); return tSTRING;} +return tNormal; YY_BREAK case 191: YY_RULE_SETUP -#line 299 "Gmsh.l" -return yytext[0]; +#line 298 "Gmsh.l" +return tOuter; YY_BREAK case 192: YY_RULE_SETUP +#line 299 "Gmsh.l" +return tLoopSTL; + YY_BREAK +case 193: +YY_RULE_SETUP +#line 300 "Gmsh.l" +return tEndLoop; + YY_BREAK +case 194: +YY_RULE_SETUP #line 301 "Gmsh.l" +return tEndFacet; + YY_BREAK +case 195: +YY_RULE_SETUP +#line 302 "Gmsh.l" +{skipline();return tEndSolid;} + YY_BREAK +case 196: +YY_RULE_SETUP +#line 303 "Gmsh.l" +{skipline();return tSolid;} + YY_BREAK +case 197: +YY_RULE_SETUP +#line 305 "Gmsh.l" +{yylval.d = (double)atoi((char*)(yytext+1)); return tDOUBLE;} + YY_BREAK +case 198: +#line 308 "Gmsh.l" +case 199: +#line 309 "Gmsh.l" +case 200: +#line 310 "Gmsh.l" +case 201: +YY_RULE_SETUP +#line 310 "Gmsh.l" +{yylval.d = atof((char *)yytext); return tDOUBLE;} + YY_BREAK +case 202: +YY_RULE_SETUP +#line 312 "Gmsh.l" +{yylval.c = strsave((char*)yytext); return tSTRING;} + YY_BREAK +case 203: +YY_RULE_SETUP +#line 314 "Gmsh.l" +return yytext[0]; + YY_BREAK +case 204: +YY_RULE_SETUP +#line 316 "Gmsh.l" ECHO; YY_BREAK -#line 2251 "Gmsh.yy.cpp" +#line 2321 "Gmsh.yy.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2542,7 +2609,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 >= 1020 ) + if ( yy_current_state >= 1031 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2577,11 +2644,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 >= 1020 ) + if ( yy_current_state >= 1031 ) 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 == 1019); + yy_is_jam = (yy_current_state == 1030); return yy_is_jam ? 0 : yy_current_state; } @@ -3131,7 +3198,7 @@ int main() return 0; } #endif -#line 301 "Gmsh.l" +#line 316 "Gmsh.l" #undef yywrap diff --git a/Parser/Makefile b/Parser/Makefile index 07e0df49acec2b2e93ccd4c5d6ca8b2f881b7382..2dda875f3a4313c5471bc404ea1925fb3bd52f5f 100644 --- a/Parser/Makefile +++ b/Parser/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.40 2002-05-18 16:31:17 geuzaine Exp $ +# $Id: Makefile,v 1.41 2002-09-01 21:54:13 geuzaine Exp $ # # Makefile for "libGmshParser.a" # @@ -59,7 +59,7 @@ Gmsh.yy.o: Gmsh.yy.cpp ../Common/Gmsh.h ../Common/Message.h \ ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \ ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \ ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \ - Gmsh.tab.cpp.h + Gmsh.tab.hpp Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h ../Parallel/ParUtil.h \ ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \ ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \ diff --git a/demos/primitives.pos b/demos/primitives.pos index e068cfc8358b9ad6f599814999ecc55cf2d073eb..f8c3bba66e8455438609b3fc005762bdd9e77c9d 100644 --- a/demos/primitives.pos +++ b/demos/primitives.pos @@ -9,26 +9,47 @@ General.Color.Text = Black ; View "default"{ SP(0,10,0){1} ; // a scalar point VP(0,8,0){1,0,0} ; // a vector point - //TP(0,8,0){1,0,0,0,0,0,0,0,0} ; // a tensor point SL(0,6,0, 1,6,0){1,2} ; // a scalar line VL(0,4,0, 1,4,0){1,0,0, 2,0,0} ; // a vector line ST(0,2,0, 1,2,0, 0,3,0){1,2,3} ; // a scalar triangle VT(0,0,0, 1,0,0, 0,1,0){1,0,0, 2,0,0, 3,0,0} ; // a vector triangle SS(0,-2,0, 1,-2,0, 0,-1,0, 0,-2,1){1,2,3,4} ; // a scalar tetrahedron VS(0,-4,0, 1,-4,0, 0,-3,0, 0,-4,1){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; // a vector tetrahedron + SQ(0,-6,0, 1,-6,0, 1,-5,0, 0,-5,0){1,2,3,4} ; // a scalar quadrangle + VQ(0,-8,0, 1,-8,0, 1,-7,0, 0,-7,0){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; // a vector quadrangle + SH(0,-10,0, 1,-10,0, 1,-9,0, 0,-9,0, + 0,-10,1, 1,-10,1, 1,-9,1, 0,-9,1){1,2,3,4,4,3,2,1} ; // a scalar hexahedron + VH(0,-12,0, 1,-12,0, 1,-11,0, 0,-11,0, + 0,-12,1, 1,-12,1, 1,-11,1, 0,-11,1) + {1,0,0, 2,0,0, 3,0,0, 4,0,0, 4,0,0, 3,0,0, 2,0,0, 1,0,0}; // a vector hexahedron + SI(0,-14,0, 1,-14,0, 0,-13,0, + 0,-14,1, 1,-14,1, 0,-13,1){1,2,3,3,2,1} ; // a scalar prism + VI(0,-16,0, 1,-16,0, 0,-15,0, + 0,-16,1, 1,-16,1, 0,-15,1) + {1,0,0, 2,0,0, 3,0,0, 3,0,0, 2,0,0, 1,0,0} ; // a vector prism }; - View "with-options"{ - SP(0,10,0){1} ; - VP(0,8,0){1,0,0} ; - //TP(0,8,0){1,0,0,0,0,0,0,0,0} ; - SL(0,6,0, 1,6,0){1,2} ; - VL(0,4,0, 1,4,0){1,0,0, 2,0,0} ; - ST(0,2,0, 1,2,0, 0,3,0){1,2,3} ; - VT(0,0,0, 1,0,0, 0,1,0){1,0,0, 2,0,0, 3,0,0} ; - SS(0,-2,0, 1,-2,0, 0,-1,0, 0,-2,1){1,2,3,4} ; - VS(0,-4,0, 1,-4,0, 0,-3,0, 0,-4,1){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; + SP(0,10,0){1} ; // a scalar point + VP(0,8,0){1,0,0} ; // a vector point + SL(0,6,0, 1,6,0){1,2} ; // a scalar line + VL(0,4,0, 1,4,0){1,0,0, 2,0,0} ; // a vector line + ST(0,2,0, 1,2,0, 0,3,0){1,2,3} ; // a scalar triangle + VT(0,0,0, 1,0,0, 0,1,0){1,0,0, 2,0,0, 3,0,0} ; // a vector triangle + SS(0,-2,0, 1,-2,0, 0,-1,0, 0,-2,1){1,2,3,4} ; // a scalar tetrahedron + VS(0,-4,0, 1,-4,0, 0,-3,0, 0,-4,1){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; // a vector tetrahedron + SQ(0,-6,0, 1,-6,0, 1,-5,0, 0,-5,0){1,2,3,4} ; // a scalar quadrangle + VQ(0,-8,0, 1,-8,0, 1,-7,0, 0,-7,0){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; // a vector quadrangle + SH(0,-10,0, 1,-10,0, 1,-9,0, 0,-9,0, + 0,-10,1, 1,-10,1, 1,-9,1, 0,-9,1){1,2,3,4,4,3,2,1} ; // a scalar hexahedron + VH(0,-12,0, 1,-12,0, 1,-11,0, 0,-11,0, + 0,-12,1, 1,-12,1, 1,-11,1, 0,-11,1) + {1,0,0, 2,0,0, 3,0,0, 4,0,0, 4,0,0, 3,0,0, 2,0,0, 1,0,0}; // a vector hexahedron + SI(0,-14,0, 1,-14,0, 0,-13,0, + 0,-14,1, 1,-14,1, 0,-13,1){1,2,3,3,2,1} ; // a scalar prism + VI(0,-16,0, 1,-16,0, 0,-15,0, + 0,-16,1, 1,-16,1, 0,-15,1) + {1,0,0, 2,0,0, 3,0,0, 3,0,0, 2,0,0, 1,0,0} ; // a vector prism }; View[1].OffsetX = 3 ; @@ -38,15 +59,26 @@ View[1].ArrowLocation = 2 ; View[1].ColorTable = {Red,Green,Magenta,Cyan,Brown,Pink} ; View "with-options-2"{ - SP(0,10,0){1} ; - VP(0,8,0){1,0,0} ; - //TP(0,8,0){1,0,0,0,0,0,0,0,0} ; - SL(0,6,0, 1,6,0){1,2} ; - VL(0,4,0, 1,4,0){1,0,0, 2,0,0} ; - ST(0,2,0, 1,2,0, 0,3,0){1,2,3} ; - VT(0,0,0, 1,0,0, 0,1,0){1,0,0, 2,0,0, 3,0,0} ; - SS(0,-2,0, 1,-2,0, 0,-1,0, 0,-2,1){1,2,3,4} ; - VS(0,-4,0, 1,-4,0, 0,-3,0, 0,-4,1){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; + SP(0,10,0){1} ; // a scalar point + VP(0,8,0){1,0,0} ; // a vector point + SL(0,6,0, 1,6,0){1,2} ; // a scalar line + VL(0,4,0, 1,4,0){1,0,0, 2,0,0} ; // a vector line + ST(0,2,0, 1,2,0, 0,3,0){1,2,3} ; // a scalar triangle + VT(0,0,0, 1,0,0, 0,1,0){1,0,0, 2,0,0, 3,0,0} ; // a vector triangle + SS(0,-2,0, 1,-2,0, 0,-1,0, 0,-2,1){1,2,3,4} ; // a scalar tetrahedron + VS(0,-4,0, 1,-4,0, 0,-3,0, 0,-4,1){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; // a vector tetrahedron + SQ(0,-6,0, 1,-6,0, 1,-5,0, 0,-5,0){1,2,3,4} ; // a scalar quadrangle + VQ(0,-8,0, 1,-8,0, 1,-7,0, 0,-7,0){1,0,0, 2,0,0, 3,0,0, 4,0,0} ; // a vector quadrangle + SH(0,-10,0, 1,-10,0, 1,-9,0, 0,-9,0, + 0,-10,1, 1,-10,1, 1,-9,1, 0,-9,1){1,2,3,4,4,3,2,1} ; // a scalar hexahedron + VH(0,-12,0, 1,-12,0, 1,-11,0, 0,-11,0, + 0,-12,1, 1,-12,1, 1,-11,1, 0,-11,1) + {1,0,0, 2,0,0, 3,0,0, 4,0,0, 4,0,0, 3,0,0, 2,0,0, 1,0,0}; // a vector hexahedron + SI(0,-14,0, 1,-14,0, 0,-13,0, + 0,-14,1, 1,-14,1, 0,-13,1){1,2,3,3,2,1} ; // a scalar prism + VI(0,-16,0, 1,-16,0, 0,-15,0, + 0,-16,1, 1,-16,1, 0,-15,1) + {1,0,0, 2,0,0, 3,0,0, 3,0,0, 2,0,0, 1,0,0} ; // a vector prism }; View[2].OffsetX = 6 ; diff --git a/doc/FORMATS b/doc/FORMATS index c4cb7c28a53180fce6544c5e0543e0b329c571f8..8130b24e53c18637653cf2a36b4a60fea56f04ad 100644 --- a/doc/FORMATS +++ b/doc/FORMATS @@ -1,6 +1,6 @@ -$Id: FORMATS,v 1.11 2002-07-15 18:21:27 geuzaine Exp $ +$Id: FORMATS,v 1.12 2002-09-01 21:54:13 geuzaine Exp $ -This document describes the version 1.1 of Gmsh's mesh and +This document describes the version 1.2 of Gmsh's mesh and post-processing file formats (This document deals only with the import/export interfaces for @@ -55,7 +55,7 @@ multiple) post-processing views (enclosed between $View/$EndView pairs). $PostFormat - 1.1 file-type data-size + 1.2 file-type data-size $EndPostFormat $View view-name nb-time-steps @@ -74,9 +74,21 @@ pairs). scalar-triangle-value ... vector-triangle-value ... tensor-triangle-value ... + scalar-quadrangle-value ... + vector-quadrangle-value ... + tensor-quadrangle-value ... scalar-tetrahedron-value ... vector-tetrahedron-value ... tensor-tetrahedron-value ... + scalar-hexahedron-value ... + vector-hexahedron-value ... + tensor-hexahedron-value ... + scalar-prism-value ... + vector-prism-value ... + tensor-prism-value ... + scalar-pyramid-value ... + vector-pyramid-value ... + tensor-pyramid-value ... text2d ... text2d-chars ... text3d ... text3d-chars ... $endView @@ -157,17 +169,22 @@ file in binary format: int one = 1; fprintf(file, "$PostFormat\n"); -fprintf(file, "%g %d %d\n", 1.1, 1, sizeof(double)); +fprintf(file, "%g %d %d\n", 1.2, 1, sizeof(double)); fprintf(file, "$EndPostFormat\n"); fprintf(file, "$View\n"); -fprintf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", +fprintf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d " + "%d %d %d %d %d %d %d %d %d %d %d %d\n", view-name, nb-time-steps, nb-scalar-points, nb-vector-points, nb-tensor-points, nb-scalar-lines, nb-vector-lines, nb-tensor-lines, nb-scalar-triangles, nb-vector-triangles, nb-tensor-triangles, + nb-scalar-quadrangles, nb-vector-quadrangles, nb-tensor-quadrangles, nb-scalar-tetrahedra, nb-vector-tetrahedra, nb-tensor-tetrahedra, - nb-text2d, nb-text2d-chars, nb-text3d, nb-text3d-chars); + nb-scalar-hexahedra, nb-vector-hexahedra, nb-tensor-hexahedra, + nb-scalar-prisms, nb-vector-prisms, nb-tensor-prisms, + nb-scalar-pyramids, nb-vector-pyramids, nb-tensor-pyramids, + nb-text2d, nb-text2d-chars, nb-text3d, nb-text3d-chars); fwrite(&one, sizeof(int), 1, file); fwrite(time-step-values, sizeof(double), nb-time-steps, file); fwrite(all-scalar-point-values, sizeof(double), ..., file); @@ -195,7 +212,7 @@ following: ... }; - 14 base objects can be displayed: + 26 base objects can be displayed: type-of-element list-of-coordinates list-of-values -------------------------------------------------------------------------------- @@ -208,9 +225,21 @@ following: scalar triangle ST 9 3 * nb-time-steps vector triangle VT 9 9 * nb-time-steps tensor triangle TT 9 27 * nb-time-steps + scalar quadrangle SQ 12 4 * nb-time-steps + vector quadrangle VQ 12 12 * nb-time-steps + tensor quadrangle TQ 12 36 * nb-time-steps scalar tetrahedron SS 12 4 * nb-time-steps vector tetrahedron VS 12 12 * nb-time-steps tensor tetrahedron TS 12 36 * nb-time-steps + scalar hexahedron SH 24 8 * nb-time-steps + vector hexahedron VH 24 24 * nb-time-steps + tensor hexahedron TH 24 72 * nb-time-steps + scalar prism SI 18 6 * nb-time-steps + vector prism VI 18 18 * nb-time-steps + tensor prism TI 18 54 * nb-time-steps + scalar pyramid SY 15 5 * nb-time-steps + vector pyramid VY 15 15 * nb-time-steps + tensor pyramid TY 15 45 * nb-time-steps text 2d T2 4 arbitrary text 3d T3 5 arbitrary @@ -221,3 +250,108 @@ coord3-node2) for a line, (coord1-node1, coord2-node1, coord3-node1, coord1-node2, coord2-node2, coord3-node2, coord1-node3, coord2-node3, coord3-node3) for a triangle, etc. The values are given in the same order as for the ASCII post-processing file format. + +Ordering of nodes +================= + +* POINT + v + | + | + -----1-----u + | + | + +* LINE edge 1: nodes 1 -> 2 + v + | + | + --1-----2--u + | + | + +* TRIANGLE edge 1: nodes 1 -> 2 + v 2: 1 -> 3 + | 3: 2 -> 3 + | + 3 face 1: edges 1 -2 3 nodes 1 2 3 + |\ + | \ + |__\___u + 1 2 + +* QUADRANGLE edge 1: nodes 1 -> 2 + v 2: 1 -> 4 + | 3: 2 -> 3 + 4--|--3 4: 3 -> 4 + | | | + -----------u face 1: edges 1 -2 3 4 nodes 1 2 3 4 + | | | + 1--|--2 + | + +* TETRAHEDRON edge 1: nodes 1 -> 2 + v 2: 1 -> 3 + | 3: 1 -> 4 + | 4: 2 -> 3 + | 5: 2 -> 4 + 3 6: 3 -> 4 + |\ + | \ face 1: edges 1 -3 5 nodes 1 2 4 + |__\2_____u 2: -1 2 -4 1 3 2 + 1\ / 3: -2 3 -6 1 4 3 + \4 4: 4 -5 6 2 3 4 + \ + w + +* HEXAHEDRON edge 1: nodes 1 -> 2 + v 2: 1 -> 4 + | 3: 1 -> 5 + | 4: 2 -> 3 + 4----|--3 5: 2 -> 6 + |\ | |\ 6: 3 -> 4 + | 8-------7 7: 3 -> 7 + | | ----|---u 8: 4 -> 8 + 1-|---\-2 | 9: 5 -> 6 + \| \ \| 10: 5 -> 8 + 5-----\-6 11: 6 -> 7 + \ 12: 7 -> 8 + w + face 1: edges 1 -3 5 -9 nodes 1 2 6 5 + 2: -1 2 -4 -6 1 4 3 2 + 3: -2 3 -8 10 1 5 8 4 + 4: 4 -5 7 -11 2 3 7 6 + 5: 6 -7 8 -12 3 4 8 7 + 6: 9 -10 11 12 5 6 7 8 + +* PRISM edge 1: nodes 1 -> 2 + v 2: 1 -> 3 + 3 | 3: 1 -> 4 + |\| 4: 2 -> 3 + | | 5: 2 -> 5 + 1_|2 6: 3 -> 6 + \| 6 7: 4 -> 5 + |_|_\___u 8: 4 -> 6 + \| \ 9: 5 -> 6 + 4 __5 + \ face 1: edges 1 -3 5 -7 nodes 1 2 5 4 + \ 2: -1 2 -4 1 3 2 + w 3: -2 3 -6 8 1 4 6 3 + 4: 4 -5 6 -9 2 3 6 5 + 5: 7 -8 9 4 5 6 + +* PYRAMID edge 1: nodes 1 -> 2 + v 2: 2 -> 3 + | 3: 4 -> 3 + 4-------3 4: 1 -> 4 + |\ /| 5: 1 -> 5 + |\ / | 6: 2 -> 5 + 1-\- /--2---u 7: 4 -> 5 + \ \/ / 8: 3 -> 5 + \ 5 + \ face 1: edges 1 6 -5 nodes 1 2 5 + \ 2: 5 -7 3 1 5 4 + w 3: 2 8 -6 2 3 5 + 4: -3 7 -8 3 4 5 + 5: 4 3 -2 -1 1 4 3 2 +