diff --git a/Common/LuaBindings.cpp b/Common/LuaBindings.cpp index e51ad66f7cc09376216910f3ec81fc34281b518c..170d380f31c7eb935ba0b9bba923a34883e14d7b 100644 --- a/Common/LuaBindings.cpp +++ b/Common/LuaBindings.cpp @@ -26,6 +26,7 @@ #include "drawContext.h" #include "GmshMessage.h" #include "linearSystem.h" +#include "GModelFactory.h" #if defined(HAVE_SOLVER) #include "linearSystemCSR.h" @@ -385,6 +386,7 @@ binding::binding() function::registerBindings(this); linearSystemCSRGmm<double>::registerBindings(this); #endif + GModelFactory::registerBindings(this); } binding *binding::_instance=NULL; diff --git a/Common/LuaBindings.h b/Common/LuaBindings.h index 5d9aae5e01832bab33078a82205650d7dcd24ae4..b8da1b607875a710d53ad7f98e8e861287b3e18d 100644 --- a/Common/LuaBindings.h +++ b/Common/LuaBindings.h @@ -279,6 +279,64 @@ class luaStack<const type &>{ //static template <typename cb> class argTypeNames; + +template <typename tr, typename t0, typename t1, typename t2, typename t3, + typename t4, typename t5, typename t6, typename t7, typename t8> + class argTypeNames<tr (*)(t0, t1, t2, t3, t4, t5, t6, t7, t8)>{ + public: + static void get(std::vector<std::string> &names) + { + names.clear(); + names.push_back(luaStack<tr>::getName()); + names.push_back(luaStack<t0>::getName()); + names.push_back(luaStack<t1>::getName()); + names.push_back(luaStack<t2>::getName()); + names.push_back(luaStack<t3>::getName()); + names.push_back(luaStack<t4>::getName()); + names.push_back(luaStack<t5>::getName()); + names.push_back(luaStack<t6>::getName()); + names.push_back(luaStack<t7>::getName()); + names.push_back(luaStack<t8>::getName()); + } +}; + +template <typename tr, typename t0, typename t1, typename t2, typename t3, + typename t4, typename t5, typename t6, typename t7> + class argTypeNames<tr (*)(t0, t1, t2, t3, t4, t5, t6, t7)>{ + public: + static void get(std::vector<std::string> &names) + { + names.clear(); + names.push_back(luaStack<tr>::getName()); + names.push_back(luaStack<t0>::getName()); + names.push_back(luaStack<t1>::getName()); + names.push_back(luaStack<t2>::getName()); + names.push_back(luaStack<t3>::getName()); + names.push_back(luaStack<t4>::getName()); + names.push_back(luaStack<t5>::getName()); + names.push_back(luaStack<t6>::getName()); + names.push_back(luaStack<t7>::getName()); + } +}; + +template <typename tr, typename t0, typename t1, typename t2, typename t3, + typename t4, typename t5, typename t6> + class argTypeNames<tr (*)(t0, t1, t2, t3, t4, t5, t6)>{ + public: + static void get(std::vector<std::string> &names) + { + names.clear(); + names.push_back(luaStack<tr>::getName()); + names.push_back(luaStack<t0>::getName()); + names.push_back(luaStack<t1>::getName()); + names.push_back(luaStack<t2>::getName()); + names.push_back(luaStack<t3>::getName()); + names.push_back(luaStack<t4>::getName()); + names.push_back(luaStack<t5>::getName()); + names.push_back(luaStack<t6>::getName()); + } +}; + template <typename tr, typename t0, typename t1, typename t2, typename t3, typename t4, typename t5> class argTypeNames<tr (*)(t0, t1, t2, t3, t4, t5)>{ @@ -374,6 +432,37 @@ class argTypeNames<tr (*)()>{ template <typename cb> class argTypeNames; + +template <typename tr, typename tObj, typename t0, typename t1, typename t2, + typename t3, typename t4, typename t5, typename t6, typename t7, typename t8> + class argTypeNames<tr (tObj::*)(t0, t1, t2, t3, t4, t5, t6, t7, t8)>{ + public: + static void get(std::vector<std::string> &names) + { + argTypeNames<tr(*)(t0, t1, t2, t3, t4, t5, t6, t7, t8)>::get(names); + } +}; + +template <typename tr, typename tObj, typename t0, typename t1, typename t2, + typename t3, typename t4, typename t5, typename t6, typename t7> + class argTypeNames<tr (tObj::*)(t0, t1, t2, t3, t4, t5, t6, t7)>{ + public: + static void get(std::vector<std::string> &names) + { + argTypeNames<tr(*)(t0, t1, t2, t3, t4, t5, t6, t7)>::get(names); + } +}; + +template <typename tr, typename tObj, typename t0, typename t1, typename t2, + typename t3, typename t4, typename t5, typename t6> + class argTypeNames<tr (tObj::*)(t0, t1, t2, t3, t4, t5, t6)>{ + public: + static void get(std::vector<std::string> &names) + { + argTypeNames<tr(*)(t0, t1, t2, t3, t4, t5, t6)>::get(names); + } +}; + template <typename tr, typename tObj, typename t0, typename t1, typename t2, typename t3, typename t4, typename t5> class argTypeNames<tr (tObj::*)(t0, t1, t2, t3, t4, t5)>{ @@ -491,6 +580,60 @@ class argTypeNames<tr (tObj::*)()const>{ // template to call c function from the lua stack // static, return +template < typename tRet, typename t0, typename t1, typename t2, typename t3, typename t4, typename t5, typename t6, typename t7, typename t8> + static int luaCall(lua_State *L, tRet (*_f)(t0, t1, t2, t3, t4, t5, t6, t7, t8)) +{ + if (lua_gettop(L) == 10) lua_remove(L, 1); + luaStack<tRet>::push(L, (*_f)(luaStack<t0>::get(L, 1), luaStack<t1>::get(L, 2), + luaStack<t2>::get(L, 3), luaStack<t3>::get(L, 4), + luaStack<t4>::get(L, 5), luaStack<t5>::get(L, 6), + luaStack<t6>::get(L, 7), luaStack<t7>::get(L, 8), + luaStack<t8>::get(L, 9))); + return 1; +}; + +template < typename tRet, typename t0, typename t1, typename t2, typename t3, typename t4, typename t5, typename t6, typename t7> + static int luaCall(lua_State *L, tRet (*_f)(t0, t1, t2, t3, t4, t5, t6, t7)) +{ + if (lua_gettop(L) == 9) lua_remove(L, 1); + luaStack<tRet>::push(L, (*_f)(luaStack<t0>::get(L, 1), luaStack<t1>::get(L, 2), + luaStack<t2>::get(L, 3), luaStack<t3>::get(L, 4), + luaStack<t4>::get(L, 5), luaStack<t5>::get(L, 6), + luaStack<t6>::get(L, 7), luaStack<t7>::get(L, 8))); + return 1; +}; + +template < typename tRet, typename t0, typename t1, typename t2, typename t3, typename t4, typename t5, typename t6> + static int luaCall(lua_State *L, tRet (*_f)(t0, t1, t2, t3, t4, t5, t6)) +{ + if (lua_gettop(L) == 8) lua_remove(L, 1); + luaStack<tRet>::push(L, (*_f)(luaStack<t0>::get(L, 1), luaStack<t1>::get(L, 2), + luaStack<t2>::get(L, 3), luaStack<t3>::get(L, 4), + luaStack<t4>::get(L, 5), luaStack<t5>::get(L, 6), + luaStack<t6>::get(L, 7))); + return 1; +}; + +template < typename tRet, typename t0, typename t1, typename t2, typename t3, typename t4, typename t5> + static int luaCall(lua_State *L, tRet (*_f)(t0, t1, t2, t3, t4, t5)) +{ + if (lua_gettop(L) == 7) lua_remove(L, 1); + luaStack<tRet>::push(L, (*_f)(luaStack<t0>::get(L, 1), luaStack<t1>::get(L, 2), + luaStack<t2>::get(L, 3), luaStack<t3>::get(L, 4), + luaStack<t4>::get(L, 5), luaStack<t5>::get(L, 6))); + return 1; +}; + +template < typename tRet, typename t0, typename t1, typename t2, typename t3, typename t4> + static int luaCall(lua_State *L, tRet (*_f)(t0, t1, t2, t3,t4)) +{ + if (lua_gettop(L) == 6) lua_remove(L, 1); + luaStack<tRet>::push(L, (*_f)(luaStack<t0>::get(L, 1), luaStack<t1>::get(L, 2), + luaStack<t2>::get(L, 3), luaStack<t3>::get(L, 4), + luaStack<t4>::get(L, 5))); + return 1; +}; + template < typename tRet, typename t0, typename t1, typename t2, typename t3> static int luaCall(lua_State *L, tRet (*_f)(t0, t1, t2, t3)) { @@ -534,6 +677,35 @@ static int luaCall(lua_State *L, tRet (*_f)()) }; //static, no return +template < typename t0, typename t1, typename t2, typename t3, typename t4, typename t5, typename t6> + static int luaCall(lua_State *L, void (*_f)(t0, t1, t2, t3, t4, t5, t6)) +{ + if (lua_gettop(L) == 8) lua_remove(L, 1); + (*(_f))(luaStack<t0>::get(L, 1), luaStack<t1>::get(L, 2), + luaStack<t2>::get(L, 3), luaStack<t3>::get(L, 4), luaStack<t4>::get(L, 5), + luaStack<t5>::get(L, 6), luaStack<t6>::get(L, 7)); + return 1; +}; + +template < typename t0, typename t1, typename t2, typename t3, typename t4, typename t5> + static int luaCall(lua_State *L, void (*_f)(t0, t1, t2, t3, t4, t5)) +{ + if (lua_gettop(L) == 7) lua_remove(L, 1); + (*(_f))(luaStack<t0>::get(L, 1), luaStack<t1>::get(L, 2), + luaStack<t2>::get(L, 3), luaStack<t3>::get(L, 4), luaStack<t4>::get(L, 5), + luaStack<t5>::get(L, 6)); + return 1; +}; + +template < typename t0, typename t1, typename t2, typename t3, typename t4> + static int luaCall(lua_State *L, void (*_f)(t0, t1, t2, t3, t4)) +{ + if (lua_gettop(L) == 6) lua_remove(L, 1); + (*(_f))(luaStack<t0>::get(L, 1), luaStack<t1>::get(L, 2), + luaStack<t2>::get(L, 3), luaStack<t3>::get(L, 4), luaStack<t4>::get(L, 5)); + return 1; +}; + template < typename t0, typename t1, typename t2, typename t3> static int luaCall(lua_State *L, void (*_f)(t0, t1, t2, t3)) { @@ -579,6 +751,49 @@ int luaCall<void>(lua_State *L,void (*_f)()) } //const, return +template <typename tObj, typename tRet, typename t0, typename t1, typename t2, + typename t3, typename t4, typename t5, typename t6, typename t7> + static int luaCall(lua_State *L, tRet (tObj::*_f)(t0, t1, t2, t3, t4, t5, t6, t7) const) +{ + luaStack<tRet>::push(L, (luaStack<tObj*>::get(L, 1)->*(_f)) + (luaStack<t0>::get(L, 2), luaStack<t1>::get(L, 3), + luaStack<t2>::get(L, 4), luaStack<t3>::get(L, 5), luaStack<t4>::get(L, 6), + luaStack<t5>::get(L, 7), luaStack<t6>::get(L, 8), luaStack<t7>::get(L, 9))); + return 1; +}; + +template <typename tObj, typename tRet, typename t0, typename t1, typename t2, + typename t3, typename t4, typename t5, typename t6> + static int luaCall(lua_State *L, tRet (tObj::*_f)(t0, t1, t2, t3, t4, t5, t6) const) +{ + luaStack<tRet>::push(L, (luaStack<tObj*>::get(L, 1)->*(_f)) + (luaStack<t0>::get(L, 2), luaStack<t1>::get(L, 3), + luaStack<t2>::get(L, 4), luaStack<t3>::get(L, 5), luaStack<t4>::get(L, 6), + luaStack<t5>::get(L, 7), luaStack<t6>::get(L, 8))); + return 1; +}; + +template <typename tObj, typename tRet, typename t0, typename t1, typename t2, + typename t3, typename t4, typename t5> + static int luaCall(lua_State *L, tRet (tObj::*_f)(t0, t1, t2, t3, t4, t5) const) +{ + luaStack<tRet>::push(L, (luaStack<tObj*>::get(L, 1)->*(_f)) + (luaStack<t0>::get(L, 2), luaStack<t1>::get(L, 3), + luaStack<t2>::get(L, 4), luaStack<t3>::get(L, 5), luaStack<t4>::get(L, 6), + luaStack<t5>::get(L, 7))); + return 1; +}; + +template <typename tObj, typename tRet, typename t0, typename t1, typename t2, + typename t3, typename t4> + static int luaCall(lua_State *L, tRet (tObj::*_f)(t0, t1, t2, t3, t4) const) +{ + luaStack<tRet>::push(L, (luaStack<tObj*>::get(L, 1)->*(_f)) + (luaStack<t0>::get(L, 2), luaStack<t1>::get(L, 3), + luaStack<t2>::get(L, 4), luaStack<t3>::get(L, 5), luaStack<t4>::get(L, 6))); + return 1; +}; + template <typename tObj, typename tRet, typename t0, typename t1, typename t2, typename t3> static int luaCall(lua_State *L, tRet (tObj::*_f)(t0, t1, t2, t3) const) @@ -621,6 +836,30 @@ static int luaCall(lua_State *L, tRet (tObj::*_f)() const) { }; //non const, return +template <typename tObj, typename tRet, typename t0, typename t1, typename t2, + typename t3, typename t4, typename t5, typename t6, typename t7> + static int luaCall(lua_State *L,tRet (tObj::*_f)(t0, t1, t2, t3, t4, t5, t6, t7)) +{ + luaStack<tRet>::push(L,(luaStack<tObj*>::get(L, 1)->*(_f)) + (luaStack<t0>::get(L, 2), luaStack<t1>::get(L, 3), + luaStack<t2>::get(L, 4), luaStack<t3>::get(L, 5), + luaStack<t4>::get(L, 6), luaStack<t5>::get(L, 7), + luaStack<t6>::get(L, 8), luaStack<t7>::get(L, 9))); + return 1; +}; + +template <typename tObj, typename tRet, typename t0, typename t1, typename t2, + typename t3, typename t4, typename t5, typename t6> + static int luaCall(lua_State *L,tRet (tObj::*_f)(t0, t1, t2, t3, t4, t5, t6)) +{ + luaStack<tRet>::push(L,(luaStack<tObj*>::get(L, 1)->*(_f)) + (luaStack<t0>::get(L, 2), luaStack<t1>::get(L, 3), + luaStack<t2>::get(L, 4), luaStack<t3>::get(L, 5), + luaStack<t4>::get(L, 6), luaStack<t5>::get(L, 7), + luaStack<t6>::get(L, 8))); + return 1; +}; + template <typename tObj, typename tRet, typename t0, typename t1, typename t2, typename t3, typename t4, typename t5> static int luaCall(lua_State *L,tRet (tObj::*_f)(t0, t1, t2, t3, t4, t5)) diff --git a/Geo/CMakeLists.txt b/Geo/CMakeLists.txt index 93e60452af075f93832c578370527e5e4721e8e3..77208d2648b91b458fd7115807ba3857c13da37b 100644 --- a/Geo/CMakeLists.txt +++ b/Geo/CMakeLists.txt @@ -12,6 +12,7 @@ set(SRC discreteEdge.cpp discreteFace.cpp discreteRegion.cpp fourierEdge.cpp fourierFace.cpp fourierProjectionFace.cpp GModel.cpp + GModelFactory.cpp GModelIO_Geo.cpp GModelIO_Mesh.cpp GModelIO_OCC.cpp diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp index eee95b1d9308aa96f47873a607d87b1b3cf0aef3..0ed4d7de1978e08caeca4ec820eba00e07dafc13 100644 --- a/Geo/GEdge.cpp +++ b/Geo/GEdge.cpp @@ -21,6 +21,7 @@ GEdge::GEdge(GModel *model, int tag, GVertex *_v0, GVertex *_v1) { if(v0) v0->addEdge(this); if(v1 && v1 != v0) v1->addEdge(this); + _mStatus = GEdge::PENDING; resetMeshAttributes(); } @@ -346,9 +347,27 @@ bool GEdge::XYZToU(const double X, const double Y, const double Z, return false; } +void GEdge::replaceEndingPoints (GVertex *replOfv0, GVertex *replOfv1){ + replaceEndingPointsInternals (replOfv0,replOfv1); + if (replOfv0 != v0){ + v0->delEdge(this); + replOfv0->addEdge(this); + v0 = replOfv0; + } + if (replOfv1 != v1){ + v1->delEdge(this); + replOfv1->addEdge(this); + v1 = replOfv1; + } +} + void GEdge::registerBindings(binding *b) { classBinding *cb = b->addClass<GEdge>("GEdge"); cb->setDescription("A GEdge is a geometrical 1D entity"); cb->setParentClass<GEntity>(); + methodBinding *mb = cb->addMethod("getBeginVertex", &GEdge::getBeginVertex); + mb->setDescription("get the begin-vertex of the edge"); + mb = cb->addMethod("getEndVertex", &GEdge::getEndVertex); + mb->setDescription("get the end-vertex of the edge"); } diff --git a/Geo/GEdge.h b/Geo/GEdge.h index 36a0680bdc6e0ad2e8cb6319d5a0528baf377b59..9123c5b580835d48d1b04929ce06c7aec0691070 100644 --- a/Geo/GEdge.h +++ b/Geo/GEdge.h @@ -33,6 +33,9 @@ class GEdge : public GEntity { GEdgeCompound *compound; // this model edge belongs to a compound std::list<GFace *> l_faces; std::set<GFace *> bl_faces; + // for specific solid modelers that need to re-do the internal curve + // if a topological change ending points is done (gluing) + virtual void replaceEndingPointsInternals(GVertex *, GVertex *) {} public: GEdge(GModel *model, int tag, GVertex *_v0, GVertex *_v1); @@ -173,7 +176,8 @@ class GEdge : public GEntity { void setCompound(GEdgeCompound *gec) { compound = gec; } GEdgeCompound *getCompound() const { return compound; } - + // gluing + void replaceEndingPoints(GVertex *, GVertex *); struct { char Method; @@ -186,6 +190,9 @@ class GEdge : public GEntity { ExtrudeParams *extrude; } meshAttributes ; + typedef enum {PENDING, DONE, FAILED} meshGenerationStatus; + mutable meshGenerationStatus _mStatus; + std::vector<MLine*> lines; static void registerBindings(binding *b); diff --git a/Geo/GEntity.cpp b/Geo/GEntity.cpp index 4da5d78e31806355b8c9cfdc2607a3b813d6d4bc..0612806190f68e517b4eda8f9dfe1983e0d3ab2e 100644 --- a/Geo/GEntity.cpp +++ b/Geo/GEntity.cpp @@ -10,10 +10,15 @@ #include "VertexArray.h" #include "Context.h" #include "Bindings.h" +#include "GVertex.h" +#include "GEdge.h" +#include "GFace.h" +#include "GRegion.h" GEntity::GEntity(GModel *m, int t) : _model(m), _tag(t), _visible(1), _selection(0), - _allElementsVisible(1), _obb(0), va_lines(0), va_triangles(0) + _allElementsVisible(1), _obb(0), va_lines(0), va_triangles(0), + _meshMaster(t) { _color = CTX::instance()->packColor(0, 0, 255, 0); } @@ -61,6 +66,12 @@ std::string GEntity::getInfoString() return sstream.str(); } +GVertex * GEntity::Cast2Vertex () {return dynamic_cast<GVertex*>(this);} +GEdge * GEntity::Cast2Edge () {return dynamic_cast<GEdge*>(this);} +GFace * GEntity::Cast2Face () {return dynamic_cast<GFace*>(this);} +GRegion * GEntity::Cast2Region () {return dynamic_cast<GRegion*>(this);} + + void GEntity::registerBindings(binding *b) { classBinding *cb = b->addClass<GEntity>("GEntity"); @@ -78,4 +89,12 @@ void GEntity::registerBindings(binding *b) mb->setArgNames("index",NULL); mb = cb->addMethod("model", &GEntity::model); mb->setDescription("returns the geometric model the entity belongs to."); + mb = cb->addMethod("Cast2Vertex", &GEntity::Cast2Vertex); + mb->setDescription("do a dynamic cast of the GEntity to a GVertex (0 if wrong cast)."); + mb = cb->addMethod("Cast2Edge", &GEntity::Cast2Edge); + mb->setDescription("do a dynamic cast of the GEntity to a GEdge (0 if wrong cast)."); + mb = cb->addMethod("Cast2Face", &GEntity::Cast2Face); + mb->setDescription("do a dynamic cast of the GEntity to a GFace (0 if wrong cast)."); + mb = cb->addMethod("Cast2Region", &GEntity::Cast2Region); + mb->setDescription("do a dynamic cast of the GEntity to a GRegion (0 if wrong cast)."); } diff --git a/Geo/GEntity.h b/Geo/GEntity.h index c42cbd36d126396103548cf1130d560973ac48af..4ad228a5436f66d3f046c8fbbe967c97a270074e 100644 --- a/Geo/GEntity.h +++ b/Geo/GEntity.h @@ -33,6 +33,9 @@ class GEntity { // the tag (the number) of this entity int _tag; + // gives the number of the master entity in periodic mesh, gives 0 if non-periodic + int _meshMaster; + // the visibility and the selection flag char _visible, _selection; @@ -215,6 +218,10 @@ class GEntity { int tag() const { return _tag; } void setTag(int tag) { _tag = tag; } + // returns the tag of the entity that its master entity (for mesh) + int meshMaster() const {return _meshMaster; } + void setMeshMaster(int m) { _meshMaster=m; } + // get the bounding box virtual SBoundingBox3d bounds() const { return SBoundingBox3d(); } @@ -268,6 +275,12 @@ class GEntity { // get the mesh vertex at the given index MVertex *getMeshVertex(unsigned int index) { return mesh_vertices[index]; } + // clean downcasts + GVertex * Cast2Vertex (); + GEdge * Cast2Edge (); + GFace * Cast2Face (); + GRegion * Cast2Region (); + // bindings static void registerBindings(binding *b); }; diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp index 3d3b857a1b8718751f1bd94f16ec0e620317b6b4..a10fcdd155252f0459323b717aa884383254d0ef 100644 --- a/Geo/GFace.cpp +++ b/Geo/GFace.cpp @@ -1054,6 +1054,26 @@ void GFace::lloyd(int nbiter, int infn){ algo(this); } + // replace edges (gor gluing) +void GFace::replaceEdges (std::list<GEdge*> & new_edges) { + replaceEdgesInternal (new_edges); + std::list<GEdge*>::iterator it = l_edges.begin(); + std::list<GEdge*>::iterator it2 = new_edges.begin(); + std::list<int>::iterator it3 = l_dirs.begin(); + std::list<int> newdirs; + for ( ; it != l_edges.end() ; ++it,++it2,++it3){ + (*it)->delFace(this); + (*it2)->addFace(this); + if ((*it2)->getBeginVertex() == (*it)->getBeginVertex()) + newdirs.push_back(*it3); + else + newdirs.push_back(-(*it3)); + } + l_edges = new_edges; + l_dirs = newdirs; +} + + #include "Bindings.h" void GFace::registerBindings(binding *b) diff --git a/Geo/GFace.h b/Geo/GFace.h index df51d9c963193928e91801a2c1b1fa77365ddc05..0bc5ee2ad4babde3c90d6f0e5f44d1d6f4acb794 100644 --- a/Geo/GFace.h +++ b/Geo/GFace.h @@ -50,6 +50,9 @@ class GFace : public GEntity std::list<GEdge *> embedded_edges; std::list<GVertex *> embedded_vertices; GFaceCompound *compound; // this model edge belongs to a compound + // replace edges (gor gluing) for specific modelers, we have to re-create + // internal data ... + virtual void replaceEdgesInternal (std::list<GEdge*> &){} public: // this will become protected or private std::list<GEdgeLoop> edgeLoops; @@ -295,6 +298,9 @@ class GFace : public GEntity // those vertices are classifed on this GFace, their type is MFaceVertex. // After mesh generation, those are moved to the mesh_vertices array std::vector<MVertex*> _additional_vertices; + + // replace edges (gor gluing) + void replaceEdges (std::list<GEdge*> &); static void registerBindings(binding *b); }; diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index 8e6fb72a2720faac20e85587601ba6e3df40b016..560f796260a99687f1de076e265196c33b4a5cc4 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -250,6 +250,19 @@ int GModel::maxFaceNum() return MAXX; } +int GModel::maxRegionNum() +{ + + riter it = firstRegion(); + riter ite = lastRegion(); + int MAXX = 0; + while(it != ite){ + MAXX = std::max(MAXX, (*it)->tag()); + ++it; + } + return MAXX; +} + GRegion *GModel::getRegionByTag(int n) const { GEntity tmp((GModel*)this, n); @@ -1393,6 +1406,263 @@ void GModel::save(std::string fileName) GModel::setCurrent(temp); } +static void ComputeDuplicates (GModel * model, + std::multimap<GVertex*,GVertex*> & Unique2Duplicates, + std::map<GVertex*,GVertex*> & Duplicates2Unique, + const double &eps){ + // in a first time, we use a greedy algorithm in n^2 + // using bounding boxes and the Octree would certainly be better + // for huge models... + + std::list<GVertex*> v; + + v.insert(v.begin(),model->firstVertex(),model->lastVertex()); + + while(!v.empty()){ + GVertex *pv = *v.begin(); + v.erase(v.begin()); + bool found = false; + for ( std::multimap<GVertex*,GVertex*>::iterator it = Unique2Duplicates.begin(); it != Unique2Duplicates.end() ; ++it ){ + GVertex *unique = it->first; + const double d = sqrt ((unique->x()-pv->x())*(unique->x()-pv->x())+ + (unique->y()-pv->y())*(unique->y()-pv->y())+ + (unique->z()-pv->z())*(unique->z()-pv->z())); + if (d <= eps) { + found = true; + Unique2Duplicates.insert(std::make_pair(unique,pv)); + Duplicates2Unique[pv] = unique; + break; + } + } + if (!found) { + Unique2Duplicates.insert(std::make_pair(pv,pv)); + Duplicates2Unique[pv] = pv; + } + } +} + +static void glueVerticesInEdges(GModel * model, + std::multimap<GVertex*,GVertex*> & Unique2Duplicates, + std::map<GVertex*,GVertex*> & Duplicates2Unique){ + Msg::Debug("Gluing Edges"); + for (GModel::eiter it = model->firstEdge(); it != model->lastEdge();++it){ + GEdge *e = *it; + GVertex *v1 = e->getBeginVertex(); + GVertex *v2 = e->getEndVertex(); + GVertex *replacementOfv1 = Duplicates2Unique[v1]; + GVertex *replacementOfv2 = Duplicates2Unique[v2]; + if ((v1 != replacementOfv1) || (v2 != replacementOfv2)){ + Msg::Debug("Model Edge %d is re-build",e->tag()); + e->replaceEndingPoints (replacementOfv1,replacementOfv2); + } + } +} + +static void ComputeDuplicates (GModel * model, + std::multimap<GEdge*,GEdge*> & Unique2Duplicates, + std::map<GEdge*,GEdge*> & Duplicates2Unique, + const double &eps){ + // in a first time, we use a greedy algorithm in n^2 + + // first check edges that have same endpoints + + std::list<GEdge*> e; + + e.insert(e.begin(),model->firstEdge(),model->lastEdge()); + + while(!e.empty()){ + GEdge *pe = *e.begin(); + // compute a point + Range<double> r = pe->parBounds(0); + GPoint gp = pe->point(0.5*(r.low()+r.high())); + e.erase(e.begin()); + bool found = false; + for ( std::multimap<GEdge*,GEdge*>::iterator it = Unique2Duplicates.begin(); it != Unique2Duplicates.end() ; ++it ){ + GEdge *unique = it->first; + + // printf ("checking %d %d\n",unique->tag(),pe->tag()); + // first check edges that have same endpoints + if ((unique->getBeginVertex() == pe->getBeginVertex() && + unique->getEndVertex() == pe->getEndVertex()) || + (unique->getEndVertex() == pe->getBeginVertex() && + unique->getBeginVertex() == pe->getEndVertex())){ + // printf ("topology ok\n"); + if (unique->geomType() == GEntity::Line && + pe->geomType() == GEntity::Line ){ + found = true; + Unique2Duplicates.insert(std::make_pair(unique,pe)); + Duplicates2Unique[pe] = unique; + // printf ("D2U[%d] = %d\n",pe->tag(),unique->tag()); + break; + } + double t; + GPoint gp2 = pe->closestPoint(SPoint3(gp.x(),gp.y(),gp.z()),t); + const double d = sqrt((gp.x()-gp2.x())*(gp.x()-gp2.x())+ + (gp.y()-gp2.y())*(gp.y()-gp2.y())+ + (gp.z()-gp2.z())*(gp.z()-gp2.z())); + // printf ("closest point @ distance %g\n",d); + if (t >= r.low() && t <= r.high() && d <= eps) { + // printf ("both are close -> glue\n"); + found = true; + Unique2Duplicates.insert(std::make_pair(unique,pe)); + Duplicates2Unique[pe] = unique; + // printf ("D2U[%d] = %d\n",pe->tag(),unique->tag()); + break; + } + } + } + if (!found) { + Unique2Duplicates.insert(std::make_pair(pe,pe)); + Duplicates2Unique[pe] = pe; + // printf ("D2U[%d] = %d\n",pe->tag(),pe->tag()); + } + } + + // for(std::map<GEdge*,GEdge*>::iterator it = Duplicates2Unique.begin(); it != Duplicates2Unique.end(); ++it){ + // printf("E(%d) -- E(%d)\n",it->first->tag(),it->second->tag()); + // } + +} + +static void glueEdgesInFaces(GModel * model, + std::multimap<GEdge*,GEdge*> & Unique2Duplicates, + std::map<GEdge*,GEdge*> & Duplicates2Unique){ + Msg::Debug("Gluing Model Faces"); + for (GModel::fiter it = model->firstFace(); it != model->lastFace();++it){ + GFace *f = *it; + bool aDifferenceExists = false; + std::list<GEdge*> old = f->edges(), enew; + // printf("face %d %d edges\n",(*it)->tag(),old.size()); + for (std::list<GEdge*>::iterator eit = old.begin(); eit !=old.end() ; eit++){ + GEdge *temp = Duplicates2Unique[*eit]; + enew.push_back(temp); + // printf("edge %d vs. %d\n",(*eit)->tag(),temp->tag()); + if (temp != *eit){ + aDifferenceExists = true; + } + } + if (aDifferenceExists){ + Msg::Debug("Model Face %d is re-build",f->tag()); + f->replaceEdges (enew); + } + } +} + +static void ComputeDuplicates (GModel * model, + std::multimap<GFace*,GFace*> & Unique2Duplicates, + std::map<GFace*,GFace*> & Duplicates2Unique, + const double &eps){ + std::list<GFace*> f; + + f.insert(f.begin(),model->firstFace(),model->lastFace()); + + while(!f.empty()){ + GFace *pf = *f.begin(); + // compute a point + Range<double> r = pf->parBounds(0); + Range<double> s = pf->parBounds(1); + // FIXME : this is WRONG (the point can be in a hole ;-) + GPoint gp = pf->point(SPoint2(0.5*(r.low()+r.high()),0.5*(s.low()+s.high()))); + f.erase(f.begin()); + std::list<GEdge*> pf_edges = pf->edges(); + pf_edges.sort(); + bool found = false; + for ( std::multimap<GFace*,GFace*>::iterator it = Unique2Duplicates.begin(); it != Unique2Duplicates.end() ; ++it ){ + GFace *unique = it->first; + std::list<GEdge*> unique_edges = unique->edges(); + if (unique_edges.size() == pf_edges.size()){ + unique_edges.sort(); + std::list<GEdge*>::iterator it_pf = pf_edges.begin(); + std::list<GEdge*>::iterator it_unique = unique_edges.begin(); + bool all_similar = true; + // first check faces that have same edges + for (; it_pf != pf_edges.end() ; ++it_pf,it_unique++){ + if (*it_pf != *it_unique) all_similar = false; + } + if (all_similar){ + if (unique->geomType() == GEntity::Plane && + pf->geomType() == GEntity::Plane ){ + found = true; + Unique2Duplicates.insert(std::make_pair(unique,pf)); + Duplicates2Unique[pf] = unique; + // printf ("F: D2U[%d] = %d\n",pf->tag(),unique->tag()); + break; + } + double t[2]={0,0}; + // GPoint gp2 = pf->closestPoint(SPoint3(gp.x(),gp.y(),gp.z()),t); + const double d = 1.0; + /*sqrt((gp.x()-gp2.x())*(gp.x()-gp2.x())+ + (gp.y()-gp2.y())*(gp.y()-gp2.y())+ + (gp.z()-gp2.z())*(gp.z()-gp2.z()));*/ + // printf ("closest point @ distance %g\n",d); + if (t[0] >= r.low() && t[0] <= r.high() && + t[1] >= s.low() && t[1] <= s.high() && d <= eps) { + // printf ("both are close -> glue\n"); + found = true; + Unique2Duplicates.insert(std::make_pair(unique,pf)); + Duplicates2Unique[pf] = unique; + // printf ("F : D2U[%d] = %d\n",pf->tag(),unique->tag()); + break; + } + } + } + } + if (!found) { + Unique2Duplicates.insert(std::make_pair(pf,pf)); + Duplicates2Unique[pf] = pf; + // printf ("F : D2U[%d] = %d\n",pf->tag(),pf->tag()); + } + } + + // for(std::map<GFace*,GFace*>::iterator it = Duplicates2Unique.begin(); it != Duplicates2Unique.end(); ++it){ + // printf("F(%d) -- F(%d)\n",it->first->tag(),it->second->tag()); + // } +} + +static void glueFacesInRegions(GModel * model, + std::multimap<GFace*,GFace*> & Unique2Duplicates, + std::map<GFace*,GFace*> & Duplicates2Unique){ + Msg::Debug("Gluing Regions"); + for (GModel::riter it = model->firstRegion(); it != model->lastRegion();++it){ + GRegion *r = *it; + bool aDifferenceExists = false; + std::list<GFace*> old = r->faces(), fnew; + for (std::list<GFace*>::iterator fit = old.begin(); fit !=old.end() ; fit++){ + GFace *temp = Duplicates2Unique[*fit]; + fnew.push_back(temp); + // printf("edge %d vs. %d\n",(*eit)->tag(),temp->tag()); + if (temp != *fit){ + aDifferenceExists = true; + } + } + if (aDifferenceExists){ + Msg::Debug("Model Region %d is re-build",r->tag()); + r->replaceFaces (fnew); + } + } +} + +void GModel::glue(const double &eps) { + { + std::multimap<GVertex*,GVertex*> Unique2Duplicates; + std::map<GVertex*,GVertex*> Duplicates2Unique; + ComputeDuplicates (this, Unique2Duplicates,Duplicates2Unique, eps); + glueVerticesInEdges(this, Unique2Duplicates,Duplicates2Unique); + } + { + std::multimap<GEdge*,GEdge*> Unique2Duplicates; + std::map<GEdge*,GEdge*> Duplicates2Unique; + ComputeDuplicates (this, Unique2Duplicates,Duplicates2Unique, eps); + glueEdgesInFaces(this, Unique2Duplicates,Duplicates2Unique); + } + { + std::multimap<GFace*,GFace*> Unique2Duplicates; + std::map<GFace*,GFace*> Duplicates2Unique; + ComputeDuplicates (this, Unique2Duplicates,Duplicates2Unique, eps); + glueFacesInRegions(this, Unique2Duplicates,Duplicates2Unique); + } +} + #include "Bindings.h" void GModel::registerBindings(binding *b) @@ -1441,6 +1711,9 @@ void GModel::registerBindings(binding *b) cm = cb->addMethod("getRegionByTag", &GModel::getRegionByTag); cm->setDescription("access a geometrical region by tag"); cm->setArgNames("tag", NULL); + cm = cb->addMethod("glue", &GModel::glue); + cm->setDescription("glue the geometric model using geometric tolerance eps"); + cm->setArgNames("eps", NULL); cm = cb->setConstructor<GModel>(); cm->setDescription("Create an empty GModel"); } diff --git a/Geo/GModel.h b/Geo/GModel.h index 77d2673b4d1e5033bdfd9774d72e6936867e9485..3741eef7aedacac862313c3eb5ba24b4db6f22c8 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -29,10 +29,12 @@ class CGNSOptions; class gLevelset; class discreteFace; class binding; +class OCCFactory; // A geometric model. The model is a "not yet" non-manifold B-Rep. class GModel { + friend class OCCFactory; protected: // the name of the model std::string _name; @@ -167,6 +169,7 @@ class GModel int maxVertexNum(); int maxEdgeNum(); int maxFaceNum(); + int maxRegionNum(); // quickly check if the model is empty (i.e., if it contains no // entities) @@ -339,6 +342,14 @@ class GModel // mesh the model int mesh(int dimension); + // glue entities in the model + // assume a tolerance eps and merge vertices that are too close, + // then merge edges, faces and regions. + // the gluer changes the geometric model, so that some pointers + // could become invalid !! I think that using references to some + // tables of pointers for bindings e.g. could be better. FIXME !! + void glue (const double &eps); + // build a new GModel by cutting the elements crossed by the levelset ls // if cutElem is set to false, split the model without cutting the elements GModel *buildCutGModel(gLevelset *ls, bool cutElem = true); diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp index e38bbf686ab6bac9b12bcc18eda12ae403a31290..5426ed63d52a4514da2253cc539644b094268163 100644 --- a/Geo/GModelIO_OCC.cpp +++ b/Geo/GModelIO_OCC.cpp @@ -20,15 +20,48 @@ void OCC_Internals::buildLists() { - TopExp_Explorer exp0, exp1, exp2, exp3, exp4, exp5; somap.Clear(); shmap.Clear(); fmap.Clear(); wmap.Clear(); emap.Clear(); vmap.Clear(); + addShapeToLists(shape); +} + +void OCC_Internals::buildShapeFromLists(TopoDS_Shape _shape){ + BRep_Builder B; + TopoDS_Compound C; + B.MakeCompound(C); + B.Add(C,_shape); + for(int i = 1; i <= vmap.Extent(); i++) B.Add(C,vmap(i)); + for(int i = 1; i <= emap.Extent(); i++) B.Add(C,emap(i)); + for(int i = 1; i <= fmap.Extent(); i++) B.Add(C,fmap(i)); + for(int i = 1; i <= somap.Extent(); i++) B.Add(C,somap(i)); + shape = C; +} + +const TopoDS_Shape *OCC_Internals::lookupInLists (TopoDS_Shape _shape){ + if (_shape.ShapeType() == TopAbs_VERTEX) { + TopoDS_Vertex vertex = TopoDS::Vertex(_shape); + int i = vmap.FindIndex(vertex); + if( i < 1)return NULL; + else return &vmap(i); + } + else if (_shape.ShapeType() == TopAbs_EDGE) { + TopoDS_Edge edge = TopoDS::Edge(_shape); + int i = emap.FindIndex(edge); + if( i < 1)return 0; + else return &emap(i); + } +} + + +void OCC_Internals::addShapeToLists(TopoDS_Shape _shape) +{ + TopExp_Explorer exp0, exp1, exp2, exp3, exp4, exp5; - for(exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next()){ + for(exp0.Init(_shape, TopAbs_SOLID); exp0.More(); exp0.Next()){ TopoDS_Solid solid = TopoDS::Solid(exp0.Current()); if(somap.FindIndex(TopoDS::Solid(exp0.Current())) < 1){ somap.Add(TopoDS::Solid(exp0.Current())); @@ -105,7 +138,7 @@ void OCC_Internals::buildLists() } // Free Faces - for(exp2.Init(shape, TopAbs_FACE, TopAbs_SHELL); exp2.More(); exp2.Next()){ + for(exp2.Init(_shape, TopAbs_FACE, TopAbs_SHELL); exp2.More(); exp2.Next()){ TopoDS_Face face = TopoDS::Face(exp2.Current()); if(fmap.FindIndex(face) < 1){ fmap.Add(face); @@ -133,7 +166,7 @@ void OCC_Internals::buildLists() } // Free Wires - for(exp3.Init(shape, TopAbs_WIRE, TopAbs_FACE); exp3.More(); exp3.Next()){ + for(exp3.Init(_shape, TopAbs_WIRE, TopAbs_FACE); exp3.More(); exp3.Next()){ TopoDS_Wire wire = TopoDS::Wire(exp3.Current()); if(wmap.FindIndex(wire) < 1){ wmap.Add(wire); @@ -154,7 +187,7 @@ void OCC_Internals::buildLists() } // Free Edges - for(exp4.Init(shape, TopAbs_EDGE, TopAbs_WIRE); exp4.More(); exp4.Next()){ + for(exp4.Init(_shape, TopAbs_EDGE, TopAbs_WIRE); exp4.More(); exp4.Next()){ TopoDS_Edge edge = TopoDS::Edge(exp4.Current()); if(emap.FindIndex(edge) < 1){ emap.Add(edge); @@ -168,7 +201,7 @@ void OCC_Internals::buildLists() } // Free Vertices - for(exp5.Init(shape, TopAbs_VERTEX, TopAbs_EDGE); exp5.More(); exp5.Next()){ + for(exp5.Init(_shape, TopAbs_VERTEX, TopAbs_EDGE); exp5.More(); exp5.Next()){ TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current()); if(vmap.FindIndex(vertex) < 1) vmap.Add(vertex); @@ -417,38 +450,123 @@ void OCC_Internals::loadShape(const TopoDS_Shape *s) buildLists(); } +GVertex* OCC_Internals::addVertexToModel(GModel *model, TopoDS_Vertex vertex){ + GVertex *gv = getOCCVertexByNativePtr (model,vertex); + if (gv)return gv; + buildShapeFromLists(vertex); + gv = new OCCVertex(model, model->maxVertexNum()+1, vertex); + model->add(gv); + return gv; +} + +GEdge * OCC_Internals::addEdgeToModel(GModel *model, TopoDS_Edge edge){ + GEdge *ge = getOCCEdgeByNativePtr(model,edge); + if (ge) return ge; + buildShapeFromLists(edge); + TopoDS_Vertex occv1 = TopExp::FirstVertex(edge); + TopoDS_Vertex occv2 = TopExp::LastVertex(edge); + GVertex *v1 = addVertexToModel(model,occv1); + GVertex *v2 = addVertexToModel(model,occv2); + OCCEdge *e = new OCCEdge(model, edge, model->maxEdgeNum()+1, v1, v2); + model->add(e); + return e; +} + +GEdge * OCC_Internals::addEdgeToModel(GModel *model, TopoDS_Edge edge, GVertex *g1, GVertex *g2){ + OCCEdge *e = new OCCEdge(model, edge, model->maxEdgeNum()+1, g1, g2); + e->replaceEndingPoints (g1,g2); + model->add(e); + return e; +} + +GFace* OCC_Internals::addFaceToModel(GModel *model, TopoDS_Face face, int i){ + + GFace *gf = getOCCFaceByNativePtr(model,face); + if (gf) return gf; + + if (i < 0){ + std::list<GEdge*> _edges; + TopExp_Explorer exp2, exp3; + for(exp2.Init(face, TopAbs_WIRE); exp2.More(); exp2.Next()){ + TopoDS_Wire wire = TopoDS::Wire(exp2.Current()); + for(exp3.Init(wire, TopAbs_EDGE); exp3.More(); exp3.Next()){ + TopoDS_Edge edge = TopoDS::Edge(exp3.Current()); + _edges.push_back(addEdgeToModel(model, edge)); + } + } + i = model->maxFaceNum()+1; + OCCFace *f = new OCCFace(model, face, i); + model->add(f); + model->glue(Precision::Confusion()); + return f; + } + OCCFace *f = new OCCFace(model, face, i); + model->add(f); + return f; +} + +GEntity* OCC_Internals::addShapeToModel(GModel *model, TopoDS_Shape sh){ + TopExp_Explorer exp0, exp1, exp2; + std::vector<GEntity*> e; + for(exp0.Init(sh, TopAbs_SOLID); exp0.More(); exp0.Next()){ + TopoDS_Solid solid = TopoDS::Solid(exp0.Current()); + for(exp1.Init(exp0.Current(), TopAbs_SHELL); exp1.More(); exp1.Next()){ + TopoDS_Shell shell = TopoDS::Shell(exp1.Current()); + for(exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next()){ + TopoDS_Face face = TopoDS::Face(exp2.Current()); + addFaceToModel(model, face, -1); + } + } + OCCRegion *r = new OCCRegion(model, solid, model->maxRegionNum()+1); + e.push_back(r); + } + return e[0]; +} + +GRegion* OCC_Internals::addRegionToModel(GModel *model, TopoDS_Solid region, int i){ + if (i < 0){ + TopExp_Explorer exp0, exp1, exp2; + for(exp0.Init(region, TopAbs_SOLID); exp0.More(); exp0.Next()){ + TopoDS_Solid solid = TopoDS::Solid(exp0.Current()); + for(exp1.Init(exp0.Current(), TopAbs_SHELL); exp1.More(); exp1.Next()){ + TopoDS_Shell shell = TopoDS::Shell(exp1.Current()); + for(exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next()){ + TopoDS_Face face = TopoDS::Face(exp2.Current()); + addFaceToModel(model, face, -1); + } + } + } + i = model->maxRegionNum()+1; + } + OCCRegion *r = new OCCRegion(model, region, i); + model->add(r); + return r; +} + void OCC_Internals::buildGModel(GModel *model) { // building geom vertices int nvertices = vmap.Extent(); + printf("%d vertices\n",nvertices); for(int i = 1; i <= nvertices; i++){ - OCCVertex *v = new OCCVertex(model, i, TopoDS::Vertex(vmap(i))); - model->add(v); + model->add(new OCCVertex(model, i, TopoDS::Vertex(vmap(i)))); } // building geom edges int nedges = emap.Extent(); for(int i = 1; i <= nedges; i++){ - TopoDS_Edge edge = TopoDS::Edge(emap(i)); - int i1 = vmap.FindIndex(TopExp::FirstVertex(edge)); - int i2 = vmap.FindIndex(TopExp::LastVertex(edge)); - GVertex *v1 = model->getVertexByTag(i1); - GVertex *v2 = model->getVertexByTag(i2); - OCCEdge *e = new OCCEdge(model, edge, i, v1, v2); - model->add(e); + int i1 = vmap.FindIndex(TopExp::FirstVertex(TopoDS::Edge(emap(i)))); + int i2 = vmap.FindIndex(TopExp::LastVertex(TopoDS::Edge(emap(i)))); + model->add(new OCCEdge(model, TopoDS::Edge(emap(i)), i, model->getVertexByTag(i1), model->getVertexByTag(i2))); } // building geom faces int nfaces = fmap.Extent(); for(int i = 1; i <= nfaces; i++){ - TopoDS_Face face = TopoDS::Face(fmap(i)); - OCCFace *f = new OCCFace(model, face, i, emap); - model->add(f); + model->add(new OCCFace(model, TopoDS::Face(fmap(i)), i)); } // building geom regions int nvolumes = somap.Extent(); for(int i = 1; i <= nvolumes; i++){ - TopoDS_Solid solid = TopoDS::Solid(somap(i)); - OCCRegion *r = new OCCRegion(model, solid, i, fmap); - model->add(r); + model->add(new OCCRegion(model, TopoDS::Solid(somap(i)), i)); } } @@ -456,7 +574,7 @@ void OCC_Internals::removeAllDuplicates(const double &tolerance) { } -static void addSimpleShapes(TopoDS_Shape theShape, TopTools_ListOfShape &theList) +void addSimpleShapes(TopoDS_Shape theShape, TopTools_ListOfShape &theList) { if (theShape.ShapeType() != TopAbs_COMPOUND && theShape.ShapeType() != TopAbs_COMPSOLID) { @@ -615,6 +733,7 @@ TopoDS_Shape GlueFaces(const TopoDS_Shape &theShape, void OCC_Internals::applyBooleanOperator(TopoDS_Shape tool, const BooleanOperator &op) { + printf("coucou2\n"); if (tool.IsNull()) return; if (shape.IsNull()) shape = tool; else{ @@ -735,6 +854,7 @@ void OCC_Internals::applyBooleanOperator(TopoDS_Shape tool, const BooleanOperato break; case OCC_Internals::Fuse : { + printf("coucou\n"); BRepAlgoAPI_Fuse BO (tool, shape); if (!BO.IsDone()) { Msg::Error("Fuse operation can not be performed on the given shapes"); diff --git a/Geo/GModelIO_OCC.h b/Geo/GModelIO_OCC.h index e14548265179e968eb74ac7c4bef31f2fcf395bc..aaa712c287273c92849f8f688f94c04dece64fc6 100644 --- a/Geo/GModelIO_OCC.h +++ b/Geo/GModelIO_OCC.h @@ -38,7 +38,16 @@ class OCC_Internals { void loadIGES(const char *); void loadShape(const TopoDS_Shape *); void buildGModel(GModel *gm); + GVertex * addVertexToModel(GModel *model, TopoDS_Vertex v); + GEdge * addEdgeToModel (GModel *model, TopoDS_Edge e); + GEdge * addEdgeToModel (GModel *model, TopoDS_Edge e, GVertex *v1, GVertex *v2); + GFace * addFaceToModel (GModel *model, TopoDS_Face f, int i=-1); + GRegion * addRegionToModel (GModel *model, TopoDS_Solid r, int i=-1); + GEntity * addShapeToModel (GModel *model, TopoDS_Shape); void buildLists(); + void addShapeToLists(TopoDS_Shape shape); + void buildShapeFromLists(TopoDS_Shape _shape); + const TopoDS_Shape *lookupInLists (TopoDS_Shape _shape); void removeAllDuplicates(const double &tolerance); void Box(const SPoint3 &p1, const SPoint3 &p2, const BooleanOperator &op); @@ -53,6 +62,7 @@ class OCC_Internals { double angle, const BooleanOperator &op); void Fillet(std::vector<TopoDS_Edge> &shapes, double radius); void applyBooleanOperator(TopoDS_Shape tool, const BooleanOperator &op); + TopoDS_Shape getShape () {return shape;} }; #endif diff --git a/Geo/GRegion.cpp b/Geo/GRegion.cpp index 0f40eaae32d1b0d9e8d7f9628e6fad103b2e0197..10b67155ba263fb8ee2b1c44fdb2405a9ca69b47 100644 --- a/Geo/GRegion.cpp +++ b/Geo/GRegion.cpp @@ -259,6 +259,25 @@ bool GRegion::edgeConnected(GRegion *r) const return false; } +// replace faces (gor gluing) +void GRegion::replaceFaces (std::list<GFace*> & new_faces) { + replaceFacesInternal (new_faces); + std::list<GFace*>::iterator it = l_faces.begin(); + std::list<GFace*>::iterator it2 = new_faces.begin(); + std::list<int>::iterator it3 = l_dirs.begin(); + std::list<int> newdirs; + for ( ; it != l_faces.end() ; ++it,++it2,++it3){ + (*it)->delRegion(this); + (*it2)->addRegion(this); + // if ((*it2)->getBeginVertex() == (*it)->getBeginVertex()) + newdirs.push_back(*it3); + // else + // newdirs.push_back(-(*it3)); + } + l_faces = new_faces; + l_dirs = newdirs; +} + void GRegion::registerBindings(binding *b) { classBinding *cb = b->addClass<GRegion>("GRegion"); diff --git a/Geo/GRegion.h b/Geo/GRegion.h index 65e6116e12660e1506d1aaa2fd3f6c9ae21f70bf..5105ad9acd98646f810490ae04b65ada8fdea46b 100644 --- a/Geo/GRegion.h +++ b/Geo/GRegion.h @@ -26,6 +26,9 @@ class GRegion : public GEntity { protected: std::list<GFace*> l_faces; std::list<int> l_dirs; + // replace faces (for gluing) for specific modelers, we have to re-create + // internal data ... + virtual void replaceFacesInternal (std::list<GFace*> &) {} public: GRegion(GModel *model, int tag); @@ -98,6 +101,9 @@ class GRegion : public GEntity { std::vector<MPyramid*> pyramids; std::vector<MPolyhedron*> polyhedra; + // replace edges (gor gluing) + void replaceFaces (std::list<GFace*> &); + static void registerBindings(binding *b); }; diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index b1b41e874fd23792f71e00ae39987276c603a702..e7243bbb8e98b47f9a855087d206d728ef7ee82d 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -475,6 +475,7 @@ Curve *Create_Curve(int Num, int Typ, int Order, List_T *Liste, pC->Extrude = NULL; pC->Typ = Typ; pC->Num = Num; + pC->meshMaster = Num; GModel::current()->getGEOInternals()->MaxLineNum = std::max(GModel::current()->getGEOInternals()->MaxLineNum, Num); pC->Method = MESH_UNSTRUCTURED; @@ -588,6 +589,7 @@ Surface *Create_Surface(int Num, int Typ) pS->Num = Num; pS->geometry = 0; pS->InSphereCenter = 0; + pS->meshMaster = Num; GModel::current()->getGEOInternals()->MaxSurfaceNum = std::max(GModel::current()->getGEOInternals()->MaxSurfaceNum, Num); @@ -2477,6 +2479,7 @@ static int Extrude_ProtudeSurface(int type, int is, // numbering scheme Tree_Suppress(GModel::current()->getGEOInternals()->Surfaces, &chapeau); chapeau->Num = NEWSURFACE(); + chapeau->meshMaster = chapeau->Num; GModel::current()->getGEOInternals()->MaxSurfaceNum = chapeau->Num; Tree_Add(GModel::current()->getGEOInternals()->Surfaces, &chapeau); diff --git a/Geo/Geo.h b/Geo/Geo.h index 467ae3028bd02e4ca792d893b10266a264568917..bffb02862dc9c128d9eb403c7cffca0fe624e1aa 100644 --- a/Geo/Geo.h +++ b/Geo/Geo.h @@ -131,6 +131,7 @@ class Curve{ CircParam Circle; DrawingColor Color; gmshSurface *geometry; + int meshMaster; std::vector<int> compound; }; @@ -164,6 +165,7 @@ class Surface{ // should be the only one in gmsh, so parameter "Type" should // disappear from the class Surface. gmshSurface *geometry; + int meshMaster; std::vector<int> compound, compoundBoundary[4]; }; diff --git a/Geo/OCCEdge.cpp b/Geo/OCCEdge.cpp index f61dab51be0ee11ce7478677fcb81b2d92a957ca..15b14e8196c9aa42cb5d9f4488051156a96a9993 100644 --- a/Geo/OCCEdge.cpp +++ b/Geo/OCCEdge.cpp @@ -22,10 +22,32 @@ #include "Geom_Circle.hxx" #include "Geom_Line.hxx" #include "Geom_Conic.hxx" +#include "BOPTools_Tools.hxx" + +GEdge *getOCCEdgeByNativePtr(GModel *model, TopoDS_Edge toFind) +{ + GModel::eiter it =model->firstEdge(); + for (; it !=model->lastEdge(); it++){ + OCCEdge *ed = dynamic_cast<OCCEdge*>(*it); + if (ed){ + if (toFind.IsSame(ed->getTopoDS_Edge())){ + // printf("found %d coucou\n",ed->tag()); + return *it; + } + if (toFind.IsSame(ed->getTopoDS_EdgeOld())){ + // printf("found %d coucou\n",ed->tag()); + return *it; + } + } + } + return 0; +} + OCCEdge::OCCEdge(GModel *model, TopoDS_Edge edge, int num, GVertex *v1, GVertex *v2) : GEdge(model, num, v1, v2), c(edge), trimmed(0) { + // printf("NEW OCCEDGE %d\n",num); curve = BRep_Tool::Curve(c, s0, s1); // build the reverse curve c_rev = c; @@ -89,6 +111,30 @@ SPoint2 OCCEdge::reparamOnFace(const GFace *face, double epar, int dir) const return SPoint2(u, v); } +GPoint OCCEdge::closestPoint(const SPoint3 &qp, double ¶m) const{ + gp_Pnt pnt(qp.x(), qp.y(), qp.z()); + GeomAPI_ProjectPointOnCurve proj(pnt, curve, s0, s1); + + if(!proj.NbPoints()){ + Msg::Error("OCC Project Point on Curve FAIL"); + return GPoint(0, 0); + } + + param = proj.LowerDistanceParameter(); + + // Msg::Info("projection lower distance parameters %g %g",pp[0],pp[1]); + + if(param < s0 || param > s1){ + Msg::Error("Point projection is out of edge bounds"); + return GPoint(0, 0); + } + + pnt = proj.NearestPoint(); + return GPoint(pnt.X(), pnt.Y(), pnt.Z(), this, param); + +} + + // True if the edge is a seam for the given face bool OCCEdge::isSeam(const GFace *face) const { @@ -253,5 +299,62 @@ void OCCEdge::writeGEO(FILE *fp) else GEdge::writeGEO(fp); } +// sometimes, we ask to replace the ending points of the curve +// in gluing operations for example +void OCCEdge::replaceEndingPointsInternals(GVertex *g0, GVertex *g1){ + + TopoDS_Vertex aV1 = *((TopoDS_Vertex*)v0->getNativePtr()); + TopoDS_Vertex aV2 = *((TopoDS_Vertex*)v1->getNativePtr()); + TopoDS_Vertex aVR1 = *((TopoDS_Vertex*)g0->getNativePtr()); + TopoDS_Vertex aVR2 = *((TopoDS_Vertex*)g1->getNativePtr()); + + // printf("%p %p --- %p %p replacing %d %d by %d %d in occedge %d\n", + // v0,v1,g0,g1,v0->tag(),v1->tag(),g0->tag(),g1->tag(),tag()); + + Standard_Boolean bIsDE = BRep_Tool::Degenerated(c); + // + TopoDS_Edge aEx = c; + aEx.Orientation(TopAbs_FORWARD); + + Standard_Real t1=s0; + Standard_Real t2=s1; + // + aVR1.Orientation(TopAbs_FORWARD); + aVR2.Orientation(TopAbs_REVERSED); + // + if (bIsDE) { + Standard_Real aTol; + BRep_Builder aBB; + TopoDS_Edge E; + TopAbs_Orientation anOrE; + // + anOrE=c.Orientation(); + aTol=BRep_Tool::Tolerance(c); + // + E=aEx; + E.EmptyCopy(); + // + aBB.Add (E, aVR1); + aBB.Add (E, aVR2); + aBB.Range(E, t1, t2); + aBB.Degenerated(E, Standard_True); + aBB.UpdateEdge(E, aTol); + // + _replacement=E; + } + // + else { + BOPTools_Tools::MakeSplitEdge(aEx, aVR1, t1, aVR2, t2, _replacement); + } + TopoDS_Edge temp = c; + c = _replacement; + _replacement = temp; + curve = BRep_Tool::Curve(c, s0, s1); + //build the reverse curve + c_rev = c; + c_rev.Reverse(); + +} + #endif diff --git a/Geo/OCCEdge.h b/Geo/OCCEdge.h index 0c624be95b98a881ec82736b50e056652188997d..a521b3f2e33253eb9430073886a0a0c96c603dc5 100644 --- a/Geo/OCCEdge.h +++ b/Geo/OCCEdge.h @@ -18,6 +18,7 @@ class OCCFace; class OCCEdge : public GEdge { protected: + TopoDS_Edge _replacement; TopoDS_Edge c; TopoDS_Edge c_rev; double s0, s1; @@ -34,6 +35,7 @@ class OCCEdge : public GEdge { virtual SVector3 firstDer(double par) const; virtual double curvature (double par) const; virtual SPoint2 reparamOnFace(const GFace *face, double epar, int dir) const; + virtual GPoint closestPoint(const SPoint3 &queryPoint, double ¶m) const; ModelType getNativeType() const { return OpenCascadeModel; } void * getNativePtr() const { return (void*)&c; } virtual int minimumMeshSegments () const; @@ -42,7 +44,11 @@ class OCCEdge : public GEdge { void setTrimmed(OCCFace *); bool isSeam(const GFace *) const; virtual void writeGEO(FILE *fp); + TopoDS_Edge getTopoDS_Edge() const {return c;} + TopoDS_Edge getTopoDS_EdgeOld() const {return _replacement;} + void replaceEndingPointsInternals(GVertex *, GVertex *); }; +GEdge *getOCCEdgeByNativePtr(GModel *model, TopoDS_Edge toFind); #endif diff --git a/Geo/OCCFace.cpp b/Geo/OCCFace.cpp index c17f68904e2e0fceb3ebf8b6ad932112e81ca1ce..e02deb4119d017737016dc602d6d26b85a991d6b 100644 --- a/Geo/OCCFace.cpp +++ b/Geo/OCCFace.cpp @@ -24,21 +24,32 @@ #include "Geom_Plane.hxx" #include "gp_Pln.hxx" #include "BRepMesh_FastDiscret.hxx" +#include "IntTools_Context.hxx" +#include "BOPTools_Tools2D.hxx" +#include "BOPTools_Tools3D.hxx" -OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape &emap) +OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num) : GFace(m, num), s(_s) { + // printf("NEW OCC FACE %d\n",tag()); + setup(); +} + +void OCCFace::setup() +{ + edgeLoops.clear(); + l_edges.clear(); + l_dirs.clear(); TopExp_Explorer exp2, exp3; for(exp2.Init(s, TopAbs_WIRE); exp2.More(); exp2.Next()){ TopoDS_Wire wire = TopoDS::Wire(exp2.Current()); - Msg::Debug("OCC Face %d - New Wire", num); + Msg::Debug("OCC Face %d - New Wire", tag()); std::list<GEdge*> l_wire; for(exp3.Init(wire, TopAbs_EDGE); exp3.More(); exp3.Next()){ TopoDS_Edge edge = TopoDS::Edge(exp3.Current()); - int index = emap.FindIndex(edge); - GEdge *e = m->getEdgeByTag(index); + GEdge *e = getOCCEdgeByNativePtr(model(),edge); if(!e){ - Msg::Error("Unknown edge %d in face %d", index, num); + Msg::Error("Unknown edge in face %d", tag()); } else{ l_wire.push_back(e); @@ -50,8 +61,9 @@ OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape } } } - + GEdgeLoop el(l_wire); + // printf("l_wire of size %d %d\n",l_wire.size(),el.count()); for(GEdgeLoop::citer it = el.begin(); it != el.end(); ++it){ l_edges.push_back(it->ge); l_dirs.push_back(it->_sign); @@ -71,9 +83,9 @@ OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape _periodic[0] = surface.IsUPeriodic(); _periodic[1] = surface.IsVPeriodic(); - ShapeAnalysis::GetFaceUVBounds(_s, umin, umax, vmin, vmax); - Msg::Debug("OCC Face %d with %d edges bounds (%g,%g)(%g,%g)", - num, l_edges.size(), umin, umax, vmin, vmax); + ShapeAnalysis::GetFaceUVBounds(s, umin, umax, vmin, vmax); + Msg::Debug("OCC Face %d with %d parameter bounds (%g,%g)(%g,%g)", + tag(), l_edges.size(), umin, umax, vmin, vmax); // we do that for the projections to converge on the borders of the // surface const double du = umax - umin; @@ -83,6 +95,7 @@ OCCFace::OCCFace(GModel *m, TopoDS_Face _s, int num, TopTools_IndexedMapOfShape umax += fabs(du) / 100.0; vmax += fabs(dv) / 100.0; occface = BRep_Tool::Surface(s); + // printf("size = %d\n",l_edges.size()); } Range<double> OCCFace::parBounds(int i) const @@ -355,4 +368,113 @@ bool OCCFace::buildSTLTriangulation(bool force) return true; } +GFace *getOCCFaceByNativePtr(GModel *model, TopoDS_Face toFind) +{ + GModel::fiter it =model->firstFace(); + for (; it !=model->lastFace(); ++it){ + OCCFace *gf = dynamic_cast<OCCFace*>(*it); + if (gf){ + if( toFind.IsSame(gf->getTopoDS_Face()) )return *it; + if( toFind.IsSame(gf->getTopoDS_FaceOld()) )return *it; + } + } + return 0; +} +void OCCFace::replaceEdgesInternal (std::list<GEdge*> &new_edges){ + + IntTools_Context myContext; + // we simply replace old edges by new edges in the structure + + // make a copy of s + TopoDS_Face copy_of_s_forward = s; + copy_of_s_forward.Orientation(TopAbs_FORWARD); + // make a copy of occface + TopLoc_Location location; + Handle(Geom_Surface) copy_of_occface = BRep_Tool::Surface(copy_of_s_forward, location); + // check periodicity + bool bIsUPeriodic=_periodic[0]; + // get tolerance + double tolerance =BRep_Tool::Tolerance(copy_of_s_forward); + + BRep_Builder aBB; + TopoDS_Face newFace; + aBB.MakeFace (newFace, copy_of_occface, location, tolerance); + // expolore the face + TopExp_Explorer aExpW, aExpE; + aExpW.Init(copy_of_s_forward, TopAbs_WIRE); + for (; aExpW.More(); aExpW.Next()) { + TopoDS_Wire newWire; + aBB.MakeWire(newWire); + const TopoDS_Wire& aW=TopoDS::Wire(aExpW.Current()); + aExpE.Init(aW, TopAbs_EDGE); + for (; aExpE.More(); aExpE.Next()) { + const TopoDS_Edge& aE=TopoDS::Edge(aExpE.Current()); + std::list<GEdge*>::iterator it = l_edges.begin(); + std::list<GEdge*>::iterator it2 = new_edges.begin(); + TopoDS_Edge aER; + Msg::Debug("trying to replace %d by %d",(*it)->tag(),(*it2)->tag()); + for ( ; it != l_edges.end() ; ++it,++it2){ + OCCEdge *occEd = dynamic_cast<OCCEdge*>(*it); + TopoDS_Edge olde = occEd->getTopoDS_Edge(); + if (olde.IsSame(aE)){ + aER = *((TopoDS_Edge*)(*it2)->getNativePtr()); + } + else { + olde = occEd->getTopoDS_EdgeOld(); + if (olde.IsSame(aE)){ + aER = *((TopoDS_Edge*)(*it2)->getNativePtr()); + } + } + } + if (aER.IsNull()){ + Msg::Error("cannot find an edge for gluing a face"); + } + aER.Orientation(TopAbs_FORWARD); + if (!BRep_Tool::Degenerated(aER)) { + if (bIsUPeriodic) { + Standard_Real aT1, aT2, aTx, aUx; + BRep_Builder aBB_; + // + double aTwoPI=2*M_PI+PI; + // + Handle(Geom2d_Curve) aC2D=BRep_Tool::CurveOnSurface(aER, copy_of_s_forward, aT1, aT2); + if (!aC2D.IsNull()) { + if (BRep_Tool::IsClosed(aER, copy_of_s_forward)) { + continue; + } + else{ + aTx=BOPTools_Tools2D::IntermediatePoint(aT1, aT2); + gp_Pnt2d aP2D; + aC2D->D0(aTx, aP2D); + aUx=aP2D.X(); + if (aUx < umin || aUx > umax) { + // need to rebuild + Handle(Geom2d_Curve) aC2Dx; + aBB_.UpdateEdge(aER, aC2Dx, copy_of_s_forward , BRep_Tool::Tolerance(aE)); + } + } + } + } + BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aER, copy_of_s_forward); + + // orient image + Standard_Boolean bIsToReverse = BOPTools_Tools3D::IsSplitToReverse1(aER, aE, myContext); + if (bIsToReverse) { + aER.Reverse(); + } + } + else { + aER.Orientation(aE.Orientation()); + } + // + aBB.Add(newWire, aER); + } + aBB.Add(newFace, newWire); + } + _replaced = s; + s=newFace; + + setup(); +} + #endif diff --git a/Geo/OCCFace.h b/Geo/OCCFace.h index 3ae8a1e0e64770419582f53978eda97712582e99..7f5d057a86f84f089e29c013db6f7058fb8c7dbc 100644 --- a/Geo/OCCFace.h +++ b/Geo/OCCFace.h @@ -17,13 +17,17 @@ class OCCFace : public GFace { protected: + TopoDS_Face _replaced; TopoDS_Face s; Handle(Geom_Surface) occface; double umin, umax, vmin, vmax; bool _periodic[2]; bool buildSTLTriangulation(bool force=false); + void replaceEdgesInternal (std::list<GEdge*> &); + void setup(); public: - OCCFace(GModel *m, TopoDS_Face s, int num, TopTools_IndexedMapOfShape &emap); + //OCCFace(GModel *m, TopoDS_Face s, int num, TopTools_IndexedMapOfShape &emap); + OCCFace(GModel *m, TopoDS_Face s, int num); virtual ~OCCFace(){} Range<double> parBounds(int i) const; virtual GPoint point(double par1, double par2) const; @@ -40,7 +44,10 @@ class OCCFace : public GFace { virtual double curvatures(const SPoint2 ¶m, SVector3 *dirMax, SVector3 *dirMin, double *curvMax, double *curvMin) const; surface_params getSurfaceParams() const; + TopoDS_Face getTopoDS_Face () {return s;} + TopoDS_Face getTopoDS_FaceOld () {return _replaced;} }; +GFace *getOCCFaceByNativePtr(GModel *model, TopoDS_Face toFind); #endif diff --git a/Geo/OCCRegion.cpp b/Geo/OCCRegion.cpp index 4ed25a3cf8fe668c4cf68de00a66f04bffcbd3ff..6f5fb7b0100fe5323277447374cf823215663a87 100644 --- a/Geo/OCCRegion.cpp +++ b/Geo/OCCRegion.cpp @@ -13,26 +13,32 @@ #if defined(HAVE_OCC) -OCCRegion::OCCRegion(GModel *m, TopoDS_Solid _s, int num, TopTools_IndexedMapOfShape &fmap) + + +OCCRegion::OCCRegion(GModel *m, TopoDS_Solid _s, int num) : GRegion(m, num), s(_s) { - TopExp_Explorer exp0, exp01, exp1, exp2, exp3; + setup(); +} + +void OCCRegion::setup() +{ + TopExp_Explorer exp2, exp3; for(exp2.Init(s, TopAbs_SHELL); exp2.More(); exp2.Next()){ TopoDS_Shape shell = exp2.Current(); - Msg::Info("OCC Region %d - New Shell",num); + Msg::Debug("OCC Region %d - New Shell",tag()); for(exp3.Init(shell, TopAbs_FACE); exp3.More(); exp3.Next()){ TopoDS_Face face = TopoDS::Face(exp3.Current()); - int index = fmap.FindIndex(face); - GFace *f = m->getFaceByTag(index); + GFace *f = getOCCFaceByNativePtr(model(),face); if(f){ l_faces.push_back(f); f->addRegion(this); } else - Msg::Error("Unknown face %d in region %d", index, num); + Msg::Error("Unknown face in region %d", tag()); } } - Msg::Info("OCC Region %d with %d faces", num, l_faces.size()); + Msg::Debug("OCC Region %d with %d faces", tag(), l_faces.size()); } GEntity::GeomType OCCRegion::geomType() const @@ -40,4 +46,75 @@ GEntity::GeomType OCCRegion::geomType() const return Unknown; } + +bool FaceHaveDifferentOrientations(const TopoDS_Face& aFR, + const TopoDS_Face& aF) +{ + // FIXME !!! + return false; +} + +void OCCRegion::replaceFacesInternal (std::list<GFace*> &new_faces){ + + + // we simply replace old faces by new faces in the structure + + Standard_Integer aNbS; + TopTools_IndexedMapOfShape aMS; + TopExp_Explorer aExpS, aExpF; + BRep_Builder aBB; + // + TopoDS_Compound aCmp; + aBB.MakeCompound(aCmp); + TopoDS_Solid _s_replacement; + aBB.MakeSolid(_s_replacement); + _s_replacement.Orientation(s.Orientation()); + aExpS.Init(s, TopAbs_SHELL); + for (; aExpS.More(); aExpS.Next()) { + const TopoDS_Shell& _shell=TopoDS::Shell(aExpS.Current()); + TopoDS_Shell _shell_replacement; + aBB.MakeShell(_shell_replacement); + _shell_replacement.Orientation(_shell.Orientation()); + aExpF.Init(_shell, TopAbs_FACE); + for (; aExpF.More(); aExpF.Next()) { + const TopoDS_Face& _face=TopoDS::Face(aExpF.Current()); + TopoDS_Face _face_replacement; + + std::list<GFace*>::iterator it = l_faces.begin(); + std::list<GFace*>::iterator it2 = new_faces.begin(); + + for ( ; it != l_faces.end() ; ++it,++it2){ + OCCFace *occF = dynamic_cast<OCCFace*>(*it); + if (occF){ + TopoDS_Face oldf = occF->getTopoDS_Face(); + if (oldf.IsSame(_face)){ + _face_replacement = *((TopoDS_Face*)(*it2)->getNativePtr()); + } + else { + oldf = occF->getTopoDS_FaceOld(); + if (oldf.IsSame(_face)){ + _face_replacement = *((TopoDS_Face*)(*it2)->getNativePtr()); + } + } + } + } + if (_face_replacement.IsNull()){ + Msg::Error("cannot find an face for gluing a region"); + } + + if (_face_replacement.IsSame(_face)) { + aBB.Add(_shell_replacement, _face); + } + else { + if (FaceHaveDifferentOrientations(_face,_face_replacement))_face_replacement.Reverse(); + aBB.Add(_shell_replacement, _face_replacement); + } + } + aBB.Add(_s_replacement, _shell_replacement); + } + s=_s_replacement; + setup(); +} + + #endif diff --git a/Geo/OCCRegion.h b/Geo/OCCRegion.h index 0a4c311a590f3603dc4a4cf0865add340d5ff87d..33b5a1de181a57717a252b6068b548aa3ccf62b3 100644 --- a/Geo/OCCRegion.h +++ b/Geo/OCCRegion.h @@ -14,12 +14,15 @@ class OCCRegion : public GRegion { protected: TopoDS_Solid s; + void replaceFacesInternal (std::list<GFace*> &); + void setup(); public: - OCCRegion(GModel *m, TopoDS_Solid s, int num, TopTools_IndexedMapOfShape &fmap); + OCCRegion(GModel *m, TopoDS_Solid s, int num); virtual ~OCCRegion() {} virtual GeomType geomType() const; ModelType getNativeType() const { return OpenCascadeModel; } void * getNativePtr() const { return (void*)&s; } + TopoDS_Solid getTopoDS_Shape() {return s;} }; #endif diff --git a/Geo/OCCVertex.cpp b/Geo/OCCVertex.cpp index 8676a152eb642b77e6478984a4e00d404d06ae9c..d5e9e3e6cb5cb5c296dfe21b032563758329aeab 100644 --- a/Geo/OCCVertex.cpp +++ b/Geo/OCCVertex.cpp @@ -105,4 +105,18 @@ SPoint2 OCCVertex::reparamOnFace(const GFace *gf, int dir) const return GVertex::reparamOnFace(gf, dir); } +GVertex *getOCCVertexByNativePtr(GModel *model, TopoDS_Vertex toFind) +{ + GModel::viter it =model->firstVertex(); + for (; it !=model->lastVertex(); it++){ + OCCVertex *occv = dynamic_cast<OCCVertex*>(*it); + if (occv){ + if (toFind.IsSame(occv->getShape())){ + return *it; + } + } + } + return 0; +} + #endif diff --git a/Geo/OCCVertex.h b/Geo/OCCVertex.h index eee790f735d3b592e9621ccc417f48be47dc41da..1111f03eda38b67a6ddbea0bd3c360dad69e8bd5 100644 --- a/Geo/OCCVertex.h +++ b/Geo/OCCVertex.h @@ -30,7 +30,9 @@ class OCCVertex : public GVertex { ModelType getNativeType() const { return OpenCascadeModel; } void * getNativePtr() const { return (void*)&v; } virtual SPoint2 reparamOnFace(const GFace *gf, int) const; + TopoDS_Vertex getShape() {return v;} }; +GVertex *getOCCVertexByNativePtr(GModel *model, TopoDS_Vertex toFind); #endif diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp index 112d31f603bec1e7fa22a38d7317e1115551e2a1..89acc902eba4890c95a9ddfd5f53211d99819444 100644 --- a/Geo/gmshEdge.cpp +++ b/Geo/gmshEdge.cpp @@ -26,6 +26,7 @@ void gmshEdge::resetMeshAttributes() meshAttributes.typeTransfinite = c->typeTransfinite; meshAttributes.coeffTransfinite = c->coeffTransfinite; meshAttributes.extrude = c->Extrude; + setMeshMaster(c->meshMaster); } Range<double> gmshEdge::parBounds(int i) const diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp index f5686724b4d27b7bbdbe5bec938a480cfd59435e..78566bfe080b92f940bf554ff083c3d60b9b580d 100644 --- a/Geo/gmshFace.cpp +++ b/Geo/gmshFace.cpp @@ -21,6 +21,9 @@ gmshFace::gmshFace(GModel *m, Surface *face) { resetMeshAttributes(); + setMeshMaster(s->meshMaster); + // printf("surface %d master %d\n",tag(),meshMaster()); + std::list<GEdge*> l_wire; GVertex *first = 0; for(int i = 0; i < List_Nbr(s->Generatrices); i++){ @@ -114,7 +117,7 @@ void gmshFace::resetMeshAttributes() else Msg::Error("Unknown vertex %d in transfinite attributes", corn->Num); } - } + } } Range<double> gmshFace::parBounds(int i) const diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp index 7728ca5a792f4438a6664f15345eba91b30d4106..6aa6d5d697f7aff28ed3080892c53058643811ca 100644 --- a/Mesh/Generator.cpp +++ b/Mesh/Generator.cpp @@ -339,7 +339,21 @@ static void Mesh1D(GModel *m) Msg::StatusBar(1, true, "Meshing 1D..."); double t1 = Cpu(); - std::for_each(m->firstEdge(), m->lastEdge(), meshGEdge()); + int nIter = 0; + while(1){ + meshGEdge mesher; + int nbPending = 0; + for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it){ + if ((*it)->_mStatus == GEdge::PENDING){ + mesher(*it); + nbPending++; + } + } + if(!nbPending) break; + if(nIter++ > 10) break; + } + + // std::for_each(m->firstEdge(), m->lastEdge(), meshGEdge()); double t2 = Cpu(); CTX::instance()->meshTimer[0] = t2 - t1; diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp index fe0011e2b5e2dd622f8589cef12fe5034a49e1cc..63625ce1e36fbbd5e9b876decf8b7a56c73e8300 100644 --- a/Mesh/meshGEdge.cpp +++ b/Mesh/meshGEdge.cpp @@ -229,6 +229,29 @@ static double Integration(GEdge *ge, double t1, double t2, return Points.back().p; } +static void copyMesh(GEdge *from, GEdge *to, int direction) +{ + Range<double> u_bounds = from->parBounds(0); + double u_min = u_bounds.low(); + double u_max = u_bounds.high(); + + for(unsigned int i = 0; i < from->mesh_vertices.size(); i++){ + int index = (direction < 0) ? (from->mesh_vertices.size() - 1 - i) : i; + MVertex *v = from->mesh_vertices[index]; + double u; v->getParameter(0, u); + double newu = (direction > 0) ? u : (u_max - u + u_min); + GPoint gp = to->point(newu); + to->mesh_vertices.push_back(new MEdgeVertex(gp.x(), gp.y(), gp.z(), to, newu)); + } + for(unsigned int i = 0; i < to->mesh_vertices.size() + 1; i++){ + MVertex *v0 = (i == 0) ? + to->getBeginVertex()->mesh_vertices[0] : to->mesh_vertices[i - 1]; + MVertex *v1 = (i == to->mesh_vertices.size()) ? + to->getEndVertex()->mesh_vertices[0] : to->mesh_vertices[i]; + to->lines.push_back(new MLine(v0, v1)); + } +} + void deMeshGEdge::operator() (GEdge *ge) { if(ge->geomType() == GEntity::DiscreteCurve) return; @@ -253,6 +276,16 @@ void meshGEdge::operator() (GEdge *ge) if(MeshExtrudedCurve(ge)) return; + if (ge->meshMaster() != ge->tag()){ + GEdge *gef = ge->model()->getEdgeByTag(abs(ge->meshMaster())); + if (gef->_mStatus == GEdge::PENDING)return; + Msg::Info("Meshing curve %d (%s) as a copy of %d",ge->tag(),ge->getTypeString().c_str(),ge->meshMaster()); + copyMesh(gef,ge,ge->meshMaster()); + ge->_mStatus = GEdge::DONE; + return; + } + + Msg::Info("Meshing curve %d (%s)", ge->tag(), ge->getTypeString().c_str()); // compute bounds @@ -368,4 +401,7 @@ void meshGEdge::operator() (GEdge *ge) v0->y() = beg_p.y(); v0->z() = beg_p.z(); } + ge->_mStatus = GEdge::DONE; } + + diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp index e20c319fb853be716e9de16316d354af41a19fa4..b5bec6d868cfe04371e8c783d1144ef285bf6ebd 100644 --- a/Mesh/meshGFace.cpp +++ b/Mesh/meshGFace.cpp @@ -38,6 +38,118 @@ #include "multiscalePartition.h" #include "meshGFaceLloyd.h" +static void copyMesh (GFace *source, GFace *target){ + + std::map<MVertex*,MVertex*> vs2vt; + + std::list<GEdge*> edges = target->edges(); + for (std::list<GEdge*>::iterator it = edges.begin(); it!=edges.end(); ++it){ + GEdge *te = *it; + int master = te->meshMaster(); + if (master == te->tag()){ + Msg::Error ("Periodic face %d does not have periodic edges (master %d -- edge %d)",target->tag(),master,te->tag()); + } + GEdge *se = source->model()->getEdgeByTag(abs(master)); + // printf("%d %d\n",se->tag(),te->tag()); + if (master > 0){ + vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0]; + vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0]; + for (int i=0;i<se->mesh_vertices.size();i++){ + MVertex *vs = se->mesh_vertices[i]; + MVertex *vt = te->mesh_vertices[i]; + // printf("D %g %g %g vs %g %g %g\n",vs->x(),vs->y(),vs->z(),vt->x(),vt->y(),vt->z()); + vs2vt[vs] = vt; + } + } + else { + vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0]; + vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0]; + for (int i=0;i<se->mesh_vertices.size();i++){ + MVertex *vs = se->mesh_vertices[i]; + MVertex *vt = te->mesh_vertices[se->mesh_vertices.size()-i-1]; + // printf("R %g %g %g vs %g %g %g\n",vs->x(),vs->y(),vs->z(),vt->x(),vt->y(),vt->z()); + vs2vt[vs] = vt; + } + } + } + + std::map<MVertex*,MVertex*>::iterator it = vs2vt.begin(); + + SPoint2 param_source[2],param_target[2]; + int count = 0; + for (; it != vs2vt.end() ; ++it){ + MVertex *vs = it->first; + MVertex *vt = it->second; + if (vs->onWhat()->dim() == 1){ + bool success1 = reparamMeshVertexOnFace(vs, source, param_source[count]); + bool success2 = reparamMeshVertexOnFace(vt, target, param_target[count++]); + // printf("%g %g %g vs %g %g %g\n",vs->x(),vs->y(),vs->z(),vt->x(),vt->y(),vt->z()); + if (count == 2)break; + } + } + + if (count < 2)return; + + const double t1u = param_target[0].x(); + const double t1v = param_target[0].y(); + const double t2u = param_target[1].x(); + const double t2v = param_target[1].y(); + const double s1u = param_source[0].x(); + const double s1v = param_source[0].y(); + const double s2u = param_source[1].x(); + const double s2v = param_source[1].y(); + + SVector3 _a(s2u-s1u,s2v-s1v,0); + SVector3 _b(t2u-t1u,t2v-t1v,0); + SVector3 _c = crossprod(_a,_b); + double sinA = _c.z(); + double cosA = dot(_a,_b); + // printf("%g %g-- %g %g\n",_a.x(),_a.y(),_b.x(),_b.y()); + const double theta = atan2(sinA, cosA); + const double c = cos(theta); + const double s = sin(theta); + + // printf("s1 %g %g s2 %g %g\n",s1u,s1v,s2u,s2v); + // printf("t1 %g %g t2 %g %g\n",t1u,t1v,t2u,t2v); + // printf("theta = %g\n",theta*180/M_PI); + // { + // double u = param_source[1].x(); + // double v = param_source[1].y(); + // printf("transfo of s2 = %g %g\n",c * (u-s1u) + s * (v-s1v) + t1u, + // -s * (u-s1u) + c * (v-s1v) + t1v); + // } + + for(unsigned int i = 0; i < source->mesh_vertices.size(); i++){ + MVertex *vs = source->mesh_vertices[i]; + double u,v; + vs->getParameter(0,u); + vs->getParameter(1,v); + // apply transformation + const double U = c * (u-s1u) + s * (v-s1v) + t1u; + const double V = -s * (u-s1u) + c * (v-s1v) + t1v; + GPoint gp = target->point(SPoint2(U,V)); + MVertex *vt = new MFaceVertex(gp.x(), gp.y(), gp.z(), target,U,V); + target->mesh_vertices.push_back(vt); + vs2vt[vs] = vt; + } + + for (int i=0;i<source->triangles.size();i++){ + MVertex *v1 = vs2vt[source->triangles[i]->getVertex(0)]; + MVertex *v2 = vs2vt[source->triangles[i]->getVertex(1)]; + MVertex *v3 = vs2vt[source->triangles[i]->getVertex(2)]; + target->triangles.push_back(new MTriangle(v1,v2,v3)); + } + for (int i=0;i<source->quadrangles.size();i++){ + MVertex *v1 = vs2vt[source->quadrangles[i]->getVertex(0)]; + MVertex *v2 = vs2vt[source->quadrangles[i]->getVertex(1)]; + MVertex *v3 = vs2vt[source->quadrangles[i]->getVertex(2)]; + MVertex *v4 = vs2vt[source->quadrangles[i]->getVertex(3)]; + target->quadrangles.push_back(new MQuadrangle(v1,v2,v3,v4)); + } + +} + + void fourthPoint(double *p1, double *p2, double *p3, double *p4) { double c[3]; @@ -1259,6 +1371,19 @@ void meshGFace::operator() (GFace *gf) if(MeshTransfiniteSurface(gf)) return; if(MeshExtrudedSurface(gf)) return; + if(gf->meshMaster() != gf->tag()){ + printf("AAAAAAAAARGH %d %d\n",gf->meshMaster(),gf->tag()); + GFace *gff = gf->model()->getFaceByTag(abs(gf->meshMaster())); + if (gff->meshStatistics.status != GFace::DONE){ + // Msg::Info("Meshing face %d (%s) as a copy of %d",gf->tag(),gf->getTypeString().c_str(),gf->meshMaster()); + gf->meshStatistics.status = GFace::PENDING; + return; + } + Msg::Info("Meshing face %d (%s) as a copy of %d",gf->tag(),gf->getTypeString().c_str(),gf->meshMaster()); + copyMesh(gff,gf); + gf->meshStatistics.status = GFace::DONE; + return; + } const char *algo = "Unknown"; if(algoDelaunay2D(gf)) diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l index 61b95dfecf2c57d847a12bd9d8abff4084fcebda..da49b8c2bdb2386457763ce811029704c833fdbf 100644 --- a/Parser/Gmsh.l +++ b/Parser/Gmsh.l @@ -169,6 +169,7 @@ Nurbs return tNurbs; Order return tNurbsOrder; OCCShape return tOCCShape; +Periodic return tPeriodic; Physical return tPhysical; Pi return tPi; Plane return tPlane; diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 602857aa04d5d331ec437d58d2db8188b4414d6b..aa583e2b5bb653aa421281d4c915dde7ec952f9a 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -136,72 +136,73 @@ tComplex = 317, tPhysical = 318, tCompound = 319, - tUsing = 320, - tPlugin = 321, - tDegenerated = 322, - tOCCShape = 323, - tRotate = 324, - tTranslate = 325, - tSymmetry = 326, - tDilate = 327, - tExtrude = 328, - tLevelset = 329, - tLoop = 330, - tRecombine = 331, - tSmoother = 332, - tSplit = 333, - tDelete = 334, - tCoherence = 335, - tIntersect = 336, - tLayers = 337, - tHole = 338, - tAlias = 339, - tAliasWithOptions = 340, - tText2D = 341, - tText3D = 342, - tInterpolationScheme = 343, - tTime = 344, - tCombine = 345, - tBSpline = 346, - tBezier = 347, - tNurbs = 348, - tNurbsOrder = 349, - tNurbsKnots = 350, - tColor = 351, - tColorTable = 352, - tFor = 353, - tIn = 354, - tEndFor = 355, - tIf = 356, - tEndIf = 357, - tExit = 358, - tField = 359, - tReturn = 360, - tCall = 361, - tFunction = 362, - tShow = 363, - tHide = 364, - tGetValue = 365, - tGMSH_MAJOR_VERSION = 366, - tGMSH_MINOR_VERSION = 367, - tGMSH_PATCH_VERSION = 368, - tHomRank = 369, - tHomGen = 370, - tHomCut = 371, - tHomSeq = 372, - tAFFECTDIVIDE = 373, - tAFFECTTIMES = 374, - tAFFECTMINUS = 375, - tAFFECTPLUS = 376, - tOR = 377, - tAND = 378, - tNOTEQUAL = 379, - tEQUAL = 380, - tGREATEROREQUAL = 381, - tLESSOREQUAL = 382, - UNARYPREC = 383, - tMINUSMINUS = 384, - tPLUSPLUS = 385 + tPeriodic = 320, + tUsing = 321, + tPlugin = 322, + tDegenerated = 323, + tOCCShape = 324, + tRotate = 325, + tTranslate = 326, + tSymmetry = 327, + tDilate = 328, + tExtrude = 329, + tLevelset = 330, + tLoop = 331, + tRecombine = 332, + tSmoother = 333, + tSplit = 334, + tDelete = 335, + tCoherence = 336, + tIntersect = 337, + tLayers = 338, + tHole = 339, + tAlias = 340, + tAliasWithOptions = 341, + tText2D = 342, + tText3D = 343, + tInterpolationScheme = 344, + tTime = 345, + tCombine = 346, + tBSpline = 347, + tBezier = 348, + tNurbs = 349, + tNurbsOrder = 350, + tNurbsKnots = 351, + tColor = 352, + tColorTable = 353, + tFor = 354, + tIn = 355, + tEndFor = 356, + tIf = 357, + tEndIf = 358, + tExit = 359, + tField = 360, + tReturn = 361, + tCall = 362, + tFunction = 363, + tShow = 364, + tHide = 365, + tGetValue = 366, + tGMSH_MAJOR_VERSION = 367, + tGMSH_MINOR_VERSION = 368, + tGMSH_PATCH_VERSION = 369, + tHomRank = 370, + tHomGen = 371, + tHomCut = 372, + tHomSeq = 373, + tAFFECTDIVIDE = 374, + tAFFECTTIMES = 375, + tAFFECTMINUS = 376, + tAFFECTPLUS = 377, + tOR = 378, + tAND = 379, + tNOTEQUAL = 380, + tEQUAL = 381, + tGREATEROREQUAL = 382, + tLESSOREQUAL = 383, + UNARYPREC = 384, + tMINUSMINUS = 385, + tPLUSPLUS = 386 }; #endif /* Tokens. */ @@ -267,72 +268,73 @@ #define tComplex 317 #define tPhysical 318 #define tCompound 319 -#define tUsing 320 -#define tPlugin 321 -#define tDegenerated 322 -#define tOCCShape 323 -#define tRotate 324 -#define tTranslate 325 -#define tSymmetry 326 -#define tDilate 327 -#define tExtrude 328 -#define tLevelset 329 -#define tLoop 330 -#define tRecombine 331 -#define tSmoother 332 -#define tSplit 333 -#define tDelete 334 -#define tCoherence 335 -#define tIntersect 336 -#define tLayers 337 -#define tHole 338 -#define tAlias 339 -#define tAliasWithOptions 340 -#define tText2D 341 -#define tText3D 342 -#define tInterpolationScheme 343 -#define tTime 344 -#define tCombine 345 -#define tBSpline 346 -#define tBezier 347 -#define tNurbs 348 -#define tNurbsOrder 349 -#define tNurbsKnots 350 -#define tColor 351 -#define tColorTable 352 -#define tFor 353 -#define tIn 354 -#define tEndFor 355 -#define tIf 356 -#define tEndIf 357 -#define tExit 358 -#define tField 359 -#define tReturn 360 -#define tCall 361 -#define tFunction 362 -#define tShow 363 -#define tHide 364 -#define tGetValue 365 -#define tGMSH_MAJOR_VERSION 366 -#define tGMSH_MINOR_VERSION 367 -#define tGMSH_PATCH_VERSION 368 -#define tHomRank 369 -#define tHomGen 370 -#define tHomCut 371 -#define tHomSeq 372 -#define tAFFECTDIVIDE 373 -#define tAFFECTTIMES 374 -#define tAFFECTMINUS 375 -#define tAFFECTPLUS 376 -#define tOR 377 -#define tAND 378 -#define tNOTEQUAL 379 -#define tEQUAL 380 -#define tGREATEROREQUAL 381 -#define tLESSOREQUAL 382 -#define UNARYPREC 383 -#define tMINUSMINUS 384 -#define tPLUSPLUS 385 +#define tPeriodic 320 +#define tUsing 321 +#define tPlugin 322 +#define tDegenerated 323 +#define tOCCShape 324 +#define tRotate 325 +#define tTranslate 326 +#define tSymmetry 327 +#define tDilate 328 +#define tExtrude 329 +#define tLevelset 330 +#define tLoop 331 +#define tRecombine 332 +#define tSmoother 333 +#define tSplit 334 +#define tDelete 335 +#define tCoherence 336 +#define tIntersect 337 +#define tLayers 338 +#define tHole 339 +#define tAlias 340 +#define tAliasWithOptions 341 +#define tText2D 342 +#define tText3D 343 +#define tInterpolationScheme 344 +#define tTime 345 +#define tCombine 346 +#define tBSpline 347 +#define tBezier 348 +#define tNurbs 349 +#define tNurbsOrder 350 +#define tNurbsKnots 351 +#define tColor 352 +#define tColorTable 353 +#define tFor 354 +#define tIn 355 +#define tEndFor 356 +#define tIf 357 +#define tEndIf 358 +#define tExit 359 +#define tField 360 +#define tReturn 361 +#define tCall 362 +#define tFunction 363 +#define tShow 364 +#define tHide 365 +#define tGetValue 366 +#define tGMSH_MAJOR_VERSION 367 +#define tGMSH_MINOR_VERSION 368 +#define tGMSH_PATCH_VERSION 369 +#define tHomRank 370 +#define tHomGen 371 +#define tHomCut 372 +#define tHomSeq 373 +#define tAFFECTDIVIDE 374 +#define tAFFECTTIMES 375 +#define tAFFECTMINUS 376 +#define tAFFECTPLUS 377 +#define tOR 378 +#define tAND 379 +#define tNOTEQUAL 380 +#define tEQUAL 381 +#define tGREATEROREQUAL 382 +#define tLESSOREQUAL 383 +#define UNARYPREC 384 +#define tMINUSMINUS 385 +#define tPLUSPLUS 386 @@ -454,7 +456,7 @@ typedef union YYSTYPE List_T *l; } /* Line 193 of yacc.c. */ -#line 458 "Gmsh.tab.cpp" +#line 460 "Gmsh.tab.cpp" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -467,7 +469,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 471 "Gmsh.tab.cpp" +#line 473 "Gmsh.tab.cpp" #ifdef short # undef short @@ -682,20 +684,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 6752 +#define YYLAST 6760 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 151 +#define YYNTOKENS 152 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 81 +#define YYNNTS 82 /* YYNRULES -- Number of rules. */ -#define YYNRULES 384 +#define YYNRULES 387 /* YYNRULES -- Number of states. */ -#define YYNSTATES 1373 +#define YYNSTATES 1385 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 385 +#define YYMAXUTOK 386 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -706,16 +708,16 @@ static const yytype_uint8 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, 136, 2, 146, 2, 135, 2, 2, - 141, 142, 133, 131, 147, 132, 145, 134, 2, 2, + 2, 2, 2, 137, 2, 147, 2, 136, 2, 2, + 142, 143, 134, 132, 148, 133, 146, 135, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 127, 2, 128, 122, 2, 2, 2, 2, 2, 2, + 128, 2, 129, 123, 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, 143, 2, 144, 140, 2, 2, 2, 2, 2, + 2, 144, 2, 145, 141, 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, 148, 2, 149, 150, 2, 2, 2, + 2, 2, 2, 149, 2, 150, 151, 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, @@ -740,8 +742,8 @@ static const yytype_uint8 yytranslate[] = 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 123, 124, 125, - 126, 129, 130, 137, 138, 139 + 115, 116, 117, 118, 119, 120, 121, 122, 124, 125, + 126, 127, 130, 131, 138, 139, 140 }; #if YYDEBUG @@ -751,272 +753,274 @@ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 5, 8, 9, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, - 40, 42, 44, 46, 49, 55, 63, 71, 81, 88, - 95, 102, 103, 106, 109, 112, 115, 118, 120, 124, - 126, 130, 131, 132, 143, 145, 149, 150, 164, 166, - 170, 171, 187, 196, 211, 212, 219, 221, 223, 225, - 227, 229, 231, 233, 238, 246, 256, 263, 270, 274, - 281, 286, 293, 303, 310, 320, 326, 335, 344, 356, - 363, 373, 379, 387, 397, 407, 419, 429, 439, 441, - 443, 444, 450, 451, 454, 462, 463, 473, 480, 488, - 493, 501, 510, 519, 527, 535, 547, 556, 565, 566, - 576, 585, 595, 599, 604, 615, 623, 631, 640, 650, - 664, 665, 675, 684, 692, 702, 711, 712, 722, 728, - 740, 746, 756, 761, 771, 781, 783, 785, 786, 789, - 796, 803, 810, 817, 826, 841, 858, 871, 880, 889, - 896, 911, 916, 923, 930, 934, 939, 945, 949, 953, - 958, 963, 967, 975, 983, 987, 995, 999, 1002, 1005, - 1008, 1024, 1027, 1030, 1037, 1046, 1055, 1066, 1068, 1071, - 1073, 1077, 1082, 1084, 1090, 1102, 1116, 1117, 1125, 1126, - 1140, 1141, 1157, 1158, 1165, 1174, 1183, 1192, 1205, 1218, - 1231, 1246, 1261, 1276, 1277, 1290, 1291, 1304, 1305, 1318, - 1319, 1336, 1337, 1354, 1355, 1372, 1373, 1392, 1393, 1412, - 1413, 1432, 1434, 1437, 1443, 1451, 1461, 1464, 1474, 1475, - 1477, 1478, 1482, 1483, 1485, 1486, 1489, 1490, 1493, 1501, - 1508, 1517, 1523, 1529, 1536, 1547, 1558, 1569, 1580, 1583, - 1587, 1599, 1611, 1623, 1635, 1637, 1641, 1644, 1647, 1650, - 1654, 1658, 1662, 1666, 1670, 1674, 1678, 1682, 1686, 1690, - 1694, 1698, 1702, 1706, 1712, 1717, 1722, 1727, 1732, 1737, - 1742, 1747, 1752, 1757, 1762, 1769, 1774, 1779, 1784, 1789, - 1794, 1799, 1806, 1813, 1820, 1825, 1830, 1835, 1840, 1845, - 1850, 1855, 1860, 1865, 1870, 1875, 1882, 1887, 1892, 1897, - 1902, 1907, 1912, 1919, 1926, 1933, 1938, 1940, 1942, 1944, - 1946, 1948, 1950, 1952, 1954, 1960, 1965, 1970, 1973, 1979, - 1983, 1990, 1995, 2003, 2010, 2012, 2015, 2018, 2022, 2026, - 2038, 2048, 2056, 2064, 2066, 2070, 2072, 2074, 2077, 2081, - 2086, 2092, 2094, 2096, 2099, 2103, 2107, 2113, 2118, 2120, - 2122, 2126, 2133, 2135, 2137, 2141, 2145, 2155, 2163, 2165, - 2171, 2175, 2182, 2184, 2188, 2190, 2192, 2196, 2203, 2205, - 2207, 2214, 2219, 2224, 2229 + 40, 42, 44, 46, 48, 51, 57, 65, 73, 83, + 90, 97, 104, 105, 108, 111, 114, 117, 120, 122, + 126, 128, 132, 133, 134, 145, 147, 151, 152, 166, + 168, 172, 173, 189, 198, 213, 214, 221, 223, 225, + 227, 229, 231, 233, 235, 240, 248, 258, 265, 272, + 276, 283, 288, 295, 305, 312, 322, 328, 337, 346, + 358, 365, 375, 381, 389, 399, 409, 421, 431, 441, + 443, 445, 446, 452, 453, 456, 464, 465, 475, 482, + 490, 495, 503, 512, 521, 529, 537, 549, 558, 567, + 568, 578, 587, 597, 601, 606, 617, 625, 633, 642, + 652, 666, 667, 677, 686, 694, 704, 713, 714, 724, + 730, 742, 748, 758, 763, 773, 783, 785, 787, 788, + 791, 798, 805, 812, 819, 828, 843, 860, 873, 882, + 891, 898, 913, 918, 925, 932, 936, 941, 947, 951, + 955, 960, 965, 969, 977, 985, 989, 997, 1001, 1004, + 1007, 1010, 1026, 1029, 1032, 1039, 1048, 1057, 1068, 1070, + 1073, 1075, 1079, 1084, 1086, 1092, 1104, 1118, 1119, 1127, + 1128, 1142, 1143, 1159, 1160, 1167, 1176, 1185, 1194, 1207, + 1220, 1233, 1248, 1263, 1278, 1279, 1292, 1293, 1306, 1307, + 1320, 1321, 1338, 1339, 1356, 1357, 1374, 1375, 1394, 1395, + 1414, 1415, 1434, 1436, 1439, 1445, 1453, 1463, 1466, 1476, + 1477, 1479, 1480, 1484, 1485, 1487, 1488, 1491, 1492, 1495, + 1503, 1510, 1519, 1525, 1531, 1538, 1545, 1552, 1563, 1574, + 1585, 1596, 1599, 1603, 1615, 1627, 1639, 1651, 1653, 1657, + 1660, 1663, 1666, 1670, 1674, 1678, 1682, 1686, 1690, 1694, + 1698, 1702, 1706, 1710, 1714, 1718, 1722, 1728, 1733, 1738, + 1743, 1748, 1753, 1758, 1763, 1768, 1773, 1778, 1785, 1790, + 1795, 1800, 1805, 1810, 1815, 1822, 1829, 1836, 1841, 1846, + 1851, 1856, 1861, 1866, 1871, 1876, 1881, 1886, 1891, 1898, + 1903, 1908, 1913, 1918, 1923, 1928, 1935, 1942, 1949, 1954, + 1956, 1958, 1960, 1962, 1964, 1966, 1968, 1970, 1976, 1981, + 1986, 1989, 1995, 1999, 2006, 2011, 2019, 2026, 2028, 2031, + 2034, 2038, 2042, 2054, 2064, 2072, 2080, 2082, 2086, 2088, + 2090, 2093, 2097, 2102, 2108, 2110, 2112, 2115, 2119, 2123, + 2129, 2134, 2136, 2138, 2142, 2149, 2151, 2153, 2157, 2161, + 2171, 2179, 2181, 2187, 2191, 2198, 2200, 2204, 2206, 2208, + 2212, 2219, 2221, 2223, 2230, 2235, 2240, 2245 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 152, 0, -1, 153, -1, 1, 6, -1, -1, 153, - 154, -1, 157, -1, 156, -1, 175, -1, 179, -1, - 184, -1, 188, -1, 189, -1, 190, -1, 193, -1, - 214, -1, 215, -1, 216, -1, 192, -1, 191, -1, - 187, -1, 217, -1, 128, -1, 128, 128, -1, 35, - 141, 5, 142, 6, -1, 35, 141, 5, 142, 155, - 230, 6, -1, 35, 141, 5, 147, 226, 142, 6, - -1, 35, 141, 5, 147, 226, 142, 155, 230, 6, - -1, 4, 5, 148, 158, 149, 6, -1, 84, 4, - 143, 218, 144, 6, -1, 85, 4, 143, 218, 144, - 6, -1, -1, 158, 161, -1, 158, 165, -1, 158, - 168, -1, 158, 170, -1, 158, 171, -1, 218, -1, - 159, 147, 218, -1, 218, -1, 160, 147, 218, -1, - -1, -1, 4, 162, 141, 159, 142, 163, 148, 160, - 149, 6, -1, 230, -1, 164, 147, 230, -1, -1, - 86, 141, 218, 147, 218, 147, 218, 142, 166, 148, - 164, 149, 6, -1, 230, -1, 167, 147, 230, -1, - -1, 87, 141, 218, 147, 218, 147, 218, 147, 218, - 142, 169, 148, 167, 149, 6, -1, 88, 148, 222, - 149, 148, 222, 149, 6, -1, 88, 148, 222, 149, - 148, 222, 149, 148, 222, 149, 148, 222, 149, 6, - -1, -1, 89, 172, 148, 160, 149, 6, -1, 7, - -1, 121, -1, 120, -1, 119, -1, 118, -1, 139, - -1, 138, -1, 4, 173, 218, 6, -1, 4, 143, - 218, 144, 173, 218, 6, -1, 4, 143, 148, 226, - 149, 144, 173, 223, 6, -1, 4, 143, 144, 7, - 223, 6, -1, 4, 143, 144, 121, 223, 6, -1, - 4, 174, 6, -1, 4, 143, 218, 144, 174, 6, - -1, 4, 7, 231, 6, -1, 4, 145, 4, 7, - 231, 6, -1, 4, 143, 218, 144, 145, 4, 7, - 231, 6, -1, 4, 145, 4, 173, 218, 6, -1, - 4, 143, 218, 144, 145, 4, 173, 218, 6, -1, - 4, 145, 4, 174, 6, -1, 4, 143, 218, 144, - 145, 4, 174, 6, -1, 4, 145, 96, 145, 4, - 7, 227, 6, -1, 4, 143, 218, 144, 145, 96, - 145, 4, 7, 227, 6, -1, 4, 145, 97, 7, - 228, 6, -1, 4, 143, 218, 144, 145, 97, 7, - 228, 6, -1, 4, 104, 7, 218, 6, -1, 104, - 143, 218, 144, 7, 4, 6, -1, 104, 143, 218, - 144, 145, 4, 7, 218, 6, -1, 104, 143, 218, - 144, 145, 4, 7, 231, 6, -1, 104, 143, 218, - 144, 145, 4, 7, 148, 226, 149, 6, -1, 66, - 141, 4, 142, 145, 4, 7, 218, 6, -1, 66, - 141, 4, 142, 145, 4, 7, 231, 6, -1, 218, - -1, 231, -1, -1, 99, 50, 148, 218, 149, -1, - -1, 59, 220, -1, 46, 141, 218, 142, 7, 220, - 6, -1, -1, 63, 46, 180, 141, 176, 142, 7, - 223, 6, -1, 55, 56, 223, 7, 218, 6, -1, - 49, 141, 218, 142, 7, 223, 6, -1, 67, 49, - 223, 6, -1, 53, 141, 218, 142, 7, 223, 6, - -1, 47, 141, 218, 142, 7, 223, 178, 6, -1, - 48, 141, 218, 142, 7, 223, 178, 6, -1, 91, - 141, 218, 142, 7, 223, 6, -1, 92, 141, 218, - 142, 7, 223, 6, -1, 93, 141, 218, 142, 7, - 223, 95, 223, 94, 218, 6, -1, 49, 75, 141, - 218, 142, 7, 223, 6, -1, 64, 49, 141, 218, - 142, 7, 223, 6, -1, -1, 63, 49, 181, 141, - 176, 142, 7, 223, 6, -1, 59, 52, 141, 218, - 142, 7, 223, 6, -1, 60, 52, 141, 218, 142, - 7, 223, 177, 6, -1, 12, 13, 6, -1, 13, - 52, 218, 6, -1, 57, 52, 141, 218, 142, 7, - 5, 5, 5, 6, -1, 50, 141, 218, 142, 7, - 223, 6, -1, 51, 141, 218, 142, 7, 223, 6, - -1, 52, 75, 141, 218, 142, 7, 223, 6, -1, - 64, 52, 141, 218, 142, 7, 223, 209, 6, -1, - 64, 52, 141, 218, 142, 7, 223, 4, 148, 222, - 149, 209, 6, -1, -1, 63, 52, 182, 141, 176, - 142, 7, 223, 6, -1, 62, 54, 141, 218, 142, - 7, 223, 6, -1, 54, 141, 218, 142, 7, 223, - 6, -1, 68, 141, 5, 147, 223, 147, 5, 142, - 6, -1, 64, 54, 141, 218, 142, 7, 223, 6, - -1, -1, 63, 54, 183, 141, 176, 142, 7, 223, - 6, -1, 70, 220, 148, 185, 149, -1, 69, 148, - 220, 147, 220, 147, 218, 149, 148, 185, 149, -1, - 71, 220, 148, 185, 149, -1, 72, 148, 220, 147, - 218, 149, 148, 185, 149, -1, 4, 148, 185, 149, - -1, 81, 49, 148, 226, 149, 52, 148, 218, 149, - -1, 78, 49, 141, 218, 142, 148, 226, 149, 6, - -1, 186, -1, 184, -1, -1, 186, 179, -1, 186, - 46, 148, 226, 149, 6, -1, 186, 49, 148, 226, - 149, 6, -1, 186, 52, 148, 226, 149, 6, -1, - 186, 54, 148, 226, 149, 6, -1, 74, 59, 141, - 218, 142, 7, 223, 6, -1, 74, 59, 141, 218, - 142, 7, 148, 220, 147, 220, 147, 226, 149, 6, - -1, 74, 59, 141, 218, 142, 7, 148, 220, 147, - 220, 147, 220, 147, 226, 149, 6, -1, 74, 50, - 141, 218, 142, 7, 148, 220, 147, 226, 149, 6, - -1, 74, 4, 141, 218, 142, 7, 223, 6, -1, - 74, 4, 141, 218, 142, 7, 5, 6, -1, 74, - 4, 148, 218, 149, 6, -1, 74, 4, 141, 218, - 142, 7, 148, 220, 147, 220, 147, 226, 149, 6, - -1, 79, 148, 186, 149, -1, 79, 104, 143, 218, - 144, 6, -1, 79, 4, 143, 218, 144, 6, -1, - 79, 4, 6, -1, 79, 4, 4, 6, -1, 96, - 227, 148, 186, 149, -1, 108, 5, 6, -1, 109, - 5, 6, -1, 108, 148, 186, 149, -1, 109, 148, - 186, 149, -1, 4, 231, 6, -1, 4, 4, 143, - 218, 144, 230, 6, -1, 4, 4, 4, 143, 218, - 144, 6, -1, 4, 218, 6, -1, 66, 141, 4, - 142, 145, 4, 6, -1, 90, 4, 6, -1, 103, - 6, -1, 43, 6, -1, 40, 6, -1, 40, 148, - 218, 147, 218, 147, 218, 147, 218, 147, 218, 147, - 218, 149, 6, -1, 41, 6, -1, 44, 6, -1, - 98, 141, 218, 8, 218, 142, -1, 98, 141, 218, - 8, 218, 8, 218, 142, -1, 98, 4, 99, 148, - 218, 8, 218, 149, -1, 98, 4, 99, 148, 218, - 8, 218, 8, 218, 149, -1, 100, -1, 107, 4, - -1, 105, -1, 106, 4, 6, -1, 101, 141, 218, - 142, -1, 102, -1, 73, 220, 148, 186, 149, -1, - 73, 148, 220, 147, 220, 147, 218, 149, 148, 186, - 149, -1, 73, 148, 220, 147, 220, 147, 220, 147, - 218, 149, 148, 186, 149, -1, -1, 73, 220, 148, - 186, 194, 207, 149, -1, -1, 73, 148, 220, 147, - 220, 147, 218, 149, 148, 186, 195, 207, 149, -1, - -1, 73, 148, 220, 147, 220, 147, 220, 147, 218, - 149, 148, 186, 196, 207, 149, -1, -1, 73, 148, - 186, 197, 207, 149, -1, 73, 46, 148, 218, 147, - 220, 149, 6, -1, 73, 49, 148, 218, 147, 220, - 149, 6, -1, 73, 52, 148, 218, 147, 220, 149, - 6, -1, 73, 46, 148, 218, 147, 220, 147, 220, - 147, 218, 149, 6, -1, 73, 49, 148, 218, 147, - 220, 147, 220, 147, 218, 149, 6, -1, 73, 52, - 148, 218, 147, 220, 147, 220, 147, 218, 149, 6, - -1, 73, 46, 148, 218, 147, 220, 147, 220, 147, - 220, 147, 218, 149, 6, -1, 73, 49, 148, 218, - 147, 220, 147, 220, 147, 220, 147, 218, 149, 6, - -1, 73, 52, 148, 218, 147, 220, 147, 220, 147, - 220, 147, 218, 149, 6, -1, -1, 73, 46, 148, - 218, 147, 220, 149, 198, 148, 207, 149, 6, -1, - -1, 73, 49, 148, 218, 147, 220, 149, 199, 148, - 207, 149, 6, -1, -1, 73, 52, 148, 218, 147, - 220, 149, 200, 148, 207, 149, 6, -1, -1, 73, - 46, 148, 218, 147, 220, 147, 220, 147, 218, 149, - 201, 148, 207, 149, 6, -1, -1, 73, 49, 148, - 218, 147, 220, 147, 220, 147, 218, 149, 202, 148, - 207, 149, 6, -1, -1, 73, 52, 148, 218, 147, - 220, 147, 220, 147, 218, 149, 203, 148, 207, 149, - 6, -1, -1, 73, 46, 148, 218, 147, 220, 147, - 220, 147, 220, 147, 218, 149, 204, 148, 207, 149, - 6, -1, -1, 73, 49, 148, 218, 147, 220, 147, - 220, 147, 220, 147, 218, 149, 205, 148, 207, 149, - 6, -1, -1, 73, 52, 148, 218, 147, 220, 147, - 220, 147, 220, 147, 218, 149, 206, 148, 207, 149, - 6, -1, 208, -1, 207, 208, -1, 82, 148, 218, - 149, 6, -1, 82, 148, 223, 147, 223, 149, 6, - -1, 82, 148, 223, 147, 223, 147, 223, 149, 6, - -1, 76, 6, -1, 83, 141, 218, 142, 7, 223, - 65, 218, 6, -1, -1, 4, -1, -1, 65, 4, - 218, -1, -1, 4, -1, -1, 7, 223, -1, -1, - 7, 218, -1, 61, 49, 224, 7, 218, 210, 6, - -1, 61, 52, 224, 212, 211, 6, -1, 58, 52, - 148, 218, 149, 7, 223, 6, -1, 61, 54, 224, - 212, 6, -1, 76, 52, 224, 213, 6, -1, 77, - 52, 223, 7, 218, 6, -1, 46, 148, 226, 149, - 99, 52, 148, 218, 149, 6, -1, 49, 148, 226, - 149, 99, 52, 148, 218, 149, 6, -1, 49, 148, - 226, 149, 99, 54, 148, 218, 149, 6, -1, 52, - 148, 226, 149, 99, 54, 148, 218, 149, 6, -1, - 80, 6, -1, 80, 4, 6, -1, 114, 141, 230, - 142, 7, 148, 223, 147, 223, 149, 6, -1, 115, - 141, 230, 142, 7, 148, 223, 147, 223, 149, 6, - -1, 116, 141, 230, 142, 7, 148, 223, 147, 223, - 149, 6, -1, 117, 141, 230, 142, 7, 148, 223, - 147, 223, 149, 6, -1, 219, -1, 141, 218, 142, - -1, 132, 218, -1, 131, 218, -1, 136, 218, -1, - 218, 132, 218, -1, 218, 131, 218, -1, 218, 133, - 218, -1, 218, 134, 218, -1, 218, 135, 218, -1, - 218, 140, 218, -1, 218, 127, 218, -1, 218, 128, - 218, -1, 218, 130, 218, -1, 218, 129, 218, -1, - 218, 126, 218, -1, 218, 125, 218, -1, 218, 124, - 218, -1, 218, 123, 218, -1, 218, 122, 218, 8, - 218, -1, 14, 141, 218, 142, -1, 15, 141, 218, - 142, -1, 16, 141, 218, 142, -1, 17, 141, 218, - 142, -1, 18, 141, 218, 142, -1, 19, 141, 218, - 142, -1, 20, 141, 218, 142, -1, 21, 141, 218, - 142, -1, 22, 141, 218, 142, -1, 24, 141, 218, - 142, -1, 25, 141, 218, 147, 218, 142, -1, 26, - 141, 218, 142, -1, 27, 141, 218, 142, -1, 28, - 141, 218, 142, -1, 29, 141, 218, 142, -1, 30, - 141, 218, 142, -1, 31, 141, 218, 142, -1, 32, - 141, 218, 147, 218, 142, -1, 33, 141, 218, 147, - 218, 142, -1, 34, 141, 218, 147, 218, 142, -1, - 23, 141, 218, 142, -1, 14, 143, 218, 144, -1, - 15, 143, 218, 144, -1, 16, 143, 218, 144, -1, - 17, 143, 218, 144, -1, 18, 143, 218, 144, -1, - 19, 143, 218, 144, -1, 20, 143, 218, 144, -1, - 21, 143, 218, 144, -1, 22, 143, 218, 144, -1, - 24, 143, 218, 144, -1, 25, 143, 218, 147, 218, - 144, -1, 26, 143, 218, 144, -1, 27, 143, 218, - 144, -1, 28, 143, 218, 144, -1, 29, 143, 218, - 144, -1, 30, 143, 218, 144, -1, 31, 143, 218, - 144, -1, 32, 143, 218, 147, 218, 144, -1, 33, - 143, 218, 147, 218, 144, -1, 34, 143, 218, 147, - 218, 144, -1, 23, 143, 218, 144, -1, 3, -1, - 9, -1, 10, -1, 11, -1, 111, -1, 112, -1, - 113, -1, 4, -1, 4, 150, 148, 218, 149, -1, - 4, 143, 218, 144, -1, 146, 4, 143, 144, -1, - 4, 174, -1, 4, 143, 218, 144, 174, -1, 4, - 145, 4, -1, 4, 143, 218, 144, 145, 4, -1, - 4, 145, 4, 174, -1, 4, 143, 218, 144, 145, - 4, 174, -1, 110, 141, 5, 147, 218, 142, -1, - 221, -1, 132, 220, -1, 131, 220, -1, 220, 132, - 220, -1, 220, 131, 220, -1, 148, 218, 147, 218, - 147, 218, 147, 218, 147, 218, 149, -1, 148, 218, - 147, 218, 147, 218, 147, 218, 149, -1, 148, 218, - 147, 218, 147, 218, 149, -1, 141, 218, 147, 218, - 147, 218, 142, -1, 223, -1, 222, 147, 223, -1, - 218, -1, 225, -1, 148, 149, -1, 148, 226, 149, - -1, 132, 148, 226, 149, -1, 218, 133, 148, 226, - 149, -1, 223, -1, 5, -1, 132, 225, -1, 218, - 133, 225, -1, 218, 8, 218, -1, 218, 8, 218, - 8, 218, -1, 46, 148, 218, 149, -1, 184, -1, - 193, -1, 4, 143, 144, -1, 4, 143, 148, 226, - 149, 144, -1, 218, -1, 225, -1, 226, 147, 218, - -1, 226, 147, 225, -1, 148, 218, 147, 218, 147, - 218, 147, 218, 149, -1, 148, 218, 147, 218, 147, - 218, 149, -1, 4, -1, 4, 145, 96, 145, 4, - -1, 148, 229, 149, -1, 4, 143, 218, 144, 145, - 97, -1, 227, -1, 229, 147, 227, -1, 231, -1, - 4, -1, 4, 145, 4, -1, 4, 143, 218, 144, - 145, 4, -1, 5, -1, 42, -1, 37, 141, 230, - 147, 230, 142, -1, 38, 141, 230, 142, -1, 39, - 141, 230, 142, -1, 36, 141, 230, 142, -1, 36, - 141, 230, 147, 226, 142, -1 + 153, 0, -1, 154, -1, 1, 6, -1, -1, 154, + 155, -1, 158, -1, 157, -1, 176, -1, 180, -1, + 185, -1, 189, -1, 190, -1, 191, -1, 194, -1, + 215, -1, 216, -1, 217, -1, 218, -1, 193, -1, + 192, -1, 188, -1, 219, -1, 129, -1, 129, 129, + -1, 35, 142, 5, 143, 6, -1, 35, 142, 5, + 143, 156, 232, 6, -1, 35, 142, 5, 148, 228, + 143, 6, -1, 35, 142, 5, 148, 228, 143, 156, + 232, 6, -1, 4, 5, 149, 159, 150, 6, -1, + 85, 4, 144, 220, 145, 6, -1, 86, 4, 144, + 220, 145, 6, -1, -1, 159, 162, -1, 159, 166, + -1, 159, 169, -1, 159, 171, -1, 159, 172, -1, + 220, -1, 160, 148, 220, -1, 220, -1, 161, 148, + 220, -1, -1, -1, 4, 163, 142, 160, 143, 164, + 149, 161, 150, 6, -1, 232, -1, 165, 148, 232, + -1, -1, 87, 142, 220, 148, 220, 148, 220, 143, + 167, 149, 165, 150, 6, -1, 232, -1, 168, 148, + 232, -1, -1, 88, 142, 220, 148, 220, 148, 220, + 148, 220, 143, 170, 149, 168, 150, 6, -1, 89, + 149, 224, 150, 149, 224, 150, 6, -1, 89, 149, + 224, 150, 149, 224, 150, 149, 224, 150, 149, 224, + 150, 6, -1, -1, 90, 173, 149, 161, 150, 6, + -1, 7, -1, 122, -1, 121, -1, 120, -1, 119, + -1, 140, -1, 139, -1, 4, 174, 220, 6, -1, + 4, 144, 220, 145, 174, 220, 6, -1, 4, 144, + 149, 228, 150, 145, 174, 225, 6, -1, 4, 144, + 145, 7, 225, 6, -1, 4, 144, 145, 122, 225, + 6, -1, 4, 175, 6, -1, 4, 144, 220, 145, + 175, 6, -1, 4, 7, 233, 6, -1, 4, 146, + 4, 7, 233, 6, -1, 4, 144, 220, 145, 146, + 4, 7, 233, 6, -1, 4, 146, 4, 174, 220, + 6, -1, 4, 144, 220, 145, 146, 4, 174, 220, + 6, -1, 4, 146, 4, 175, 6, -1, 4, 144, + 220, 145, 146, 4, 175, 6, -1, 4, 146, 97, + 146, 4, 7, 229, 6, -1, 4, 144, 220, 145, + 146, 97, 146, 4, 7, 229, 6, -1, 4, 146, + 98, 7, 230, 6, -1, 4, 144, 220, 145, 146, + 98, 7, 230, 6, -1, 4, 105, 7, 220, 6, + -1, 105, 144, 220, 145, 7, 4, 6, -1, 105, + 144, 220, 145, 146, 4, 7, 220, 6, -1, 105, + 144, 220, 145, 146, 4, 7, 233, 6, -1, 105, + 144, 220, 145, 146, 4, 7, 149, 228, 150, 6, + -1, 67, 142, 4, 143, 146, 4, 7, 220, 6, + -1, 67, 142, 4, 143, 146, 4, 7, 233, 6, + -1, 220, -1, 233, -1, -1, 100, 50, 149, 220, + 150, -1, -1, 59, 222, -1, 46, 142, 220, 143, + 7, 222, 6, -1, -1, 63, 46, 181, 142, 177, + 143, 7, 225, 6, -1, 55, 56, 225, 7, 220, + 6, -1, 49, 142, 220, 143, 7, 225, 6, -1, + 68, 49, 225, 6, -1, 53, 142, 220, 143, 7, + 225, 6, -1, 47, 142, 220, 143, 7, 225, 179, + 6, -1, 48, 142, 220, 143, 7, 225, 179, 6, + -1, 92, 142, 220, 143, 7, 225, 6, -1, 93, + 142, 220, 143, 7, 225, 6, -1, 94, 142, 220, + 143, 7, 225, 96, 225, 95, 220, 6, -1, 49, + 76, 142, 220, 143, 7, 225, 6, -1, 64, 49, + 142, 220, 143, 7, 225, 6, -1, -1, 63, 49, + 182, 142, 177, 143, 7, 225, 6, -1, 59, 52, + 142, 220, 143, 7, 225, 6, -1, 60, 52, 142, + 220, 143, 7, 225, 178, 6, -1, 12, 13, 6, + -1, 13, 52, 220, 6, -1, 57, 52, 142, 220, + 143, 7, 5, 5, 5, 6, -1, 50, 142, 220, + 143, 7, 225, 6, -1, 51, 142, 220, 143, 7, + 225, 6, -1, 52, 76, 142, 220, 143, 7, 225, + 6, -1, 64, 52, 142, 220, 143, 7, 225, 210, + 6, -1, 64, 52, 142, 220, 143, 7, 225, 4, + 149, 224, 150, 210, 6, -1, -1, 63, 52, 183, + 142, 177, 143, 7, 225, 6, -1, 62, 54, 142, + 220, 143, 7, 225, 6, -1, 54, 142, 220, 143, + 7, 225, 6, -1, 69, 142, 5, 148, 225, 148, + 5, 143, 6, -1, 64, 54, 142, 220, 143, 7, + 225, 6, -1, -1, 63, 54, 184, 142, 177, 143, + 7, 225, 6, -1, 71, 222, 149, 186, 150, -1, + 70, 149, 222, 148, 222, 148, 220, 150, 149, 186, + 150, -1, 72, 222, 149, 186, 150, -1, 73, 149, + 222, 148, 220, 150, 149, 186, 150, -1, 4, 149, + 186, 150, -1, 82, 49, 149, 228, 150, 52, 149, + 220, 150, -1, 79, 49, 142, 220, 143, 149, 228, + 150, 6, -1, 187, -1, 185, -1, -1, 187, 180, + -1, 187, 46, 149, 228, 150, 6, -1, 187, 49, + 149, 228, 150, 6, -1, 187, 52, 149, 228, 150, + 6, -1, 187, 54, 149, 228, 150, 6, -1, 75, + 59, 142, 220, 143, 7, 225, 6, -1, 75, 59, + 142, 220, 143, 7, 149, 222, 148, 222, 148, 228, + 150, 6, -1, 75, 59, 142, 220, 143, 7, 149, + 222, 148, 222, 148, 222, 148, 228, 150, 6, -1, + 75, 50, 142, 220, 143, 7, 149, 222, 148, 228, + 150, 6, -1, 75, 4, 142, 220, 143, 7, 225, + 6, -1, 75, 4, 142, 220, 143, 7, 5, 6, + -1, 75, 4, 149, 220, 150, 6, -1, 75, 4, + 142, 220, 143, 7, 149, 222, 148, 222, 148, 228, + 150, 6, -1, 80, 149, 187, 150, -1, 80, 105, + 144, 220, 145, 6, -1, 80, 4, 144, 220, 145, + 6, -1, 80, 4, 6, -1, 80, 4, 4, 6, + -1, 97, 229, 149, 187, 150, -1, 109, 5, 6, + -1, 110, 5, 6, -1, 109, 149, 187, 150, -1, + 110, 149, 187, 150, -1, 4, 233, 6, -1, 4, + 4, 144, 220, 145, 232, 6, -1, 4, 4, 4, + 144, 220, 145, 6, -1, 4, 220, 6, -1, 67, + 142, 4, 143, 146, 4, 6, -1, 91, 4, 6, + -1, 104, 6, -1, 43, 6, -1, 40, 6, -1, + 40, 149, 220, 148, 220, 148, 220, 148, 220, 148, + 220, 148, 220, 150, 6, -1, 41, 6, -1, 44, + 6, -1, 99, 142, 220, 8, 220, 143, -1, 99, + 142, 220, 8, 220, 8, 220, 143, -1, 99, 4, + 100, 149, 220, 8, 220, 150, -1, 99, 4, 100, + 149, 220, 8, 220, 8, 220, 150, -1, 101, -1, + 108, 4, -1, 106, -1, 107, 4, 6, -1, 102, + 142, 220, 143, -1, 103, -1, 74, 222, 149, 187, + 150, -1, 74, 149, 222, 148, 222, 148, 220, 150, + 149, 187, 150, -1, 74, 149, 222, 148, 222, 148, + 222, 148, 220, 150, 149, 187, 150, -1, -1, 74, + 222, 149, 187, 195, 208, 150, -1, -1, 74, 149, + 222, 148, 222, 148, 220, 150, 149, 187, 196, 208, + 150, -1, -1, 74, 149, 222, 148, 222, 148, 222, + 148, 220, 150, 149, 187, 197, 208, 150, -1, -1, + 74, 149, 187, 198, 208, 150, -1, 74, 46, 149, + 220, 148, 222, 150, 6, -1, 74, 49, 149, 220, + 148, 222, 150, 6, -1, 74, 52, 149, 220, 148, + 222, 150, 6, -1, 74, 46, 149, 220, 148, 222, + 148, 222, 148, 220, 150, 6, -1, 74, 49, 149, + 220, 148, 222, 148, 222, 148, 220, 150, 6, -1, + 74, 52, 149, 220, 148, 222, 148, 222, 148, 220, + 150, 6, -1, 74, 46, 149, 220, 148, 222, 148, + 222, 148, 222, 148, 220, 150, 6, -1, 74, 49, + 149, 220, 148, 222, 148, 222, 148, 222, 148, 220, + 150, 6, -1, 74, 52, 149, 220, 148, 222, 148, + 222, 148, 222, 148, 220, 150, 6, -1, -1, 74, + 46, 149, 220, 148, 222, 150, 199, 149, 208, 150, + 6, -1, -1, 74, 49, 149, 220, 148, 222, 150, + 200, 149, 208, 150, 6, -1, -1, 74, 52, 149, + 220, 148, 222, 150, 201, 149, 208, 150, 6, -1, + -1, 74, 46, 149, 220, 148, 222, 148, 222, 148, + 220, 150, 202, 149, 208, 150, 6, -1, -1, 74, + 49, 149, 220, 148, 222, 148, 222, 148, 220, 150, + 203, 149, 208, 150, 6, -1, -1, 74, 52, 149, + 220, 148, 222, 148, 222, 148, 220, 150, 204, 149, + 208, 150, 6, -1, -1, 74, 46, 149, 220, 148, + 222, 148, 222, 148, 222, 148, 220, 150, 205, 149, + 208, 150, 6, -1, -1, 74, 49, 149, 220, 148, + 222, 148, 222, 148, 222, 148, 220, 150, 206, 149, + 208, 150, 6, -1, -1, 74, 52, 149, 220, 148, + 222, 148, 222, 148, 222, 148, 220, 150, 207, 149, + 208, 150, 6, -1, 209, -1, 208, 209, -1, 83, + 149, 220, 150, 6, -1, 83, 149, 225, 148, 225, + 150, 6, -1, 83, 149, 225, 148, 225, 148, 225, + 150, 6, -1, 77, 6, -1, 84, 142, 220, 143, + 7, 225, 66, 220, 6, -1, -1, 4, -1, -1, + 66, 4, 220, -1, -1, 4, -1, -1, 7, 225, + -1, -1, 7, 220, -1, 61, 49, 226, 7, 220, + 211, 6, -1, 61, 52, 226, 213, 212, 6, -1, + 58, 52, 149, 220, 150, 7, 225, 6, -1, 61, + 54, 226, 213, 6, -1, 77, 52, 226, 214, 6, + -1, 78, 52, 225, 7, 220, 6, -1, 65, 49, + 225, 7, 225, 6, -1, 65, 52, 225, 7, 225, + 6, -1, 46, 149, 228, 150, 100, 52, 149, 220, + 150, 6, -1, 49, 149, 228, 150, 100, 52, 149, + 220, 150, 6, -1, 49, 149, 228, 150, 100, 54, + 149, 220, 150, 6, -1, 52, 149, 228, 150, 100, + 54, 149, 220, 150, 6, -1, 81, 6, -1, 81, + 4, 6, -1, 115, 142, 232, 143, 7, 149, 225, + 148, 225, 150, 6, -1, 116, 142, 232, 143, 7, + 149, 225, 148, 225, 150, 6, -1, 117, 142, 232, + 143, 7, 149, 225, 148, 225, 150, 6, -1, 118, + 142, 232, 143, 7, 149, 225, 148, 225, 150, 6, + -1, 221, -1, 142, 220, 143, -1, 133, 220, -1, + 132, 220, -1, 137, 220, -1, 220, 133, 220, -1, + 220, 132, 220, -1, 220, 134, 220, -1, 220, 135, + 220, -1, 220, 136, 220, -1, 220, 141, 220, -1, + 220, 128, 220, -1, 220, 129, 220, -1, 220, 131, + 220, -1, 220, 130, 220, -1, 220, 127, 220, -1, + 220, 126, 220, -1, 220, 125, 220, -1, 220, 124, + 220, -1, 220, 123, 220, 8, 220, -1, 14, 142, + 220, 143, -1, 15, 142, 220, 143, -1, 16, 142, + 220, 143, -1, 17, 142, 220, 143, -1, 18, 142, + 220, 143, -1, 19, 142, 220, 143, -1, 20, 142, + 220, 143, -1, 21, 142, 220, 143, -1, 22, 142, + 220, 143, -1, 24, 142, 220, 143, -1, 25, 142, + 220, 148, 220, 143, -1, 26, 142, 220, 143, -1, + 27, 142, 220, 143, -1, 28, 142, 220, 143, -1, + 29, 142, 220, 143, -1, 30, 142, 220, 143, -1, + 31, 142, 220, 143, -1, 32, 142, 220, 148, 220, + 143, -1, 33, 142, 220, 148, 220, 143, -1, 34, + 142, 220, 148, 220, 143, -1, 23, 142, 220, 143, + -1, 14, 144, 220, 145, -1, 15, 144, 220, 145, + -1, 16, 144, 220, 145, -1, 17, 144, 220, 145, + -1, 18, 144, 220, 145, -1, 19, 144, 220, 145, + -1, 20, 144, 220, 145, -1, 21, 144, 220, 145, + -1, 22, 144, 220, 145, -1, 24, 144, 220, 145, + -1, 25, 144, 220, 148, 220, 145, -1, 26, 144, + 220, 145, -1, 27, 144, 220, 145, -1, 28, 144, + 220, 145, -1, 29, 144, 220, 145, -1, 30, 144, + 220, 145, -1, 31, 144, 220, 145, -1, 32, 144, + 220, 148, 220, 145, -1, 33, 144, 220, 148, 220, + 145, -1, 34, 144, 220, 148, 220, 145, -1, 23, + 144, 220, 145, -1, 3, -1, 9, -1, 10, -1, + 11, -1, 112, -1, 113, -1, 114, -1, 4, -1, + 4, 151, 149, 220, 150, -1, 4, 144, 220, 145, + -1, 147, 4, 144, 145, -1, 4, 175, -1, 4, + 144, 220, 145, 175, -1, 4, 146, 4, -1, 4, + 144, 220, 145, 146, 4, -1, 4, 146, 4, 175, + -1, 4, 144, 220, 145, 146, 4, 175, -1, 111, + 142, 5, 148, 220, 143, -1, 223, -1, 133, 222, + -1, 132, 222, -1, 222, 133, 222, -1, 222, 132, + 222, -1, 149, 220, 148, 220, 148, 220, 148, 220, + 148, 220, 150, -1, 149, 220, 148, 220, 148, 220, + 148, 220, 150, -1, 149, 220, 148, 220, 148, 220, + 150, -1, 142, 220, 148, 220, 148, 220, 143, -1, + 225, -1, 224, 148, 225, -1, 220, -1, 227, -1, + 149, 150, -1, 149, 228, 150, -1, 133, 149, 228, + 150, -1, 220, 134, 149, 228, 150, -1, 225, -1, + 5, -1, 133, 227, -1, 220, 134, 227, -1, 220, + 8, 220, -1, 220, 8, 220, 8, 220, -1, 46, + 149, 220, 150, -1, 185, -1, 194, -1, 4, 144, + 145, -1, 4, 144, 149, 228, 150, 145, -1, 220, + -1, 227, -1, 228, 148, 220, -1, 228, 148, 227, + -1, 149, 220, 148, 220, 148, 220, 148, 220, 150, + -1, 149, 220, 148, 220, 148, 220, 150, -1, 4, + -1, 4, 146, 97, 146, 4, -1, 149, 231, 150, + -1, 4, 144, 220, 145, 146, 98, -1, 229, -1, + 231, 148, 229, -1, 233, -1, 4, -1, 4, 146, + 4, -1, 4, 144, 220, 145, 146, 4, -1, 5, + -1, 42, -1, 37, 142, 232, 148, 232, 143, -1, + 38, 142, 232, 143, -1, 39, 142, 232, 143, -1, + 36, 142, 232, 143, -1, 36, 142, 232, 148, 228, + 143, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -1024,43 +1028,43 @@ static const yytype_uint16 yyrline[] = { 0, 156, 156, 157, 162, 164, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 187, 191, 198, 203, 217, 230, 258, 272, - 283, 298, 303, 304, 305, 306, 307, 311, 313, 318, - 320, 326, 430, 325, 448, 455, 466, 465, 483, 490, - 501, 500, 517, 534, 557, 556, 570, 571, 572, 573, - 574, 578, 579, 586, 608, 635, 675, 685, 693, 701, - 713, 722, 728, 737, 755, 773, 782, 794, 799, 807, - 827, 850, 859, 867, 889, 912, 940, 952, 969, 973, - 984, 987, 1000, 1003, 1013, 1037, 1036, 1056, 1078, 1096, - 1118, 1136, 1166, 1196, 1214, 1232, 1258, 1275, 1294, 1293, - 1316, 1334, 1373, 1379, 1385, 1392, 1417, 1442, 1458, 1476, - 1509, 1508, 1532, 1550, 1568, 1581, 1598, 1597, 1623, 1628, - 1633, 1638, 1643, 1663, 1669, 1680, 1681, 1686, 1689, 1693, - 1716, 1739, 1762, 1790, 1811, 1832, 1854, 1874, 1986, 2005, - 2025, 2134, 2143, 2149, 2164, 2192, 2209, 2223, 2229, 2235, - 2244, 2258, 2300, 2317, 2332, 2351, 2363, 2387, 2391, 2398, - 2404, 2409, 2415, 2425, 2442, 2459, 2478, 2497, 2527, 2535, - 2541, 2548, 2552, 2561, 2569, 2577, 2586, 2585, 2598, 2597, - 2610, 2609, 2622, 2621, 2634, 2641, 2648, 2655, 2662, 2669, - 2676, 2683, 2690, 2698, 2697, 2709, 2708, 2720, 2719, 2731, - 2730, 2742, 2741, 2753, 2752, 2764, 2763, 2775, 2774, 2786, - 2785, 2800, 2803, 2809, 2818, 2838, 2861, 2865, 2889, 2892, - 2908, 2911, 2927, 2930, 2943, 2946, 2952, 2955, 2962, 3018, - 3088, 3093, 3160, 3203, 3229, 3252, 3275, 3278, 3287, 3291, - 3308, 3345, 3381, 3416, 3456, 3457, 3458, 3459, 3460, 3461, - 3462, 3463, 3464, 3471, 3472, 3473, 3474, 3475, 3476, 3477, - 3478, 3479, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3487, - 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 3496, 3497, - 3498, 3499, 3500, 3501, 3502, 3504, 3505, 3506, 3507, 3508, - 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3518, - 3519, 3520, 3521, 3522, 3523, 3524, 3533, 3534, 3535, 3536, - 3537, 3538, 3539, 3543, 3556, 3568, 3583, 3593, 3603, 3621, - 3626, 3631, 3641, 3651, 3659, 3663, 3667, 3671, 3675, 3682, - 3686, 3690, 3694, 3701, 3706, 3713, 3718, 3722, 3727, 3731, - 3739, 3750, 3754, 3766, 3774, 3782, 3789, 3800, 3820, 3830, - 3840, 3850, 3870, 3875, 3879, 3883, 3895, 3899, 3911, 3918, - 3928, 3932, 3947, 3952, 3959, 3963, 3976, 3984, 3995, 3999, - 4007, 4015, 4029, 4043, 4047 + 182, 183, 184, 188, 192, 199, 204, 218, 231, 259, + 273, 284, 299, 304, 305, 306, 307, 308, 312, 314, + 319, 321, 327, 431, 326, 449, 456, 467, 466, 484, + 491, 502, 501, 518, 535, 558, 557, 571, 572, 573, + 574, 575, 579, 580, 587, 609, 636, 676, 686, 694, + 702, 714, 723, 729, 738, 756, 774, 783, 795, 800, + 808, 828, 851, 860, 868, 890, 913, 941, 953, 970, + 974, 985, 988, 1001, 1004, 1014, 1038, 1037, 1057, 1079, + 1097, 1119, 1137, 1167, 1197, 1215, 1233, 1259, 1276, 1295, + 1294, 1317, 1335, 1374, 1380, 1386, 1393, 1418, 1443, 1459, + 1477, 1510, 1509, 1533, 1551, 1569, 1582, 1599, 1598, 1624, + 1629, 1634, 1639, 1644, 1664, 1670, 1681, 1682, 1687, 1690, + 1694, 1717, 1740, 1763, 1791, 1812, 1833, 1855, 1875, 1987, + 2006, 2026, 2135, 2144, 2150, 2165, 2193, 2210, 2224, 2230, + 2236, 2245, 2259, 2301, 2318, 2333, 2352, 2364, 2388, 2392, + 2399, 2405, 2410, 2416, 2426, 2443, 2460, 2479, 2498, 2528, + 2536, 2542, 2549, 2553, 2562, 2570, 2578, 2587, 2586, 2599, + 2598, 2611, 2610, 2623, 2622, 2635, 2642, 2649, 2656, 2663, + 2670, 2677, 2684, 2691, 2699, 2698, 2710, 2709, 2721, 2720, + 2732, 2731, 2743, 2742, 2754, 2753, 2765, 2764, 2776, 2775, + 2787, 2786, 2801, 2804, 2810, 2819, 2839, 2862, 2866, 2890, + 2893, 2909, 2912, 2928, 2931, 2944, 2947, 2953, 2956, 2963, + 3019, 3089, 3094, 3161, 3204, 3228, 3254, 3286, 3309, 3332, + 3335, 3344, 3348, 3365, 3402, 3438, 3473, 3513, 3514, 3515, + 3516, 3517, 3518, 3519, 3520, 3521, 3528, 3529, 3530, 3531, + 3532, 3533, 3534, 3535, 3536, 3537, 3538, 3539, 3540, 3541, + 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551, + 3552, 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3561, 3562, + 3563, 3564, 3565, 3566, 3567, 3568, 3569, 3570, 3571, 3572, + 3573, 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, 3590, + 3591, 3592, 3593, 3594, 3595, 3596, 3600, 3613, 3625, 3640, + 3650, 3660, 3678, 3683, 3688, 3698, 3708, 3716, 3720, 3724, + 3728, 3732, 3739, 3743, 3747, 3751, 3758, 3763, 3770, 3775, + 3779, 3784, 3788, 3796, 3807, 3811, 3823, 3831, 3839, 3846, + 3857, 3877, 3887, 3897, 3907, 3927, 3932, 3936, 3940, 3952, + 3956, 3968, 3975, 3985, 3989, 4004, 4009, 4016, 4020, 4033, + 4041, 4052, 4056, 4064, 4072, 4086, 4100, 4104 }; #endif @@ -1079,34 +1083,34 @@ static const char *const yytname[] = "tDistanceFunction", "tPoint", "tCircle", "tEllipse", "tLine", "tSphere", "tPolarSphere", "tSurface", "tSpline", "tVolume", "tCharacteristic", "tLength", "tParametric", "tElliptic", "tPlane", "tRuled", - "tTransfinite", "tComplex", "tPhysical", "tCompound", "tUsing", - "tPlugin", "tDegenerated", "tOCCShape", "tRotate", "tTranslate", - "tSymmetry", "tDilate", "tExtrude", "tLevelset", "tLoop", "tRecombine", - "tSmoother", "tSplit", "tDelete", "tCoherence", "tIntersect", "tLayers", - "tHole", "tAlias", "tAliasWithOptions", "tText2D", "tText3D", - "tInterpolationScheme", "tTime", "tCombine", "tBSpline", "tBezier", - "tNurbs", "tNurbsOrder", "tNurbsKnots", "tColor", "tColorTable", "tFor", - "tIn", "tEndFor", "tIf", "tEndIf", "tExit", "tField", "tReturn", "tCall", - "tFunction", "tShow", "tHide", "tGetValue", "tGMSH_MAJOR_VERSION", - "tGMSH_MINOR_VERSION", "tGMSH_PATCH_VERSION", "tHomRank", "tHomGen", - "tHomCut", "tHomSeq", "tAFFECTDIVIDE", "tAFFECTTIMES", "tAFFECTMINUS", - "tAFFECTPLUS", "'?'", "tOR", "tAND", "tNOTEQUAL", "tEQUAL", "'<'", "'>'", - "tGREATEROREQUAL", "tLESSOREQUAL", "'+'", "'-'", "'*'", "'/'", "'%'", - "'!'", "UNARYPREC", "tMINUSMINUS", "tPLUSPLUS", "'^'", "'('", "')'", - "'['", "']'", "'.'", "'#'", "','", "'{'", "'}'", "'~'", "$accept", "All", - "GeoFormatItems", "GeoFormatItem", "SendToFile", "Printf", "View", - "Views", "ElementCoords", "ElementValues", "Element", "@1", "@2", - "Text2DValues", "Text2D", "@3", "Text3DValues", "Text3D", "@4", - "InterpolationMatrix", "Time", "@5", "NumericAffectation", - "NumericIncrement", "Affectation", "PhysicalId", "InSphereCenter", - "CircleOptions", "Shape", "@6", "@7", "@8", "@9", "Transform", - "MultipleShape", "ListOfShapes", "LevelSet", "Delete", "Colorify", - "Visibility", "Command", "Loop", "Extrude", "@10", "@11", "@12", "@13", - "@14", "@15", "@16", "@17", "@18", "@19", "@20", "@21", "@22", - "ExtrudeParameters", "ExtrudeParameter", "CompoundMap", + "tTransfinite", "tComplex", "tPhysical", "tCompound", "tPeriodic", + "tUsing", "tPlugin", "tDegenerated", "tOCCShape", "tRotate", + "tTranslate", "tSymmetry", "tDilate", "tExtrude", "tLevelset", "tLoop", + "tRecombine", "tSmoother", "tSplit", "tDelete", "tCoherence", + "tIntersect", "tLayers", "tHole", "tAlias", "tAliasWithOptions", + "tText2D", "tText3D", "tInterpolationScheme", "tTime", "tCombine", + "tBSpline", "tBezier", "tNurbs", "tNurbsOrder", "tNurbsKnots", "tColor", + "tColorTable", "tFor", "tIn", "tEndFor", "tIf", "tEndIf", "tExit", + "tField", "tReturn", "tCall", "tFunction", "tShow", "tHide", "tGetValue", + "tGMSH_MAJOR_VERSION", "tGMSH_MINOR_VERSION", "tGMSH_PATCH_VERSION", + "tHomRank", "tHomGen", "tHomCut", "tHomSeq", "tAFFECTDIVIDE", + "tAFFECTTIMES", "tAFFECTMINUS", "tAFFECTPLUS", "'?'", "tOR", "tAND", + "tNOTEQUAL", "tEQUAL", "'<'", "'>'", "tGREATEROREQUAL", "tLESSOREQUAL", + "'+'", "'-'", "'*'", "'/'", "'%'", "'!'", "UNARYPREC", "tMINUSMINUS", + "tPLUSPLUS", "'^'", "'('", "')'", "'['", "']'", "'.'", "'#'", "','", + "'{'", "'}'", "'~'", "$accept", "All", "GeoFormatItems", "GeoFormatItem", + "SendToFile", "Printf", "View", "Views", "ElementCoords", + "ElementValues", "Element", "@1", "@2", "Text2DValues", "Text2D", "@3", + "Text3DValues", "Text3D", "@4", "InterpolationMatrix", "Time", "@5", + "NumericAffectation", "NumericIncrement", "Affectation", "PhysicalId", + "InSphereCenter", "CircleOptions", "Shape", "@6", "@7", "@8", "@9", + "Transform", "MultipleShape", "ListOfShapes", "LevelSet", "Delete", + "Colorify", "Visibility", "Command", "Loop", "Extrude", "@10", "@11", + "@12", "@13", "@14", "@15", "@16", "@17", "@18", "@19", "@20", "@21", + "@22", "ExtrudeParameters", "ExtrudeParameter", "CompoundMap", "TransfiniteType", "TransfiniteArrangement", "TransfiniteCorners", - "RecombineAngle", "Transfinite", "Embedding", "Coherence", "Homology", - "FExpr", "FExpr_Single", "VExpr", "VExpr_Single", + "RecombineAngle", "Transfinite", "Periodic", "Embedding", "Coherence", + "Homology", "FExpr", "FExpr_Single", "VExpr", "VExpr_Single", "RecursiveListOfListOfDouble", "ListOfDouble", "ListOfDoubleOrAll", "FExpr_Multi", "RecursiveListOfDouble", "ColorExpr", "ListOfColor", "RecursiveListOfColor", "StringExprVar", "StringExpr", 0 @@ -1130,55 +1134,55 @@ static const yytype_uint16 yytoknum[] = 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 63, 377, 378, 379, 380, 60, 62, 381, - 382, 43, 45, 42, 47, 37, 33, 383, 384, 385, - 94, 40, 41, 91, 93, 46, 35, 44, 123, 125, - 126 + 375, 376, 377, 63, 378, 379, 380, 381, 60, 62, + 382, 383, 43, 45, 42, 47, 37, 33, 384, 385, + 386, 94, 40, 41, 91, 93, 46, 35, 44, 123, + 125, 126 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 151, 152, 152, 153, 153, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 155, 155, 156, 156, 156, 156, 157, 157, - 157, 158, 158, 158, 158, 158, 158, 159, 159, 160, - 160, 162, 163, 161, 164, 164, 166, 165, 167, 167, - 169, 168, 170, 170, 172, 171, 173, 173, 173, 173, - 173, 174, 174, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 176, 176, - 177, 177, 178, 178, 179, 180, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 181, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 182, 179, 179, 179, 179, 179, 183, 179, 184, 184, - 184, 184, 184, 184, 184, 185, 185, 186, 186, 186, - 186, 186, 186, 187, 187, 187, 187, 187, 187, 187, - 187, 188, 188, 188, 188, 188, 189, 190, 190, 190, - 190, 191, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, 191, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 193, 193, 193, 194, 193, 195, 193, - 196, 193, 197, 193, 193, 193, 193, 193, 193, 193, - 193, 193, 193, 198, 193, 199, 193, 200, 193, 201, - 193, 202, 193, 203, 193, 204, 193, 205, 193, 206, - 193, 207, 207, 208, 208, 208, 208, 208, 209, 209, - 210, 210, 211, 211, 212, 212, 213, 213, 214, 214, - 214, 214, 214, 214, 215, 215, 215, 215, 216, 216, - 217, 217, 217, 217, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 219, 219, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, - 219, 219, 219, 219, 220, 220, 220, 220, 220, 221, - 221, 221, 221, 222, 222, 223, 223, 223, 223, 223, - 223, 224, 224, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 226, 226, 226, 226, 227, 227, 227, 227, - 228, 228, 229, 229, 230, 230, 230, 230, 231, 231, - 231, 231, 231, 231, 231 + 0, 152, 153, 153, 154, 154, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 156, 156, 157, 157, 157, 157, 158, + 158, 158, 159, 159, 159, 159, 159, 159, 160, 160, + 161, 161, 163, 164, 162, 165, 165, 167, 166, 168, + 168, 170, 169, 171, 171, 173, 172, 174, 174, 174, + 174, 174, 175, 175, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, + 177, 178, 178, 179, 179, 180, 181, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 182, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 183, 180, 180, 180, 180, 180, 184, 180, 185, + 185, 185, 185, 185, 185, 185, 186, 186, 187, 187, + 187, 187, 187, 187, 188, 188, 188, 188, 188, 188, + 188, 188, 189, 189, 189, 189, 189, 190, 191, 191, + 191, 191, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 193, 193, 193, 193, 193, 193, + 193, 193, 193, 193, 194, 194, 194, 195, 194, 196, + 194, 197, 194, 198, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 199, 194, 200, 194, 201, 194, + 202, 194, 203, 194, 204, 194, 205, 194, 206, 194, + 207, 194, 208, 208, 209, 209, 209, 209, 209, 210, + 210, 211, 211, 212, 212, 213, 213, 214, 214, 215, + 215, 215, 215, 215, 215, 216, 216, 217, 217, 217, + 217, 218, 218, 219, 219, 219, 219, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 222, 222, 222, + 222, 222, 223, 223, 223, 223, 224, 224, 225, 225, + 225, 225, 225, 225, 226, 226, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 228, 228, 228, 228, 229, + 229, 229, 229, 230, 230, 231, 231, 232, 232, 232, + 232, 233, 233, 233, 233, 233, 233, 233 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1186,43 +1190,43 @@ static const yytype_uint8 yyr2[] = { 0, 2, 1, 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 5, 7, 7, 9, 6, 6, - 6, 0, 2, 2, 2, 2, 2, 1, 3, 1, - 3, 0, 0, 10, 1, 3, 0, 13, 1, 3, - 0, 15, 8, 14, 0, 6, 1, 1, 1, 1, - 1, 1, 1, 4, 7, 9, 6, 6, 3, 6, - 4, 6, 9, 6, 9, 5, 8, 8, 11, 6, - 9, 5, 7, 9, 9, 11, 9, 9, 1, 1, - 0, 5, 0, 2, 7, 0, 9, 6, 7, 4, - 7, 8, 8, 7, 7, 11, 8, 8, 0, 9, - 8, 9, 3, 4, 10, 7, 7, 8, 9, 13, - 0, 9, 8, 7, 9, 8, 0, 9, 5, 11, - 5, 9, 4, 9, 9, 1, 1, 0, 2, 6, - 6, 6, 6, 8, 14, 16, 12, 8, 8, 6, - 14, 4, 6, 6, 3, 4, 5, 3, 3, 4, - 4, 3, 7, 7, 3, 7, 3, 2, 2, 2, - 15, 2, 2, 6, 8, 8, 10, 1, 2, 1, - 3, 4, 1, 5, 11, 13, 0, 7, 0, 13, - 0, 15, 0, 6, 8, 8, 8, 12, 12, 12, - 14, 14, 14, 0, 12, 0, 12, 0, 12, 0, - 16, 0, 16, 0, 16, 0, 18, 0, 18, 0, - 18, 1, 2, 5, 7, 9, 2, 9, 0, 1, - 0, 3, 0, 1, 0, 2, 0, 2, 7, 6, - 8, 5, 5, 6, 10, 10, 10, 10, 2, 3, - 11, 11, 11, 11, 1, 3, 2, 2, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 5, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, - 4, 6, 6, 6, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, - 4, 4, 6, 6, 6, 4, 1, 1, 1, 1, - 1, 1, 1, 1, 5, 4, 4, 2, 5, 3, - 6, 4, 7, 6, 1, 2, 2, 3, 3, 11, - 9, 7, 7, 1, 3, 1, 1, 2, 3, 4, - 5, 1, 1, 2, 3, 3, 5, 4, 1, 1, - 3, 6, 1, 1, 3, 3, 9, 7, 1, 5, - 3, 6, 1, 3, 1, 1, 3, 6, 1, 1, - 6, 4, 4, 4, 6 + 1, 1, 1, 1, 2, 5, 7, 7, 9, 6, + 6, 6, 0, 2, 2, 2, 2, 2, 1, 3, + 1, 3, 0, 0, 10, 1, 3, 0, 13, 1, + 3, 0, 15, 8, 14, 0, 6, 1, 1, 1, + 1, 1, 1, 1, 4, 7, 9, 6, 6, 3, + 6, 4, 6, 9, 6, 9, 5, 8, 8, 11, + 6, 9, 5, 7, 9, 9, 11, 9, 9, 1, + 1, 0, 5, 0, 2, 7, 0, 9, 6, 7, + 4, 7, 8, 8, 7, 7, 11, 8, 8, 0, + 9, 8, 9, 3, 4, 10, 7, 7, 8, 9, + 13, 0, 9, 8, 7, 9, 8, 0, 9, 5, + 11, 5, 9, 4, 9, 9, 1, 1, 0, 2, + 6, 6, 6, 6, 8, 14, 16, 12, 8, 8, + 6, 14, 4, 6, 6, 3, 4, 5, 3, 3, + 4, 4, 3, 7, 7, 3, 7, 3, 2, 2, + 2, 15, 2, 2, 6, 8, 8, 10, 1, 2, + 1, 3, 4, 1, 5, 11, 13, 0, 7, 0, + 13, 0, 15, 0, 6, 8, 8, 8, 12, 12, + 12, 14, 14, 14, 0, 12, 0, 12, 0, 12, + 0, 16, 0, 16, 0, 16, 0, 18, 0, 18, + 0, 18, 1, 2, 5, 7, 9, 2, 9, 0, + 1, 0, 3, 0, 1, 0, 2, 0, 2, 7, + 6, 8, 5, 5, 6, 6, 6, 10, 10, 10, + 10, 2, 3, 11, 11, 11, 11, 1, 3, 2, + 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 5, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, + 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, + 4, 4, 4, 4, 4, 6, 6, 6, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 5, 4, 4, + 2, 5, 3, 6, 4, 7, 6, 1, 2, 2, + 3, 3, 11, 9, 7, 7, 1, 3, 1, 1, + 2, 3, 4, 5, 1, 1, 2, 3, 3, 5, + 4, 1, 1, 3, 6, 1, 1, 3, 3, 9, + 7, 1, 5, 3, 6, 1, 3, 1, 1, 3, + 6, 1, 1, 6, 4, 4, 4, 6 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1235,312 +1239,314 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 177, 0, 182, 0, 0, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 5, - 7, 6, 8, 9, 10, 20, 11, 12, 13, 19, - 18, 14, 15, 16, 17, 21, 316, 323, 378, 56, - 317, 318, 319, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 178, 0, 183, 0, + 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 7, 6, 8, 9, 10, 21, 11, 12, 13, + 20, 19, 14, 15, 16, 17, 18, 22, 319, 326, + 381, 57, 320, 321, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 379, 0, - 0, 320, 321, 322, 60, 59, 58, 57, 0, 0, - 0, 62, 61, 0, 0, 0, 0, 137, 0, 0, - 0, 254, 0, 0, 0, 0, 169, 0, 171, 168, - 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 95, 108, 120, 126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, - 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 137, 0, 248, 0, 0, - 0, 0, 0, 0, 0, 368, 0, 0, 0, 0, - 0, 167, 0, 0, 178, 0, 137, 0, 137, 0, - 0, 0, 0, 0, 0, 0, 0, 327, 31, 378, + 382, 0, 0, 323, 324, 325, 61, 60, 59, 58, + 0, 0, 0, 63, 62, 0, 0, 0, 0, 138, + 0, 0, 0, 257, 0, 0, 0, 0, 170, 0, + 172, 169, 173, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 109, 121, 127, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 0, 0, 0, 0, 0, 138, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 251, 0, 0, 0, 0, 0, 0, 0, 371, + 0, 0, 0, 0, 0, 168, 0, 0, 179, 0, + 138, 0, 138, 0, 0, 0, 0, 0, 0, 0, + 0, 330, 32, 381, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 260, 259, 261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 137, 0, 136, 0, + 69, 165, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 162, 113, 0, + 0, 0, 0, 326, 0, 0, 361, 362, 365, 366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 323, - 257, 256, 258, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 136, 0, 135, 0, 68, 164, 0, 0, + 0, 0, 0, 0, 348, 0, 349, 0, 0, 0, + 0, 355, 354, 0, 235, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 161, 112, 0, 0, 0, 0, 323, - 0, 0, 358, 359, 362, 363, 0, 0, 0, 0, + 339, 338, 0, 0, 0, 0, 138, 138, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 138, 0, 0, + 0, 0, 237, 0, 0, 0, 155, 0, 0, 0, + 252, 0, 0, 0, 167, 0, 0, 0, 0, 0, + 138, 0, 0, 0, 0, 181, 158, 0, 159, 0, + 378, 0, 377, 0, 0, 0, 0, 0, 332, 0, + 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 345, 0, 346, 0, 0, 0, 0, 352, 351, 0, - 234, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 335, 0, 0, 0, 0, - 137, 137, 0, 0, 0, 0, 0, 0, 0, 192, - 0, 137, 0, 0, 0, 0, 236, 0, 0, 0, - 154, 0, 0, 0, 249, 0, 0, 0, 166, 0, - 0, 0, 0, 0, 137, 0, 0, 0, 0, 180, - 157, 0, 158, 0, 375, 0, 374, 0, 0, 0, - 0, 0, 329, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 258, 0, 0, 0, 0, 57, 0, 0, 0, + 0, 0, 133, 0, 0, 0, 0, 139, 64, 0, + 275, 274, 273, 272, 268, 269, 271, 270, 263, 262, + 264, 265, 266, 267, 114, 0, 0, 0, 0, 0, + 0, 259, 356, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 350, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, - 56, 0, 0, 0, 0, 0, 132, 0, 0, 0, - 0, 138, 63, 0, 272, 271, 270, 269, 265, 266, - 268, 267, 260, 259, 261, 262, 263, 264, 113, 0, - 0, 0, 0, 0, 0, 256, 353, 0, 0, 0, + 0, 0, 100, 0, 0, 0, 0, 341, 340, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, + 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, + 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 182, 0, 160, 161, 0, 0, 0, 0, + 0, 0, 0, 328, 334, 0, 42, 0, 0, 0, + 55, 0, 33, 34, 35, 36, 37, 277, 298, 278, + 299, 279, 300, 280, 301, 281, 302, 282, 303, 283, + 304, 284, 305, 285, 306, 297, 318, 286, 307, 0, + 0, 288, 309, 289, 310, 290, 311, 291, 312, 292, + 313, 293, 314, 0, 0, 0, 0, 0, 0, 386, + 0, 0, 384, 385, 82, 0, 0, 0, 0, 0, + 57, 0, 0, 0, 0, 0, 76, 0, 0, 0, + 0, 329, 0, 0, 0, 0, 0, 25, 23, 0, + 0, 0, 0, 363, 0, 0, 358, 264, 357, 367, + 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 351, 0, 0, 0, 0, 0, + 0, 231, 236, 234, 0, 242, 0, 0, 89, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 99, 0, 0, 0, 0, 338, - 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 186, 0, 0, 0, 0, 0, 0, 0, 0, 155, - 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 181, 0, 159, 160, 0, 0, - 0, 0, 0, 0, 0, 325, 331, 0, 41, 0, - 0, 0, 54, 0, 32, 33, 34, 35, 36, 274, - 295, 275, 296, 276, 297, 277, 298, 278, 299, 279, - 300, 280, 301, 281, 302, 282, 303, 294, 315, 283, - 304, 0, 0, 285, 306, 286, 307, 287, 308, 288, - 309, 289, 310, 290, 311, 0, 0, 0, 0, 0, - 0, 383, 0, 0, 381, 382, 81, 0, 0, 0, - 0, 0, 56, 0, 0, 0, 0, 0, 75, 0, - 0, 0, 0, 326, 0, 0, 0, 0, 0, 24, - 22, 0, 0, 0, 0, 360, 0, 0, 355, 261, - 354, 364, 365, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 348, 0, 0, 0, - 0, 0, 0, 230, 235, 233, 0, 241, 0, 0, - 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 128, 130, 0, 0, 0, 0, 0, - 0, 0, 0, 221, 0, 183, 0, 0, 0, 0, - 0, 237, 242, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, - 0, 376, 0, 0, 0, 0, 0, 0, 328, 0, - 324, 0, 0, 0, 0, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 325, 66, - 67, 0, 0, 0, 0, 0, 69, 71, 73, 0, - 0, 372, 0, 79, 0, 0, 0, 0, 273, 23, - 0, 0, 0, 0, 0, 357, 0, 0, 92, 92, + 0, 0, 0, 129, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 222, 0, 184, 0, 0, 0, 0, + 0, 238, 243, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, + 0, 379, 0, 0, 0, 0, 0, 0, 331, 0, + 327, 0, 0, 0, 0, 0, 29, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 328, 67, + 68, 0, 0, 0, 0, 0, 70, 72, 74, 0, + 0, 375, 0, 80, 0, 0, 0, 0, 276, 24, + 0, 0, 0, 0, 0, 360, 0, 0, 93, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 349, 0, 97, 0, 0, 0, 0, 0, 0, 239, + 352, 0, 98, 0, 0, 0, 0, 0, 0, 240, + 0, 0, 0, 0, 0, 0, 0, 0, 245, 246, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, + 0, 0, 194, 223, 0, 0, 0, 150, 0, 0, + 244, 0, 154, 153, 0, 30, 31, 0, 0, 0, + 372, 0, 0, 0, 174, 0, 0, 0, 0, 0, + 0, 0, 164, 333, 163, 0, 0, 0, 0, 346, + 0, 287, 308, 294, 315, 295, 316, 296, 317, 387, + 383, 336, 0, 57, 0, 0, 0, 0, 65, 0, + 0, 0, 373, 0, 0, 0, 0, 26, 27, 0, + 0, 95, 0, 359, 0, 0, 0, 0, 0, 99, + 0, 0, 116, 117, 0, 0, 101, 124, 353, 0, + 0, 0, 91, 0, 239, 0, 0, 0, 0, 0, + 0, 229, 0, 166, 0, 0, 0, 0, 0, 138, + 0, 204, 0, 206, 0, 208, 348, 0, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, + 104, 105, 0, 0, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 335, 0, 38, 0, 0, 0, 0, + 0, 40, 0, 0, 0, 77, 0, 0, 78, 0, + 376, 140, 141, 142, 143, 0, 0, 364, 0, 94, + 102, 103, 107, 0, 0, 118, 0, 0, 241, 111, + 0, 0, 232, 123, 0, 0, 0, 0, 108, 230, + 0, 126, 0, 0, 0, 0, 345, 0, 344, 0, + 0, 195, 0, 0, 196, 0, 0, 197, 0, 0, + 0, 0, 0, 0, 149, 0, 0, 148, 0, 0, + 144, 0, 0, 0, 0, 370, 0, 176, 175, 0, + 0, 0, 380, 0, 0, 0, 0, 43, 0, 0, + 0, 347, 0, 0, 0, 66, 73, 75, 0, 81, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 112, + 97, 110, 122, 128, 0, 119, 87, 88, 125, 138, + 0, 132, 0, 0, 0, 0, 0, 0, 224, 0, + 0, 138, 0, 0, 0, 0, 135, 134, 0, 0, + 0, 0, 84, 85, 0, 0, 0, 0, 0, 39, + 0, 0, 0, 41, 56, 0, 374, 0, 247, 248, + 249, 250, 115, 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 226, 0, 0, - 193, 222, 0, 0, 0, 149, 0, 0, 243, 0, - 153, 152, 0, 29, 30, 0, 0, 0, 369, 0, - 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, - 163, 330, 162, 0, 0, 0, 0, 343, 0, 284, - 305, 291, 312, 292, 313, 293, 314, 384, 380, 333, - 0, 56, 0, 0, 0, 0, 64, 0, 0, 0, - 370, 0, 0, 0, 0, 25, 26, 0, 0, 94, - 0, 356, 0, 0, 0, 0, 0, 98, 0, 0, - 115, 116, 0, 0, 100, 123, 350, 0, 0, 0, - 90, 0, 238, 0, 0, 0, 0, 0, 0, 228, - 0, 165, 0, 0, 0, 0, 0, 137, 0, 203, - 0, 205, 0, 207, 345, 0, 0, 0, 0, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 104, - 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, - 0, 332, 0, 37, 0, 0, 0, 0, 0, 39, - 0, 0, 0, 76, 0, 0, 77, 0, 373, 139, - 140, 141, 142, 0, 0, 361, 0, 93, 101, 102, - 106, 0, 0, 117, 0, 0, 240, 110, 0, 0, - 231, 122, 0, 0, 0, 0, 107, 229, 0, 125, - 0, 0, 0, 0, 342, 0, 341, 0, 0, 194, - 0, 0, 195, 0, 0, 196, 0, 0, 0, 0, - 0, 0, 148, 0, 0, 147, 0, 0, 143, 0, - 0, 0, 0, 367, 0, 175, 174, 0, 0, 0, - 377, 0, 0, 0, 0, 42, 0, 0, 0, 344, - 0, 0, 0, 65, 72, 74, 0, 80, 0, 27, - 0, 0, 0, 0, 0, 0, 0, 111, 96, 109, - 121, 127, 0, 118, 86, 87, 124, 137, 0, 131, - 0, 0, 0, 0, 0, 0, 223, 0, 0, 137, - 0, 0, 0, 0, 134, 133, 0, 0, 0, 0, - 83, 84, 0, 0, 0, 0, 0, 38, 0, 0, - 0, 40, 55, 0, 371, 0, 244, 245, 246, 247, - 114, 0, 0, 0, 0, 340, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, - 0, 0, 0, 0, 366, 176, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 78, 0, 0, 228, 129, - 0, 209, 0, 0, 211, 0, 0, 213, 0, 0, - 0, 224, 0, 184, 0, 137, 0, 0, 0, 105, - 85, 250, 251, 252, 253, 0, 46, 0, 52, 0, - 0, 91, 229, 0, 339, 197, 0, 0, 204, 198, - 0, 0, 206, 199, 0, 0, 208, 0, 0, 0, - 190, 0, 146, 0, 0, 0, 0, 0, 0, 0, - 119, 0, 215, 0, 217, 0, 219, 225, 227, 189, - 185, 0, 0, 0, 0, 43, 0, 50, 0, 0, - 0, 200, 0, 0, 201, 0, 0, 202, 0, 0, - 150, 0, 144, 0, 44, 0, 0, 170, 0, 0, - 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, - 210, 0, 212, 0, 214, 0, 145, 45, 47, 0, - 48, 0, 0, 0, 0, 0, 0, 53, 216, 218, - 220, 49, 51 + 189, 0, 0, 0, 0, 0, 369, 177, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, + 229, 130, 0, 210, 0, 0, 212, 0, 0, 214, + 0, 0, 0, 225, 0, 185, 0, 138, 0, 0, + 0, 106, 86, 253, 254, 255, 256, 0, 47, 0, + 53, 0, 0, 92, 230, 0, 342, 198, 0, 0, + 205, 199, 0, 0, 207, 200, 0, 0, 209, 0, + 0, 0, 191, 0, 147, 0, 0, 0, 0, 0, + 0, 0, 120, 0, 216, 0, 218, 0, 220, 226, + 228, 190, 186, 0, 0, 0, 0, 44, 0, 51, + 0, 0, 0, 201, 0, 0, 202, 0, 0, 203, + 0, 0, 151, 0, 145, 0, 45, 0, 0, 171, + 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, + 0, 0, 211, 0, 213, 0, 215, 0, 146, 46, + 48, 0, 49, 0, 0, 0, 0, 0, 0, 54, + 217, 219, 221, 50, 52 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 69, 701, 70, 71, 434, 1032, 1038, - 624, 801, 1186, 1333, 625, 1296, 1359, 626, 1335, 627, - 628, 805, 138, 237, 72, 739, 1069, 964, 501, 363, - 364, 365, 366, 332, 303, 304, 75, 76, 77, 78, - 79, 80, 333, 766, 1254, 1311, 578, 1090, 1093, 1096, - 1276, 1280, 1284, 1322, 1325, 1328, 762, 763, 1078, 868, - 736, 553, 586, 82, 83, 84, 85, 350, 141, 375, - 189, 926, 927, 359, 352, 544, 217, 692, 832, 425, - 426 + -1, 2, 3, 70, 709, 71, 72, 440, 1044, 1050, + 632, 811, 1198, 1345, 633, 1308, 1371, 634, 1347, 635, + 636, 815, 140, 241, 73, 747, 1081, 976, 507, 367, + 368, 369, 370, 336, 307, 308, 76, 77, 78, 79, + 80, 81, 337, 776, 1266, 1323, 586, 1102, 1105, 1108, + 1288, 1292, 1296, 1334, 1337, 1340, 772, 773, 1090, 878, + 744, 559, 594, 83, 84, 85, 86, 87, 354, 143, + 381, 193, 938, 939, 363, 356, 550, 221, 700, 842, + 431, 432 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -1108 +#define YYPACT_NINF -1121 static const yytype_int16 yypact[] = { - 3373, 40, 70, 3479, -1108, -1108, 1690, 76, 56, -49, - 1, 120, 133, 137, -62, 83, 89, -47, 138, 146, - -41, 150, 159, 261, 294, 308, 312, 324, 228, 313, - 604, 247, 232, 336, 262, 246, 274, 274, 256, 278, - 62, 356, 359, 371, 11, 26, 376, 427, 432, 440, - 304, 317, 332, 20, 36, -1108, 335, -1108, 448, 334, - -1108, 483, 487, -4, 6, 366, 372, 383, 384, -1108, - -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, - -1108, -1108, -1108, -1108, -1108, -1108, -1108, 22, 342, 495, - -1108, -1108, -1108, 47, 147, 227, 280, 287, 326, 355, - 433, 439, 473, 514, 540, 544, 552, 553, 558, 577, - 583, 587, 598, 599, 394, 397, 403, 408, -1108, 513, - 419, -1108, -1108, -1108, -1108, -1108, -1108, -1108, 3208, 3208, - 3208, -1108, -1108, 3208, 2749, 14, 562, 214, 3208, 572, - 1166, -1108, 579, 585, 3208, 590, -1108, 3208, -1108, -1108, - -1108, 3208, 3135, 3208, 3208, 458, 3208, 3135, 3208, 3208, - 459, 3135, 3208, 3208, 2116, 462, 472, 468, 499, 1836, - 1836, 1836, 500, -1108, -1108, -1108, -1108, 507, 524, 528, - 623, 2116, 665, 274, 274, 274, 3208, 3208, -77, -1108, - -58, 274, 525, 538, 554, 2995, -32, -11, 578, 588, - 1836, 2116, 602, 33, 560, -1108, 750, -1108, 640, 691, - 695, 783, 3208, 3208, 3208, 649, 3208, 658, 708, 3208, - 3208, -1108, 3208, 811, -1108, 816, -1108, 835, -1108, 466, - 466, 466, 466, 714, 3208, 857, 722, -1108, -1108, -1108, - 856, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, - 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, - 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, - 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, - 3208, 3208, 3208, 466, 466, 466, 466, 3208, 874, 529, - 740, 740, 740, 5499, 65, 3135, 4763, 84, 736, 877, - 742, 751, -1108, 752, 2984, 1193, -1108, -1108, 3208, 3208, - 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, - 3208, 3208, 3208, -1108, -1108, 1224, -100, 4061, 5520, 504, - 754, 3135, -1108, -1108, 2496, -1108, 208, 5541, 5562, 3208, - 5583, 576, 5604, 5625, 3208, 608, 5646, 5667, 2256, 1542, - 2530, 893, -1108, 3208, 3208, 3208, 3208, -1108, -1108, 912, - 913, 913, 3208, 782, 797, 801, 803, 3208, 3208, 3208, - 795, 935, 799, -54, -1108, -1108, 4087, 4113, 274, 274, - 214, 214, 64, 3208, 3208, 3208, 2995, 2995, 3208, 2984, - 187, -1108, 3208, 3208, 3208, 3208, 940, 941, 3208, 943, - -1108, 3208, 3208, 796, -1108, 3135, 3208, 3208, -1108, 5688, - 5709, 5730, 854, 4139, -1108, 804, 2602, 5751, 4786, -1108, - -1108, 1164, -1108, 1722, 616, 809, -1108, 812, 813, 815, - 3208, 4809, -21, 3208, 17, -1108, 5772, 4832, 5793, 4855, - 5814, 4878, 5835, 4901, 5856, 4924, 5877, 4947, 5898, 4970, - 5919, 4993, 5940, 5016, 5961, 5039, 5982, 5062, 4165, 4191, - 6003, 5085, 6024, 5108, 6045, 5131, 6066, 5154, 6087, 5177, - 6108, 5200, 4217, 4243, 4269, 4295, 4321, 4347, -82, 806, - 817, 818, 1243, 814, 3208, -1108, 2116, 2116, 613, 321, - 495, 3208, 952, 960, 21, 821, -1108, 53, -46, -39, - 71, -1108, -1108, 2670, 800, 781, 618, 618, 491, 491, - 491, 491, 542, 542, 740, 740, 740, 740, -1108, 42, - 3135, 3208, 961, 2956, 3208, 740, -1108, 3208, 3135, 3135, - 870, 963, 964, 6129, 965, 875, 966, 970, 6150, 880, - 974, 976, 3135, -1108, 632, 2396, 3208, 6171, 3060, 6192, - 6213, 3208, 2116, 980, 979, 6234, 3269, 3269, 3269, 3269, - 6255, 6276, 6297, 842, -1108, 2116, 274, 3208, 3208, -1108, - -1108, 839, 840, 3208, 4373, 4399, 4425, 4035, 489, 274, - 1872, 6318, 3201, 6339, 6360, 3208, 986, 3208, 6381, -1108, - 5223, 5246, -1108, 633, 5269, 5292, 988, 989, 990, 853, - 3208, 2012, 3208, 3208, -1108, 34, -1108, -1108, 3208, 995, - 994, 996, 997, 999, 5315, 46, -1108, 3235, -1108, 861, - 866, 862, -1108, 1006, -1108, -1108, -1108, -1108, -1108, -1108, - -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, - -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, - -1108, 3208, 3208, -1108, -1108, -1108, -1108, -1108, -1108, -1108, - -1108, -1108, -1108, -1108, -1108, 3208, 3208, 3208, 3208, 3208, - 3208, -1108, 3135, 466, -1108, -1108, -1108, 3208, 5338, 1007, - 1008, 871, -1108, 23, 3208, 1010, 1011, 1504, -1108, 1013, - 879, 20, 1012, -1108, 3135, 3135, 3135, 3135, 3208, -1108, - 896, 466, 184, 4451, 274, -1108, 3135, 3372, 2742, 740, - -1108, 2496, -1108, 973, 2116, 2116, 1019, 2116, 732, 2116, - 2116, 1020, 977, 2116, 2116, 638, -1108, 3135, 1615, 1023, - 1025, 1026, 1027, 2988, -1108, -1108, 1029, -1108, 1030, 894, - 6612, -1108, 897, 898, 899, 1031, 1035, 1040, 1047, 905, - 222, 4477, 4503, -1108, -1108, 3475, 274, 274, 274, 1048, - 908, 916, -24, -1108, 243, -1108, 489, 1046, 1052, 1053, - 1054, 6612, -1108, 1904, 911, 1057, 1059, 1014, 1061, 1062, - 2116, 2116, 2116, 1065, 4529, -1108, 2776, 958, 1066, 1067, - 5361, -1108, 924, 925, 926, 927, 1071, 1074, -1108, 1090, - -1108, 962, 3208, 3208, 2116, 951, -1108, 6402, 5384, 6423, - 5407, 6444, 5430, 6465, 5453, 190, 959, 6486, 490, -1108, - -1108, 15, 202, 957, 1097, 2044, -1108, -1108, -1108, 20, - 3208, -1108, 646, -1108, 651, 652, 655, 656, 6612, -1108, - 1099, 50, 3208, 51, 663, -1108, 3208, 968, 1050, 1050, - 2116, 1101, 969, 971, 1104, 1106, 2116, 975, 1107, 1108, - -1108, 664, -1108, 1113, 2116, 2116, 2116, 1117, 1116, -1108, - 2116, 1120, 1122, 1123, 1124, 2116, 2116, 2116, 186, 1127, - 3208, 3208, 3208, 985, -51, -18, 68, -1108, 2116, 3208, - -1108, -1108, 2995, -7, 1976, -1108, 987, 2536, -1108, 3135, - -1108, -1108, 991, -1108, -1108, 1128, 1130, 1042, -1108, 3208, - 3208, 3208, -1108, 1132, 1134, 1000, 2116, 2116, 2116, 2116, - -1108, -21, -1108, 3208, 4555, 4581, 667, -1108, 3208, -1108, - -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, - 2116, 495, 3208, 1140, 1143, 21, -1108, 1146, 5476, 20, - -1108, 1149, 1151, 1153, 1155, -1108, -1108, 466, 4607, -1108, - 1005, 6612, 3208, 274, 1156, 1157, 1158, -1108, 3208, 3208, - -1108, -1108, 1159, 3208, -1108, -1108, -1108, 1162, 1163, 1165, - 1069, 3208, -1108, 1167, 2116, 2116, 2116, 2116, 1168, 1171, - 1172, -1108, 3269, 1037, 3503, 6507, 1764, 214, 274, 1174, - 274, 1175, 274, 1178, 582, 1038, 6528, 3531, 285, -1108, - 1180, 1377, 1181, 274, 1377, 1182, 671, 3208, -1108, -1108, - 2116, 2809, 643, 6549, -1108, 2816, 1186, 1044, 1045, 1049, - 1055, -1108, 197, 6612, 3208, 3208, 2116, 1056, 674, 6612, - 1187, 1188, 2184, -1108, 1190, 1194, -1108, 1058, -1108, -1108, - -1108, -1108, -1108, 1195, 3208, -1108, 3559, 102, -1108, -1108, - -1108, 3587, 3615, -1108, 3643, 1201, -1108, -1108, 1170, 1202, - 6612, -1108, 1203, 1216, 1223, 1227, -1108, 1086, 1229, -1108, - 2324, 1231, 1234, 1093, -1108, 3208, -1108, 1094, 316, -1108, - 1096, 325, -1108, 1103, 350, -1108, 1105, 1239, 2116, 1200, - 1110, 3208, -1108, 2676, 352, -1108, 362, 380, -1108, 1241, - 3671, 1160, 3208, -1108, 3208, -1108, -1108, 3135, 2356, 1253, - -1108, 2116, 2116, 2116, 2116, -1108, 3208, 4633, 4659, -1108, - 2116, 3208, 1254, -1108, -1108, -1108, 20, -1108, 1169, -1108, - 4685, 1256, 1257, 1259, 1261, 1262, 1121, -1108, -1108, -1108, - -1108, -1108, 2116, -1108, -1108, -1108, -1108, 214, 3128, -1108, - 2995, 489, 2995, 489, 2995, 489, -1108, 678, 2116, -1108, - 3699, 274, 3135, 274, -1108, -1108, 3208, 3727, 3755, 679, - -1108, -1108, 1125, 1126, 1135, 1136, 1131, 6612, 3208, 3208, - 682, 6612, -1108, 1264, -1108, 3208, -1108, -1108, -1108, -1108, - -1108, 3208, 683, 1154, 3208, -1108, 3783, 411, 144, 3811, - 416, 149, 3839, 437, 253, 2116, 1265, 1207, 2152, 1133, - 461, 686, 474, 2389, -1108, -1108, 1267, 1270, 1296, 1298, - 1299, 3208, 6570, 4711, 25, -1108, 4737, 3867, 1304, -1108, - 3895, 1303, 3208, 1305, 1306, 3208, 1308, 1323, 3208, 1324, - 1161, -1108, 3208, -1108, 489, -1108, 3135, 1325, 2676, -1108, - -1108, -1108, -1108, -1108, -1108, 690, -1108, 3208, -1108, 2116, - 3208, -1108, -1108, 1326, -1108, -1108, 1189, 3923, -1108, -1108, - 1191, 3951, -1108, -1108, 1192, 3979, -1108, 1328, 2464, 269, - 2292, 705, -1108, 486, 718, 1329, 1213, 6591, 719, 4007, - -1108, 489, 1330, 489, 1332, 489, 1335, -1108, -1108, -1108, - -1108, 489, 1336, 3135, 1356, -1108, 466, -1108, 1236, 1373, - 289, -1108, 1237, 315, -1108, 1242, 331, -1108, 1266, 367, - -1108, 724, -1108, 743, -1108, 1268, 2116, -1108, 1376, 489, - 1383, 489, 1406, 489, -1108, 1409, 466, 1411, 466, 748, - -1108, 370, -1108, 379, -1108, 392, -1108, -1108, -1108, 749, - -1108, 1412, 1414, 1415, 1416, 466, 1418, -1108, -1108, -1108, - -1108, -1108, -1108 + 3534, 47, 71, 3641, -1121, -1121, 1752, 16, 35, -32, + 30, 177, 188, 192, 150, 83, 142, -4, 145, 161, + -52, 180, 183, 117, 157, 305, 310, 316, 151, 274, + 405, 167, 175, 236, 333, 258, 255, -69, -69, 266, + 323, 26, 371, 379, 387, 23, 135, 391, 449, 457, + 471, 334, 352, 372, 27, 29, -1121, 388, -1121, 477, + 343, -1121, 498, 522, 7, 13, 402, 420, 434, 440, + -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, + -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, 24, + 400, 462, -1121, -1121, -1121, 269, 297, 324, 346, 369, + 389, 399, 437, 465, 469, 482, 515, 516, 519, 520, + 533, 534, 538, 539, 543, 546, 444, 456, 461, 466, + -1121, 605, 474, -1121, -1121, -1121, -1121, -1121, -1121, -1121, + 3153, 3153, 3153, -1121, -1121, 3153, 1202, 10, 587, 41, + 3153, 611, 1197, -1121, 619, 622, 3153, 628, -1121, 3153, + -1121, -1121, -1121, 3153, 2981, 3153, 3153, 497, 3153, 2981, + 3153, 3153, 503, 2981, 3153, 3153, 2090, 510, 491, 523, + 524, 1808, 1808, 1808, 542, -1121, -1121, -1121, -1121, 547, + 564, 594, 2090, 2090, 652, 2090, 734, -69, -69, -69, + 3153, 3153, -27, -1121, -16, -69, 595, 599, 600, 2936, + 59, 194, 601, 616, 1808, 2090, 637, 33, 664, -1121, + 766, -1121, 663, 681, 692, 780, 3153, 3153, 3153, 648, + 3153, 698, 749, 3153, 3153, -1121, 3153, 845, -1121, 861, + -1121, 862, -1121, 443, 443, 443, 443, 725, 3153, 866, + 723, -1121, -1121, -1121, 867, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, 443, 443, 443, + 443, 3153, 869, 455, 735, 735, 735, 5525, 43, 2981, + 4789, 219, 729, 870, 737, 733, -1121, 728, 2550, 1384, + -1121, -1121, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3153, 3153, 3153, 3153, 3153, 3153, -1121, -1121, 1420, + -66, 2723, 5546, 483, 736, 2981, -1121, -1121, 2157, -1121, + 544, 5567, 5588, 3153, 5609, 545, 5630, 5651, 3153, 553, + 5672, 5693, 2231, 1604, 2191, 872, -1121, 3153, 3153, 3153, + 3153, -1121, -1121, 877, 882, 882, 3153, 748, 750, 751, + 754, 3153, 3153, 3153, 884, 890, 756, 894, 753, -81, + -1121, -1121, 4113, 4139, -69, -69, 41, 41, 202, 3153, + 3153, 3153, 2936, 2936, 3153, 2550, 312, -1121, 3153, 3153, + 3153, 3153, 895, 896, 3153, 898, -1121, 3153, 3153, 2832, + -1121, 2981, 3153, 3153, -1121, 5714, 5735, 5756, 809, 4165, + -1121, 758, 2225, 5777, 4812, -1121, -1121, 3147, -1121, 3256, + 558, 765, -1121, 767, 768, 769, 3153, 4835, -99, 3153, + 1, -1121, 5798, 4858, 5819, 4881, 5840, 4904, 5861, 4927, + 5882, 4950, 5903, 4973, 5924, 4996, 5945, 5019, 5966, 5042, + 5987, 5065, 6008, 5088, 4191, 4217, 6029, 5111, 6050, 5134, + 6071, 5157, 6092, 5180, 6113, 5203, 6134, 5226, 4243, 4269, + 4295, 4321, 4347, 4373, -62, 761, 770, 771, 1447, 772, + 3153, -1121, 2090, 2090, 557, 67, 462, 3153, 912, 915, + 31, 776, -1121, 232, 55, -22, 254, -1121, -1121, 2298, + 635, 688, 581, 581, 514, 514, 514, 514, 501, 501, + 735, 735, 735, 735, -1121, 15, 2981, 3153, 916, 2728, + 3153, 735, -1121, 3153, 2981, 2981, 822, 917, 918, 6155, + 919, 827, 921, 923, 6176, 831, 925, 926, 2981, -1121, + 570, 2372, 3153, 6197, 2579, 6218, 6239, 3153, 2090, 931, + 930, 6260, 3116, 3116, 3116, 3116, 6281, 6302, 6323, 2090, + 2090, 791, -1121, 2090, -69, 3153, 3153, -1121, -1121, 788, + 789, 3153, 4399, 4425, 4451, 1565, 214, -69, 3309, 6344, + 3148, 6365, 6386, 3153, 934, 3153, 6407, -1121, 5249, 5272, + -1121, 573, 5295, 5318, 936, 937, 938, 795, 3153, 3362, + 3153, 3153, -1121, 36, -1121, -1121, 3153, 942, 940, 943, + 944, 945, 5341, 56, -1121, 3203, -1121, 807, 814, 808, + -1121, 952, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, + -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, + -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, 3153, + 3153, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, + -1121, -1121, -1121, 3153, 3153, 3153, 3153, 3153, 3153, -1121, + 2981, 443, -1121, -1121, -1121, 3153, 5364, 953, 954, 816, + -1121, 21, 3153, 957, 963, 1528, -1121, 964, 826, 27, + 966, -1121, 2981, 2981, 2981, 2981, 3153, -1121, 844, 443, + -39, 4477, -69, -1121, 2981, 3257, 2332, 735, -1121, 2157, + -1121, 928, 2090, 2090, 970, 2090, 672, 2090, 2090, 971, + 927, 2090, 2090, 577, -1121, 2981, 1597, 975, 977, 978, + 979, 1801, -1121, -1121, 982, -1121, 983, 849, 1360, -1121, + 851, 852, 853, 992, 993, 994, 997, 1000, 1003, 860, + 330, 4503, 4529, -1121, -1121, 3310, -69, -69, -69, 1004, + 865, 873, -35, -1121, 338, -1121, 214, 1002, 1005, 1009, + 1011, 1360, -1121, 1674, 875, 1013, 1015, 973, 1016, 1020, + 2090, 2090, 2090, 1023, 4555, -1121, 2366, 1239, 1024, 1025, + 5387, -1121, 881, 883, 885, 886, 1027, 1032, -1121, 1031, + -1121, 897, 3153, 3153, 2090, 889, -1121, 6428, 5410, 6449, + 5433, 6470, 5456, 6491, 5479, 138, 899, 6512, 209, -1121, + -1121, 114, 298, 901, 1036, 1877, -1121, -1121, -1121, 27, + 3153, -1121, 580, -1121, 583, 584, 607, 627, 1360, -1121, + 1038, 17, 3153, 4, 630, -1121, 3153, 900, 989, 989, + 2090, 1044, 902, 903, 1047, 1048, 2090, 906, 1050, 1051, + -1121, 634, -1121, 1053, 2090, 2090, 2090, 1055, 1057, -1121, + 2090, 1058, 1059, 1060, 1061, 2090, 2090, 2090, -1121, -1121, + 529, 1079, 3153, 3153, 3153, 941, -49, 276, 302, -1121, + 2090, 3153, -1121, -1121, 2936, -18, 1949, -1121, 946, 2513, + -1121, 2981, -1121, -1121, 949, -1121, -1121, 1080, 1081, 968, + -1121, 3153, 3153, 3153, -1121, 1083, 1078, 948, 2090, 2090, + 2090, 2090, -1121, -99, -1121, 3153, 4581, 4607, 639, -1121, + 3153, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, + -1121, -1121, 2090, 462, 3153, 1086, 1089, 31, -1121, 1093, + 5502, 27, -1121, 1095, 1096, 1097, 1098, -1121, -1121, 443, + 4633, -1121, 960, 1360, 3153, -69, 1100, 1102, 1104, -1121, + 3153, 3153, -1121, -1121, 1105, 3153, -1121, -1121, -1121, 1107, + 1108, 1109, 1017, 3153, -1121, 1110, 2090, 2090, 2090, 2090, + 1113, 1117, 1116, -1121, 3116, 981, 3363, 6533, 2441, 41, + -69, 1119, -69, 1123, -69, 1124, 730, 965, 6554, 3533, + 341, -1121, 1125, 1391, 1127, -69, 1391, 1128, 642, 3153, + -1121, -1121, 2090, 2647, 947, 6575, -1121, 2795, 1131, 988, + 995, 996, 998, -1121, 284, 1360, 3153, 3153, 2090, 991, + 645, 1360, 1135, 1141, 1909, -1121, 1142, 1144, -1121, 1006, + -1121, -1121, -1121, -1121, -1121, 1148, 3153, -1121, 3637, 212, + -1121, -1121, -1121, 3665, 3693, -1121, 3721, 1143, -1121, -1121, + 1106, 1151, 1360, -1121, 1152, 1153, 1154, 1155, -1121, 1014, + 1159, -1121, 1942, 1161, 1163, 1022, -1121, 3153, -1121, 1026, + 360, -1121, 1028, 364, -1121, 1030, 374, -1121, 1034, 1168, + 2090, 1173, 1039, 3153, -1121, 2654, 377, -1121, 384, 386, + -1121, 1169, 3749, 1090, 3153, -1121, 3153, -1121, -1121, 2981, + 2018, 1175, -1121, 2090, 2090, 2090, 2090, -1121, 3153, 4659, + 4685, -1121, 2090, 3153, 1181, -1121, -1121, -1121, 27, -1121, + 1091, -1121, 4711, 1184, 1185, 1186, 1187, 1190, 1049, -1121, + -1121, -1121, -1121, -1121, 2090, -1121, -1121, -1121, -1121, 41, + 2974, -1121, 2936, 214, 2936, 214, 2936, 214, -1121, 650, + 2090, -1121, 3777, -69, 2981, -69, -1121, -1121, 3153, 3805, + 3833, 651, -1121, -1121, 1052, 1054, 1064, 1065, 1094, 1360, + 3153, 3153, 654, 1360, -1121, 1191, -1121, 3153, -1121, -1121, + -1121, -1121, -1121, 3153, 655, 1088, 3153, -1121, 3861, 407, + -15, 3889, 415, 19, 3917, 432, 146, 2090, 1193, 1134, + 3415, 1101, 435, 661, 445, 2050, -1121, -1121, 1203, 1233, + 1234, 1236, 1238, 3153, 6596, 4737, 32, -1121, 4763, 3945, + 1204, -1121, 3973, 1240, 3153, 1246, 1247, 3153, 1249, 1250, + 3153, 1251, 1111, -1121, 3153, -1121, 214, -1121, 2981, 1253, + 2654, -1121, -1121, -1121, -1121, -1121, -1121, 678, -1121, 3153, + -1121, 2090, 3153, -1121, -1121, 1254, -1121, -1121, 1114, 4001, + -1121, -1121, 1118, 4029, -1121, -1121, 1120, 4057, -1121, 1259, + 2083, 154, 3468, 682, -1121, 452, 683, 1260, 1121, 6617, + 687, 4085, -1121, 214, 1262, 214, 1265, 214, 1266, -1121, + -1121, -1121, -1121, 214, 1268, 2981, 1269, -1121, 443, -1121, + 1129, 1271, 206, -1121, 1130, 211, -1121, 1132, 247, -1121, + 1133, 249, -1121, 690, -1121, 691, -1121, 1137, 2090, -1121, + 1274, 214, 1277, 214, 1278, 214, -1121, 1281, 443, 1283, + 443, 694, -1121, 293, -1121, 296, -1121, 345, -1121, -1121, + -1121, 695, -1121, 1284, 1287, 1289, 1292, 443, 1293, -1121, + -1121, -1121, -1121, -1121, -1121 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -1108, -1108, -1108, -1108, 584, -1108, -1108, -1108, -1108, 195, - -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, -1108, - -1108, -1108, -292, -3, -1108, 80, -1108, 581, 1428, -1108, - -1108, -1108, -1108, 3, -367, -193, -1108, -1108, -1108, -1108, - -1108, -1108, 1429, -1108, -1108, -1108, -1108, -1108, -1108, -1108, - -1108, -1108, -1108, -1108, -1108, -1108, -728, -719, 196, -1108, - -1108, 1075, -1108, -1108, -1108, -1108, -1108, -6, -1108, -20, - -1108, -1107, 563, -103, 349, -108, -671, 492, -1108, -222, - -2 + -1121, -1121, -1121, -1121, 394, -1121, -1121, -1121, -1121, 60, + -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, -1121, + -1121, -1121, -294, 20, -1121, -263, -1121, 446, 1299, -1121, + -1121, -1121, -1121, 3, -378, -198, -1121, -1121, -1121, -1121, + -1121, -1121, 1301, -1121, -1121, -1121, -1121, -1121, -1121, -1121, + -1121, -1121, -1121, -1121, -1121, -1121, -763, -582, 57, -1121, + -1121, 972, -1121, -1121, -1121, -1121, -1121, -1121, -6, -1121, + -21, -1121, -1120, 569, -126, 262, -84, -679, 349, -1121, + -232, 9 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1550,1506 +1556,1509 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -5 static const yytype_int16 yytable[] = { - 140, 225, 389, 139, 142, 491, 74, 146, 427, 428, - 429, 227, 403, 571, 572, 203, 188, 190, 297, 196, - 831, 618, 682, 1190, 215, 690, 233, 822, 155, 155, - 206, 1268, 207, 421, 160, 423, 160, 399, 893, 400, - 218, 788, 519, 891, 336, 1202, 4, 520, 699, 341, - 424, 239, 759, 345, 378, 379, 956, 959, 760, 761, - 671, 478, 479, 480, 481, 672, 197, 360, 361, 759, - 5, 380, 486, 378, 379, 760, 761, 378, 379, 151, - 378, 379, 114, 115, 116, 117, 152, 240, 118, 143, - 381, 490, 145, 566, 156, 156, 998, 396, 999, 378, - 379, 157, 695, 619, 620, 621, 622, 161, 144, 696, - 298, 299, 198, 378, 379, 204, 391, 131, 132, 823, - 824, 199, 290, 291, 292, 890, 148, 293, 296, 1000, - 392, 1001, 305, 124, 125, 126, 127, 393, 325, 149, - 302, 327, 1009, 150, 226, 328, 334, 337, 338, 147, - 340, 334, 342, 343, 228, 334, 346, 347, 947, 205, - 131, 132, 1298, 373, 374, 234, 623, 235, 216, 691, - 700, 382, 236, 1269, 891, 390, 401, 219, 700, 789, - 376, 377, 378, 379, 131, 132, 487, 488, 241, 377, - 242, 797, 991, 992, 151, 378, 379, 684, 580, 378, - 379, 694, 124, 125, 126, 127, 409, 410, 411, 941, - 413, 573, 163, 416, 417, 1002, 418, 1003, 301, 697, - 759, 601, 131, 132, 153, 759, 760, 761, 431, 1349, - 154, 760, 761, 378, 379, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, - 471, 472, 473, 474, 475, 476, 477, 169, 1048, 158, - 170, 482, 171, 35, 36, 37, 38, 159, 243, 334, - 244, 162, 43, 1243, 492, 46, 177, 593, 1246, 178, - 163, 179, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 164, 378, 379, - 124, 125, 126, 127, 192, 525, 841, 193, 682, 759, - 194, 529, 937, 533, 579, 760, 761, 529, 538, 1125, - 131, 132, 525, 334, 1126, 759, 165, 547, 548, 549, - 550, 760, 761, 378, 379, 529, 555, 530, 569, 570, - 166, 560, 561, 562, 167, 759, 374, 172, 245, 880, - 246, 760, 761, 180, 378, 379, 168, 574, 575, 576, - 290, 291, 577, 302, 302, 181, 581, 582, 583, 584, - 892, 759, 588, 799, 183, 590, 591, 760, 761, 334, - 594, 595, 1249, 182, 191, 184, 185, 759, 200, 184, - 185, 201, 702, 760, 761, 186, 378, 379, 1309, 186, - 202, 247, 187, 248, 614, 208, 195, 617, 249, 616, - 250, 209, 1101, 1208, 725, 1211, 210, 1214, 1338, 124, - 125, 126, 127, 759, 211, 212, 759, 378, 379, 760, - 761, 816, 760, 761, 221, 759, 378, 379, 213, 131, - 132, 760, 761, 1160, 1340, 1193, 683, 251, 759, 252, - 424, 239, 1162, 214, 760, 761, 220, 222, 678, 840, - 1342, 378, 379, 378, 379, 687, 685, 223, 686, 891, - 238, 224, 891, 378, 379, 891, 253, 1164, 254, 1171, - 239, 335, 114, 115, 116, 117, 335, 229, 118, 1172, - 335, 378, 379, 230, 334, 703, 1344, 678, 707, 1362, - 287, 708, 709, 711, 231, 232, 1289, 1173, 1363, 940, - 942, 114, 115, 116, 117, 283, 334, 118, 284, 709, - 728, 1364, 378, 379, 285, 733, 750, 378, 379, 286, - 740, 740, 740, 740, 741, 741, 741, 741, 1242, 764, - 288, 751, 752, 1245, 815, 759, 300, 755, 378, 379, - 891, 760, 761, 1320, 255, 1323, 256, 1326, 306, 771, - 257, 773, 258, 1329, 1248, 323, 834, 835, 836, 837, - 527, 324, 378, 379, 784, 326, 786, 787, 844, 339, - 344, 891, 790, 353, 891, 378, 379, 891, 1256, 355, - 891, 1351, 798, 1353, 259, 1355, 260, 378, 379, 861, - 354, 1258, 317, 318, 319, 320, 321, 370, 131, 132, - 1087, 322, 891, 1313, 891, 797, 891, 742, 743, 744, - 356, 362, 131, 132, 335, 807, 808, 523, 367, 235, - 173, 1114, 137, 174, 236, 261, 175, 262, 176, 809, - 810, 811, 812, 813, 814, 368, 334, 131, 132, 369, - 372, 817, 484, 383, 235, 319, 320, 321, 825, 236, - 526, 263, 322, 264, 843, 265, 384, 266, 334, 334, - 334, 334, 838, 267, 269, 268, 270, 526, 335, 271, - 334, 272, 385, 402, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 545, 320, 321, 273, 394, - 274, 334, 322, 529, 275, 535, 276, 351, 277, 395, - 278, 1097, 358, 358, 358, 1053, 884, 885, 886, 279, - 281, 280, 282, 398, 371, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 335, 529, 404, 539, 322, 608, - 529, 609, 681, 358, 397, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 529, - 529, 726, 777, 322, 852, 529, 853, 860, 405, 408, - 1203, 1016, 1115, 949, 412, 950, 924, 925, 529, 529, - 951, 952, 529, 529, 953, 954, 414, 415, 7, 8, - 529, 529, 960, 976, 1036, 798, 1037, 419, 529, 943, - 1109, 1131, 420, 1132, 948, 1215, 529, 1216, 1226, 1036, - 1036, 1234, 1238, 529, 406, 1257, 958, 1131, 407, 1295, - 961, 422, 497, 15, 16, 498, 18, 19, 499, 21, - 500, 23, 529, 24, 1312, 26, 27, 430, 29, 30, - 31, 432, 435, 33, 34, 529, 1036, 1314, 1318, 335, - 433, 529, 1008, 1345, 994, 995, 996, 710, 712, 483, - 322, 493, 1004, 1006, 494, 495, 1007, 50, 51, 52, - 1346, 335, 1347, 334, 710, 1036, 1365, 1361, 1366, 137, - 546, 496, 524, 1021, 1022, 1023, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 1033, 1031, 551, - 552, 322, 1039, 556, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 1042, 563, 557, 1041, - 322, 564, 558, 1057, 559, 592, 565, 585, 587, 589, - 599, 610, 602, 673, 611, 612, 1056, 613, 688, 674, - 675, 677, 1061, 1062, 689, 693, 911, 1064, 704, 713, - 714, 715, 717, 719, 718, 1070, 1218, 720, 1088, 722, - 1091, 723, 1094, 724, 735, 737, 1080, 748, 753, 754, - 1081, 1104, 772, 1106, 1107, 780, 781, 782, 783, 791, - 302, 792, 802, 793, 794, 334, 795, 803, 334, 1179, - 804, 1110, 806, 819, 820, 821, 826, 827, 833, 1118, - 829, 335, 830, 1119, 839, 847, 850, 856, 1127, 1128, - 863, 857, 864, 865, 866, 869, 871, 870, 875, 872, - 873, 874, 876, 335, 335, 335, 335, 877, 1140, 679, - 680, 878, 879, 894, 887, 335, 888, 889, 895, 899, - 896, 897, 1290, 900, 1221, 901, 902, 903, 904, 908, - 913, 914, 916, 917, 918, 919, 335, 920, 921, 1158, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 1334, 1170, 922, 525, 322, 928, - 912, 938, 944, 923, 945, 955, 1177, 967, 1178, 963, - 970, 334, 971, 974, 975, 734, 962, 968, 977, 969, - 1187, 981, 982, 973, 1357, 1191, 1360, 984, 749, 985, - 986, 987, 993, 997, 1018, 1013, 1019, 1020, 1024, 1017, - 1207, 1025, 1210, 1371, 1213, 1026, 1043, 1044, 1291, 1055, - 1294, 1220, 1046, 1222, 1206, 1049, 1209, 1050, 1212, 1051, - 302, 1052, 1058, 1059, 1060, 1063, 334, 1065, 1068, 1066, - 1223, 1067, 307, 1071, 1076, 1077, 7, 8, 1079, 1082, - 1089, 1092, 1232, 1233, 1095, 1098, 1102, 1105, 1108, 1236, - 1120, 1121, 1122, 1133, 1134, 1237, 1123, 1136, 1240, 502, - 1137, 1139, 1124, 1138, 1130, 1331, 1145, 1168, 1147, 1148, - 497, 15, 16, 498, 18, 19, 499, 21, 500, 23, - 1146, 24, 1149, 26, 27, 1039, 29, 30, 31, 1150, - 518, 33, 34, 1151, 1152, 1153, 1277, 1155, 1293, 1281, - 1156, 1157, 1285, 1159, 1161, 1166, 1288, 1174, 335, 676, - 334, 1163, 334, 1165, 1176, 50, 51, 52, 1169, 1181, - 1192, 1297, 1196, 1197, 1299, 1198, 1194, 1199, 1200, 1201, - 1235, 1251, 1252, 1260, 1227, 1228, 1261, 848, 849, 1231, - 851, 1255, 854, 855, 1229, 1230, 858, 859, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 1262, 1239, 1263, 1264, 322, 334, 1272, 1275, - 1287, 1278, 1279, 606, 1282, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 1283, - 1286, 1292, 1300, 322, 1307, 1315, 1321, 1301, 1324, 1303, - 1305, 1327, 1330, 905, 906, 907, 308, 309, 310, 311, + 142, 395, 433, 434, 435, 626, 75, 497, 579, 580, + 971, 409, 229, 905, 301, 144, 192, 194, 231, 200, + 841, 707, 1202, 968, 162, 832, 141, 207, 237, 145, + 201, 219, 427, 222, 429, 698, 148, 405, 1280, 406, + 133, 134, 769, 798, 1214, 305, 364, 365, 770, 771, + 492, 384, 385, 4, 162, 484, 485, 486, 487, 769, + 430, 243, 769, 188, 189, 770, 771, 574, 770, 771, + 340, 5, 157, 190, 690, 345, 202, 525, 402, 349, + 191, 679, 526, 384, 385, 203, 680, 146, 627, 628, + 629, 630, 116, 117, 118, 119, 769, 163, 120, 1010, + 244, 1011, 770, 771, 851, 384, 385, 302, 303, 535, + 147, 36, 37, 38, 39, 902, 384, 385, 833, 834, + 44, 690, 386, 47, 294, 295, 296, 704, 208, 297, + 300, 157, 1021, 387, 309, 1255, 384, 385, 158, 210, + 329, 211, 306, 331, 708, 159, 708, 332, 338, 341, + 342, 631, 344, 338, 346, 347, 230, 338, 350, 351, + 959, 1310, 232, 133, 134, 493, 379, 380, 238, 1258, + 239, 223, 209, 166, 388, 240, 220, 407, 396, 149, + 699, 1281, 799, 150, 382, 383, 126, 127, 128, 129, + 903, 384, 385, 383, 151, 133, 134, 158, 152, 588, + 171, 692, 807, 172, 703, 173, 133, 134, 397, 167, + 415, 416, 417, 691, 419, 494, 179, 422, 423, 180, + 424, 181, 609, 769, 182, 155, 496, 183, 1361, 770, + 771, 769, 437, 126, 127, 128, 129, 770, 771, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 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, 481, 482, + 483, 949, 1060, 769, 156, 488, 535, 160, 769, 770, + 771, 769, 153, 338, 770, 771, 1261, 770, 771, 154, + 750, 751, 752, 161, 1321, 953, 509, 510, 511, 512, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 523, 498, 164, 903, 769, 165, 769, 601, 174, 531, + 770, 771, 770, 771, 384, 385, 398, 539, 126, 127, + 128, 129, 544, 399, 384, 385, 531, 338, 133, 134, + 581, 553, 554, 555, 556, 807, 1350, 168, 133, 134, + 561, 1352, 169, 577, 578, 566, 567, 568, 170, 196, + 769, 380, 197, 769, 153, 198, 770, 771, 184, 770, + 771, 702, 185, 582, 583, 584, 294, 295, 585, 306, + 306, 809, 589, 590, 591, 592, 165, 1354, 596, 1356, + 186, 598, 599, 705, 187, 338, 602, 603, 384, 385, + 1220, 245, 1223, 246, 1226, 195, 339, 126, 127, 128, + 129, 339, 769, 204, 1012, 339, 1013, 1137, 770, 771, + 622, 205, 1138, 625, 384, 385, 206, 133, 134, 247, + 212, 248, 710, 1374, 384, 385, 1375, 430, 243, 826, + 1014, 175, 1015, 213, 176, 188, 189, 177, 624, 178, + 587, 214, 384, 385, 733, 190, 249, 243, 250, 1205, + 384, 385, 199, 384, 385, 215, 216, 850, 892, 116, + 117, 118, 119, 225, 686, 120, 904, 226, 251, 1113, + 252, 695, 384, 385, 217, 1376, 384, 385, 116, 117, + 118, 119, 227, 1301, 120, 694, 384, 385, 1172, 384, + 385, 253, 1174, 254, 218, 693, 384, 385, 384, 385, + 338, 711, 1176, 686, 715, 1183, 228, 716, 717, 719, + 224, 255, 1184, 256, 1185, 1003, 1004, 952, 954, 384, + 385, 257, 338, 258, 233, 717, 736, 384, 385, 242, + 1332, 741, 1335, 760, 1338, 1254, 748, 748, 748, 748, + 1341, 339, 234, 1257, 384, 385, 774, 384, 385, 761, + 762, 749, 749, 749, 749, 765, 235, 384, 385, 259, + 1260, 260, 236, 1268, 384, 385, 287, 781, 1363, 783, + 1365, 304, 1367, 1270, 133, 134, 825, 532, 288, 490, + 1325, 239, 794, 289, 796, 797, 240, 261, 290, 262, + 800, 263, 291, 264, 532, 339, 292, 310, 844, 845, + 846, 847, 133, 134, 265, 327, 266, 529, 328, 239, + 854, 1099, 139, 330, 240, 323, 324, 325, 903, 343, + 358, 903, 326, 808, 903, 348, 321, 322, 323, 324, + 325, 871, 357, 817, 818, 326, 376, 267, 269, 268, + 270, 271, 273, 272, 274, 359, 360, 819, 820, 821, + 822, 823, 824, 339, 338, 275, 277, 276, 278, 827, + 279, 281, 280, 282, 366, 283, 835, 284, 285, 371, + 286, 853, 535, 535, 536, 541, 338, 338, 338, 338, + 848, 535, 616, 545, 617, 535, 372, 689, 338, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 535, 903, + 734, 535, 326, 787, 862, 535, 863, 870, 961, 338, + 962, 535, 535, 963, 964, 355, 373, 1065, 533, 378, + 362, 362, 362, 400, 389, 896, 897, 898, 390, 391, + 903, 374, 375, 903, 377, 535, 903, 965, 401, 903, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 410, 362, 403, 535, 326, 966, 535, 404, + 972, 903, 535, 903, 988, 903, 414, 1048, 339, 1049, + 535, 1215, 1121, 1143, 418, 1144, 718, 720, 1227, 535, + 1228, 1238, 1048, 1048, 1246, 1250, 936, 937, 408, 535, + 339, 1269, 411, 718, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 412, 1143, 1028, 1307, 326, + 535, 535, 1324, 1326, 960, 1048, 413, 1330, 535, 1358, + 1357, 1359, 1048, 1377, 1373, 1378, 970, 420, 808, 421, + 973, 425, 955, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 551, 324, 325, 426, 428, 436, + 438, 326, 439, 441, 489, 499, 326, 500, 502, 552, + 1109, 501, 139, 1020, 557, 530, 1006, 1007, 1008, 558, + 562, 569, 563, 564, 1016, 1018, 565, 570, 1019, 571, + 572, 573, 593, 595, 597, 338, 607, 610, 618, 681, + 619, 620, 621, 682, 683, 1033, 1034, 1035, 696, 697, + 685, 701, 721, 712, 722, 723, 725, 726, 727, 1045, + 728, 730, 731, 732, 1051, 743, 745, 758, 763, 764, + 782, 793, 339, 790, 791, 792, 801, 802, 1054, 812, + 803, 804, 805, 1043, 1069, 1126, 813, 814, 816, 829, + 830, 831, 1053, 836, 339, 339, 339, 339, 1068, 837, + 840, 839, 843, 849, 1073, 1074, 339, 860, 866, 1076, + 857, 867, 873, 1230, 874, 875, 876, 1082, 879, 1100, + 880, 1103, 881, 1106, 882, 883, 884, 339, 1092, 885, + 886, 887, 1116, 888, 1118, 1119, 889, 890, 891, 906, + 899, 907, 306, 1093, 900, 901, 908, 338, 909, 912, + 338, 913, 915, 1122, 911, 914, 916, 920, 925, 926, + 928, 1130, 929, 932, 930, 931, 933, 934, 940, 935, + 1139, 1140, 950, 957, 967, 1191, 1131, 956, 975, 974, + 979, 980, 981, 982, 983, 985, 986, 987, 989, 993, + 1152, 687, 688, 994, 1032, 996, 997, 998, 999, 1302, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 335, 1316, 1332, 335, 322, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 1337, - 86, 329, 1350, 322, 1336, 1339, 90, 91, 92, 1352, - 1341, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 1354, 966, 1343, 1356, 1348, 1358, 1367, 972, - 1368, 1369, 1370, 330, 1372, 957, 1265, 978, 979, 980, - 965, 73, 81, 983, 1273, 0, 554, 1045, 988, 989, - 990, 0, 0, 0, 0, 0, 35, 36, 37, 38, - 39, 1005, 526, 0, 0, 43, 0, 1012, 46, 0, - 1015, 0, 0, 0, 0, 0, 335, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1027, - 1028, 1029, 1030, 0, 0, 0, 0, 120, 121, 122, - 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1040, 0, 0, 0, 0, 386, 1103, - 828, 0, 0, 130, 0, 0, 0, 0, 388, 0, - 0, 335, 0, 136, 0, 187, 543, 0, 0, 0, + 322, 323, 324, 325, 1005, 1037, 1030, 1031, 326, 1036, + 1009, 1170, 1055, 1056, 1038, 1025, 1346, 1127, 1029, 1058, + 1233, 1061, 1062, 1063, 1064, 1067, 1070, 1182, 1071, 531, + 1072, 1075, 1077, 1110, 1078, 1079, 1083, 1080, 1189, 1088, + 1190, 1089, 1091, 338, 1094, 1101, 1369, 742, 1372, 1104, + 1107, 1114, 1199, 1117, 1120, 1132, 1133, 1203, 756, 757, + 1142, 1145, 759, 1134, 1135, 1383, 1136, 1146, 1157, 1148, + 1149, 1219, 1150, 1222, 1151, 1225, 1158, 1159, 1160, 1161, + 1162, 1163, 1232, 1164, 1234, 1165, 1218, 1167, 1221, 1168, + 1224, 1169, 306, 339, 1178, 1186, 1171, 1173, 338, 1175, + 1180, 1193, 1235, 1177, 1303, 1188, 1306, 1204, 1181, 1206, + 1208, 1209, 1210, 1211, 1244, 1245, 1212, 1247, 1213, 1263, + 1264, 1248, 1239, 311, 1240, 88, 293, 1249, 1284, 1272, + 1252, 92, 93, 94, 1241, 1242, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 1051, 1251, 1273, + 1274, 1343, 1275, 1243, 1276, 969, 1287, 923, 1289, 1305, + 1267, 1293, 1290, 1291, 1297, 1294, 1295, 1298, 1300, 1304, + 1312, 1299, 338, 1313, 338, 1319, 1327, 1315, 1333, 1317, + 1328, 1336, 1339, 1309, 1342, 1344, 1311, 1349, 1348, 1351, + 1362, 1353, 1355, 1364, 1366, 339, 1360, 1368, 339, 1370, + 1379, 858, 859, 1380, 861, 1381, 864, 865, 1382, 1384, + 868, 869, 74, 1277, 82, 977, 1057, 1285, 0, 0, + 0, 0, 0, 122, 123, 124, 125, 0, 0, 338, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 130, 131, 0, 560, 326, 132, + 0, 0, 0, 0, 135, 0, 0, 298, 0, 138, + 0, 299, 0, 0, 0, 0, 0, 0, 0, 917, + 918, 919, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 532, 0, 0, + 326, 0, 924, 0, 0, 0, 0, 0, 0, 0, + 508, 339, 0, 0, 88, 333, 0, 0, 0, 0, + 92, 93, 94, 0, 0, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 524, 0, 0, 978, + 0, 0, 0, 0, 0, 984, 0, 334, 0, 0, + 0, 0, 0, 990, 991, 992, 339, 0, 0, 995, + 0, 0, 0, 684, 1000, 1001, 1002, 0, 0, 0, + 0, 36, 37, 38, 39, 40, 0, 0, 0, 1017, + 44, 0, 0, 47, 0, 1024, 0, 0, 1027, 0, + 0, 0, 0, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 1039, 1040, 1041, + 1042, 326, 122, 123, 124, 125, 0, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 1052, 0, 392, 1115, 326, 0, 0, 132, 0, + 339, 0, 339, 394, 838, 0, 0, 0, 138, 0, + 191, 549, 0, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 0, 0, 1084, 1085, 1086, 1087, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 339, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 86, 329, 1072, 1073, 1074, - 1075, 90, 91, 92, 0, 0, 93, 94, 95, 96, + 0, 1123, 0, 872, 0, 0, 0, 88, 333, 0, + 0, 0, 0, 92, 93, 94, 0, 1141, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 0, 0, 0, - 0, 0, 0, 1111, 0, 0, 0, 0, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1129, - 0, 0, 0, 0, 0, 335, 0, 335, 0, 0, - 0, 35, 36, 37, 38, 39, 0, 0, 0, 0, - 43, 862, 0, 46, 0, 0, 308, 309, 310, 311, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 334, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 0, 0, 0, 36, 37, 38, 39, 40, 1179, + 910, 0, 0, 44, 0, 0, 47, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 1194, 1195, 1196, 1197, 326, 0, 491, 0, + 0, 0, 0, 575, 0, 122, 123, 124, 125, 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 1167, 335, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 128, 331, 0, 0, 0, 130, 0, - 0, 0, 0, 133, 1182, 1183, 1184, 1185, 136, 0, - 0, 543, 0, 86, 87, 88, 0, 89, 0, 90, - 91, 92, 0, 0, 93, 94, 95, 96, 97, 98, + 322, 323, 324, 325, 0, 0, 130, 335, 326, 0, + 0, 132, 0, 0, 0, 0, 135, 0, 0, 1229, + 0, 138, 0, 0, 549, 88, 89, 90, 0, 91, + 0, 92, 93, 94, 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 0, 114, 115, 116, 117, - 0, 1217, 118, 0, 7, 8, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 497, 15, - 16, 498, 18, 19, 499, 21, 500, 23, 1250, 24, - 0, 26, 27, 0, 29, 30, 31, 0, 0, 33, - 34, 0, 0, 0, 119, 0, 0, 0, 0, 0, - 120, 121, 122, 123, 0, 0, 0, 0, 124, 125, - 126, 127, 0, 50, 51, 52, 0, 0, 0, 0, - 0, 128, 129, 0, 0, 0, 130, 0, 131, 132, - 0, 133, 0, 134, 0, 135, 136, 0, 137, 86, - 329, 357, 0, 0, 0, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 109, 110, 111, 112, 113, 114, 115, 0, 116, 117, + 118, 119, 0, 0, 120, 0, 1262, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 88, 333, 361, 0, 326, 0, 92, 93, 94, + 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 607, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 330, 0, 7, 8, 308, 309, 310, 311, + 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 334, 0, 0, 121, 0, 0, + 0, 0, 0, 122, 123, 124, 125, 877, 0, 0, + 0, 126, 127, 128, 129, 0, 0, 0, 36, 37, + 38, 39, 40, 958, 130, 131, 0, 44, 0, 132, + 47, 133, 134, 0, 135, 0, 136, 0, 137, 138, + 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1147, 0, 0, 0, 122, + 123, 124, 125, 0, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 130, 352, 326, 0, 0, 132, 0, 0, 1166, 0, + 135, 0, 88, 333, 1022, 138, 0, 353, 92, 93, + 94, 0, 0, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 334, 0, 0, 0, 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 35, 36, 37, 38, 39, - 898, 1085, 0, 1086, 43, 0, 0, 46, 497, 15, - 16, 498, 18, 19, 499, 21, 500, 23, 0, 24, - 0, 26, 27, 0, 29, 30, 31, 0, 0, 33, - 34, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 51, 52, 0, 128, 348, 0, - 0, 0, 130, 0, 0, 0, 0, 133, 0, 86, - 329, 1010, 136, 0, 349, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 765, 330, 0, 7, 8, 308, 309, 310, 311, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 36, + 37, 38, 39, 40, 1192, 0, 0, 0, 44, 0, + 0, 47, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 1271, 0, 0, 0, + 122, 123, 124, 125, 0, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 130, 352, 326, 0, 0, 132, 0, 0, 1320, + 0, 135, 0, 88, 333, 0, 138, 0, 1023, 92, + 93, 94, 0, 0, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 334, 0, 0, 0, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 36, 37, 38, 39, 40, 533, 0, 0, 0, 44, + 0, 0, 47, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 0, 0, 0, 0, 0, 0, 533, + 0, 122, 123, 124, 125, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 130, 352, 326, 0, 0, 132, 0, 0, + 0, 0, 135, 611, 88, 333, 0, 138, 0, 353, + 92, 93, 94, 0, 0, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 334, 0, 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 35, 36, 37, 38, 39, - 946, 0, 0, 0, 43, 0, 0, 46, 497, 15, - 16, 498, 18, 19, 499, 21, 500, 23, 0, 24, - 0, 26, 27, 0, 29, 30, 31, 0, 0, 33, - 34, 0, 0, 0, 0, 0, 120, 121, 122, 123, + 322, 534, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 36, 37, 38, 39, 40, 706, 0, 0, 0, + 44, 0, 0, 47, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 551, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, + 856, 0, 122, 123, 124, 125, 0, 0, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 130, 335, 0, 326, 0, 132, 0, + 0, 0, 0, 135, 922, 88, 333, 0, 138, 0, + 548, 92, 93, 94, 0, 0, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 334, 0, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 0, 36, 37, 38, 39, 40, 0, 0, 0, + 0, 44, 0, 0, 47, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 122, 123, 124, 125, 0, 0, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 130, 335, 0, 326, 0, 132, + 0, 0, 0, 0, 135, 0, 88, 333, 0, 138, + 0, 735, 92, 93, 94, 0, 0, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, + 0, 0, 7, 8, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 36, 37, 38, 39, 40, 0, 1097, + 0, 1098, 44, 0, 0, 47, 503, 15, 16, 504, + 18, 19, 505, 21, 506, 23, 0, 24, 0, 26, + 27, 0, 29, 30, 31, 0, 0, 0, 34, 35, + 0, 0, 0, 0, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 51, 52, 0, 128, 348, 0, - 0, 0, 130, 0, 0, 0, 0, 133, 0, 86, - 329, 0, 136, 0, 1011, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 785, 330, 0, 7, 8, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 35, 36, 37, 38, 39, - 1135, 0, 0, 0, 43, 0, 0, 46, 497, 15, - 16, 498, 18, 19, 499, 21, 500, 23, 0, 24, - 0, 26, 27, 0, 29, 30, 31, 0, 0, 33, - 34, 0, 0, 0, 0, 0, 120, 121, 122, 123, + 0, 0, 51, 52, 53, 130, 352, 0, 0, 0, + 132, 0, 0, 0, 0, 135, 0, 88, 333, 0, + 138, 0, 1026, 92, 93, 94, 0, 0, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 51, 52, 0, 128, 348, 0, - 0, 0, 130, 0, 0, 0, 0, 133, 0, 86, - 329, 0, 136, 0, 349, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 334, 0, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 36, 37, 38, 39, 40, 738, + 0, 88, 293, 44, 0, 0, 47, 92, 93, 94, + 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1253, 330, 0, 7, 8, 308, 309, 310, 311, + 113, 114, 115, 0, 0, 122, 123, 124, 125, 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 35, 36, 37, 38, 39, - 1154, 0, 0, 0, 43, 0, 0, 46, 497, 15, - 16, 498, 18, 19, 499, 21, 500, 23, 0, 24, - 0, 26, 27, 0, 29, 30, 31, 0, 0, 33, - 34, 0, 1180, 0, 0, 0, 120, 121, 122, 123, + 322, 323, 324, 325, 0, 0, 392, 1115, 326, 0, + 0, 132, 0, 0, 0, 1124, 394, 1125, 88, 293, + 243, 138, 0, 191, 92, 93, 94, 0, 0, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 0, 116, 117, 118, 119, 0, 0, 120, 0, 122, + 123, 124, 125, 0, 7, 8, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 130, 131, 0, 0, 326, 132, 0, 0, 0, 0, + 135, 527, 0, 713, 0, 138, 0, 714, 503, 15, + 16, 504, 18, 19, 505, 21, 506, 23, 0, 24, + 0, 26, 27, 0, 29, 30, 31, 0, 0, 0, + 34, 35, 0, 0, 0, 0, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 50, 51, 52, 0, 128, 331, 0, - 0, 0, 130, 0, 0, 1259, 0, 133, 0, 86, - 329, 0, 136, 0, 542, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1310, 330, 0, 0, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 35, 36, 37, 38, 39, - 1308, 0, 0, 0, 43, 0, 0, 46, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 527, 0, 120, 121, 122, 123, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 128, 331, 322, - 0, 0, 130, 0, 0, 0, 0, 133, 527, 86, - 329, 0, 136, 0, 727, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 330, 0, 0, 0, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 35, 36, 37, 38, 39, - 603, 0, 0, 0, 43, 0, 0, 46, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 528, - 320, 321, 0, 0, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 545, 320, 321, 0, 128, 348, 0, - 322, 0, 130, 0, 0, 0, 0, 133, 698, 86, - 329, 0, 136, 0, 1014, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 330, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 0, 35, 36, 37, 38, 39, - 846, 0, 86, 289, 43, 0, 0, 46, 90, 91, - 92, 0, 0, 93, 94, 95, 96, 97, 98, 99, + 0, 0, 0, 0, 51, 52, 53, 130, 131, 0, + 0, 0, 132, 0, 0, 0, 0, 135, 0, 88, + 293, 0, 138, 0, 1129, 92, 93, 94, 0, 0, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 600, 0, 88, 333, 0, 0, 0, 0, + 92, 93, 94, 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 910, 0, 120, 121, 122, 123, - 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 386, 1103, 0, - 322, 0, 130, 0, 0, 0, 0, 388, 0, 86, - 289, 239, 136, 0, 187, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 0, 114, 115, 116, 117, 0, 0, 118, 120, - 121, 122, 123, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 128, 129, 322, 0, 0, 130, 0, 0, 0, 0, - 133, 0, 0, 294, 0, 136, 0, 295, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 128, 129, 322, - 0, 0, 130, 0, 0, 0, 1112, 133, 1113, 86, - 289, 0, 136, 0, 1117, 90, 91, 92, 0, 0, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 0, 0, 0, 0, 0, 7, 8, 86, 289, - 0, 0, 0, 0, 90, 91, 92, 0, 0, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 497, 15, 16, 498, 18, 19, 499, 21, 500, 23, - 0, 24, 0, 26, 27, 0, 29, 30, 31, 0, - 0, 33, 34, 867, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 50, 51, 52, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 128, 129, 0, - 0, 0, 130, 0, 0, 0, 0, 133, 0, 0, - 705, 0, 136, 0, 706, 120, 121, 122, 123, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 386, 387, 322, 0, - 0, 130, 0, 0, 0, 0, 388, 0, 86, 329, - 0, 136, 0, 187, 90, 91, 92, 0, 0, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 110, 111, 112, 113, 114, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 0, 0, 35, 36, 37, 38, 39, 730, - 0, 86, 289, 43, 0, 0, 46, 90, 91, 92, - 0, 0, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 0, 0, 120, 121, 122, 123, 0, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 128, 331, 322, 0, - 0, 130, 86, 289, 239, 1204, 133, 1205, 90, 91, - 92, 136, 0, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 0, 114, 115, 116, 117, 0, - 0, 118, 0, 0, 0, 0, 0, 0, 120, 121, - 122, 123, 0, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 128, - 129, 322, 0, 0, 130, 0, 0, 0, 0, 133, - 768, 0, 0, 0, 136, 0, 0, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, -4, 1, 322, 0, -4, 0, 120, - 121, 122, 123, 0, 800, -4, -4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 122, 123, 124, + 125, 36, 37, 38, 39, 40, 0, 0, 0, 0, + 44, 0, 0, 47, 0, 0, 0, 0, 392, 393, + 0, 0, 0, 132, 0, 0, 0, 0, 394, 0, + 0, 0, 0, 138, 0, 191, 0, 0, 0, 0, + 0, 0, 122, 123, 124, 125, 0, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 130, 335, 326, 0, 0, 132, 88, + 293, 243, 1216, 135, 1217, 92, 93, 94, 138, 0, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 0, 116, 117, 118, 119, 88, 293, 120, 7, + 8, 0, 92, 93, 94, 0, 0, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 0, 0, + 0, 0, 0, 503, 15, 16, 504, 18, 19, 505, + 21, 506, 23, 0, 24, 0, 26, 27, 0, 29, + 30, 31, 0, 0, 0, 34, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 122, 123, 124, + 125, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 52, 53, 0, 0, 0, 0, 0, 0, 130, 131, + 0, 0, 0, 132, 0, 0, 0, 0, 135, 0, + 0, 0, 0, 138, 122, 123, 124, 125, 7, 8, + 0, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 130, 131, 0, 0, 326, + 132, 0, 0, 0, 0, 135, 0, 614, 778, 0, + 138, 0, 503, 15, 16, 504, 18, 19, 505, 21, + 506, 23, 0, 24, 0, 26, 27, 0, 29, 30, + 31, 7, 8, 0, 34, 35, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 51, 52, + 53, 0, 0, 810, 0, 503, 15, 16, 504, 18, + 19, 505, 21, 506, 23, 0, 24, 0, 26, 27, + 0, 29, 30, 31, 7, 8, 0, 34, 35, 0, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 51, 52, 53, 0, 0, 615, 855, 503, 15, + 16, 504, 18, 19, 505, 21, 506, 23, 0, 24, + 0, 26, 27, 0, 29, 30, 31, 7, 8, 0, + 34, 35, 0, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 0, 51, 52, 53, 0, 0, 775, + 895, 503, 15, 16, 504, 18, 19, 505, 21, 506, + 23, 0, 24, 0, 26, 27, 0, 29, 30, 31, + 7, 8, 0, 34, 35, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 51, 52, 53, + 0, 0, 795, 1095, 503, 15, 16, 504, 18, 19, + 505, 21, 506, 23, 0, 24, 0, 26, 27, 0, + 29, 30, 31, 0, -4, 1, 34, 35, -4, 0, + 0, 0, 0, 0, 0, 0, -4, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 129, 0, 0, 0, 130, 0, 0, -4, 0, - 133, 0, 0, -4, -4, 136, -4, -4, 0, -4, - -4, -4, -4, -4, -4, -4, -4, -4, -4, 0, - -4, -4, -4, -4, -4, -4, -4, -4, 0, -4, - -4, -4, -4, -4, -4, -4, -4, -4, 0, -4, - -4, -4, -4, -4, -4, 0, 0, -4, -4, 0, - 0, 0, 0, -4, -4, -4, -4, 0, 0, -4, - 0, -4, 0, -4, -4, -4, -4, -4, -4, -4, - -4, -4, -4, 6, 0, 0, 0, -4, -4, -4, - -4, 7, 8, 0, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 9, 0, 0, 0, 0, 10, - 11, 845, 12, 13, 0, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 0, 24, 25, 26, 27, - 28, 29, 30, 31, 0, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 0, 41, 42, 43, 44, 45, - 46, 0, 0, 47, 48, 0, 0, 0, 0, 49, - 50, 51, 52, 0, 0, 53, 0, 54, 0, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, - 0, 0, 0, 65, 66, 67, 68, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 0, 883, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 0, 1083, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, - 1100, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 0, 0, 1141, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 0, 1142, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 0, 1143, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 0, 1144, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, - 1175, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 0, 0, 1219, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 0, 1224, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 0, 1225, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 0, 1241, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, - 1244, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 0, 0, 1247, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 0, 1271, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 0, 1274, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 0, 1302, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, - 1304, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 0, 0, 1306, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 0, 1319, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 485, 0, 0, - 0, 0, 567, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 521, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 567, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 568, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 600, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 651, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 652, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 665, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 666, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 667, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 668, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 669, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 670, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 756, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 757, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 758, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 842, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 881, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 882, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 909, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 1034, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 1035, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 1054, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 1188, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 1189, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 1195, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 1267, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 1270, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 489, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 0, 0, - 605, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 615, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 0, 0, 630, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 632, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 0, 0, 322, 0, - 0, 0, 634, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 636, 308, 309, 310, 311, + 51, 52, 53, 0, 0, 1265, 0, 0, 0, -4, + 0, 0, 0, 0, -4, -4, 0, -4, -4, 0, + -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, + 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, + 0, -4, -4, -4, -4, -4, -4, -4, -4, -4, + 0, -4, -4, -4, -4, -4, -4, 0, 1322, -4, + -4, 0, 0, 0, 0, -4, -4, -4, -4, 0, + 0, -4, 0, -4, 0, -4, -4, -4, -4, -4, + -4, -4, -4, -4, -4, 6, 0, 0, 0, -4, + -4, -4, -4, 7, 8, 0, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 9, 0, 0, 0, + 0, 10, 11, 1112, 12, 13, 0, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 0, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 0, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 0, 42, 43, + 44, 45, 46, 47, 0, 0, 48, 49, 0, 0, + 0, 0, 50, 51, 52, 53, 0, 0, 54, 0, + 55, 0, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 0, 0, 0, 0, 66, 67, 68, 69, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 0, 0, 1153, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 0, 0, 1154, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 0, 0, 1155, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, + 0, 1156, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 0, 0, 1187, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 0, 0, 1231, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 0, 0, 1236, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 0, 0, 1237, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, + 0, 1253, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 0, 0, 1256, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 0, 0, 1259, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 0, 0, 1283, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 0, 0, 1286, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, + 0, 1314, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 0, 0, 1316, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 0, 0, 1318, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 0, 0, 1331, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 575, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 576, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 608, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 659, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 660, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 673, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 674, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 675, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 676, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 677, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 678, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 766, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 767, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 768, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 852, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 893, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 894, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 921, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 1046, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 1047, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 1066, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 1200, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 1201, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 1207, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 0, 0, 0, 1279, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 1282, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 495, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 0, 0, 613, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 623, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 0, 0, 638, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 640, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 0, 0, 326, 0, 0, 0, 642, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 644, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 0, 0, 646, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 648, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 0, + 0, 650, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 652, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 0, 0, 654, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 656, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 0, 0, 658, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 662, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 0, 0, 326, 0, 0, 0, 664, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 0, 0, 638, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 640, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 0, 0, 642, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 644, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 0, 0, - 646, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 648, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 0, 0, 650, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 654, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 0, 0, 322, 0, - 0, 0, 656, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 658, 308, 309, 310, 311, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 666, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 0, 0, 668, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 670, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 0, + 0, 672, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 785, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 0, 0, 786, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 0, 0, + 788, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 0, 0, 789, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 0, 0, 806, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 0, 0, 326, 0, 0, 0, 828, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 0, 0, 660, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 662, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 0, 0, 664, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 775, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 0, 0, - 776, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 0, 0, 778, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 0, 0, 779, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 0, 0, 796, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 0, 0, 322, 0, - 0, 0, 818, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 0, 0, 915, 308, 309, 310, 311, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 0, 0, 927, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 0, 0, 942, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 0, 0, 944, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 0, + 0, 946, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 0, 0, 948, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 0, 0, 1059, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 491, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 528, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 0, 0, 930, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 0, - 0, 932, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 0, 0, 934, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 0, 0, 936, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 0, 0, - 1047, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 485, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 522, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 531, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 532, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 534, 308, 309, 310, 311, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 537, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 538, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 540, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 542, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 543, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 546, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 547, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 0, 0, 326, 0, 604, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 605, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 606, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 536, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 537, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 540, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 541, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 0, 0, 322, 0, - 596, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 597, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 598, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 604, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 629, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 631, 308, 309, 310, 311, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 612, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 637, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 639, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 641, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 643, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 645, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 647, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 0, 0, 326, 0, 649, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 651, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 653, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 633, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 635, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 637, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 639, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 0, 0, 322, 0, - 641, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 643, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 645, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 647, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 649, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 653, 308, 309, 310, 311, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 655, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 657, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 661, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 663, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 665, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 667, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 669, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 0, 0, 326, 0, 671, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 724, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 729, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 655, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 657, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 659, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 661, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 0, 0, 322, 0, - 663, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 716, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 721, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 729, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 731, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 732, 308, 309, 310, 311, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 737, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 739, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 740, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 746, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 753, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 754, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 755, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 0, 0, 326, 0, 777, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 779, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 780, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 738, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 745, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 746, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 747, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 0, 0, 322, 0, - 767, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 769, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 770, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 774, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322, 0, 929, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 0, - 0, 0, 0, 322, 0, 931, 308, 309, 310, 311, + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 784, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 0, 0, 0, 0, 326, + 0, 941, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 0, 0, 0, 0, + 326, 0, 943, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 0, 0, 0, + 0, 326, 0, 945, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 0, 0, + 0, 0, 326, 0, 947, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 0, + 0, 0, 0, 326, 0, 951, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 0, 0, 0, 0, 326, 0, 1096, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 0, 0, 0, 0, 326, 0, 1111, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 0, 0, 0, 0, 326, 0, 1128, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 0, 0, 0, 0, 326, 0, 1278, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 0, 0, 0, 0, 322, 0, 933, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 0, 0, 0, 0, 322, 0, 935, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 0, 0, 0, 0, 322, 0, 939, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 0, 0, 0, 0, 322, 0, 1084, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 0, 0, 0, 0, 322, 0, - 1099, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 0, 0, 0, 0, 322, - 0, 1116, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 0, 0, 0, 0, - 322, 0, 1266, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 0, 0, 0, - 0, 322, 0, 1317, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 0, 0, - 0, 0, 322 + 322, 323, 324, 325, 0, 0, 0, 0, 326, 0, + 1329 }; static const yytype_int16 yycheck[] = { - 6, 5, 195, 6, 6, 297, 3, 6, 230, 231, - 232, 5, 205, 380, 381, 4, 36, 37, 4, 39, - 691, 4, 7, 1130, 4, 4, 4, 4, 75, 75, - 4, 6, 6, 226, 75, 228, 75, 4, 766, 6, - 4, 7, 142, 762, 152, 1152, 6, 147, 6, 157, - 4, 5, 76, 161, 131, 132, 6, 6, 82, 83, - 142, 283, 284, 285, 286, 147, 4, 170, 171, 76, - 0, 148, 7, 131, 132, 82, 83, 131, 132, 141, - 131, 132, 36, 37, 38, 39, 148, 89, 42, 13, - 148, 7, 141, 147, 141, 141, 147, 200, 149, 131, - 132, 148, 148, 86, 87, 88, 89, 148, 52, 148, - 96, 97, 50, 131, 132, 104, 148, 138, 139, 96, - 97, 59, 128, 129, 130, 149, 6, 133, 134, 147, - 141, 149, 138, 118, 119, 120, 121, 148, 144, 6, - 137, 147, 149, 6, 148, 151, 152, 153, 154, 148, - 156, 157, 158, 159, 148, 161, 162, 163, 829, 148, - 138, 139, 1269, 183, 184, 143, 149, 145, 148, 148, - 128, 191, 150, 148, 893, 195, 143, 141, 128, 145, - 186, 187, 131, 132, 138, 139, 121, 295, 141, 195, - 143, 145, 6, 7, 141, 131, 132, 489, 391, 131, - 132, 148, 118, 119, 120, 121, 212, 213, 214, 7, - 216, 147, 141, 219, 220, 147, 222, 149, 4, 148, - 76, 414, 138, 139, 141, 76, 82, 83, 234, 1336, - 141, 82, 83, 131, 132, 241, 242, 243, 244, 245, + 6, 199, 234, 235, 236, 4, 3, 301, 386, 387, + 6, 209, 5, 776, 4, 6, 37, 38, 5, 40, + 699, 6, 1142, 6, 76, 4, 6, 4, 4, 13, + 4, 4, 230, 4, 232, 4, 6, 4, 6, 6, + 139, 140, 77, 7, 1164, 4, 172, 173, 83, 84, + 7, 132, 133, 6, 76, 287, 288, 289, 290, 77, + 4, 5, 77, 132, 133, 83, 84, 148, 83, 84, + 154, 0, 76, 142, 7, 159, 50, 143, 204, 163, + 149, 143, 148, 132, 133, 59, 148, 52, 87, 88, + 89, 90, 36, 37, 38, 39, 77, 149, 42, 148, + 91, 150, 83, 84, 143, 132, 133, 97, 98, 148, + 142, 70, 71, 72, 73, 150, 132, 133, 97, 98, + 79, 7, 149, 82, 130, 131, 132, 149, 105, 135, + 136, 76, 150, 149, 140, 150, 132, 133, 142, 4, + 146, 6, 139, 149, 129, 149, 129, 153, 154, 155, + 156, 150, 158, 159, 160, 161, 149, 163, 164, 165, + 839, 1281, 149, 139, 140, 122, 187, 188, 144, 150, + 146, 142, 149, 56, 195, 151, 149, 144, 199, 149, + 149, 149, 146, 6, 190, 191, 119, 120, 121, 122, + 772, 132, 133, 199, 6, 139, 140, 142, 6, 397, + 49, 495, 146, 52, 149, 54, 139, 140, 149, 52, + 216, 217, 218, 146, 220, 299, 49, 223, 224, 52, + 226, 54, 420, 77, 49, 142, 7, 52, 1348, 83, + 84, 77, 238, 119, 120, 121, 122, 83, 84, 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, 282, 49, 949, 141, - 52, 287, 54, 69, 70, 71, 72, 141, 141, 295, - 143, 141, 78, 149, 297, 81, 49, 405, 149, 52, - 141, 54, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 56, 131, 132, - 118, 119, 120, 121, 46, 331, 142, 49, 7, 76, - 52, 147, 142, 339, 147, 82, 83, 147, 344, 142, - 138, 139, 348, 349, 147, 76, 52, 353, 354, 355, - 356, 82, 83, 131, 132, 147, 362, 149, 378, 379, - 52, 367, 368, 369, 52, 76, 386, 54, 141, 147, - 143, 82, 83, 141, 131, 132, 52, 383, 384, 385, - 386, 387, 388, 380, 381, 49, 392, 393, 394, 395, - 147, 76, 398, 615, 148, 401, 402, 82, 83, 405, - 406, 407, 149, 141, 148, 131, 132, 76, 52, 131, - 132, 52, 520, 82, 83, 141, 131, 132, 149, 141, - 49, 141, 148, 143, 430, 49, 148, 433, 141, 432, - 143, 4, 147, 1161, 542, 1163, 4, 1165, 149, 118, - 119, 120, 121, 76, 4, 141, 76, 131, 132, 82, - 83, 673, 82, 83, 6, 76, 131, 132, 141, 138, - 139, 82, 83, 147, 149, 1136, 145, 141, 76, 143, - 4, 5, 147, 141, 82, 83, 141, 143, 484, 701, - 149, 131, 132, 131, 132, 491, 489, 4, 490, 1208, - 148, 4, 1211, 131, 132, 1214, 141, 147, 143, 147, - 5, 152, 36, 37, 38, 39, 157, 141, 42, 147, - 161, 131, 132, 141, 520, 521, 149, 523, 524, 149, - 7, 527, 528, 529, 141, 141, 1254, 147, 149, 821, - 822, 36, 37, 38, 39, 141, 542, 42, 141, 545, - 546, 149, 131, 132, 141, 551, 566, 131, 132, 141, - 556, 557, 558, 559, 556, 557, 558, 559, 147, 579, - 141, 567, 568, 147, 672, 76, 4, 573, 131, 132, - 1289, 82, 83, 1301, 141, 1303, 143, 1305, 6, 585, - 141, 587, 143, 1311, 147, 6, 694, 695, 696, 697, - 8, 6, 131, 132, 600, 5, 602, 603, 706, 141, - 141, 1320, 608, 141, 1323, 131, 132, 1326, 147, 141, - 1329, 1339, 615, 1341, 141, 1343, 143, 131, 132, 727, - 148, 147, 131, 132, 133, 134, 135, 4, 138, 139, - 997, 140, 1351, 147, 1353, 145, 1355, 557, 558, 559, - 141, 141, 138, 139, 295, 651, 652, 143, 141, 145, - 46, 8, 148, 49, 150, 141, 52, 143, 54, 665, - 666, 667, 668, 669, 670, 141, 672, 138, 139, 141, - 5, 677, 143, 148, 145, 133, 134, 135, 684, 150, - 331, 141, 140, 143, 704, 141, 148, 143, 694, 695, - 696, 697, 698, 141, 141, 143, 143, 348, 349, 141, - 706, 143, 148, 143, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 141, 141, - 143, 727, 140, 147, 141, 149, 143, 164, 141, 141, - 143, 149, 169, 170, 171, 957, 756, 757, 758, 141, - 141, 143, 143, 141, 181, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 405, 147, 6, 149, 140, 143, - 147, 145, 149, 200, 201, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 147, - 147, 149, 149, 140, 52, 147, 54, 149, 148, 6, - 1157, 899, 149, 147, 145, 149, 802, 803, 147, 147, - 149, 149, 147, 147, 149, 149, 148, 99, 12, 13, - 147, 147, 149, 149, 147, 818, 149, 6, 147, 822, - 149, 147, 6, 149, 830, 147, 147, 149, 149, 147, - 147, 149, 149, 147, 143, 149, 842, 147, 143, 149, - 846, 6, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 147, 57, 149, 59, 60, 143, 62, 63, - 64, 4, 6, 67, 68, 147, 147, 149, 149, 520, - 148, 147, 892, 149, 880, 881, 882, 528, 529, 5, - 140, 145, 888, 889, 7, 143, 892, 91, 92, 93, - 147, 542, 149, 899, 545, 147, 147, 149, 149, 148, - 7, 149, 148, 909, 910, 911, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 923, 921, 7, - 7, 140, 928, 141, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 942, 142, 141, 941, - 140, 6, 141, 963, 141, 149, 147, 7, 7, 6, - 96, 142, 148, 147, 142, 142, 962, 142, 6, 142, - 142, 147, 968, 969, 4, 144, 8, 973, 7, 99, - 7, 7, 7, 7, 99, 981, 1169, 7, 998, 99, - 1000, 7, 1002, 7, 4, 6, 992, 145, 149, 149, - 992, 1011, 6, 1013, 1014, 7, 7, 7, 145, 4, - 997, 7, 141, 7, 7, 1011, 7, 141, 1014, 1117, - 148, 1017, 6, 6, 6, 144, 6, 6, 6, 1025, - 7, 672, 143, 1025, 128, 52, 7, 7, 1034, 1035, - 7, 54, 7, 7, 7, 6, 142, 7, 7, 142, - 142, 142, 7, 694, 695, 696, 697, 7, 1054, 486, - 487, 4, 147, 7, 6, 706, 148, 141, 6, 148, - 7, 7, 1255, 6, 1172, 6, 52, 6, 6, 4, - 4, 4, 148, 148, 148, 148, 727, 6, 4, 1085, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 1316, 1101, 6, 1103, 140, 148, - 142, 142, 145, 141, 7, 6, 1112, 6, 1114, 59, - 6, 1117, 6, 6, 6, 552, 148, 148, 5, 148, - 1126, 4, 6, 148, 1346, 1131, 1348, 7, 565, 7, - 7, 7, 5, 148, 6, 148, 6, 95, 6, 148, - 1160, 7, 1162, 1365, 1164, 145, 6, 4, 1256, 144, - 1258, 1171, 6, 1173, 1160, 6, 1162, 6, 1164, 6, - 1157, 6, 6, 6, 6, 6, 1172, 5, 99, 6, - 1176, 6, 6, 6, 6, 4, 12, 13, 6, 142, - 6, 6, 1188, 1189, 6, 147, 6, 6, 6, 1195, - 4, 147, 147, 6, 6, 1201, 147, 7, 1204, 6, - 6, 6, 147, 145, 148, 1313, 5, 7, 6, 6, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 50, 57, 6, 59, 60, 1231, 62, 63, 64, 6, - 6, 67, 68, 6, 148, 6, 1242, 6, 1258, 1245, - 6, 148, 1248, 149, 148, 6, 1252, 6, 899, 6, - 1256, 148, 1258, 148, 94, 91, 92, 93, 148, 6, - 6, 1267, 6, 6, 1270, 6, 97, 6, 6, 148, - 6, 6, 65, 6, 149, 149, 6, 714, 715, 148, - 717, 148, 719, 720, 149, 149, 723, 724, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 6, 149, 6, 6, 140, 1313, 4, 6, - 149, 6, 6, 149, 6, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 6, - 6, 6, 6, 140, 6, 6, 6, 148, 6, 148, - 148, 6, 6, 780, 781, 782, 122, 123, 124, 125, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 143, 961, 77, 142, 291, 148, 142, 77, 83, + 84, 77, 142, 299, 83, 84, 150, 83, 84, 149, + 563, 564, 565, 142, 150, 7, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 301, 142, 905, 77, 142, 77, 411, 54, 335, + 83, 84, 83, 84, 132, 133, 142, 343, 119, 120, + 121, 122, 348, 149, 132, 133, 352, 353, 139, 140, + 148, 357, 358, 359, 360, 146, 150, 52, 139, 140, + 366, 150, 52, 384, 385, 371, 372, 373, 52, 46, + 77, 392, 49, 77, 142, 52, 83, 84, 142, 83, + 84, 149, 49, 389, 390, 391, 392, 393, 394, 386, + 387, 623, 398, 399, 400, 401, 142, 150, 404, 150, + 142, 407, 408, 149, 149, 411, 412, 413, 132, 133, + 1173, 142, 1175, 144, 1177, 149, 154, 119, 120, 121, + 122, 159, 77, 52, 148, 163, 150, 143, 83, 84, + 436, 52, 148, 439, 132, 133, 49, 139, 140, 142, + 49, 144, 526, 150, 132, 133, 150, 4, 5, 681, + 148, 46, 150, 4, 49, 132, 133, 52, 438, 54, + 148, 4, 132, 133, 548, 142, 142, 5, 144, 1148, + 132, 133, 149, 132, 133, 4, 142, 709, 148, 36, + 37, 38, 39, 6, 490, 42, 148, 144, 142, 148, + 144, 497, 132, 133, 142, 150, 132, 133, 36, 37, + 38, 39, 4, 1266, 42, 496, 132, 133, 148, 132, + 133, 142, 148, 144, 142, 495, 132, 133, 132, 133, + 526, 527, 148, 529, 530, 148, 4, 533, 534, 535, + 142, 142, 148, 144, 148, 6, 7, 831, 832, 132, + 133, 142, 548, 144, 142, 551, 552, 132, 133, 149, + 1313, 557, 1315, 574, 1317, 148, 562, 563, 564, 565, + 1323, 299, 142, 148, 132, 133, 587, 132, 133, 575, + 576, 562, 563, 564, 565, 581, 142, 132, 133, 142, + 148, 144, 142, 148, 132, 133, 142, 593, 1351, 595, + 1353, 4, 1355, 148, 139, 140, 680, 335, 142, 144, + 148, 146, 608, 142, 610, 611, 151, 142, 142, 144, + 616, 142, 7, 144, 352, 353, 142, 6, 702, 703, + 704, 705, 139, 140, 142, 6, 144, 144, 6, 146, + 714, 1009, 149, 5, 151, 134, 135, 136, 1220, 142, + 149, 1223, 141, 623, 1226, 142, 132, 133, 134, 135, + 136, 735, 142, 659, 660, 141, 4, 142, 142, 144, + 144, 142, 142, 144, 144, 142, 142, 673, 674, 675, + 676, 677, 678, 411, 680, 142, 142, 144, 144, 685, + 142, 142, 144, 144, 142, 142, 692, 144, 142, 142, + 144, 712, 148, 148, 150, 150, 702, 703, 704, 705, + 706, 148, 144, 150, 146, 148, 142, 150, 714, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 148, 1301, + 150, 148, 141, 150, 52, 148, 54, 150, 148, 735, + 150, 148, 148, 150, 150, 166, 142, 969, 8, 5, + 171, 172, 173, 142, 149, 766, 767, 768, 149, 149, + 1332, 182, 183, 1335, 185, 148, 1338, 150, 142, 1341, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 6, 204, 205, 148, 141, 150, 148, 142, + 150, 1363, 148, 1365, 150, 1367, 6, 148, 526, 150, + 148, 1169, 150, 148, 146, 150, 534, 535, 148, 148, + 150, 150, 148, 148, 150, 150, 812, 813, 144, 148, + 548, 150, 149, 551, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 144, 148, 911, 150, 141, + 148, 148, 150, 150, 840, 148, 144, 150, 148, 148, + 150, 150, 148, 148, 150, 150, 852, 149, 828, 100, + 856, 6, 832, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 6, 6, 144, + 4, 141, 149, 6, 5, 146, 141, 7, 150, 7, + 150, 144, 149, 904, 7, 149, 892, 893, 894, 7, + 142, 7, 142, 142, 900, 901, 142, 7, 904, 143, + 6, 148, 7, 7, 6, 911, 97, 149, 143, 148, + 143, 143, 143, 143, 143, 921, 922, 923, 6, 4, + 148, 145, 100, 7, 7, 7, 7, 100, 7, 935, + 7, 100, 7, 7, 940, 4, 6, 146, 150, 150, + 6, 146, 680, 7, 7, 7, 4, 7, 954, 142, + 7, 7, 7, 933, 975, 8, 142, 149, 6, 6, + 6, 145, 953, 6, 702, 703, 704, 705, 974, 6, + 144, 7, 6, 129, 980, 981, 714, 7, 7, 985, + 52, 54, 7, 1181, 7, 7, 7, 993, 6, 1010, + 7, 1012, 143, 1014, 143, 143, 143, 735, 1004, 7, + 7, 7, 1023, 6, 1025, 1026, 6, 4, 148, 7, + 6, 6, 1009, 1004, 149, 142, 7, 1023, 7, 6, + 1026, 6, 6, 1029, 149, 52, 6, 4, 4, 4, + 149, 1037, 149, 6, 149, 149, 4, 6, 149, 142, + 1046, 1047, 143, 7, 6, 1129, 1037, 146, 59, 149, + 6, 149, 149, 6, 6, 149, 6, 6, 5, 4, + 1066, 492, 493, 6, 96, 7, 7, 7, 7, 1267, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 5, 7, 6, 6, 141, 6, + 149, 1097, 6, 4, 146, 149, 1328, 150, 149, 6, + 1184, 6, 6, 6, 6, 145, 6, 1113, 6, 1115, + 6, 6, 5, 148, 6, 6, 6, 100, 1124, 6, + 1126, 4, 6, 1129, 143, 6, 1358, 558, 1360, 6, + 6, 6, 1138, 6, 6, 4, 148, 1143, 569, 570, + 149, 6, 573, 148, 148, 1377, 148, 6, 5, 7, + 6, 1172, 146, 1174, 6, 1176, 50, 6, 6, 6, + 6, 6, 1183, 149, 1185, 6, 1172, 6, 1174, 6, + 1176, 149, 1169, 911, 6, 6, 150, 149, 1184, 149, + 7, 6, 1188, 149, 1268, 95, 1270, 6, 149, 98, + 6, 6, 6, 6, 1200, 1201, 6, 6, 149, 6, + 66, 1207, 150, 6, 150, 3, 4, 1213, 4, 6, + 1216, 9, 10, 11, 150, 150, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 1243, 150, 6, + 6, 1325, 6, 149, 6, 851, 6, 8, 1254, 1270, + 149, 1257, 6, 6, 1260, 6, 6, 6, 1264, 6, + 6, 150, 1268, 149, 1270, 6, 6, 149, 6, 149, + 149, 6, 6, 1279, 6, 6, 1282, 6, 149, 149, + 6, 149, 149, 6, 6, 1023, 149, 6, 1026, 6, + 6, 722, 723, 6, 725, 6, 727, 728, 6, 6, + 731, 732, 3, 1243, 3, 859, 957, 1250, -1, -1, + -1, -1, -1, 111, 112, 113, 114, -1, -1, 1325, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 132, 133, -1, 365, 141, 137, + -1, -1, -1, -1, 142, -1, -1, 145, -1, 147, + -1, 149, -1, -1, -1, -1, -1, -1, -1, 790, + 791, 792, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, 1115, -1, -1, + 141, -1, 143, -1, -1, -1, -1, -1, -1, -1, + 6, 1129, -1, -1, 3, 4, -1, -1, -1, -1, + 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 6, -1, -1, 860, + -1, -1, -1, -1, -1, 866, -1, 46, -1, -1, + -1, -1, -1, 874, 875, 876, 1184, -1, -1, 880, + -1, -1, -1, 6, 885, 886, 887, -1, -1, -1, + -1, 70, 71, 72, 73, 74, -1, -1, -1, 900, + 79, -1, -1, 82, -1, 906, -1, -1, 909, -1, + -1, -1, -1, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 928, 929, 930, + 931, 141, 111, 112, 113, 114, -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 1011, 148, 6, 1014, 140, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 6, - 3, 4, 6, 140, 148, 148, 9, 10, 11, 6, - 148, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 6, 850, 148, 6, 148, 6, 6, 856, - 6, 6, 6, 46, 6, 841, 1231, 864, 865, 866, - 849, 3, 3, 870, 1238, -1, 361, 945, 875, 876, - 877, -1, -1, -1, -1, -1, 69, 70, 71, 72, - 73, 888, 1103, -1, -1, 78, -1, 894, 81, -1, - 897, -1, -1, -1, -1, -1, 1117, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 916, - 917, 918, 919, -1, -1, -1, -1, 110, 111, 112, - 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 940, -1, -1, -1, -1, 131, 132, - 6, -1, -1, 136, -1, -1, -1, -1, 141, -1, - -1, 1172, -1, 146, -1, 148, 149, -1, -1, -1, + 136, 952, -1, 132, 133, 141, -1, -1, 137, -1, + 1268, -1, 1270, 142, 6, -1, -1, -1, 147, -1, + 149, 150, -1, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, -1, -1, 996, 997, 998, 999, -1, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, -1, -1, 1325, 141, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 3, 4, 984, 985, 986, - 987, 9, 10, 11, -1, -1, 14, 15, 16, 17, + -1, 1032, -1, 6, -1, -1, -1, 3, 4, -1, + -1, -1, -1, 9, 10, 11, -1, 1048, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 46, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, -1, -1, -1, 70, 71, 72, 73, 74, 1110, + 6, -1, -1, 79, -1, -1, 82, -1, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 1133, 1134, 1135, 1136, 141, -1, 143, -1, + -1, -1, -1, 148, -1, 111, 112, 113, 114, -1, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, -1, 132, 133, 141, -1, + -1, 137, -1, -1, -1, -1, 142, -1, -1, 1180, + -1, 147, -1, -1, 150, 3, 4, 5, -1, 7, + -1, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, 1020, -1, -1, -1, -1, 46, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1036, - -1, -1, -1, -1, -1, 1256, -1, 1258, -1, -1, - -1, 69, 70, 71, 72, 73, -1, -1, -1, -1, - 78, 6, -1, 81, -1, -1, 122, 123, 124, 125, + 28, 29, 30, 31, 32, 33, 34, -1, 36, 37, + 38, 39, -1, -1, 42, -1, 1227, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, -1, -1, -1, -1, - -1, -1, 110, 111, 112, 113, -1, -1, -1, -1, - -1, 1098, 1313, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 131, 132, -1, -1, -1, 136, -1, - -1, -1, -1, 141, 1121, 1122, 1123, 1124, 146, -1, - -1, 149, -1, 3, 4, 5, -1, 7, -1, 9, + 136, 3, 4, 5, -1, 141, -1, 9, 10, 11, + -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 46, -1, -1, 105, -1, -1, + -1, -1, -1, 111, 112, 113, 114, 66, -1, -1, + -1, 119, 120, 121, 122, -1, -1, -1, 70, 71, + 72, 73, 74, 6, 132, 133, -1, 79, -1, 137, + 82, 139, 140, -1, 142, -1, 144, -1, 146, 147, + -1, 149, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 6, -1, -1, -1, 111, + 112, 113, 114, -1, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + 132, 133, 141, -1, -1, 137, -1, -1, 6, -1, + 142, -1, 3, 4, 5, 147, -1, 149, 9, 10, + 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, -1, -1, -1, 141, 70, + 71, 72, 73, 74, 6, -1, -1, -1, 79, -1, + -1, 82, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, 6, -1, -1, -1, + 111, 112, 113, 114, -1, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, 132, 133, 141, -1, -1, 137, -1, -1, 6, + -1, 142, -1, 3, 4, -1, 147, -1, 149, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, -1, 36, 37, 38, 39, - -1, 1168, 42, -1, 12, 13, -1, 122, 123, 124, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, + -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + 70, 71, 72, 73, 74, 8, -1, -1, -1, 79, + -1, -1, 82, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, -1, -1, -1, -1, -1, -1, 8, + -1, 111, 112, 113, 114, -1, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, 132, 133, 141, -1, -1, 137, -1, -1, + -1, -1, 142, 8, 3, 4, -1, 147, -1, 149, + 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, 70, 71, 72, 73, 74, 8, -1, -1, -1, + 79, -1, -1, 82, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, + 8, -1, 111, 112, 113, 114, -1, -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 1215, 57, - -1, 59, 60, -1, 62, 63, 64, -1, -1, 67, - 68, -1, -1, -1, 104, -1, -1, -1, -1, -1, - 110, 111, 112, 113, -1, -1, -1, -1, 118, 119, - 120, 121, -1, 91, 92, 93, -1, -1, -1, -1, - -1, 131, 132, -1, -1, -1, 136, -1, 138, 139, - -1, 141, -1, 143, -1, 145, 146, -1, 148, 3, - 4, 5, -1, -1, -1, 9, 10, 11, -1, -1, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 149, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 46, -1, 12, 13, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, 69, 70, 71, 72, 73, - 6, 147, -1, 149, 78, -1, -1, 81, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, - -1, 59, 60, -1, 62, 63, 64, -1, -1, 67, - 68, -1, -1, -1, -1, -1, 110, 111, 112, 113, + 135, 136, -1, 132, 133, -1, 141, -1, 137, -1, + -1, -1, -1, 142, 8, 3, 4, -1, 147, -1, + 149, 9, 10, 11, -1, -1, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 46, -1, + -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, -1, 70, 71, 72, 73, 74, -1, -1, -1, + -1, 79, -1, -1, 82, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 111, 112, 113, 114, -1, -1, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, -1, 132, 133, -1, 141, -1, 137, + -1, -1, -1, -1, 142, -1, 3, 4, -1, 147, + -1, 149, 9, 10, 11, -1, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, + -1, -1, 12, 13, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, 70, 71, 72, 73, 74, -1, 148, + -1, 150, 79, -1, -1, 82, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, -1, 57, -1, 59, + 60, -1, 62, 63, 64, -1, -1, -1, 68, 69, + -1, -1, -1, -1, 111, 112, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, 93, -1, 131, 132, -1, - -1, -1, 136, -1, -1, -1, -1, 141, -1, 3, - 4, 5, 146, -1, 148, 9, 10, 11, -1, -1, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 149, 46, -1, 12, 13, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, 69, 70, 71, 72, 73, - 6, -1, -1, -1, 78, -1, -1, 81, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, - -1, 59, 60, -1, 62, 63, 64, -1, -1, 67, - 68, -1, -1, -1, -1, -1, 110, 111, 112, 113, + -1, -1, 92, 93, 94, 132, 133, -1, -1, -1, + 137, -1, -1, -1, -1, 142, -1, 3, 4, -1, + 147, -1, 149, 9, 10, 11, -1, -1, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, 93, -1, 131, 132, -1, - -1, -1, 136, -1, -1, -1, -1, 141, -1, 3, - 4, -1, 146, -1, 148, 9, 10, 11, -1, -1, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 149, 46, -1, 12, 13, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, 69, 70, 71, 72, 73, - 6, -1, -1, -1, 78, -1, -1, 81, 46, 47, + 46, -1, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, 70, 71, 72, 73, 74, 150, + -1, 3, 4, 79, -1, -1, 82, 9, 10, 11, + -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, -1, -1, 111, 112, 113, 114, -1, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, -1, 132, 133, 141, -1, + -1, 137, -1, -1, -1, 148, 142, 150, 3, 4, + 5, 147, -1, 149, 9, 10, 11, -1, -1, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + -1, 36, 37, 38, 39, -1, -1, 42, -1, 111, + 112, 113, 114, -1, 12, 13, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 132, 133, -1, -1, 141, 137, -1, -1, -1, -1, + 142, 148, -1, 145, -1, 147, -1, 149, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, - -1, 59, 60, -1, 62, 63, 64, -1, -1, 67, - 68, -1, -1, -1, -1, -1, 110, 111, 112, 113, + -1, 59, 60, -1, 62, 63, 64, -1, -1, -1, + 68, 69, -1, -1, -1, -1, 111, 112, 113, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, 93, -1, 131, 132, -1, - -1, -1, 136, -1, -1, -1, -1, 141, -1, 3, - 4, -1, 146, -1, 148, 9, 10, 11, -1, -1, + -1, -1, -1, -1, 92, 93, 94, 132, 133, -1, + -1, -1, 137, -1, -1, -1, -1, 142, -1, 3, + 4, -1, 147, -1, 149, 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 149, 46, -1, 12, 13, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, 69, 70, 71, 72, 73, - 6, -1, -1, -1, 78, -1, -1, 81, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, - -1, 59, 60, -1, 62, 63, 64, -1, -1, 67, - 68, -1, 6, -1, -1, -1, 110, 111, 112, 113, + -1, -1, 150, -1, 3, 4, -1, -1, -1, -1, + 9, 10, 11, -1, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 91, 92, 93, -1, 131, 132, -1, - -1, -1, 136, -1, -1, 6, -1, 141, -1, 3, - 4, -1, 146, -1, 148, 9, 10, 11, -1, -1, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 149, 46, -1, -1, -1, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, 69, 70, 71, 72, 73, - 6, -1, -1, -1, 78, -1, -1, 81, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, -1, -1, - -1, -1, -1, -1, 8, -1, 110, 111, 112, 113, - -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, 131, 132, 140, - -1, -1, 136, -1, -1, -1, -1, 141, 8, 3, - 4, -1, 146, -1, 148, 9, 10, 11, -1, -1, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 46, -1, -1, -1, 122, 123, 124, 125, + -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, + 114, 70, 71, 72, 73, 74, -1, -1, -1, -1, + 79, -1, -1, 82, -1, -1, -1, -1, 132, 133, + -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, + -1, -1, -1, 147, -1, 149, -1, -1, -1, -1, + -1, -1, 111, 112, 113, 114, -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, 69, 70, 71, 72, 73, - 8, -1, -1, -1, 78, -1, -1, 81, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 110, 111, 112, 113, - -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, 131, 132, -1, - 140, -1, 136, -1, -1, -1, -1, 141, 8, 3, - 4, -1, 146, -1, 148, 9, 10, 11, -1, -1, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 46, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, -1, 69, 70, 71, 72, 73, - 8, -1, 3, 4, 78, -1, -1, 81, 9, 10, - 11, -1, -1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 8, -1, 110, 111, 112, 113, - -1, -1, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, 131, 132, -1, - 140, -1, 136, -1, -1, -1, -1, 141, -1, 3, - 4, 5, 146, -1, 148, 9, 10, 11, -1, -1, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, 36, 37, 38, 39, -1, -1, 42, 110, - 111, 112, 113, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - 131, 132, 140, -1, -1, 136, -1, -1, -1, -1, - 141, -1, -1, 144, -1, 146, -1, 148, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 110, 111, 112, 113, - -1, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, 131, 132, 140, - -1, -1, 136, -1, -1, -1, 147, 141, 149, 3, - 4, -1, 146, -1, 148, 9, 10, 11, -1, -1, + 136, -1, -1, 132, 133, 141, -1, -1, 137, 3, + 4, 5, 148, 142, 150, 9, 10, 11, 147, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, 12, 13, 3, 4, - -1, -1, -1, -1, 9, 10, 11, -1, -1, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - -1, 57, -1, 59, 60, -1, 62, 63, 64, -1, - -1, 67, 68, 65, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 110, 111, 112, 113, - -1, -1, -1, -1, -1, 91, 92, 93, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 131, 132, -1, - -1, -1, 136, -1, -1, -1, -1, 141, -1, -1, - 144, -1, 146, -1, 148, 110, 111, 112, 113, -1, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, 131, 132, 140, -1, - -1, 136, -1, -1, -1, -1, 141, -1, 3, 4, - -1, 146, -1, 148, 9, 10, 11, -1, -1, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 46, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, -1, -1, 69, 70, 71, 72, 73, 149, - -1, 3, 4, 78, -1, -1, 81, 9, 10, 11, - -1, -1, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, -1, -1, 110, 111, 112, 113, -1, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, 131, 132, 140, -1, - -1, 136, 3, 4, 5, 147, 141, 149, 9, 10, - 11, 146, -1, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, -1, 36, 37, 38, 39, -1, - -1, 42, -1, -1, -1, -1, -1, -1, 110, 111, - 112, 113, -1, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, 131, - 132, 140, -1, -1, 136, -1, -1, -1, -1, 141, - 149, -1, -1, -1, 146, -1, -1, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, 0, 1, 140, -1, 4, -1, 110, - 111, 112, 113, -1, 149, 12, 13, -1, -1, -1, + 34, -1, 36, 37, 38, 39, 3, 4, 42, 12, + 13, -1, 9, 10, 11, -1, -1, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, -1, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, -1, 57, -1, 59, 60, -1, 62, + 63, 64, -1, -1, -1, 68, 69, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, + 114, -1, -1, -1, -1, -1, -1, -1, -1, 92, + 93, 94, -1, -1, -1, -1, -1, -1, 132, 133, + -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, + -1, -1, -1, 147, 111, 112, 113, 114, 12, 13, + -1, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 132, 133, -1, -1, 141, + 137, -1, -1, -1, -1, 142, -1, 150, 150, -1, + 147, -1, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, -1, 57, -1, 59, 60, -1, 62, 63, + 64, 12, 13, -1, 68, 69, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, 92, 93, + 94, -1, -1, 150, -1, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, -1, 57, -1, 59, 60, + -1, 62, 63, 64, 12, 13, -1, 68, 69, -1, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, 92, 93, 94, -1, -1, 150, 150, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, -1, 57, + -1, 59, 60, -1, 62, 63, 64, 12, 13, -1, + 68, 69, -1, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, -1, 92, 93, 94, -1, -1, 150, + 150, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, -1, 57, -1, 59, 60, -1, 62, 63, 64, + 12, 13, -1, 68, 69, -1, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, 92, 93, 94, + -1, -1, 150, 150, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, -1, 57, -1, 59, 60, -1, + 62, 63, 64, -1, 0, 1, 68, 69, 4, -1, + -1, -1, -1, -1, -1, -1, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 131, 132, -1, -1, -1, 136, -1, -1, 35, -1, - 141, -1, -1, 40, 41, 146, 43, 44, -1, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, -1, - 57, 58, 59, 60, 61, 62, 63, 64, -1, 66, - 67, 68, 69, 70, 71, 72, 73, 74, -1, 76, - 77, 78, 79, 80, 81, -1, -1, 84, 85, -1, - -1, -1, -1, 90, 91, 92, 93, -1, -1, 96, - -1, 98, -1, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 4, -1, -1, -1, 114, 115, 116, - 117, 12, 13, -1, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, 35, -1, -1, -1, -1, 40, - 41, 149, 43, 44, -1, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, -1, 57, 58, 59, 60, - 61, 62, 63, 64, -1, 66, 67, 68, 69, 70, - 71, 72, 73, 74, -1, 76, 77, 78, 79, 80, - 81, -1, -1, 84, 85, -1, -1, -1, -1, 90, - 91, 92, 93, -1, -1, 96, -1, 98, -1, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, -1, - -1, -1, -1, 114, 115, 116, 117, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, -1, -1, 149, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - -1, -1, 149, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, - 149, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, -1, -1, 149, 122, + 92, 93, 94, -1, -1, 150, -1, -1, -1, 35, + -1, -1, -1, -1, 40, 41, -1, 43, 44, -1, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, + -1, 67, 68, 69, 70, 71, 72, 73, 74, 75, + -1, 77, 78, 79, 80, 81, 82, -1, 150, 85, + 86, -1, -1, -1, -1, 91, 92, 93, 94, -1, + -1, 97, -1, 99, -1, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 4, -1, -1, -1, 115, + 116, 117, 118, 12, 13, -1, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, 35, -1, -1, -1, + -1, 40, 41, 150, 43, 44, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, 60, 61, 62, 63, 64, 65, -1, 67, 68, + 69, 70, 71, 72, 73, 74, 75, -1, 77, 78, + 79, 80, 81, 82, -1, -1, 85, 86, -1, -1, + -1, -1, 91, 92, 93, 94, -1, -1, 97, -1, + 99, -1, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, -1, -1, -1, -1, 115, 116, 117, 118, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, -1, -1, 149, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, -1, -1, 149, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - -1, -1, 149, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, - 149, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, -1, -1, 149, 122, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, + -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, -1, -1, 149, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, -1, -1, 149, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - -1, -1, 149, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, - 149, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, -1, -1, 149, 122, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, + -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, -1, -1, 149, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, -1, -1, 149, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - -1, -1, 149, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, -1, -1, - 149, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, -1, -1, 149, 122, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, -1, + -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, -1, -1, 149, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, 142, -1, -1, - -1, -1, 147, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, 147, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, 147, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - 147, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, 147, 122, 123, 124, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, -1, -1, 150, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, 147, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, 147, 122, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, 147, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - 147, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, 147, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, 147, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, 147, 122, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, 147, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - 147, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, 147, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, 147, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, 147, 122, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, 147, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - 147, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, 147, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, 147, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, 147, 122, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, 147, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, -1, - 147, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, -1, -1, -1, 147, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, -1, - -1, -1, 147, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, -1, -1, -1, 147, 122, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, -1, -1, -1, 147, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, 144, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, -1, -1, - 144, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, 144, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, -1, -1, 144, 122, 123, 124, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, -1, -1, -1, 148, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, -1, -1, + -1, 148, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, 144, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, -1, -1, 140, -1, - -1, -1, 144, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, 144, 122, 123, 124, 125, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, -1, -1, 144, 122, + 136, -1, -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, 144, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, -1, -1, 144, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, 144, 122, 123, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, -1, -1, - 144, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, 144, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, -1, -1, 144, 122, 123, 124, + 134, 135, 136, -1, -1, -1, -1, 141, -1, -1, + -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, 144, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, -1, -1, 140, -1, - -1, -1, 144, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, 144, 122, 123, 124, 125, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, -1, -1, 144, 122, + 136, -1, -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, 144, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, -1, -1, 144, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, 144, 122, 123, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, -1, -1, - 144, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, -1, -1, 144, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, -1, -1, 144, 122, 123, 124, + 134, 135, 136, -1, -1, -1, -1, 141, -1, -1, + -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, -1, -1, 144, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, -1, -1, 140, -1, - -1, -1, 144, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, -1, -1, 144, 122, 123, 124, 125, + 135, 136, -1, -1, -1, -1, 141, -1, -1, -1, + 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, -1, -1, 144, 122, + 136, -1, -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, -1, - -1, 144, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, -1, -1, 144, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, -1, -1, 144, 122, 123, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, -1, -1, - 144, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, 142, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, 142, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, 142, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, 142, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, 142, 122, 123, 124, 125, + 134, 135, 136, -1, -1, -1, -1, 141, -1, -1, + -1, 145, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, -1, -1, 145, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, -1, -1, 145, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, -1, -1, -1, -1, 141, -1, 143, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, 142, 122, 123, 124, + 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, 142, 122, 123, + 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, 142, 122, + 134, 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, 142, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, -1, -1, 140, -1, - 142, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, 142, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, 142, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, 142, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, 142, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, 142, 122, 123, 124, 125, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, 142, 122, 123, 124, + 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, 142, 122, 123, + 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, 142, 122, + 134, 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, 142, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, -1, -1, 140, -1, - 142, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, 142, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, 142, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, 142, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, 142, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, 142, 122, 123, 124, 125, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, 142, 122, 123, 124, + 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, 142, 122, 123, + 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, 142, 122, + 134, 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, 142, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, -1, -1, 140, -1, - 142, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, 142, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, 142, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, 142, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, 142, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, 142, 122, 123, 124, 125, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, 142, 122, 123, 124, + 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, 142, 122, 123, + 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, 142, 122, + 134, 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, 142, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, -1, -1, 140, -1, - 142, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, 142, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, 142, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, 142, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140, -1, 142, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, -1, - -1, -1, -1, 140, -1, 142, 122, 123, 124, 125, + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, -1, -1, -1, -1, 141, + -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, + 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, + -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, + -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - -1, -1, -1, -1, 140, -1, 142, 122, 123, 124, + 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, -1, -1, -1, -1, 140, -1, 142, 122, 123, + 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, -1, -1, -1, -1, 140, -1, 142, 122, + 134, 135, 136, -1, -1, -1, -1, 141, -1, 143, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, -1, -1, -1, -1, 140, -1, 142, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, -1, -1, -1, -1, 140, -1, - 142, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, -1, -1, -1, -1, 140, - -1, 142, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, -1, -1, -1, -1, - 140, -1, 142, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, -1, -1, -1, - -1, 140, -1, 142, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, -1, -1, - -1, -1, 140 + 133, 134, 135, 136, -1, -1, -1, -1, 141, -1, + 143 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 1, 152, 153, 6, 0, 4, 12, 13, 35, + 0, 1, 153, 154, 6, 0, 4, 12, 13, 35, 40, 41, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, - 63, 64, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 76, 77, 78, 79, 80, 81, 84, 85, 90, - 91, 92, 93, 96, 98, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 114, 115, 116, 117, 154, - 156, 157, 175, 179, 184, 187, 188, 189, 190, 191, - 192, 193, 214, 215, 216, 217, 3, 4, 5, 7, - 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 36, 37, 38, 39, 42, 104, - 110, 111, 112, 113, 118, 119, 120, 121, 131, 132, - 136, 138, 139, 141, 143, 145, 146, 148, 173, 174, - 218, 219, 231, 13, 52, 141, 6, 148, 6, 6, - 6, 141, 148, 141, 141, 75, 141, 148, 141, 141, - 75, 148, 141, 141, 56, 52, 52, 52, 52, 49, - 52, 54, 54, 46, 49, 52, 54, 49, 52, 54, - 141, 49, 141, 148, 131, 132, 141, 148, 220, 221, - 220, 148, 46, 49, 52, 148, 220, 4, 50, 59, - 52, 52, 49, 4, 104, 148, 4, 6, 49, 4, - 4, 4, 141, 141, 141, 4, 148, 227, 4, 141, - 141, 6, 143, 4, 4, 5, 148, 5, 148, 141, - 141, 141, 141, 4, 143, 145, 150, 174, 148, 5, - 231, 141, 143, 141, 143, 141, 143, 141, 143, 141, - 143, 141, 143, 141, 143, 141, 143, 141, 143, 141, - 143, 141, 143, 141, 143, 141, 143, 141, 143, 141, - 143, 141, 143, 141, 143, 141, 143, 141, 143, 141, - 143, 141, 143, 141, 141, 141, 141, 7, 141, 4, - 218, 218, 218, 218, 144, 148, 218, 4, 96, 97, - 4, 4, 184, 185, 186, 218, 6, 6, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 140, 6, 6, 218, 5, 218, 218, 4, - 46, 132, 184, 193, 218, 225, 226, 218, 218, 141, - 218, 226, 218, 218, 141, 226, 218, 218, 132, 148, - 218, 223, 225, 141, 148, 141, 141, 5, 223, 224, - 224, 224, 141, 180, 181, 182, 183, 141, 141, 141, - 4, 223, 5, 220, 220, 220, 218, 218, 131, 132, - 148, 148, 220, 148, 148, 148, 131, 132, 141, 186, - 220, 148, 141, 148, 141, 141, 224, 223, 141, 4, - 6, 143, 143, 186, 6, 148, 143, 143, 6, 218, - 218, 218, 145, 218, 148, 99, 218, 218, 218, 6, - 6, 186, 6, 186, 4, 230, 231, 230, 230, 230, - 143, 218, 4, 148, 158, 6, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 230, 230, - 230, 230, 218, 5, 143, 142, 7, 121, 226, 144, - 7, 173, 174, 145, 7, 143, 149, 46, 49, 52, - 54, 179, 6, 218, 218, 218, 218, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, 218, 6, 142, - 147, 147, 142, 143, 148, 218, 225, 8, 133, 147, - 149, 142, 142, 218, 142, 149, 142, 142, 218, 149, - 142, 142, 148, 149, 226, 133, 7, 218, 218, 218, - 218, 7, 7, 212, 212, 218, 141, 141, 141, 141, - 218, 218, 218, 142, 6, 147, 147, 147, 147, 220, - 220, 185, 185, 147, 218, 218, 218, 218, 197, 147, - 186, 218, 218, 218, 218, 7, 213, 7, 218, 6, - 218, 218, 149, 226, 218, 218, 142, 142, 142, 96, - 147, 186, 148, 8, 142, 144, 149, 149, 143, 145, - 142, 142, 142, 142, 218, 144, 174, 218, 4, 86, - 87, 88, 89, 149, 161, 165, 168, 170, 171, 142, + 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 77, 78, 79, 80, 81, 82, 85, 86, + 91, 92, 93, 94, 97, 99, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 115, 116, 117, 118, + 155, 157, 158, 176, 180, 185, 188, 189, 190, 191, + 192, 193, 194, 215, 216, 217, 218, 219, 3, 4, + 5, 7, 9, 10, 11, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, + 42, 105, 111, 112, 113, 114, 119, 120, 121, 122, + 132, 133, 137, 139, 140, 142, 144, 146, 147, 149, + 174, 175, 220, 221, 233, 13, 52, 142, 6, 149, + 6, 6, 6, 142, 149, 142, 142, 76, 142, 149, + 142, 142, 76, 149, 142, 142, 56, 52, 52, 52, + 52, 49, 52, 54, 54, 46, 49, 52, 54, 49, + 52, 54, 49, 52, 142, 49, 142, 149, 132, 133, + 142, 149, 222, 223, 222, 149, 46, 49, 52, 149, + 222, 4, 50, 59, 52, 52, 49, 4, 105, 149, + 4, 6, 49, 4, 4, 4, 142, 142, 142, 4, + 149, 229, 4, 142, 142, 6, 144, 4, 4, 5, + 149, 5, 149, 142, 142, 142, 142, 4, 144, 146, + 151, 175, 149, 5, 233, 142, 144, 142, 144, 142, + 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, 144, 142, - 144, 147, 147, 142, 144, 142, 144, 142, 144, 142, - 144, 142, 144, 142, 144, 147, 147, 147, 147, 147, - 147, 142, 147, 147, 142, 142, 6, 147, 218, 223, - 223, 149, 7, 145, 173, 174, 231, 218, 6, 4, - 4, 148, 228, 144, 148, 148, 148, 148, 8, 6, - 128, 155, 226, 218, 7, 144, 148, 218, 218, 218, - 225, 218, 225, 99, 7, 7, 142, 7, 99, 7, - 7, 142, 99, 7, 7, 226, 149, 148, 218, 142, - 149, 142, 142, 218, 223, 4, 211, 6, 142, 176, - 218, 231, 176, 176, 176, 142, 142, 142, 145, 223, - 220, 218, 218, 149, 149, 218, 147, 147, 147, 76, - 82, 83, 207, 208, 220, 149, 194, 142, 149, 142, - 142, 218, 6, 218, 142, 144, 144, 149, 144, 144, - 7, 7, 7, 145, 218, 149, 218, 218, 7, 145, - 218, 4, 7, 7, 7, 7, 144, 145, 174, 230, - 149, 162, 141, 141, 148, 172, 6, 218, 218, 218, - 218, 218, 218, 218, 218, 226, 230, 218, 144, 6, - 6, 144, 4, 96, 97, 218, 6, 6, 6, 7, - 143, 227, 229, 6, 226, 226, 226, 226, 218, 128, - 230, 142, 147, 220, 226, 149, 8, 52, 223, 223, - 7, 223, 52, 54, 223, 223, 7, 54, 223, 223, - 149, 226, 6, 7, 7, 7, 7, 65, 210, 6, - 7, 142, 142, 142, 142, 7, 7, 7, 4, 147, - 147, 147, 147, 149, 220, 220, 220, 6, 148, 141, - 149, 208, 147, 207, 7, 6, 7, 7, 6, 148, - 6, 6, 52, 6, 6, 223, 223, 223, 4, 147, - 8, 8, 142, 4, 4, 144, 148, 148, 148, 148, - 6, 4, 6, 141, 218, 218, 222, 223, 148, 142, 144, 142, 144, 142, 144, 142, 144, 142, 142, 142, - 173, 7, 173, 174, 145, 7, 6, 227, 218, 147, - 149, 149, 149, 149, 149, 6, 6, 155, 218, 6, - 149, 218, 148, 59, 178, 178, 223, 6, 148, 148, - 6, 6, 223, 148, 6, 6, 149, 5, 223, 223, - 223, 4, 6, 223, 7, 7, 7, 7, 223, 223, - 223, 6, 7, 5, 218, 218, 218, 148, 147, 149, - 147, 149, 147, 149, 218, 223, 218, 218, 220, 149, - 5, 148, 223, 148, 148, 223, 226, 148, 6, 6, - 95, 218, 218, 218, 6, 7, 145, 223, 223, 223, - 223, 174, 159, 218, 147, 147, 147, 149, 160, 218, - 223, 231, 218, 6, 4, 228, 6, 144, 227, 6, - 6, 6, 6, 230, 147, 144, 218, 220, 6, 6, - 6, 218, 218, 6, 218, 5, 6, 6, 99, 177, - 218, 6, 223, 223, 223, 223, 6, 4, 209, 6, - 218, 231, 142, 149, 142, 147, 149, 185, 220, 6, - 198, 220, 6, 199, 220, 6, 200, 149, 147, 142, - 149, 147, 6, 132, 220, 6, 220, 220, 6, 149, - 218, 223, 147, 149, 8, 149, 142, 148, 218, 231, - 4, 147, 147, 147, 147, 142, 147, 218, 218, 223, - 148, 147, 149, 6, 6, 6, 7, 6, 145, 6, - 218, 149, 149, 149, 149, 5, 50, 6, 6, 6, - 6, 6, 148, 6, 6, 6, 6, 148, 218, 149, - 147, 148, 147, 148, 147, 148, 6, 223, 7, 148, - 218, 147, 147, 147, 6, 149, 94, 218, 218, 226, - 6, 6, 223, 223, 223, 223, 163, 218, 147, 147, - 222, 218, 6, 227, 97, 147, 6, 6, 6, 6, - 6, 148, 222, 185, 147, 149, 218, 220, 207, 218, - 220, 207, 218, 220, 207, 147, 149, 223, 186, 149, - 220, 226, 220, 218, 149, 149, 149, 149, 149, 149, - 149, 148, 218, 218, 149, 6, 218, 218, 149, 149, - 218, 149, 147, 149, 149, 147, 149, 149, 147, 149, - 223, 6, 65, 149, 195, 148, 147, 149, 147, 6, - 6, 6, 6, 6, 6, 160, 142, 147, 6, 148, - 147, 149, 4, 209, 149, 6, 201, 218, 6, 6, - 202, 218, 6, 6, 203, 218, 6, 149, 218, 207, - 186, 226, 6, 220, 226, 149, 166, 218, 222, 218, - 6, 148, 149, 148, 149, 148, 149, 6, 6, 149, - 149, 196, 149, 147, 149, 6, 148, 142, 149, 149, - 207, 6, 204, 207, 6, 205, 207, 6, 206, 207, - 6, 226, 6, 164, 230, 169, 148, 6, 149, 148, - 149, 148, 149, 148, 149, 149, 147, 149, 148, 222, - 6, 207, 6, 207, 6, 207, 6, 230, 6, 167, - 230, 149, 149, 149, 149, 147, 149, 6, 6, 6, - 6, 230, 6 + 142, 7, 142, 4, 220, 220, 220, 220, 145, 149, + 220, 4, 97, 98, 4, 4, 185, 186, 187, 220, + 6, 6, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 141, 6, 6, 220, + 5, 220, 220, 4, 46, 133, 185, 194, 220, 227, + 228, 220, 220, 142, 220, 228, 220, 220, 142, 228, + 220, 220, 133, 149, 220, 225, 227, 142, 149, 142, + 142, 5, 225, 226, 226, 226, 142, 181, 182, 183, + 184, 142, 142, 142, 225, 225, 4, 225, 5, 222, + 222, 222, 220, 220, 132, 133, 149, 149, 222, 149, + 149, 149, 132, 133, 142, 187, 222, 149, 142, 149, + 142, 142, 226, 225, 142, 4, 6, 144, 144, 187, + 6, 149, 144, 144, 6, 220, 220, 220, 146, 220, + 149, 100, 220, 220, 220, 6, 6, 187, 6, 187, + 4, 232, 233, 232, 232, 232, 144, 220, 4, 149, + 159, 6, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 232, 232, 232, 232, 220, 5, + 144, 143, 7, 122, 228, 145, 7, 174, 175, 146, + 7, 144, 150, 46, 49, 52, 54, 180, 6, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 6, 143, 148, 148, 143, 144, + 149, 220, 227, 8, 134, 148, 150, 143, 143, 220, + 143, 150, 143, 143, 220, 150, 143, 143, 149, 150, + 228, 134, 7, 220, 220, 220, 220, 7, 7, 213, + 213, 220, 142, 142, 142, 142, 220, 220, 220, 7, + 7, 143, 6, 148, 148, 148, 148, 222, 222, 186, + 186, 148, 220, 220, 220, 220, 198, 148, 187, 220, + 220, 220, 220, 7, 214, 7, 220, 6, 220, 220, + 150, 228, 220, 220, 143, 143, 143, 97, 148, 187, + 149, 8, 143, 145, 150, 150, 144, 146, 143, 143, + 143, 143, 220, 145, 175, 220, 4, 87, 88, 89, + 90, 150, 162, 166, 169, 171, 172, 143, 145, 143, + 145, 143, 145, 143, 145, 143, 145, 143, 145, 143, + 145, 143, 145, 143, 145, 143, 145, 143, 145, 148, + 148, 143, 145, 143, 145, 143, 145, 143, 145, 143, + 145, 143, 145, 148, 148, 148, 148, 148, 148, 143, + 148, 148, 143, 143, 6, 148, 220, 225, 225, 150, + 7, 146, 174, 175, 233, 220, 6, 4, 4, 149, + 230, 145, 149, 149, 149, 149, 8, 6, 129, 156, + 228, 220, 7, 145, 149, 220, 220, 220, 227, 220, + 227, 100, 7, 7, 143, 7, 100, 7, 7, 143, + 100, 7, 7, 228, 150, 149, 220, 143, 150, 143, + 143, 220, 225, 4, 212, 6, 143, 177, 220, 233, + 177, 177, 177, 143, 143, 143, 225, 225, 146, 225, + 222, 220, 220, 150, 150, 220, 148, 148, 148, 77, + 83, 84, 208, 209, 222, 150, 195, 143, 150, 143, + 143, 220, 6, 220, 143, 145, 145, 150, 145, 145, + 7, 7, 7, 146, 220, 150, 220, 220, 7, 146, + 220, 4, 7, 7, 7, 7, 145, 146, 175, 232, + 150, 163, 142, 142, 149, 173, 6, 220, 220, 220, + 220, 220, 220, 220, 220, 228, 232, 220, 145, 6, + 6, 145, 4, 97, 98, 220, 6, 6, 6, 7, + 144, 229, 231, 6, 228, 228, 228, 228, 220, 129, + 232, 143, 148, 222, 228, 150, 8, 52, 225, 225, + 7, 225, 52, 54, 225, 225, 7, 54, 225, 225, + 150, 228, 6, 7, 7, 7, 7, 66, 211, 6, + 7, 143, 143, 143, 143, 7, 7, 7, 6, 6, + 4, 148, 148, 148, 148, 150, 222, 222, 222, 6, + 149, 142, 150, 209, 148, 208, 7, 6, 7, 7, + 6, 149, 6, 6, 52, 6, 6, 225, 225, 225, + 4, 148, 8, 8, 143, 4, 4, 145, 149, 149, + 149, 149, 6, 4, 6, 142, 220, 220, 224, 225, + 149, 143, 145, 143, 145, 143, 145, 143, 145, 143, + 143, 143, 174, 7, 174, 175, 146, 7, 6, 229, + 220, 148, 150, 150, 150, 150, 150, 6, 6, 156, + 220, 6, 150, 220, 149, 59, 179, 179, 225, 6, + 149, 149, 6, 6, 225, 149, 6, 6, 150, 5, + 225, 225, 225, 4, 6, 225, 7, 7, 7, 7, + 225, 225, 225, 6, 7, 5, 220, 220, 220, 149, + 148, 150, 148, 150, 148, 150, 220, 225, 220, 220, + 222, 150, 5, 149, 225, 149, 149, 225, 228, 149, + 6, 6, 96, 220, 220, 220, 6, 7, 146, 225, + 225, 225, 225, 175, 160, 220, 148, 148, 148, 150, + 161, 220, 225, 233, 220, 6, 4, 230, 6, 145, + 229, 6, 6, 6, 6, 232, 148, 145, 220, 222, + 6, 6, 6, 220, 220, 6, 220, 5, 6, 6, + 100, 178, 220, 6, 225, 225, 225, 225, 6, 4, + 210, 6, 220, 233, 143, 150, 143, 148, 150, 186, + 222, 6, 199, 222, 6, 200, 222, 6, 201, 150, + 148, 143, 150, 148, 6, 133, 222, 6, 222, 222, + 6, 150, 220, 225, 148, 150, 8, 150, 143, 149, + 220, 233, 4, 148, 148, 148, 148, 143, 148, 220, + 220, 225, 149, 148, 150, 6, 6, 6, 7, 6, + 146, 6, 220, 150, 150, 150, 150, 5, 50, 6, + 6, 6, 6, 6, 149, 6, 6, 6, 6, 149, + 220, 150, 148, 149, 148, 149, 148, 149, 6, 225, + 7, 149, 220, 148, 148, 148, 6, 150, 95, 220, + 220, 228, 6, 6, 225, 225, 225, 225, 164, 220, + 148, 148, 224, 220, 6, 229, 98, 148, 6, 6, + 6, 6, 6, 149, 224, 186, 148, 150, 220, 222, + 208, 220, 222, 208, 220, 222, 208, 148, 150, 225, + 187, 150, 222, 228, 222, 220, 150, 150, 150, 150, + 150, 150, 150, 149, 220, 220, 150, 6, 220, 220, + 150, 150, 220, 150, 148, 150, 150, 148, 150, 150, + 148, 150, 225, 6, 66, 150, 196, 149, 148, 150, + 148, 6, 6, 6, 6, 6, 6, 161, 143, 148, + 6, 149, 148, 150, 4, 210, 150, 6, 202, 220, + 6, 6, 203, 220, 6, 6, 204, 220, 6, 150, + 220, 208, 187, 228, 6, 222, 228, 150, 167, 220, + 224, 220, 6, 149, 150, 149, 150, 149, 150, 6, + 6, 150, 150, 197, 150, 148, 150, 6, 149, 143, + 150, 150, 208, 6, 205, 208, 6, 206, 208, 6, + 207, 208, 6, 228, 6, 165, 232, 170, 149, 6, + 150, 149, 150, 149, 150, 149, 150, 150, 148, 150, + 149, 224, 6, 208, 6, 208, 6, 208, 6, 232, + 6, 168, 232, 150, 150, 150, 150, 148, 150, 6, + 6, 6, 6, 232, 6 }; #define yyerrok (yyerrstatus = 0) @@ -3949,29 +3958,34 @@ yyreduce: break; case 22: -#line 188 "Gmsh.y" +#line 184 "Gmsh.y" + { return 1; ;} + break; + + case 23: +#line 189 "Gmsh.y" { (yyval.c) = (char*)"w"; ;} break; - case 23: -#line 192 "Gmsh.y" + case 24: +#line 193 "Gmsh.y" { (yyval.c) = (char*)"a"; ;} break; - case 24: -#line 199 "Gmsh.y" + case 25: +#line 200 "Gmsh.y" { Msg::Direct((yyvsp[(3) - (5)].c)); Free((yyvsp[(3) - (5)].c)); ;} break; - case 25: -#line 204 "Gmsh.y" + case 26: +#line 205 "Gmsh.y" { std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(6) - (7)].c)); FILE *fp = fopen(tmp.c_str(), (yyvsp[(5) - (7)].c)); @@ -3987,8 +4001,8 @@ yyreduce: ;} break; - case 26: -#line 218 "Gmsh.y" + case 27: +#line 219 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble((yyvsp[(3) - (7)].c), (yyvsp[(5) - (7)].l), tmpstring); @@ -4003,8 +4017,8 @@ yyreduce: ;} break; - case 27: -#line 231 "Gmsh.y" + case 28: +#line 232 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble((yyvsp[(3) - (9)].c), (yyvsp[(5) - (9)].l), tmpstring); @@ -4029,8 +4043,8 @@ yyreduce: ;} break; - case 28: -#line 259 "Gmsh.y" + case 29: +#line 260 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(1) - (6)].c), "View") && ViewData->finalize()){ @@ -4046,8 +4060,8 @@ yyreduce: ;} break; - case 29: -#line 273 "Gmsh.y" + case 30: +#line 274 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -4060,8 +4074,8 @@ yyreduce: ;} break; - case 30: -#line 284 "Gmsh.y" + case 31: +#line 285 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -4074,8 +4088,8 @@ yyreduce: ;} break; - case 31: -#line 298 "Gmsh.y" + case 32: +#line 299 "Gmsh.y" { #if defined(HAVE_POST) ViewData = new PViewDataList(); @@ -4083,28 +4097,28 @@ yyreduce: ;} break; - case 37: -#line 312 "Gmsh.y" + case 38: +#line 313 "Gmsh.y" { ViewCoord.push_back((yyvsp[(1) - (1)].d)); ;} break; - case 38: -#line 314 "Gmsh.y" + case 39: +#line 315 "Gmsh.y" { ViewCoord.push_back((yyvsp[(3) - (3)].d)); ;} break; - case 39: -#line 319 "Gmsh.y" + case 40: +#line 320 "Gmsh.y" { if(ViewValueList) ViewValueList->push_back((yyvsp[(1) - (1)].d)); ;} break; - case 40: -#line 321 "Gmsh.y" + case 41: +#line 322 "Gmsh.y" { if(ViewValueList) ViewValueList->push_back((yyvsp[(3) - (3)].d)); ;} break; - case 41: -#line 326 "Gmsh.y" + case 42: +#line 327 "Gmsh.y" { #if defined(HAVE_POST) if(!strncmp((yyvsp[(1) - (1)].c), "SP", 2)){ @@ -4210,8 +4224,8 @@ yyreduce: ;} break; - case 42: -#line 430 "Gmsh.y" + case 43: +#line 431 "Gmsh.y" { #if defined(HAVE_POST) if(ViewValueList){ @@ -4223,8 +4237,8 @@ yyreduce: ;} break; - case 43: -#line 440 "Gmsh.y" + case 44: +#line 441 "Gmsh.y" { #if defined(HAVE_POST) if(ViewValueList) (*ViewNumList)++; @@ -4232,8 +4246,8 @@ yyreduce: ;} break; - case 44: -#line 449 "Gmsh.y" + case 45: +#line 450 "Gmsh.y" { #if defined(HAVE_POST) for(int i = 0; i < (int)strlen((yyvsp[(1) - (1)].c)) + 1; i++) ViewData->T2C.push_back((yyvsp[(1) - (1)].c)[i]); @@ -4242,8 +4256,8 @@ yyreduce: ;} break; - case 45: -#line 456 "Gmsh.y" + case 46: +#line 457 "Gmsh.y" { #if defined(HAVE_POST) for(int i = 0; i < (int)strlen((yyvsp[(3) - (3)].c)) + 1; i++) ViewData->T2C.push_back((yyvsp[(3) - (3)].c)[i]); @@ -4252,8 +4266,8 @@ yyreduce: ;} break; - case 46: -#line 466 "Gmsh.y" + case 47: +#line 467 "Gmsh.y" { #if defined(HAVE_POST) ViewData->T2D.push_back((yyvsp[(3) - (8)].d)); @@ -4264,8 +4278,8 @@ yyreduce: ;} break; - case 47: -#line 475 "Gmsh.y" + case 48: +#line 476 "Gmsh.y" { #if defined(HAVE_POST) ViewData->NbT2++; @@ -4273,8 +4287,8 @@ yyreduce: ;} break; - case 48: -#line 484 "Gmsh.y" + case 49: +#line 485 "Gmsh.y" { #if defined(HAVE_POST) for(int i = 0; i < (int)strlen((yyvsp[(1) - (1)].c)) + 1; i++) ViewData->T3C.push_back((yyvsp[(1) - (1)].c)[i]); @@ -4283,8 +4297,8 @@ yyreduce: ;} break; - case 49: -#line 491 "Gmsh.y" + case 50: +#line 492 "Gmsh.y" { #if defined(HAVE_POST) for(int i = 0; i < (int)strlen((yyvsp[(3) - (3)].c)) + 1; i++) ViewData->T3C.push_back((yyvsp[(3) - (3)].c)[i]); @@ -4293,8 +4307,8 @@ yyreduce: ;} break; - case 50: -#line 501 "Gmsh.y" + case 51: +#line 502 "Gmsh.y" { #if defined(HAVE_POST) ViewData->T3D.push_back((yyvsp[(3) - (10)].d)); ViewData->T3D.push_back((yyvsp[(5) - (10)].d)); @@ -4304,8 +4318,8 @@ yyreduce: ;} break; - case 51: -#line 509 "Gmsh.y" + case 52: +#line 510 "Gmsh.y" { #if defined(HAVE_POST) ViewData->NbT3++; @@ -4313,8 +4327,8 @@ yyreduce: ;} break; - case 52: -#line 519 "Gmsh.y" + case 53: +#line 520 "Gmsh.y" { #if defined(HAVE_POST) int type = @@ -4332,8 +4346,8 @@ yyreduce: ;} break; - case 53: -#line 538 "Gmsh.y" + case 54: +#line 539 "Gmsh.y" { #if defined(HAVE_POST) int type = @@ -4351,8 +4365,8 @@ yyreduce: ;} break; - case 54: -#line 557 "Gmsh.y" + case 55: +#line 558 "Gmsh.y" { #if defined(HAVE_POST) ViewValueList = &ViewData->Time; @@ -4360,49 +4374,49 @@ yyreduce: ;} break; - case 55: -#line 563 "Gmsh.y" + case 56: +#line 564 "Gmsh.y" { ;} break; - case 56: -#line 570 "Gmsh.y" - { (yyval.i) = 0; ;} - break; - case 57: #line 571 "Gmsh.y" - { (yyval.i) = 1; ;} + { (yyval.i) = 0; ;} break; case 58: #line 572 "Gmsh.y" - { (yyval.i) = 2; ;} + { (yyval.i) = 1; ;} break; case 59: #line 573 "Gmsh.y" - { (yyval.i) = 3; ;} + { (yyval.i) = 2; ;} break; case 60: #line 574 "Gmsh.y" - { (yyval.i) = 4; ;} + { (yyval.i) = 3; ;} break; case 61: -#line 578 "Gmsh.y" - { (yyval.i) = 1; ;} +#line 575 "Gmsh.y" + { (yyval.i) = 4; ;} break; case 62: #line 579 "Gmsh.y" - { (yyval.i) = -1; ;} + { (yyval.i) = 1; ;} break; case 63: -#line 587 "Gmsh.y" +#line 580 "Gmsh.y" + { (yyval.i) = -1; ;} + break; + + case 64: +#line 588 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ if(!(yyvsp[(2) - (4)].i)) @@ -4426,8 +4440,8 @@ yyreduce: ;} break; - case 64: -#line 609 "Gmsh.y" + case 65: +#line 610 "Gmsh.y" { int index = (int)(yyvsp[(3) - (7)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (7)].c))){ @@ -4456,8 +4470,8 @@ yyreduce: ;} break; - case 65: -#line 636 "Gmsh.y" + case 66: +#line 637 "Gmsh.y" { if(List_Nbr((yyvsp[(4) - (9)].l)) != List_Nbr((yyvsp[(8) - (9)].l))){ yymsg(0, "Incompatible array dimensions in affectation"); @@ -4499,8 +4513,8 @@ yyreduce: ;} break; - case 66: -#line 676 "Gmsh.y" + case 67: +#line 677 "Gmsh.y" { if(gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) gmsh_yysymbols[(yyvsp[(1) - (6)].c)].clear(); @@ -4512,8 +4526,8 @@ yyreduce: ;} break; - case 67: -#line 686 "Gmsh.y" + case 68: +#line 687 "Gmsh.y" { // appends to the list for(int i = 0; i < List_Nbr((yyvsp[(5) - (6)].l)); i++) @@ -4523,8 +4537,8 @@ yyreduce: ;} break; - case 68: -#line 694 "Gmsh.y" + case 69: +#line 695 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (3)].c)); @@ -4534,8 +4548,8 @@ yyreduce: ;} break; - case 69: -#line 702 "Gmsh.y" + case 70: +#line 703 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (6)].c)); @@ -4549,8 +4563,8 @@ yyreduce: ;} break; - case 70: -#line 714 "Gmsh.y" + case 71: +#line 715 "Gmsh.y" { gmsh_yystringsymbols[(yyvsp[(1) - (4)].c)] = std::string((yyvsp[(3) - (4)].c)); Free((yyvsp[(1) - (4)].c)); @@ -4558,8 +4572,8 @@ yyreduce: ;} break; - case 71: -#line 723 "Gmsh.y" + case 72: +#line 724 "Gmsh.y" { std::string tmp((yyvsp[(5) - (6)].c)); StringOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), tmp); @@ -4567,8 +4581,8 @@ yyreduce: ;} break; - case 72: -#line 729 "Gmsh.y" + case 73: +#line 730 "Gmsh.y" { std::string tmp((yyvsp[(8) - (9)].c)); StringOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), tmp); @@ -4576,8 +4590,8 @@ yyreduce: ;} break; - case 73: -#line 738 "Gmsh.y" + case 74: +#line 739 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), 0, (yyvsp[(3) - (6)].c), d)){ @@ -4597,8 +4611,8 @@ yyreduce: ;} break; - case 74: -#line 756 "Gmsh.y" + case 75: +#line 757 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (9)].c), (int)(yyvsp[(3) - (9)].d), (yyvsp[(6) - (9)].c), d)){ @@ -4618,8 +4632,8 @@ yyreduce: ;} break; - case 75: -#line 774 "Gmsh.y" + case 76: +#line 775 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(3) - (5)].c), d)){ @@ -4630,8 +4644,8 @@ yyreduce: ;} break; - case 76: -#line 783 "Gmsh.y" + case 77: +#line 784 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (8)].c), (int)(yyvsp[(3) - (8)].d), (yyvsp[(6) - (8)].c), d)){ @@ -4642,24 +4656,24 @@ yyreduce: ;} break; - case 77: -#line 795 "Gmsh.y" + case 78: +#line 796 "Gmsh.y" { ColorOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (8)].c), 0, (yyvsp[(5) - (8)].c), (yyvsp[(7) - (8)].u)); Free((yyvsp[(1) - (8)].c)); Free((yyvsp[(5) - (8)].c)); ;} break; - case 78: -#line 800 "Gmsh.y" + case 79: +#line 801 "Gmsh.y" { ColorOption(GMSH_SET|GMSH_GUI, (yyvsp[(1) - (11)].c), (int)(yyvsp[(3) - (11)].d), (yyvsp[(8) - (11)].c), (yyvsp[(10) - (11)].u)); Free((yyvsp[(1) - (11)].c)); Free((yyvsp[(8) - (11)].c)); ;} break; - case 79: -#line 808 "Gmsh.y" + case 80: +#line 809 "Gmsh.y" { GmshColorTable *ct = GetColorTable(0); if(!ct) @@ -4681,8 +4695,8 @@ yyreduce: ;} break; - case 80: -#line 828 "Gmsh.y" + case 81: +#line 829 "Gmsh.y" { GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (9)].d)); if(!ct) @@ -4704,8 +4718,8 @@ yyreduce: ;} break; - case 81: -#line 851 "Gmsh.y" + case 82: +#line 852 "Gmsh.y" { #if defined(HAVE_MESH) if(!strcmp((yyvsp[(1) - (5)].c),"Background")) @@ -4716,8 +4730,8 @@ yyreduce: ;} break; - case 82: -#line 860 "Gmsh.y" + case 83: +#line 861 "Gmsh.y" { #if defined(HAVE_MESH) if(!GModel::current()->getFields()->newField((int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c))) @@ -4727,8 +4741,8 @@ yyreduce: ;} break; - case 83: -#line 868 "Gmsh.y" + case 84: +#line 869 "Gmsh.y" { #if defined(HAVE_MESH) Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (9)].d)); @@ -4752,8 +4766,8 @@ yyreduce: ;} break; - case 84: -#line 890 "Gmsh.y" + case 85: +#line 891 "Gmsh.y" { #if defined(HAVE_MESH) Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (9)].d)); @@ -4778,8 +4792,8 @@ yyreduce: ;} break; - case 85: -#line 913 "Gmsh.y" + case 86: +#line 914 "Gmsh.y" { #if defined(HAVE_MESH) Field *field = GModel::current()->getFields()->get((int)(yyvsp[(3) - (11)].d)); @@ -4806,8 +4820,8 @@ yyreduce: ;} break; - case 86: -#line 941 "Gmsh.y" + case 87: +#line 942 "Gmsh.y" { #if defined(HAVE_POST) try { @@ -4821,8 +4835,8 @@ yyreduce: ;} break; - case 87: -#line 953 "Gmsh.y" + case 88: +#line 954 "Gmsh.y" { #if defined(HAVE_POST) try { @@ -4836,15 +4850,15 @@ yyreduce: ;} break; - case 88: -#line 970 "Gmsh.y" + case 89: +#line 971 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(1) - (1)].d); ;} break; - case 89: -#line 974 "Gmsh.y" + case 90: +#line 975 "Gmsh.y" { (yyval.i) = GModel::current()->setPhysicalName (std::string((yyvsp[(1) - (1)].c)), curPhysDim, @@ -4853,15 +4867,15 @@ yyreduce: ;} break; - case 90: -#line 984 "Gmsh.y" + case 91: +#line 985 "Gmsh.y" { (yyval.l) = 0; ;} break; - case 91: -#line 988 "Gmsh.y" + case 92: +#line 989 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(Vertex*)); Vertex *v = FindPoint((int)(yyvsp[(4) - (5)].d)); @@ -4873,22 +4887,22 @@ yyreduce: ;} break; - case 92: -#line 1000 "Gmsh.y" + case 93: +#line 1001 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = 0.; ;} break; - case 93: -#line 1004 "Gmsh.y" + case 94: +#line 1005 "Gmsh.y" { for(int i = 0; i < 4; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; - case 94: -#line 1014 "Gmsh.y" + case 95: +#line 1015 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindPoint(num)){ @@ -4913,15 +4927,15 @@ yyreduce: ;} break; - case 95: -#line 1037 "Gmsh.y" + case 96: +#line 1038 "Gmsh.y" { curPhysDim = 0; ;} break; - case 96: -#line 1041 "Gmsh.y" + case 97: +#line 1042 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_POINT)){ @@ -4939,8 +4953,8 @@ yyreduce: ;} break; - case 97: -#line 1057 "Gmsh.y" + case 98: +#line 1058 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ double d; @@ -4961,8 +4975,8 @@ yyreduce: ;} break; - case 98: -#line 1079 "Gmsh.y" + case 99: +#line 1080 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -4982,8 +4996,8 @@ yyreduce: ;} break; - case 99: -#line 1097 "Gmsh.y" + case 100: +#line 1098 "Gmsh.y" { for (int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ double dnum; @@ -5006,8 +5020,8 @@ yyreduce: ;} break; - case 100: -#line 1119 "Gmsh.y" + case 101: +#line 1120 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -5027,8 +5041,8 @@ yyreduce: ;} break; - case 101: -#line 1137 "Gmsh.y" + case 102: +#line 1138 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); if(FindCurve(num)){ @@ -5060,8 +5074,8 @@ yyreduce: ;} break; - case 102: -#line 1167 "Gmsh.y" + case 103: +#line 1168 "Gmsh.y" { int num = (int)(yyvsp[(3) - (8)].d); if(FindCurve(num)){ @@ -5093,8 +5107,8 @@ yyreduce: ;} break; - case 103: -#line 1197 "Gmsh.y" + case 104: +#line 1198 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -5114,8 +5128,8 @@ yyreduce: ;} break; - case 104: -#line 1215 "Gmsh.y" + case 105: +#line 1216 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindCurve(num)){ @@ -5135,8 +5149,8 @@ yyreduce: ;} break; - case 105: -#line 1233 "Gmsh.y" + case 106: +#line 1234 "Gmsh.y" { int num = (int)(yyvsp[(3) - (11)].d); if(List_Nbr((yyvsp[(6) - (11)].l)) + (int)(yyvsp[(10) - (11)].d) + 1 != List_Nbr((yyvsp[(8) - (11)].l))){ @@ -5164,8 +5178,8 @@ yyreduce: ;} break; - case 106: -#line 1259 "Gmsh.y" + case 107: +#line 1260 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindEdgeLoop(num)){ @@ -5184,8 +5198,8 @@ yyreduce: ;} break; - case 107: -#line 1276 "Gmsh.y" + case 108: +#line 1277 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindCurve(num)){ @@ -5205,15 +5219,15 @@ yyreduce: ;} break; - case 108: -#line 1294 "Gmsh.y" + case 109: +#line 1295 "Gmsh.y" { curPhysDim = 1; ;} break; - case 109: -#line 1298 "Gmsh.y" + case 110: +#line 1299 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE)){ @@ -5231,8 +5245,8 @@ yyreduce: ;} break; - case 110: -#line 1317 "Gmsh.y" + case 111: +#line 1318 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurface(num)){ @@ -5252,8 +5266,8 @@ yyreduce: ;} break; - case 111: -#line 1335 "Gmsh.y" + case 112: +#line 1336 "Gmsh.y" { int num = (int)(yyvsp[(4) - (9)].d), type = 0; if(FindSurface(num)){ @@ -5294,8 +5308,8 @@ yyreduce: ;} break; - case 112: -#line 1374 "Gmsh.y" + case 113: +#line 1375 "Gmsh.y" { myGmshSurface = 0; (yyval.s).Type = 0; @@ -5303,8 +5317,8 @@ yyreduce: ;} break; - case 113: -#line 1380 "Gmsh.y" + case 114: +#line 1381 "Gmsh.y" { myGmshSurface = gmshSurface::getSurface((int)(yyvsp[(3) - (4)].d)); (yyval.s).Type = 0; @@ -5312,8 +5326,8 @@ yyreduce: ;} break; - case 114: -#line 1386 "Gmsh.y" + case 115: +#line 1387 "Gmsh.y" { int num = (int)(yyvsp[(4) - (10)].d); myGmshSurface = gmshParametricSurface::NewParametricSurface(num, (yyvsp[(7) - (10)].c), (yyvsp[(8) - (10)].c), (yyvsp[(9) - (10)].c)); @@ -5322,8 +5336,8 @@ yyreduce: ;} break; - case 115: -#line 1393 "Gmsh.y" + case 116: +#line 1394 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){ @@ -5350,8 +5364,8 @@ yyreduce: ;} break; - case 116: -#line 1418 "Gmsh.y" + case 117: +#line 1419 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if (List_Nbr((yyvsp[(6) - (7)].l)) != 2){ @@ -5378,8 +5392,8 @@ yyreduce: ;} break; - case 117: -#line 1443 "Gmsh.y" + case 118: +#line 1444 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindSurfaceLoop(num)){ @@ -5397,8 +5411,8 @@ yyreduce: ;} break; - case 118: -#line 1459 "Gmsh.y" + case 119: +#line 1460 "Gmsh.y" { int num = (int)(yyvsp[(4) - (9)].d); if(FindSurface(num)){ @@ -5418,8 +5432,8 @@ yyreduce: ;} break; - case 119: -#line 1478 "Gmsh.y" + case 120: +#line 1479 "Gmsh.y" { int num = (int)(yyvsp[(4) - (13)].d); if(FindSurface(num)){ @@ -5452,15 +5466,15 @@ yyreduce: ;} break; - case 120: -#line 1509 "Gmsh.y" + case 121: +#line 1510 "Gmsh.y" { curPhysDim = 2; ;} break; - case 121: -#line 1513 "Gmsh.y" + case 122: +#line 1514 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE)){ @@ -5478,8 +5492,8 @@ yyreduce: ;} break; - case 122: -#line 1533 "Gmsh.y" + case 123: +#line 1534 "Gmsh.y" { yymsg(0, "'Complex Volume' command is deprecated: use 'Volume' instead"); int num = (int)(yyvsp[(4) - (8)].d); @@ -5499,8 +5513,8 @@ yyreduce: ;} break; - case 123: -#line 1551 "Gmsh.y" + case 124: +#line 1552 "Gmsh.y" { int num = (int)(yyvsp[(3) - (7)].d); if(FindVolume(num)){ @@ -5519,8 +5533,8 @@ yyreduce: ;} break; - case 124: -#line 1569 "Gmsh.y" + case 125: +#line 1570 "Gmsh.y" { #if defined(HAVE_OCC) std::vector<double> data; @@ -5535,8 +5549,8 @@ yyreduce: ;} break; - case 125: -#line 1582 "Gmsh.y" + case 126: +#line 1583 "Gmsh.y" { int num = (int)(yyvsp[(4) - (8)].d); if(FindVolume(num)){ @@ -5554,15 +5568,15 @@ yyreduce: ;} break; - case 126: -#line 1598 "Gmsh.y" + case 127: +#line 1599 "Gmsh.y" { curPhysDim = 3; ;} break; - case 127: -#line 1602 "Gmsh.y" + case 128: +#line 1603 "Gmsh.y" { int num = (int)(yyvsp[(5) - (9)].i); if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME)){ @@ -5580,40 +5594,40 @@ yyreduce: ;} break; - case 128: -#line 1624 "Gmsh.y" + case 129: +#line 1625 "Gmsh.y" { TranslateShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); ;} break; - case 129: -#line 1629 "Gmsh.y" + case 130: +#line 1630 "Gmsh.y" { RotateShapes((yyvsp[(3) - (11)].v)[0], (yyvsp[(3) - (11)].v)[1], (yyvsp[(3) - (11)].v)[2], (yyvsp[(5) - (11)].v)[0], (yyvsp[(5) - (11)].v)[1], (yyvsp[(5) - (11)].v)[2], (yyvsp[(7) - (11)].d), (yyvsp[(10) - (11)].l)); (yyval.l) = (yyvsp[(10) - (11)].l); ;} break; - case 130: -#line 1634 "Gmsh.y" + case 131: +#line 1635 "Gmsh.y" { SymmetryShapes((yyvsp[(2) - (5)].v)[0], (yyvsp[(2) - (5)].v)[1], (yyvsp[(2) - (5)].v)[2], (yyvsp[(2) - (5)].v)[3], (yyvsp[(4) - (5)].l)); (yyval.l) = (yyvsp[(4) - (5)].l); ;} break; - case 131: -#line 1639 "Gmsh.y" + case 132: +#line 1640 "Gmsh.y" { DilatShapes((yyvsp[(3) - (9)].v)[0], (yyvsp[(3) - (9)].v)[1], (yyvsp[(3) - (9)].v)[2], (yyvsp[(5) - (9)].d), (yyvsp[(8) - (9)].l)); (yyval.l) = (yyvsp[(8) - (9)].l); ;} break; - case 132: -#line 1644 "Gmsh.y" + case 133: +#line 1645 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); if(!strcmp((yyvsp[(1) - (4)].c), "Duplicata")){ @@ -5635,8 +5649,8 @@ yyreduce: ;} break; - case 133: -#line 1664 "Gmsh.y" + case 134: +#line 1665 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); IntersectCurvesWithSurface((yyvsp[(4) - (9)].l), (int)(yyvsp[(8) - (9)].d), (yyval.l)); @@ -5644,8 +5658,8 @@ yyreduce: ;} break; - case 134: -#line 1670 "Gmsh.y" + case 135: +#line 1671 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape*)); List_T *tmp = ListOfDouble2ListOfInt((yyvsp[(7) - (9)].l)); @@ -5655,32 +5669,32 @@ yyreduce: ;} break; - case 135: -#line 1680 "Gmsh.y" - { (yyval.l) = (yyvsp[(1) - (1)].l); ;} - break; - case 136: #line 1681 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; case 137: -#line 1686 "Gmsh.y" +#line 1682 "Gmsh.y" + { (yyval.l) = (yyvsp[(1) - (1)].l); ;} + break; + + case 138: +#line 1687 "Gmsh.y" { (yyval.l) = List_Create(3, 3, sizeof(Shape)); ;} break; - case 138: -#line 1690 "Gmsh.y" + case 139: +#line 1691 "Gmsh.y" { List_Add((yyval.l), &(yyvsp[(2) - (2)].s)); ;} break; - case 139: -#line 1694 "Gmsh.y" + case 140: +#line 1695 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -5705,8 +5719,8 @@ yyreduce: ;} break; - case 140: -#line 1717 "Gmsh.y" + case 141: +#line 1718 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -5731,8 +5745,8 @@ yyreduce: ;} break; - case 141: -#line 1740 "Gmsh.y" + case 142: +#line 1741 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -5757,8 +5771,8 @@ yyreduce: ;} break; - case 142: -#line 1763 "Gmsh.y" + case 143: +#line 1764 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (6)].l)); i++){ double d; @@ -5783,8 +5797,8 @@ yyreduce: ;} break; - case 143: -#line 1791 "Gmsh.y" + case 144: +#line 1792 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(7) - (8)].l)) == 4){ @@ -5807,8 +5821,8 @@ yyreduce: ;} break; - case 144: -#line 1813 "Gmsh.y" + case 145: +#line 1814 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(12) - (14)].l)) == 0){ @@ -5830,8 +5844,8 @@ yyreduce: ;} break; - case 145: -#line 1834 "Gmsh.y" + case 146: +#line 1835 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(14) - (16)].l)) == 0){ @@ -5854,8 +5868,8 @@ yyreduce: ;} break; - case 146: -#line 1855 "Gmsh.y" + case 147: +#line 1856 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(List_Nbr((yyvsp[(10) - (12)].l)) == 1){ @@ -5877,8 +5891,8 @@ yyreduce: ;} break; - case 147: -#line 1875 "Gmsh.y" + case 148: +#line 1876 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (8)].c), "Union")){ @@ -5992,8 +6006,8 @@ yyreduce: ;} break; - case 148: -#line 1987 "Gmsh.y" + case 149: +#line 1988 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (8)].c), "MathEval")){ @@ -6014,8 +6028,8 @@ yyreduce: ;} break; - case 149: -#line 2006 "Gmsh.y" + case 150: +#line 2007 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (6)].c), "CutMesh")){ @@ -6037,8 +6051,8 @@ yyreduce: ;} break; - case 150: -#line 2027 "Gmsh.y" + case 151: +#line 2028 "Gmsh.y" { #if defined(HAVE_DINTEGRATION) if(!strcmp((yyvsp[(2) - (14)].c), "Cylinder") && List_Nbr((yyvsp[(12) - (14)].l)) == 1){ @@ -6143,8 +6157,8 @@ yyreduce: ;} break; - case 151: -#line 2135 "Gmsh.y" + case 152: +#line 2136 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -6155,8 +6169,8 @@ yyreduce: ;} break; - case 152: -#line 2144 "Gmsh.y" + case 153: +#line 2145 "Gmsh.y" { #if defined(HAVE_MESH) GModel::current()->getFields()->deleteField((int)(yyvsp[(4) - (6)].d)); @@ -6164,8 +6178,8 @@ yyreduce: ;} break; - case 153: -#line 2150 "Gmsh.y" + case 154: +#line 2151 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (6)].c), "View")){ @@ -6182,8 +6196,8 @@ yyreduce: ;} break; - case 154: -#line 2165 "Gmsh.y" + case 155: +#line 2166 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Meshes") || !strcmp((yyvsp[(2) - (3)].c), "All")){ ClearProject(); @@ -6213,8 +6227,8 @@ yyreduce: ;} break; - case 155: -#line 2193 "Gmsh.y" + case 156: +#line 2194 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (4)].c), "Empty") && !strcmp((yyvsp[(3) - (4)].c), "Views")){ @@ -6228,8 +6242,8 @@ yyreduce: ;} break; - case 156: -#line 2210 "Gmsh.y" + case 157: +#line 2211 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(4) - (5)].l)); i++){ Shape TheShape; @@ -6240,8 +6254,8 @@ yyreduce: ;} break; - case 157: -#line 2224 "Gmsh.y" + case 158: +#line 2225 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 1); @@ -6249,8 +6263,8 @@ yyreduce: ;} break; - case 158: -#line 2230 "Gmsh.y" + case 159: +#line 2231 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape((yyvsp[(2) - (3)].c), i, 0); @@ -6258,8 +6272,8 @@ yyreduce: ;} break; - case 159: -#line 2236 "Gmsh.y" + case 160: +#line 2237 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -6270,8 +6284,8 @@ yyreduce: ;} break; - case 160: -#line 2245 "Gmsh.y" + case 161: +#line 2246 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (4)].l)); i++){ Shape TheShape; @@ -6282,8 +6296,8 @@ yyreduce: ;} break; - case 161: -#line 2259 "Gmsh.y" + case 162: +#line 2260 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Include")){ std::string tmp = FixRelativePath(gmsh_yyname, (yyvsp[(2) - (3)].c)); @@ -6327,8 +6341,8 @@ yyreduce: ;} break; - case 162: -#line 2301 "Gmsh.y" + case 163: +#line 2302 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(1) - (7)].c), "Save") && !strcmp((yyvsp[(2) - (7)].c), "View")){ @@ -6347,8 +6361,8 @@ yyreduce: ;} break; - case 163: -#line 2318 "Gmsh.y" + case 164: +#line 2319 "Gmsh.y" { #if defined(HAVE_POST) && defined(HAVE_MESH) if(!strcmp((yyvsp[(1) - (7)].c), "Background") && !strcmp((yyvsp[(2) - (7)].c), "Mesh") && !strcmp((yyvsp[(3) - (7)].c), "View")){ @@ -6365,8 +6379,8 @@ yyreduce: ;} break; - case 164: -#line 2333 "Gmsh.y" + case 165: +#line 2334 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (3)].c), "Sleep")){ SleepInSeconds((yyvsp[(2) - (3)].d)); @@ -6387,8 +6401,8 @@ yyreduce: ;} break; - case 165: -#line 2352 "Gmsh.y" + case 166: +#line 2353 "Gmsh.y" { #if defined(HAVE_POST) try { @@ -6402,8 +6416,8 @@ yyreduce: ;} break; - case 166: -#line 2364 "Gmsh.y" + case 167: +#line 2365 "Gmsh.y" { #if defined(HAVE_POST) if(!strcmp((yyvsp[(2) - (3)].c), "ElementsFromAllViews")) @@ -6429,15 +6443,15 @@ yyreduce: ;} break; - case 167: -#line 2388 "Gmsh.y" + case 168: +#line 2389 "Gmsh.y" { exit(0); ;} break; - case 168: -#line 2392 "Gmsh.y" + case 169: +#line 2393 "Gmsh.y" { // FIXME: this is a hack to force a transfer from the old DB to // the new DB. This will become unnecessary if/when we fill the @@ -6446,8 +6460,8 @@ yyreduce: ;} break; - case 169: -#line 2399 "Gmsh.y" + case 170: +#line 2400 "Gmsh.y" { CTX::instance()->forcedBBox = 0; GModel::current()->importGEOInternals(); @@ -6455,16 +6469,16 @@ yyreduce: ;} break; - case 170: -#line 2405 "Gmsh.y" + case 171: +#line 2406 "Gmsh.y" { CTX::instance()->forcedBBox = 1; SetBoundingBox((yyvsp[(3) - (15)].d), (yyvsp[(5) - (15)].d), (yyvsp[(7) - (15)].d), (yyvsp[(9) - (15)].d), (yyvsp[(11) - (15)].d), (yyvsp[(13) - (15)].d)); ;} break; - case 171: -#line 2410 "Gmsh.y" + case 172: +#line 2411 "Gmsh.y" { #if defined(HAVE_OPENGL) drawContext::global()->draw(); @@ -6472,15 +6486,15 @@ yyreduce: ;} break; - case 172: -#line 2416 "Gmsh.y" + case 173: +#line 2417 "Gmsh.y" { GModel::current()->createTopologyFromMesh(); ;} break; - case 173: -#line 2426 "Gmsh.y" + case 174: +#line 2427 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (6)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (6)].d); @@ -6499,8 +6513,8 @@ yyreduce: ;} break; - case 174: -#line 2443 "Gmsh.y" + case 175: +#line 2444 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(3) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(5) - (8)].d); @@ -6519,8 +6533,8 @@ yyreduce: ;} break; - case 175: -#line 2460 "Gmsh.y" + case 176: +#line 2461 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (8)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (8)].d); @@ -6541,8 +6555,8 @@ yyreduce: ;} break; - case 176: -#line 2479 "Gmsh.y" + case 177: +#line 2480 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = (yyvsp[(5) - (10)].d); LoopControlVariablesTab[ImbricatedLoop][1] = (yyvsp[(7) - (10)].d); @@ -6563,8 +6577,8 @@ yyreduce: ;} break; - case 177: -#line 2498 "Gmsh.y" + case 178: +#line 2499 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(0, "Invalid For/EndFor loop"); @@ -6596,8 +6610,8 @@ yyreduce: ;} break; - case 178: -#line 2528 "Gmsh.y" + case 179: +#line 2529 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction ((yyvsp[(2) - (2)].c), gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -6607,8 +6621,8 @@ yyreduce: ;} break; - case 179: -#line 2536 "Gmsh.y" + case 180: +#line 2537 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction (&gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -6616,8 +6630,8 @@ yyreduce: ;} break; - case 180: -#line 2542 "Gmsh.y" + case 181: +#line 2543 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction ((yyvsp[(2) - (3)].c), &gmsh_yyin, gmsh_yyname, gmsh_yylineno)) @@ -6626,21 +6640,21 @@ yyreduce: ;} break; - case 181: -#line 2549 "Gmsh.y" + case 182: +#line 2550 "Gmsh.y" { if(!(yyvsp[(3) - (4)].d)) skip_until("If", "EndIf"); ;} break; - case 182: -#line 2553 "Gmsh.y" + case 183: +#line 2554 "Gmsh.y" { ;} break; - case 183: -#line 2562 "Gmsh.y" + case 184: +#line 2563 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (5)].l), @@ -6650,8 +6664,8 @@ yyreduce: ;} break; - case 184: -#line 2570 "Gmsh.y" + case 185: +#line 2571 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (11)].l), @@ -6661,8 +6675,8 @@ yyreduce: ;} break; - case 185: -#line 2578 "Gmsh.y" + case 186: +#line 2579 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (13)].l), @@ -6672,15 +6686,15 @@ yyreduce: ;} break; - case 186: -#line 2586 "Gmsh.y" + case 187: +#line 2587 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 187: -#line 2590 "Gmsh.y" + case 188: +#line 2591 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, (yyvsp[(4) - (7)].l), @@ -6690,15 +6704,15 @@ yyreduce: ;} break; - case 188: -#line 2598 "Gmsh.y" + case 189: +#line 2599 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 189: -#line 2602 "Gmsh.y" + case 190: +#line 2603 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, (yyvsp[(10) - (13)].l), @@ -6708,15 +6722,15 @@ yyreduce: ;} break; - case 190: -#line 2610 "Gmsh.y" + case 191: +#line 2611 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 191: -#line 2614 "Gmsh.y" + case 192: +#line 2615 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, (yyvsp[(12) - (15)].l), @@ -6726,15 +6740,15 @@ yyreduce: ;} break; - case 192: -#line 2622 "Gmsh.y" + case 193: +#line 2623 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 193: -#line 2626 "Gmsh.y" + case 194: +#line 2627 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(BOUNDARY_LAYER, (yyvsp[(3) - (6)].l), 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., @@ -6743,8 +6757,8 @@ yyreduce: ;} break; - case 194: -#line 2635 "Gmsh.y" + case 195: +#line 2636 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (8)].d), @@ -6753,8 +6767,8 @@ yyreduce: ;} break; - case 195: -#line 2642 "Gmsh.y" + case 196: +#line 2643 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (8)].d), @@ -6763,8 +6777,8 @@ yyreduce: ;} break; - case 196: -#line 2649 "Gmsh.y" + case 197: +#line 2650 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (8)].d), @@ -6773,8 +6787,8 @@ yyreduce: ;} break; - case 197: -#line 2656 "Gmsh.y" + case 198: +#line 2657 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -6783,8 +6797,8 @@ yyreduce: ;} break; - case 198: -#line 2663 "Gmsh.y" + case 199: +#line 2664 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -6793,8 +6807,8 @@ yyreduce: ;} break; - case 199: -#line 2670 "Gmsh.y" + case 200: +#line 2671 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -6803,8 +6817,8 @@ yyreduce: ;} break; - case 200: -#line 2677 "Gmsh.y" + case 201: +#line 2678 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (14)].d), @@ -6813,8 +6827,8 @@ yyreduce: ;} break; - case 201: -#line 2684 "Gmsh.y" + case 202: +#line 2685 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (14)].d), @@ -6823,8 +6837,8 @@ yyreduce: ;} break; - case 202: -#line 2691 "Gmsh.y" + case 203: +#line 2692 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (14)].d), @@ -6833,15 +6847,15 @@ yyreduce: ;} break; - case 203: -#line 2698 "Gmsh.y" + case 204: +#line 2699 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 204: -#line 2702 "Gmsh.y" + case 205: +#line 2703 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)(yyvsp[(4) - (12)].d), @@ -6850,15 +6864,15 @@ yyreduce: ;} break; - case 205: -#line 2709 "Gmsh.y" + case 206: +#line 2710 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 206: -#line 2713 "Gmsh.y" + case 207: +#line 2714 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (12)].d), @@ -6867,15 +6881,15 @@ yyreduce: ;} break; - case 207: -#line 2720 "Gmsh.y" + case 208: +#line 2721 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 208: -#line 2724 "Gmsh.y" + case 209: +#line 2725 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (12)].d), @@ -6884,15 +6898,15 @@ yyreduce: ;} break; - case 209: -#line 2731 "Gmsh.y" + case 210: +#line 2732 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 210: -#line 2735 "Gmsh.y" + case 211: +#line 2736 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)(yyvsp[(4) - (16)].d), @@ -6901,15 +6915,15 @@ yyreduce: ;} break; - case 211: -#line 2742 "Gmsh.y" + case 212: +#line 2743 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 212: -#line 2746 "Gmsh.y" + case 213: +#line 2747 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (16)].d), @@ -6918,15 +6932,15 @@ yyreduce: ;} break; - case 213: -#line 2753 "Gmsh.y" + case 214: +#line 2754 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 214: -#line 2757 "Gmsh.y" + case 215: +#line 2758 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (16)].d), @@ -6935,15 +6949,15 @@ yyreduce: ;} break; - case 215: -#line 2764 "Gmsh.y" + case 216: +#line 2765 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 216: -#line 2768 "Gmsh.y" + case 217: +#line 2769 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)(yyvsp[(4) - (18)].d), @@ -6952,15 +6966,15 @@ yyreduce: ;} break; - case 217: -#line 2775 "Gmsh.y" + case 218: +#line 2776 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 218: -#line 2779 "Gmsh.y" + case 219: +#line 2780 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)(yyvsp[(4) - (18)].d), @@ -6969,15 +6983,15 @@ yyreduce: ;} break; - case 219: -#line 2786 "Gmsh.y" + case 220: +#line 2787 "Gmsh.y" { extr.mesh.ExtrudeMesh = extr.mesh.Recombine = false; ;} break; - case 220: -#line 2790 "Gmsh.y" + case 221: +#line 2791 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)(yyvsp[(4) - (18)].d), @@ -6986,20 +7000,20 @@ yyreduce: ;} break; - case 221: -#line 2801 "Gmsh.y" + case 222: +#line 2802 "Gmsh.y" { ;} break; - case 222: -#line 2804 "Gmsh.y" + case 223: +#line 2805 "Gmsh.y" { ;} break; - case 223: -#line 2810 "Gmsh.y" + case 224: +#line 2811 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = 1; @@ -7010,8 +7024,8 @@ yyreduce: ;} break; - case 224: -#line 2819 "Gmsh.y" + case 225: +#line 2820 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = List_Nbr((yyvsp[(3) - (7)].l)); @@ -7033,8 +7047,8 @@ yyreduce: ;} break; - case 225: -#line 2839 "Gmsh.y" + case 226: +#line 2840 "Gmsh.y" { yymsg(0, "Explicit region numbers in layers are deprecated"); extr.mesh.ExtrudeMesh = true; @@ -7059,15 +7073,15 @@ yyreduce: ;} break; - case 226: -#line 2862 "Gmsh.y" + case 227: +#line 2863 "Gmsh.y" { extr.mesh.Recombine = true; ;} break; - case 227: -#line 2866 "Gmsh.y" + case 228: +#line 2867 "Gmsh.y" { int num = (int)(yyvsp[(3) - (9)].d); if(FindSurface(num)){ @@ -7088,15 +7102,15 @@ yyreduce: ;} break; - case 228: -#line 2889 "Gmsh.y" + case 229: +#line 2890 "Gmsh.y" { (yyval.i) = 1; // harmonic ;} break; - case 229: -#line 2893 "Gmsh.y" + case 230: +#line 2894 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Harmonic")) (yyval.i) = 1; @@ -7110,15 +7124,15 @@ yyreduce: ;} break; - case 230: -#line 2908 "Gmsh.y" + case 231: +#line 2909 "Gmsh.y" { (yyval.v)[0] = (yyval.v)[1] = 1.; ;} break; - case 231: -#line 2912 "Gmsh.y" + case 232: +#line 2913 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Progression") || !strcmp((yyvsp[(2) - (3)].c), "Power")) (yyval.v)[0] = 1.; @@ -7133,15 +7147,15 @@ yyreduce: ;} break; - case 232: -#line 2927 "Gmsh.y" + case 233: +#line 2928 "Gmsh.y" { (yyval.i) = -1; // left ;} break; - case 233: -#line 2931 "Gmsh.y" + case 234: +#line 2932 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "Right")) (yyval.i) = 1; @@ -7153,36 +7167,36 @@ yyreduce: ;} break; - case 234: -#line 2943 "Gmsh.y" + case 235: +#line 2944 "Gmsh.y" { (yyval.l) = List_Create(1, 1, sizeof(double)); ;} break; - case 235: -#line 2947 "Gmsh.y" + case 236: +#line 2948 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); ;} break; - case 236: -#line 2952 "Gmsh.y" + case 237: +#line 2953 "Gmsh.y" { (yyval.i) = 45; ;} break; - case 237: -#line 2956 "Gmsh.y" + case 238: +#line 2957 "Gmsh.y" { (yyval.i) = (int)(yyvsp[(2) - (2)].d); ;} break; - case 238: -#line 2963 "Gmsh.y" + case 239: +#line 2964 "Gmsh.y" { int type = (int)(yyvsp[(6) - (7)].v)[0]; double coef = fabs((yyvsp[(6) - (7)].v)[1]); @@ -7240,8 +7254,8 @@ yyreduce: ;} break; - case 239: -#line 3019 "Gmsh.y" + case 240: +#line 3020 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (6)].l)); if(k != 0 && k != 3 && k != 4){ @@ -7313,16 +7327,16 @@ yyreduce: ;} break; - case 240: -#line 3089 "Gmsh.y" + case 241: +#line 3090 "Gmsh.y" { yymsg(1, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete((yyvsp[(7) - (8)].l)); ;} break; - case 241: -#line 3094 "Gmsh.y" + case 242: +#line 3095 "Gmsh.y" { int k = List_Nbr((yyvsp[(4) - (5)].l)); if(k != 0 && k != 6 && k != 8){ @@ -7391,8 +7405,8 @@ yyreduce: ;} break; - case 242: -#line 3161 "Gmsh.y" + case 243: +#line 3162 "Gmsh.y" { if(!(yyvsp[(3) - (5)].l)){ List_T *tmp = Tree2List(GModel::current()->getGEOInternals()->Surfaces); @@ -7437,8 +7451,8 @@ yyreduce: ;} break; - case 243: -#line 3204 "Gmsh.y" + case 244: +#line 3205 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ double d; @@ -7460,8 +7474,65 @@ yyreduce: ;} break; - case 244: -#line 3230 "Gmsh.y" + case 245: +#line 3229 "Gmsh.y" + { + if (List_Nbr((yyvsp[(3) - (6)].l)) != List_Nbr((yyvsp[(5) - (6)].l))){ + yymsg(0, "Periodic Line : the number of masters (%d) is not equal to the number of slaves(%d)", List_Nbr((yyvsp[(3) - (6)].l)),List_Nbr((yyvsp[(5) - (6)].l))); + } + + for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ + double d_master,d_slave; + List_Read((yyvsp[(3) - (6)].l), i, &d_master); + List_Read((yyvsp[(5) - (6)].l), i, &d_slave); + int j_master = (int)d_master; + int j_slave = (int)d_slave; + Curve *c_slave = FindCurve(abs(j_slave)); + if(c_slave){ + printf("c_slave %d c_master = %d\n",j_master,j_slave); + c_slave->meshMaster = j_master; + } + else{ + GEdge *ge = GModel::current()->getEdgeByTag(abs(j_slave)); + if(ge)ge->setMeshMaster (j_master); + else yymsg(0, "Unknown line %d", j_slave); + } + } + List_Delete((yyvsp[(3) - (6)].l)); + List_Delete((yyvsp[(5) - (6)].l)); + ;} + break; + + case 246: +#line 3255 "Gmsh.y" + { + if (List_Nbr((yyvsp[(3) - (6)].l)) != List_Nbr((yyvsp[(5) - (6)].l))){ + yymsg(0, "Periodic Surface : the number of masters (%d) is not equal to the number of slaves(%d)", List_Nbr((yyvsp[(3) - (6)].l)),List_Nbr((yyvsp[(5) - (6)].l))); + } + + for(int i = 0; i < List_Nbr((yyvsp[(3) - (6)].l)); i++){ + double d_master,d_slave; + List_Read((yyvsp[(3) - (6)].l), i, &d_master); + List_Read((yyvsp[(5) - (6)].l), i, &d_slave); + int j_master = (int)d_master; + int j_slave = (int)d_slave; + Surface *s_slave = FindSurface(abs(j_slave)); + if(s_slave){ + s_slave->meshMaster = j_master; + } + else{ + GFace *gf = GModel::current()->getFaceByTag(abs(j_slave)); + if(gf) gf->setMeshMaster (j_master); + else yymsg(0, "Unknown line %d", j_slave); + } + } + List_Delete((yyvsp[(3) - (6)].l)); + List_Delete((yyvsp[(5) - (6)].l)); + ;} + break; + + case 247: +#line 3287 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -7486,8 +7557,8 @@ yyreduce: ;} break; - case 245: -#line 3253 "Gmsh.y" + case 248: +#line 3310 "Gmsh.y" { Surface *s = FindSurface((int)(yyvsp[(8) - (10)].d)); if(s){ @@ -7512,27 +7583,27 @@ yyreduce: ;} break; - case 246: -#line 3276 "Gmsh.y" + case 249: +#line 3333 "Gmsh.y" { ;} break; - case 247: -#line 3279 "Gmsh.y" + case 250: +#line 3336 "Gmsh.y" { ;} break; - case 248: -#line 3288 "Gmsh.y" + case 251: +#line 3345 "Gmsh.y" { ReplaceAllDuplicates(); ;} break; - case 249: -#line 3292 "Gmsh.y" + case 252: +#line 3349 "Gmsh.y" { if(!strcmp((yyvsp[(2) - (3)].c), "Geometry")) ReplaceAllDuplicates(); @@ -7544,8 +7615,8 @@ yyreduce: ;} break; - case 250: -#line 3309 "Gmsh.y" + case 253: +#line 3366 "Gmsh.y" { List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l)); @@ -7583,8 +7654,8 @@ yyreduce: ;} break; - case 251: -#line 3346 "Gmsh.y" + case 254: +#line 3403 "Gmsh.y" { List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l)); std::vector<int> domain; @@ -7621,8 +7692,8 @@ yyreduce: ;} break; - case 252: -#line 3382 "Gmsh.y" + case 255: +#line 3439 "Gmsh.y" { List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l)); std::vector<int> domain; @@ -7659,8 +7730,8 @@ yyreduce: ;} break; - case 253: -#line 3417 "Gmsh.y" + case 256: +#line 3474 "Gmsh.y" { List_T *temp = ListOfDouble2ListOfInt((yyvsp[(7) - (11)].l)); std::vector<int> domain; @@ -7697,48 +7768,48 @@ yyreduce: ;} break; - case 254: -#line 3456 "Gmsh.y" + case 257: +#line 3513 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; - case 255: -#line 3457 "Gmsh.y" + case 258: +#line 3514 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (3)].d); ;} break; - case 256: -#line 3458 "Gmsh.y" + case 259: +#line 3515 "Gmsh.y" { (yyval.d) = -(yyvsp[(2) - (2)].d); ;} break; - case 257: -#line 3459 "Gmsh.y" + case 260: +#line 3516 "Gmsh.y" { (yyval.d) = (yyvsp[(2) - (2)].d); ;} break; - case 258: -#line 3460 "Gmsh.y" + case 261: +#line 3517 "Gmsh.y" { (yyval.d) = !(yyvsp[(2) - (2)].d); ;} break; - case 259: -#line 3461 "Gmsh.y" + case 262: +#line 3518 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) - (yyvsp[(3) - (3)].d); ;} break; - case 260: -#line 3462 "Gmsh.y" + case 263: +#line 3519 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) + (yyvsp[(3) - (3)].d); ;} break; - case 261: -#line 3463 "Gmsh.y" + case 264: +#line 3520 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) * (yyvsp[(3) - (3)].d); ;} break; - case 262: -#line 3465 "Gmsh.y" + case 265: +#line 3522 "Gmsh.y" { if(!(yyvsp[(3) - (3)].d)) yymsg(0, "Division by zero in '%g / %g'", (yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); @@ -7747,308 +7818,308 @@ yyreduce: ;} break; - case 263: -#line 3471 "Gmsh.y" + case 266: +#line 3528 "Gmsh.y" { (yyval.d) = (int)(yyvsp[(1) - (3)].d) % (int)(yyvsp[(3) - (3)].d); ;} break; - case 264: -#line 3472 "Gmsh.y" + case 267: +#line 3529 "Gmsh.y" { (yyval.d) = pow((yyvsp[(1) - (3)].d), (yyvsp[(3) - (3)].d)); ;} break; - case 265: -#line 3473 "Gmsh.y" + case 268: +#line 3530 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d); ;} break; - case 266: -#line 3474 "Gmsh.y" + case 269: +#line 3531 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) > (yyvsp[(3) - (3)].d); ;} break; - case 267: -#line 3475 "Gmsh.y" + case 270: +#line 3532 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) <= (yyvsp[(3) - (3)].d); ;} break; - case 268: -#line 3476 "Gmsh.y" + case 271: +#line 3533 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) >= (yyvsp[(3) - (3)].d); ;} break; - case 269: -#line 3477 "Gmsh.y" + case 272: +#line 3534 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) == (yyvsp[(3) - (3)].d); ;} break; - case 270: -#line 3478 "Gmsh.y" + case 273: +#line 3535 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) != (yyvsp[(3) - (3)].d); ;} break; - case 271: -#line 3479 "Gmsh.y" + case 274: +#line 3536 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) && (yyvsp[(3) - (3)].d); ;} break; - case 272: -#line 3480 "Gmsh.y" + case 275: +#line 3537 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (3)].d) || (yyvsp[(3) - (3)].d); ;} break; - case 273: -#line 3481 "Gmsh.y" + case 276: +#line 3538 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (5)].d) ? (yyvsp[(3) - (5)].d) : (yyvsp[(5) - (5)].d); ;} break; - case 274: -#line 3482 "Gmsh.y" + case 277: +#line 3539 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; - case 275: -#line 3483 "Gmsh.y" + case 278: +#line 3540 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; - case 276: -#line 3484 "Gmsh.y" + case 279: +#line 3541 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; - case 277: -#line 3485 "Gmsh.y" + case 280: +#line 3542 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; - case 278: -#line 3486 "Gmsh.y" + case 281: +#line 3543 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; - case 279: -#line 3487 "Gmsh.y" + case 282: +#line 3544 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; - case 280: -#line 3488 "Gmsh.y" + case 283: +#line 3545 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; - case 281: -#line 3489 "Gmsh.y" + case 284: +#line 3546 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; - case 282: -#line 3490 "Gmsh.y" + case 285: +#line 3547 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; - case 283: -#line 3491 "Gmsh.y" + case 286: +#line 3548 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; - case 284: -#line 3492 "Gmsh.y" + case 287: +#line 3549 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; - case 285: -#line 3493 "Gmsh.y" + case 288: +#line 3550 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; - case 286: -#line 3494 "Gmsh.y" + case 289: +#line 3551 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; - case 287: -#line 3495 "Gmsh.y" + case 290: +#line 3552 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; - case 288: -#line 3496 "Gmsh.y" + case 291: +#line 3553 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; - case 289: -#line 3497 "Gmsh.y" + case 292: +#line 3554 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; - case 290: -#line 3498 "Gmsh.y" + case 293: +#line 3555 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; - case 291: -#line 3499 "Gmsh.y" + case 294: +#line 3556 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 292: -#line 3500 "Gmsh.y" + case 295: +#line 3557 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 293: -#line 3501 "Gmsh.y" + case 296: +#line 3558 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; - case 294: -#line 3502 "Gmsh.y" + case 297: +#line 3559 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; - case 295: -#line 3504 "Gmsh.y" + case 298: +#line 3561 "Gmsh.y" { (yyval.d) = exp((yyvsp[(3) - (4)].d)); ;} break; - case 296: -#line 3505 "Gmsh.y" + case 299: +#line 3562 "Gmsh.y" { (yyval.d) = log((yyvsp[(3) - (4)].d)); ;} break; - case 297: -#line 3506 "Gmsh.y" + case 300: +#line 3563 "Gmsh.y" { (yyval.d) = log10((yyvsp[(3) - (4)].d)); ;} break; - case 298: -#line 3507 "Gmsh.y" + case 301: +#line 3564 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (4)].d)); ;} break; - case 299: -#line 3508 "Gmsh.y" + case 302: +#line 3565 "Gmsh.y" { (yyval.d) = sin((yyvsp[(3) - (4)].d)); ;} break; - case 300: -#line 3509 "Gmsh.y" + case 303: +#line 3566 "Gmsh.y" { (yyval.d) = asin((yyvsp[(3) - (4)].d)); ;} break; - case 301: -#line 3510 "Gmsh.y" + case 304: +#line 3567 "Gmsh.y" { (yyval.d) = cos((yyvsp[(3) - (4)].d)); ;} break; - case 302: -#line 3511 "Gmsh.y" + case 305: +#line 3568 "Gmsh.y" { (yyval.d) = acos((yyvsp[(3) - (4)].d)); ;} break; - case 303: -#line 3512 "Gmsh.y" + case 306: +#line 3569 "Gmsh.y" { (yyval.d) = tan((yyvsp[(3) - (4)].d)); ;} break; - case 304: -#line 3513 "Gmsh.y" + case 307: +#line 3570 "Gmsh.y" { (yyval.d) = atan((yyvsp[(3) - (4)].d)); ;} break; - case 305: -#line 3514 "Gmsh.y" + case 308: +#line 3571 "Gmsh.y" { (yyval.d) = atan2((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d));;} break; - case 306: -#line 3515 "Gmsh.y" + case 309: +#line 3572 "Gmsh.y" { (yyval.d) = sinh((yyvsp[(3) - (4)].d)); ;} break; - case 307: -#line 3516 "Gmsh.y" + case 310: +#line 3573 "Gmsh.y" { (yyval.d) = cosh((yyvsp[(3) - (4)].d)); ;} break; - case 308: -#line 3517 "Gmsh.y" + case 311: +#line 3574 "Gmsh.y" { (yyval.d) = tanh((yyvsp[(3) - (4)].d)); ;} break; - case 309: -#line 3518 "Gmsh.y" + case 312: +#line 3575 "Gmsh.y" { (yyval.d) = fabs((yyvsp[(3) - (4)].d)); ;} break; - case 310: -#line 3519 "Gmsh.y" + case 313: +#line 3576 "Gmsh.y" { (yyval.d) = floor((yyvsp[(3) - (4)].d)); ;} break; - case 311: -#line 3520 "Gmsh.y" + case 314: +#line 3577 "Gmsh.y" { (yyval.d) = ceil((yyvsp[(3) - (4)].d)); ;} break; - case 312: -#line 3521 "Gmsh.y" + case 315: +#line 3578 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 313: -#line 3522 "Gmsh.y" + case 316: +#line 3579 "Gmsh.y" { (yyval.d) = fmod((yyvsp[(3) - (6)].d), (yyvsp[(5) - (6)].d)); ;} break; - case 314: -#line 3523 "Gmsh.y" + case 317: +#line 3580 "Gmsh.y" { (yyval.d) = sqrt((yyvsp[(3) - (6)].d) * (yyvsp[(3) - (6)].d) + (yyvsp[(5) - (6)].d) * (yyvsp[(5) - (6)].d)); ;} break; - case 315: -#line 3524 "Gmsh.y" + case 318: +#line 3581 "Gmsh.y" { (yyval.d) = (yyvsp[(3) - (4)].d) * (double)rand() / (double)RAND_MAX; ;} break; - case 316: -#line 3533 "Gmsh.y" + case 319: +#line 3590 "Gmsh.y" { (yyval.d) = (yyvsp[(1) - (1)].d); ;} break; - case 317: -#line 3534 "Gmsh.y" + case 320: +#line 3591 "Gmsh.y" { (yyval.d) = 3.141592653589793; ;} break; - case 318: -#line 3535 "Gmsh.y" + case 321: +#line 3592 "Gmsh.y" { (yyval.d) = Msg::GetCommRank(); ;} break; - case 319: -#line 3536 "Gmsh.y" + case 322: +#line 3593 "Gmsh.y" { (yyval.d) = Msg::GetCommSize(); ;} break; - case 320: -#line 3537 "Gmsh.y" + case 323: +#line 3594 "Gmsh.y" { (yyval.d) = GetGmshMajorVersion(); ;} break; - case 321: -#line 3538 "Gmsh.y" + case 324: +#line 3595 "Gmsh.y" { (yyval.d) = GetGmshMinorVersion(); ;} break; - case 322: -#line 3539 "Gmsh.y" + case 325: +#line 3596 "Gmsh.y" { (yyval.d) = GetGmshPatchVersion(); ;} break; - case 323: -#line 3544 "Gmsh.y" + case 326: +#line 3601 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (1)].c)); @@ -8060,8 +8131,8 @@ yyreduce: ;} break; - case 324: -#line 3557 "Gmsh.y" + case 327: +#line 3614 "Gmsh.y" { char tmpstring[1024]; sprintf(tmpstring, "%s_%d", (yyvsp[(1) - (5)].c), (int)(yyvsp[(4) - (5)].d)) ; @@ -8075,8 +8146,8 @@ yyreduce: ;} break; - case 325: -#line 3569 "Gmsh.y" + case 328: +#line 3626 "Gmsh.y" { int index = (int)(yyvsp[(3) - (4)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (4)].c))){ @@ -8093,8 +8164,8 @@ yyreduce: ;} break; - case 326: -#line 3584 "Gmsh.y" + case 329: +#line 3641 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(2) - (4)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(2) - (4)].c)); @@ -8106,8 +8177,8 @@ yyreduce: ;} break; - case 327: -#line 3594 "Gmsh.y" + case 330: +#line 3651 "Gmsh.y" { if(!gmsh_yysymbols.count((yyvsp[(1) - (2)].c))){ yymsg(0, "Unknown variable '%s'", (yyvsp[(1) - (2)].c)); @@ -8119,8 +8190,8 @@ yyreduce: ;} break; - case 328: -#line 3604 "Gmsh.y" + case 331: +#line 3661 "Gmsh.y" { int index = (int)(yyvsp[(3) - (5)].d); if(!gmsh_yysymbols.count((yyvsp[(1) - (5)].c))){ @@ -8137,24 +8208,24 @@ yyreduce: ;} break; - case 329: -#line 3622 "Gmsh.y" + case 332: +#line 3679 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), (yyval.d)); Free((yyvsp[(1) - (3)].c)); Free((yyvsp[(3) - (3)].c)); ;} break; - case 330: -#line 3627 "Gmsh.y" + case 333: +#line 3684 "Gmsh.y" { NumberOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), (yyval.d)); Free((yyvsp[(1) - (6)].c)); Free((yyvsp[(6) - (6)].c)); ;} break; - case 331: -#line 3632 "Gmsh.y" + case 334: +#line 3689 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (4)].c), 0, (yyvsp[(3) - (4)].c), d)){ @@ -8166,8 +8237,8 @@ yyreduce: ;} break; - case 332: -#line 3642 "Gmsh.y" + case 335: +#line 3699 "Gmsh.y" { double d = 0.; if(NumberOption(GMSH_GET, (yyvsp[(1) - (7)].c), (int)(yyvsp[(3) - (7)].d), (yyvsp[(6) - (7)].c), d)){ @@ -8179,124 +8250,124 @@ yyreduce: ;} break; - case 333: -#line 3652 "Gmsh.y" + case 336: +#line 3709 "Gmsh.y" { (yyval.d) = Msg::GetValue((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].d)); Free((yyvsp[(3) - (6)].c)); ;} break; - case 334: -#line 3660 "Gmsh.y" + case 337: +#line 3717 "Gmsh.y" { memcpy((yyval.v), (yyvsp[(1) - (1)].v), 5*sizeof(double)); ;} break; - case 335: -#line 3664 "Gmsh.y" + case 338: +#line 3721 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = -(yyvsp[(2) - (2)].v)[i]; ;} break; - case 336: -#line 3668 "Gmsh.y" + case 339: +#line 3725 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(2) - (2)].v)[i]; ;} break; - case 337: -#line 3672 "Gmsh.y" + case 340: +#line 3729 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] - (yyvsp[(3) - (3)].v)[i]; ;} break; - case 338: -#line 3676 "Gmsh.y" + case 341: +#line 3733 "Gmsh.y" { for(int i = 0; i < 5; i++) (yyval.v)[i] = (yyvsp[(1) - (3)].v)[i] + (yyvsp[(3) - (3)].v)[i]; ;} break; - case 339: -#line 3683 "Gmsh.y" + case 342: +#line 3740 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (11)].d); (yyval.v)[1] = (yyvsp[(4) - (11)].d); (yyval.v)[2] = (yyvsp[(6) - (11)].d); (yyval.v)[3] = (yyvsp[(8) - (11)].d); (yyval.v)[4] = (yyvsp[(10) - (11)].d); ;} break; - case 340: -#line 3687 "Gmsh.y" + case 343: +#line 3744 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (9)].d); (yyval.v)[1] = (yyvsp[(4) - (9)].d); (yyval.v)[2] = (yyvsp[(6) - (9)].d); (yyval.v)[3] = (yyvsp[(8) - (9)].d); (yyval.v)[4] = 1.0; ;} break; - case 341: -#line 3691 "Gmsh.y" + case 344: +#line 3748 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; - case 342: -#line 3695 "Gmsh.y" + case 345: +#line 3752 "Gmsh.y" { (yyval.v)[0] = (yyvsp[(2) - (7)].d); (yyval.v)[1] = (yyvsp[(4) - (7)].d); (yyval.v)[2] = (yyvsp[(6) - (7)].d); (yyval.v)[3] = 0.0; (yyval.v)[4] = 1.0; ;} break; - case 343: -#line 3702 "Gmsh.y" + case 346: +#line 3759 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(List_T*)); List_Add((yyval.l), &((yyvsp[(1) - (1)].l))); ;} break; - case 344: -#line 3707 "Gmsh.y" + case 347: +#line 3764 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].l))); ;} break; - case 345: -#line 3714 "Gmsh.y" + case 348: +#line 3771 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); ;} break; - case 346: -#line 3719 "Gmsh.y" + case 349: +#line 3776 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 347: -#line 3723 "Gmsh.y" + case 350: +#line 3780 "Gmsh.y" { // creates an empty list (yyval.l) = List_Create(2, 1, sizeof(double)); ;} break; - case 348: -#line 3728 "Gmsh.y" + case 351: +#line 3785 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; - case 349: -#line 3732 "Gmsh.y" + case 352: +#line 3789 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (4)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -8306,8 +8377,8 @@ yyreduce: ;} break; - case 350: -#line 3740 "Gmsh.y" + case 353: +#line 3797 "Gmsh.y" { (yyval.l) = (yyvsp[(4) - (5)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -8317,15 +8388,15 @@ yyreduce: ;} break; - case 351: -#line 3751 "Gmsh.y" + case 354: +#line 3808 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 352: -#line 3755 "Gmsh.y" + case 355: +#line 3812 "Gmsh.y" { if(!strcmp((yyvsp[(1) - (1)].c), "*") || !strcmp((yyvsp[(1) - (1)].c), "all")) (yyval.l) = 0; @@ -8336,8 +8407,8 @@ yyreduce: ;} break; - case 353: -#line 3767 "Gmsh.y" + case 356: +#line 3824 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (2)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -8347,8 +8418,8 @@ yyreduce: ;} break; - case 354: -#line 3775 "Gmsh.y" + case 357: +#line 3832 "Gmsh.y" { (yyval.l) = (yyvsp[(3) - (3)].l); for(int i = 0; i < List_Nbr((yyval.l)); i++){ @@ -8358,8 +8429,8 @@ yyreduce: ;} break; - case 355: -#line 3783 "Gmsh.y" + case 358: +#line 3840 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); for(double d = (yyvsp[(1) - (3)].d); ((yyvsp[(1) - (3)].d) < (yyvsp[(3) - (3)].d)) ? (d <= (yyvsp[(3) - (3)].d)) : (d >= (yyvsp[(3) - (3)].d)); @@ -8368,8 +8439,8 @@ yyreduce: ;} break; - case 356: -#line 3790 "Gmsh.y" + case 359: +#line 3847 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!(yyvsp[(5) - (5)].d) || ((yyvsp[(1) - (5)].d) < (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) < 0) || ((yyvsp[(1) - (5)].d) > (yyvsp[(3) - (5)].d) && (yyvsp[(5) - (5)].d) > 0)){ @@ -8382,8 +8453,8 @@ yyreduce: ;} break; - case 357: -#line 3801 "Gmsh.y" + case 360: +#line 3858 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -8405,8 +8476,8 @@ yyreduce: ;} break; - case 358: -#line 3821 "Gmsh.y" + case 361: +#line 3878 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -8418,8 +8489,8 @@ yyreduce: ;} break; - case 359: -#line 3831 "Gmsh.y" + case 362: +#line 3888 "Gmsh.y" { (yyval.l) = List_Create(List_Nbr((yyvsp[(1) - (1)].l)), 1, sizeof(double)); for(int i = 0; i < List_Nbr((yyvsp[(1) - (1)].l)); i++){ @@ -8431,8 +8502,8 @@ yyreduce: ;} break; - case 360: -#line 3841 "Gmsh.y" + case 363: +#line 3898 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (3)].c))) @@ -8444,8 +8515,8 @@ yyreduce: ;} break; - case 361: -#line 3851 "Gmsh.y" + case 364: +#line 3908 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); if(!gmsh_yysymbols.count((yyvsp[(1) - (6)].c))) @@ -8464,30 +8535,30 @@ yyreduce: ;} break; - case 362: -#line 3871 "Gmsh.y" + case 365: +#line 3928 "Gmsh.y" { (yyval.l) = List_Create(2, 1, sizeof(double)); List_Add((yyval.l), &((yyvsp[(1) - (1)].d))); ;} break; - case 363: -#line 3876 "Gmsh.y" + case 366: +#line 3933 "Gmsh.y" { (yyval.l) = (yyvsp[(1) - (1)].l); ;} break; - case 364: -#line 3880 "Gmsh.y" + case 367: +#line 3937 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].d))); ;} break; - case 365: -#line 3884 "Gmsh.y" + case 368: +#line 3941 "Gmsh.y" { for(int i = 0; i < List_Nbr((yyvsp[(3) - (3)].l)); i++){ double d; @@ -8498,22 +8569,22 @@ yyreduce: ;} break; - case 366: -#line 3896 "Gmsh.y" + case 369: +#line 3953 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (9)].d), (int)(yyvsp[(4) - (9)].d), (int)(yyvsp[(6) - (9)].d), (int)(yyvsp[(8) - (9)].d)); ;} break; - case 367: -#line 3900 "Gmsh.y" + case 370: +#line 3957 "Gmsh.y" { (yyval.u) = CTX::instance()->packColor((int)(yyvsp[(2) - (7)].d), (int)(yyvsp[(4) - (7)].d), (int)(yyvsp[(6) - (7)].d), 255); ;} break; - case 368: -#line 3912 "Gmsh.y" + case 371: +#line 3969 "Gmsh.y" { int flag; (yyval.u) = GetColorForString(ColorString, -1, (yyvsp[(1) - (1)].c), &flag); @@ -8522,8 +8593,8 @@ yyreduce: ;} break; - case 369: -#line 3919 "Gmsh.y" + case 372: +#line 3976 "Gmsh.y" { unsigned int val = 0; ColorOption(GMSH_GET, (yyvsp[(1) - (5)].c), 0, (yyvsp[(5) - (5)].c), val); @@ -8532,15 +8603,15 @@ yyreduce: ;} break; - case 370: -#line 3929 "Gmsh.y" + case 373: +#line 3986 "Gmsh.y" { (yyval.l) = (yyvsp[(2) - (3)].l); ;} break; - case 371: -#line 3933 "Gmsh.y" + case 374: +#line 3990 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = GetColorTable((int)(yyvsp[(3) - (6)].d)); @@ -8554,30 +8625,30 @@ yyreduce: ;} break; - case 372: -#line 3948 "Gmsh.y" + case 375: +#line 4005 "Gmsh.y" { (yyval.l) = List_Create(256, 10, sizeof(unsigned int)); List_Add((yyval.l), &((yyvsp[(1) - (1)].u))); ;} break; - case 373: -#line 3953 "Gmsh.y" + case 376: +#line 4010 "Gmsh.y" { List_Add((yyval.l), &((yyvsp[(3) - (3)].u))); ;} break; - case 374: -#line 3960 "Gmsh.y" + case 377: +#line 4017 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 375: -#line 3964 "Gmsh.y" + case 378: +#line 4021 "Gmsh.y" { if(!gmsh_yystringsymbols.count((yyvsp[(1) - (1)].c))){ yymsg(0, "Unknown string variable '%s'", (yyvsp[(1) - (1)].c)); @@ -8592,8 +8663,8 @@ yyreduce: ;} break; - case 376: -#line 3977 "Gmsh.y" + case 379: +#line 4034 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (3)].c), 0, (yyvsp[(3) - (3)].c), out); @@ -8603,8 +8674,8 @@ yyreduce: ;} break; - case 377: -#line 3985 "Gmsh.y" + case 380: +#line 4042 "Gmsh.y" { std::string out; StringOption(GMSH_GET, (yyvsp[(1) - (6)].c), (int)(yyvsp[(3) - (6)].d), (yyvsp[(6) - (6)].c), out); @@ -8614,15 +8685,15 @@ yyreduce: ;} break; - case 378: -#line 3996 "Gmsh.y" + case 381: +#line 4053 "Gmsh.y" { (yyval.c) = (yyvsp[(1) - (1)].c); ;} break; - case 379: -#line 4000 "Gmsh.y" + case 382: +#line 4057 "Gmsh.y" { (yyval.c) = (char *)Malloc(32 * sizeof(char)); time_t now; @@ -8632,8 +8703,8 @@ yyreduce: ;} break; - case 380: -#line 4008 "Gmsh.y" + case 383: +#line 4065 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (6)].c)) + strlen((yyvsp[(5) - (6)].c)) + 1) * sizeof(char)); strcpy((yyval.c), (yyvsp[(3) - (6)].c)); @@ -8643,8 +8714,8 @@ yyreduce: ;} break; - case 381: -#line 4016 "Gmsh.y" + case 384: +#line 4073 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -8660,8 +8731,8 @@ yyreduce: ;} break; - case 382: -#line 4030 "Gmsh.y" + case 385: +#line 4087 "Gmsh.y" { (yyval.c) = (char *)Malloc((strlen((yyvsp[(3) - (4)].c)) + 1) * sizeof(char)); int i; @@ -8677,15 +8748,15 @@ yyreduce: ;} break; - case 383: -#line 4044 "Gmsh.y" + case 386: +#line 4101 "Gmsh.y" { (yyval.c) = (yyvsp[(3) - (4)].c); ;} break; - case 384: -#line 4048 "Gmsh.y" + case 387: +#line 4105 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble((yyvsp[(3) - (6)].c), (yyvsp[(5) - (6)].l), tmpstring); @@ -8708,7 +8779,7 @@ yyreduce: /* Line 1267 of yacc.c. */ -#line 8712 "Gmsh.tab.cpp" +#line 8783 "Gmsh.tab.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -8922,7 +8993,7 @@ yyreturn: } -#line 4068 "Gmsh.y" +#line 4125 "Gmsh.y" int PrintListOfDouble(char *format, List_T *list, char *buffer) diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp index 84f2b613b948ee36766738cbb6134756cb271f36..d9b6cc573180ccf873397eee3e68e31f95aebf1c 100644 --- a/Parser/Gmsh.tab.hpp +++ b/Parser/Gmsh.tab.hpp @@ -101,72 +101,73 @@ tComplex = 317, tPhysical = 318, tCompound = 319, - tUsing = 320, - tPlugin = 321, - tDegenerated = 322, - tOCCShape = 323, - tRotate = 324, - tTranslate = 325, - tSymmetry = 326, - tDilate = 327, - tExtrude = 328, - tLevelset = 329, - tLoop = 330, - tRecombine = 331, - tSmoother = 332, - tSplit = 333, - tDelete = 334, - tCoherence = 335, - tIntersect = 336, - tLayers = 337, - tHole = 338, - tAlias = 339, - tAliasWithOptions = 340, - tText2D = 341, - tText3D = 342, - tInterpolationScheme = 343, - tTime = 344, - tCombine = 345, - tBSpline = 346, - tBezier = 347, - tNurbs = 348, - tNurbsOrder = 349, - tNurbsKnots = 350, - tColor = 351, - tColorTable = 352, - tFor = 353, - tIn = 354, - tEndFor = 355, - tIf = 356, - tEndIf = 357, - tExit = 358, - tField = 359, - tReturn = 360, - tCall = 361, - tFunction = 362, - tShow = 363, - tHide = 364, - tGetValue = 365, - tGMSH_MAJOR_VERSION = 366, - tGMSH_MINOR_VERSION = 367, - tGMSH_PATCH_VERSION = 368, - tHomRank = 369, - tHomGen = 370, - tHomCut = 371, - tHomSeq = 372, - tAFFECTDIVIDE = 373, - tAFFECTTIMES = 374, - tAFFECTMINUS = 375, - tAFFECTPLUS = 376, - tOR = 377, - tAND = 378, - tNOTEQUAL = 379, - tEQUAL = 380, - tGREATEROREQUAL = 381, - tLESSOREQUAL = 382, - UNARYPREC = 383, - tMINUSMINUS = 384, - tPLUSPLUS = 385 + tPeriodic = 320, + tUsing = 321, + tPlugin = 322, + tDegenerated = 323, + tOCCShape = 324, + tRotate = 325, + tTranslate = 326, + tSymmetry = 327, + tDilate = 328, + tExtrude = 329, + tLevelset = 330, + tLoop = 331, + tRecombine = 332, + tSmoother = 333, + tSplit = 334, + tDelete = 335, + tCoherence = 336, + tIntersect = 337, + tLayers = 338, + tHole = 339, + tAlias = 340, + tAliasWithOptions = 341, + tText2D = 342, + tText3D = 343, + tInterpolationScheme = 344, + tTime = 345, + tCombine = 346, + tBSpline = 347, + tBezier = 348, + tNurbs = 349, + tNurbsOrder = 350, + tNurbsKnots = 351, + tColor = 352, + tColorTable = 353, + tFor = 354, + tIn = 355, + tEndFor = 356, + tIf = 357, + tEndIf = 358, + tExit = 359, + tField = 360, + tReturn = 361, + tCall = 362, + tFunction = 363, + tShow = 364, + tHide = 365, + tGetValue = 366, + tGMSH_MAJOR_VERSION = 367, + tGMSH_MINOR_VERSION = 368, + tGMSH_PATCH_VERSION = 369, + tHomRank = 370, + tHomGen = 371, + tHomCut = 372, + tHomSeq = 373, + tAFFECTDIVIDE = 374, + tAFFECTTIMES = 375, + tAFFECTMINUS = 376, + tAFFECTPLUS = 377, + tOR = 378, + tAND = 379, + tNOTEQUAL = 380, + tEQUAL = 381, + tGREATEROREQUAL = 382, + tLESSOREQUAL = 383, + UNARYPREC = 384, + tMINUSMINUS = 385, + tPLUSPLUS = 386 }; #endif /* Tokens. */ @@ -232,72 +233,73 @@ #define tComplex 317 #define tPhysical 318 #define tCompound 319 -#define tUsing 320 -#define tPlugin 321 -#define tDegenerated 322 -#define tOCCShape 323 -#define tRotate 324 -#define tTranslate 325 -#define tSymmetry 326 -#define tDilate 327 -#define tExtrude 328 -#define tLevelset 329 -#define tLoop 330 -#define tRecombine 331 -#define tSmoother 332 -#define tSplit 333 -#define tDelete 334 -#define tCoherence 335 -#define tIntersect 336 -#define tLayers 337 -#define tHole 338 -#define tAlias 339 -#define tAliasWithOptions 340 -#define tText2D 341 -#define tText3D 342 -#define tInterpolationScheme 343 -#define tTime 344 -#define tCombine 345 -#define tBSpline 346 -#define tBezier 347 -#define tNurbs 348 -#define tNurbsOrder 349 -#define tNurbsKnots 350 -#define tColor 351 -#define tColorTable 352 -#define tFor 353 -#define tIn 354 -#define tEndFor 355 -#define tIf 356 -#define tEndIf 357 -#define tExit 358 -#define tField 359 -#define tReturn 360 -#define tCall 361 -#define tFunction 362 -#define tShow 363 -#define tHide 364 -#define tGetValue 365 -#define tGMSH_MAJOR_VERSION 366 -#define tGMSH_MINOR_VERSION 367 -#define tGMSH_PATCH_VERSION 368 -#define tHomRank 369 -#define tHomGen 370 -#define tHomCut 371 -#define tHomSeq 372 -#define tAFFECTDIVIDE 373 -#define tAFFECTTIMES 374 -#define tAFFECTMINUS 375 -#define tAFFECTPLUS 376 -#define tOR 377 -#define tAND 378 -#define tNOTEQUAL 379 -#define tEQUAL 380 -#define tGREATEROREQUAL 381 -#define tLESSOREQUAL 382 -#define UNARYPREC 383 -#define tMINUSMINUS 384 -#define tPLUSPLUS 385 +#define tPeriodic 320 +#define tUsing 321 +#define tPlugin 322 +#define tDegenerated 323 +#define tOCCShape 324 +#define tRotate 325 +#define tTranslate 326 +#define tSymmetry 327 +#define tDilate 328 +#define tExtrude 329 +#define tLevelset 330 +#define tLoop 331 +#define tRecombine 332 +#define tSmoother 333 +#define tSplit 334 +#define tDelete 335 +#define tCoherence 336 +#define tIntersect 337 +#define tLayers 338 +#define tHole 339 +#define tAlias 340 +#define tAliasWithOptions 341 +#define tText2D 342 +#define tText3D 343 +#define tInterpolationScheme 344 +#define tTime 345 +#define tCombine 346 +#define tBSpline 347 +#define tBezier 348 +#define tNurbs 349 +#define tNurbsOrder 350 +#define tNurbsKnots 351 +#define tColor 352 +#define tColorTable 353 +#define tFor 354 +#define tIn 355 +#define tEndFor 356 +#define tIf 357 +#define tEndIf 358 +#define tExit 359 +#define tField 360 +#define tReturn 361 +#define tCall 362 +#define tFunction 363 +#define tShow 364 +#define tHide 365 +#define tGetValue 366 +#define tGMSH_MAJOR_VERSION 367 +#define tGMSH_MINOR_VERSION 368 +#define tGMSH_PATCH_VERSION 369 +#define tHomRank 370 +#define tHomGen 371 +#define tHomCut 372 +#define tHomSeq 373 +#define tAFFECTDIVIDE 374 +#define tAFFECTTIMES 375 +#define tAFFECTMINUS 376 +#define tAFFECTPLUS 377 +#define tOR 378 +#define tAND 379 +#define tNOTEQUAL 380 +#define tEQUAL 381 +#define tGREATEROREQUAL 382 +#define tLESSOREQUAL 383 +#define UNARYPREC 384 +#define tMINUSMINUS 385 +#define tPLUSPLUS 386 @@ -315,7 +317,7 @@ typedef union YYSTYPE List_T *l; } /* Line 1529 of yacc.c. */ -#line 319 "Gmsh.tab.hpp" +#line 321 "Gmsh.tab.hpp" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 36a560ddb4a93e603dd872d7bdd20bb3d164bbef..b268669f6704e08143959f64e9d39f615378a50d 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -103,7 +103,7 @@ fullMatrix<double> ListOfListOfDouble2Matrix(List_T *list); %token tBoundingBox tDraw tToday tSyncModel tCreateTopology tDistanceFunction %token tPoint tCircle tEllipse tLine tSphere tPolarSphere tSurface tSpline tVolume %token tCharacteristic tLength tParametric tElliptic -%token tPlane tRuled tTransfinite tComplex tPhysical tCompound +%token tPlane tRuled tTransfinite tComplex tPhysical tCompound tPeriodic %token tUsing tPlugin tDegenerated tOCCShape %token tRotate tTranslate tSymmetry tDilate tExtrude tLevelset %token tLoop tRecombine tSmoother tSplit tDelete tCoherence tIntersect @@ -175,6 +175,7 @@ GeoFormatItem : | Visibility { return 1; } | Extrude { List_Delete($1); return 1; } | Transfinite { return 1; } + | Periodic { return 1; } | Embedding { return 1; } | Coherence { return 1; } | Loop { return 1; } @@ -3222,6 +3223,62 @@ Transfinite : } ; + +Periodic : + tPeriodic tLine ListOfDouble tAFFECT ListOfDouble tEND + { + if (List_Nbr($3) != List_Nbr($5)){ + yymsg(0, "Periodic Line : the number of masters (%d) is not equal to the number of slaves(%d)", List_Nbr($3),List_Nbr($5)); + } + + for(int i = 0; i < List_Nbr($3); i++){ + double d_master,d_slave; + List_Read($3, i, &d_master); + List_Read($5, i, &d_slave); + int j_master = (int)d_master; + int j_slave = (int)d_slave; + Curve *c_slave = FindCurve(abs(j_slave)); + if(c_slave){ + // printf("c_slave %d c_master = %d\n",j_slave,j_master); + c_slave->meshMaster = j_master; + } + else{ + GEdge *ge = GModel::current()->getEdgeByTag(abs(j_slave)); + if(ge)ge->setMeshMaster (j_master); + else yymsg(0, "Unknown line %d", j_slave); + } + } + List_Delete($3); + List_Delete($5); + } + | tPeriodic tSurface ListOfDouble tAFFECT ListOfDouble tEND + { + if (List_Nbr($3) != List_Nbr($5)){ + yymsg(0, "Periodic Surface : the number of masters (%d) is not equal to the number of slaves(%d)", List_Nbr($3),List_Nbr($5)); + } + + for(int i = 0; i < List_Nbr($3); i++){ + double d_master,d_slave; + List_Read($3, i, &d_master); + List_Read($5, i, &d_slave); + int j_master = (int)d_master; + int j_slave = (int)d_slave; + Surface *s_slave = FindSurface(abs(j_slave)); + if(s_slave){ + s_slave->meshMaster = j_master; + } + else{ + GFace *gf = GModel::current()->getFaceByTag(abs(j_slave)); + if(gf) gf->setMeshMaster (j_master); + else yymsg(0, "Unknown line %d", j_slave); + } + } + List_Delete($3); + List_Delete($5); + } +; + + // E M B E D D I N G C U R V E S A N D P O I N T S I N T O S U R F A C E S // A N D V O L U M E S diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 6bf864a5c2e71dc36102bc6092f3a986361e06d8..e2804caab3d8a1420e1772498b205f99e066a8e6 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 151 -#define YY_END_OF_BUFFER 152 +#define YY_NUM_RULES 152 +#define YY_END_OF_BUFFER 153 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -373,79 +373,80 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[648] = +static yyconst flex_int16_t yy_accept[655] = { 0, - 0, 0, 152, 150, 1, 1, 150, 5, 150, 6, - 150, 150, 150, 150, 150, 145, 21, 2, 150, 16, - 150, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 150, 28, 24, 19, 25, 17, 26, - 18, 0, 147, 3, 4, 20, 146, 145, 0, 29, - 27, 30, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 90, 89, 149, 149, - - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 108, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 135, 136, 149, 149, - 149, 149, 149, 149, 149, 23, 22, 0, 146, 0, - 0, 148, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 49, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 63, - 149, 149, 149, 149, 149, 76, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 97, 149, 149, 149, 149, 149, 149, 149, 149, 149, - - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 122, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 141, 149, 149, 149, 149, 149, 0, 147, 0, - 0, 146, 31, 149, 149, 149, 149, 35, 37, 149, - 149, 149, 57, 149, 44, 149, 149, 149, 149, 149, - 149, 149, 48, 149, 149, 149, 149, 62, 149, 149, - 149, 149, 71, 149, 72, 149, 149, 75, 149, 149, - 149, 82, 83, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 95, 149, 96, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 118, - - 149, 149, 149, 149, 132, 123, 149, 149, 149, 149, - 121, 149, 149, 149, 149, 149, 149, 137, 140, 149, - 149, 149, 149, 10, 15, 9, 8, 149, 12, 14, - 0, 146, 33, 149, 149, 149, 39, 149, 149, 149, - 149, 149, 149, 149, 52, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 69, 149, 149, 73, 74, - 149, 149, 149, 149, 149, 149, 149, 88, 149, 149, - 93, 149, 149, 149, 98, 149, 149, 149, 104, 149, - 105, 149, 149, 109, 149, 110, 149, 149, 149, 149, - 149, 117, 149, 149, 149, 126, 149, 149, 149, 149, - - 149, 149, 149, 142, 149, 143, 149, 11, 149, 13, - 149, 32, 36, 38, 149, 41, 149, 149, 149, 45, - 149, 149, 149, 149, 149, 149, 149, 149, 59, 61, - 149, 149, 68, 149, 149, 149, 149, 149, 149, 86, - 85, 149, 87, 149, 149, 99, 94, 149, 149, 149, - 101, 149, 149, 149, 114, 149, 113, 149, 119, 116, - 149, 124, 125, 149, 129, 149, 149, 149, 149, 149, - 149, 149, 144, 7, 149, 40, 42, 149, 149, 149, - 149, 149, 47, 51, 149, 149, 149, 149, 65, 149, - 149, 149, 66, 149, 149, 149, 149, 149, 84, 149, - - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 128, 149, 149, 127, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 54, 149, 149, 149, 64, 67, - 149, 77, 149, 149, 149, 78, 149, 149, 100, 102, - 103, 106, 149, 107, 149, 149, 120, 149, 149, 133, - 149, 149, 149, 149, 149, 149, 149, 46, 149, 149, - 149, 149, 70, 149, 149, 149, 149, 91, 149, 149, - 115, 130, 149, 134, 149, 139, 149, 149, 56, 149, - 53, 149, 149, 149, 149, 149, 149, 149, 111, 149, - 149, 149, 149, 43, 149, 55, 149, 60, 149, 149, - - 149, 149, 112, 131, 138, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 50, 58, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 34, 149, 149, 149, 149, 149, 149, 149, 149, - 79, 80, 81, 149, 149, 92, 0 + 0, 0, 153, 151, 1, 1, 151, 5, 151, 6, + 151, 151, 151, 151, 151, 146, 21, 2, 151, 16, + 151, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 151, 28, 24, 19, 25, 17, 26, + 18, 0, 148, 3, 4, 20, 147, 146, 0, 29, + 27, 30, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 90, 89, 150, 150, + + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 109, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 136, 137, 150, + 150, 150, 150, 150, 150, 150, 23, 22, 0, 147, + 0, 0, 149, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 49, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 63, 150, 150, 150, 150, 150, 76, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 97, 150, 150, 150, 150, 150, 150, 150, 150, + + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 123, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 142, 150, 150, 150, 150, 150, 0, + 148, 0, 0, 147, 31, 150, 150, 150, 150, 35, + 37, 150, 150, 150, 57, 150, 44, 150, 150, 150, + 150, 150, 150, 150, 48, 150, 150, 150, 150, 62, + 150, 150, 150, 150, 71, 150, 72, 150, 150, 75, + 150, 150, 150, 82, 83, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 95, 150, 96, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + + 150, 150, 119, 150, 150, 150, 150, 133, 124, 150, + 150, 150, 150, 122, 150, 150, 150, 150, 150, 150, + 138, 141, 150, 150, 150, 150, 10, 15, 9, 8, + 150, 12, 14, 0, 147, 33, 150, 150, 150, 39, + 150, 150, 150, 150, 150, 150, 150, 52, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 69, 150, + 150, 73, 74, 150, 150, 150, 150, 150, 150, 150, + 88, 150, 150, 93, 150, 150, 150, 98, 150, 150, + 150, 104, 150, 105, 150, 150, 150, 110, 150, 111, + 150, 150, 150, 150, 150, 118, 150, 150, 150, 127, + + 150, 150, 150, 150, 150, 150, 150, 143, 150, 144, + 150, 11, 150, 13, 150, 32, 36, 38, 150, 41, + 150, 150, 150, 45, 150, 150, 150, 150, 150, 150, + 150, 150, 59, 61, 150, 150, 68, 150, 150, 150, + 150, 150, 150, 86, 85, 150, 87, 150, 150, 99, + 94, 150, 150, 150, 101, 150, 150, 150, 150, 115, + 150, 114, 150, 120, 117, 150, 125, 126, 150, 130, + 150, 150, 150, 150, 150, 150, 150, 145, 7, 150, + 40, 42, 150, 150, 150, 150, 150, 47, 51, 150, + 150, 150, 150, 65, 150, 150, 150, 66, 150, 150, + + 150, 150, 150, 84, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 129, 150, 150, 128, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, + 54, 150, 150, 150, 64, 67, 150, 77, 150, 150, + 150, 78, 150, 150, 100, 102, 103, 106, 150, 107, + 108, 150, 150, 121, 150, 150, 134, 150, 150, 150, + 150, 150, 150, 150, 46, 150, 150, 150, 150, 70, + 150, 150, 150, 150, 91, 150, 150, 116, 131, 150, + 135, 150, 140, 150, 150, 56, 150, 53, 150, 150, + 150, 150, 150, 150, 150, 112, 150, 150, 150, 150, + + 43, 150, 55, 150, 60, 150, 150, 150, 150, 113, + 132, 139, 150, 150, 150, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 50, 58, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 34, 150, + 150, 150, 150, 150, 150, 150, 150, 79, 80, 81, + 150, 150, 92, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -492,157 +493,159 @@ static yyconst flex_int32_t yy_meta[73] = 2, 1 } ; -static yyconst flex_int16_t yy_base[649] = +static yyconst flex_int16_t yy_base[656] = { 0, - 0, 0, 769, 770, 770, 770, 747, 770, 761, 770, - 745, 64, 65, 63, 75, 77, 770, 770, 744, 743, - 742, 46, 48, 66, 51, 65, 78, 46, 45, 71, - 0, 703, 90, 80, 695, 76, 99, 100, 103, 155, - 696, 699, 707, 685, 770, 770, 770, 770, 770, 770, - 770, 745, 161, 770, 770, 770, 166, 181, 190, 770, - 770, 770, 0, 695, 699, 704, 697, 704, 689, 678, - 682, 62, 692, 699, 682, 156, 693, 59, 686, 695, - 684, 690, 690, 87, 690, 686, 676, 675, 671, 674, - 691, 666, 680, 127, 668, 686, 0, 662, 666, 655, - - 96, 665, 166, 692, 672, 658, 695, 669, 655, 647, - 0, 125, 27, 661, 656, 160, 649, 656, 652, 652, - 650, 167, 646, 645, 644, 131, 0, 0, 671, 646, - 654, 656, 647, 644, 632, 770, 770, 224, 229, 238, - 244, 249, 635, 651, 186, 638, 637, 638, 639, 634, - 635, 633, 633, 626, 639, 636, 626, 174, 622, 630, - 636, 631, 630, 633, 611, 623, 239, 620, 611, 0, - 612, 610, 616, 612, 621, 0, 621, 639, 624, 616, - 615, 243, 605, 637, 612, 597, 610, 607, 608, 607, - 643, 595, 609, 588, 605, 611, 600, 603, 585, 589, - - 594, 587, 598, 585, 593, 582, 575, 593, 588, 570, - 583, 576, 584, 579, 578, 567, 248, 579, 572, 580, - 601, 573, 579, 566, 565, 557, 230, 261, 285, 294, - 299, 304, 0, 558, 561, 565, 572, 0, 603, 562, - 565, 565, 0, 548, 0, 566, 555, 548, 547, 554, - 232, 558, 0, 542, 547, 540, 539, 0, 542, 542, - 549, 545, 0, 533, 0, 548, 534, 0, 531, 549, - 547, 0, 0, 527, 541, 544, 539, 524, 548, 524, - 522, 522, 519, 526, 0, 569, 0, 209, 524, 516, - 525, 515, 519, 521, 524, 519, 508, 509, 506, 0, - - 512, 506, 503, 517, 0, 0, 501, 502, 84, 505, - 0, 516, 499, 510, 513, 508, 523, 0, 0, 487, - 492, 502, 496, 0, 0, 496, 0, 501, 494, 0, - 309, 314, 505, 485, 489, 488, 0, 487, 482, 489, - 486, 493, 490, 489, 497, 479, 486, 470, 480, 483, - 482, 481, 480, 231, 467, 0, 479, 478, 0, 0, - 472, 297, 469, 460, 465, 464, 460, 0, 483, 456, - 0, 455, 464, 453, 0, 469, 460, 454, 0, 466, - 0, 461, 462, 0, 451, 0, 468, 456, 459, 447, - 454, 0, 450, 452, 451, 0, 436, 435, 448, 441, - - 448, 431, 435, 0, 179, 0, 443, 0, 440, 0, - 437, 0, 0, 476, 439, 0, 430, 431, 422, 0, - 427, 438, 433, 414, 423, 422, 438, 416, 0, 0, - 230, 423, 0, 422, 425, 415, 310, 451, 407, 0, - 0, 416, 0, 434, 419, 0, 0, 418, 409, 396, - 0, 405, 400, 417, 0, 402, 0, 407, 0, 0, - 410, 0, 0, 408, 0, 407, 411, 406, 393, 405, - 399, 406, 0, 0, 387, 0, 0, 398, 410, 398, - 399, 399, 0, 0, 396, 398, 384, 396, 0, 378, - 392, 393, 0, 380, 406, 401, 394, 384, 0, 400, - - 384, 367, 375, 379, 378, 365, 370, 372, 366, 361, - 0, 368, 357, 0, 351, 369, 360, 353, 363, 392, - 355, 351, 362, 355, 0, 346, 349, 344, 0, 0, - 349, 0, 370, 369, 380, 0, 381, 338, 0, 0, - 0, 0, 347, 0, 350, 349, 0, 330, 343, 0, - 340, 341, 344, 357, 333, 334, 336, 0, 339, 338, - 328, 336, 0, 346, 345, 354, 341, 0, 333, 318, - 0, 0, 313, 0, 314, 0, 317, 308, 0, 312, - 0, 311, 317, 323, 326, 325, 324, 338, 0, 317, - 316, 315, 300, 0, 299, 0, 303, 0, 318, 317, - - 316, 322, 0, 0, 0, 303, 302, 303, 328, 327, - 326, 316, 291, 301, 279, 308, 307, 306, 299, 285, - 0, 0, 302, 301, 299, 298, 274, 306, 305, 303, - 281, 0, 268, 253, 234, 239, 193, 187, 165, 160, - 0, 0, 0, 132, 105, 0, 770, 96 + 0, 0, 776, 777, 777, 777, 754, 777, 768, 777, + 752, 64, 65, 63, 75, 77, 777, 777, 751, 750, + 749, 46, 48, 66, 51, 65, 78, 46, 45, 71, + 0, 710, 90, 80, 702, 76, 100, 101, 104, 156, + 703, 706, 714, 692, 777, 777, 777, 777, 777, 777, + 777, 752, 162, 777, 777, 777, 167, 182, 191, 777, + 777, 777, 0, 702, 706, 711, 704, 711, 696, 685, + 689, 62, 699, 706, 689, 157, 700, 59, 693, 702, + 691, 697, 697, 88, 697, 693, 683, 682, 678, 681, + 698, 673, 687, 128, 675, 693, 0, 669, 673, 662, + + 97, 672, 167, 699, 679, 665, 702, 676, 662, 661, + 653, 0, 126, 27, 667, 662, 161, 655, 662, 658, + 658, 656, 168, 652, 651, 650, 132, 0, 0, 677, + 652, 660, 662, 653, 650, 638, 777, 777, 225, 230, + 239, 245, 250, 641, 657, 187, 644, 643, 644, 645, + 640, 641, 639, 639, 632, 645, 642, 632, 175, 628, + 636, 642, 637, 636, 639, 617, 629, 240, 626, 617, + 0, 618, 616, 622, 618, 627, 0, 627, 645, 630, + 622, 621, 244, 611, 643, 618, 603, 616, 613, 614, + 613, 649, 601, 615, 594, 611, 617, 606, 609, 600, + + 590, 594, 599, 592, 603, 590, 598, 587, 580, 598, + 593, 575, 588, 581, 589, 584, 583, 572, 249, 584, + 577, 585, 606, 578, 584, 571, 570, 562, 231, 262, + 286, 295, 300, 305, 0, 563, 566, 570, 577, 0, + 608, 567, 570, 570, 0, 553, 0, 571, 560, 553, + 552, 559, 233, 563, 0, 547, 552, 545, 544, 0, + 547, 547, 554, 550, 0, 538, 0, 553, 539, 0, + 536, 554, 552, 0, 0, 532, 546, 549, 544, 529, + 553, 529, 527, 527, 524, 531, 0, 574, 0, 210, + 529, 521, 530, 520, 524, 521, 525, 528, 523, 512, + + 513, 510, 0, 516, 510, 507, 521, 0, 0, 505, + 506, 165, 509, 0, 520, 503, 514, 517, 512, 527, + 0, 0, 491, 496, 506, 500, 0, 0, 500, 0, + 505, 498, 0, 310, 315, 509, 489, 493, 492, 0, + 491, 486, 493, 490, 497, 494, 493, 501, 483, 490, + 474, 484, 487, 486, 485, 484, 232, 471, 0, 483, + 482, 0, 0, 476, 298, 473, 464, 469, 468, 464, + 0, 487, 460, 0, 459, 468, 457, 0, 473, 464, + 458, 0, 470, 0, 465, 465, 465, 0, 454, 0, + 471, 459, 462, 450, 457, 0, 453, 455, 454, 0, + + 439, 438, 451, 444, 451, 434, 438, 0, 180, 0, + 446, 0, 443, 0, 440, 0, 0, 479, 442, 0, + 433, 434, 425, 0, 430, 441, 436, 417, 426, 425, + 441, 419, 0, 0, 91, 426, 0, 425, 428, 418, + 311, 454, 410, 0, 0, 419, 0, 437, 422, 0, + 0, 421, 412, 399, 0, 408, 403, 412, 419, 0, + 404, 0, 409, 0, 0, 412, 0, 0, 410, 0, + 409, 413, 408, 395, 407, 401, 408, 0, 0, 389, + 0, 0, 400, 412, 400, 401, 401, 0, 0, 398, + 400, 386, 398, 0, 380, 394, 395, 0, 382, 408, + + 403, 396, 386, 0, 402, 386, 369, 377, 381, 380, + 367, 380, 371, 373, 367, 362, 0, 369, 358, 0, + 352, 370, 361, 354, 364, 393, 356, 352, 363, 356, + 0, 347, 350, 345, 0, 0, 350, 0, 371, 370, + 381, 0, 382, 339, 0, 0, 0, 0, 348, 0, + 0, 351, 350, 0, 331, 344, 0, 341, 342, 345, + 358, 334, 335, 337, 0, 340, 339, 329, 337, 0, + 347, 346, 355, 342, 0, 334, 319, 0, 0, 314, + 0, 315, 0, 318, 309, 0, 313, 0, 312, 318, + 324, 327, 326, 325, 339, 0, 318, 317, 316, 301, + + 0, 300, 0, 304, 0, 319, 318, 317, 323, 0, + 0, 0, 304, 303, 304, 329, 328, 327, 317, 292, + 302, 280, 309, 308, 307, 300, 286, 0, 0, 303, + 302, 300, 299, 275, 307, 306, 304, 282, 0, 269, + 254, 249, 252, 236, 234, 166, 161, 0, 0, 0, + 133, 105, 0, 777, 96 } ; -static yyconst flex_int16_t yy_def[649] = +static yyconst flex_int16_t yy_def[656] = { 0, - 647, 1, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 647, 647, 647, 647, 647, - 647, 647, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 647, 647, 647, - 647, 647, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 647, 647, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 0, 647 + 654, 1, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 654, 654, 654, 654, + 654, 654, 654, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 654, + 654, 654, 654, 654, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 654, 654, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, + 655, 655, 655, 0, 654 } ; -static yyconst flex_int16_t yy_nxt[843] = +static yyconst flex_int16_t yy_nxt[850] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 17, 18, 19, @@ -652,94 +655,94 @@ static yyconst flex_int16_t yy_nxt[843] = 31, 31, 31, 31, 31, 31, 31, 31, 43, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 44, 48, 52, 50, 53, 53, 53, 53, 53, - 91, 202, 54, 203, 49, 51, 55, 57, 69, 58, + 91, 204, 54, 205, 49, 51, 55, 57, 69, 58, 58, 58, 58, 58, 64, 56, 92, 63, 70, 93, 107, 78, 65, 59, 94, 79, 96, 71, 66, 67, - 68, 162, 72, 80, 95, 163, 73, 104, 151, 74, - 75, 81, 97, 82, 85, 76, 152, 59, 77, 98, - 83, 646, 86, 84, 87, 88, 100, 89, 108, 105, - 101, 169, 395, 90, 102, 109, 115, 170, 396, 103, - 116, 171, 110, 111, 188, 112, 119, 120, 113, 117, - 121, 114, 189, 122, 123, 118, 645, 124, 125, 127, - 128, 200, 126, 53, 53, 53, 53, 53, 139, 139, - 139, 139, 139, 181, 182, 129, 644, 138, 219, 220, - 201, 57, 140, 58, 58, 58, 58, 58, 141, 141, - - 643, 130, 142, 142, 142, 142, 142, 59, 206, 156, - 235, 138, 157, 158, 131, 159, 140, 132, 191, 160, - 213, 250, 642, 214, 207, 192, 236, 237, 641, 215, - 471, 59, 228, 228, 251, 472, 229, 229, 229, 229, - 229, 139, 139, 139, 139, 139, 231, 231, 376, 377, - 232, 232, 232, 232, 232, 230, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 260, 274, 640, 261, - 639, 275, 312, 229, 229, 229, 229, 229, 324, 230, - 489, 325, 276, 277, 490, 313, 326, 314, 347, 638, - 327, 348, 328, 329, 431, 432, 330, 229, 229, 229, - - 229, 229, 331, 331, 637, 636, 332, 332, 332, 332, - 332, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 437, 495, 635, 438, 634, 633, 632, 631, 630, - 496, 629, 628, 627, 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, 595, 594, 593, 592, 591, - 590, 589, 588, 587, 586, 585, 584, 583, 582, 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, 508, 507, 506, 505, 504, 503, 502, 501, - 500, 499, 498, 497, 494, 493, 492, 491, 488, 487, - 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, - 476, 475, 474, 473, 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, - 444, 443, 442, 441, 440, 439, 436, 435, 434, 433, - 430, 429, 428, 427, 426, 425, 424, 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, 394, 393, 392, 391, 390, 389, - 388, 387, 386, 385, 384, 383, 382, 381, 380, 379, - 378, 375, 374, 373, 372, 371, 370, 369, 368, 367, - 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, - - 356, 355, 354, 353, 352, 351, 350, 349, 346, 345, - 344, 343, 342, 341, 340, 339, 338, 337, 336, 335, - 334, 333, 323, 322, 321, 320, 319, 318, 317, 316, - 315, 311, 310, 309, 308, 307, 306, 305, 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, 273, 272, 271, 270, 269, - 268, 267, 266, 265, 264, 263, 262, 259, 258, 257, - 256, 255, 254, 253, 252, 249, 248, 247, 246, 245, - 244, 243, 242, 241, 240, 239, 238, 234, 233, 227, - - 226, 225, 224, 223, 222, 221, 218, 217, 216, 212, - 211, 210, 209, 208, 205, 204, 199, 198, 197, 196, - 195, 194, 193, 190, 187, 186, 185, 184, 183, 180, - 179, 178, 177, 176, 175, 174, 173, 172, 168, 167, - 166, 165, 164, 161, 155, 154, 153, 150, 149, 148, - 147, 146, 145, 144, 143, 137, 136, 135, 134, 133, - 106, 99, 62, 61, 60, 47, 46, 45, 647, 3, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647 + 68, 163, 72, 80, 95, 164, 73, 104, 152, 74, + 75, 81, 97, 82, 85, 76, 153, 59, 77, 98, + 83, 653, 86, 84, 87, 88, 100, 89, 108, 105, + 101, 494, 170, 90, 102, 495, 109, 116, 171, 103, + 110, 117, 172, 111, 112, 189, 113, 120, 121, 114, + 118, 122, 115, 190, 123, 124, 119, 652, 125, 126, + 128, 129, 202, 127, 53, 53, 53, 53, 53, 140, + 140, 140, 140, 140, 182, 183, 130, 651, 139, 221, + 222, 203, 57, 141, 58, 58, 58, 58, 58, 142, + + 142, 650, 131, 143, 143, 143, 143, 143, 59, 208, + 157, 237, 139, 158, 159, 132, 160, 141, 133, 192, + 161, 215, 252, 399, 216, 209, 193, 238, 239, 400, + 217, 476, 59, 230, 230, 253, 477, 231, 231, 231, + 231, 231, 140, 140, 140, 140, 140, 233, 233, 379, + 380, 234, 234, 234, 234, 234, 232, 143, 143, 143, + 143, 143, 143, 143, 143, 143, 143, 262, 276, 649, + 263, 648, 277, 315, 231, 231, 231, 231, 231, 327, + 232, 647, 328, 278, 279, 646, 316, 329, 317, 350, + 645, 330, 351, 331, 332, 435, 436, 333, 231, 231, + + 231, 231, 231, 334, 334, 644, 643, 335, 335, 335, + 335, 335, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 441, 500, 642, 442, 641, 640, 639, 638, + 637, 501, 636, 635, 634, 633, 632, 631, 630, 629, + 628, 627, 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, 595, 594, 593, 592, 591, 590, 589, + 588, 587, 586, 585, 584, 583, 582, 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, + 508, 507, 506, 505, 504, 503, 502, 499, 498, 497, + 496, 493, 492, 491, 490, 489, 488, 487, 486, 485, + 484, 483, 482, 481, 480, 479, 478, 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, 444, 443, + 440, 439, 438, 437, 434, 433, 432, 431, 430, 429, + 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, + 418, 417, 416, 415, 414, 413, 412, 411, 410, 409, + 408, 407, 406, 405, 404, 403, 402, 401, 398, 397, + 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, + 386, 385, 384, 383, 382, 381, 378, 377, 376, 375, + 374, 373, 372, 371, 370, 369, 368, 367, 366, 365, + + 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, + 354, 353, 352, 349, 348, 347, 346, 345, 344, 343, + 342, 341, 340, 339, 338, 337, 336, 326, 325, 324, + 323, 322, 321, 320, 319, 318, 314, 313, 312, 311, + 310, 309, 308, 307, 306, 305, 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, 275, 274, 273, 272, 271, 270, 269, 268, 267, + 266, 265, 264, 261, 260, 259, 258, 257, 256, 255, + 254, 251, 250, 249, 248, 247, 246, 245, 244, 243, + + 242, 241, 240, 236, 235, 229, 228, 227, 226, 225, + 224, 223, 220, 219, 218, 214, 213, 212, 211, 210, + 207, 206, 201, 200, 199, 198, 197, 196, 195, 194, + 191, 188, 187, 186, 185, 184, 181, 180, 179, 178, + 177, 176, 175, 174, 173, 169, 168, 167, 166, 165, + 162, 156, 155, 154, 151, 150, 149, 148, 147, 146, + 145, 144, 138, 137, 136, 135, 134, 106, 99, 62, + 61, 60, 47, 46, 45, 654, 3, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654 } ; -static yyconst flex_int16_t yy_chk[843] = +static yyconst flex_int16_t yy_chk[850] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -749,91 +752,91 @@ static yyconst flex_int16_t yy_chk[843] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 14, 13, 14, 14, 14, 14, 14, - 28, 113, 15, 113, 12, 13, 15, 16, 23, 16, - 16, 16, 16, 16, 22, 15, 28, 648, 23, 29, + 28, 114, 15, 114, 12, 13, 15, 16, 23, 16, + 16, 16, 16, 16, 22, 15, 28, 655, 23, 29, 36, 25, 22, 16, 29, 25, 30, 23, 22, 22, 22, 78, 24, 25, 29, 78, 24, 34, 72, 24, 24, 26, 30, 26, 27, 24, 72, 16, 24, 30, - 26, 645, 27, 26, 27, 27, 33, 27, 36, 34, - 33, 84, 309, 27, 33, 37, 38, 84, 309, 33, - 38, 84, 37, 37, 101, 37, 39, 39, 37, 38, - 39, 37, 101, 39, 39, 38, 644, 39, 39, 40, - 40, 112, 39, 53, 53, 53, 53, 53, 57, 57, - 57, 57, 57, 94, 94, 40, 640, 53, 126, 126, - 112, 58, 57, 58, 58, 58, 58, 58, 59, 59, - - 639, 40, 59, 59, 59, 59, 59, 58, 116, 76, - 145, 53, 76, 76, 40, 76, 57, 40, 103, 76, - 122, 158, 638, 122, 116, 103, 145, 145, 637, 122, - 405, 58, 138, 138, 158, 405, 138, 138, 138, 138, - 138, 139, 139, 139, 139, 139, 140, 140, 288, 288, - 140, 140, 140, 140, 140, 139, 141, 141, 141, 141, - 141, 142, 142, 142, 142, 142, 167, 182, 636, 167, - 635, 182, 217, 228, 228, 228, 228, 228, 227, 139, - 431, 227, 182, 182, 431, 217, 227, 217, 251, 634, - 227, 251, 227, 227, 354, 354, 227, 229, 229, 229, - - 229, 229, 230, 230, 633, 631, 230, 230, 230, 230, - 230, 231, 231, 231, 231, 231, 232, 232, 232, 232, - 232, 331, 331, 331, 331, 331, 332, 332, 332, 332, - 332, 362, 437, 630, 362, 629, 628, 627, 626, 625, - 437, 624, 623, 620, 619, 618, 617, 616, 615, 614, - 613, 612, 611, 610, 609, 608, 607, 606, 602, 601, - 600, 599, 597, 595, 593, 592, 591, 590, 588, 587, - 586, 585, 584, 583, 582, 580, 578, 577, 575, 573, - 570, 569, 567, 566, 565, 564, 562, 561, 560, 559, - 557, 556, 555, 554, 553, 552, 551, 549, 548, 546, - - 545, 543, 538, 537, 535, 534, 533, 531, 528, 527, - 526, 524, 523, 522, 521, 520, 519, 518, 517, 516, - 515, 513, 512, 510, 509, 508, 507, 506, 505, 504, - 503, 502, 501, 500, 498, 497, 496, 495, 494, 492, - 491, 490, 488, 487, 486, 485, 482, 481, 480, 479, - 478, 475, 472, 471, 470, 469, 468, 467, 466, 464, - 461, 458, 456, 454, 453, 452, 450, 449, 448, 445, - 444, 442, 439, 438, 436, 435, 434, 432, 428, 427, - 426, 425, 424, 423, 422, 421, 419, 418, 417, 415, - 414, 411, 409, 407, 403, 402, 401, 400, 399, 398, - - 397, 395, 394, 393, 391, 390, 389, 388, 387, 385, - 383, 382, 380, 378, 377, 376, 374, 373, 372, 370, - 369, 367, 366, 365, 364, 363, 361, 358, 357, 355, - 353, 352, 351, 350, 349, 348, 347, 346, 345, 344, - 343, 342, 341, 340, 339, 338, 336, 335, 334, 333, - 329, 328, 326, 323, 322, 321, 320, 317, 316, 315, - 314, 313, 312, 310, 308, 307, 304, 303, 302, 301, - 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, - 289, 286, 284, 283, 282, 281, 280, 279, 278, 277, - 276, 275, 274, 271, 270, 269, 267, 266, 264, 262, - - 261, 260, 259, 257, 256, 255, 254, 252, 250, 249, - 248, 247, 246, 244, 242, 241, 240, 239, 237, 236, - 235, 234, 226, 225, 224, 223, 222, 221, 220, 219, - 218, 216, 215, 214, 213, 212, 211, 210, 209, 208, - 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, - 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, - 187, 186, 185, 184, 183, 181, 180, 179, 178, 177, - 175, 174, 173, 172, 171, 169, 168, 166, 165, 164, - 163, 162, 161, 160, 159, 157, 156, 155, 154, 153, - 152, 151, 150, 149, 148, 147, 146, 144, 143, 135, - - 134, 133, 132, 131, 130, 129, 125, 124, 123, 121, - 120, 119, 118, 117, 115, 114, 110, 109, 108, 107, - 106, 105, 104, 102, 100, 99, 98, 96, 95, 93, - 92, 91, 90, 89, 88, 87, 86, 85, 83, 82, - 81, 80, 79, 77, 75, 74, 73, 71, 70, 69, - 68, 67, 66, 65, 64, 52, 44, 43, 42, 41, - 35, 32, 21, 20, 19, 11, 9, 7, 3, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 647, 647 + 26, 652, 27, 26, 27, 27, 33, 27, 36, 34, + 33, 435, 84, 27, 33, 435, 37, 38, 84, 33, + 37, 38, 84, 37, 37, 101, 37, 39, 39, 37, + 38, 39, 37, 101, 39, 39, 38, 651, 39, 39, + 40, 40, 113, 39, 53, 53, 53, 53, 53, 57, + 57, 57, 57, 57, 94, 94, 40, 647, 53, 127, + 127, 113, 58, 57, 58, 58, 58, 58, 58, 59, + + 59, 646, 40, 59, 59, 59, 59, 59, 58, 117, + 76, 146, 53, 76, 76, 40, 76, 57, 40, 103, + 76, 123, 159, 312, 123, 117, 103, 146, 146, 312, + 123, 409, 58, 139, 139, 159, 409, 139, 139, 139, + 139, 139, 140, 140, 140, 140, 140, 141, 141, 290, + 290, 141, 141, 141, 141, 141, 140, 142, 142, 142, + 142, 142, 143, 143, 143, 143, 143, 168, 183, 645, + 168, 644, 183, 219, 230, 230, 230, 230, 230, 229, + 140, 643, 229, 183, 183, 642, 219, 229, 219, 253, + 641, 229, 253, 229, 229, 357, 357, 229, 231, 231, + + 231, 231, 231, 232, 232, 640, 638, 232, 232, 232, + 232, 232, 233, 233, 233, 233, 233, 234, 234, 234, + 234, 234, 334, 334, 334, 334, 334, 335, 335, 335, + 335, 335, 365, 441, 637, 365, 636, 635, 634, 633, + 632, 441, 631, 630, 627, 626, 625, 624, 623, 622, + 621, 620, 619, 618, 617, 616, 615, 614, 613, 609, + 608, 607, 606, 604, 602, 600, 599, 598, 597, 595, + 594, 593, 592, 591, 590, 589, 587, 585, 584, 582, + 580, 577, 576, 574, 573, 572, 571, 569, 568, 567, + 566, 564, 563, 562, 561, 560, 559, 558, 556, 555, + + 553, 552, 549, 544, 543, 541, 540, 539, 537, 534, + 533, 532, 530, 529, 528, 527, 526, 525, 524, 523, + 522, 521, 519, 518, 516, 515, 514, 513, 512, 511, + 510, 509, 508, 507, 506, 505, 503, 502, 501, 500, + 499, 497, 496, 495, 493, 492, 491, 490, 487, 486, + 485, 484, 483, 480, 477, 476, 475, 474, 473, 472, + 471, 469, 466, 463, 461, 459, 458, 457, 456, 454, + 453, 452, 449, 448, 446, 443, 442, 440, 439, 438, + 436, 432, 431, 430, 429, 428, 427, 426, 425, 423, + 422, 421, 419, 418, 415, 413, 411, 407, 406, 405, + + 404, 403, 402, 401, 399, 398, 397, 395, 394, 393, + 392, 391, 389, 387, 386, 385, 383, 381, 380, 379, + 377, 376, 375, 373, 372, 370, 369, 368, 367, 366, + 364, 361, 360, 358, 356, 355, 354, 353, 352, 351, + 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, + 339, 338, 337, 336, 332, 331, 329, 326, 325, 324, + 323, 320, 319, 318, 317, 316, 315, 313, 311, 310, + 307, 306, 305, 304, 302, 301, 300, 299, 298, 297, + 296, 295, 294, 293, 292, 291, 288, 286, 285, 284, + 283, 282, 281, 280, 279, 278, 277, 276, 273, 272, + + 271, 269, 268, 266, 264, 263, 262, 261, 259, 258, + 257, 256, 254, 252, 251, 250, 249, 248, 246, 244, + 243, 242, 241, 239, 238, 237, 236, 228, 227, 226, + 225, 224, 223, 222, 221, 220, 218, 217, 216, 215, + 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, + 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, + 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, + 184, 182, 181, 180, 179, 178, 176, 175, 174, 173, + 172, 170, 169, 167, 166, 165, 164, 163, 162, 161, + 160, 158, 157, 156, 155, 154, 153, 152, 151, 150, + + 149, 148, 147, 145, 144, 136, 135, 134, 133, 132, + 131, 130, 126, 125, 124, 122, 121, 120, 119, 118, + 116, 115, 111, 110, 109, 108, 107, 106, 105, 104, + 102, 100, 99, 98, 96, 95, 93, 92, 91, 90, + 89, 88, 87, 86, 85, 83, 82, 81, 80, 79, + 77, 75, 74, 73, 71, 70, 69, 68, 67, 66, + 65, 64, 52, 44, 43, 42, 41, 35, 32, 21, + 20, 19, 11, 9, 7, 3, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, + 654, 654, 654, 654, 654, 654, 654, 654, 654 } ; static yy_state_type yy_last_accepting_state; @@ -890,7 +893,7 @@ void skipline(void); #define YY_NO_UNISTD_H #endif -#line 894 "Gmsh.yy.cpp" +#line 897 "Gmsh.yy.cpp" #define INITIAL 0 @@ -1046,7 +1049,7 @@ YY_DECL #line 49 "Gmsh.l" -#line 1050 "Gmsh.yy.cpp" +#line 1053 "Gmsh.yy.cpp" if ( !(yy_init) ) { @@ -1099,13 +1102,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 >= 648 ) + if ( yy_current_state >= 655 ) 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] != 770 ); + while ( yy_base[yy_current_state] != 777 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1663,220 +1666,225 @@ return tOCCShape; case 107: YY_RULE_SETUP #line 172 "Gmsh.l" -return tPhysical; +return tPeriodic; YY_BREAK case 108: YY_RULE_SETUP #line 173 "Gmsh.l" -return tPi; +return tPhysical; YY_BREAK case 109: YY_RULE_SETUP #line 174 "Gmsh.l" -return tPlane; +return tPi; YY_BREAK case 110: YY_RULE_SETUP #line 175 "Gmsh.l" -return tPoint; +return tPlane; YY_BREAK case 111: YY_RULE_SETUP #line 176 "Gmsh.l" -return tParametric; +return tPoint; YY_BREAK case 112: YY_RULE_SETUP #line 177 "Gmsh.l" -return tPolarSphere; +return tParametric; YY_BREAK case 113: YY_RULE_SETUP #line 178 "Gmsh.l" -return tPrintf; +return tPolarSphere; YY_BREAK case 114: YY_RULE_SETUP #line 179 "Gmsh.l" -return tPlugin; +return tPrintf; YY_BREAK case 115: YY_RULE_SETUP -#line 181 "Gmsh.l" -return tRecombine; +#line 180 "Gmsh.l" +return tPlugin; YY_BREAK case 116: YY_RULE_SETUP #line 182 "Gmsh.l" -return tRotate; +return tRecombine; YY_BREAK case 117: YY_RULE_SETUP #line 183 "Gmsh.l" -return tRuled; +return tRotate; YY_BREAK case 118: YY_RULE_SETUP #line 184 "Gmsh.l" -return tRand; +return tRuled; YY_BREAK case 119: YY_RULE_SETUP #line 185 "Gmsh.l" -return tReturn; +return tRand; YY_BREAK case 120: YY_RULE_SETUP -#line 187 "Gmsh.l" -return tSmoother; +#line 186 "Gmsh.l" +return tReturn; YY_BREAK case 121: YY_RULE_SETUP #line 188 "Gmsh.l" -return tSqrt; +return tSmoother; YY_BREAK case 122: YY_RULE_SETUP #line 189 "Gmsh.l" -return tSin; +return tSqrt; YY_BREAK case 123: YY_RULE_SETUP #line 190 "Gmsh.l" -return tSinh; +return tSin; YY_BREAK case 124: YY_RULE_SETUP #line 191 "Gmsh.l" -return tSphere; +return tSinh; YY_BREAK case 125: YY_RULE_SETUP #line 192 "Gmsh.l" -return tSpline; +return tSphere; YY_BREAK case 126: YY_RULE_SETUP #line 193 "Gmsh.l" -return tSplit; +return tSpline; YY_BREAK case 127: YY_RULE_SETUP #line 194 "Gmsh.l" -return tSurface; +return tSplit; YY_BREAK case 128: YY_RULE_SETUP #line 195 "Gmsh.l" -return tSprintf; +return tSurface; YY_BREAK case 129: YY_RULE_SETUP #line 196 "Gmsh.l" -return tStrCat; +return tSprintf; YY_BREAK case 130: YY_RULE_SETUP #line 197 "Gmsh.l" -return tStrPrefix; +return tStrCat; YY_BREAK case 131: YY_RULE_SETUP #line 198 "Gmsh.l" -return tStrRelative; +return tStrPrefix; YY_BREAK case 132: YY_RULE_SETUP #line 199 "Gmsh.l" -return tShow; +return tStrRelative; YY_BREAK case 133: YY_RULE_SETUP #line 200 "Gmsh.l" -return tSymmetry; +return tShow; YY_BREAK case 134: YY_RULE_SETUP #line 201 "Gmsh.l" -return tSyncModel; +return tSymmetry; YY_BREAK case 135: YY_RULE_SETUP -#line 203 "Gmsh.l" -return tText2D; +#line 202 "Gmsh.l" +return tSyncModel; YY_BREAK case 136: YY_RULE_SETUP #line 204 "Gmsh.l" -return tText3D; +return tText2D; YY_BREAK case 137: YY_RULE_SETUP #line 205 "Gmsh.l" -return tTime; +return tText3D; YY_BREAK case 138: YY_RULE_SETUP #line 206 "Gmsh.l" -return tTransfinite; +return tTime; YY_BREAK case 139: YY_RULE_SETUP #line 207 "Gmsh.l" -return tTranslate; +return tTransfinite; YY_BREAK case 140: YY_RULE_SETUP #line 208 "Gmsh.l" -return tTanh; +return tTranslate; YY_BREAK case 141: YY_RULE_SETUP #line 209 "Gmsh.l" -return tTan; +return tTanh; YY_BREAK case 142: YY_RULE_SETUP #line 210 "Gmsh.l" -return tToday; +return tTan; YY_BREAK case 143: YY_RULE_SETUP -#line 212 "Gmsh.l" -return tUsing; +#line 211 "Gmsh.l" +return tToday; YY_BREAK case 144: YY_RULE_SETUP -#line 214 "Gmsh.l" -return tVolume; +#line 213 "Gmsh.l" +return tUsing; YY_BREAK case 145: -#line 217 "Gmsh.l" +YY_RULE_SETUP +#line 215 "Gmsh.l" +return tVolume; + YY_BREAK case 146: #line 218 "Gmsh.l" case 147: #line 219 "Gmsh.l" case 148: +#line 220 "Gmsh.l" +case 149: YY_RULE_SETUP -#line 219 "Gmsh.l" +#line 220 "Gmsh.l" { gmsh_yylval.d = atof((char *)gmsh_yytext); return tDOUBLE; } YY_BREAK -case 149: +case 150: YY_RULE_SETUP -#line 221 "Gmsh.l" +#line 222 "Gmsh.l" { gmsh_yylval.c = strsave((char*)gmsh_yytext); return tSTRING; } YY_BREAK -case 150: +case 151: YY_RULE_SETUP -#line 223 "Gmsh.l" +#line 224 "Gmsh.l" return gmsh_yytext[0]; YY_BREAK -case 151: +case 152: YY_RULE_SETUP -#line 225 "Gmsh.l" +#line 226 "Gmsh.l" ECHO; YY_BREAK -#line 1880 "Gmsh.yy.cpp" +#line 1888 "Gmsh.yy.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2160,7 +2168,7 @@ static int yy_get_next_buffer (void) 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 >= 648 ) + if ( yy_current_state >= 655 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2188,11 +2196,11 @@ static int yy_get_next_buffer (void) 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 >= 648 ) + if ( yy_current_state >= 655 ) 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 == 647); + yy_is_jam = (yy_current_state == 654); return yy_is_jam ? 0 : yy_current_state; } @@ -2862,7 +2870,7 @@ void gmsh_yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 225 "Gmsh.l" +#line 226 "Gmsh.l" diff --git a/Solver/helmholtzTerm.h b/Solver/helmholtzTerm.h index 789e61705858f165dd0100c075320a4f647e9fed..f79f3e5b65239e753f234bc5e682570dfe24b6c4 100644 --- a/Solver/helmholtzTerm.h +++ b/Solver/helmholtzTerm.h @@ -50,9 +50,9 @@ class helmholtzTerm : public femTerm<scalar> { { MElement *e = se->getMeshElement(); // compute integration rule - const int integrationOrder = (_a) ? 2 * e->getPolynomialOrder() : - 2 * (e->getPolynomialOrder() - 1); - // const int integrationOrder = 2 * e->getPolynomialOrder() + 1; + //const int integrationOrder = (_a) ? 2 * e->getPolynomialOrder() : + // 2 * (e->getPolynomialOrder() - 1); + const int integrationOrder = 2 * e->getPolynomialOrder() + 1; int npts; IntPt *GP; e->getIntegrationPoints(integrationOrder, &npts, &GP); diff --git a/Solver/linearSystem.cpp b/Solver/linearSystem.cpp index 3154e9bde85c539bbb5e0d1edc723ae2d2b512fe..32d0022012270307683079dfb7c76e92a6912e02 100644 --- a/Solver/linearSystem.cpp +++ b/Solver/linearSystem.cpp @@ -20,6 +20,11 @@ void linearSystem<double>::registerBindings(binding *b){ cm = cb->setConstructor<linearSystemCSRTaucs<double> >(); cm->setDescription ("A new TAUCS<double> solver"); cm->setArgNames(NULL); + cm = cb->addMethod("getNNZ", &linearSystemCSRTaucs<double>::getNNZ); + cm->setDescription("get the number of non zero entries"); + cm = cb->addMethod("getNbUnk", &linearSystemCSRTaucs<double>::getNbUnk); + cm->setDescription("get the number of unknowns"); + cb->setParentClass<linearSystem<double> >(); #endif diff --git a/Solver/linearSystemCSR.h b/Solver/linearSystemCSR.h index 9e75a2d3f378ed2a456759e8a72d190baffa6eb9..ed7e369596d353822b57c8e73ade13c6efcab3cf 100644 --- a/Solver/linearSystemCSR.h +++ b/Solver/linearSystemCSR.h @@ -148,7 +148,7 @@ class linearSystemCSRTaucs : public linearSystemCSR<scalar> { if (il <= ic) linearSystemCSR<scalar>::addToMatrix(il, ic, val); } - virtual int systemSolve() + virtual int systemSolve() #if !defined(HAVE_TAUCS) { Msg::Error("TAUCS is not available in this version of Gmsh"); @@ -156,6 +156,8 @@ class linearSystemCSRTaucs : public linearSystemCSR<scalar> { } #endif ; + int getNNZ() {return CSRList_Nbr(linearSystemCSR<scalar>::_a);} + int getNbUnk() {return linearSystemCSR<scalar>::_b->size();} }; #endif diff --git a/benchmarks/boolean/FILLET.geo b/benchmarks/boolean/FILLET.geo index f8983d2328e33241c729705c0c3eec3abe157a78..b31d7b5d8ded5de7768a0923850db8c91bcec0f1 100644 --- a/benchmarks/boolean/FILLET.geo +++ b/benchmarks/boolean/FILLET.geo @@ -5,7 +5,7 @@ OCCShape("Box",{0,0,0,L,H,Z},"none"); R = 4; OCCShape("Fillet",{1:12,R},"none"); -/* + OCCShape("Cone",{0*L/2,H/2,-Z,0,0,1,.3*R,2*R,3*Z},"Fuse"); OCCShape("Fillet",{1,R},"none"); OCCShape("Fillet",{14,R/8},"none"); @@ -13,4 +13,4 @@ OCCShape("Cone",{0.99*L/2,H/2,-Z,0,0,1,.3*R,2*R,3*Z},"Fuse"); OCCShape("Fillet",{1,R},"none"); OCCShape("Fillet",{83,R/8},"none"); OCCShape("Cone",{0.99*L,H/2,-Z,0,0,1,3*R,.2*R,3*Z},"Cut"); -*/ +