From 8f3d8cc5865b0d1ef8aafdd8908221bdebb79a25 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Mon, 10 Apr 2017 23:13:44 -0400 Subject: [PATCH] allow stack per-chest/per-furnace stack splitting defaults to disabled, whether the node has a new formspec or not note that furnace fuel stacks can't be split. --- compat-chests.lua | 185 ++++++++++++ compat-furnaces.lua | 431 +++++++++++++++++++++++++++ compat.lua => compat-old.lua | 0 init.lua | 5 +- textures/pipeworks_button_interm.png | Bin 5409 -> 5636 bytes textures/pipeworks_button_off.png | Bin 5979 -> 6397 bytes textures/pipeworks_button_on.png | Bin 6064 -> 6193 bytes 7 files changed, 620 insertions(+), 1 deletion(-) create mode 100644 compat-chests.lua create mode 100644 compat-furnaces.lua rename compat.lua => compat-old.lua (100%) diff --git a/compat-chests.lua b/compat-chests.lua new file mode 100644 index 0000000..ef771ab --- /dev/null +++ b/compat-chests.lua @@ -0,0 +1,185 @@ +-- this bit of code modifies the default chests and furnaces to be compatible +-- with pipeworks. +-- +-- the formspecs found here are basically copies of the ones from minetest_game +-- plus bits from pipeworks' sorting tubes + +local fs_helpers = pipeworks.fs_helpers + +local base_chest_formspec = "size[8,9]" .. + default.gui_bg .. + default.gui_bg_img .. + default.gui_slots .. + "list[current_player;main;0,4.85;8,1;]" .. + "list[current_player;main;0,6.08;8,3;8]" .. + "listring[current_player;main]" .. + default.get_hotbar_bg(0,4.85) + +local function update_chest_formspec(pos) + local meta = minetest.get_meta(pos) + local formspec = base_chest_formspec .. + "list[current_name;main;0,0.3;8,4;]" .. + "listring[current_name;main]" .. + fs_helpers.cycling_button( + meta, + "image_button[0,4.3;1,0.6", + "splitstacks", + { + {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, + {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + } + ).."label[0.9,4.31;Allow splitting incoming stacks from tubes]" + meta:set_string("formspec", formspec) +end + +minetest.override_item("default:chest", { + tiles = { + "default_chest_top.png^pipeworks_tube_connection_wooden.png", + "default_chest_top.png^pipeworks_tube_connection_wooden.png", + "default_chest_side.png^pipeworks_tube_connection_wooden.png", + "default_chest_side.png^pipeworks_tube_connection_wooden.png", + "default_chest_side.png^pipeworks_tube_connection_wooden.png", + "default_chest_front.png" + }, + groups = {choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, tubedevice_receiver = 1}, + tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:add_item("main", stack) + end, + can_insert = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if meta:get_int("splitstacks") == 1 then + stack = stack:peek_item(1) + end + return inv:room_for_item("main", stack) + end, + input_inventory = "main", + connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1} + }, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("main", 8*4) + update_chest_formspec(pos) + end, + on_receive_fields = function(pos, formname, fields, sender) + if not pipeworks.may_configure(pos, sender) then return end + fs_helpers.on_receive_fields(pos, fields) + update_chest_formspec(pos) + end, +}) + +-- ===================== + +local function get_locked_chest_formspec(pos) + local spos = pos.x .. "," .. pos.y .. "," .. pos.z + local formspec = base_chest_formspec .. + "list[nodemeta:" .. spos .. ";main;0,0.3;8,4;]" .. + "listring[nodemeta:" .. spos .. ";main]" + return formspec +end + +local function setup_locked_formspec(pos, meta) + meta:set_string("formspec", + get_locked_chest_formspec(pos) .. + fs_helpers.cycling_button( + meta, + "image_button[0,4.3;1,0.6", + "splitstacks", + { + {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, + {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + } + ).."label[0.9,4.31;Allow splitting incoming stacks from tubes]" + ) +end + +minetest.override_item("default:chest_locked", { + tiles = { + "default_chest_top.png^pipeworks_tube_connection_wooden.png", + "default_chest_top.png^pipeworks_tube_connection_wooden.png", + "default_chest_side.png^pipeworks_tube_connection_wooden.png", + "default_chest_side.png^pipeworks_tube_connection_wooden.png", + "default_chest_side.png^pipeworks_tube_connection_wooden.png", + "default_chest_lock.png" + }, + groups = {choppy = 2, oddly_breakable_by_hand = 2, tubedevice = 1, tubedevice_receiver = 1}, + tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:add_item("main", stack) + end, + can_insert = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if meta:get_int("splitstacks") == 1 then + stack = stack:peek_item(1) + end + return inv:room_for_item("main", stack) + end, + connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1} + }, + after_place_node = function (pos, placer) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name() or "") + meta:set_string("infotext", "Locked Chest (owned by ".. + meta:get_string("owner")..")") + pipeworks.after_place(pos) + end, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + if default.can_interact_with_node(clicker, pos) then + local meta = minetest.get_meta(pos) + local formspec = meta:get_string("formspec") + print("on_rightclick") + print(dump(formspec)) + setup_locked_formspec(pos, meta, clicker) + minetest.show_formspec( + clicker:get_player_name(), + "default:chest_locked", + get_locked_chest_formspec(pos) + ) + end + return itemstack + end, + on_key_use = function(pos, player) + local secret = minetest.get_meta(pos):get_string("key_lock_secret") + local itemstack = player:get_wielded_item() + local key_meta = itemstack:get_meta() + + if key_meta:get_string("secret") == "" then + key_meta:set_string("secret", minetest.parse_json(itemstack:get_metadata()).secret) + itemstack:set_metadata("") + end + + if secret ~= key_meta:get_string("secret") then + return + end + setup_locked_formspec(pos, minetest.get_meta(pos)) + end, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size("main", 8*4) + setup_locked_formspec(pos, meta) + end, + on_receive_fields = function(pos, formname, fields, sender) + if not pipeworks.may_configure(pos, sender) then return end + fs_helpers.on_receive_fields(pos, fields) + local formspec = get_locked_chest_formspec(pos) + print("on_receive_fields") + print(dump(formspec)) + + if formspec == "" then + meta:set_string("formspec", formspec) + else + setup_locked_formspec(pos, minetest.get_meta(pos)) + end + end, + after_dig_node = pipeworks.after_dig +}) diff --git a/compat-furnaces.lua b/compat-furnaces.lua new file mode 100644 index 0000000..ae63e3a --- /dev/null +++ b/compat-furnaces.lua @@ -0,0 +1,431 @@ + +-- this file is basically a modified copy of +-- minetest_game/mods/default/furnaces.lua + +local fs_helpers = pipeworks.fs_helpers + +local function active_formspec(fuel_percent, item_percent, pos, meta) + local formspec = + "size[8,8.5]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "list[current_name;src;2.75,0.5;1,1;]".. + "list[current_name;fuel;2.75,2.5;1,1;]".. + "image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. + (100-fuel_percent)..":default_furnace_fire_fg.png]".. + "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:".. + (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. + "list[current_name;dst;4.75,0.96;2,2;]".. + "list[current_player;main;0,4.25;8,1;]".. + "list[current_player;main;0,5.5;8,3;8]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + "listring[current_name;fuel]".. + "listring[current_player;main]".. + default.get_hotbar_bg(0, 4.25) .. + fs_helpers.cycling_button( + meta, + "image_button[0,3.5;1,0.6", + "split_material_stacks", + { + {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, + {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + } + ).."label[0.9,3.51;Allow splitting incoming material (not fuel) stacks from tubes]" + return formspec +end + +local function inactive_formspec(pos, meta) + local formspec = "size[8,8.5]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "list[current_name;src;2.75,0.5;1,1;]".. + "list[current_name;fuel;2.75,2.5;1,1;]".. + "image[2.75,1.5;1,1;default_furnace_fire_bg.png]".. + "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]".. + "list[current_name;dst;4.75,0.96;2,2;]".. + "list[current_player;main;0,4.25;8,1;]".. + "list[current_player;main;0,5.5;8,3;8]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + "listring[current_name;fuel]".. + "listring[current_player;main]".. + default.get_hotbar_bg(0, 4.25) .. + fs_helpers.cycling_button( + meta, + "image_button[0,3.5;1,0.6", + "split_material_stacks", + { + {text="", texture="pipeworks_button_off.png", addopts="false;false;pipeworks_button_interm.png"}, + {text="", texture="pipeworks_button_on.png", addopts="false;false;pipeworks_button_interm.png"} + } + ).."label[0.9,3.51;Allow splitting incoming material (not fuel) stacks from tubes]" + return formspec +end + +-- +-- Node callback functions that are the same for active and inactive furnace +-- + +local function can_dig(pos, player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src") +end + +local function allow_metadata_inventory_put(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if listname == "fuel" then + if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then + if inv:is_empty("src") then + meta:set_string("infotext", "Furnace is empty") + end + return stack:get_count() + else + return 0 + end + elseif listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end +end + +local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end + +local function allow_metadata_inventory_take(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 + end + return stack:get_count() +end + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + +local function furnace_node_timer(pos, elapsed) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + local inv = meta:get_inventory() + local srclist, fuellist + + local cookable, cooked + local fuel + + local update = true + while update do + update = false + + srclist = inv:get_list("src") + fuellist = inv:get_list("fuel") + + -- + -- Cooking + -- + + -- Check if we have cookable content + local aftercooked + cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + cookable = cooked.time ~= 0 + + -- Check if we have enough fuel to burn + if fuel_time < fuel_totaltime then + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + elapsed + -- If there is a cookable item then check if it is ready yet + if cookable then + src_time = src_time + elapsed + if src_time >= cooked.time then + -- Place result in dst list if possible + if inv:room_for_item("dst", cooked.item) then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + src_time = src_time - cooked.time + update = true + end + end + end + else + -- Furnace ran out of fuel + if cookable then + -- We need to get new fuel + local afterfuel + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list + fuel_totaltime = 0 + src_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + update = true + fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) + src_time = src_time + elapsed + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + src_time = 0 + end + fuel_time = 0 + end + + elapsed = 0 + end + + if fuel and fuel_totaltime > fuel.time then + fuel_totaltime = fuel.time + end + if srclist[1]:is_empty() then + src_time = 0 + end + + -- + -- Update formspec, infotext and node + -- + local formspec = inactive_formspec(pos, meta) + local item_state + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + if item_percent > 100 then + item_state = "100% (output full)" + else + item_state = item_percent .. "%" + end + else + if srclist[1]:is_empty() then + item_state = "Empty" + else + item_state = "Not cookable" + end + end + + local fuel_state = "Empty" + local active = "inactive " + local result = false + + if fuel_totaltime ~= 0 then + active = "active " + local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + fuel_state = fuel_percent .. "%" + formspec = active_formspec(fuel_percent, item_percent, pos, meta) + swap_node(pos, "default:furnace_active") + -- make sure timer restarts automatically + result = true + else + if not fuellist[1]:is_empty() then + fuel_state = "0%" + end + swap_node(pos, "default:furnace") + -- stop timer on the inactive furnace + minetest.get_node_timer(pos):stop() + end + + local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + meta:set_string("formspec", formspec) + meta:set_string("infotext", infotext) + + return result +end + +-- +-- Node definitions +-- + +minetest.register_node(":default:furnace", { + description = "Furnace", + tiles = { + "default_furnace_top.png^pipeworks_tube_connection_stony.png", + "default_furnace_bottom.png^pipeworks_tube_connection_stony.png", + "default_furnace_side.png^pipeworks_tube_connection_stony.png", + "default_furnace_side.png^pipeworks_tube_connection_stony.png", + "default_furnace_side.png^pipeworks_tube_connection_stony.png", + "default_furnace_front.png" + }, + groups = {cracky = 2, tubedevice = 1, tubedevice_receiver = 1}, + tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + if not timer:is_started() then + timer:start(1.0) + end + if direction.y == 1 then + return inv:add_item("fuel", stack) + else + return inv:add_item("src", stack) + end + end, + can_insert = function(pos,node,stack,direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if direction.y == 1 then + return inv:room_for_item("fuel", stack) + else + if meta:get_int("split_material_stacks") == 1 then + stack = stack:peek_item(1) + end + return inv:room_for_item("src", stack) + end + end, + input_inventory = "dst", + connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1} + }, + paramtype2 = "facedir", + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + + can_dig = can_dig, + + on_timer = furnace_node_timer, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec(pos, meta)) + local inv = meta:get_inventory() + inv:set_size('src', 1) + inv:set_size('fuel', 1) + inv:set_size('dst', 4) + end, + + on_metadata_inventory_move = function(pos) + minetest.get_node_timer(pos):start(1.0) + end, + on_metadata_inventory_put = function(pos) + -- start timer function, it will sort out whether furnace can burn or not. + minetest.get_node_timer(pos):start(1.0) + end, + on_blast = function(pos) + local drops = {} + default.get_inventory_drops(pos, "src", drops) + default.get_inventory_drops(pos, "fuel", drops) + default.get_inventory_drops(pos, "dst", drops) + drops[#drops+1] = "default:furnace" + minetest.remove_node(pos) + return drops + end, + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_receive_fields = function(pos, formname, fields, sender) + if not pipeworks.may_configure(pos, sender) then return end + fs_helpers.on_receive_fields(pos, fields) + local meta = minetest.get_meta(pos) + local formspec = inactive_formspec(pos, meta) + meta:set_string("formspec", formspec) + end, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig +}) + +minetest.register_node(":default:furnace_active", { + description = "Furnace", + tiles = { + "default_furnace_top.png^pipeworks_tube_connection_stony.png", + "default_furnace_bottom.png^pipeworks_tube_connection_stony.png", + "default_furnace_side.png^pipeworks_tube_connection_stony.png", + "default_furnace_side.png^pipeworks_tube_connection_stony.png", + "default_furnace_side.png^pipeworks_tube_connection_stony.png", + { + image = "default_furnace_front_active.png", + backface_culling = false, + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.5 + }, + } + }, + groups = {cracky = 2, tubedevice = 1, tubedevice_receiver = 1, not_in_creative_inventory = 1}, + tube = { + insert_object = function(pos,node,stack,direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local timer = minetest.get_node_timer(pos) + if not timer:is_started() then + timer:start(1.0) + end + if direction.y == 1 then + return inv:add_item("fuel", stack) + else + return inv:add_item("src", stack) + end + end, + can_insert = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if direction.y == 1 then + return inv:room_for_item("fuel", stack) + else + if meta:get_int("split_material_stacks") == 1 then + stack = stack:peek_item(1) + end + return inv:room_for_item("src", stack) + end + end, + input_inventory = "dst", + connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1} + }, + paramtype2 = "facedir", + light_source = 8, + drop = "default:furnace", + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + on_timer = furnace_node_timer, + + can_dig = can_dig, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, + on_receive_fields = function(pos, formname, fields, sender) + if not pipeworks.may_configure(pos, sender) then return end + fs_helpers.on_receive_fields(pos, fields) + local meta = minetest.get_meta(pos) + local formspec = active_formspec(0, 0, pos, meta) + meta:set_string("formspec", formspec) + end, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig +}) + diff --git a/compat.lua b/compat-old.lua similarity index 100% rename from compat.lua rename to compat-old.lua diff --git a/init.lua b/init.lua index 499f6ba..7b0efd3 100644 --- a/init.lua +++ b/init.lua @@ -108,7 +108,10 @@ dofile(pipeworks.modpath.."/wielder.lua") if pipeworks.enable_pipes then dofile(pipeworks.modpath.."/pipes.lua") end if pipeworks.enable_teleport_tube then dofile(pipeworks.modpath.."/teleport_tube.lua") end if pipeworks.enable_pipe_devices then dofile(pipeworks.modpath.."/devices.lua") end -if pipeworks.enable_redefines then dofile(pipeworks.modpath.."/compat.lua") end +if pipeworks.enable_redefines then + dofile(pipeworks.modpath.."/compat-chests.lua") + dofile(pipeworks.modpath.."/compat-furnaces.lua") +end if pipeworks.enable_autocrafter then dofile(pipeworks.modpath.."/autocrafter.lua") end minetest.register_alias("pipeworks:pipe", "pipeworks:pipe_110000_empty") diff --git a/textures/pipeworks_button_interm.png b/textures/pipeworks_button_interm.png index 47320ced3e544c5ad19c6fef00b5b13c28bff3b3..0d4c5581e0b2c2e5352ea4ee3f7dc2b7da4ed4d6 100644 GIT binary patch literal 5636 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
=T%`=r(s#Mu-rVDco$w^BaBFc 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 literal 5979 zcmV-h7o_NkP)}0c>s6V$}|n&P8ntsMTs6D$ZRk|9=Nc7p_Yy+I6pOWr3|YV6AJxVz}yc zzywGHih`Fx=3;SSkdTB72^mg8$dGeR1_(p234;u-R&vgJe-HP3z58rVNa6`dF>5_* z@3Z&*_V?}YdEVju_D+9rUPD8}6+3q97|s3^jxPY~z{cIXcW-jovuBTYUvT?LqqViw zyMM-l@ofa_z(SsVD)Tj(dAovh=V>lEo|2lHdVG!#A3oftsj2DAAU_g`Xh6sJ_wC!4 z0=WYi?3HXEZE0!A0?mk^ecQHeN6X90BPAszR$N?cMMXt|_Wi$4DYk6cB541NLuqNL z1p10f-|dHrIXl{o#@issG$>Yim0nwGLxYFEutc z?y9Y=eUFLm$jZv<$jr=)Y}l|N8iT$4_S^q5*tl_Hr|6_U+p*KqP%QmZEJdf>o;zKB6W zIKAW-78a(cW48T?{Ug}V#vA-SFE396jxc#q-$R%zU;8;ZIfg)t2Qposo11GWT@$Wr zv{gIT_KXH&JZ+%AsOGhxpun*D_sI{k@wh)Dbetnjn9tKgJ{_hIkNQI5xu|elC=_bO z8)%Tn2gue$sNl$?jUf;taWMvMh{oF6+fC3uinee#Y+JW(HAH1@f^`o!0olEQ(?yt@ z1GjbX9Lw_^MW$_$U&gy$VcsQviCg9lSiIr*qh*?tP-oC|4B z66f1E7XQ$|4VrLZWXw%orr zz`f20I13$P~Bs=p?0}(N0Jxv z2(oICD$<>mOANR!BV@!u$8-*lViJag@Gk98xaF*0Z<(*ZZkbD$_8K;viQpMGtXyet zzxk$R5egA&rvgw2b&$ubtE<~b#V`@i+z$il%Y64P`6L@I;p;~y_mXw)g#3g9!z-Ax zXt{d^CX#yuwUKBJA3bW+j}{s~-l}fA(W*%&~s$j;025}!x}yO_88Fs6P~WGNV2?~t#0QvxtE#r~Va!Q$`HpE@H)M#F zUwf@>{`IeI)5|Yg4mnXC;g-ZXA;`0$c zLI_`TjRn8;Ei1$Ob5s+M!sUqNBf=U{-mw@CQbghICFCwakc0_PUUS!-j z3k@BriTY?jLcr@)^UMYJ-)}kO2?Zp7h0MELzk_(dGiz@5GH3rrzIG0wpmziSu>&D) ziIO{!@9kKn8(u=h`Q5!EUZm?fEpwVsQBe^GcU*$NjVUZhIPqaYp5VX%J3w{NG-AX@ zO9Xg?Fxy(fLeYKq*=9UJk(RR)ET!Y2Wl$?IsDZsgz7h)D%5Vs5gYbyrKM?sY+m`_R zmM?E0s}`vuStVhYaDtFm&^_b{v~>cIs1D!>_AXp#Are9+=A$D55JvR1Y>R&Xdn=$q zD8?AJ_}*`53svgdpLF zd_LFRG|IKeKICyZ5m%~|WpZ=D1a&40^}2p7;D|6*{5mDSqP*M!h$le)5Fl;^xK~9Wknmdi zmDR_Uk}Zg$9govWi4>xI`aqKy+tw3XYhtJc{Pvtrj3C!^3%XA?+t6>%gh*moF=mVv zvC>+?d}5qlM1c&b2=1;*S^y~NZphG^y<=Xbi5!)CvVKQCM9FI9!V_9`8H+}NB}=R- zBg2BTXImZHs`>LRux5>w5mFL~K>34`LvKE?2M^Q6xyF$rEz|=q5RRev+uybo-}r{j z_|lhb(igs9PksLLHvQ5|ZSGgTVsBl3xm6Nty&@1nIagd^uYK)nHt(xnJt-D(&4$Y^ zvwW`K$h{Wx`_J6Bv+LF8D#k(^_0hEuln*ezTGk6n=FG7YVty&`iU5A1%-s>V8`T>E zn55EAuO)%8uMTA8D&0;f_msr>Nen=K>AH1R_w>_tVCqzh5W^#Hy=A;3wqpq5o#&so zt?B7jia`8rfNMFaG-1?SYFgw!6+d&u#;EcyQHY7yd^&V7E$@7r}f zNOb+ppZJ80yXYcQn^$R5-yKgN5g_79)<#P4pp<{&#fuIM?tQ$#6G;nzo2;dS4iEvZ zGg)O^xh4yh7w}tu1q7C4W?JZpC+r^&J!FREM|CC+)ET(gNTnwXqvU zfe9Q_nI;j$kwVOgkNxbI;Vmkkebx?Bx*6H4;r5N#Wn61`41@3}9>EYm8>?O=ix&nK zbDy)(h~z&Zt_(|Sh=rK7keLBdFM}1h_F{ywg>$74Qp#4yAwJKC;7t14!SOtZn#VoW zE|WeAX;aL-)J7-+e;qW)=F|65LPB>vKnQUKfBa*sq$I33F?2?lHz6-+0dSLpAnL8z zMToyn7lOfHy!DgG7xOJZ)9BIGLCmt>{?-gJ7%x5ycW*2s8}Z*#Q!V<3KiIJ!{?GzX zJ!NGiiT*Gkae4dOtrbPwU-+vzNv&VjC#x5E>0mVk7Gl*k5YTYlbykZfSqo{i zV+2bC;}Fa`$Z_{rg;mSCb&UvH$?sx_(2AX`Qm9jzrX-Ey5>7UuBtu?7VF3@aoHiRd z=B{s`?N-LGyrcwlNxl;RZNhilVO6VEStaw#9C;BH;A?Nv0+5>g$(+hRZ;kGfKppqH z{~`w1f|VMRVkB(_(e}(UW~^`9+_`4BeS7?Ii~jPL*1^k=+F$+3N^^7lik7(I#I{RI z$vk-YuDdLF5&?uc9$;c;K-vsQNEg8nvKDL0#v)xQ*vPtjA@`XFu_8DP$Xh5p)Wkf@ zYL5VBa<8AM5|FFUjf97B@f`vJw%Rh&AI2=^(1mPf*Zh3$uCkl_ZO~fjEzSm>mD;XK9cj- zlJs2%biLaC2RVnv^BO{{gVY`gVAwDV5dx|)JXK|0$V+S9dPM+URq40CG}Bg@x;pg> zpny2tblYtfJ?9)V9@KaMgKWdy+mC)^cITaDSYH%NI>v;QlLwT#lF*k3#t8rqw5y~< zAwcm^6Vs^xDzV6gO12~bj|(q@SnqY^{QmEl0Mdc1RUV;&;}VKD1iT2Q5+)yx#^qI0( zU2^rx%DWVRV$&9ujVpimJ3ET%t$%+r$|B>Tjd*BGlt~ny{Q88J^0NFabE3L&)5=A6TN zLW(?%!h%--vT(I|gCug3r%f(USW)7MAbTVLy(MfWw`$1ClK?dLaS%sZyGdFAlzazK zQ`D<0i2xE3<^cY6{{S8%pQNt|_utXCuOUf`_UmWz2!gS%V}C~gm4pJVZmD|k3qWrS z{c8@*l#e0u2HatnWz%XV-;t-1Pwrjhh$xZY#C30at`X)#%o@ma3q#%<;57ub9x?-X zuO`OO2pgeIG4wG8@Rq1RB@g10JWps?DiYNAPH*=xl;p1 zR*L}O#fvBgqc^s#Neh7Wf9_uwf!ruCK|;`ik5>TN=Q^zu#E~a5wOpCcLQlg@H`#j- zEyBGxNNlVo_UDl>20D2`q$MS{02iD6N#IN^7-97y+ljD=@i^;u0`Mk*skr^+h{r8EOMJ~jPu^)r zKs-|mD}iC=r4Hj@?!AbRGevk^pL`j}$DV)Th8++e@phtI05bgR0B#}TL=kW-k8j_~ z$Bwl+;=Ud{jP=wEA8sYA0pyV@l#9 zbL?XIyg3}UkbpOKV6J3{$CrZFuU|hgX#p%-w(M?_iT8NDdkn&z!W3upJ)kU8@a6&{ zEujdU5JYx>t)P8>%y*z)2}<{kL!CSdb`xh%qVweT_CGh{+3pvG2I|Ufa#w zG%y!oNQWB-i9iXtzS%gkbm`LMUk1&aH}7)(V`m#5cSIpS>Qx#pMnuaxy&{kTjR80j z^cb>yeQ%)l^c(j*Koi?StiO+mrgCCImX3FPQR!^Hn zK7=#Zenf%(v8H(H)Tvh|Er9Xk#}8PsV#RYx{2-<2Pm}hQSaP{L8`;iM|>VkuEXx zE+#qnkBfA*(`!vn;umxM^if9H^H)|BYm)pJM9HJ9T3eA(r>||m$-W0Tew_mX(Kgss zyawJjLVZuiOB=cVChGoH-kY>A7Y!Ij0`fIiQ7zr$xl^Z4pPu{&As1bAQA$Qe#&E2? zO*eN6lVytJOco+mvm7Zw_+7P*#l9nS9>IMR=(TnUM1+fYLD$HQ#f24R{WXYiIZMf# zNrJ*>z~^AWQ~33f6L%1y>sfb@^zEgb-X$-{+&2o$5nBh%nV`?~Thr3gMhqD;q<^n` z7dUq8*h`l$U%n*vtzOi1CStTEuxQaDTf26x2BBjKUlB_P?jJ%O(SrBuVhO?TO`2nt zUx(NhPnlw?^%g8v3!k+R@q`vtIL&w8ZM&(G-pR?)>Z>&==Zej}AMRtEB}|8MPy7 zVH~u+44q8{#VO3D6hv_4qTN(+A?T`0zd?o8)&XB=yR>C=(%%!fB?K)2UzF;BhhWU) zCeL|t?zuPj1jif9iAJN9OG`_enr2jkK?Q2qCK0^EQS?LpC;P;LP$9TqqS0>@Dc+<0 z)YO!_z`DUL{yt#(cmINMAP{OV4YX(PYY*(IYKqlPIaNuiY>s2T!ZlOhe}#NPSG?KZ z-~Y&9BO@bDEEY58ViEuinCj~42!eRbhoHVF5mduL70Pi74Aba?T-2!Hh{CQxJG8YUGHwP=b+kALLfkQ7mm3@$d{SRuU(B{>XlTfs zt95pEnrt@fq|@nQ9FtgHUf!2OZE>fC?ZY)mG(A1dEB|NOs%!9^sZoPU$d&ln@^U%+ zEhSHHSRg{!auJzw3JFK&JLSf2p+!0J0YmX`Jn_kvmX>1t6p6><=0dEkt<7m_YI1OD z>FDU_7)jr*!Zpjo3KD|7FgeUF7?BWOv-)S8!p>we={?nxlap>Lm2#&D@7m9~TyDT~ z{^H`IU398*gmON|-6Yt0jDn&nqqDt4A~7~UKYypay**+s+9U#$=5%*=mm-9xJlP+~ z=2Z=J3<`dSaG_c{u8UO|SB{`8Reifu>w!q(eO-ieD00~2{pScv%9((OPudp>;oCX; zwZTsT9P1&$>086Y!*M3-?vkH*Uktkx>*(lkw5_VD`k#jD=H}+sdGYWI2Od)@c4VCv zECE*`3I7j5wT1ehjtNhE0EjOLyZ>Cyag`7!+KO9oyt1;ApPilE=x=c6Dl;W5wG*7D5C zeunE8t*x!);vSf;t}b&W#tfmcR$E(JhA19ROiW}mnM{t*e#pen5jWs<4QvJX7NNx9 z@ug6&*YM1;9x}YnkvnC3dwVMz8XE3d-g|m_%ylxSv9Ym?&{R$)|D5FR1EFf0MCCi# z{!hK6(262%O2a~M3;!#2@uC78amCA=A2TyE+v1QR_4vTRz@SC`pl)7EoXaDaoO`1nCr!9&iYeltGZLq2mkE-9w1P&`1g* zAdQ4W{O9-XdGYM))T?vvz0bPVTKDIC(9=<)AY~#2000yk>MAhY9gaJpAR^p#dM-R1 z0ARS%P*F5|w{#HV5^p)5wi<90>ULl?o3-d(ulS)@sUpjKC{fbReYDRs)rTj8kd4pP9H&fkpEinWyodrk>DksGUKRTv>390+>!VHeZ0O` z8m@*&fbgkbP#I`0D#fmt?_(S10`L|HY-!=jpn~oc8r9)yCUci+WxylA7~nft$y!|d zObkBUobNUlAL^#<*0{964!ZL%n!3USb;=u68*9+M$Vb9_E7QlldPWbs zbh`iU-#z0f_IqNrC;HmraUAv`lKqk0w)gK`ElS>3f31XoITi)N0MRXuTZe^3B$_Sa1-J5*Uu*~=5BhL!RVPz zlc{$Mq4(|neE7*WqG_6Z86_W7I3r$(eRw5Cg7&e6s8Rx?cR-PVuA`zU=bp>ZhF=X1 zLJf17;7CLM7pkhN^qAfA^eFH>#wWW)kN3C51Gpwism8j~b;q~0TR2TKDSd2vN;}O&(ik*D&F9Z2eB)eWxDpv88aSCm%p3_xT9VZO?VY_2#?5C=QzPs{tTNj*(Pz9>gCZx&*6 zH{_V3Wveft4~rM03{Eb=QuxwFXzZVtxtpA;Zd&CSiG%8#e}5w#s92%FLBqz~rQ!-f%Mc!$!8j$J2T6a;=$8Ss=r5BIiL1 zO6qVY+w0n*kc5+N1HToX_b4oyrj@4bkt?gh9MSMW$vb>}6dh>;e4-_BbL;f_~S=UA`rPy)qJbQ;XR_G?KHT=xW(a(DaH1t9u;thcat4sg^HKln5iC2vVed5nBkti843~ ztcs9ll>9G}m!*o4a$((5&g^NLcJ}u8N+6teE{G%1VaZt{Y)xW(rx3MsH%-rxklzd2d`A+Q` zAgh`16Oy1x;KLGtT+QJED?vdK?4b3)hb(AC{dUfL|}`DPVRqM(H6eDmaP;h#fsA#EY=-pNX|UH+7FJ}$F#xn*HJ zpDx`!MbT>VU3DcTBv7d61IOxRcbdBWScti}xLDJtf6>A;5q4J-k?dFSxg`h$FlaB@ zFB2}3_)}jg*7Naon|{Ekd{kci4KVwpqCqLzUUiELEY9veq#GzMi2u6#N_x}!gjDSL-hhK?#vy>7)M}UP8 z8KC~-h3&C)1A=zAd9~DcnQ&9ha+kH!$LzeRVu__mMZan7_}tWxwXH-?dm-7{%$>M;=sOO?#hbHi6+g>> zS~6FRM~o{F$ijko#l+^s7EQ%?Ts%*c7h?ySIBU{+OeO^0heU$FV2FrqKhZ(Or)CDz zM)Mc)c}J!(Qt2YvH06e*J}j32T}=(?9X58vA3{Aw5I`xGkz*hS0oDMC{xiXRYD8dm zF(PR)EvF>xW7G)@%phx$d{@$eM{o)#Kz0&Nw19mh)8_GL5{Z|abKcHGG1P= zrNgNr`25u|0O}G&VKhW)p*UMkAO)3-q7tLse9p5CoEGflOS7ytP8r({;(RZin4-?D zS8Y6%mdsU+KkW_%661BqgK>4XTL>i~wS9#*z&%vh9!o9IJ10du106Myj9LnCi~X)9 z@_^YkmE5+|$sEhHnGHR*2W$%zD}0Jhk%S7x{druUAE3u;gGUNx0B(I!K_=K1Q)C3v z?8ac&4SgHrykQ^6XfikFJ**HbS~U57uxatB_E!VJ&1|j|^`3gcH;=bL9GZNNKHo1X{@@oQ zFR7G*M%xYyJ!8RV9|HBXi7zjK$JT#)Ub4)2S!kbW0g7yUw6Z3ZxU4^NIFOvhk^~xY z$}@9ikS7O)lMb*?c14rYHmq5$oQKl-T60>*_KJ}U_U5CaFEV#1VB45Ub@qtR1>%?H zpf{7Ey_)3@o*l{G^VirmeV2fXr(JKLgXxaBY0ZQk!z`aEW2=1^cjbeI2 zn3~4Jj9X8oGUT2Lsa(VtmQ^6ldD*{UQ#`4`V_V45I~Amjucdg9x>h(aUzCIC{M=-sN=vISSKMy_!E@5R%tj7C-N;-4GXYN9(k=7#g*;K9 zMr3Ig`$9?(a<#3dZZ`~+pQe-`!LI-QgVVrPuQI6y0Emb0o*yaD5@%E&?V{!B^{2+X zpZ?zK4}!4AIEu}=heyh?<#?Tf{#GAK*UHoHO{GZrRH$ zo@cIgtLn<1A2m$pSIIQdGx-`>6KL!Q%&caP4#y#$&2gtRic3!F%XXpMrXgu*w{))XDg=Z%@a=I*&ER_6rPQ^bm5R2E z^kHa)=+?A;a9mLYljcGXU1yxYKmIu0!Z->@K?J4E-A;?iIR4x(qaWSV%hzyE-__}K zdZj8#a=`cNWh87xwq~}PBudDGg+tA@k7XfUEUP!iH|v)r0k>j)NYuZ8J>Kxn_|tp- zqLcTk1`*ZA2~IBJT@w;miYD_#QqnlSS59Ige!mj`5>tcU9ebzPsFd|T04@37hc)Ra zil+Yf7#@7B>+|O1Rz2tecL-=RB9(}nGu|V9(`Ni$Sl;@UU@Ip?*S@-QX<0JD^CdXi zE*w%u!eP$mZ)eM}j=gKewFCLuLRhxF#H$D2%)ed{-V?f?e*YSwDX>5z^@?{x=pB?C z5=^0Pp!AvB7H=pX?~|vbMWWO`{@XdC#@|kf({wFEve8*@Q@)Jk-x#-!2o2jtu`7Y> z>3;tG?f?9h0)k~M!fllgPke|S1$3zT8b{%@9(HNHRhzhuPBZc02_$kX!dGU_Sf^s=^bIW3#&S&Pn{>FTbweWnG6q)m%W7+8gyEMm){uO zOK$0Casu0Z#Nzz`R}6VqEE8(>Imwj=e8|V@gM2}mt_z6?B*82+tfz$q7IvQ9r|;RJ zvN_Q%nR4s`X_`4OpCrc;WV9XR^Vs%agbWk~GpjJ)WUs$PNZR+RLu}~@9N%D~QvrDE_<|$0PFlr@#mUmh->+y| ze;t3J%$c#(Ao}d2{v!>#*F{^VTrfMn@)Sc}$NUq0gO+X&qxU$Px6b*ZRbtS%OxvcY zOhx#j=5|p5=eK~00GvTm=avc$IN5xWQL^X)arw*cjG`rpT%Xz8+{6XO@vkhe8so~@ zBW#zh7RK-v0B|v`ct9L;!Z2iG+uho&(IH~`%(Q*b914H0tfb`fSD+WwpmZ6dS3hE3 z-bJY{PI;1O`5ESI#X$CjFl6U6K+h8yO#5nC3TJ0=b`%nw6K56vRFCcbk>P#FT8vBP zu+vw$8iZ(cR1_gl5uTEglDj50q*pudUvBu14|Tptq1Zw306Z~1&iFxPb0b7P&;1dr ztd$~iQiu0x(Q6ThiF}oprY8H^Z?$-Ne?!aX6_vg*-<`8w-QPj-92x12>60zSHr5w< zb7$OxqewZxFQ|%!^kWJ~H%>+cYH=oNO=B`$sbR>c^X{~a(s)6cUT6doV-Yv)gH z&L#)|58tih;c!Q;z1~NLs$3brUn4uY!G~AV)6*2U$4$K04>XUr&d<-uaEOFWO;uH1 zPF~*A!z|QI&b!L~Klp}i2$=XAL0JYJZ4PHe18LH`rWq02OyELzvcYm`p!q9#7qLY>Bt4H8*FY%(><&U$G zBDJKuoz~XY-HXH7EFQnDi)FS28$PQi)jy*ctb2AbrFG%=VJtGfKwJ>2^Q8VK=vK)T zR{9_2kf+Ocn>3M4ABM=WqXRa^YYCA9TG*Q!QJgFLgw^DU0 z4ptAFw!h}x3I<+n#4MitMBnedXS-SN&dbSR^|J~XtNu7$QxS6HpO}$IzKjyWop{CG3+NcAuFXUlY{cNMSHP?2XjtcPX-1y-J z&7!-p0BX4XKm@BKWYCnD_xp&-K}k&%bk*Y#BcyecE1;_=f=R?>K&g0ORt4 z^qb#cr`NA>^ILHdKQicAU07iE>Npu%+OO@t+nOp;>lRZ`2saq*b|C`*@~}U4Vqv6F zO1;&_mEmu%jyKRrxQ*R8KX2effWOP^>Nx)()%!E^EO>RKWqDP4+MhxRq=fI+4eETI$L>JhW&Gl`@E?Yc0I9aZR?>?dSPwjcDRF=ikM5#{C&24A8}OH1#^Sp$C5VR3mPdcO_fr;`RNzW@8Wx$?*FMNiaJ3xD@MYo(|W#CH*ct~uWxj3Z*P8nZZ0?M-)`vy4(eTA$VGSro=>S6;HcHtqN1X_ zZ?D9{8@$%KZXyVXzfDc)Pd8S^{;1;X%mMtz3U9EXUmPX=A3P1c_+!@9(b2Jiy=&%A z8#SD2^p+6zH+DVHeP!S}i@3eoBY;K(L)}WaV%p=OG)LE{@F#q^Kv~ zoo?$*egKB7&8KNTvbL}w6SnEHJbQjbjXDp8je1EkCA`GJ)z#+i+XI_!lfkC#I`l)X z+#M>k&+yC)k}i7V&b<0U7ln+$!RunAOSNRb$9?X9SxpZ!Vf+;RW#U7^W}pAgEi5cl z;)=%2=B7Q)qx;L}&D;E&PCxf<`v36s|50{d%;`O#&&`pEoDLv~`xOAtc%h?GqhuTT EfB4+XDgXcg literal 6064 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