[minetest-mod-mesecons] 01/03: New upstream version 2017.03.05

Julien Puydt julien.puydt at laposte.net
Mon Mar 13 20:11:08 UTC 2017


This is an automated email from the git hooks/post-receive script.

jpuydt-guest pushed a commit to annotated tag debian/2017.03.05-1
in repository minetest-mod-mesecons.

commit 9007ba7763e792aa970ab7f88529add86ce65fb0
Author: Julien Puydt <julien.puydt at laposte.net>
Date:   Mon Mar 13 09:18:12 2017 +0100

    New upstream version 2017.03.05
---
 documentation.json                                 |    2 +
 mesecons/presets.lua                               |   13 +-
 .../textures/jeija_microcontroller_LED_A.png       |  Bin
 .../textures/jeija_microcontroller_LED_B.png       |  Bin
 .../textures/jeija_microcontroller_LED_C.png       |  Bin
 .../textures/jeija_microcontroller_LED_D.png       |  Bin
 mesecons/util.lua                                  |    5 -
 mesecons_button/init.lua                           |    2 +
 mesecons_delayer/init.lua                          |    6 +-
 mesecons_extrawires/corner.lua                     |    2 +-
 mesecons_extrawires/crossover.lua                  |   91 +-
 .../models/mesecons_extrawires_crossover.b3d       |  Bin 0 -> 3233 bytes
 .../src/mesecons_extrawires_crossover.blend        |  Bin 0 -> 498592 bytes
 mesecons_extrawires/tjunction.lua                  |    2 +-
 mesecons_fpga/depends.txt                          |    1 +
 mesecons_fpga/doc/fpga/description.html            |    5 +
 mesecons_fpga/doc/fpga/preview.png                 |  Bin 0 -> 21329 bytes
 mesecons_fpga/doc/fpga/recipe.png                  |  Bin 0 -> 3210 bytes
 mesecons_fpga/doc/programmer/description.html      |    3 +
 mesecons_fpga/doc/programmer/preview.png           |  Bin 0 -> 598 bytes
 mesecons_fpga/doc/programmer/recipe.png            |  Bin 0 -> 1908 bytes
 mesecons_fpga/init.lua                             |  375 ++++
 mesecons_fpga/logic.lua                            |  210 ++
 mesecons_fpga/textures/jeija_fpga_programmer.png   |  Bin 0 -> 311 bytes
 mesecons_fpga/textures/jeija_fpga_sides.png        |  Bin 0 -> 536 bytes
 mesecons_fpga/textures/jeija_fpga_top.png          |  Bin 0 -> 816 bytes
 mesecons_fpga/tool.lua                             |   62 +
 mesecons_gates/init.lua                            |    2 +-
 mesecons_hydroturbine/init.lua                     |   25 +-
 ...dro_turbine.obj => jeija_hydro_turbine_off.obj} |  104 +-
 .../models/jeija_hydro_turbine_on.obj              | 2059 ++++++++++++++++++++
 ...ng => jeija_hydro_turbine_turbine_misc_off.png} |  Bin
 .../jeija_hydro_turbine_turbine_misc_on.png        |  Bin 0 -> 6957 bytes
 ...jeija_hydro_turbine_turbine_top_bottom_off.png} |  Bin
 .../jeija_hydro_turbine_turbine_top_bottom_on.png  |  Bin 0 -> 5128 bytes
 mesecons_insulated/init.lua                        |    2 +-
 .../jeija_insulated_wire_crossing_tb_01.png        |  Bin 305 -> 0 bytes
 .../jeija_insulated_wire_crossing_tb_10.png        |  Bin 270 -> 0 bytes
 .../jeija_insulated_wire_crossing_tb_off.png       |  Bin 293 -> 0 bytes
 .../jeija_insulated_wire_crossing_tb_on.png        |  Bin 209 -> 0 bytes
 .../textures/jeija_insulated_wire_ends_01x.png     |  Bin 246 -> 0 bytes
 .../textures/jeija_insulated_wire_ends_01z.png     |  Bin 252 -> 0 bytes
 .../textures/jeija_insulated_wire_ends_10x.png     |  Bin 238 -> 0 bytes
 .../textures/jeija_insulated_wire_ends_10z.png     |  Bin 261 -> 0 bytes
 mesecons_lamp/init.lua                             |    2 +-
 mesecons_luacontroller/init.lua                    |   17 +
 mesecons_microcontroller/init.lua                  |  128 +-
 .../doc/movestone_sticky/recipe.png                |  Bin 10190 -> 9870 bytes
 mesecons_movestones/init.lua                       |   10 +-
 mesecons_pistons/init.lua                          |   27 +-
 mesecons_pressureplates/init.lua                   |    2 +-
 mesecons_random/init.lua                           |    1 +
 mesecons_receiver/init.lua                         |  169 +-
 mesecons_walllever/init.lua                        |    2 +
 mesecons_wires/init.lua                            |    2 +-
 55 files changed, 3075 insertions(+), 256 deletions(-)

diff --git a/documentation.json b/documentation.json
index 711f7d2..f318501 100644
--- a/documentation.json
+++ b/documentation.json
@@ -42,6 +42,8 @@
 	},
 	"Logic" : {
 		"Luacontroller" : "mesecons_luacontroller/doc/luacontroller",
+		"FPGA" : "mesecons_fpga/doc/fpga",
+		"FPGA Programmer" : "mesecons_fpga/doc/programmer",
 		"Torch" : "mesecons_torch/doc/torch",
 		"Delayer" : "mesecons_delayer/doc/delayer",
 		"Gates" : {
diff --git a/mesecons/presets.lua b/mesecons/presets.lua
index 2f2f643..8c3ed67 100644
--- a/mesecons/presets.lua
+++ b/mesecons/presets.lua
@@ -41,12 +41,19 @@ mesecon.rules.alldirs =
 
 mesecon.rules.buttonlike_get = function(node)
 	local rules = mesecon.rules.buttonlike
-	if node.param2 == 2 then
+	local dir = minetest.facedir_to_dir(node.param2)
+	if dir.x == 1 then
+		-- No action needed
+	elseif dir.z == -1 then
 		rules=mesecon.rotate_rules_left(rules)
-	elseif node.param2 == 3 then
+	elseif dir.x == -1 then
 		rules=mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules))
-	elseif node.param2 == 0 then
+	elseif dir.z == 1 then
 		rules=mesecon.rotate_rules_right(rules)
+	elseif dir.y == -1 then
+		rules=mesecon.rotate_rules_up(rules)
+	elseif dir.y == 1 then
+		rules=mesecon.rotate_rules_down(rules)
 	end
 	return rules
 end
diff --git a/mesecons_microcontroller/textures/jeija_microcontroller_LED_A.png b/mesecons/textures/jeija_microcontroller_LED_A.png
similarity index 100%
rename from mesecons_microcontroller/textures/jeija_microcontroller_LED_A.png
rename to mesecons/textures/jeija_microcontroller_LED_A.png
diff --git a/mesecons_microcontroller/textures/jeija_microcontroller_LED_B.png b/mesecons/textures/jeija_microcontroller_LED_B.png
similarity index 100%
rename from mesecons_microcontroller/textures/jeija_microcontroller_LED_B.png
rename to mesecons/textures/jeija_microcontroller_LED_B.png
diff --git a/mesecons_microcontroller/textures/jeija_microcontroller_LED_C.png b/mesecons/textures/jeija_microcontroller_LED_C.png
similarity index 100%
rename from mesecons_microcontroller/textures/jeija_microcontroller_LED_C.png
rename to mesecons/textures/jeija_microcontroller_LED_C.png
diff --git a/mesecons_microcontroller/textures/jeija_microcontroller_LED_D.png b/mesecons/textures/jeija_microcontroller_LED_D.png
similarity index 100%
rename from mesecons_microcontroller/textures/jeija_microcontroller_LED_D.png
rename to mesecons/textures/jeija_microcontroller_LED_D.png
diff --git a/mesecons/util.lua b/mesecons/util.lua
index c9ba7fc..39f5696 100644
--- a/mesecons/util.lua
+++ b/mesecons/util.lua
@@ -231,11 +231,6 @@ local function hash_blockpos(pos)
 	})
 end
 
--- convert block hash --> node position
-local function unhash_blockpos(hash)
-	return vector.multiply(minetest.get_position_from_hash(hash), BLOCKSIZE)
-end
-
 -- Maps from a hashed mapblock position (as returned by hash_blockpos) to a
 -- table.
 --
diff --git a/mesecons_button/init.lua b/mesecons_button/init.lua
index f287d52..11c328c 100644
--- a/mesecons_button/init.lua
+++ b/mesecons_button/init.lua
@@ -26,6 +26,7 @@ minetest.register_node("mesecons_button:button_off", {
 	paramtype2 = "facedir",
 	legacy_wallmounted = true,
 	walkable = false,
+	on_rotate = mesecon.buttonlike_onrotate,
 	sunlight_propagates = true,
 	selection_box = {
 	type = "fixed",
@@ -67,6 +68,7 @@ minetest.register_node("mesecons_button:button_on", {
 	paramtype2 = "facedir",
 	legacy_wallmounted = true,
 	walkable = false,
+	on_rotate = false,
 	light_source = default.LIGHT_MAX-7,
 	sunlight_propagates = true,
 	selection_box = {
diff --git a/mesecons_delayer/init.lua b/mesecons_delayer/init.lua
index da576ad..7c480c1 100644
--- a/mesecons_delayer/init.lua
+++ b/mesecons_delayer/init.lua
@@ -47,7 +47,8 @@ elseif	i == 2 then delaytime = 0.3
 elseif	i == 3 then delaytime = 0.5
 elseif	i == 4 then delaytime = 1.0 end
 
-boxes = {{ -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 },		-- the main slab
+local boxes = {
+	 { -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 },		-- the main slab
 
 	 { -2/16, -7/16, -4/16, 2/16, -26/64, -3/16 },		-- the jeweled "on" indicator
 	 { -3/16, -7/16, -3/16, 3/16, -26/64, -2/16 },
@@ -57,7 +58,8 @@ boxes = {{ -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 },		-- the main slab
 
 	 { -6/16, -7/16, -6/16, -4/16, -27/64, -4/16 },		-- the timer indicator
 	 { -8/16, -8/16, -1/16, -6/16, -7/16, 1/16 },		-- the two wire stubs
-	 { 6/16, -8/16, -1/16, 8/16, -7/16, 1/16 }}
+	 { 6/16, -8/16, -1/16, 8/16, -7/16, 1/16 }
+}
 
 minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), {
 	description = "Delayer",
diff --git a/mesecons_extrawires/corner.lua b/mesecons_extrawires/corner.lua
index 1e29870..6033893 100644
--- a/mesecons_extrawires/corner.lua
+++ b/mesecons_extrawires/corner.lua
@@ -49,7 +49,7 @@ minetest.register_node("mesecons_extrawires:corner_on", {
 
 minetest.register_node("mesecons_extrawires:corner_off", {
 	drawtype = "nodebox",
-	description = "Mesecon Corner",
+	description = "Insulated Mesecon Corner",
 	tiles = {
 		"jeija_insulated_wire_curved_tb_off.png",
 		"jeija_insulated_wire_curved_tb_off.png^[transformR270",
diff --git a/mesecons_extrawires/crossover.lua b/mesecons_extrawires/crossover.lua
index 4ecfc12..8f3b8c2 100644
--- a/mesecons_extrawires/crossover.lua
+++ b/mesecons_extrawires/crossover.lua
@@ -1,4 +1,4 @@
-function crossover_get_rules(node)
+local function crossover_get_rules(node)
 	return {
 		{--first wire
 			{x=-1,y=0,z=0},
@@ -19,28 +19,19 @@ local crossover_states = {
 }
 
 minetest.register_node("mesecons_extrawires:crossover_off", {
-	description = "Insulated Crossover",
-	drawtype = "nodebox",
+	description = "Insulated Mesecon Crossover",
+	drawtype = "mesh",
+	mesh = "mesecons_extrawires_crossover.b3d",
 	tiles = {
-		"jeija_insulated_wire_crossing_tb_off.png",
-		"jeija_insulated_wire_crossing_tb_off.png",
+		"jeija_insulated_wire_ends_off.png",
+		"jeija_insulated_wire_sides_off.png",
+		"jeija_insulated_wire_sides_off.png",
 		"jeija_insulated_wire_ends_off.png"
 	},
 	paramtype = "light",
 	walkable = false,
 	stack_max = 99,
 	selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
-	node_box = {
-		type = "fixed",
-		fixed = {
-			{ -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
-			{ -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
-			{ -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
-			{ -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
-			{ -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
-			{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
-		},
-	},
 	groups = {dig_immediate=3, mesecon=3},
 	mesecons = {
 		conductor = {
@@ -53,30 +44,18 @@ minetest.register_node("mesecons_extrawires:crossover_off", {
 minetest.register_node("mesecons_extrawires:crossover_01", {
 	description = "You hacker you!",
 	drop = "mesecons_extrawires:crossover_off",
-	drawtype = "nodebox",
+	drawtype = "mesh",
+	mesh = "mesecons_extrawires_crossover.b3d",
 	tiles = {
-		"jeija_insulated_wire_crossing_tb_01.png",
-		"jeija_insulated_wire_crossing_tb_01.png",
-		"jeija_insulated_wire_ends_01x.png",
-		"jeija_insulated_wire_ends_01x.png",
-		"jeija_insulated_wire_ends_01z.png",
-		"jeija_insulated_wire_ends_01z.png"
+		"jeija_insulated_wire_ends_on.png",
+		"jeija_insulated_wire_sides_on.png",
+		"jeija_insulated_wire_sides_off.png",
+		"jeija_insulated_wire_ends_off.png"
 	},
 	paramtype = "light",
 	walkable = false,
 	stack_max = 99,
 	selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
-	node_box = {
-		type = "fixed",
-		fixed = {
-			{ -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
-			{ -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
-			{ -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
-			{ -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
-			{ -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
-			{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
-		},
-	},
 	groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
 	mesecons = {
 		conductor = {
@@ -89,30 +68,18 @@ minetest.register_node("mesecons_extrawires:crossover_01", {
 minetest.register_node("mesecons_extrawires:crossover_10", {
 	description = "You hacker you!",
 	drop = "mesecons_extrawires:crossover_off",
-	drawtype = "nodebox",
+	drawtype = "mesh",
+	mesh = "mesecons_extrawires_crossover.b3d",
 	tiles = {
-		"jeija_insulated_wire_crossing_tb_10.png",
-		"jeija_insulated_wire_crossing_tb_10.png",
-		"jeija_insulated_wire_ends_10x.png",
-		"jeija_insulated_wire_ends_10x.png",
-		"jeija_insulated_wire_ends_10z.png",
-		"jeija_insulated_wire_ends_10z.png"
+		"jeija_insulated_wire_ends_off.png",
+		"jeija_insulated_wire_sides_off.png",
+		"jeija_insulated_wire_sides_on.png",
+		"jeija_insulated_wire_ends_on.png"
 	},
 	paramtype = "light",
 	walkable = false,
 	stack_max = 99,
 	selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
-	node_box = {
-		type = "fixed",
-		fixed = {
-			{ -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
-			{ -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
-			{ -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
-			{ -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
-			{ -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
-			{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
-		},
-	},
 	groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
 	mesecons = {
 		conductor = {
@@ -125,30 +92,18 @@ minetest.register_node("mesecons_extrawires:crossover_10", {
 minetest.register_node("mesecons_extrawires:crossover_on", {
 	description = "You hacker you!",
 	drop = "mesecons_extrawires:crossover_off",
-	drawtype = "nodebox",
+	drawtype = "mesh",
+	mesh = "mesecons_extrawires_crossover.b3d",
 	tiles = {
-		"jeija_insulated_wire_crossing_tb_on.png",
-		"jeija_insulated_wire_crossing_tb_on.png",
-		"jeija_insulated_wire_ends_on.png",
-		"jeija_insulated_wire_ends_on.png",
 		"jeija_insulated_wire_ends_on.png",
+		"jeija_insulated_wire_sides_on.png",
+		"jeija_insulated_wire_sides_on.png",
 		"jeija_insulated_wire_ends_on.png"
 	},
 	paramtype = "light",
 	walkable = false,
 	stack_max = 99,
 	selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}},
-	node_box = {
-		type = "fixed",
-		fixed = {
-			{ -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 },
-			{ -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 },
-			{ -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 },
-			{ -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 },
-			{ -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 },
-			{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
-		},
-	},
 	groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
 	mesecons = {
 		conductor = {
diff --git a/mesecons_extrawires/models/mesecons_extrawires_crossover.b3d b/mesecons_extrawires/models/mesecons_extrawires_crossover.b3d
new file mode 100644
index 0000000..e776535
Binary files /dev/null and b/mesecons_extrawires/models/mesecons_extrawires_crossover.b3d differ
diff --git a/mesecons_extrawires/src/mesecons_extrawires_crossover.blend b/mesecons_extrawires/src/mesecons_extrawires_crossover.blend
new file mode 100644
index 0000000..9ad3749
Binary files /dev/null and b/mesecons_extrawires/src/mesecons_extrawires_crossover.blend differ
diff --git a/mesecons_extrawires/tjunction.lua b/mesecons_extrawires/tjunction.lua
index 1091e83..70f343b 100644
--- a/mesecons_extrawires/tjunction.lua
+++ b/mesecons_extrawires/tjunction.lua
@@ -50,7 +50,7 @@ minetest.register_node("mesecons_extrawires:tjunction_on", {
 
 minetest.register_node("mesecons_extrawires:tjunction_off", {
 	drawtype = "nodebox",
-	description = "T-junction",
+	description = "Insulated Mesecon T-junction",
 	tiles = {
 		"jeija_insulated_wire_tjunction_tb_off.png",
 		"jeija_insulated_wire_tjunction_tb_off.png^[transformR180",
diff --git a/mesecons_fpga/depends.txt b/mesecons_fpga/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/mesecons_fpga/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/mesecons_fpga/doc/fpga/description.html b/mesecons_fpga/doc/fpga/description.html
new file mode 100644
index 0000000..be6bd65
--- /dev/null
+++ b/mesecons_fpga/doc/fpga/description.html
@@ -0,0 +1,5 @@
+FPGAs can be used to chain multiple logic gates together in a compact manner.
+They come with 4 I/O ports and 10 internal registers,
+which can then be connected with eachother to form logic circuits.<br />
+Supported gate types: <b>AND</b>, <b>OR</b>, <b>NOT</b>, <b>XOR</b>, <b>NAND</b>, <b>XNOR</b>, <b>Buffer</b> (=)<br />
+I/O ports: <b>A B C D</b>; Registers: numbered <b>0</b> to <b>9</b>
diff --git a/mesecons_fpga/doc/fpga/preview.png b/mesecons_fpga/doc/fpga/preview.png
new file mode 100644
index 0000000..c156321
Binary files /dev/null and b/mesecons_fpga/doc/fpga/preview.png differ
diff --git a/mesecons_fpga/doc/fpga/recipe.png b/mesecons_fpga/doc/fpga/recipe.png
new file mode 100644
index 0000000..1140bfa
Binary files /dev/null and b/mesecons_fpga/doc/fpga/recipe.png differ
diff --git a/mesecons_fpga/doc/programmer/description.html b/mesecons_fpga/doc/programmer/description.html
new file mode 100644
index 0000000..39e2374
--- /dev/null
+++ b/mesecons_fpga/doc/programmer/description.html
@@ -0,0 +1,3 @@
+The FPGA programmer can be used to copy gate configurations from one FPGA to another.<br />
+Shift+Right-Click an FPGA to read its configuration and "remember" it.
+Left-click (punch) FPGAs to write the saved configuration to them.
diff --git a/mesecons_fpga/doc/programmer/preview.png b/mesecons_fpga/doc/programmer/preview.png
new file mode 100644
index 0000000..7437d39
Binary files /dev/null and b/mesecons_fpga/doc/programmer/preview.png differ
diff --git a/mesecons_fpga/doc/programmer/recipe.png b/mesecons_fpga/doc/programmer/recipe.png
new file mode 100644
index 0000000..778ec5f
Binary files /dev/null and b/mesecons_fpga/doc/programmer/recipe.png differ
diff --git a/mesecons_fpga/init.lua b/mesecons_fpga/init.lua
new file mode 100644
index 0000000..6c462e6
--- /dev/null
+++ b/mesecons_fpga/init.lua
@@ -0,0 +1,375 @@
+local plg = {}
+plg.rules = {}
+
+local lcore = dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/logic.lua")
+dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/tool.lua")(plg)
+
+
+plg.register_nodes = function(template)
+	-- each loop is for one of the 4 IO ports
+	for a = 0, 1 do
+	for b = 0, 1 do
+	for c = 0, 1 do
+	for d = 0, 1 do
+		local ndef = table.copy(template)
+		local nodename = "mesecons_fpga:fpga"
+				.. tostring(d) .. tostring(c) .. tostring(b) .. tostring(a)
+
+		-- build top texture string
+		local texture = "jeija_fpga_top.png"
+		if a == 1 then texture = texture .. "^jeija_microcontroller_LED_A.png" end
+		if b == 1 then texture = texture .. "^jeija_microcontroller_LED_B.png" end
+		if c == 1 then texture = texture .. "^jeija_microcontroller_LED_C.png" end
+		if d == 1 then texture = texture .. "^jeija_microcontroller_LED_D.png" end
+		ndef.tiles[1] = texture
+		ndef.inventory_image = texture
+
+		if (a + b + c + d) > 0 then
+			ndef.groups["not_in_creative_inventory"] = 1
+		end
+
+		-- interaction with mesecons (input / output)
+		local rules_out = {}
+		if a == 1 then table.insert(rules_out, {x = -1, y = 0, z =  0}) end
+		if b == 1 then table.insert(rules_out, {x =  0, y = 0, z =  1}) end
+		if c == 1 then table.insert(rules_out, {x =  1, y = 0, z =  0}) end
+		if d == 1 then table.insert(rules_out, {x =  0, y = 0, z = -1}) end
+		plg.rules[nodename] = rules_out
+
+		local rules_in = {}
+		if a == 0 then table.insert(rules_in, {x = -1, y = 0, z =  0}) end
+		if b == 0 then table.insert(rules_in, {x =  0, y = 0, z =  1}) end
+		if c == 0 then table.insert(rules_in, {x =  1, y = 0, z =  0}) end
+		if d == 0 then table.insert(rules_in, {x =  0, y = 0, z = -1}) end
+		ndef.mesecons.effector.rules = rules_in
+
+		if (a + b + c + d) > 0 then
+			ndef.mesecons.receptor = {
+				state = mesecon.state.on,
+				rules = rules_out,
+			}
+		end
+
+		minetest.register_node(nodename, ndef)
+	end
+	end
+	end
+	end
+end
+
+plg.register_nodes({
+	description = "FPGA",
+	drawtype = "nodebox",
+	tiles = {
+		"", -- replaced later
+		"jeija_microcontroller_bottom.png",
+		"jeija_fpga_sides.png",
+		"jeija_fpga_sides.png",
+		"jeija_fpga_sides.png",
+		"jeija_fpga_sides.png"
+	},
+	inventory_image = "", -- replaced later
+	sunlight_propagates = true,
+	paramtype = "light",
+	walkable = true,
+	groups = {dig_immediate = 2, mesecon = 3},
+	drop = "mesecons_fpga:fpga0000",
+	selection_box = {
+		type = "fixed",
+		fixed = { -8/16, -8/16, -8/16, 8/16, -5/16, 8/16 },
+	},
+	node_box = {
+		type = "fixed",
+		fixed = {
+			{ -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, -- bottom slab
+			{ -5/16, -7/16, -5/16, 5/16, -6/16, 5/16 }, -- circuit board
+			{ -3/16, -6/16, -3/16, 3/16, -5/16, 3/16 }, -- IC
+		}
+	},
+	on_construct = function(pos)
+		local meta = minetest.get_meta(pos)
+		local is = { {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} }
+
+		meta:set_string("instr", lcore.serialize(is))
+		meta:set_int("valid", 0)
+		meta:set_string("formspec", plg.to_formspec_string(is))
+		meta:set_string("infotext", "FPGA")
+	end,
+	on_receive_fields = function(pos, formname, fields, sender)
+		if fields.program == nil then return end -- we only care when the user clicks "Program"
+		local meta = minetest.get_meta(pos)
+		local is = plg.from_formspec_fields(fields)
+
+		meta:set_string("instr", lcore.serialize(is))
+		plg.update_formspec(pos, is)
+	end,
+	sounds = default.node_sound_stone_defaults(),
+	mesecons = {
+		effector = {
+			rules = {}, -- replaced later
+			action_change = function(pos, node, rule, newstate)
+				plg.ports_changed(pos, rule, newstate)
+				plg.update(pos)
+			end
+		}
+	},
+	after_dig_node = function(pos, node)
+		mesecon.receptor_off(pos, plg.rules[node.name])
+	end,
+})
+
+
+plg.to_formspec_string = function(is)
+	local function dropdown_op(x, y, name, val)
+		local s = "dropdown[" .. tostring(x) .. "," .. tostring(y) .. ";"
+				.. "0.75,0.5;" .. name .. ";" -- the height seems to be ignored?
+		s = s .. " ,A,B,C,D,0,1,2,3,4,5,6,7,8,9;"
+		if val == nil then
+			s = s .. "0" -- actually selects no field at all
+		elseif val.type == "io" then
+			local mapping = {
+				["A"] = 1,
+				["B"] = 2,
+				["C"] = 3,
+				["D"] = 4,
+			}
+			s = s .. tostring(1 + mapping[val.port])
+		else -- "reg"
+			s = s .. tostring(6 + val.n)
+		end
+		return s .. "]"
+	end
+	local function dropdown_action(x, y, name, val)
+		local s = "dropdown[" .. tostring(x) .. "," .. tostring(y) .. ";"
+				.. "1.125,0.5;" .. name .. ";" -- the height seems to be ignored?
+		s = s .. " , AND,  OR, NOT, XOR,NAND,   =,XNOR;"
+		if val == nil then
+			return s .. "0]" -- actually selects no field at all
+		end
+		local mapping = {
+			["and"] = 1,
+			["or"] = 2,
+			["not"] = 3,
+			["xor"] = 4,
+			["nand"] = 5,
+			["buf"] = 6,
+			["xnor"] = 7,
+		}
+		return s .. tostring(1 + mapping[val]) .. "]"
+	end
+	local s = "size[9,9]"..
+		"label[3.4,-0.15;FPGA gate configuration]"..
+		"button_exit[7,7.5;2,2.5;program;Program]"..
+		"box[4.2,0.5;0.03,7;#ffffff]"..
+		"label[0.25,0.25;op. 1]"..
+		"label[1.0,0.25;gate type]"..
+		"label[2.125,0.25;op. 2]"..
+		"label[3.15,0.25;dest]"..
+		"label[4.5,0.25;op. 1]"..
+		"label[5.25,0.25;gate type]"..
+		"label[6.375,0.25;op. 2]"..
+		"label[7.4,0.25;dest]"
+	local x = 1 - 0.75
+	local y = 1 - 0.25
+	for i = 1, 14 do
+		local cur = is[i]
+		s = s .. dropdown_op    (x      , y, tostring(i).."op1", cur.op1)
+		s = s .. dropdown_action(x+0.75 , y, tostring(i).."act", cur.action)
+		s = s .. dropdown_op    (x+1.875, y, tostring(i).."op2", cur.op2)
+		s = s .. "label[" .. tostring(x+2.625) .. "," .. tostring(y+0.1) .. "; ->]"
+		s = s .. dropdown_op    (x+2.9  , y, tostring(i).."dst", cur.dst)
+		y = y + 1
+
+		if i == 7 then
+			x = 4.5
+			y = 1 - 0.25
+		end
+	end
+	return s
+end
+
+plg.from_formspec_fields = function(fields)
+	local function read_op(s)
+		if s == nil or s == " " then
+			return nil
+		elseif s == "A" or s == "B" or s == "C" or s == "D" then
+			return {type = "io", port = s}
+		else
+			return {type = "reg", n = tonumber(s)}
+		end
+	end
+	local function read_action(s)
+		if s == nil or s == " " then
+			return nil
+		end
+		local mapping = {
+			["AND"] = "and",
+			["OR"] = "or",
+			["NOT"] = "not",
+			["XOR"] = "xor",
+			["NAND"] = "nand",
+			["="] = "buf",
+			["XNOR"] = "xnor",
+		}
+		s = s:gsub("^%s*", "") -- remove leading spaces
+		return mapping[s]
+	end
+	local is = {}
+	for i = 1, 14 do
+		local cur = {}
+		cur.op1 = read_op(fields[tonumber(i) .. "op1"])
+		cur.action = read_action(fields[tonumber(i) .. "act"])
+		cur.op2 = read_op(fields[tonumber(i) .. "op2"])
+		cur.dst = read_op(fields[tonumber(i) .. "dst"])
+		is[#is + 1] = cur
+	end
+	return is
+end
+
+plg.update_formspec = function(pos, is)
+	if type(is) == "string" then -- serialized string
+		is = lcore.deserialize(is)
+	end
+	local meta = minetest.get_meta(pos)
+	local form = plg.to_formspec_string(is)
+
+	local err = lcore.validate(is)
+	if err == nil then
+		meta:set_int("valid", 1)
+		meta:set_string("infotext", "FPGA (functional)")
+	else
+		meta:set_int("valid", 0)
+		meta:set_string("infotext", "FPGA")
+		local fmsg = minetest.colorize("#ff0000", minetest.formspec_escape(err.msg))
+		form = form .. plg.red_box_around(err.i) ..
+			"label[0.25,8.25;The gate configuration is erroneous in the marked area:]"..
+			"label[0.25,8.5;" .. fmsg .. "]"
+	end
+
+	meta:set_string("formspec", form)
+
+	-- reset ports and run programmed logic
+	plg.setports(pos, false, false, false, false)
+	plg.update(pos)
+end
+
+plg.red_box_around = function(i)
+	local x, y
+	if i > 7 then
+		x = 4.5
+		y = 0.75 + (i - 8)
+	else
+		x = 0.25
+		y = 0.75 + (i - 1)
+	end
+	return string.format("box[%f,%f;3.8,0.8;#ff0000]", x-0.1, y-0.05)
+end
+
+
+plg.update = function(pos)
+	local meta = minetest.get_meta(pos)
+	if meta:get_int("valid") ~= 1 then
+		return
+	end
+
+	local is = lcore.deserialize(meta:get_string("instr"))
+	local A, B, C, D = plg.getports(pos)
+	A, B, C, D = lcore.interpret(is, A, B, C, D)
+	plg.setports(pos, A, B, C, D)
+end
+
+plg.ports_changed = function(pos, rule, newstate)
+	if rule == nil then return end
+	local meta = minetest.get_meta(pos)
+	local states
+
+	local s = meta:get_string("portstates")
+	if s == nil then
+		states = {false, false, false, false}
+	else
+		states = {
+			s:sub(1, 1) == "1",
+			s:sub(2, 2) == "1",
+			s:sub(3, 3) == "1",
+			s:sub(4, 4) == "1",
+		}
+	end
+
+	-- trick to transform rules (see register_node) into port number
+	local portno = ({4, 1, nil, 3, 2})[3 + rule.x + 2*rule.z]
+	states[portno] = (newstate == "on")
+
+	meta:set_string("portstates",
+			(states[1] and "1" or "0") .. (states[2] and "1" or "0") ..
+			(states[3] and "1" or "0") .. (states[4] and "1" or "0")
+	)
+end
+
+plg.getports = function(pos) -- gets merged states of INPUT & OUTPUT
+	local sin, sout
+
+	local s = minetest.get_meta(pos):get_string("portstates")
+	if s == nil then
+		sin = {false, false, false, false}
+	else
+		sin = {
+			s:sub(1, 1) == "1",
+			s:sub(2, 2) == "1",
+			s:sub(3, 3) == "1",
+			s:sub(4, 4) == "1",
+		}
+	end
+
+	local name = minetest.get_node(pos).name
+	assert(name:find("mesecons_fpga:fpga") == 1)
+	local off = #"mesecons_fpga:fpga"
+	sout = {
+		name:sub(off+4, off+4) == "1",
+		name:sub(off+3, off+3) == "1",
+		name:sub(off+2, off+2) == "1",
+		name:sub(off+1, off+1) == "1",
+	}
+
+	return unpack({
+		sin[1] or sout[1],
+		sin[2] or sout[2],
+		sin[3] or sout[3],
+		sin[4] or sout[4],
+	})
+end
+
+plg.setports = function(pos, A, B, C, D) -- sets states of OUTPUT
+	local base = "mesecons_fpga:fpga"
+
+	local name = base
+			.. (D and "1" or "0") .. (C and "1" or "0")
+			.. (B and "1" or "0") .. (A and "1" or "0")
+	minetest.swap_node(pos, {name = name, param2 = minetest.get_node(pos).param2})
+
+	if A ~= nil then
+		local ru = plg.rules[base .. "0001"]
+		if A then mesecon.receptor_on(pos, ru) else mesecon.receptor_off(pos, ru) end
+	end
+	if B ~= nil then
+		local ru = plg.rules[base .. "0010"]
+		if B then mesecon.receptor_on(pos, ru) else mesecon.receptor_off(pos, ru) end
+	end
+	if C ~= nil then
+		local ru = plg.rules[base .. "0100"]
+		if C then mesecon.receptor_on(pos, ru) else mesecon.receptor_off(pos, ru) end
+	end
+	if D ~= nil then
+		local ru = plg.rules[base .. "1000"]
+		if D then mesecon.receptor_on(pos, ru) else mesecon.receptor_off(pos, ru) end
+	end
+end
+
+
+minetest.register_craft({
+	output = "mesecons_fpga:fpga0000 2",
+	recipe = {
+		{'group:mesecon_conductor_craftable', 'group:mesecon_conductor_craftable'},
+		{'mesecons_materials:silicon', 'mesecons_materials:silicon'},
+		{'group:mesecon_conductor_craftable', 'group:mesecon_conductor_craftable'},
+	}
+})
diff --git a/mesecons_fpga/logic.lua b/mesecons_fpga/logic.lua
new file mode 100644
index 0000000..3dca154
--- /dev/null
+++ b/mesecons_fpga/logic.lua
@@ -0,0 +1,210 @@
+local lg = {}
+
+-- (de)serialize
+lg.serialize = function(t)
+	local function _op(t)
+		if t == nil then
+			return " "
+		elseif t.type == "io" then
+			return t.port
+		else -- t.type == "reg"
+			return tostring(t.n)
+		end
+	end
+	local function _action(s)
+		if s == nil then
+			return " "
+		end
+		local mapping = {
+			["and"] = "&",
+			["or"] = "|",
+			["not"] = "~",
+			["xor"] = "^",
+			["nand"] = "?", --dunno
+			["buf"] = "_",
+			["xnor"] = "=",
+		}
+		return mapping[s]
+	end
+
+	local s = ""
+	for i = 1, 14 do
+		local cur = t[i]
+		if next(cur) ~= nil then
+			s = s .. _op(cur.op1) .. _action(cur.action) .. _op(cur.op2) .. _op(cur.dst)
+		end
+		s = s .. "/"
+	end
+	return s
+end
+
+lg.deserialize = function(s)
+	local function _op(c)
+		if c == "A" or c == "B" or c == "C" or c == "D" then
+			return {type = "io", port = c}
+		elseif c == " " then
+			return nil
+		else
+			return {type = "reg", n = tonumber(c)}
+		end
+	end
+	local function _action(c)
+		local mapping = {
+			["&"] = "and",
+			["|"] = "or",
+			["~"] = "not",
+			["^"] = "xor",
+			["?"] = "nand",
+			["_"] = "buf",
+			["="] = "xnor",
+			[" "] = nil,
+		}
+		return mapping[c]
+	end
+
+	local ret = {}
+	for part in s:gmatch("(.-)/") do
+		local parsed
+		if part == "" then
+			parsed = {}
+		else
+			parsed = {
+				action = _action( part:sub(2,2) ),
+				op1 = _op( part:sub(1,1) ),
+				op2 = _op( part:sub(3,3) ),
+				dst = _op( part:sub(4,4) ),
+			}
+		end
+		ret[#ret + 1] = parsed
+	end
+	-- More than 14 instructions (write to all 10 regs + 4 outputs)
+	-- will not pass the write-once requirement of the validator
+	assert(#ret == 14)
+	return ret
+end
+
+-- validation
+lg.validate_single = function(t, i)
+	local function is_reg_written_to(t, n, max)
+		for i = 1, max-1 do
+			if next(t[i]) ~= nil
+					and t[i].dst and t[i].dst.type == "reg"
+					and t[i].dst.n == n then
+				return true
+			end
+		end
+		return false
+	end
+	local function compare_op(t1, t2, allow_same_io)
+		if t1 == nil or t2 == nil then
+			return false
+		elseif t1.type ~= t2.type then
+			return false
+		end
+		if t1.type == "reg" and t1.n == t2.n then
+			return true
+		elseif t1.type == "io" and t1.port == t2.port then
+			return not allow_same_io
+		end
+		return false
+	end
+	local elem = t[i]
+	-- check for completeness
+	if elem.action == nil then
+		return {i = i, msg = "Gate type required"}
+	elseif elem.action == "not" or elem.action == "buf" then
+		if elem.op1 ~= nil or elem.op2 == nil or elem.dst == nil then
+			return {i = i, msg = "Second operand (only) and destination required"}
+		end
+	else
+		if elem.op1 == nil or elem.op2 == nil or elem.dst == nil then
+			return {i = i, msg = "Operands and destination required"}
+		end
+	end
+	-- check whether operands/destination are identical
+	if compare_op(elem.op1, elem.op2) then
+		return {i = i, msg = "Operands cannot be identical"}
+	end
+	if compare_op(elem.op1, elem.dst, true) or compare_op(elem.op2, elem.dst, true) then
+		return {i = i, msg = "Destination and operands must be different"}
+	end
+	-- check whether operands point to defined registers
+	if elem.op1 ~= nil and elem.op1.type == "reg"
+			and not is_reg_written_to(t, elem.op1.n, i) then
+		return {i = i, msg = "First operand is undefined register"}
+	end
+	if elem.op2.type == "reg" and not is_reg_written_to(t, elem.op2.n, i) then
+		return {i = i, msg = "Second operand is undefined register"}
+	end
+	-- check whether destination points to undefined register
+	if elem.dst.type == "reg" and is_reg_written_to(t, elem.dst.n, i) then
+		return {i = i, msg = "Destination is already used register"}
+	end
+
+	return nil
+end
+
+lg.validate = function(t)
+	for i = 1, 14 do
+		if next(t[i]) ~= nil then
+			local r = lg.validate_single(t, i)
+			if r ~= nil then
+				return r
+			end
+		end
+	end
+	return nil
+end
+
+-- interpreter
+lg.interpret = function(t, a, b, c, d)
+	local function _action(s, v1, v2)
+		if s == "and" then
+			return v1 and v2
+		elseif s == "or" then
+			return v1 or v2
+		elseif s == "not" then
+			return not v2
+		elseif s == "xor" then
+			return v1 ~= v2
+		elseif s == "nand" then
+			return not (v1 and v2)
+		elseif s == "buf" then
+			return v2
+		else -- s == "xnor"
+			return v1 == v2
+		end
+	end
+	local function _op(t, regs, io_in)
+		if t.type == "reg" then
+			return regs[t.n]
+		else -- t.type == "io"
+			return io_in[t.port]
+		end
+	end
+
+	local io_in = {A=a, B=b, C=c, D=d}
+	local regs = {}
+	local io_out = {}
+	for i = 1, 14 do
+		local cur = t[i]
+		if next(cur) ~= nil then
+			local v1, v2
+			if cur.op1 ~= nil then
+				v1 = _op(cur.op1, regs, io_in)
+			end
+			v2 = _op(cur.op2, regs, io_in)
+
+			local result = _action(cur.action, v1, v2)
+
+			if cur.dst.type == "reg" then
+				regs[cur.dst.n] = result
+			else -- cur.dst.type == "io"
+				io_out[cur.dst.port] = result
+			end
+		end
+	end
+	return io_out.A, io_out.B, io_out.C, io_out.D
+end
+
+return lg
diff --git a/mesecons_fpga/textures/jeija_fpga_programmer.png b/mesecons_fpga/textures/jeija_fpga_programmer.png
new file mode 100644
index 0000000..9c0ba8f
Binary files /dev/null and b/mesecons_fpga/textures/jeija_fpga_programmer.png differ
diff --git a/mesecons_fpga/textures/jeija_fpga_sides.png b/mesecons_fpga/textures/jeija_fpga_sides.png
new file mode 100644
index 0000000..e2d8e15
Binary files /dev/null and b/mesecons_fpga/textures/jeija_fpga_sides.png differ
diff --git a/mesecons_fpga/textures/jeija_fpga_top.png b/mesecons_fpga/textures/jeija_fpga_top.png
new file mode 100644
index 0000000..eaf1a1c
Binary files /dev/null and b/mesecons_fpga/textures/jeija_fpga_top.png differ
diff --git a/mesecons_fpga/tool.lua b/mesecons_fpga/tool.lua
new file mode 100644
index 0000000..26ab49e
--- /dev/null
+++ b/mesecons_fpga/tool.lua
@@ -0,0 +1,62 @@
+return function(plg)
+
+
+minetest.register_tool("mesecons_fpga:programmer", {
+	description = "FPGA Programmer",
+	inventory_image = "jeija_fpga_programmer.png",
+	stack_max = 1,
+	on_place = function(itemstack, placer, pointed_thing)
+		if pointed_thing.type ~= "node" then
+			return itemstack
+		end
+
+		local pos = pointed_thing.under
+		if minetest.get_node(pos).name:find("mesecons_fpga:fpga") ~= 1 then
+			return itemstack
+		end
+
+		local meta = minetest.get_meta(pos)
+		if meta:get_string("instr") == "//////////////" then
+			minetest.chat_send_player(placer:get_player_name(), "This FPGA is unprogrammed.")
+			return itemstack
+		end
+		itemstack:set_metadata(meta:get_string("instr"))
+		minetest.chat_send_player(placer:get_player_name(), "FPGA gate configuration was successfully copied!")
+		
+		return itemstack
+	end,
+	on_use = function(itemstack, user, pointed_thing)
+		if pointed_thing.type ~= "node" then
+			return itemstack
+		end
+
+		local pos = pointed_thing.under
+		if minetest.get_node(pos).name:find("mesecons_fpga:fpga") ~= 1 then
+			return itemstack
+		end
+
+		local imeta = itemstack:get_metadata()
+		if imeta == "" then
+			minetest.chat_send_player(user:get_player_name(), "Use shift+right-click to copy a gate configuration first.")
+			return itemstack
+		end
+
+		local meta = minetest.get_meta(pos)
+		meta:set_string("instr", imeta)
+		plg.update_formspec(pos, imeta)
+		minetest.chat_send_player(user:get_player_name(), "Gate configuration was successfully written to FPGA!")
+
+		return itemstack
+	end
+})
+
+minetest.register_craft({
+	output = "mesecons_fpga:programmer",
+	recipe = {
+		{'group:mesecon_conductor_craftable'},
+		{'mesecons_materials:silicon'},
+	}
+})
+
+
+end
diff --git a/mesecons_gates/init.lua b/mesecons_gates/init.lua
index f3d6f09..57815ef 100644
--- a/mesecons_gates/init.lua
+++ b/mesecons_gates/init.lua
@@ -54,7 +54,7 @@ local function update_gate(pos, node, link, newstate)
 	end
 end
 
-function register_gate(name, inputnumber, assess, recipe)
+local function register_gate(name, inputnumber, assess, recipe)
 	local get_inputrules = inputnumber == 2 and gate_get_input_rules_twoinputs or
 		gate_get_input_rules_oneinput
 	local description = "Mesecons Logic Gate: "..name
diff --git a/mesecons_hydroturbine/init.lua b/mesecons_hydroturbine/init.lua
index f1292e9..409da75 100644
--- a/mesecons_hydroturbine/init.lua
+++ b/mesecons_hydroturbine/init.lua
@@ -5,12 +5,12 @@
 
 minetest.register_node("mesecons_hydroturbine:hydro_turbine_off", {
 	drawtype = "mesh",
-	mesh = "jeija_hydro_turbine.obj",
+	mesh = "jeija_hydro_turbine_off.obj",
 	tiles = {
 		"jeija_hydro_turbine_sides_off.png",
 		"jeija_hydro_turbine_top_bottom.png",
-		"jeija_hydro_turbine_turbine_top_bottom.png",
-		"jeija_hydro_turbine_turbine_misc.png"
+		"jeija_hydro_turbine_turbine_top_bottom_off.png",
+		"jeija_hydro_turbine_turbine_misc_off.png"
 	},
 	inventory_image = "jeija_hydro_turbine_inv.png",
 	wield_scale = {x=0.75, y=0.75, z=0.75},
@@ -29,13 +29,15 @@ minetest.register_node("mesecons_hydroturbine:hydro_turbine_off", {
 
 minetest.register_node("mesecons_hydroturbine:hydro_turbine_on", {
 	drawtype = "mesh",
-	mesh = "jeija_hydro_turbine.obj",
+	mesh = "jeija_hydro_turbine_on.obj",
 	wield_scale = {x=0.75, y=0.75, z=0.75},
 	tiles = {
 		"jeija_hydro_turbine_sides_on.png",
 		"jeija_hydro_turbine_top_bottom.png",
-		"jeija_hydro_turbine_turbine_top_bottom.png",
-		"jeija_hydro_turbine_turbine_misc.png"
+		{ name = "jeija_hydro_turbine_turbine_top_bottom_on.png",
+		    animation = {type = "vertical_frames", aspect_w = 128, aspect_h = 16, length = 1.6} },
+		{ name = "jeija_hydro_turbine_turbine_misc_on.png",
+		    animation = {type = "vertical_frames", aspect_w = 256, aspect_h = 32, length = 0.4} }
 	},
 	inventory_image = "jeija_hydro_turbine_inv.png",
 	drop = "mesecons_hydroturbine:hydro_turbine_off 1",
@@ -53,13 +55,20 @@ minetest.register_node("mesecons_hydroturbine:hydro_turbine_on", {
 })
 
 
+local function is_flowing_water(pos)
+	local name = minetest.get_node(pos).name
+	local is_water = minetest.get_item_group(name, "water") > 0
+	local is_flowing = minetest.registered_items[name].liquidtype == "flowing"
+	return (is_water and is_flowing)
+end
+
 minetest.register_abm({
 nodenames = {"mesecons_hydroturbine:hydro_turbine_off"},
 	interval = 1,
 	chance = 1,
 	action = function(pos, node, active_object_count, active_object_count_wider)
 		local waterpos={x=pos.x, y=pos.y+1, z=pos.z}
-		if minetest.get_node(waterpos).name=="default:water_flowing" then
+		if is_flowing_water(waterpos) then
 			minetest.set_node(pos, {name="mesecons_hydroturbine:hydro_turbine_on"})
 			nodeupdate(pos)
 			mesecon.receptor_on(pos)
@@ -73,7 +82,7 @@ nodenames = {"mesecons_hydroturbine:hydro_turbine_on"},
 	chance = 1,
 	action = function(pos, node, active_object_count, active_object_count_wider)
 		local waterpos={x=pos.x, y=pos.y+1, z=pos.z}
-		if minetest.get_node(waterpos).name~="default:water_flowing" then
+		if not is_flowing_water(waterpos) then
 			minetest.set_node(pos, {name="mesecons_hydroturbine:hydro_turbine_off"})
 			nodeupdate(pos)
 			mesecon.receptor_off(pos)
diff --git a/mesecons_hydroturbine/models/jeija_hydro_turbine.obj b/mesecons_hydroturbine/models/jeija_hydro_turbine_off.obj
similarity index 87%
rename from mesecons_hydroturbine/models/jeija_hydro_turbine.obj
rename to mesecons_hydroturbine/models/jeija_hydro_turbine_off.obj
index 84a1a44..5cd5c96 100644
--- a/mesecons_hydroturbine/models/jeija_hydro_turbine.obj
+++ b/mesecons_hydroturbine/models/jeija_hydro_turbine_off.obj
@@ -1,21 +1,21 @@
-# Blender v2.73 (sub 0) OBJ File: 'mesecons-water-turbine.blend'
+# Blender v2.72 (sub 0) OBJ File: 'mesecons-water-turbine.blend'
 # www.blender.org
 o Cylinder.002_Cylinder.003
-v 0.000000 0.500000 -0.150000
+v 0.000000 0.496094 -0.150000
 v 0.000000 0.562500 -0.150000
-v 0.106066 0.500000 -0.106066
+v 0.106066 0.496094 -0.106066
 v 0.106066 0.562500 -0.106066
-v 0.150000 0.500000 0.000000
+v 0.150000 0.496094 0.000000
 v 0.150000 0.562500 0.000000
-v 0.106066 0.500000 0.106066
+v 0.106066 0.496094 0.106066
 v 0.106066 0.562500 0.106066
-v -0.000000 0.500000 0.150000
+v -0.000000 0.496094 0.150000
 v -0.000000 0.562500 0.150000
-v -0.106066 0.500000 0.106066
+v -0.106066 0.496094 0.106066
 v -0.106066 0.562500 0.106066
-v -0.150000 0.500000 -0.000000
+v -0.150000 0.496094 -0.000000
 v -0.150000 0.562500 -0.000000
-v -0.106066 0.500000 -0.106066
+v -0.106066 0.496094 -0.106066
 v -0.106066 0.562500 -0.106066
 v 0.097545 0.625000 -0.490393
 v -0.097545 0.625000 -0.490393
@@ -113,38 +113,38 @@ v -0.430779 0.634645 -0.108975
 v -0.180802 0.634645 -0.292266
 v -0.180802 1.482640 -0.292266
 v -0.430779 1.482640 -0.108975
-v 0.097545 1.500000 -0.490393
-v -0.097545 1.500000 -0.490393
-v -0.277785 1.500000 -0.415735
-v -0.415735 1.500000 -0.277785
-v -0.490393 1.500000 -0.097545
-v -0.490393 1.500000 0.097545
-v -0.415735 1.500000 0.277785
-v -0.277785 1.500000 0.415735
-v -0.097545 1.500000 0.490393
-v 0.097545 1.500000 0.490393
-v 0.277785 1.500000 0.415735
-v 0.415735 1.500000 0.277785
-v 0.490393 1.500000 0.097545
-v 0.490393 1.500000 -0.097545
-v 0.415735 1.500000 -0.277785
-v 0.277785 1.500000 -0.415735
-v 0.097545 1.468750 -0.490393
-v -0.097545 1.468750 -0.490393
-v -0.277785 1.468750 -0.415735
-v -0.415735 1.468750 -0.277785
-v -0.490393 1.468750 -0.097545
-v -0.490393 1.468750 0.097545
-v -0.415735 1.468750 0.277785
-v -0.277785 1.468750 0.415735
-v -0.097545 1.468750 0.490393
-v 0.097545 1.468750 0.490393
-v 0.277785 1.468750 0.415735
-v 0.415735 1.468750 0.277785
-v 0.490393 1.468750 0.097545
-v 0.490393 1.468750 -0.097545
-v 0.415735 1.468750 -0.277785
-v 0.277785 1.468750 -0.415735
+v 0.097545 1.496094 -0.490393
+v -0.097545 1.496094 -0.490393
+v -0.277785 1.496094 -0.415735
+v -0.415735 1.496094 -0.277785
+v -0.490393 1.496094 -0.097545
+v -0.490393 1.496094 0.097545
+v -0.415735 1.496094 0.277785
+v -0.277785 1.496094 0.415735
+v -0.097545 1.496094 0.490393
+v 0.097545 1.496094 0.490393
+v 0.277785 1.496094 0.415735
+v 0.415735 1.496094 0.277785
+v 0.490393 1.496094 0.097545
+v 0.490393 1.496094 -0.097545
+v 0.415735 1.496094 -0.277785
+v 0.277785 1.496094 -0.415735
+v 0.097545 1.464844 -0.490393
+v -0.097545 1.464844 -0.490393
+v -0.277785 1.464844 -0.415735
+v -0.415735 1.464844 -0.277785
+v -0.490393 1.464844 -0.097545
+v -0.490393 1.464844 0.097545
+v -0.415735 1.464844 0.277785
+v -0.277785 1.464844 0.415735
+v -0.097545 1.464844 0.490393
+v 0.097545 1.464844 0.490393
+v 0.277785 1.464844 0.415735
+v 0.415735 1.464844 0.277785
+v 0.490393 1.464844 0.097545
+v 0.490393 1.464844 -0.097545
+v 0.415735 1.464844 -0.277785
+v 0.277785 1.464844 -0.415735
 v 0.025624 0.559630 -0.061863
 v 0.025624 1.481372 -0.061863
 v 0.061863 0.559630 -0.025624
@@ -161,14 +161,14 @@ v -0.061863 0.559630 -0.025624
 v -0.061863 1.481372 -0.025624
 v -0.025624 0.559630 -0.061863
 v -0.025624 1.481372 -0.061863
-v 0.499775 -0.499550 -0.499775
-v 0.499775 -0.499550 0.499775
-v -0.499775 -0.499550 0.499775
-v -0.499775 -0.499550 -0.499775
-v 0.499775 0.500000 -0.499775
-v 0.499775 0.500000 0.499775
-v -0.499775 0.500000 0.499775
-v -0.499775 0.500000 -0.499775
+v 0.496094 -0.496094 -0.496094
+v 0.496094 -0.496094 0.496094
+v -0.496094 -0.496094 0.496094
+v -0.496094 -0.496094 -0.496094
+v 0.496094 0.496094 -0.496094
+v 0.496094 0.496094 0.496094
+v -0.496094 0.496094 0.496094
+v -0.496094 0.496094 -0.496094
 vt 1.000000 0.000000
 vt 1.000000 1.000000
 vt 0.000000 1.000000
@@ -314,10 +314,10 @@ vt 0.031250 0.875000
 vt 0.031250 0.906250
 vt 0.062500 0.906250
 vn 1.000000 0.000000 0.000000
-vn -0.000000 -0.000000 1.000000
-vn -1.000000 -0.000000 -0.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
 vn 0.000000 0.000000 -1.000000
-vn 0.000000 -1.000000 -0.000000
+vn 0.000000 -1.000000 0.000000
 vn 0.000000 1.000000 0.000000
 vn 0.382700 0.000000 -0.923900
 vn 0.923900 0.000000 -0.382700
diff --git a/mesecons_hydroturbine/models/jeija_hydro_turbine_on.obj b/mesecons_hydroturbine/models/jeija_hydro_turbine_on.obj
new file mode 100644
index 0000000..52f8768
--- /dev/null
+++ b/mesecons_hydroturbine/models/jeija_hydro_turbine_on.obj
@@ -0,0 +1,2059 @@
+# Blender v2.72 (sub 0) OBJ File: 'mesecons-water-turbine_on.blend'
+# www.blender.org
+o Cylinder.002_Cylinder.003
+v 0.000000 0.496094 -0.150000
+v 0.000000 0.562500 -0.150000
+v 0.106066 0.496094 -0.106066
+v 0.106066 0.562500 -0.106066
+v 0.150000 0.496094 0.000000
+v 0.150000 0.562500 0.000000
+v 0.106066 0.496094 0.106066
+v 0.106066 0.562500 0.106066
+v -0.000000 0.496094 0.150000
+v -0.000000 0.562500 0.150000
+v -0.106066 0.496094 0.106066
+v -0.106066 0.562500 0.106066
+v -0.150000 0.496094 -0.000000
+v -0.150000 0.562500 -0.000000
+v -0.106066 0.496094 -0.106066
+v -0.106066 0.562500 -0.106066
+v 0.097545 0.625000 -0.490393
+v -0.097545 0.625000 -0.490393
+v -0.277785 0.625000 -0.415735
+v -0.415735 0.625000 -0.277785
+v -0.490393 0.625000 -0.097545
+v -0.490393 0.625000 0.097545
+v -0.415735 0.625000 0.277785
+v -0.277785 0.625000 0.415735
+v -0.097545 0.625000 0.490393
+v 0.097545 0.625000 0.490393
+v 0.277785 0.625000 0.415735
+v 0.415735 0.625000 0.277785
+v 0.490393 0.625000 0.097545
+v 0.490393 0.625000 -0.097545
+v 0.415735 0.625000 -0.277785
+v 0.277785 0.625000 -0.415735
+v 0.097545 0.656250 -0.490393
+v -0.097545 0.656250 -0.490393
+v -0.277785 0.656250 -0.415735
+v -0.415735 0.656250 -0.277785
+v -0.490393 0.656250 -0.097545
+v -0.490393 0.656250 0.097545
+v -0.415735 0.656250 0.277785
+v -0.277785 0.656250 0.415735
+v -0.097545 0.656250 0.490393
+v 0.097545 0.656250 0.490393
+v 0.277785 0.656250 0.415735
+v 0.415735 0.656250 0.277785
+v 0.490393 0.656250 0.097545
+v 0.490393 0.656250 -0.097545
+v 0.415735 0.656250 -0.277785
+v 0.277785 0.656250 -0.415735
+v 0.080186 0.634645 -0.343405
+v 0.080186 1.482640 -0.343405
+v -0.226180 1.482640 -0.390559
+v -0.226180 0.634645 -0.390559
+v -0.227549 0.634645 -0.381663
+v 0.078817 0.634645 -0.334509
+v 0.078817 1.482640 -0.334509
+v -0.227549 1.482640 -0.381663
+v 0.097545 1.496094 -0.490393
+v -0.097545 1.496094 -0.490393
+v -0.277785 1.496094 -0.415735
+v -0.415735 1.496094 -0.277785
+v -0.490393 1.496094 -0.097545
+v -0.490393 1.496094 0.097545
+v -0.415735 1.496094 0.277785
+v -0.277785 1.496094 0.415735
+v -0.097545 1.496094 0.490393
+v 0.097545 1.496094 0.490393
+v 0.277785 1.496094 0.415735
+v 0.415735 1.496094 0.277785
+v 0.490393 1.496094 0.097545
+v 0.490393 1.496094 -0.097545
+v 0.415735 1.496094 -0.277785
+v 0.277785 1.496094 -0.415735
+v 0.097545 1.464844 -0.490393
+v -0.097545 1.464844 -0.490393
+v -0.277785 1.464844 -0.415735
+v -0.415735 1.464844 -0.277785
+v -0.490393 1.464844 -0.097545
+v -0.490393 1.464844 0.097545
+v -0.415735 1.464844 0.277785
+v -0.277785 1.464844 0.415735
+v -0.097545 1.464844 0.490393
+v 0.097545 1.464844 0.490393
+v 0.277785 1.464844 0.415735
+v 0.415735 1.464844 0.277785
+v 0.490393 1.464844 0.097545
+v 0.490393 1.464844 -0.097545
+v 0.415735 1.464844 -0.277785
+v 0.277785 1.464844 -0.415735
+v 0.025624 0.559630 -0.061863
+v 0.025624 1.481372 -0.061863
+v 0.061863 0.559630 -0.025624
+v 0.061863 1.481372 -0.025624
+v 0.061863 0.559630 0.025624
+v 0.061863 1.481372 0.025624
+v 0.025624 0.559630 0.061863
+v 0.025624 1.481372 0.061863
+v -0.025624 0.559630 0.061863
+v -0.025624 1.481372 0.061863
+v -0.061863 0.559630 0.025624
+v -0.061863 1.481372 0.025624
+v -0.061863 0.559630 -0.025624
+v -0.061863 1.481372 -0.025624
+v -0.025624 0.559630 -0.061863
+v -0.025624 1.481372 -0.061863
+v 0.496094 -0.496094 -0.496094
+v 0.496094 -0.496094 0.496094
+v -0.496094 -0.496094 0.496094
+v -0.496094 -0.496094 -0.496094
+v 0.496094 0.496094 -0.496094
+v 0.496094 0.496094 0.496094
+v -0.496094 0.496094 0.496094
+v -0.496094 0.496094 -0.496094
+v 0.299524 0.634645 -0.186124
+v 0.299524 1.482640 -0.186124
+v 0.116233 1.482640 -0.436100
+v 0.116233 0.634645 -0.436100
+v 0.108975 0.634645 -0.430778
+v 0.292266 0.634645 -0.180802
+v 0.292266 1.482640 -0.180802
+v 0.108975 1.482640 -0.430778
+v 0.343405 0.634645 0.080186
+v 0.343405 1.482640 0.080186
+v 0.390559 1.482640 -0.226180
+v 0.390559 0.634645 -0.226180
+v 0.381663 0.634645 -0.227549
+v 0.334509 0.634645 0.078817
+v 0.334509 1.482640 0.078817
+v 0.381663 1.482640 -0.227549
+v 0.186124 0.634645 0.299524
+v 0.186124 1.482640 0.299524
+v 0.436100 1.482640 0.116233
+v 0.436100 0.634645 0.116233
+v 0.430778 0.634645 0.108975
+v 0.180802 0.634645 0.292266
+v 0.180802 1.482640 0.292266
+v 0.430778 1.482640 0.108975
+v -0.080186 0.634645 0.343405
+v -0.080186 1.482640 0.343405
+v 0.226180 1.482640 0.390559
+v 0.226180 0.634645 0.390559
+v 0.227549 0.634645 0.381663
+v -0.078817 0.634645 0.334509
+v -0.078817 1.482640 0.334509
+v 0.227549 1.482640 0.381663
+v -0.299524 0.634645 0.186124
+v -0.299524 1.482640 0.186124
+v -0.116233 1.482640 0.436100
+v -0.116233 0.634645 0.436100
+v -0.108975 0.634645 0.430778
+v -0.292266 0.634645 0.180802
+v -0.292266 1.482640 0.180802
+v -0.108975 1.482640 0.430778
+v -0.343404 0.634645 -0.080186
+v -0.343404 1.482640 -0.080186
+v -0.390559 1.482640 0.226180
+v -0.390559 0.634645 0.226180
+v -0.381663 0.634645 0.227549
+v -0.334509 0.634645 -0.078817
+v -0.334509 1.482640 -0.078817
+v -0.381663 1.482640 0.227549
+v -0.186124 0.634645 -0.299524
+v -0.186124 1.482640 -0.299524
+v -0.436100 1.482640 -0.116233
+v -0.436100 0.634645 -0.116233
+v -0.430778 0.634645 -0.108975
+v -0.180802 0.634645 -0.292266
+v -0.180802 1.482640 -0.292266
+v -0.430778 1.482640 -0.108975
+v 0.145640 0.634645 -0.321163
+v 0.145640 1.482640 -0.321163
+v -0.145640 1.482640 -0.427180
+v -0.145640 0.634645 -0.427180
+v -0.148718 0.634645 -0.418723
+v 0.142562 0.634645 -0.312705
+v 0.142562 1.482640 -0.312705
+v -0.148718 1.482640 -0.418723
+v 0.330079 0.634645 -0.124113
+v 0.330079 1.482640 -0.124113
+v 0.199079 1.482640 -0.405045
+v 0.199079 0.634645 -0.405045
+v 0.190922 0.634645 -0.401241
+v 0.321922 0.634645 -0.120310
+v 0.321922 1.482640 -0.120310
+v 0.190922 1.482640 -0.401241
+v 0.321163 0.634645 0.145640
+v 0.321163 1.482640 0.145640
+v 0.427180 1.482640 -0.145640
+v 0.427180 0.634645 -0.145640
+v 0.418723 0.634645 -0.148718
+v 0.312705 0.634645 0.142562
+v 0.312705 1.482640 0.142562
+v 0.418723 1.482640 -0.148718
+v 0.124113 0.634645 0.330079
+v 0.124113 1.482640 0.330079
+v 0.405045 1.482640 0.199079
+v 0.405045 0.634645 0.199079
+v 0.401241 0.634645 0.190922
+v 0.120310 0.634645 0.321922
+v 0.120310 1.482640 0.321922
+v 0.401241 1.482640 0.190922
+v -0.145640 0.634645 0.321163
+v -0.145640 1.482640 0.321163
+v 0.145640 1.482640 0.427180
+v 0.145640 0.634645 0.427180
+v 0.148718 0.634645 0.418723
+v -0.142562 0.634645 0.312705
+v -0.142562 1.482640 0.312705
+v 0.148718 1.482640 0.418723
+v -0.330079 0.634645 0.124113
+v -0.330079 1.482640 0.124113
+v -0.199079 1.482640 0.405045
+v -0.199079 0.634645 0.405045
+v -0.190922 0.634645 0.401241
+v -0.321923 0.634645 0.120309
+v -0.321923 1.482640 0.120309
+v -0.190922 1.482640 0.401241
+v -0.321163 0.634645 -0.145640
+v -0.321163 1.482640 -0.145640
+v -0.427180 1.482640 0.145640
+v -0.427180 0.634645 0.145640
+v -0.418723 0.634645 0.148718
+v -0.312705 0.634645 -0.142562
+v -0.312705 1.482640 -0.142562
+v -0.418723 1.482640 0.148718
+v -0.124113 0.634645 -0.330079
+v -0.124113 1.482640 -0.330079
+v -0.405045 1.482640 -0.199079
+v -0.405045 0.634645 -0.199079
+v -0.401241 0.634645 -0.190922
+v -0.120309 0.634645 -0.321923
+v -0.120309 1.482640 -0.321923
+v -0.401241 1.482640 -0.190922
+v 0.205497 0.634645 -0.286579
+v 0.205497 1.482640 -0.286579
+v -0.059503 1.482640 -0.447385
+v -0.059503 0.634645 -0.447385
+v -0.064172 0.634645 -0.439690
+v 0.200828 0.634645 -0.278884
+v 0.200828 1.482640 -0.278884
+v -0.064172 1.482640 -0.439690
+v 0.347950 0.634645 -0.057333
+v 0.347950 1.482640 -0.057333
+v 0.274274 1.482640 -0.358424
+v 0.274274 0.634645 -0.358424
+v 0.265532 0.634645 -0.356284
+v 0.339208 0.634645 -0.055194
+v 0.339208 1.482640 -0.055194
+v 0.265532 1.482640 -0.356284
+v 0.286579 0.634645 0.205497
+v 0.286579 1.482640 0.205497
+v 0.447385 1.482640 -0.059503
+v 0.447385 0.634645 -0.059503
+v 0.439690 0.634645 -0.064172
+v 0.278884 0.634645 0.200828
+v 0.278884 1.482640 0.200828
+v 0.439690 1.482640 -0.064172
+v 0.057333 0.634645 0.347950
+v 0.057333 1.482640 0.347950
+v 0.358423 1.482640 0.274274
+v 0.358423 0.634645 0.274274
+v 0.356284 0.634645 0.265532
+v 0.055194 0.634645 0.339208
+v 0.055194 1.482640 0.339208
+v 0.356284 1.482640 0.265532
+v -0.205497 0.634645 0.286579
+v -0.205497 1.482640 0.286579
+v 0.059503 1.482640 0.447385
+v 0.059503 0.634645 0.447385
+v 0.064172 0.634645 0.439690
+v -0.200828 0.634645 0.278884
+v -0.200828 1.482640 0.278884
+v 0.064172 1.482640 0.439690
+v -0.347950 0.634645 0.057333
+v -0.347950 1.482640 0.057333
+v -0.274274 1.482640 0.358423
+v -0.274274 0.634645 0.358423
+v -0.265532 0.634645 0.356284
+v -0.339208 0.634645 0.055194
+v -0.339208 1.482640 0.055194
+v -0.265532 1.482640 0.356284
+v -0.286579 0.634645 -0.205497
+v -0.286579 1.482640 -0.205497
+v -0.447385 1.482640 0.059503
+v -0.447385 0.634645 0.059503
+v -0.439690 0.634645 0.064172
+v -0.278884 0.634645 -0.200828
+v -0.278884 1.482640 -0.200828
+v -0.439690 1.482640 0.064172
+v -0.057333 0.634645 -0.347950
+v -0.057333 1.482640 -0.347950
+v -0.358423 1.482640 -0.274274
+v -0.358423 0.634645 -0.274274
+v -0.356284 0.634645 -0.265532
+v -0.055194 0.634645 -0.339208
+v -0.055194 1.482640 -0.339208
+v -0.356284 1.482640 -0.265532
+v 0.257457 0.634645 -0.240981
+v 0.257457 1.482640 -0.240981
+v 0.028921 1.482640 -0.450397
+v 0.028921 0.634645 -0.450397
+v 0.022841 0.634645 -0.443761
+v 0.251377 0.634645 -0.234346
+v 0.251377 1.482640 -0.234346
+v 0.022841 1.482640 -0.443761
+v 0.352450 0.634645 0.011650
+v 0.352450 1.482640 0.011650
+v 0.338929 1.482640 -0.298028
+v 0.338929 0.634645 -0.298028
+v 0.329937 0.634645 -0.297636
+v 0.343458 0.634645 0.012043
+v 0.343458 1.482640 0.012043
+v 0.329937 1.482640 -0.297636
+v 0.240981 0.634645 0.257458
+v 0.240981 1.482640 0.257458
+v 0.450397 1.482640 0.028921
+v 0.450397 0.634645 0.028921
+v 0.443761 0.634645 0.022841
+v 0.234346 0.634645 0.251377
+v 0.234346 1.482640 0.251377
+v 0.443761 1.482640 0.022841
+v -0.011650 0.634645 0.352450
+v -0.011650 1.482640 0.352450
+v 0.298028 1.482640 0.338929
+v 0.298028 0.634645 0.338929
+v 0.297636 0.634645 0.329937
+v -0.012043 0.634645 0.343458
+v -0.012043 1.482640 0.343458
+v 0.297636 1.482640 0.329937
+v -0.257458 0.634645 0.240981
+v -0.257458 1.482640 0.240981
+v -0.028921 1.482640 0.450397
+v -0.028921 0.634645 0.450397
+v -0.022841 0.634645 0.443761
+v -0.251377 0.634645 0.234346
+v -0.251377 1.482640 0.234346
+v -0.022841 1.482640 0.443761
+v -0.352450 0.634645 -0.011650
+v -0.352450 1.482640 -0.011650
+v -0.338929 1.482640 0.298028
+v -0.338929 0.634645 0.298028
+v -0.329937 0.634645 0.297636
+v -0.343458 0.634645 -0.012043
+v -0.343458 1.482640 -0.012043
+v -0.329937 1.482640 0.297636
+v -0.240981 0.634645 -0.257458
+v -0.240981 1.482640 -0.257458
+v -0.450397 1.482640 -0.028921
+v -0.450397 0.634645 -0.028921
+v -0.443761 0.634645 -0.022841
+v -0.234346 0.634645 -0.251377
+v -0.234346 1.482640 -0.251377
+v -0.443761 1.482640 -0.022841
+v 0.011651 0.634645 -0.352450
+v 0.011651 1.482640 -0.352450
+v -0.298028 1.482640 -0.338929
+v -0.298028 0.634645 -0.338929
+v -0.297635 0.634645 -0.329937
+v 0.012043 0.634645 -0.343458
+v 0.012043 1.482640 -0.343458
+v -0.297635 1.482640 -0.329937
+v 0.191342 0.625000 -0.461940
+v 0.000000 0.625000 -0.500000
+v -0.191342 0.625000 -0.461940
+v -0.353553 0.625000 -0.353554
+v -0.461940 0.625000 -0.191342
+v -0.500000 0.625000 -0.000000
+v -0.461940 0.625000 0.191342
+v -0.353553 0.625000 0.353553
+v -0.191342 0.625000 0.461940
+v -0.000000 0.625000 0.500000
+v 0.191342 0.625000 0.461940
+v 0.353553 0.625000 0.353553
+v 0.461940 0.625000 0.191341
+v 0.500000 0.625000 -0.000000
+v 0.461940 0.625000 -0.191342
+v 0.353553 0.625000 -0.353554
+v 0.191342 0.656250 -0.461940
+v 0.000000 0.656250 -0.500000
+v -0.191342 0.656250 -0.461940
+v -0.353553 0.656250 -0.353554
+v -0.461940 0.656250 -0.191342
+v -0.500000 0.656250 -0.000000
+v -0.461940 0.656250 0.191342
+v -0.353553 0.656250 0.353553
+v -0.191342 0.656250 0.461940
+v -0.000000 0.656250 0.500000
+v 0.191342 0.656250 0.461940
+v 0.353553 0.656250 0.353553
+v 0.461940 0.656250 0.191341
+v 0.500000 0.656250 -0.000000
+v 0.461940 0.656250 -0.191342
+v 0.353553 0.656250 -0.353554
+v 0.191342 1.496094 -0.461940
+v 0.000000 1.496094 -0.500000
+v -0.191342 1.496094 -0.461940
+v -0.353553 1.496094 -0.353554
+v -0.461940 1.496094 -0.191342
+v -0.500000 1.496094 -0.000000
+v -0.461940 1.496094 0.191342
+v -0.353553 1.496094 0.353553
+v -0.191342 1.496094 0.461940
+v -0.000000 1.496094 0.500000
+v 0.191341 1.496094 0.461940
+v 0.353553 1.496094 0.353553
+v 0.461940 1.496094 0.191342
+v 0.500000 1.496094 0.000000
+v 0.461940 1.496094 -0.191342
+v 0.353553 1.496094 -0.353554
+v 0.191342 1.464844 -0.461940
+v 0.000000 1.464844 -0.500000
+v -0.191342 1.464844 -0.461940
+v -0.353553 1.464844 -0.353554
+v -0.461940 1.464844 -0.191342
+v -0.500000 1.464844 -0.000000
+v -0.461940 1.464844 0.191342
+v -0.353553 1.464844 0.353553
+v -0.191342 1.464844 0.461940
+v -0.000000 1.464844 0.500000
+v 0.191341 1.464844 0.461940
+v 0.353553 1.464844 0.353553
+v 0.461940 1.464844 0.191342
+v 0.500000 1.464844 0.000000
+v 0.461940 1.464844 -0.191342
+v 0.353553 1.464844 -0.353554
+v 0.277785 0.625000 -0.415735
+v 0.097545 0.625000 -0.490393
+v -0.097545 0.625000 -0.490393
+v -0.277785 0.625000 -0.415735
+v -0.415735 0.625000 -0.277785
+v -0.490393 0.625000 -0.097545
+v -0.490393 0.625000 0.097545
+v -0.415735 0.625000 0.277785
+v -0.277785 0.625000 0.415735
+v -0.097545 0.625000 0.490392
+v 0.097545 0.625000 0.490393
+v 0.277785 0.625000 0.415735
+v 0.415735 0.625000 0.277785
+v 0.490393 0.625000 0.097545
+v 0.490393 0.625000 -0.097545
+v 0.415735 0.625000 -0.277786
+v 0.277785 0.656250 -0.415735
+v 0.097545 0.656250 -0.490393
+v -0.097545 0.656250 -0.490393
+v -0.277785 0.656250 -0.415735
+v -0.415735 0.656250 -0.277785
+v -0.490393 0.656250 -0.097545
+v -0.490393 0.656250 0.097545
+v -0.415735 0.656250 0.277785
+v -0.277785 0.656250 0.415735
+v -0.097545 0.656250 0.490392
+v 0.097545 0.656250 0.490393
+v 0.277785 0.656250 0.415735
+v 0.415735 0.656250 0.277785
+v 0.490393 0.656250 0.097545
+v 0.490393 0.656250 -0.097545
+v 0.415735 0.656250 -0.277786
+v 0.277785 1.496094 -0.415735
+v 0.097545 1.496094 -0.490393
+v -0.097545 1.496094 -0.490393
+v -0.277785 1.496094 -0.415735
+v -0.415735 1.496094 -0.277785
+v -0.490393 1.496094 -0.097545
+v -0.490393 1.496094 0.097545
+v -0.415735 1.496094 0.277785
+v -0.277785 1.496094 0.415735
+v -0.097545 1.496094 0.490393
+v 0.097545 1.496094 0.490393
+v 0.277785 1.496094 0.415735
+v 0.415735 1.496094 0.277785
+v 0.490393 1.496094 0.097545
+v 0.490393 1.496094 -0.097545
+v 0.415735 1.496094 -0.277785
+v 0.277785 1.464844 -0.415735
+v 0.097545 1.464844 -0.490393
+v -0.097545 1.464844 -0.490393
+v -0.277785 1.464844 -0.415735
+v -0.415735 1.464844 -0.277785
+v -0.490393 1.464844 -0.097545
+v -0.490393 1.464844 0.097545
+v -0.415735 1.464844 0.277785
+v -0.277785 1.464844 0.415735
+v -0.097545 1.464844 0.490393
+v 0.097545 1.464844 0.490393
+v 0.277785 1.464844 0.415735
+v 0.415735 1.464844 0.277785
+v 0.490393 1.464844 0.097545
+v 0.490393 1.464844 -0.097545
+v 0.415735 1.464844 -0.277785
+v 0.353554 0.625000 -0.353554
+v 0.191342 0.625000 -0.461940
+v 0.000000 0.625000 -0.500000
+v -0.191342 0.625000 -0.461940
+v -0.353553 0.625000 -0.353554
+v -0.461940 0.625000 -0.191342
+v -0.500000 0.625000 -0.000000
+v -0.461940 0.625000 0.191341
+v -0.353554 0.625000 0.353553
+v -0.191342 0.625000 0.461940
+v 0.000000 0.625000 0.500000
+v 0.191342 0.625000 0.461940
+v 0.353554 0.625000 0.353553
+v 0.461940 0.625000 0.191341
+v 0.500000 0.625000 -0.000000
+v 0.461940 0.625000 -0.191342
+v 0.353554 0.656250 -0.353554
+v 0.191342 0.656250 -0.461940
+v 0.000000 0.656250 -0.500000
+v -0.191342 0.656250 -0.461940
+v -0.353553 0.656250 -0.353554
+v -0.461940 0.656250 -0.191342
+v -0.500000 0.656250 -0.000000
+v -0.461940 0.656250 0.191341
+v -0.353554 0.656250 0.353553
+v -0.191342 0.656250 0.461940
+v 0.000000 0.656250 0.500000
+v 0.191342 0.656250 0.461940
+v 0.353554 0.656250 0.353553
+v 0.461940 0.656250 0.191341
+v 0.500000 0.656250 -0.000000
+v 0.461940 0.656250 -0.191342
+v 0.353553 1.496094 -0.353553
+v 0.191342 1.496094 -0.461940
+v 0.000000 1.496094 -0.500000
+v -0.191342 1.496094 -0.461940
+v -0.353554 1.496094 -0.353553
+v -0.461940 1.496094 -0.191342
+v -0.500000 1.496094 -0.000000
+v -0.461940 1.496094 0.191342
+v -0.353554 1.496094 0.353553
+v -0.191342 1.496094 0.461940
+v -0.000000 1.496094 0.500000
+v 0.191342 1.496094 0.461940
+v 0.353554 1.496094 0.353553
+v 0.461940 1.496094 0.191342
+v 0.500000 1.496094 -0.000000
+v 0.461940 1.496094 -0.191342
+v 0.353553 1.464844 -0.353553
+v 0.191342 1.464844 -0.461940
+v 0.000000 1.464844 -0.500000
+v -0.191342 1.464844 -0.461940
+v -0.353554 1.464844 -0.353553
+v -0.461940 1.464844 -0.191342
+v -0.500000 1.464844 -0.000000
+v -0.461940 1.464844 0.191342
+v -0.353554 1.464844 0.353553
+v -0.191342 1.464844 0.461940
+v -0.000000 1.464844 0.500000
+v 0.191342 1.464844 0.461940
+v 0.353554 1.464844 0.353553
+v 0.461940 1.464844 0.191342
+v 0.500000 1.464844 -0.000000
+v 0.461940 1.464844 -0.191342
+v 0.415735 0.625000 -0.277785
+v 0.277785 0.625000 -0.415735
+v 0.097545 0.625000 -0.490393
+v -0.097545 0.625000 -0.490393
+v -0.277785 0.625000 -0.415735
+v -0.415735 0.625000 -0.277785
+v -0.490393 0.625000 -0.097545
+v -0.490393 0.625000 0.097545
+v -0.415735 0.625000 0.277785
+v -0.277785 0.625000 0.415735
+v -0.097545 0.625000 0.490393
+v 0.097545 0.625000 0.490393
+v 0.277785 0.625000 0.415735
+v 0.415735 0.625000 0.277785
+v 0.490393 0.625000 0.097545
+v 0.490393 0.625000 -0.097546
+v 0.415735 0.656250 -0.277785
+v 0.277785 0.656250 -0.415735
+v 0.097545 0.656250 -0.490393
+v -0.097545 0.656250 -0.490393
+v -0.277785 0.656250 -0.415735
+v -0.415735 0.656250 -0.277785
+v -0.490393 0.656250 -0.097545
+v -0.490393 0.656250 0.097545
+v -0.415735 0.656250 0.277785
+v -0.277785 0.656250 0.415735
+v -0.097545 0.656250 0.490393
+v 0.097545 0.656250 0.490393
+v 0.277785 0.656250 0.415735
+v 0.415735 0.656250 0.277785
+v 0.490393 0.656250 0.097545
+v 0.490393 0.656250 -0.097546
+v 0.415735 1.496094 -0.277785
+v 0.277785 1.496094 -0.415735
+v 0.097545 1.496094 -0.490392
+v -0.097545 1.496094 -0.490393
+v -0.277785 1.496094 -0.415735
+v -0.415735 1.496094 -0.277785
+v -0.490393 1.496094 -0.097545
+v -0.490393 1.496094 0.097545
+v -0.415735 1.496094 0.277785
+v -0.277785 1.496094 0.415735
+v -0.097545 1.496094 0.490393
+v 0.097545 1.496094 0.490393
+v 0.277785 1.496094 0.415735
+v 0.415735 1.496094 0.277785
+v 0.490393 1.496094 0.097545
+v 0.490393 1.496094 -0.097545
+v 0.415735 1.464844 -0.277785
+v 0.277785 1.464844 -0.415735
+v 0.097545 1.464844 -0.490392
+v -0.097545 1.464844 -0.490393
+v -0.277785 1.464844 -0.415735
+v -0.415735 1.464844 -0.277785
+v -0.490393 1.464844 -0.097545
+v -0.490393 1.464844 0.097545
+v -0.415735 1.464844 0.277785
+v -0.277785 1.464844 0.415735
+v -0.097545 1.464844 0.490393
+v 0.097545 1.464844 0.490393
+v 0.277785 1.464844 0.415735
+v 0.415735 1.464844 0.277785
+v 0.490393 1.464844 0.097545
+v 0.490393 1.464844 -0.097545
+v 0.461939 0.625000 -0.191342
+v 0.353554 0.625000 -0.353553
+v 0.191342 0.625000 -0.461940
+v -0.000000 0.625000 -0.500000
+v -0.191342 0.625000 -0.461940
+v -0.353554 0.625000 -0.353554
+v -0.461940 0.625000 -0.191342
+v -0.500000 0.625000 -0.000000
+v -0.461940 0.625000 0.191341
+v -0.353554 0.625000 0.353553
+v -0.191342 0.625000 0.461940
+v -0.000000 0.625000 0.500000
+v 0.191342 0.625000 0.461940
+v 0.353554 0.625000 0.353553
+v 0.461939 0.625000 0.191342
+v 0.500000 0.625000 -0.000000
+v 0.461939 0.656250 -0.191342
+v 0.353554 0.656250 -0.353553
+v 0.191342 0.656250 -0.461940
+v -0.000000 0.656250 -0.500000
+v -0.191342 0.656250 -0.461940
+v -0.353554 0.656250 -0.353554
+v -0.461940 0.656250 -0.191342
+v -0.500000 0.656250 -0.000000
+v -0.461940 0.656250 0.191341
+v -0.353554 0.656250 0.353553
+v -0.191342 0.656250 0.461940
+v -0.000000 0.656250 0.500000
+v 0.191342 0.656250 0.461940
+v 0.353554 0.656250 0.353553
+v 0.461939 0.656250 0.191342
+v 0.500000 0.656250 -0.000000
+v 0.461939 1.496094 -0.191342
+v 0.353553 1.496094 -0.353553
+v 0.191342 1.496094 -0.461940
+v -0.000000 1.496094 -0.500000
+v -0.191342 1.496094 -0.461940
+v -0.353554 1.496094 -0.353553
+v -0.461940 1.496094 -0.191342
+v -0.500000 1.496094 -0.000000
+v -0.461940 1.496094 0.191342
+v -0.353554 1.496094 0.353553
+v -0.191342 1.496094 0.461940
+v -0.000000 1.496094 0.500000
+v 0.191342 1.496094 0.461940
+v 0.353553 1.496094 0.353553
+v 0.461939 1.496094 0.191342
+v 0.500000 1.496094 -0.000000
+v 0.461939 1.464844 -0.191342
+v 0.353553 1.464844 -0.353553
+v 0.191342 1.464844 -0.461940
+v -0.000000 1.464844 -0.500000
+v -0.191342 1.464844 -0.461940
+v -0.353554 1.464844 -0.353553
+v -0.461940 1.464844 -0.191342
+v -0.500000 1.464844 -0.000000
+v -0.461940 1.464844 0.191342
+v -0.353554 1.464844 0.353553
+v -0.191342 1.464844 0.461940
+v -0.000000 1.464844 0.500000
+v 0.191342 1.464844 0.461940
+v 0.353553 1.464844 0.353553
+v 0.461939 1.464844 0.191342
+v 0.500000 1.464844 -0.000000
+v 0.490393 0.625000 -0.097545
+v 0.415735 0.625000 -0.277785
+v 0.277785 0.625000 -0.415735
+v 0.097545 0.625000 -0.490393
+v -0.097545 0.625000 -0.490393
+v -0.277785 0.625000 -0.415735
+v -0.415735 0.625000 -0.277785
+v -0.490393 0.625000 -0.097545
+v -0.490393 0.625000 0.097545
+v -0.415735 0.625000 0.277785
+v -0.277785 0.625000 0.415735
+v -0.097545 0.625000 0.490393
+v 0.097545 0.625000 0.490393
+v 0.277785 0.625000 0.415735
+v 0.415735 0.625000 0.277785
+v 0.490393 0.625000 0.097545
+v 0.490393 0.656250 -0.097545
+v 0.415735 0.656250 -0.277785
+v 0.277785 0.656250 -0.415735
+v 0.097545 0.656250 -0.490393
+v -0.097545 0.656250 -0.490393
+v -0.277785 0.656250 -0.415735
+v -0.415735 0.656250 -0.277785
+v -0.490393 0.656250 -0.097545
+v -0.490393 0.656250 0.097545
+v -0.415735 0.656250 0.277785
+v -0.277785 0.656250 0.415735
+v -0.097545 0.656250 0.490393
+v 0.097545 0.656250 0.490393
+v 0.277785 0.656250 0.415735
+v 0.415735 0.656250 0.277785
+v 0.490393 0.656250 0.097545
+v 0.490393 1.496094 -0.097545
+v 0.415735 1.496094 -0.277785
+v 0.277785 1.496094 -0.415735
+v 0.097545 1.496094 -0.490393
+v -0.097545 1.496094 -0.490393
+v -0.277785 1.496094 -0.415735
+v -0.415735 1.496094 -0.277785
+v -0.490393 1.496094 -0.097545
+v -0.490393 1.496094 0.097545
+v -0.415735 1.496094 0.277785
+v -0.277785 1.496094 0.415735
+v -0.097545 1.496094 0.490393
+v 0.097545 1.496094 0.490393
+v 0.277785 1.496094 0.415735
+v 0.415735 1.496094 0.277785
+v 0.490393 1.496094 0.097545
+v 0.490393 1.464844 -0.097545
+v 0.415735 1.464844 -0.277785
+v 0.277785 1.464844 -0.415735
+v 0.097545 1.464844 -0.490393
+v -0.097545 1.464844 -0.490393
+v -0.277785 1.464844 -0.415735
+v -0.415735 1.464844 -0.277785
+v -0.490393 1.464844 -0.097545
+v -0.490393 1.464844 0.097545
+v -0.415735 1.464844 0.277785
+v -0.277785 1.464844 0.415735
+v -0.097545 1.464844 0.490393
+v 0.097545 1.464844 0.490393
+v 0.277785 1.464844 0.415735
+v 0.415735 1.464844 0.277785
+v 0.490393 1.464844 0.097545
+v 0.500001 0.625000 -0.000000
+v 0.461940 0.625000 -0.191342
+v 0.353554 0.625000 -0.353553
+v 0.191342 0.625000 -0.461940
+v 0.000000 0.625000 -0.500000
+v -0.191342 0.625000 -0.461940
+v -0.353553 0.625000 -0.353553
+v -0.461939 0.625000 -0.191342
+v -0.500000 0.625000 -0.000000
+v -0.461939 0.625000 0.191342
+v -0.353553 0.625000 0.353553
+v -0.191342 0.625000 0.461940
+v 0.000001 0.625000 0.500000
+v 0.191342 0.625000 0.461940
+v 0.353554 0.625000 0.353553
+v 0.461940 0.625000 0.191341
+v 0.500001 0.656250 -0.000000
+v 0.461940 0.656250 -0.191342
+v 0.353554 0.656250 -0.353553
+v 0.191342 0.656250 -0.461940
+v 0.000000 0.656250 -0.500000
+v -0.191342 0.656250 -0.461940
+v -0.353553 0.656250 -0.353553
+v -0.461939 0.656250 -0.191342
+v -0.500000 0.656250 -0.000000
+v -0.461939 0.656250 0.191342
+v -0.353553 0.656250 0.353553
+v -0.191342 0.656250 0.461940
+v 0.000001 0.656250 0.500000
+v 0.191342 0.656250 0.461940
+v 0.353554 0.656250 0.353553
+v 0.461940 0.656250 0.191341
+v 0.500000 1.496094 -0.000000
+v 0.461940 1.496094 -0.191342
+v 0.353554 1.496094 -0.353553
+v 0.191342 1.496094 -0.461940
+v 0.000000 1.496094 -0.500000
+v -0.191342 1.496094 -0.461940
+v -0.353553 1.496094 -0.353553
+v -0.461939 1.496094 -0.191342
+v -0.500000 1.496094 -0.000000
+v -0.461939 1.496094 0.191342
+v -0.353554 1.496094 0.353553
+v -0.191342 1.496094 0.461940
+v 0.000000 1.496094 0.500000
+v 0.191342 1.496094 0.461940
+v 0.353554 1.496094 0.353553
+v 0.461940 1.496094 0.191341
+v 0.500000 1.464844 -0.000000
+v 0.461940 1.464844 -0.191342
+v 0.353554 1.464844 -0.353553
+v 0.191342 1.464844 -0.461940
+v 0.000000 1.464844 -0.500000
+v -0.191342 1.464844 -0.461940
+v -0.353553 1.464844 -0.353553
+v -0.461939 1.464844 -0.191342
+v -0.500000 1.464844 -0.000000
+v -0.461939 1.464844 0.191342
+v -0.353554 1.464844 0.353553
+v -0.191342 1.464844 0.461940
+v 0.000000 1.464844 0.500000
+v 0.191342 1.464844 0.461940
+v 0.353554 1.464844 0.353553
+v 0.461940 1.464844 0.191341
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.050068 0.998878
+vt 0.074932 0.998878
+vt 0.097903 0.922758
+vt 0.115485 0.782105
+vt 0.125000 0.598334
+vt 0.125000 0.399421
+vt 0.115485 0.215651
+vt 0.097903 0.074998
+vt 0.074932 -0.001122
+vt 0.050068 -0.001122
+vt 0.027097 0.074998
+vt 0.009515 0.215650
+vt 0.000000 0.399421
+vt 0.000000 0.598334
+vt 0.009515 0.782105
+vt 0.027097 0.922758
+vt 0.175068 0.998878
+vt 0.199932 0.998878
+vt 0.222903 0.922758
+vt 0.240485 0.782105
+vt 0.250000 0.598334
+vt 0.250000 0.399421
+vt 0.240485 0.215651
+vt 0.222903 0.074998
+vt 0.199932 -0.001122
+vt 0.175068 -0.001122
+vt 0.152097 0.074998
+vt 0.134515 0.215650
+vt 0.134515 0.782105
+vt 0.152097 0.922758
+vt 0.300068 0.998878
+vt 0.324932 0.998878
+vt 0.347903 0.922758
+vt 0.365485 0.782105
+vt 0.375000 0.598334
+vt 0.375000 0.399421
+vt 0.365485 0.215651
+vt 0.347903 0.074998
+vt 0.324932 -0.001122
+vt 0.300068 -0.001122
+vt 0.277097 0.074998
+vt 0.259515 0.215650
+vt 0.259515 0.782105
+vt 0.277097 0.922758
+vt 0.425068 0.998878
+vt 0.449932 0.998878
+vt 0.472903 0.922758
+vt 0.490485 0.782105
+vt 0.500000 0.598334
+vt 0.500000 0.399421
+vt 0.490485 0.215651
+vt 0.472903 0.074998
+vt 0.449932 -0.001122
+vt 0.425068 -0.001122
+vt 0.402097 0.074998
+vt 0.384515 0.215650
+vt 0.384515 0.782105
+vt 0.402097 0.922758
+vt 0.550068 0.998878
+vt 0.574932 0.998878
+vt 0.597903 0.922758
+vt 0.615485 0.782105
+vt 0.625000 0.598334
+vt 0.625000 0.399421
+vt 0.615485 0.215651
+vt 0.597903 0.074998
+vt 0.574932 -0.001122
+vt 0.550068 -0.001122
+vt 0.527097 0.074998
+vt 0.509515 0.215650
+vt 0.509515 0.782105
+vt 0.527097 0.922758
+vt 0.675068 0.998878
+vt 0.699932 0.998878
+vt 0.722903 0.922758
+vt 0.740485 0.782105
+vt 0.750000 0.598334
+vt 0.750000 0.399421
+vt 0.740485 0.215651
+vt 0.722903 0.074998
+vt 0.699932 -0.001122
+vt 0.675068 -0.001122
+vt 0.652097 0.074998
+vt 0.634515 0.215650
+vt 0.634515 0.782105
+vt 0.652097 0.922758
+vt 0.800068 0.998878
+vt 0.824932 0.998878
+vt 0.847903 0.922758
+vt 0.865485 0.782105
+vt 0.875000 0.598334
+vt 0.875000 0.399421
+vt 0.865485 0.215651
+vt 0.847903 0.074998
+vt 0.824932 -0.001122
+vt 0.800068 -0.001122
+vt 0.777097 0.074998
+vt 0.759515 0.215650
+vt 0.759515 0.782105
+vt 0.777097 0.922758
+vt 0.925068 0.998878
+vt 0.949932 0.998878
+vt 0.972903 0.922758
+vt 0.990485 0.782105
+vt 1.000000 0.598334
+vt 1.000000 0.399421
+vt 0.990485 0.215651
+vt 0.972903 0.074998
+vt 0.949932 -0.001122
+vt 0.925068 -0.001122
+vt 0.902097 0.074998
+vt 0.884515 0.215650
+vt 0.884515 0.782105
+vt 0.902097 0.922758
+vt 0.062500 0.343750
+vt 0.066406 0.343750
+vt 0.066406 0.375000
+vt 0.062500 0.375000
+vt 0.066406 0.406250
+vt 0.062500 0.406250
+vt 0.062500 0.531250
+vt 0.066406 0.531250
+vt 0.066406 0.500000
+vt 0.062500 0.500000
+vt 0.066406 0.468750
+vt 0.062500 0.468750
+vt 0.066406 0.437500
+vt 0.062500 0.437500
+vt 0.074219 0.468750
+vt 0.078125 0.437500
+vt 0.082031 0.437500
+vt 0.085938 0.468750
+vt 0.085938 0.500000
+vt 0.082031 0.531250
+vt 0.078125 0.531250
+vt 0.074219 0.500000
+vt 0.062500 0.312500
+vt 0.066406 0.312500
+vt 0.062500 0.281250
+vt 0.066406 0.281250
+vt 0.023438 0.750000
+vt 0.023438 0.875000
+vt 0.019531 0.875000
+vt 0.019531 0.750000
+vt 0.023438 0.625000
+vt 0.019531 0.625000
+vt 0.023438 0.500000
+vt 0.019531 0.500000
+vt 0.023438 0.375000
+vt 0.019531 0.375000
+vt 0.023438 0.250000
+vt 0.019531 0.250000
+vt 0.035156 0.500000
+vt 0.035156 0.625000
+vt 0.027344 0.625000
+vt 0.027344 0.500000
+vt 0.023438 0.125000
+vt 0.019531 0.125000
+vt 0.023438 0.000000
+vt 0.019531 0.000000
+vt 0.035156 0.375000
+vt 0.027344 0.375000
+vt 0.035156 0.875000
+vt 0.035156 1.000000
+vt 0.027344 1.000000
+vt 0.027344 0.875000
+vt 0.035156 0.250000
+vt 0.027344 0.250000
+vt 0.035156 0.750000
+vt 0.027344 0.750000
+vt 0.035156 0.125000
+vt 0.027344 0.125000
+vt 0.035156 0.000000
+vt 0.027344 0.000000
+vt 0.023438 1.000000
+vt 0.019531 1.000000
+vt 0.078125 0.593750
+vt 0.078125 0.968750
+vt 0.062500 0.968750
+vt 0.062500 0.593750
+vt 0.082031 0.593750
+vt 0.097656 0.593750
+vt 0.097656 0.968750
+vt 0.082031 0.968750
+vt 0.046875 0.000000
+vt 0.054688 0.000000
+vt 0.054688 0.125000
+vt 0.046875 0.125000
+vt 0.039062 0.875000
+vt 0.042969 0.875000
+vt 0.042969 1.000000
+vt 0.039062 1.000000
+vt 0.039062 0.750000
+vt 0.042969 0.750000
+vt 0.039062 0.625000
+vt 0.042969 0.625000
+vt 0.039062 0.500000
+vt 0.042969 0.500000
+vt 0.046875 0.750000
+vt 0.054688 0.750000
+vt 0.054688 0.875000
+vt 0.046875 0.875000
+vt 0.039062 0.375000
+vt 0.042969 0.375000
+vt 0.039062 0.250000
+vt 0.042969 0.250000
+vt 0.046875 0.625000
+vt 0.054688 0.625000
+vt 0.039062 0.125000
+vt 0.042969 0.125000
+vt 0.046875 0.500000
+vt 0.054688 0.500000
+vt 0.039062 0.000000
+vt 0.042969 0.000000
+vt 0.046875 0.375000
+vt 0.054688 0.375000
+vt 0.054688 1.000000
+vt 0.046875 1.000000
+vt 0.046875 0.250000
+vt 0.054688 0.250000
+vt 0.003906 0.937500
+vt 0.007812 0.937500
+vt 0.007812 0.968750
+vt 0.003906 0.968750
+vt 0.003906 0.718750
+vt 0.007812 0.718750
+vt 0.007812 0.750000
+vt 0.003906 0.750000
+vt 0.007812 0.781250
+vt 0.003906 0.781250
+vt 0.007812 0.812500
+vt 0.003906 0.812500
+vt 0.007812 0.843750
+vt 0.003906 0.843750
+vt 0.007812 0.875000
+vt 0.003906 0.875000
+vt 0.003906 0.906250
+vt 0.007812 0.906250
+vt 0.203125 0.593750
+vt 0.203125 0.968750
+vt 0.187500 0.968750
+vt 0.187500 0.593750
+vt 0.207031 0.593750
+vt 0.222656 0.593750
+vt 0.222656 0.968750
+vt 0.207031 0.968750
+vt 0.328125 0.593750
+vt 0.328125 0.968750
+vt 0.312500 0.968750
+vt 0.312500 0.593750
+vt 0.332031 0.593750
+vt 0.347656 0.593750
+vt 0.347656 0.968750
+vt 0.332031 0.968750
+vt 0.453125 0.593750
+vt 0.453125 0.968750
+vt 0.437500 0.968750
+vt 0.437500 0.593750
+vt 0.457031 0.593750
+vt 0.472656 0.593750
+vt 0.472656 0.968750
+vt 0.457031 0.968750
+vt 0.148438 0.750000
+vt 0.148438 0.875000
+vt 0.144531 0.875000
+vt 0.144531 0.750000
+vt 0.148438 0.625000
+vt 0.144531 0.625000
+vt 0.148438 0.500000
+vt 0.144531 0.500000
+vt 0.148438 0.375000
+vt 0.144531 0.375000
+vt 0.148438 0.250000
+vt 0.144531 0.250000
+vt 0.160156 0.500000
+vt 0.160156 0.625000
+vt 0.152344 0.625000
+vt 0.152344 0.500000
+vt 0.148438 0.125000
+vt 0.144531 0.125000
+vt 0.148438 0.000000
+vt 0.144531 0.000000
+vt 0.160156 0.375000
+vt 0.152344 0.375000
+vt 0.160156 0.875000
+vt 0.160156 1.000000
+vt 0.152344 1.000000
+vt 0.152344 0.875000
+vt 0.160156 0.250000
+vt 0.152344 0.250000
+vt 0.160156 0.750000
+vt 0.152344 0.750000
+vt 0.160156 0.125000
+vt 0.152344 0.125000
+vt 0.160156 0.000000
+vt 0.152344 0.000000
+vt 0.148438 1.000000
+vt 0.144531 1.000000
+vt 0.171875 0.000000
+vt 0.179688 0.000000
+vt 0.179688 0.125000
+vt 0.171875 0.125000
+vt 0.164062 0.875000
+vt 0.167969 0.875000
+vt 0.167969 1.000000
+vt 0.164062 1.000000
+vt 0.164062 0.750000
+vt 0.167969 0.750000
+vt 0.164062 0.625000
+vt 0.167969 0.625000
+vt 0.164062 0.500000
+vt 0.167969 0.500000
+vt 0.171875 0.750000
+vt 0.179688 0.750000
+vt 0.179688 0.875000
+vt 0.171875 0.875000
+vt 0.164062 0.375000
+vt 0.167969 0.375000
+vt 0.164062 0.250000
+vt 0.167969 0.250000
+vt 0.171875 0.625000
+vt 0.179688 0.625000
+vt 0.164062 0.125000
+vt 0.167969 0.125000
+vt 0.171875 0.500000
+vt 0.179688 0.500000
+vt 0.164062 0.000000
+vt 0.167969 0.000000
+vt 0.171875 0.375000
+vt 0.179688 0.375000
+vt 0.179688 1.000000
+vt 0.171875 1.000000
+vt 0.171875 0.250000
+vt 0.179688 0.250000
+vt 0.273438 0.750000
+vt 0.273438 0.875000
+vt 0.269531 0.875000
+vt 0.269531 0.750000
+vt 0.273438 0.625000
+vt 0.269531 0.625000
+vt 0.273438 0.500000
+vt 0.269531 0.500000
+vt 0.273438 0.375000
+vt 0.269531 0.375000
+vt 0.273438 0.250000
+vt 0.269531 0.250000
+vt 0.285156 0.500000
+vt 0.285156 0.625000
+vt 0.277344 0.625000
+vt 0.277344 0.500000
+vt 0.273438 0.125000
+vt 0.269531 0.125000
+vt 0.273438 0.000000
+vt 0.269531 0.000000
+vt 0.285156 0.375000
+vt 0.277344 0.375000
+vt 0.285156 0.875000
+vt 0.285156 1.000000
+vt 0.277344 1.000000
+vt 0.277344 0.875000
+vt 0.285156 0.250000
+vt 0.277344 0.250000
+vt 0.285156 0.750000
+vt 0.277344 0.750000
+vt 0.285156 0.125000
+vt 0.277344 0.125000
+vt 0.285156 0.000000
+vt 0.277344 0.000000
+vt 0.273438 1.000000
+vt 0.269531 1.000000
+vt 0.296875 0.000000
+vt 0.304688 0.000000
+vt 0.304688 0.125000
+vt 0.296875 0.125000
+vt 0.289062 0.875000
+vt 0.292969 0.875000
+vt 0.292969 1.000000
+vt 0.289062 1.000000
+vt 0.289062 0.750000
+vt 0.292969 0.750000
+vt 0.289062 0.625000
+vt 0.292969 0.625000
+vt 0.289062 0.500000
+vt 0.292969 0.500000
+vt 0.296875 0.750000
+vt 0.304688 0.750000
+vt 0.304688 0.875000
+vt 0.296875 0.875000
+vt 0.289062 0.375000
+vt 0.292969 0.375000
+vt 0.289062 0.250000
+vt 0.292969 0.250000
+vt 0.296875 0.625000
+vt 0.304688 0.625000
+vt 0.289062 0.125000
+vt 0.292969 0.125000
+vt 0.296875 0.500000
+vt 0.304688 0.500000
+vt 0.289062 0.000000
+vt 0.292969 0.000000
+vt 0.296875 0.375000
+vt 0.304688 0.375000
+vt 0.304688 1.000000
+vt 0.296875 1.000000
+vt 0.296875 0.250000
+vt 0.304688 0.250000
+vt 0.398438 0.750000
+vt 0.398438 0.875000
+vt 0.394531 0.875000
+vt 0.394531 0.750000
+vt 0.398438 0.625000
+vt 0.394531 0.625000
+vt 0.398438 0.500000
+vt 0.394531 0.500000
+vt 0.398438 0.375000
+vt 0.394531 0.375000
+vt 0.398438 0.250000
+vt 0.394531 0.250000
+vt 0.410156 0.500000
+vt 0.410156 0.625000
+vt 0.402344 0.625000
+vt 0.402344 0.500000
+vt 0.398438 0.125000
+vt 0.394531 0.125000
+vt 0.398438 0.000000
+vt 0.394531 0.000000
+vt 0.410156 0.375000
+vt 0.402344 0.375000
+vt 0.410156 0.875000
+vt 0.410156 1.000000
+vt 0.402344 1.000000
+vt 0.402344 0.875000
+vt 0.410156 0.250000
+vt 0.402344 0.250000
+vt 0.410156 0.750000
+vt 0.402344 0.750000
+vt 0.410156 0.125000
+vt 0.402344 0.125000
+vt 0.410156 0.000000
+vt 0.402344 0.000000
+vt 0.398438 1.000000
+vt 0.394531 1.000000
+vt 0.421875 0.000000
+vt 0.429688 0.000000
+vt 0.429688 0.125000
+vt 0.421875 0.125000
+vt 0.414062 0.875000
+vt 0.417969 0.875000
+vt 0.417969 1.000000
+vt 0.414062 1.000000
+vt 0.414062 0.750000
+vt 0.417969 0.750000
+vt 0.414062 0.625000
+vt 0.417969 0.625000
+vt 0.414062 0.500000
+vt 0.417969 0.500000
+vt 0.421875 0.750000
+vt 0.429688 0.750000
+vt 0.429688 0.875000
+vt 0.421875 0.875000
+vt 0.414062 0.375000
+vt 0.417969 0.375000
+vt 0.414062 0.250000
+vt 0.417969 0.250000
+vt 0.421875 0.625000
+vt 0.429688 0.625000
+vt 0.414062 0.125000
+vt 0.417969 0.125000
+vt 0.421875 0.500000
+vt 0.429688 0.500000
+vt 0.414062 0.000000
+vt 0.417969 0.000000
+vt 0.421875 0.375000
+vt 0.429688 0.375000
+vt 0.429688 1.000000
+vt 0.421875 1.000000
+vt 0.421875 0.250000
+vt 0.429688 0.250000
+vt 0.523438 0.750000
+vt 0.523438 0.875000
+vt 0.519531 0.875000
+vt 0.519531 0.750000
+vt 0.523438 0.625000
+vt 0.519531 0.625000
+vt 0.523438 0.500000
+vt 0.519531 0.500000
+vt 0.523438 0.375000
+vt 0.519531 0.375000
+vt 0.523438 0.250000
+vt 0.519531 0.250000
+vt 0.535156 0.500000
+vt 0.535156 0.625000
+vt 0.527344 0.625000
+vt 0.527344 0.500000
+vt 0.523438 0.125000
+vt 0.519531 0.125000
+vt 0.523438 0.000000
+vt 0.519531 0.000000
+vt 0.535156 0.375000
+vt 0.527344 0.375000
+vt 0.535156 0.875000
+vt 0.535156 1.000000
+vt 0.527344 1.000000
+vt 0.527344 0.875000
+vt 0.535156 0.250000
+vt 0.527344 0.250000
+vt 0.535156 0.750000
+vt 0.527344 0.750000
+vt 0.535156 0.125000
+vt 0.527344 0.125000
+vt 0.535156 0.000000
+vt 0.527344 0.000000
+vt 0.523438 1.000000
+vt 0.519531 1.000000
+vt 0.546875 0.000000
+vt 0.554688 0.000000
+vt 0.554688 0.125000
+vt 0.546875 0.125000
+vt 0.539062 0.875000
+vt 0.542969 0.875000
+vt 0.542969 1.000000
+vt 0.539062 1.000000
+vt 0.539062 0.750000
+vt 0.542969 0.750000
+vt 0.539062 0.625000
+vt 0.542969 0.625000
+vt 0.539062 0.500000
+vt 0.542969 0.500000
+vt 0.546875 0.750000
+vt 0.554688 0.750000
+vt 0.554688 0.875000
+vt 0.546875 0.875000
+vt 0.539062 0.375000
+vt 0.542969 0.375000
+vt 0.539062 0.250000
+vt 0.542969 0.250000
+vt 0.546875 0.625000
+vt 0.554688 0.625000
+vt 0.539062 0.125000
+vt 0.542969 0.125000
+vt 0.546875 0.500000
+vt 0.554688 0.500000
+vt 0.539062 0.000000
+vt 0.542969 0.000000
+vt 0.546875 0.375000
+vt 0.554688 0.375000
+vt 0.554688 1.000000
+vt 0.546875 1.000000
+vt 0.546875 0.250000
+vt 0.554688 0.250000
+vt 0.648438 0.750000
+vt 0.648438 0.875000
+vt 0.644531 0.875000
+vt 0.644531 0.750000
+vt 0.648438 0.625000
+vt 0.644531 0.625000
+vt 0.648438 0.500000
+vt 0.644531 0.500000
+vt 0.648438 0.375000
+vt 0.644531 0.375000
+vt 0.648438 0.250000
+vt 0.644531 0.250000
+vt 0.660156 0.500000
+vt 0.660156 0.625000
+vt 0.652344 0.625000
+vt 0.652344 0.500000
+vt 0.648438 0.125000
+vt 0.644531 0.125000
+vt 0.648438 0.000000
+vt 0.644531 0.000000
+vt 0.660156 0.375000
+vt 0.652344 0.375000
+vt 0.660156 0.875000
+vt 0.660156 1.000000
+vt 0.652344 1.000000
+vt 0.652344 0.875000
+vt 0.660156 0.250000
+vt 0.652344 0.250000
+vt 0.660156 0.750000
+vt 0.652344 0.750000
+vt 0.660156 0.125000
+vt 0.652344 0.125000
+vt 0.660156 0.000000
+vt 0.652344 0.000000
+vt 0.648438 1.000000
+vt 0.644531 1.000000
+vt 0.671875 0.000000
+vt 0.679688 0.000000
+vt 0.679688 0.125000
+vt 0.671875 0.125000
+vt 0.664062 0.875000
+vt 0.667969 0.875000
+vt 0.667969 1.000000
+vt 0.664062 1.000000
+vt 0.664062 0.750000
+vt 0.667969 0.750000
+vt 0.664062 0.625000
+vt 0.667969 0.625000
+vt 0.664062 0.500000
+vt 0.667969 0.500000
+vt 0.671875 0.750000
+vt 0.679688 0.750000
+vt 0.679688 0.875000
+vt 0.671875 0.875000
+vt 0.664062 0.375000
+vt 0.667969 0.375000
+vt 0.664062 0.250000
+vt 0.667969 0.250000
+vt 0.671875 0.625000
+vt 0.679688 0.625000
+vt 0.664062 0.125000
+vt 0.667969 0.125000
+vt 0.671875 0.500000
+vt 0.679688 0.500000
+vt 0.664062 0.000000
+vt 0.667969 0.000000
+vt 0.671875 0.375000
+vt 0.679688 0.375000
+vt 0.679688 1.000000
+vt 0.671875 1.000000
+vt 0.671875 0.250000
+vt 0.679688 0.250000
+vt 0.773438 0.750000
+vt 0.773438 0.875000
+vt 0.769531 0.875000
+vt 0.769531 0.750000
+vt 0.773438 0.625000
+vt 0.769531 0.625000
+vt 0.773438 0.500000
+vt 0.769531 0.500000
+vt 0.773438 0.375000
+vt 0.769531 0.375000
+vt 0.773438 0.250000
+vt 0.769531 0.250000
+vt 0.785156 0.500000
+vt 0.785156 0.625000
+vt 0.777344 0.625000
+vt 0.777344 0.500000
+vt 0.773438 0.125000
+vt 0.769531 0.125000
+vt 0.773438 0.000000
+vt 0.769531 0.000000
+vt 0.785156 0.375000
+vt 0.777344 0.375000
+vt 0.785156 0.875000
+vt 0.785156 1.000000
+vt 0.777344 1.000000
+vt 0.777344 0.875000
+vt 0.785156 0.250000
+vt 0.777344 0.250000
+vt 0.785156 0.750000
+vt 0.777344 0.750000
+vt 0.785156 0.125000
+vt 0.777344 0.125000
+vt 0.785156 0.000000
+vt 0.777344 0.000000
+vt 0.773438 1.000000
+vt 0.769531 1.000000
+vt 0.796875 0.000000
+vt 0.804688 0.000000
+vt 0.804688 0.125000
+vt 0.796875 0.125000
+vt 0.789062 0.875000
+vt 0.792969 0.875000
+vt 0.792969 1.000000
+vt 0.789062 1.000000
+vt 0.789062 0.750000
+vt 0.792969 0.750000
+vt 0.789062 0.625000
+vt 0.792969 0.625000
+vt 0.789062 0.500000
+vt 0.792969 0.500000
+vt 0.796875 0.750000
+vt 0.804688 0.750000
+vt 0.804688 0.875000
+vt 0.796875 0.875000
+vt 0.789062 0.375000
+vt 0.792969 0.375000
+vt 0.789062 0.250000
+vt 0.792969 0.250000
+vt 0.796875 0.625000
+vt 0.804688 0.625000
+vt 0.789062 0.125000
+vt 0.792969 0.125000
+vt 0.796875 0.500000
+vt 0.804688 0.500000
+vt 0.789062 0.000000
+vt 0.792969 0.000000
+vt 0.796875 0.375000
+vt 0.804688 0.375000
+vt 0.804688 1.000000
+vt 0.796875 1.000000
+vt 0.796875 0.250000
+vt 0.804688 0.250000
+vt 0.898438 0.750000
+vt 0.898438 0.875000
+vt 0.894531 0.875000
+vt 0.894531 0.750000
+vt 0.898438 0.625000
+vt 0.894531 0.625000
+vt 0.898438 0.500000
+vt 0.894531 0.500000
+vt 0.898438 0.375000
+vt 0.894531 0.375000
+vt 0.898438 0.250000
+vt 0.894531 0.250000
+vt 0.910156 0.500000
+vt 0.910156 0.625000
+vt 0.902344 0.625000
+vt 0.902344 0.500000
+vt 0.898438 0.125000
+vt 0.894531 0.125000
+vt 0.898438 0.000000
+vt 0.894531 0.000000
+vt 0.910156 0.375000
+vt 0.902344 0.375000
+vt 0.910156 0.875000
+vt 0.910156 1.000000
+vt 0.902344 1.000000
+vt 0.902344 0.875000
+vt 0.910156 0.250000
+vt 0.902344 0.250000
+vt 0.910156 0.750000
+vt 0.902344 0.750000
+vt 0.910156 0.125000
+vt 0.902344 0.125000
+vt 0.910156 0.000000
+vt 0.902344 0.000000
+vt 0.898438 1.000000
+vt 0.894531 1.000000
+vt 0.921875 0.000000
+vt 0.929688 0.000000
+vt 0.929688 0.125000
+vt 0.921875 0.125000
+vt 0.914062 0.875000
+vt 0.917969 0.875000
+vt 0.917969 1.000000
+vt 0.914062 1.000000
+vt 0.914062 0.750000
+vt 0.917969 0.750000
+vt 0.914062 0.625000
+vt 0.917969 0.625000
+vt 0.914062 0.500000
+vt 0.917969 0.500000
+vt 0.921875 0.750000
+vt 0.929688 0.750000
+vt 0.929688 0.875000
+vt 0.921875 0.875000
+vt 0.914062 0.375000
+vt 0.917969 0.375000
+vt 0.914062 0.250000
+vt 0.917969 0.250000
+vt 0.921875 0.625000
+vt 0.929688 0.625000
+vt 0.914062 0.125000
+vt 0.917969 0.125000
+vt 0.921875 0.500000
+vt 0.929688 0.500000
+vt 0.914062 0.000000
+vt 0.917969 0.000000
+vt 0.921875 0.375000
+vt 0.929688 0.375000
+vt 0.929688 1.000000
+vt 0.921875 1.000000
+vt 0.921875 0.250000
+vt 0.929688 0.250000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.382700 0.000000 -0.923900
+vn 0.923900 0.000000 -0.382700
+vn 0.923900 0.000000 0.382700
+vn 0.382700 0.000000 0.923900
+vn -0.382700 0.000000 0.923900
+vn -0.923900 0.000000 0.382700
+vn -0.382700 0.000000 -0.923900
+vn -0.923900 0.000000 -0.382700
+vn 0.707100 0.000000 0.707100
+vn -0.707100 0.000000 0.707100
+vn 0.707100 0.000000 -0.707100
+vn -0.707100 0.000000 -0.707100
+vn 0.152100 0.000000 -0.988400
+vn -0.152100 0.000000 0.988400
+vn -0.988400 0.000000 -0.152100
+vn 0.806400 0.000000 -0.591300
+vn -0.806400 0.000000 0.591300
+vn -0.591300 0.000000 -0.806400
+vn 0.988400 0.000000 0.152100
+vn 0.591300 0.000000 0.806400
+vn 0.342000 0.000000 -0.939700
+vn -0.342000 0.000000 0.939700
+vn -0.939700 0.000000 -0.342000
+vn 0.906300 0.000000 -0.422600
+vn -0.906300 0.000000 0.422600
+vn -0.422600 0.000000 -0.906300
+vn 0.939700 0.000000 0.342000
+vn 0.422600 0.000000 0.906300
+vn 0.518800 0.000000 -0.854900
+vn -0.518800 0.000000 0.854900
+vn -0.854900 0.000000 -0.518800
+vn 0.971300 0.000000 -0.237700
+vn -0.971300 0.000000 0.237700
+vn -0.237700 0.000000 -0.971300
+vn 0.854900 0.000000 0.518800
+vn 0.237700 0.000000 0.971300
+vn 0.675600 0.000000 -0.737300
+vn -0.675600 0.000000 0.737300
+vn -0.737300 0.000000 -0.675600
+vn 0.999000 0.000000 -0.043600
+vn -0.999000 0.000000 0.043600
+vn -0.043600 0.000000 -0.999000
+vn 0.737300 0.000000 0.675600
+vn 0.043600 0.000000 0.999000
+vn 0.555600 0.000000 0.831500
+vn 0.195100 0.000000 0.980800
+vn -0.195100 0.000000 0.980800
+vn -0.555600 0.000000 0.831500
+vn -0.831500 0.000000 0.555600
+vn 0.195100 0.000000 -0.980800
+vn -0.980800 0.000000 0.195100
+vn -0.980800 0.000000 -0.195100
+vn 0.555600 0.000000 -0.831500
+vn -0.831500 0.000000 -0.555600
+vn 0.831500 0.000000 -0.555600
+vn -0.555600 0.000000 -0.831500
+vn 0.980800 0.000000 -0.195100
+vn -0.195100 0.000000 -0.980800
+vn 0.980800 0.000000 0.195100
+vn 0.831500 0.000000 0.555600
+g Cylinder.002_Cylinder.003_sides
+s off
+f 105/1/1 109/2/1 110/3/1 106/4/1
+f 106/1/2 110/2/2 111/3/2 107/4/2
+f 107/4/3 111/3/3 112/2/3 108/1/3
+f 109/2/4 105/1/4 108/4/4 112/3/4
+g Cylinder.002_Cylinder.003_top-bottom
+f 105/2/5 106/1/5 107/4/5 108/3/5
+f 109/2/6 112/3/6 111/4/6 110/1/6
+g Cylinder.002_Cylinder.003_turbine-top-bottom
+f 74/5/5 73/6/5 88/7/5 87/8/5 86/9/5 85/10/5 84/11/5 83/12/5 82/13/5 81/14/5 80/15/5 79/16/5 78/17/5 77/18/5 76/19/5 75/20/5
+f 18/5/5 17/6/5 32/7/5 31/8/5 30/9/5 29/10/5 28/11/5 27/12/5 26/13/5 25/14/5 24/15/5 23/16/5 22/17/5 21/18/5 20/19/5 19/20/5
+f 33/6/6 34/5/6 35/20/6 36/19/6 37/18/6 38/17/6 39/16/6 40/15/6 41/14/6 42/13/6 43/12/6 44/11/6 45/10/6 46/9/6 47/8/6 48/7/6
+f 57/6/6 58/5/6 59/20/6 60/19/6 61/18/6 62/17/6 63/16/6 64/15/6 65/14/6 66/13/6 67/12/6 68/11/6 69/10/6 70/9/6 71/8/6 72/7/6
+f 410/21/5 409/22/5 424/23/5 423/24/5 422/25/5 421/26/5 420/27/5 419/28/5 418/29/5 417/30/5 416/31/5 415/32/5 414/10/5 413/9/5 412/33/5 411/34/5
+f 362/21/5 361/22/5 376/23/5 375/24/5 374/25/5 373/26/5 372/27/5 371/28/5 370/29/5 369/30/5 368/31/5 367/32/5 366/10/5 365/9/5 364/33/5 363/34/5
+f 377/22/6 378/21/6 379/34/6 380/33/6 381/9/6 382/10/6 383/32/6 384/31/6 385/30/6 386/29/6 387/28/6 388/27/6 389/26/6 390/25/6 391/24/6 392/23/6
+f 393/22/6 394/21/6 395/34/6 396/33/6 397/9/6 398/10/6 399/32/6 400/31/6 401/30/6 402/29/6 403/28/6 404/27/6 405/26/6 406/25/6 407/24/6 408/23/6
+f 474/35/5 473/36/5 488/37/5 487/38/5 486/39/5 485/40/5 484/41/5 483/42/5 482/43/5 481/44/5 480/45/5 479/46/5 478/26/5 477/25/5 476/47/5 475/48/5
+f 426/35/5 425/36/5 440/37/5 439/38/5 438/39/5 437/40/5 436/41/5 435/42/5 434/43/5 433/44/5 432/45/5 431/46/5 430/26/5 429/25/5 428/47/5 427/48/5
+f 441/36/6 442/35/6 443/48/6 444/47/6 445/25/6 446/26/6 447/46/6 448/45/6 449/44/6 450/43/6 451/42/6 452/41/6 453/40/6 454/39/6 455/38/6 456/37/6
+f 457/36/6 458/35/6 459/48/6 460/47/6 461/25/6 462/26/6 463/46/6 464/45/6 465/44/6 466/43/6 467/42/6 468/41/6 469/40/6 470/39/6 471/38/6 472/37/6
+f 538/49/5 537/50/5 552/51/5 551/52/5 550/53/5 549/54/5 548/55/5 547/56/5 546/57/5 545/58/5 544/59/5 543/60/5 542/40/5 541/39/5 540/61/5 539/62/5
+f 490/49/5 489/50/5 504/51/5 503/52/5 502/53/5 501/54/5 500/55/5 499/56/5 498/57/5 497/58/5 496/59/5 495/60/5 494/40/5 493/39/5 492/61/5 491/62/5
+f 505/50/6 506/49/6 507/62/6 508/61/6 509/39/6 510/40/6 511/60/6 512/59/6 513/58/6 514/57/6 515/56/6 516/55/6 517/54/6 518/53/6 519/52/6 520/51/6
+f 521/50/6 522/49/6 523/62/6 524/61/6 525/39/6 526/40/6 527/60/6 528/59/6 529/58/6 530/57/6 531/56/6 532/55/6 533/54/6 534/53/6 535/52/6 536/51/6
+f 602/63/5 601/64/5 616/65/5 615/66/5 614/67/5 613/68/5 612/69/5 611/70/5 610/71/5 609/72/5 608/73/5 607/74/5 606/54/5 605/53/5 604/75/5 603/76/5
+f 554/63/5 553/64/5 568/65/5 567/66/5 566/67/5 565/68/5 564/69/5 563/70/5 562/71/5 561/72/5 560/73/5 559/74/5 558/54/5 557/53/5 556/75/5 555/76/5
+f 569/64/6 570/63/6 571/76/6 572/75/6 573/53/6 574/54/6 575/74/6 576/73/6 577/72/6 578/71/6 579/70/6 580/69/6 581/68/6 582/67/6 583/66/6 584/65/6
+f 585/64/6 586/63/6 587/76/6 588/75/6 589/53/6 590/54/6 591/74/6 592/73/6 593/72/6 594/71/6 595/70/6 596/69/6 597/68/6 598/67/6 599/66/6 600/65/6
+f 666/77/5 665/78/5 680/79/5 679/80/5 678/81/5 677/82/5 676/83/5 675/84/5 674/85/5 673/86/5 672/87/5 671/88/5 670/68/5 669/67/5 668/89/5 667/90/5
+f 618/77/5 617/78/5 632/79/5 631/80/5 630/81/5 629/82/5 628/83/5 627/84/5 626/85/5 625/86/5 624/87/5 623/88/5 622/68/5 621/67/5 620/89/5 619/90/5
+f 633/78/6 634/77/6 635/90/6 636/89/6 637/67/6 638/68/6 639/88/6 640/87/6 641/86/6 642/85/6 643/84/6 644/83/6 645/82/6 646/81/6 647/80/6 648/79/6
+f 649/78/6 650/77/6 651/90/6 652/89/6 653/67/6 654/68/6 655/88/6 656/87/6 657/86/6 658/85/6 659/84/6 660/83/6 661/82/6 662/81/6 663/80/6 664/79/6
+f 730/91/5 729/92/5 744/93/5 743/94/5 742/95/5 741/96/5 740/97/5 739/98/5 738/99/5 737/100/5 736/101/5 735/102/5 734/82/5 733/81/5 732/103/5 731/104/5
+f 682/91/5 681/92/5 696/93/5 695/94/5 694/95/5 693/96/5 692/97/5 691/98/5 690/99/5 689/100/5 688/101/5 687/102/5 686/82/5 685/81/5 684/103/5 683/104/5
+f 697/92/6 698/91/6 699/104/6 700/103/6 701/81/6 702/82/6 703/102/6 704/101/6 705/100/6 706/99/6 707/98/6 708/97/6 709/96/6 710/95/6 711/94/6 712/93/6
+f 713/92/6 714/91/6 715/104/6 716/103/6 717/81/6 718/82/6 719/102/6 720/101/6 721/100/6 722/99/6 723/98/6 724/97/6 725/96/6 726/95/6 727/94/6 728/93/6
+f 794/105/5 793/106/5 808/107/5 807/108/5 806/109/5 805/110/5 804/111/5 803/112/5 802/113/5 801/114/5 800/115/5 799/116/5 798/96/5 797/95/5 796/117/5 795/118/5
+f 746/105/5 745/106/5 760/107/5 759/108/5 758/109/5 757/110/5 756/111/5 755/112/5 754/113/5 753/114/5 752/115/5 751/116/5 750/96/5 749/95/5 748/117/5 747/118/5
+f 761/106/6 762/105/6 763/118/6 764/117/6 765/95/6 766/96/6 767/116/6 768/115/6 769/114/6 770/113/6 771/112/6 772/111/6 773/110/6 774/109/6 775/108/6 776/107/6
+f 777/106/6 778/105/6 779/118/6 780/117/6 781/95/6 782/96/6 783/116/6 784/115/6 785/114/6 786/113/6 787/112/6 788/111/6 789/110/6 790/109/6 791/108/6 792/107/6
+g Cylinder.002_Cylinder.003_turbine-blades-etc
+f 1/119/7 2/120/7 4/121/7 3/122/7
+f 3/122/8 4/121/8 6/123/8 5/124/8
+f 5/125/9 6/126/9 8/127/9 7/128/9
+f 7/128/10 8/127/10 10/129/10 9/130/10
+f 9/130/11 10/129/11 12/131/11 11/132/11
+f 11/132/12 12/131/12 14/123/12 13/124/12
+f 4/133/6 2/134/6 16/135/6 14/136/6 12/137/6 10/138/6 8/139/6 6/140/6
+f 15/141/13 16/142/13 2/120/13 1/119/13
+f 13/143/14 14/144/14 16/142/14 15/141/14
+f 27/145/15 28/146/15 44/147/15 43/148/15
+f 26/149/10 27/145/10 43/148/10 42/150/10
+f 25/151/2 26/149/2 42/150/2 41/152/2
+f 24/153/11 25/151/11 41/152/11 40/154/11
+f 23/155/16 24/153/16 40/154/16 39/156/16
+f 17/157/4 18/158/4 34/159/4 33/160/4
+f 22/161/12 23/155/12 39/156/12 38/162/12
+f 21/163/3 22/161/3 38/162/3 37/164/3
+f 32/165/7 17/157/7 33/160/7 48/166/7
+f 20/167/14 21/168/14 37/169/14 36/170/14
+f 31/171/17 32/165/17 48/166/17 47/172/17
+f 19/173/18 20/167/18 36/170/18 35/174/18
+f 30/175/8 31/171/8 47/172/8 46/176/8
+f 18/158/13 19/173/13 35/174/13 34/159/13
+f 29/177/1 30/175/1 46/176/1 45/178/1
+f 28/146/9 29/179/9 45/180/9 44/147/9
+f 52/181/19 51/182/19 50/183/19 49/184/19
+f 53/185/20 54/186/20 55/187/20 56/188/20
+f 51/182/21 52/181/21 53/185/21 56/188/21
+f 67/189/15 83/190/15 84/191/15 68/192/15
+f 66/193/10 82/194/10 83/195/10 67/196/10
+f 65/197/2 81/198/2 82/194/2 66/193/2
+f 64/199/11 80/200/11 81/198/11 65/197/11
+f 63/201/16 79/202/16 80/200/16 64/199/16
+f 57/203/4 73/204/4 74/205/4 58/206/4
+f 62/207/12 78/208/12 79/202/12 63/201/12
+f 61/209/3 77/210/3 78/208/3 62/207/3
+f 72/211/7 88/212/7 73/204/7 57/203/7
+f 60/213/14 76/214/14 77/210/14 61/209/14
+f 71/215/17 87/216/17 88/212/17 72/211/17
+f 59/217/18 75/218/18 76/214/18 60/213/18
+f 70/219/8 86/220/8 87/216/8 71/215/8
+f 58/206/13 74/205/13 75/221/13 59/222/13
+f 69/223/1 85/224/1 86/220/1 70/219/1
+f 68/192/9 84/191/9 85/224/9 69/223/9
+f 89/225/17 90/226/17 92/227/17 91/228/17
+f 91/229/1 92/230/1 94/231/1 93/232/1
+f 93/232/15 94/231/15 96/233/15 95/234/15
+f 95/234/2 96/233/2 98/235/2 97/236/2
+f 97/236/16 98/235/16 100/237/16 99/238/16
+f 99/238/3 100/237/3 102/239/3 101/240/3
+f 103/241/4 104/242/4 90/226/4 89/225/4
+f 101/240/18 102/239/18 104/242/18 103/241/18
+f 116/181/22 115/182/22 114/183/22 113/184/22
+f 117/185/23 118/186/23 119/187/23 120/188/23
+f 115/182/24 116/181/24 117/185/24 120/188/24
+f 124/181/25 123/182/25 122/183/25 121/184/25
+f 125/185/21 126/186/21 127/187/21 128/188/21
+f 123/182/19 124/181/19 125/185/19 128/188/19
+f 132/181/26 131/182/26 130/183/26 129/184/26
+f 133/185/24 134/186/24 135/187/24 136/188/24
+f 131/182/22 132/181/22 133/185/22 136/188/22
+f 140/181/20 139/182/20 138/183/20 137/184/20
+f 141/185/19 142/186/19 143/187/19 144/188/19
+f 139/182/25 140/181/25 141/185/25 144/188/25
+f 148/181/23 147/182/23 146/183/23 145/184/23
+f 149/185/22 150/186/22 151/187/22 152/188/22
+f 147/182/26 148/181/26 149/185/26 152/188/26
+f 156/181/21 155/182/21 154/183/21 153/184/21
+f 157/185/25 158/186/25 159/187/25 160/188/25
+f 155/182/20 156/181/20 157/185/20 160/188/20
+f 164/181/24 163/182/24 162/183/24 161/184/24
+f 165/185/26 166/186/26 167/187/26 168/188/26
+f 163/182/23 164/181/23 165/185/23 168/188/23
+f 172/243/27 171/244/27 170/245/27 169/246/27
+f 173/247/28 174/248/28 175/249/28 176/250/28
+f 171/244/29 172/243/29 173/247/29 176/250/29
+f 180/243/30 179/244/30 178/245/30 177/246/30
+f 181/247/31 182/248/31 183/249/31 184/250/31
+f 179/244/32 180/243/32 181/247/32 184/250/32
+f 188/243/33 187/244/33 186/245/33 185/246/33
+f 189/247/29 190/248/29 191/249/29 192/250/29
+f 187/244/27 188/243/27 189/247/27 192/250/27
+f 196/243/34 195/244/34 194/245/34 193/246/34
+f 197/247/32 198/248/32 199/249/32 200/250/32
+f 195/244/30 196/243/30 197/247/30 200/250/30
+f 204/243/28 203/244/28 202/245/28 201/246/28
+f 205/247/27 206/248/27 207/249/27 208/250/27
+f 203/244/33 204/243/33 205/247/33 208/250/33
+f 212/243/31 211/244/31 210/245/31 209/246/31
+f 213/247/30 214/248/30 215/249/30 216/250/30
+f 211/244/34 212/243/34 213/247/34 216/250/34
+f 220/243/29 219/244/29 218/245/29 217/246/29
+f 221/247/33 222/248/33 223/249/33 224/250/33
+f 219/244/28 220/243/28 221/247/28 224/250/28
+f 228/243/32 227/244/32 226/245/32 225/246/32
+f 229/247/34 230/248/34 231/249/34 232/250/34
+f 227/244/31 228/243/31 229/247/31 232/250/31
+f 236/251/35 235/252/35 234/253/35 233/254/35
+f 237/255/36 238/256/36 239/257/36 240/258/36
+f 235/252/37 236/251/37 237/255/37 240/258/37
+f 244/251/38 243/252/38 242/253/38 241/254/38
+f 245/255/39 246/256/39 247/257/39 248/258/39
+f 243/252/40 244/251/40 245/255/40 248/258/40
+f 252/251/41 251/252/41 250/253/41 249/254/41
+f 253/255/37 254/256/37 255/257/37 256/258/37
+f 251/252/35 252/251/35 253/255/35 256/258/35
+f 260/251/42 259/252/42 258/253/42 257/254/42
+f 261/255/40 262/256/40 263/257/40 264/258/40
+f 259/252/38 260/251/38 261/255/38 264/258/38
+f 268/251/36 267/252/36 266/253/36 265/254/36
+f 269/255/35 270/256/35 271/257/35 272/258/35
+f 267/252/41 268/251/41 269/255/41 272/258/41
+f 276/251/39 275/252/39 274/253/39 273/254/39
+f 277/255/38 278/256/38 279/257/38 280/258/38
+f 275/252/42 276/251/42 277/255/42 280/258/42
+f 284/251/37 283/252/37 282/253/37 281/254/37
+f 285/255/41 286/256/41 287/257/41 288/258/41
+f 283/252/36 284/251/36 285/255/36 288/258/36
+f 292/251/40 291/252/40 290/253/40 289/254/40
+f 293/255/42 294/256/42 295/257/42 296/258/42
+f 291/252/39 292/251/39 293/255/39 296/258/39
+f 300/259/43 299/260/43 298/261/43 297/262/43
+f 301/263/44 302/264/44 303/265/44 304/266/44
+f 299/260/45 300/259/45 301/263/45 304/266/45
+f 308/259/46 307/260/46 306/261/46 305/262/46
+f 309/263/47 310/264/47 311/265/47 312/266/47
+f 307/260/48 308/259/48 309/263/48 312/266/48
+f 316/259/49 315/260/49 314/261/49 313/262/49
+f 317/263/45 318/264/45 319/265/45 320/266/45
+f 315/260/43 316/259/43 317/263/43 320/266/43
+f 324/259/50 323/260/50 322/261/50 321/262/50
+f 325/263/48 326/264/48 327/265/48 328/266/48
+f 323/260/46 324/259/46 325/263/46 328/266/46
+f 332/259/44 331/260/44 330/261/44 329/262/44
+f 333/263/43 334/264/43 335/265/43 336/266/43
+f 331/260/49 332/259/49 333/263/49 336/266/49
+f 340/259/47 339/260/47 338/261/47 337/262/47
+f 341/263/46 342/264/46 343/265/46 344/266/46
+f 339/260/50 340/259/50 341/263/50 344/266/50
+f 348/259/45 347/260/45 346/261/45 345/262/45
+f 349/263/49 350/264/49 351/265/49 352/266/49
+f 347/260/44 348/259/44 349/263/44 352/266/44
+f 356/259/48 355/260/48 354/261/48 353/262/48
+f 357/263/50 358/264/50 359/265/50 360/266/50
+f 355/260/47 356/259/47 357/263/47 360/266/47
+f 371/267/51 372/268/51 388/269/51 387/270/51
+f 370/271/52 371/267/52 387/270/52 386/272/52
+f 369/273/53 370/271/53 386/272/53 385/274/53
+f 368/275/54 369/273/54 385/274/54 384/276/54
+f 367/277/55 368/275/55 384/276/55 383/278/55
+f 361/279/56 362/280/56 378/281/56 377/282/56
+f 366/283/57 367/277/57 383/278/57 382/284/57
+f 365/285/58 366/283/58 382/284/58 381/286/58
+f 376/287/59 361/279/59 377/282/59 392/288/59
+f 364/289/60 365/290/60 381/291/60 380/292/60
+f 375/293/61 376/287/61 392/288/61 391/294/61
+f 363/295/62 364/289/62 380/292/62 379/296/62
+f 374/297/63 375/293/63 391/294/63 390/298/63
+f 362/280/64 363/295/64 379/296/64 378/281/64
+f 373/299/65 374/297/65 390/298/65 389/300/65
+f 372/268/66 373/301/66 389/302/66 388/269/66
+f 403/303/51 419/304/51 420/305/51 404/306/51
+f 402/307/52 418/308/52 419/309/52 403/310/52
+f 401/311/53 417/312/53 418/308/53 402/307/53
+f 400/313/54 416/314/54 417/312/54 401/311/54
+f 399/315/55 415/316/55 416/314/55 400/313/55
+f 393/317/56 409/318/56 410/319/56 394/320/56
+f 398/321/57 414/322/57 415/316/57 399/315/57
+f 397/323/58 413/324/58 414/322/58 398/321/58
+f 408/325/59 424/326/59 409/318/59 393/317/59
+f 396/327/60 412/328/60 413/324/60 397/323/60
+f 407/329/61 423/330/61 424/326/61 408/325/61
+f 395/331/62 411/332/62 412/328/62 396/327/62
+f 406/333/63 422/334/63 423/330/63 407/329/63
+f 394/320/64 410/319/64 411/335/64 395/336/64
+f 405/337/65 421/338/65 422/334/65 406/333/65
+f 404/306/66 420/305/66 421/338/66 405/337/66
+f 435/339/10 436/340/10 452/341/10 451/342/10
+f 434/343/2 435/339/2 451/342/2 450/344/2
+f 433/345/11 434/343/11 450/344/11 449/346/11
+f 432/347/16 433/345/16 449/346/16 448/348/16
+f 431/349/12 432/347/12 448/348/12 447/350/12
+f 425/351/7 426/352/7 442/353/7 441/354/7
+f 430/355/3 431/349/3 447/350/3 446/356/3
+f 429/357/14 430/355/14 446/356/14 445/358/14
+f 440/359/17 425/351/17 441/354/17 456/360/17
+f 428/361/18 429/362/18 445/363/18 444/364/18
+f 439/365/8 440/359/8 456/360/8 455/366/8
+f 427/367/13 428/361/13 444/364/13 443/368/13
+f 438/369/1 439/365/1 455/366/1 454/370/1
+f 426/352/4 427/367/4 443/368/4 442/353/4
+f 437/371/9 438/369/9 454/370/9 453/372/9
+f 436/340/15 437/373/15 453/374/15 452/341/15
+f 467/375/10 483/376/10 484/377/10 468/378/10
+f 466/379/2 482/380/2 483/381/2 467/382/2
+f 465/383/11 481/384/11 482/380/11 466/379/11
+f 464/385/16 480/386/16 481/384/16 465/383/16
+f 463/387/12 479/388/12 480/386/12 464/385/12
+f 457/389/7 473/390/7 474/391/7 458/392/7
+f 462/393/3 478/394/3 479/388/3 463/387/3
+f 461/395/14 477/396/14 478/394/14 462/393/14
+f 472/397/17 488/398/17 473/390/17 457/389/17
+f 460/399/18 476/400/18 477/396/18 461/395/18
+f 471/401/8 487/402/8 488/398/8 472/397/8
+f 459/403/13 475/404/13 476/400/13 460/399/13
+f 470/405/1 486/406/1 487/402/1 471/401/1
+f 458/392/4 474/391/4 475/407/4 459/408/4
+f 469/409/9 485/410/9 486/406/9 470/405/9
+f 468/378/15 484/377/15 485/410/15 469/409/15
+f 499/411/52 500/412/52 516/413/52 515/414/52
+f 498/415/53 499/411/53 515/414/53 514/416/53
+f 497/417/54 498/415/54 514/416/54 513/418/54
+f 496/419/55 497/417/55 513/418/55 512/420/55
+f 495/421/57 496/419/57 512/420/57 511/422/57
+f 489/423/59 490/424/59 506/425/59 505/426/59
+f 494/427/58 495/421/58 511/422/58 510/428/58
+f 493/429/60 494/427/60 510/428/60 509/430/60
+f 504/431/61 489/423/61 505/426/61 520/432/61
+f 492/433/62 493/434/62 509/435/62 508/436/62
+f 503/437/63 504/431/63 520/432/63 519/438/63
+f 491/439/64 492/433/64 508/436/64 507/440/64
+f 502/441/65 503/437/65 519/438/65 518/442/65
+f 490/424/56 491/439/56 507/440/56 506/425/56
+f 501/443/66 502/441/66 518/442/66 517/444/66
+f 500/412/51 501/445/51 517/446/51 516/413/51
+f 531/447/52 547/448/52 548/449/52 532/450/52
+f 530/451/53 546/452/53 547/453/53 531/454/53
+f 529/455/54 545/456/54 546/452/54 530/451/54
+f 528/457/55 544/458/55 545/456/55 529/455/55
+f 527/459/57 543/460/57 544/458/57 528/457/57
+f 521/461/59 537/462/59 538/463/59 522/464/59
+f 526/465/58 542/466/58 543/460/58 527/459/58
+f 525/467/60 541/468/60 542/466/60 526/465/60
+f 536/469/61 552/470/61 537/462/61 521/461/61
+f 524/471/62 540/472/62 541/468/62 525/467/62
+f 535/473/63 551/474/63 552/470/63 536/469/63
+f 523/475/64 539/476/64 540/472/64 524/471/64
+f 534/477/65 550/478/65 551/474/65 535/473/65
+f 522/464/56 538/463/56 539/479/56 523/480/56
+f 533/481/66 549/482/66 550/478/66 534/477/66
+f 532/450/51 548/449/51 549/482/51 533/481/51
+f 563/483/2 564/484/2 580/485/2 579/486/2
+f 562/487/11 563/483/11 579/486/11 578/488/11
+f 561/489/16 562/487/16 578/488/16 577/490/16
+f 560/491/12 561/489/12 577/490/12 576/492/12
+f 559/493/3 560/491/3 576/492/3 575/494/3
+f 553/495/17 554/496/17 570/497/17 569/498/17
+f 558/499/14 559/493/14 575/494/14 574/500/14
+f 557/501/18 558/499/18 574/500/18 573/502/18
+f 568/503/8 553/495/8 569/498/8 584/504/8
+f 556/505/13 557/506/13 573/507/13 572/508/13
+f 567/509/1 568/503/1 584/504/1 583/510/1
+f 555/511/4 556/505/4 572/508/4 571/512/4
+f 566/513/9 567/509/9 583/510/9 582/514/9
+f 554/496/7 555/511/7 571/512/7 570/497/7
+f 565/515/15 566/513/15 582/514/15 581/516/15
+f 564/484/10 565/517/10 581/518/10 580/485/10
+f 595/519/2 611/520/2 612/521/2 596/522/2
+f 594/523/11 610/524/11 611/525/11 595/526/11
+f 593/527/16 609/528/16 610/524/16 594/523/16
+f 592/529/12 608/530/12 609/528/12 593/527/12
+f 591/531/3 607/532/3 608/530/3 592/529/3
+f 585/533/17 601/534/17 602/535/17 586/536/17
+f 590/537/14 606/538/14 607/532/14 591/531/14
+f 589/539/18 605/540/18 606/538/18 590/537/18
+f 600/541/8 616/542/8 601/534/8 585/533/8
+f 588/543/13 604/544/13 605/540/13 589/539/13
+f 599/545/1 615/546/1 616/542/1 600/541/1
+f 587/547/4 603/548/4 604/544/4 588/543/4
+f 598/549/9 614/550/9 615/546/9 599/545/9
+f 586/536/7 602/535/7 603/551/7 587/552/7
+f 597/553/15 613/554/15 614/550/15 598/549/15
+f 596/522/10 612/521/10 613/554/10 597/553/10
+f 627/555/53 628/556/53 644/557/53 643/558/53
+f 626/559/54 627/555/54 643/558/54 642/560/54
+f 625/561/55 626/559/55 642/560/55 641/562/55
+f 624/563/57 625/561/57 641/562/57 640/564/57
+f 623/565/58 624/563/58 640/564/58 639/566/58
+f 617/567/61 618/568/61 634/569/61 633/570/61
+f 622/571/60 623/565/60 639/566/60 638/572/60
+f 621/573/62 622/571/62 638/572/62 637/574/62
+f 632/575/63 617/567/63 633/570/63 648/576/63
+f 620/577/64 621/578/64 637/579/64 636/580/64
+f 631/581/65 632/575/65 648/576/65 647/582/65
+f 619/583/56 620/577/56 636/580/56 635/584/56
+f 630/585/66 631/581/66 647/582/66 646/586/66
+f 618/568/59 619/583/59 635/584/59 634/569/59
+f 629/587/51 630/585/51 646/586/51 645/588/51
+f 628/556/52 629/589/52 645/590/52 644/557/52
+f 659/591/53 675/592/53 676/593/53 660/594/53
+f 658/595/54 674/596/54 675/597/54 659/598/54
+f 657/599/55 673/600/55 674/596/55 658/595/55
+f 656/601/57 672/602/57 673/600/57 657/599/57
+f 655/603/58 671/604/58 672/602/58 656/601/58
+f 649/605/61 665/606/61 666/607/61 650/608/61
+f 654/609/60 670/610/60 671/604/60 655/603/60
+f 653/611/62 669/612/62 670/610/62 654/609/62
+f 664/613/63 680/614/63 665/606/63 649/605/63
+f 652/615/64 668/616/64 669/612/64 653/611/64
+f 663/617/65 679/618/65 680/614/65 664/613/65
+f 651/619/56 667/620/56 668/616/56 652/615/56
+f 662/621/66 678/622/66 679/618/66 663/617/66
+f 650/608/59 666/607/59 667/623/59 651/624/59
+f 661/625/51 677/626/51 678/622/51 662/621/51
+f 660/594/52 676/593/52 677/626/52 661/625/52
+f 691/627/11 692/628/11 708/629/11 707/630/11
+f 690/631/16 691/627/16 707/630/16 706/632/16
+f 689/633/12 690/631/12 706/632/12 705/634/12
+f 688/635/3 689/633/3 705/634/3 704/636/3
+f 687/637/14 688/635/14 704/636/14 703/638/14
+f 681/639/8 682/640/8 698/641/8 697/642/8
+f 686/643/18 687/637/18 703/638/18 702/644/18
+f 685/645/13 686/643/13 702/644/13 701/646/13
+f 696/647/1 681/639/1 697/642/1 712/648/1
+f 684/649/4 685/650/4 701/651/4 700/652/4
+f 695/653/9 696/647/9 712/648/9 711/654/9
+f 683/655/7 684/649/7 700/652/7 699/656/7
+f 694/657/15 695/653/15 711/654/15 710/658/15
+f 682/640/17 683/655/17 699/656/17 698/641/17
+f 693/659/10 694/657/10 710/658/10 709/660/10
+f 692/628/2 693/661/2 709/662/2 708/629/2
+f 723/663/11 739/664/11 740/665/11 724/666/11
+f 722/667/16 738/668/16 739/669/16 723/670/16
+f 721/671/12 737/672/12 738/668/12 722/667/12
+f 720/673/3 736/674/3 737/672/3 721/671/3
+f 719/675/14 735/676/14 736/674/14 720/673/14
+f 713/677/8 729/678/8 730/679/8 714/680/8
+f 718/681/18 734/682/18 735/676/18 719/675/18
+f 717/683/13 733/684/13 734/682/13 718/681/13
+f 728/685/1 744/686/1 729/678/1 713/677/1
+f 716/687/4 732/688/4 733/684/4 717/683/4
+f 727/689/9 743/690/9 744/686/9 728/685/9
+f 715/691/7 731/692/7 732/688/7 716/687/7
+f 726/693/15 742/694/15 743/690/15 727/689/15
+f 714/680/17 730/679/17 731/695/17 715/696/17
+f 725/697/10 741/698/10 742/694/10 726/693/10
+f 724/666/2 740/665/2 741/698/2 725/697/2
+f 755/699/54 756/700/54 772/701/54 771/702/54
+f 754/703/55 755/699/55 771/702/55 770/704/55
+f 753/705/57 754/703/57 770/704/57 769/706/57
+f 752/707/58 753/705/58 769/706/58 768/708/58
+f 751/709/60 752/707/60 768/708/60 767/710/60
+f 745/711/63 746/712/63 762/713/63 761/714/63
+f 750/715/62 751/709/62 767/710/62 766/716/62
+f 749/717/64 750/715/64 766/716/64 765/718/64
+f 760/719/65 745/711/65 761/714/65 776/720/65
+f 748/721/56 749/722/56 765/723/56 764/724/56
+f 759/725/66 760/719/66 776/720/66 775/726/66
+f 747/727/59 748/721/59 764/724/59 763/728/59
+f 758/729/51 759/725/51 775/726/51 774/730/51
+f 746/712/61 747/727/61 763/728/61 762/713/61
+f 757/731/52 758/729/52 774/730/52 773/732/52
+f 756/700/53 757/733/53 773/734/53 772/701/53
+f 787/735/54 803/736/54 804/737/54 788/738/54
+f 786/739/55 802/740/55 803/741/55 787/742/55
+f 785/743/57 801/744/57 802/740/57 786/739/57
+f 784/745/58 800/746/58 801/744/58 785/743/58
+f 783/747/60 799/748/60 800/746/60 784/745/60
+f 777/749/63 793/750/63 794/751/63 778/752/63
+f 782/753/62 798/754/62 799/748/62 783/747/62
+f 781/755/64 797/756/64 798/754/64 782/753/64
+f 792/757/65 808/758/65 793/750/65 777/749/65
+f 780/759/56 796/760/56 797/756/56 781/755/56
+f 791/761/66 807/762/66 808/758/66 792/757/66
+f 779/763/59 795/764/59 796/760/59 780/759/59
+f 790/765/51 806/766/51 807/762/51 791/761/51
+f 778/752/61 794/751/61 795/767/61 779/768/61
+f 789/769/52 805/770/52 806/766/52 790/765/52
+f 788/738/53 804/737/53 805/770/53 789/769/53
diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png
similarity index 100%
rename from mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc.png
rename to mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png
diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_on.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_on.png
new file mode 100644
index 0000000..e609dd2
Binary files /dev/null and b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_on.png differ
diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_off.png
similarity index 100%
rename from mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom.png
rename to mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_off.png
diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_on.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_on.png
new file mode 100644
index 0000000..ac4df83
Binary files /dev/null and b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_on.png differ
diff --git a/mesecons_insulated/init.lua b/mesecons_insulated/init.lua
index c6fc05e..15b916b 100644
--- a/mesecons_insulated/init.lua
+++ b/mesecons_insulated/init.lua
@@ -1,4 +1,4 @@
-function insulated_wire_get_rules(node)
+local function insulated_wire_get_rules(node)
 	local rules = 	{{x = 1,  y = 0,  z = 0},
 			 {x =-1,  y = 0,  z = 0}}
 	if node.param2 == 1 or node.param2 == 3 then
diff --git a/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_01.png b/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_01.png
deleted file mode 100644
index d872b2b..0000000
Binary files a/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_01.png and /dev/null differ
diff --git a/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_10.png b/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_10.png
deleted file mode 100644
index ae06dea..0000000
Binary files a/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_10.png and /dev/null differ
diff --git a/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_off.png b/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_off.png
deleted file mode 100644
index 41b5ff4..0000000
Binary files a/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_off.png and /dev/null differ
diff --git a/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_on.png b/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_on.png
deleted file mode 100644
index 154288b..0000000
Binary files a/mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_on.png and /dev/null differ
diff --git a/mesecons_insulated/textures/jeija_insulated_wire_ends_01x.png b/mesecons_insulated/textures/jeija_insulated_wire_ends_01x.png
deleted file mode 100644
index b742152..0000000
Binary files a/mesecons_insulated/textures/jeija_insulated_wire_ends_01x.png and /dev/null differ
diff --git a/mesecons_insulated/textures/jeija_insulated_wire_ends_01z.png b/mesecons_insulated/textures/jeija_insulated_wire_ends_01z.png
deleted file mode 100644
index 497a467..0000000
Binary files a/mesecons_insulated/textures/jeija_insulated_wire_ends_01z.png and /dev/null differ
diff --git a/mesecons_insulated/textures/jeija_insulated_wire_ends_10x.png b/mesecons_insulated/textures/jeija_insulated_wire_ends_10x.png
deleted file mode 100644
index d407cff..0000000
Binary files a/mesecons_insulated/textures/jeija_insulated_wire_ends_10x.png and /dev/null differ
diff --git a/mesecons_insulated/textures/jeija_insulated_wire_ends_10z.png b/mesecons_insulated/textures/jeija_insulated_wire_ends_10z.png
deleted file mode 100644
index 830d390..0000000
Binary files a/mesecons_insulated/textures/jeija_insulated_wire_ends_10z.png and /dev/null differ
diff --git a/mesecons_lamp/init.lua b/mesecons_lamp/init.lua
index 362453c..811e659 100644
--- a/mesecons_lamp/init.lua
+++ b/mesecons_lamp/init.lua
@@ -2,7 +2,7 @@
 -- A lamp is "is an electrical device used to create artificial light" (wikipedia)
 -- guess what?
 
-mesecon_lamp_box = {
+local mesecon_lamp_box = {
 	type = "wallmounted",
 	wall_top = {-0.3125,0.375,-0.3125,0.3125,0.5,0.3125},
 	wall_bottom = {-0.3125,-0.5,-0.3125,0.3125,-0.375,0.3125},
diff --git a/mesecons_luacontroller/init.lua b/mesecons_luacontroller/init.lua
index 7d76b26..d874fdf 100644
--- a/mesecons_luacontroller/init.lua
+++ b/mesecons_luacontroller/init.lua
@@ -273,9 +273,25 @@ end
 local function get_digiline_send(pos)
 	if not digiline then return end
 	return function(channel, msg)
+		-- Make sure channel is string, number or boolean
+		if (type(channel) ~= "string" and type(channel) ~= "number" and type(channel) ~= "boolean") then
+			return false
+		end
+
+		-- It is technically possible to send functions over the wire since
+		-- the high performance impact of stripping those from the data has
+		-- been decided to not be worth the added realism.
+		-- Make sure serialized version of the data is not insanely long to
+		-- prevent DoS-like attacks
+		local msg_ser = minetest.serialize(msg)
+		if #msg_ser > mesecon.setting("luacontroller_digiline_maxlen", 50000) then
+			return false
+		end
+
 		minetest.after(0, function()
 			digiline:receptor_send(pos, digiline.rules.default, channel, msg)
 		end)
+		return true
 	end
 end
 
@@ -284,6 +300,7 @@ local safe_globals = {
 	"assert", "error", "ipairs", "next", "pairs", "select",
 	"tonumber", "tostring", "type", "unpack", "_VERSION"
 }
+
 local function create_environment(pos, mem, event)
 	-- Gather variables for the environment
 	local vports = minetest.registered_nodes[minetest.get_node(pos).name].virtual_portstates
diff --git a/mesecons_microcontroller/init.lua b/mesecons_microcontroller/init.lua
index 6778a10..b241713 100644
--- a/mesecons_microcontroller/init.lua
+++ b/mesecons_microcontroller/init.lua
@@ -1,6 +1,7 @@
-EEPROM_SIZE = 255
+local EEPROM_SIZE = 255
 
 local microc_rules = {}
+local yc = {}
 
 for a = 0, 1 do
 for b = 0, 1 do
@@ -20,6 +21,7 @@ end
 if tostring(d) == "1" then
 	top = top.."^jeija_microcontroller_LED_D.png"
 end
+local groups
 if tostring(d)..tostring(c)..tostring(b)..tostring(a) ~= "0000" then
 	groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon = 3, overheat = 1}
 else
@@ -42,8 +44,8 @@ local mesecons = {effector =
 {
 	rules = input_rules,
 	action_change = function (pos, node, rulename, newstate)
-		yc_update_real_portstates(pos, node, rulename, newstate)
-		update_yc(pos)
+		yc.update_real_portstates(pos, node, rulename, newstate)
+		yc.update(pos)
 	end
 }}
 if nodename ~= "mesecons_microcontroller:microcontroller0000" then
@@ -127,8 +129,8 @@ minetest.register_node(nodename, {
 		"button[7.5,0.2;1.5,3;brsflop;RS-Flop]"..
 		"button_exit[3.5,1;2,3;program;Program]")
 		meta:set_string("infotext", "Programmed Microcontroller")
-		yc_reset (pos)
-		update_yc(pos)
+		yc.reset (pos)
+		yc.update(pos)
 	end,
 	sounds = default.node_sound_stone_defaults(),
 	mesecons = mesecons,
@@ -151,8 +153,8 @@ minetest.register_craft({
 	}
 })
 
-function yc_reset(pos)
-	yc_action(pos, {a=false, b=false, c=false, d=false})
+yc.reset = function(pos)
+	yc.action(pos, {a=false, b=false, c=false, d=false})
 	local meta = minetest.get_meta(pos)
 	meta:set_int("afterid", 0)
 	local r = ""
@@ -160,7 +162,7 @@ function yc_reset(pos)
 	meta:set_string("eeprom", r)
 end
 
-function update_yc(pos)
+yc.update = function(pos)
 	local meta = minetest.get_meta(pos)
 
 	if (mesecon.do_overheat(pos)) then
@@ -172,10 +174,10 @@ function update_yc(pos)
 	end
 
 	local code = meta:get_string("code")
-	code = yc_code_remove_commentary(code)
+	code = yc.code_remove_commentary(code)
 	code = string.gsub(code, " ", "")	--Remove all spaces
 	code = string.gsub(code, "	", "")	--Remove all tabs
-	if yc_parsecode(code, pos) == nil then
+	if yc.parsecode(code, pos) == nil then
 		meta:set_string("infotext", "Code not valid!\n"..code)
 	else
 		meta:set_string("infotext", "Working Microcontroller\n"..code)
@@ -184,7 +186,7 @@ end
 
 
 --Code Parsing
-function yc_code_remove_commentary(code)
+yc.code_remove_commentary = function(code)
 	local is_string = false
 	for i = 1, #code do
 		if code:sub(i, i) == '"' then
@@ -196,50 +198,50 @@ function yc_code_remove_commentary(code)
 	return code
 end
 
-function yc_parsecode(code, pos)
+yc.parsecode = function(code, pos)
 	local meta = minetest.get_meta(pos)
 	local endi = 1
-	local Lreal = yc_get_real_portstates(pos)
-	local Lvirtual = yc_get_virtual_portstates(pos)
+	local Lreal = yc.get_real_portstates(pos)
+	local Lvirtual = yc.get_virtual_portstates(pos)
 	if Lvirtual == nil then return nil end
 	local c
 	local eeprom = meta:get_string("eeprom")
 	while true do
 		local command, params
-		command, endi = parse_get_command(code, endi)
+		command, endi = yc.parse_get_command(code, endi)
 		if command == nil then return nil end
 		if command == true then break end --end of code
 		if command == "if" then
 			local r
-			r, endi = yc_command_if(code, endi, yc_merge_portstates(Lreal, Lvirtual), eeprom)
+			r, endi = yc.command_if(code, endi, yc.merge_portstates(Lreal, Lvirtual), eeprom)
 			if r == nil then return nil end
 			if r == true then  -- nothing
 			elseif r == false then
-				local endi_new = yc_skip_to_else (code, endi)
+				local endi_new = yc.skip_to_else (code, endi)
 				if endi_new == nil then --else > not found
-					endi = yc_skip_to_endif(code, endi)
+					endi = yc.skip_to_endif(code, endi)
 				else
 					endi = endi_new
 				end
 				if endi == nil then return nil end
 			end
 		else
-			params, endi = parse_get_params(code, endi)
+			params, endi = yc.parse_get_params(code, endi)
 			if not params then return nil end
 		end
 		if command == "on" then
-			L = yc_command_on (params, Lvirtual)
+			L = yc.command_on (params, Lvirtual)
 		elseif command == "off" then
-			L = yc_command_off(params, Lvirtual)
+			L = yc.command_off(params, Lvirtual)
 		elseif command == "print" then
-			local su = yc_command_print(params, eeprom, yc_merge_portstates(Lreal, Lvirtual))
+			local su = yc.command_print(params, eeprom, yc.merge_portstates(Lreal, Lvirtual))
 			if su ~= true then return nil end
 		elseif command == "after" then
-			local su = yc_command_after(params, pos)
+			local su = yc.command_after(params, pos)
 			if su == nil then return nil end
 		elseif command == "sbi" then
 			local new_eeprom
-			new_eeprom, Lvirtual = yc_command_sbi (params, eeprom, yc_merge_portstates(Lreal, Lvirtual), Lvirtual)
+			new_eeprom, Lvirtual = yc.command_sbi (params, eeprom, yc.merge_portstates(Lreal, Lvirtual), Lvirtual)
 			if new_eeprom == nil then return nil
 			else eeprom = new_eeprom end
 		elseif command == "if" then --nothing
@@ -250,11 +252,11 @@ function yc_parsecode(code, pos)
 		if eeprom == nil then return nil else
 		minetest.get_meta(pos):set_string("eeprom", eeprom) end
 	end
-	yc_action(pos, Lvirtual)
+	yc.action(pos, Lvirtual)
 	return true
 end
 
-function parse_get_command(code, starti)
+yc.parse_get_command = function(code, starti)
 	i = starti
 	local s
 	while s ~= "" do
@@ -266,7 +268,7 @@ function parse_get_command(code, starti)
 			starti = starti + 1
 			i = starti
 		elseif s == ">" then
-			starti = yc_skip_to_endif(code, starti)
+			starti = yc.skip_to_endif(code, starti)
 			if starti == nil then return nil end
 			i = starti
 		else
@@ -280,7 +282,7 @@ function parse_get_command(code, starti)
 	return nil, nil
 end
 
-function parse_get_params(code, starti)
+yc.parse_get_params = function(code, starti)
 	i = starti
 	local s
 	local params = {}
@@ -303,7 +305,7 @@ function parse_get_params(code, starti)
 	return nil, nil
 end
 
-function yc_parse_get_eeprom_param(cond, starti)
+yc.parse_get_eeprom_param = function(cond, starti)
 	i = starti
 	local s
 	local addr
@@ -319,7 +321,7 @@ function yc_parse_get_eeprom_param(cond, starti)
 	return nil, nil
 end
 
-function yc_skip_to_endif(code, starti)
+yc.skip_to_endif = function(code, starti)
 	local i = starti
 	local s = false
 	local open_ifs = 1
@@ -339,7 +341,7 @@ function yc_skip_to_endif(code, starti)
 	return nil
 end
 
-function yc_skip_to_else(code, starti)
+yc.skip_to_else = function(code, starti)
 	local i = starti
 	local s = false
 	local open_ifs = 1
@@ -360,29 +362,29 @@ function yc_skip_to_else(code, starti)
 end
 
 --Commands
-function yc_command_on(params, L)
+yc.command_on = function(params, L)
 	local rules = {}
 	for i, port in ipairs(params) do
-		L = yc_set_portstate (port, true, L)
+		L = yc.set_portstate (port, true, L)
 	end
 	return L
 end
 
-function yc_command_off(params, L)
+yc.command_off = function(params, L)
 	local rules = {}
 	for i, port in ipairs(params) do
-		L = yc_set_portstate (port, false, L)
+		L = yc.set_portstate (port, false, L)
 	end
 	return L
 end
 
-function yc_command_print(params, eeprom, L)
+yc.command_print = function(params, eeprom, L)
 	local s = ""
 	for i, param in ipairs(params) do
 		if param:sub(1,1) == '"' and param:sub(#param, #param) == '"' then
 			s = s..param:sub(2, #param-1)
 		else
-			r = yc_command_parsecondition(param, L, eeprom)
+			r = yc.command_parsecondition(param, L, eeprom)
 			if r == "1" or r == "0" then
 				s = s..r
 			else return nil end
@@ -392,17 +394,17 @@ function yc_command_print(params, eeprom, L)
 	return true
 end
 
-function yc_command_sbi(params, eeprom, L, Lv)
+yc.command_sbi = function(params, eeprom, L, Lv)
 	if params[1]==nil or params[2]==nil or params[3] ~=nil then return nil end
-	local status = yc_command_parsecondition(params[2], L, eeprom)
+	local status = yc.command_parsecondition(params[2], L, eeprom)
 
 	if status == nil then return nil, nil end
 
 	if string.find("ABCD", params[1])~=nil and #params[1]==1 then --is a port
 		if status == "1" then
-			Lv = yc_set_portstate (params[1], true,  Lv)
+			Lv = yc.set_portstate (params[1], true,  Lv)
 		else
-			Lv = yc_set_portstate (params[1], false, Lv)
+			Lv = yc.set_portstate (params[1], false, Lv)
 		end
 		return eeprom, Lv;
 	end
@@ -420,7 +422,7 @@ function yc_command_sbi(params, eeprom, L, Lv)
 end
 
 -- after (delay)
-function yc_command_after(params, pos)
+yc.command_after = function(params, pos)
 	if params[1] == nil or params[2] == nil or params[3] ~= nil then return nil end
 
 	--get time (maximum time is 200)
@@ -436,14 +438,14 @@ function yc_command_after(params, pos)
 	local afterid = math.random(10000)
 	local meta = minetest.get_meta(pos)
 	meta:set_int("afterid", afterid)
-	minetest.after(time, yc_command_after_execute, {pos = pos, code = code, afterid = afterid})
+	minetest.after(time, yc.command_after_execute, {pos = pos, code = code, afterid = afterid})
 	return true
 end
 
-function yc_command_after_execute(params)
+yc.command_after_execute = function(params)
 	local meta = minetest.get_meta(params.pos)
 	if meta:get_int("afterid") == params.afterid then --make sure the node has not been changed
-		if yc_parsecode(params.code, params.pos) == nil then
+		if yc.parsecode(params.code, params.pos) == nil then
 			meta:set_string("infotext", "Code in after() not valid!")
 		else
 			if code ~= nil then
@@ -456,21 +458,21 @@ function yc_command_after_execute(params)
 end
 
 --If
-function yc_command_if(code, starti, L, eeprom)
-	local cond, endi = yc_command_if_getcondition(code, starti)
+yc.command_if = function(code, starti, L, eeprom)
+	local cond, endi = yc.command_if_getcondition(code, starti)
 	if cond == nil then return nil end
 
-	cond = yc_command_parsecondition(cond, L, eeprom)
+	cond = yc.command_parsecondition(cond, L, eeprom)
 
 	local result
 	if cond == "0" then result = false
 	elseif cond == "1" then result = true end
 	if not result then end
-	return result, endi --endi from local cond, endi = yc_command_if_getcondition(code, starti)
+	return result, endi --endi from local cond, endi = yc.command_if_getcondition(code, starti)
 end
 
 --Condition parsing
-function yc_command_if_getcondition(code, starti)
+yc.command_if_getcondition = function(code, starti)
 	i = starti
 	local s
 	local brackets = 1 --1 Bracket to close
@@ -494,7 +496,7 @@ function yc_command_if_getcondition(code, starti)
 	return nil, nil
 end
 
-function yc_command_parsecondition(cond, L, eeprom)
+yc.command_parsecondition = function(cond, L, eeprom)
 	cond = string.gsub(cond, "A", tonumber(L.a and 1 or 0))
 	cond = string.gsub(cond, "B", tonumber(L.b and 1 or 0))
 	cond = string.gsub(cond, "C", tonumber(L.c and 1 or 0))
@@ -506,8 +508,8 @@ function yc_command_parsecondition(cond, L, eeprom)
 	while i<=l do
 		local s = cond:sub(i,i)
 		if s == "#" then
-			local addr, endi = yc_parse_get_eeprom_param(cond, i+1)
-			local buf = yc_eeprom_read(tonumber(addr), eeprom)
+			local addr, endi = yc.parse_get_eeprom_param(cond, i+1)
+			local buf = yc.eeprom_read(tonumber(addr), eeprom)
 			if buf == nil then return nil end
 			local call = cond:sub(i, endi-1)
 			cond = string.gsub(cond, call, buf)
@@ -580,14 +582,14 @@ function yc_command_parsecondition(cond, L, eeprom)
 end
 
 --Virtual-Hardware functions
-function yc_eeprom_read(number, eeprom)
+yc.eeprom_read = function(number, eeprom)
 	if not number then return end
 	return eeprom:sub(number, number)
 end
 
 --Real I/O functions
-function yc_action(pos, L) --L-->Lvirtual
-	local Lv = yc_get_virtual_portstates(pos)
+yc.action = function(pos, L) --L-->Lvirtual
+	local Lv = yc.get_virtual_portstates(pos)
 	local name = "mesecons_microcontroller:microcontroller"
 		..tonumber(L.d and 1 or 0)
 		..tonumber(L.c and 1 or 0)
@@ -596,10 +598,10 @@ function yc_action(pos, L) --L-->Lvirtual
 	local node = minetest.get_node(pos)
 	minetest.swap_node(pos, {name = name, param2 = node.param2})
 
-	yc_action_setports(pos, L, Lv)
+	yc.action_setports(pos, L, Lv)
 end
 
-function yc_action_setports(pos, L, Lv)
+yc.action_setports = function(pos, L, Lv)
 	local name = "mesecons_microcontroller:microcontroller"
 	local rules
 	if Lv.a ~= L.a then
@@ -624,7 +626,7 @@ function yc_action_setports(pos, L, Lv)
 	end
 end
 
-function yc_set_portstate(port, state, L)
+yc.set_portstate = function(port, state, L)
 	if port == "A" then L.a = state
 	elseif port == "B" then L.b = state
 	elseif port == "C" then L.c = state
@@ -633,7 +635,7 @@ function yc_set_portstate(port, state, L)
 	return L
 end
 
-function yc_update_real_portstates(pos, node, rulename, newstate)
+yc.update_real_portstates = function(pos, node, rulename, newstate)
 	local meta = minetest.get_meta(pos)
 	if rulename == nil then
 		meta:set_int("real_portstates", 1)
@@ -657,7 +659,7 @@ function yc_update_real_portstates(pos, node, rulename, newstate)
 	meta:set_int("real_portstates", 1 + L[1] + 2*L[2] + 4*L[3] + 8*L[4])
 end
 
-function yc_get_real_portstates(pos) -- determine if ports are powered (by itself or from outside)
+yc.get_real_portstates = function(pos) -- determine if ports are powered (by itself or from outside)
 	local meta = minetest.get_meta(pos)
 	local L = {}
 	local n = meta:get_int("real_portstates") - 1
@@ -668,7 +670,7 @@ function yc_get_real_portstates(pos) -- determine if ports are powered (by itsel
 	return L
 end
 
-function yc_get_virtual_portstates(pos) -- portstates according to the name
+yc.get_virtual_portstates = function(pos) -- portstates according to the name
 	local name = minetest.get_node(pos).name
 	local b, a = string.find(name, ":microcontroller")
 	if a == nil then return nil end
@@ -682,7 +684,7 @@ function yc_get_virtual_portstates(pos) -- portstates according to the name
 	return Lvirtual
 end
 
-function yc_merge_portstates(Lreal, Lvirtual)
+yc.merge_portstates = function(Lreal, Lvirtual)
 	local L = {a=false, b=false, c=false, d=false}
 	if Lvirtual.a or Lreal.a then L.a = true end
 	if Lvirtual.b or Lreal.b then L.b = true end
diff --git a/mesecons_movestones/doc/movestone_sticky/recipe.png b/mesecons_movestones/doc/movestone_sticky/recipe.png
index bbf0a94..55338f4 100644
Binary files a/mesecons_movestones/doc/movestone_sticky/recipe.png and b/mesecons_movestones/doc/movestone_sticky/recipe.png differ
diff --git a/mesecons_movestones/init.lua b/mesecons_movestones/init.lua
index 52a5605..f4b6f58 100644
--- a/mesecons_movestones/init.lua
+++ b/mesecons_movestones/init.lua
@@ -26,28 +26,28 @@ function mesecon.get_movestone_direction(pos)
 
 	lpos = {x=pos.x+1, y=pos.y, z=pos.z}
 	for n = 1, 3 do
-		if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then
+		if mesecon.is_power_on(lpos, rules[n]) then
 			return {x=0, y=0, z=-1}
 		end
 	end
 
 	lpos = {x = pos.x-1, y = pos.y, z = pos.z}
 	for n=4, 6 do
-		if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then
+		if mesecon.is_power_on(lpos, rules[n]) then
 			return {x=0, y=0, z=1}
 		end
 	end
 
 	lpos = {x = pos.x, y = pos.y, z = pos.z+1}
 	for n=7, 9 do
-		if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then
+		if mesecon.is_power_on(lpos, rules[n]) then
 			return {x=-1, y=0, z=0}
 		end
 	end
 
 	lpos = {x = pos.x, y = pos.y, z = pos.z-1}
 	for n=10, 12 do
-		if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then
+		if mesecon.is_power_on(lpos, rules[n]) then
 			return {x=1, y=0, z=0}
 		end
 	end
@@ -145,7 +145,7 @@ mesecon.register_movestone("mesecons_movestones:sticky_movestone", {
 }, true)
 
 minetest.register_craft({
-	output = "mesecons_movestones:sticky_movestone 2",
+	output = "mesecons_movestones:sticky_movestone",
 	recipe = {
 		{"mesecons_materials:glue", "mesecons_movestones:movestone", "mesecons_materials:glue"},
 	}
diff --git a/mesecons_pistons/init.lua b/mesecons_pistons/init.lua
index 474f621..a52c802 100644
--- a/mesecons_pistons/init.lua
+++ b/mesecons_pistons/init.lua
@@ -1,6 +1,6 @@
 -- Get mesecon rules of pistons
-piston_rules =
-{{x=0,  y=0,  z=1}, --everything apart from z- (pusher side)
+local piston_rules = {
+ {x=0,  y=0,  z=1}, --everything apart from z- (pusher side)
  {x=1,  y=0,  z=0},
  {x=-1, y=0,  z=0},
  {x=1,  y=1,  z=0},
@@ -8,29 +8,32 @@ piston_rules =
  {x=-1, y=1,  z=0},
  {x=-1, y=-1, z=0},
  {x=0,  y=1,  z=1},
- {x=0,  y=-1, z=1}}
+ {x=0,  y=-1, z=1}
+}
 
-local piston_up_rules =
-{{x=0,  y=0,  z=-1}, --everything apart from y+ (pusher side)
+local piston_up_rules = {
+ {x=0,  y=0,  z=-1}, --everything apart from y+ (pusher side)
  {x=1,  y=0,  z=0},
  {x=-1, y=0,  z=0},
  {x=0,  y=0,  z=1},
  {x=1,  y=-1, z=0},
  {x=-1, y=-1, z=0},
  {x=0,  y=-1, z=1},
- {x=0,  y=-1, z=-1}}
+ {x=0,  y=-1, z=-1}
+}
 
-local piston_down_rules =
-{{x=0,  y=0,  z=-1}, --everything apart from y- (pusher side)
+local piston_down_rules = {
+ {x=0,  y=0,  z=-1}, --everything apart from y- (pusher side)
  {x=1,  y=0,  z=0},
  {x=-1, y=0,  z=0},
  {x=0,  y=0,  z=1},
  {x=1,  y=1, z=0},
  {x=-1, y=1, z=0},
  {x=0,  y=1, z=1},
- {x=0,  y=1, z=-1}}
+ {x=0,  y=1, z=-1}
+}
 
-local piston_get_rules = function (node)
+local function piston_get_rules(node)
 	local rules = piston_rules
 	for i = 1, node.param2 do
 		rules = mesecon.rotate_rules_left(rules)
@@ -38,7 +41,7 @@ local piston_get_rules = function (node)
 	return rules
 end
 
-piston_facedir_direction = function (node)
+local function piston_facedir_direction(node)
 	local rules = {{x = 0, y = 0, z = -1}}
 	for i = 1, node.param2 do
 		rules = mesecon.rotate_rules_left(rules)
@@ -46,7 +49,7 @@ piston_facedir_direction = function (node)
 	return rules[1]
 end
 
-piston_get_direction = function(dir, node)
+local function piston_get_direction(dir, node)
 	if type(dir) == "function" then
 		return dir(node)
 	else
diff --git a/mesecons_pressureplates/init.lua b/mesecons_pressureplates/init.lua
index 858f6ab..cd4529b 100644
--- a/mesecons_pressureplates/init.lua
+++ b/mesecons_pressureplates/init.lua
@@ -8,7 +8,7 @@ local pp_box_on = {
 	fixed = { -7/16, -8/16, -7/16, 7/16, -7.5/16, 7/16 },
 }
 
-pp_on_timer = function (pos, elapsed)
+local function pp_on_timer(pos, elapsed)
 	local node = minetest.get_node(pos)
 	local basename = minetest.registered_nodes[node.name].pressureplate_basename
 
diff --git a/mesecons_random/init.lua b/mesecons_random/init.lua
index 4c1d299..5a6ef24 100644
--- a/mesecons_random/init.lua
+++ b/mesecons_random/init.lua
@@ -53,6 +53,7 @@ minetest.register_node("mesecons_random:ghoststone_active", {
 	diggable = false,
 	sunlight_propagates = true,
 	paramtype = "light",
+	drop = "mesecons_random:ghoststone",
 	mesecons = {conductor = {
 		state = mesecon.state.on,
 		rules = {
diff --git a/mesecons_receiver/init.lua b/mesecons_receiver/init.lua
index 9284e57..a5cf7d5 100644
--- a/mesecons_receiver/init.lua
+++ b/mesecons_receiver/init.lua
@@ -1,10 +1,30 @@
-rcvboxes = {
+local rcvboxes = {
 	{ -3/16, -3/16, -8/16       , 3/16,  3/16  , -13/32       }, -- the smaller bump
 	{ -1/32, -1/32, -3/2        , 1/32,  1/32  , -1/2         }, -- the wire through the block
 	{ -2/32, -1/2 , -.5         , 2/32,  0     , -.5002+3/32  }, -- the vertical wire bit
 	{ -2/32, -1/2 , -7/16+0.002 , 2/32,  -14/32,  16/32+0.001 }  -- the horizontal wire
 }
 
+local down_rcvboxes = {
+	{-6/16, -8/16, -6/16, 6/16, -7/16, 6/16}, -- Top plate
+	{-2/16, -6/16, -2/16, 2/16, -7/16, 2/16}, -- Bump
+	{-1/16, -8/16, -1/16, 1/16, -24/16, 1/16}, -- Wire through the block
+	{-1/16, -8/16, 6/16,  1/16, -7/16, 8/16}, -- Plate extension (North)
+	{-1/16, -8/16, -6/16, 1/16, -7/16, -8/16}, -- Plate extension (South)
+	{-8/16, -8/16, 1/16, -6/16, -7/16, -1/16}, -- Plate extension (West)
+	{6/16,  -8/16, 1/16,  8/16, -7/16, -1/16}, -- Plate extension (East)
+}
+
+local up_rcvboxes = {
+	{-6/16, -8/16, -6/16, 6/16, -7/16, 6/16}, -- Top plate
+	{-2/16, -6/16, -2/16, 2/16, -7/16, 2/16}, -- Bump
+	{-1/16, -6/16, -1/16, 1/16, 24/16, 1/16}, -- Wire through the block
+	{-1/16, -8/16, 6/16,  1/16, -7/16, 8/16}, -- Plate extension (North)
+	{-1/16, -8/16, -6/16, 1/16, -7/16, -8/16}, -- Plate extension (South)
+	{-8/16, -8/16, 1/16, -6/16, -7/16, -1/16}, -- Plate extension (West)
+	{6/16,  -8/16, 1/16,  8/16, -7/16, -1/16}, -- Plate extension (East)
+}
+
 local receiver_get_rules = function (node)
 	local rules = {	{x =  1, y = 0, z = 0},
 			{x = -2, y = 0, z = 0}}
@@ -18,8 +38,38 @@ local receiver_get_rules = function (node)
 	return rules
 end
 
-minetest.register_node("mesecons_receiver:receiver_on", {
+mesecon.register_node("mesecons_receiver:receiver", {
 	drawtype = "nodebox",
+	paramtype = "light",
+	paramtype2 = "facedir",
+	sunlight_propagates = true,
+	walkable = false,
+	on_rotate = false,
+	selection_box = {
+             	type = "fixed",
+		fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 }
+	},
+	node_box = {
+		type = "fixed",
+		fixed = rcvboxes
+	},
+	groups = {dig_immediate = 3, not_in_creative_inventory = 1},
+	drop = "mesecons:wire_00000000_off",
+}, {
+	tiles = {
+		"receiver_top_off.png",
+		"receiver_bottom_off.png",
+		"receiver_lr_off.png",
+		"receiver_lr_off.png",
+		"receiver_fb_off.png",
+		"receiver_fb_off.png",
+	},
+	mesecons = {conductor = {
+		state = mesecon.state.off,
+		rules = receiver_get_rules,
+		onstate = "mesecons_receiver:receiver_on"
+	}}
+}, {
 	tiles = {
 		"receiver_top_on.png",
 		"receiver_bottom_on.png",
@@ -28,83 +78,133 @@ minetest.register_node("mesecons_receiver:receiver_on", {
 		"receiver_fb_on.png",
 		"receiver_fb_on.png",
 	},
+	mesecons = {conductor = {
+		state = mesecon.state.on,
+		rules = receiver_get_rules,
+		offstate = "mesecons_receiver:receiver_off"
+	}}
+})
+
+mesecon.register_node("mesecons_receiver:receiver_up", {
+	drawtype = "nodebox",
 	paramtype = "light",
 	paramtype2 = "facedir",
 	sunlight_propagates = true,
 	walkable = false,
+	on_rotate = false,
 	selection_box = {
              	type = "fixed",
-		fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 }
+		fixed = up_rcvboxes
 	},
 	node_box = {
 		type = "fixed",
-		fixed = rcvboxes
+		fixed = up_rcvboxes
 	},
 	groups = {dig_immediate = 3, not_in_creative_inventory = 1},
 	drop = "mesecons:wire_00000000_off",
+}, {
+	tiles = {"mesecons_wire_off.png"},
+	mesecons = {conductor = {
+		state = mesecon.state.off,
+		rules = {{x=1, y=0, z=0},
+			{x=-1, y=0, z=0},
+			{x=0,  y=0, z=1},
+			{x=0,  y=0, z=-1},
+			{x=0,  y=1, z=0},
+			{x=0,  y=2, z=0}},
+		onstate = "mesecons_receiver:receiver_up_on"
+	}}
+}, {
+	tiles = {"mesecons_wire_on.png"},
 	mesecons = {conductor = {
 		state = mesecon.state.on,
-		rules = receiver_get_rules,
-		offstate = "mesecons_receiver:receiver_off"
+		rules = {{x=1, y=0, z=0},
+			{x=-1, y=0, z=0},
+			{x=0,  y=0, z=1},
+			{x=0,  y=0, z=-1},
+			{x=0,  y=1, z=0},
+			{x=0,  y=2, z=0}},
+		offstate = "mesecons_receiver:receiver_up_off"
 	}}
 })
 
-minetest.register_node("mesecons_receiver:receiver_off", {
+mesecon.register_node("mesecons_receiver:receiver_down", {
 	drawtype = "nodebox",
-	description = "You hacker you",
-	tiles = {
-		"receiver_top_off.png",
-		"receiver_bottom_off.png",
-		"receiver_lr_off.png",
-		"receiver_lr_off.png",
-		"receiver_fb_off.png",
-		"receiver_fb_off.png",
-	},
 	paramtype = "light",
 	paramtype2 = "facedir",
 	sunlight_propagates = true,
 	walkable = false,
+	on_rotate = false,
 	selection_box = {
              	type = "fixed",
-		fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 }
+		fixed = down_rcvboxes
 	},
 	node_box = {
 		type = "fixed",
-		fixed = rcvboxes
+		fixed = down_rcvboxes
 	},
 	groups = {dig_immediate = 3, not_in_creative_inventory = 1},
 	drop = "mesecons:wire_00000000_off",
+}, {
+	tiles = {"mesecons_wire_off.png"},
 	mesecons = {conductor = {
 		state = mesecon.state.off,
-		rules = receiver_get_rules,
-		onstate = "mesecons_receiver:receiver_on"
+		rules = {{x=1,y=0, z=0},
+			{x=-1,y=0, z=0},
+			{x=0, y=0, z=1},
+			{x=0, y=0, z=-1},
+			{x=0, y=-2,z=0}},
+		onstate = "mesecons_receiver:receiver_down_on"
+	}}
+}, {
+	tiles = {"mesecons_wire_on.png"},
+	mesecons = {conductor = {
+		state = mesecon.state.on,
+		rules = {{x=1,y=0, z=0},
+			{x=-1,y=0, z=0},
+			{x=0, y=0, z=1},
+			{x=0, y=0, z=-1},
+			{x=0, y=-2,z=0}},
+		offstate = "mesecons_receiver:receiver_down_off"
 	}}
 })
 
 function mesecon.receiver_get_pos_from_rcpt(pos, param2)
 	local rules = {{x = 2,  y = 0, z = 0}}
 	if param2 == nil then param2 = minetest.get_node(pos).param2 end
-	if param2 == 2 then
+	local rcvtype = "mesecons_receiver:receiver_off"
+	local dir = minetest.facedir_to_dir(param2)
+
+	if dir.x == 1 then
+		-- No action needed
+	elseif dir.z == -1 then
 		rules = mesecon.rotate_rules_left(rules)
-	elseif param2 == 3 then
+	elseif dir.x == -1 then
 		rules = mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules))
-	elseif param2 == 0 then
+	elseif dir.z == 1 then
 		rules = mesecon.rotate_rules_right(rules)
+	elseif dir.y == -1 then
+		rules = mesecon.rotate_rules_up(rules)
+		rcvtype = "mesecons_receiver:receiver_up_off"
+	elseif dir.y == 1 then
+		rules = mesecon.rotate_rules_down(rules)
+		rcvtype = "mesecons_receiver:receiver_down_off"
 	end
 	local np = {	x = pos.x + rules[1].x,
 			y = pos.y + rules[1].y,
 			z = pos.z + rules[1].z}
-	return np
+	return np, rcvtype
 end
 
 function mesecon.receiver_place(rcpt_pos)
 	local node = minetest.get_node(rcpt_pos)
-	local pos = mesecon.receiver_get_pos_from_rcpt(rcpt_pos, node.param2)
+	local pos, rcvtype = mesecon.receiver_get_pos_from_rcpt(rcpt_pos, node.param2)
 	local nn = minetest.get_node(pos)
+	local param2 = minetest.dir_to_facedir(minetest.facedir_to_dir(node.param2))
 
 	if string.find(nn.name, "mesecons:wire_") ~= nil then
 		minetest.dig_node(pos)
-		minetest.set_node(pos, {name = "mesecons_receiver:receiver_off", param2 = node.param2})
+		minetest.set_node(pos, {name = rcvtype, param2 = param2})
 		mesecon.on_placenode(pos, nn)
 	end
 end
@@ -133,11 +233,13 @@ minetest.register_on_dignode(function(pos, node)
 end)
 
 minetest.register_on_placenode(function (pos, node)
-	if string.find(node.name, "mesecons:wire_") ~=nil then
-		local rules = {	{x = 2,  y = 0, z = 0},
-				{x =-2,  y = 0, z = 0},
-				{x = 0,  y = 0, z = 2},
-				{x = 0,  y = 0, z =-2}}
+	if string.find(node.name, "mesecons:wire_") ~= nil then
+		local rules = {	{x = 2,  y = 0,  z = 0},
+				{x =-2,  y = 0,  z = 0},
+				{x = 0,  y = 0,  z = 2},
+				{x = 0,  y = 0,  z =-2},
+				{x = 0,  y = 2,  z = 0},
+				{x = 0,  y = -2, z = 0}}
 		local i = 1
 		while rules[i] ~= nil do
 			local np = {	x = pos.x + rules[i].x,
@@ -150,3 +252,8 @@ minetest.register_on_placenode(function (pos, node)
 		end
 	end
 end)
+
+function mesecon.buttonlike_onrotate(pos, node)
+	minetest.after(0, mesecon.receiver_remove, pos, node)
+	minetest.after(0, mesecon.receiver_place, pos)
+end
diff --git a/mesecons_walllever/init.lua b/mesecons_walllever/init.lua
index 9ae0655..e9454cd 100644
--- a/mesecons_walllever/init.lua
+++ b/mesecons_walllever/init.lua
@@ -31,6 +31,7 @@ mesecon.register_node("mesecons_walllever:wall_lever", {
 		"jeija_wall_lever_back_edges.png"
 	},
 	mesh="jeija_wall_lever_off.obj",
+	on_rotate = mesecon.buttonlike_onrotate,
 	mesecons = {receptor = {
 		rules = mesecon.rules.buttonlike_get,
 		state = mesecon.state.off
@@ -44,6 +45,7 @@ mesecon.register_node("mesecons_walllever:wall_lever", {
 		"jeija_wall_lever_back_edges.png"
 	},
 	mesh="jeija_wall_lever_on.obj",
+	on_rotate = false,
 	mesecons = {receptor = {
 		rules = mesecon.rules.buttonlike_get,
 		state = mesecon.state.on
diff --git a/mesecons_wires/init.lua b/mesecons_wires/init.lua
index 879cfa1..ced7c99 100644
--- a/mesecons_wires/init.lua
+++ b/mesecons_wires/init.lua
@@ -140,7 +140,7 @@ nid_inc = function (nid)
 	return i <= 8
 end
 
-register_wires = function()
+local function register_wires()
 	local nid = {}
 	while true do
 		-- Create group specifiction and nodeid string (see note above for details)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/minetest-mod-mesecons.git



More information about the Pkg-games-commits mailing list