From f1072334ab16bd8eac3e130c1f998fea3e7e4bc2 Mon Sep 17 00:00:00 2001 From: Julius Zimmermann Date: Tue, 5 Feb 2019 17:53:42 +0100 Subject: [PATCH] updated Mobini example --- examples/Mobini2017/Mesh_twoWires.py | 382 +- examples/Mobini2017/README.rst | 3 +- examples/Mobini2017/geometryMobini_white.png | Bin 15948 -> 19952 bytes examples/Mobini2017/parameters_mobini2017.yml | 11 +- .../Mobini2017/paraview/field_along_z.tsv | 27 + .../paraview/field_between_electrodes.tsv | 42 + examples/Mobini2017/paraview/field_tupaj.py | 6 +- .../paraview/plot_efield_glyphs_times.pvsm | 61184 ++++++++++++++++ .../paraview/plot_field_along_z.gnu | 14 + .../plot_field_between_electrodes.gnu | 17 + .../plot_field_between_electrodes.pvsm | 3148 +- 11 files changed, 63035 insertions(+), 1799 deletions(-) create mode 100644 examples/Mobini2017/paraview/field_along_z.tsv create mode 100644 examples/Mobini2017/paraview/field_between_electrodes.tsv create mode 100644 examples/Mobini2017/paraview/plot_efield_glyphs_times.pvsm create mode 100644 examples/Mobini2017/paraview/plot_field_along_z.gnu create mode 100644 examples/Mobini2017/paraview/plot_field_between_electrodes.gnu diff --git a/examples/Mobini2017/Mesh_twoWires.py b/examples/Mobini2017/Mesh_twoWires.py index 08f399e..ca8eabe 100644 --- a/examples/Mobini2017/Mesh_twoWires.py +++ b/examples/Mobini2017/Mesh_twoWires.py @@ -20,28 +20,35 @@ ### geometry parameters### r_el = 0.0005 -r_well = 0.0346 -h_well = 0.01705 +r_well = 0.01689 +h_well = 0.01733 h_el = 0.001 dist_el = 0.022 +level = 0.8 +l_el = 0.05 +ratio = 0.44 #################################################### ## Begin of NoteBook variables section ## #################################################### notebook.set("r_well", r_well) -notebook.set("r_well_half", "r_well/2.") -notebook.set("r_well_half_n", "-r_well_half") notebook.set("h_well", h_well) -notebook.set("h_liquid", "h_well*0.8") -notebook.set("h_air", "h_well*2.") -notebook.set("h_el", h_el) +notebook.set("level", level) notebook.set("r_el", r_el) -notebook.set("l_el", "r_well") +notebook.set("h_el", h_el) notebook.set("dist_el", dist_el) -notebook.set("dist_el_center", "dist_el/2.+r_el") -notebook.set("dist_el_center_n", "-dist_el_center") -notebook.set("h_up", "h_air-h_el") -notebook.set("r_el_n", "-r_el") -notebook.set("outer_fuse", "-0.5*(r_well+h_el)") +notebook.set("h_liquid", "h_well*level") +notebook.set("h_air", "h_well*1.5") +notebook.set("l_el", l_el) +notebook.set("ratio", ratio) +notebook.set("l_part1", "l_el*ratio-1.5*r_el") +notebook.set("l_part2", "l_el-l_part1-1.5*r_el") +notebook.set("dist_el_x_n", "-l_part1/2.+0.75*r_el") +notebook.set("dist_el_y", "dist_el/2.+r_el") +notebook.set("dist_el_y_n", "-dist_el_y") +notebook.set("h_el_pipe", "h_el+r_el*1.5") +notebook.set("dist_el_x_pipe_n", "dist_el_x_n-r_el*1.5") +notebook.set("h_el_pipe_h", "h_el+1.5*(r_el-r_el*0.52532198881)") +notebook.set("dist_el_x_pipe_h_n", "dist_el_x_n-1.5*r_el*0.85090352453") #################################################### ## End of NoteBook variables section ## #################################################### @@ -62,40 +69,32 @@ OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) Cylinder_1 = geompy.MakeCylinderRH("r_well", "h_liquid") -Cylinder_1_face_10 = geompy.GetSubShape(Cylinder_1, [10]) -Vertex_1 = geompy.MakeVertexOnSurface(Cylinder_1_face_10, 0.5, 0.5) -geomObj_1 = geompy.GetSubShape(Cylinder_1, [10]) -Vector_Normal_1 = geompy.GetNormal(geomObj_1, Vertex_1) -Cylinder_2 = geompy.MakeCylinder(Vertex_1, Vector_Normal_1, "r_well", "h_air") -geomObj_2 = geompy.MakeVertex(0.0173, -0.0173, 0.001) -geomObj_3 = geompy.MakeVertex(-0.0173, -0.0173, 0.001) -geomObj_4 = geompy.MakeVertex(-0.0173, 0.0173, 0.001) -geomObj_5 = geompy.MakeVertex(0.0173, 0.0173, 0.001) -Line_1 = geompy.MakeLineTwoPnt(geomObj_2, geomObj_3) -geomObj_6 = geompy.MakeLineTwoPnt(geomObj_4, geomObj_5) -geomObj_7 = geompy.MakeCylinder(geomObj_2, Line_1, 0.0005, 0.0173) -geomObj_8 = geompy.MakeCylinder(geomObj_4, geomObj_6, 0.0005, 0.0173) -Line_2 = geompy.MakeLineTwoPnt(geomObj_5, geomObj_4) -geomObj_9 = geompy.MakeVectorDXDYDZ(0, 0, 1) -geomObj_10 = geompy.MakeCircle(geomObj_2, Line_1, 0.0005) -geomObj_11 = geompy.MakeCircle(geomObj_3, Line_1, 0.0005) -geomObj_12 = geompy.MakeCircle(geomObj_4, Line_2, 0.0005) -geomObj_13 = geompy.MakeCircle(geomObj_5, Line_2, 0.0005) -geomObj_14 = geompy.MakeVertex(-0.0178, 0.0173, 0.01364) -Vector_1 = geompy.MakeVectorDXDYDZ(0, 0, 1) -Vertex_2 = geompy.MakeVertex("dist_el_center_n", "dist_el_center_n", "h_el") -Vertex_3 = geompy.MakeVertex("dist_el_center_n", "dist_el_center", "h_el") -Cylinder_3 = geompy.MakeCylinder(Vertex_2, Vector_1, "r_el", "h_up") -Cylinder_4 = geompy.MakeCylinder(Vertex_3, Vector_1, "r_el", "h_up") -Vector_2 = geompy.MakeVectorDXDYDZ(1, 0, 0) -Cylinder_5 = geompy.MakeCylinder(Vertex_2, Vector_2, "r_el", "l_el") -Cylinder_6 = geompy.MakeCylinder(Vertex_3, Vector_2, "r_el", "l_el") -Translation_1 = geompy.MakeTranslation(Cylinder_3, 0, 0, "r_el_n") -Translation_2 = geompy.MakeTranslation(Cylinder_4, 0, 0, "r_el_n") -Fuse_1 = geompy.MakeFuseList([Cylinder_6, Translation_2], True, True) -Fuse_2 = geompy.MakeFuseList([Cylinder_5, Translation_1], True, True) -Partition_1 = geompy.MakePartition([Cylinder_1, Cylinder_2], [], [], [], geompy.ShapeType["SOLID"], 0, [], 0) -Cut_1 = geompy.MakeCutList(Partition_1, [Fuse_1, Fuse_2], True) +Vertex_1 = geompy.MakeVertex(0, 0, "h_liquid") +Cylinder_2 = geompy.MakeCylinder(Vertex_1, OZ, "r_well", "h_air") +Vertex_2 = geompy.MakeVertex("dist_el_x_n", "dist_el_y", "h_el") +Cylinder_3 = geompy.MakeCylinder(Vertex_2, OX, "r_el", "l_part1") +Vertex_3 = geompy.MakeVertex("dist_el_x_pipe_h_n", "dist_el_y", "h_el_pipe_h") +Vertex_4 = geompy.MakeVertex("dist_el_x_pipe_n", "dist_el_y", "h_el_pipe") +Arc_1 = geompy.MakeArc(Vertex_2, Vertex_3, Vertex_4) +Cylinder_4 = geompy.MakeCylinder(Vertex_4, OZ, "r_el", "l_part2") +[Face_1] = geompy.SubShapes(Cylinder_4, [12]) +geomObj_1 = geompy.MakePipe(Face_1, Arc_1) +listSubShapeIDs = geompy.SubShapeAllIDs(geomObj_1, geompy.ShapeType["VERTEX"]) +listSubShapeIDs = geompy.SubShapeAllIDs(geomObj_1, geompy.ShapeType["VERTEX"]) +Pipe_1 = geompy.MakePipe(Face_1, Arc_1) +Electrode_1 = geompy.MakePartitionNonSelfIntersectedShape([Cylinder_3, Cylinder_4, Pipe_1], [], [], [], geompy.ShapeType["SOLID"], 0, [], 0, True) +[geomObj_2,geomObj_3,geomObj_4,geomObj_5,geomObj_6,geomObj_7,geomObj_8] = geompy.SubShapeAll(Electrode_1, geompy.ShapeType["FACE"]) +Vertex_5 = geompy.MakeVertex("dist_el_x_n", "dist_el_y_n", "h_el") +Cylinder_5 = geompy.MakeCylinder(Vertex_5, OX, "r_el", "l_part1") +Vertex_6 = geompy.MakeVertex("dist_el_x_pipe_h_n", "dist_el_y_n", "h_el_pipe_h") +Vertex_7 = geompy.MakeVertex("dist_el_x_pipe_n", "dist_el_y_n", "h_el_pipe") +Arc_2 = geompy.MakeArc(Vertex_5, Vertex_6, Vertex_7) +Cylinder_6 = geompy.MakeCylinder(Vertex_7, OZ, "r_el", "l_part2") +[Face_2] = geompy.SubShapes(Cylinder_6, [12]) +Pipe_2 = geompy.MakePipe(Face_2, Arc_2) +Electrode_2 = geompy.MakePartitionNonSelfIntersectedShape([Cylinder_5, Cylinder_6, Pipe_2], [], [], [], geompy.ShapeType["SOLID"], 0, [], 0, True) +Partition_1 = geompy.MakePartitionNonSelfIntersectedShape([Cylinder_1, Cylinder_2], [], [], [], geompy.ShapeType["SOLID"], 0, [], 0, True) +Cut_1 = geompy.MakeCutList(Partition_1, [Electrode_1, Electrode_2], True) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["VERTEX"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) @@ -229,10 +228,39 @@ listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["VERTEX"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["VERTEX"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["SOLID"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["SOLID"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) +listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["SOLID"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["SOLID"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["SOLID"]) @@ -257,71 +285,50 @@ listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["SOLID"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["SOLID"]) listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["SOLID"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -listSubShapeIDs = geompy.SubShapeAllIDs(Cut_1, geompy.ShapeType["FACE"]) -OuterIsolation = geompy.CreateGroup(Cut_1, geompy.ShapeType["FACE"]) -geompy.UnionIDs(OuterIsolation, [76, 71, 11, 4]) -Contact1 = geompy.CreateGroup(Cut_1, geompy.ShapeType["FACE"]) -geompy.UnionIDs(Contact1, [33, 55, 60, 65, 67, 83, 90]) +listSameIDs = geompy.GetSameIDs(Cut_1, geomObj_2) +listSameIDs = geompy.GetSameIDs(Cut_1, geomObj_4) +listSameIDs = geompy.GetSameIDs(Cut_1, geomObj_7) +listSameIDs = geompy.GetSameIDs(Cut_1, geomObj_8) Contact2 = geompy.CreateGroup(Cut_1, geompy.ShapeType["FACE"]) -geompy.UnionIDs(Contact2, [21, 45, 50, 78, 88]) +geompy.UnionIDs(Contact2, [31, 41, 51, 74, 21, 64]) +Contact1 = geompy.CreateGroup(Cut_1, geompy.ShapeType["FACE"]) +geompy.UnionIDs(Contact1, [26, 36, 46, 53, 69, 76]) +OuterIsolation = geompy.CreateGroup(Cut_1, geompy.ShapeType["FACE"]) +geompy.UnionIDs(OuterIsolation, [57, 4, 62, 11]) Medium = geompy.CreateGroup(Cut_1, geompy.ShapeType["SOLID"]) geompy.UnionIDs(Medium, [2]) Air = geompy.CreateGroup(Cut_1, geompy.ShapeType["SOLID"]) -geompy.UnionIDs(Air, [69]) -geompy.DifferenceIDs(Contact1, [33, 55, 60, 65, 67, 83, 90]) -geompy.UnionIDs(Contact1, [33, 55, 60, 67, 83, 90]) -geompy.DifferenceIDs(Contact2, [21, 45, 50, 78, 88]) -geompy.UnionIDs(Contact2, [21, 45, 50, 78, 88, 65]) +geompy.UnionIDs(Air, [55]) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) geompy.addToStudy( OZ, 'OZ' ) geompy.addToStudy( Cylinder_1, 'Cylinder_1' ) -geompy.addToStudyInFather( Cylinder_1, Cylinder_1_face_10, 'Cylinder_1:face_10' ) geompy.addToStudy( Vertex_1, 'Vertex_1' ) -geompy.addToStudy( Vector_Normal_1, 'Vector_Normal_1' ) geompy.addToStudy( Cylinder_2, 'Cylinder_2' ) -geompy.addToStudy( Line_1, 'Line_1' ) -geompy.addToStudy( Line_2, 'Line_2' ) -geompy.addToStudy( Vector_1, 'Vector_1' ) geompy.addToStudy( Vertex_2, 'Vertex_2' ) -geompy.addToStudy( Vertex_3, 'Vertex_3' ) geompy.addToStudy( Cylinder_3, 'Cylinder_3' ) +geompy.addToStudy( Vertex_3, 'Vertex_3' ) +geompy.addToStudy( Vertex_4, 'Vertex_4' ) +geompy.addToStudy( Arc_1, 'Arc_1' ) geompy.addToStudy( Cylinder_4, 'Cylinder_4' ) -geompy.addToStudy( Vector_2, 'Vector_2' ) +geompy.addToStudyInFather( Cylinder_4, Face_1, 'Face_1' ) +geompy.addToStudy( Pipe_1, 'Pipe_1' ) +geompy.addToStudy( Electrode_1, 'Electrode_1' ) +geompy.addToStudy( Vertex_5, 'Vertex_5' ) geompy.addToStudy( Cylinder_5, 'Cylinder_5' ) +geompy.addToStudy( Vertex_6, 'Vertex_6' ) +geompy.addToStudy( Vertex_7, 'Vertex_7' ) +geompy.addToStudy( Arc_2, 'Arc_2' ) geompy.addToStudy( Cylinder_6, 'Cylinder_6' ) -geompy.addToStudy( Translation_1, 'Translation_1' ) -geompy.addToStudy( Translation_2, 'Translation_2' ) -geompy.addToStudy( Fuse_1, 'Fuse_1' ) -geompy.addToStudy( Fuse_2, 'Fuse_2' ) +geompy.addToStudyInFather( Cylinder_6, Face_2, 'Face_2' ) +geompy.addToStudy( Pipe_2, 'Pipe_2' ) +geompy.addToStudy( Electrode_2, 'Electrode_2' ) geompy.addToStudy( Partition_1, 'Partition_1' ) geompy.addToStudy( Cut_1, 'Cut_1' ) -geompy.addToStudyInFather( Cut_1, OuterIsolation, 'OuterIsolation' ) -geompy.addToStudyInFather( Cut_1, Contact1, 'Contact1' ) geompy.addToStudyInFather( Cut_1, Contact2, 'Contact2' ) +geompy.addToStudyInFather( Cut_1, Contact1, 'Contact1' ) +geompy.addToStudyInFather( Cut_1, OuterIsolation, 'OuterIsolation' ) geompy.addToStudyInFather( Cut_1, Medium, 'Medium' ) geompy.addToStudyInFather( Cut_1, Air, 'Air' ) @@ -333,107 +340,30 @@ from salome.smesh import smeshBuilder smesh = smeshBuilder.New(theStudy) -smeshObj_1 = smesh.Mesh(Cut_1) -NETGEN_1D_2D_3D = smesh.CreateHypothesis('NETGEN_2D3D', 'libNETGENEngine.so') -status = smeshObj_1.AddHypothesis(NETGEN_1D_2D_3D) -NETGEN_3D_Parameters_1 = smesh.CreateHypothesis('NETGEN_Parameters', 'libNETGENEngine.so') -status = smeshObj_1.AddHypothesis(NETGEN_3D_Parameters_1) -NETGEN_3D_Parameters_1.SetMaxSize( 0.0108887 ) +Mesh_1 = smesh.Mesh(Cut_1) +NETGEN_1D_2D_3D = Mesh_1.Tetrahedron(algo=smeshBuilder.NETGEN_1D2D3D) +NETGEN_3D_Parameters_1 = NETGEN_1D_2D_3D.Parameters() +NETGEN_3D_Parameters_1.SetMaxSize( 0.00680937 ) NETGEN_3D_Parameters_1.SetSecondOrder( 0 ) NETGEN_3D_Parameters_1.SetOptimize( 1 ) -NETGEN_3D_Parameters_1.SetFineness( 3 ) NETGEN_3D_Parameters_1.SetMinSize( 0 ) NETGEN_3D_Parameters_1.SetUseSurfaceCurvature( 1 ) NETGEN_3D_Parameters_1.SetFuseEdges( 1 ) NETGEN_3D_Parameters_1.SetQuadAllowed( 0 ) -isDone = smeshObj_1.Compute() -smeshObj_2 = smeshObj_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.FACE) -smeshObj_3 = smeshObj_1.GroupOnGeom(Contact1,'Contact1',SMESH.FACE) -smeshObj_4 = smeshObj_1.GroupOnGeom(Contact2,'Contact2',SMESH.FACE) -smeshObj_5 = smeshObj_1.GroupOnGeom(Medium,'Medium',SMESH.VOLUME) -smeshObj_6 = smeshObj_1.GroupOnGeom(Air,'Air',SMESH.VOLUME) -smeshObj_7 = smeshObj_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.NODE) -smeshObj_8 = smeshObj_1.GroupOnGeom(Contact1,'Contact1',SMESH.NODE) -smeshObj_9 = smeshObj_1.GroupOnGeom(Contact2,'Contact2',SMESH.NODE) -smeshObj_10 = smeshObj_1.GroupOnGeom(Medium,'Medium',SMESH.NODE) -smeshObj_11 = smeshObj_1.GroupOnGeom(Air,'Air',SMESH.NODE) -smesh.SetName(smeshObj_1, 'Mesh_1') -try: - smeshObj_1.ExportMED(pwd + '/' + str(meshname) + '.med', 0, SMESH.MED_V2_2, 1, None ,1) - pass -except: - print 'ExportToMEDX() failed. Invalid file name?' -smeshObj_1.RemoveGroupWithContents( smeshObj_2 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_3 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_4 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_5 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_6 ) -smeshObj_12 = smeshObj_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.FACE) -smeshObj_13 = smeshObj_1.GroupOnGeom(Contact1,'Contact1',SMESH.FACE) -smeshObj_14 = smeshObj_1.GroupOnGeom(Contact2,'Contact2',SMESH.FACE) -smeshObj_15 = smeshObj_1.GroupOnGeom(Medium,'Medium',SMESH.VOLUME) -smeshObj_16 = smeshObj_1.GroupOnGeom(Air,'Air',SMESH.VOLUME) -smeshObj_17 = smeshObj_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.NODE) -smeshObj_18 = smeshObj_1.GroupOnGeom(Contact1,'Contact1',SMESH.NODE) -smeshObj_19 = smeshObj_1.GroupOnGeom(Contact2,'Contact2',SMESH.NODE) -smeshObj_20 = smeshObj_1.GroupOnGeom(Medium,'Medium',SMESH.NODE) -smeshObj_21 = smeshObj_1.GroupOnGeom(Air,'Air',SMESH.NODE) -smeshObj_1.RemoveGroupWithContents( smeshObj_7 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_8 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_9 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_10 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_11 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_17 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_18 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_19 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_20 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_21 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_12 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_13 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_14 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_15 ) -smeshObj_1.RemoveGroupWithContents( smeshObj_16 ) -smeshObj_22 = smeshObj_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.FACE) -smeshObj_23 = smeshObj_1.GroupOnGeom(Contact1,'Contact1',SMESH.FACE) -smeshObj_24 = smeshObj_1.GroupOnGeom(Contact2,'Contact2',SMESH.FACE) -smeshObj_25 = smeshObj_1.GroupOnGeom(Medium,'Medium',SMESH.VOLUME) -smeshObj_26 = smeshObj_1.GroupOnGeom(Air,'Air',SMESH.VOLUME) -smeshObj_27 = smeshObj_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.NODE) -smeshObj_28 = smeshObj_1.GroupOnGeom(Contact1,'Contact1',SMESH.NODE) -smeshObj_29 = smeshObj_1.GroupOnGeom(Contact2,'Contact2',SMESH.NODE) -smeshObj_30 = smeshObj_1.GroupOnGeom(Medium,'Medium',SMESH.NODE) -smeshObj_31 = smeshObj_1.GroupOnGeom(Air,'Air',SMESH.NODE) -isDone = smeshObj_1.Compute() -[ smeshObj_22, smeshObj_23, smeshObj_24, smeshObj_25, smeshObj_26, smeshObj_27, smeshObj_28, smeshObj_29, smeshObj_30, smeshObj_31 ] = smeshObj_1.GetGroups() -isDone = smeshObj_1.Compute() -[ smeshObj_22, smeshObj_23, smeshObj_24, smeshObj_25, smeshObj_26, smeshObj_27, smeshObj_28, smeshObj_29, smeshObj_30, smeshObj_31 ] = smeshObj_1.GetGroups() -smeshObj_1.Clear() -smeshObj_1.RemoveGroup( smeshObj_26 ) -smeshObj_1.RemoveGroup( smeshObj_25 ) -smeshObj_1.RemoveGroup( smeshObj_24 ) -smeshObj_1.RemoveGroup( smeshObj_23 ) -smeshObj_1.RemoveGroup( smeshObj_22 ) -smeshObj_1.RemoveGroup( smeshObj_31 ) -smeshObj_1.RemoveGroup( smeshObj_30 ) -smeshObj_1.RemoveGroup( smeshObj_29 ) -smeshObj_1.RemoveGroup( smeshObj_28 ) -smeshObj_1.RemoveGroup( smeshObj_27 ) -status = smeshObj_1.RemoveHypothesis(NETGEN_1D_2D_3D) -status = smeshObj_1.RemoveHypothesis(NETGEN_3D_Parameters_1) -Mesh_1 = smesh.Mesh(Cut_1) -status = Mesh_1.AddHypothesis(NETGEN_3D_Parameters_1) -status = Mesh_1.AddHypothesis(NETGEN_1D_2D_3D) -isDone = Mesh_1.Compute() -OuterIsolation_1 = Mesh_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.FACE) -Contact1_1 = Mesh_1.GroupOnGeom(Contact1,'Contact1',SMESH.FACE) Contact2_1 = Mesh_1.GroupOnGeom(Contact2,'Contact2',SMESH.FACE) +Contact1_1 = Mesh_1.GroupOnGeom(Contact1,'Contact1',SMESH.FACE) +OuterIsolation_1 = Mesh_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.FACE) Medium_1 = Mesh_1.GroupOnGeom(Medium,'Medium',SMESH.VOLUME) Air_1 = Mesh_1.GroupOnGeom(Air,'Air',SMESH.VOLUME) -OuterIsolation_2 = Mesh_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.NODE) -Contact1_2 = Mesh_1.GroupOnGeom(Contact1,'Contact1',SMESH.NODE) Contact2_2 = Mesh_1.GroupOnGeom(Contact2,'Contact2',SMESH.NODE) +Contact1_2 = Mesh_1.GroupOnGeom(Contact1,'Contact1',SMESH.NODE) +OuterIsolation_2 = Mesh_1.GroupOnGeom(OuterIsolation,'OuterIsolation',SMESH.NODE) Medium_2 = Mesh_1.GroupOnGeom(Medium,'Medium',SMESH.NODE) Air_2 = Mesh_1.GroupOnGeom(Air,'Air',SMESH.NODE) +[ Contact2_1, Contact1_1, OuterIsolation_1, Medium_1, Air_1, Contact2_2, Contact1_2, OuterIsolation_2, Medium_2, Air_2 ] = Mesh_1.GetGroups() +NETGEN_3D_Parameters_1.SetFineness( 4 ) +isDone = Mesh_1.Compute() +[ Contact2_1, Contact1_1, OuterIsolation_1, Medium_1, Air_1, Contact2_2, Contact1_2, OuterIsolation_2, Medium_2, Air_2 ] = Mesh_1.GetGroups() smesh.SetName(Mesh_1, 'Mesh_1') try: Mesh_1.ExportMED(pwd + '/' + str(meshname) + '.med', 0, SMESH.MED_V2_2, 1, None ,1) @@ -441,85 +371,21 @@ except: print 'ExportToMEDX() failed. Invalid file name?' -## some objects were removed -aStudyBuilder = theStudy.NewBuilder() -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_23)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_24)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_29)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_28)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_27)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_21)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_2)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_3)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_4)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_31)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_12)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_30)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_13)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_14)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_22)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_1.GetMesh())) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_26)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_25)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_16)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_15)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_6)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_5)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_19)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_20)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_8)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_9)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_7)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_17)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_18)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_10)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) -SO = theStudy.FindObjectIOR(theStudy.ConvertObjectToIOR(smeshObj_11)) -if SO: aStudyBuilder.RemoveObjectWithChildren(SO) ## Set names of Mesh objects -smesh.SetName(Air_2, 'Air') -smesh.SetName(NETGEN_1D_2D_3D, 'NETGEN 1D-2D-3D') -smesh.SetName(Medium_2, 'Medium') smesh.SetName(OuterIsolation_2, 'OuterIsolation') -smesh.SetName(Contact2_2, 'Contact2') -smesh.SetName(Medium_1, 'Medium') smesh.SetName(Contact1_2, 'Contact1') +smesh.SetName(Contact2_2, 'Contact2') +smesh.SetName(Air_2, 'Air') +smesh.SetName(Medium_2, 'Medium') +smesh.SetName(NETGEN_1D_2D_3D.GetAlgorithm(), 'NETGEN 1D-2D-3D') smesh.SetName(Air_1, 'Air') -smesh.SetName(NETGEN_3D_Parameters_1, 'NETGEN 3D Parameters_1') -smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1') smesh.SetName(Contact2_1, 'Contact2') -smesh.SetName(Contact1_1, 'Contact1') +smesh.SetName(Medium_1, 'Medium') smesh.SetName(OuterIsolation_1, 'OuterIsolation') +smesh.SetName(Contact1_1, 'Contact1') +smesh.SetName(Mesh_1.GetMesh(), 'Mesh_1') +smesh.SetName(NETGEN_3D_Parameters_1, 'NETGEN 3D Parameters_1') if salome.sg.hasDesktop(): diff --git a/examples/Mobini2017/README.rst b/examples/Mobini2017/README.rst index e47e2b1..1820048 100644 --- a/examples/Mobini2017/README.rst +++ b/examples/Mobini2017/README.rst @@ -17,6 +17,7 @@ The results will be stored in a directory named `results`. Visualization ------------- -ParaView files to reproduce figured in our EMBC contribution can be generated by opening ParaView 5.5 and choosing the .pvsm respective file in the `load state` dialog. +ParaView files to reproduce figureis in our EMBC contribution can be generated by opening ParaView 5.5 and choosing the .pvsm respective file in the `load state` dialog. Note that you have to choose the files again as ParaView stores absolute paths. You can use the filename as such, but have to navigate to the `results` directory that will be created during a successful run. +The line plots have been generated by gnuplot scripts (.gnu). The plotted .tsv files were previously exported from ParaView. diff --git a/examples/Mobini2017/geometryMobini_white.png b/examples/Mobini2017/geometryMobini_white.png index 1bf8bbb29f9f649a8dc11e76798e23888b2b5092..27d92e8b9a36498a2bc2cd8758307badd4955f26 100644 GIT binary patch literal 19952 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 OqIOB^Vy24aKmQLfK563s literal 15948 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 diff --git a/examples/Mobini2017/parameters_mobini2017.yml b/examples/Mobini2017/parameters_mobini2017.yml index ec55c9f..2fd02c6 100644 --- a/examples/Mobini2017/parameters_mobini2017.yml +++ b/examples/Mobini2017/parameters_mobini2017.yml @@ -17,14 +17,19 @@ degree: 2 geometry: - [r_el, r_well, h_well, h_el, dist_el] + [r_el, r_well, h_well, h_el, dist_el, level, l_el, ratio] +# based on https://www.tpp.ch/page/produkte/09_zellkultur_testplatte.php +# assumption: 80% filled geometryvalues: - r_well : 0.0346 - h_well : .01705 + r_well : 0.01689 + h_well : .01733 h_el : .001 r_el : 0.0005 dist_el : 0.022 + level : 0.8 + l_el : 0.05 # length of electrode + ratio : 0.44 # ratio of two parts of electrode => 0.44 means 22mm for the bottom and the rest for the upper part materials: [Air, Medium] diff --git a/examples/Mobini2017/paraview/field_along_z.tsv b/examples/Mobini2017/paraview/field_along_z.tsv new file mode 100644 index 0000000..c03e9ef --- /dev/null +++ b/examples/Mobini2017/paraview/field_along_z.tsv @@ -0,0 +1,27 @@ +"f_101:0" "f_101:1" "f_101:2" "vtkValidPointMask" "arc_length" "Points:0" "Points:1" "Points:2" +0.0067493 32.874 -0.011658 1 0 9.5181e-07 5.9828e-06 0 +0.0028702 32.817 0.030013 1 0.0005456 9.5181e-07 5.9828e-06 0.0005456 +-0.0064539 32.76 0.034366 1 0.0010912 9.5181e-07 5.9828e-06 0.0010912 +-0.013082 32.57 -0.054212 1 0.0016368 9.5181e-07 5.9828e-06 0.0016368 +-0.0076559 32.316 -0.051239 1 0.0021824 9.5181e-07 5.9828e-06 0.0021824 +0.00012727 32.03 -0.0030524 1 0.002728 9.5181e-07 5.9828e-06 0.002728 +-0.0028232 31.638 -0.0092059 1 0.0032736 9.5181e-07 5.9828e-06 0.0032736 +-0.0035284 31.244 -0.0069511 1 0.0038192 9.5181e-07 5.9828e-06 0.0038192 +-0.0023616 30.814 -0.0064292 1 0.0043648 9.5181e-07 5.9828e-06 0.0043648 +-0.0014295 30.383 -0.0061741 1 0.0049104 9.5181e-07 5.9828e-06 0.0049104 +-0.0017296 29.907 -0.005032 1 0.005456 9.5181e-07 5.9828e-06 0.005456 +-0.0062166 29.441 -0.0037425 1 0.0060016 9.5181e-07 5.9828e-06 0.0060016 +-0.00088495 28.986 -0.0044792 1 0.0065472 9.5181e-07 5.9828e-06 0.0065472 +0.0015679 28.536 -0.01066 1 0.0070928 9.5181e-07 5.9828e-06 0.0070928 +-0.0026346 28.086 -0.0031965 1 0.0076384 9.5181e-07 5.9828e-06 0.0076384 +-0.0051085 27.662 -0.0029609 1 0.008184 9.5181e-07 5.9828e-06 0.008184 +-0.0067098 27.268 -0.0023357 1 0.0087296 9.5181e-07 5.9828e-06 0.0087296 +-0.0064558 26.936 0.009218 1 0.0092752 9.5181e-07 5.9828e-06 0.0092752 +-0.0016056 26.603 -0.0018756 1 0.0098208 9.5181e-07 5.9828e-06 0.0098208 +-0.001635 26.344 -0.005492 1 0.010366 9.5181e-07 5.9828e-06 0.010366 +-0.005187 26.071 0.010265 1 0.010912 9.5181e-07 5.9828e-06 0.010912 +-0.0035871 25.857 -0.023019 1 0.011458 9.5181e-07 5.9828e-06 0.011458 +-0.0018272 25.64 -0.087747 1 0.012003 9.5181e-07 5.9828e-06 0.012003 +-0.0039466 25.581 -0.077043 1 0.012549 9.5181e-07 5.9828e-06 0.012549 +-0.0068863 25.556 -0.050388 1 0.013094 9.5181e-07 5.9828e-06 0.013094 +-0.0047272 25.477 -0.022677 1 0.01364 9.5181e-07 5.9828e-06 0.01364 diff --git a/examples/Mobini2017/paraview/field_between_electrodes.tsv b/examples/Mobini2017/paraview/field_between_electrodes.tsv new file mode 100644 index 0000000..4d94eb8 --- /dev/null +++ b/examples/Mobini2017/paraview/field_between_electrodes.tsv @@ -0,0 +1,42 @@ +"f_60:0" "f_60:1" "f_60:2" "vtkValidPointMask" "arc_length" "Points:0" "Points:1" "Points:2" +0.0013359 179.17 0.68306 1 0 0.0075 -0.011 0.001 +2.3956 97.348 18.134 1 0.00055 0.0075 -0.01045 0.001 +3.8086 75.372 17.028 1 0.0011 0.0075 -0.0099 0.001 +4.7255 64.038 13.753 1 0.00165 0.0075 -0.00935 0.001 +5.2612 56.452 10.597 1 0.0022 0.0075 -0.0088 0.001 +5.4673 50.711 8.1774 1 0.00275 0.0075 -0.00825 0.001 +5.4852 46.167 6.3965 1 0.0033 0.0075 -0.0077 0.001 +5.3176 42.533 5.0415 1 0.00385 0.0075 -0.00715 0.001 +5.0577 39.627 3.933 1 0.0044 0.0075 -0.0066 0.001 +4.7499 37.306 3.1208 1 0.00495 0.0075 -0.00605 0.001 +4.3828 35.39 2.522 1 0.0055 0.0075 -0.0055 0.001 +3.9626 33.758 2.0344 1 0.00605 0.0075 -0.00495 0.001 +3.5371 32.499 1.6539 1 0.0066 0.0075 -0.0044 0.001 +3.108 31.494 1.2946 1 0.00715 0.0075 -0.00385 0.001 +2.6649 30.669 1.0784 1 0.0077 0.0075 -0.0033 0.001 +2.2339 29.938 0.80338 1 0.00825 0.0075 -0.00275 0.001 +1.8003 29.485 0.61123 1 0.0088 0.0075 -0.0022 0.001 +1.3437 29.012 0.47194 1 0.00935 0.0075 -0.00165 0.001 +0.87782 28.791 0.29362 1 0.0099 0.0075 -0.0011 0.001 +0.44899 28.61 0.13737 1 0.01045 0.0075 -0.00055 0.001 +-0.0067369 28.592 -0.010266 1 0.011 0.0075 0 0.001 +-0.44286 28.616 -0.12861 1 0.01155 0.0075 0.00055 0.001 +-0.88761 28.838 -0.30995 1 0.0121 0.0075 0.0011 0.001 +-1.3435 29.08 -0.48618 1 0.01265 0.0075 0.00165 0.001 +-1.771 29.464 -0.63323 1 0.0132 0.0075 0.0022 0.001 +-2.2187 30.028 -0.8564 1 0.01375 0.0075 0.00275 0.001 +-2.6672 30.617 -1.0445 1 0.0143 0.0075 0.0033 0.001 +-3.1155 31.394 -1.3204 1 0.01485 0.0075 0.00385 0.001 +-3.5502 32.485 -1.6287 1 0.0154 0.0075 0.0044 0.001 +-3.9576 33.792 -1.9927 1 0.01595 0.0075 0.00495 0.001 +-4.3717 35.394 -2.5329 1 0.0165 0.0075 0.0055 0.001 +-4.7201 37.317 -3.0806 1 0.01705 0.0075 0.00605 0.001 +-5.0534 39.698 -4.0386 1 0.0176 0.0075 0.0066 0.001 +-5.3105 42.552 -4.8915 1 0.01815 0.0075 0.00715 0.001 +-5.4726 46.171 -6.3488 1 0.0187 0.0075 0.0077 0.001 +-5.4765 50.686 -8.1626 1 0.01925 0.0075 0.00825 0.001 +-5.2464 56.462 -10.608 1 0.0198 0.0075 0.0088 0.001 +-4.7266 64.137 -13.728 1 0.02035 0.0075 0.00935 0.001 +-3.801 75.359 -17.045 1 0.0209 0.0075 0.0099 0.001 +-2.3772 97.109 -18.441 1 0.02145 0.0075 0.01045 0.001 +0.1436 177.34 -1.1076 1 0.022 0.0075 0.011 0.001 diff --git a/examples/Mobini2017/paraview/field_tupaj.py b/examples/Mobini2017/paraview/field_tupaj.py index ab09077..87da8cd 100644 --- a/examples/Mobini2017/paraview/field_tupaj.py +++ b/examples/Mobini2017/paraview/field_tupaj.py @@ -12,8 +12,8 @@ def Tupaj_func(V, a, d, x): a = 0.0005 # spacing between electrodes d = 0.022 -xmin = -0.01 -xmax = 0.01 +xmin = -0.01025 +xmax = 0.01025 xvalues = np.linspace(xmin, xmax, 50) result = np.empty(len(xvalues)) @@ -30,4 +30,4 @@ def Tupaj_func(V, a, d, x): # plot and output plt.plot(xvalues, result) plt.show() -np.savetxt('field_tupaj.txt', np.transpose([xvalues, result]), delimiter=',', header='position, field') +np.savetxt('field_tupaj.txt', np.transpose([xvalues, result]), delimiter='\t', header='position\tAnalytical') diff --git a/examples/Mobini2017/paraview/plot_efield_glyphs_times.pvsm b/examples/Mobini2017/paraview/plot_efield_glyphs_times.pvsm new file mode 100644 index 0000000..32b8461 --- /dev/null +++ b/examples/Mobini2017/paraview/plot_efield_glyphs_times.pvsm @@ -0,0 +1,61184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Mobini2017/paraview/plot_field_along_z.gnu b/examples/Mobini2017/paraview/plot_field_along_z.gnu new file mode 100644 index 0000000..2fd8a84 --- /dev/null +++ b/examples/Mobini2017/paraview/plot_field_along_z.gnu @@ -0,0 +1,14 @@ +set term pdf +set out 'field_along_z_mobini.pdf' + +set key center box +set key width 1.5 +set key height 2 +set yrange [-2:*] +set ylabel "Electric Field [V/m]" +set xlabel 'z [mm]' + +p 'field_along_z.tsv' u ($8*1e3):1 w l lw 3 lc rgb 'red' t 'E_x',\ +'field_along_z.tsv' u ($8*1e3):2 w l lw 3 lc rgb 'blue' t 'E_y',\ +'field_along_z.tsv' u ($8*1e3):3 w l lw 3 lc rgb 'green' t 'E_z',\ +'field_along_z.tsv' u ($8*1e3):(sqrt($1**2+$2**2+$3**2)) w p lc rgb 'black' pt 5 ps .5 t '|E|' diff --git a/examples/Mobini2017/paraview/plot_field_between_electrodes.gnu b/examples/Mobini2017/paraview/plot_field_between_electrodes.gnu new file mode 100644 index 0000000..9d44149 --- /dev/null +++ b/examples/Mobini2017/paraview/plot_field_between_electrodes.gnu @@ -0,0 +1,17 @@ +set term pdf +set out 'field_cut_center_mobini.pdf' + +set key center top box +set key width 1.1 +set key height 1.1 +set xrange [-0.5:22.5] +set yrange [-25:190] +set ylabel "Electric Field [V/m]" +set xlabel 'distance to left electrode [mm]' +set ytics -20,20,180 + +p 'field_between_electrodes.tsv' u (($7+0.011)*1e3):1 w l lw 3 lc rgb 'red' t 'E_x',\ +'field_between_electrodes.tsv' u (($7+0.011)*1e3):2 w l lw 3 lc rgb 'blue' t 'E_y',\ +'field_between_electrodes.tsv' u (($7+0.011)*1e3):3 w l lw 3 lc rgb 'green' t 'E_z',\ +'field_between_electrodes.tsv' u (($7+0.011)*1e3):(sqrt($1**2+$2**2+$3**2)) w p lc rgb 'black' pt 5 ps .5 t '|E|',\ +'field_tupaj.txt' u ($1*1e3):2 w l lw 3 lc rgb 'dark-violet' t 'Analytical' diff --git a/examples/Mobini2017/paraview/plot_field_between_electrodes.pvsm b/examples/Mobini2017/paraview/plot_field_between_electrodes.pvsm index ef2a781..669f733 100644 --- a/examples/Mobini2017/paraview/plot_field_between_electrodes.pvsm +++ b/examples/Mobini2017/paraview/plot_field_between_electrodes.pvsm @@ -157,6 +157,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -287,7 +404,7 @@ - + @@ -339,15 +456,15 @@ - + - + - + @@ -404,7 +521,7 @@ - + @@ -457,14 +574,14 @@ - - - - + + + + - + @@ -508,36 +625,36 @@ - - + + - - + + - + - - + + - + - + - - + + - + @@ -545,116 +662,116 @@ - + - + - + - + - + - + - - + + - + - - + + - + - + - + - - - - + + + + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - - + + - + - + - - + + - + @@ -662,81 +779,81 @@ - + - + - + - + - + - + - - + + - + - - + + - + - + - - + + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -872,7 +989,7 @@ - + @@ -924,15 +1041,15 @@ - + - + - + @@ -976,123 +1093,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1332,6 +1332,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -1362,11 +1386,11 @@ - + - + @@ -1390,7 +1414,7 @@ - + @@ -1404,52 +1428,52 @@ - - + + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - + - + - + @@ -1482,11 +1506,11 @@ - + - + @@ -1500,30 +1524,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -1572,8 +1572,8 @@ - - + + @@ -2659,8 +2659,8 @@ - - + + @@ -3764,13 +3764,13 @@ - - + + - - + + @@ -5258,58 +5258,58 @@ - - + + - - - + + + - - - + + + - - + + - + - + - + - + - + - - + + - + - + - + - + - - + + @@ -5317,267 +5317,267 @@ - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -5593,25 +5593,25 @@ - - + + - + - + - + - + - - + + @@ -5619,267 +5619,267 @@ - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -5895,21 +5895,26 @@ - - - + + + + + + + + - + - + - + - - + + - + @@ -5923,36 +5928,31 @@ - - + + - + - - - - - - - - + + + - + - + - + - - + + - + @@ -5966,58 +5966,58 @@ - - + + - + - - - + + + - - + + - + - + - + - + - + - - + + - + - + - + - + - - + + @@ -6025,272 +6025,272 @@ - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - + - + - - - + + + - - - + + + - - + + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -6306,25 +6306,25 @@ - - + + - + - + - + - + - - + + @@ -6332,268 +6332,268 @@ - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - + - + - - - - + + + + - - + + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -6609,31 +6609,31 @@ - - - + + + - - - + + + - - - + + + - + - + - + - - + + - + @@ -6647,31 +6647,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6685,31 +6685,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6723,31 +6723,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6761,31 +6761,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6799,31 +6799,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6837,31 +6837,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6875,31 +6875,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6913,31 +6913,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6951,31 +6951,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -6989,31 +6989,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -7027,31 +7027,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -7065,31 +7065,31 @@ - - + + - + - - - + + + - + - + - + - - + + - + @@ -7103,10 +7103,10 @@ - - + + - + @@ -9338,7 +9338,7 @@ - + @@ -9347,72 +9347,152 @@ + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + - + - + - + + + + + + + + + + + - + - + - + + + + + + + + + + + - + - + - + + + + + + + + + + + - + - + - + + + + + + + + + + + - + - + + + + + + + + + + + - + @@ -9426,8 +9506,8 @@ - + @@ -10115,14 +10195,14 @@ - - + + - + - + - + @@ -10131,7 +10211,7 @@ - + @@ -13617,19 +13697,19 @@ - + - + - - + + - + - + - + @@ -13638,7 +13718,7 @@ - + @@ -21372,19 +21452,19 @@ - + - + - - + + - + - + - + @@ -21393,7 +21473,7 @@ - + @@ -21427,19 +21507,19 @@ - + - + - - + + - + - + - + @@ -21448,7 +21528,7 @@ - + @@ -21482,460 +21562,460 @@ - + - + - - - - - - - - - - + + + + + + + + + + - + - + - - - - - + + + + + - - + + - + - + - + - + - + - - + + - + - + - + - + - - - - - + + + + + - + - + - - - - + + + + - + - + - - + + - + - + - + - - + + - + - + - + - - + + - + - - - - + + + + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + - - + + - + - - - - + + + + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + - - + + - + - - - - + + + + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + - - + + - + - - - - + + + + - - - - - - + + + + + + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - + - + - + @@ -21992,154 +22072,154 @@ - - + + - + - - - - - + + + + + - + - + - - - - - + + + + + - + - + - - + + - + - - - - - + + + + + - + - + - - - - - + + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - - - - + + + + - - + + - + - + - + - + - - + + - + - - - - - - - - + + + + + + + + - + - - + + - - + + - + - + - + - + - - + + - + - - - - - - - - + + + + + + + + - - - - + + + + - - + + - + - + - + - + @@ -22152,7 +22232,7 @@ - + @@ -22160,7 +22240,7 @@ - + @@ -22235,65 +22315,65 @@ - - + + - + - - - + + + - + - + - + - + - + - - - + + + - + - - + + - + - - - + + + - + - + - + - + - + - - - + + + - + @@ -22539,7 +22619,7 @@ - + @@ -22901,8 +22981,8 @@ - - + + @@ -23340,8 +23420,8 @@ - - + + @@ -23401,14 +23481,14 @@ + - - + + - @@ -23416,19 +23496,19 @@ + - - + + - - + @@ -23446,7 +23526,7 @@ - + @@ -23465,10 +23545,10 @@ - + - + @@ -23490,159 +23570,161 @@ - + - - + + - - - + + + - - - - + - + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + - - - - - - + + + + + + + + + + - - - - - - - - - - + + - - - - - - - + + + + - - - - + + + + - - - + + + - - - - - - + + + + + + - - + + - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + + + - - + + - - + + - - - - + + + + - - - - + + + + + + - - + + - - + + - - + + - - + + - - + + @@ -23653,10 +23735,10 @@ - - + + @@ -23667,8 +23749,6 @@ - - @@ -23683,32 +23763,32 @@ - - - - + + + + - - - - - - - - + + + + + + + + - - - - - + + + + + - - + +