From 45853a5afdb011ae180f9cc936e2b82e5f5a4fd9 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Sun, 11 Jul 2010 16:43:09 +0000 Subject: [PATCH] more golem work New class: ActorsSeenDisplay, it displays a list of currently seen actors Tab will now switch between hotkey & actors seen display Resting in water will fail if the player has no water breathing git-svn-id: http://svn.net-core.org/repos/t-engine4@900 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engine/ActorsSeenDisplay.lua | 73 +++++++++ game/engine/Level.lua | 4 +- game/engine/interface/ActorInventory.lua | 4 +- game/engine/interface/ActorLife.lua | 2 +- game/modules/tome/class/Actor.lua | 30 +++- game/modules/tome/class/Game.lua | 79 ++++----- game/modules/tome/class/Object.lua | 2 +- game/modules/tome/class/Player.lua | 10 ++ game/modules/tome/class/interface/Combat.lua | 16 ++ game/modules/tome/data/autolevel_schemes.lua | 4 + game/modules/tome/data/birth/descriptors.lua | 2 +- .../tome/data/general/objects/mounts.lua | 37 +++++ .../tome/data/general/objects/objects.lua | 3 + game/modules/tome/data/keybinds/tome.lua | 25 +++ .../talents/spells/advanced-golemancy.lua | 150 ++++++++++++++++++ .../tome/data/talents/spells/alchemy.lua | 2 +- .../tome/data/talents/spells/golemancy.lua | 56 ++++++- .../tome/data/talents/spells/spells.lua | 1 + .../tome/data/talents/spells/staff-combat.lua | 1 + game/modules/tome/data/timed_effects.lua | 23 +++ game/modules/tome/load.lua | 3 +- ideas/crafting.ods | Bin 28403 -> 22685 bytes 22 files changed, 467 insertions(+), 60 deletions(-) create mode 100644 game/engine/ActorsSeenDisplay.lua create mode 100644 game/modules/tome/data/general/objects/mounts.lua create mode 100644 game/modules/tome/data/keybinds/tome.lua create mode 100644 game/modules/tome/data/talents/spells/advanced-golemancy.lua diff --git a/game/engine/ActorsSeenDisplay.lua b/game/engine/ActorsSeenDisplay.lua new file mode 100644 index 0000000000..675f4aa67b --- /dev/null +++ b/game/engine/ActorsSeenDisplay.lua @@ -0,0 +1,73 @@ +-- TE4 - T-Engine 4 +-- Copyright (C) 2009, 2010 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +require "engine.class" + +module(..., package.seeall, class.make) + +function _M:init(actor, x, y, w, h, bgcolor) + self.actor = actor + self.bgcolor = bgcolor + self.font = core.display.newFont("/data/font/VeraMono.ttf", 10) + self.font_h = self.font:lineSkip() + self:resize(x, y, w, h) +end + +--- Resize the display area +function _M:resize(x, y, w, h) + self.display_x, self.display_y = math.floor(x), math.floor(y) + self.w, self.h = math.floor(w), math.floor(h) + self.surface = core.display.newSurface(w, h) + if self.actor then self.actor.changed = true end + + local cw, ch = self.font:size(" ") + self.font_w = cw +end + +-- Displays the hotkeys, keybinds & cooldowns +function _M:display() + local a = self.actor + if not a or not a.changed then return self.surface end + + self.surface:erase(self.bgcolor[1], self.bgcolor[2], self.bgcolor[3]) + + local list = {} + + -- initialize the array + for i, act in ipairs(a.fov.actors_dist) do + local n = act.name:capitalize() + list[n] = list[n] or { name=n, nb=0, dist={} } + list[n].nb = list[n].nb + 1 + list[n].dist[#list[n].dist+1] = math.floor(math.sqrt(a.fov.actors[act].sqdist)) + + local r = a:reactionToward(act) + if r > 0 then list[n].color={0,255,0} + elseif r == 0 then list[n].color={176,196,222} + elseif r < 0 then list[n].color={255,0,0} end + end + local l = {} + for _, a in pairs(list) do l[#l+1] = a end + table.sort(l, function(a, b) return a.name < b.name end) + + for i, a in ipairs(l) do + self.surface:drawColorStringBlended(self.font, ("%s (%d)#WHITE#; distance [%s]"):format(a.name, a.nb, table.concat(a.dist, ",")), 0, (i - 1) * self.font_h, a.color[1], a.color[2], a.color[3]) + end + + return self.surface +end diff --git a/game/engine/Level.lua b/game/engine/Level.lua index 7b4575e0cf..dbcd4c136c 100644 --- a/game/engine/Level.lua +++ b/game/engine/Level.lua @@ -35,7 +35,7 @@ end --- Adds an entity to the level -- Only entities that need to act need to be added. Terrain features do not need this usualy function _M:addEntity(e) - if self.entities[e.uid] then error("Entity "..e.uid.." already present on the level") end + if self.entities[e.uid] then error("Entity "..e.uid.."("..e.name..") already present on the level") end self.entities[e.uid] = e table.insert(self.e_array, e) game:addEntity(e) @@ -43,7 +43,7 @@ end --- Removes an entity from the level function _M:removeEntity(e) - if not self.entities[e.uid] then error("Entity "..e.uid.." not present on the level") end + if not self.entities[e.uid] then error("Entity "..e.uid.."("..e.name..") not present on the level") end self.entities[e.uid] = nil for i = 1, #self.e_array do if self.e_array[i] == e then diff --git a/game/engine/interface/ActorInventory.lua b/game/engine/interface/ActorInventory.lua index c09b948e6a..7dc5a1b940 100644 --- a/game/engine/interface/ActorInventory.lua +++ b/game/engine/interface/ActorInventory.lua @@ -135,9 +135,11 @@ end function _M:removeObject(inven, item, no_unstack) if type(inven) == "number" then inven = self.inven[inven] end + if not inven[item] then return false, true end + local o, finish = inven[item], true - if o:check("on_preremoveobject", self, inven) then return false end + if o:check("on_preremoveobject", self, inven) then return false, true end if not no_unstack then o, finish = o:unstack() diff --git a/game/engine/interface/ActorLife.lua b/game/engine/interface/ActorLife.lua index c415eab738..9cfdd8d65e 100644 --- a/game/engine/interface/ActorLife.lua +++ b/game/engine/interface/ActorLife.lua @@ -70,7 +70,7 @@ end --- Called when died function _M:die(src) - game.level:removeEntity(self) + if game.level:hasEntity(self) then game.level:removeEntity(self) end self.dead = true self.changed = true diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index 214c7a56d8..dfcfbbaa8b 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -507,6 +507,17 @@ function _M:onTakeHit(value, src) end end + -- Mount takes some damage ? + local mount = self:hasMount() + if mount and mount.mount.share_damage then + mount.mount.actor:takeHit(value * mount.mount.share_damage / 100, src) + value = value * (100 - mount.mount.share_damage) / 100 + -- Remove the dead mount + if mount.mount.actor.dead and mount.mount.effect then + self:removeEffect(mount.mount.effect) + end + end + -- Achievements if src and src.resolveSource and src:resolveSource().player and value >= 600 then world:gainAchievement("SIZE_MATTERS", src:resolveSource()) @@ -534,16 +545,18 @@ function _M:die(src) if rng.percent(33) then self:bloodyDeath() end -- Drop stuff - if not self.no_drops then - for inven_id, inven in pairs(self.inven) do - for i, o in ipairs(inven) do - if not o.no_drop then - game.level.map:addObject(self.x, self.y, o) + if not self.keep_inven_on_death then + if not self.no_drops then + for inven_id, inven in pairs(self.inven) do + for i, o in ipairs(inven) do + if not o.no_drop then + game.level.map:addObject(self.x, self.y, o) + end end end end + self.inven = {} end - self.inven = {} -- Give stamina back if src and src.knowTalent and src:knowTalent(src.T_UNENDING_FRENZY) then @@ -1017,12 +1030,13 @@ end --- Suffocate a bit, lose air function _M:suffocate(value, src) - if self:attr("no_breath") then return end + if self:attr("no_breath") then return false, false end self.air = self.air - value if self.air <= 0 then game.logSeen(self, "%s suffocates to death!", self.name:capitalize()) - return self:die(src) + return self:die(src), true end + return false, true end --- Can the actor see the target actor diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 3e387810a1..6f1b2c1ea9 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -47,6 +47,7 @@ local NPC = require "mod.class.NPC" local PlayerDisplay = require "mod.class.PlayerDisplay" local HotkeysDisplay = require "engine.HotkeysDisplay" +local ActorsSeenDisplay = require "engine.ActorsSeenDisplay" local LogDisplay = require "engine.LogDisplay" local LogFlasher = require "engine.LogFlasher" local DebugConsole = require "engine.DebugConsole" @@ -70,6 +71,8 @@ function _M:init() engine.interface.GameMusic.init(self) engine.interface.GameSound.init(self) + self.persistant_actors = {} + -- Pause at birth self.paused = true @@ -82,6 +85,7 @@ function _M:run() self.logdisplay = LogDisplay.new(0, self.h * 0.8, self.w * 0.5, self.h * 0.2, nil, nil, nil, {255,255,255}, {30,30,30}) self.player_display = PlayerDisplay.new(0, 220, 200, self.h * 0.8 - 220, {30,30,0}) self.hotkeys_display = HotkeysDisplay.new(nil, self.w * 0.5, self.h * 0.8, self.w * 0.5, self.h * 0.2, {30,30,0}) + self.npcs_display = ActorsSeenDisplay.new(nil, self.w * 0.5, self.h * 0.8, self.w * 0.5, self.h * 0.2, {30,30,0}) self.calendar = Calendar.new("/data/calendar_rivendell.lua", "Today is the %s %s of the %s year of the Fourth Age of Middle-earth.\nThe time is %02d:%02d.", 122) self.tooltip = Tooltip.new(nil, nil, {255,255,255}, {30,30,30}) self.flyers = FlyingText.new() @@ -101,6 +105,7 @@ function _M:run() if not self.player then self:newGame() end self.hotkeys_display.actor = self.player + self.npcs_display.actor = self.player self.target = Target.new(Map, self.player) self.target.target.entity = self.player @@ -173,6 +178,7 @@ function _M:onResolutionChange() self.logdisplay:resize(0, self.h * 0.8, self.w * 0.5, self.h * 0.2) self.player_display:resize(0, 220, 200, self.h * 0.8 - 220) self.hotkeys_display:resize(self.w * 0.5, self.h * 0.8, self.w * 0.5, self.h * 0.2) + self.npcs_display:resize(self.w * 0.5, self.h * 0.8, self.w * 0.5, self.h * 0.2) -- Reset mouse bindings to account for new size self:setupMouse(reset) end @@ -227,22 +233,11 @@ function _M:setupDisplayMode() end function _M:setupMiniMap() - print("[MINIMAP MODE]", self.minimap_mode) - self.minimap_mode = self.minimap_mode or (config.settings.tome and config.settings.tome.minimap_mode) or 2 - if self.minimap_mode == 1 then - print("[MINIMAP MODE] disabled") - elseif self.minimap_mode == 2 then - if self.level and self.level.map then self.level.map._map:setupMiniMapGridSize(4) end - print("[MINIMAP MODE] small") - elseif self.minimap_mode == 3 then - if self.level and self.level.map then self.level.map._map:setupMiniMapGridSize(8) end - print("[MINIMAP MODE] full") - end - self:saveSettings("tome.minimap_mode", ("tome.minimap_mode = %d\n"):format(self.minimap_mode)) + if self.level and self.level.map then self.level.map._map:setupMiniMapGridSize(4) end end function _M:save() - return class.save(self, self:defaultSavedFields{difficulty=true}, true) + return class.save(self, self:defaultSavedFields{difficulty=true, persistant_actors=true}, true) end function _M:getSaveDescription() @@ -263,6 +258,7 @@ function _M:getStore(def) end function _M:leaveLevel(level, lev, old_lev) + self.to_re_add_actors = {} if level:hasEntity(self.player) then level.exited = level.exited or {} if lev > old_lev then @@ -271,6 +267,12 @@ function _M:leaveLevel(level, lev, old_lev) level.exited.up = {x=self.player.x, y=self.player.y} end level.last_turn = game.turn + for act, _ in pairs(self.persistant_actors) do + if level:hasEntity(act) then + level:removeEntity(act) + self.to_re_add_actors[act] = true + end + end level:removeEntity(self.player) end end @@ -324,8 +326,18 @@ function _M:changeLevel(lev, zone) self.player:move(self.level.downs[1].x, self.level.downs[1].y, true) end end - self.level:addEntity(self.player) self.player.changed = true + if self.to_re_add_actors then for act, _ in pairs(self.to_re_add_actors) do + local x, y = util.findFreeGrid(self.player.x, self.player.y, 20, true, {[Map.ACTOR]=true}) + if x then act:move(x, y, true) end + end end + + -- Re add entities + self.level:addEntity(self.player) + if self.to_re_add_actors then for act, _ in pairs(self.to_re_add_actors) do + self.level:addEntity(act) + act:setTarget(nil) + end end if self.zone.on_enter then self.zone.on_enter(lev, old_lev, zone) @@ -386,13 +398,6 @@ function _M:onTurn() end function _M:display() - -- We display the player's interface - self.flash:display():toScreen(self.flash.display_x, self.flash.display_y) - self.logdisplay:display():toScreen(self.logdisplay.display_x, self.logdisplay.display_y) - self.player_display:display():toScreen(self.player_display.display_x, self.player_display.display_y) - self.hotkeys_display:display():toScreen(self.hotkeys_display.display_x, self.hotkeys_display.display_y) - if self.player then self.player.changed = false end - -- Now the map, if any if self.level and self.level.map and self.level.map.finished then -- Display the map and compute FOV for the player if needed @@ -436,22 +441,20 @@ function _M:display() end self.old_tmx, self.old_tmy = tmx, tmy + -- Minimap display self.level.map:minimapDisplay(0, 20, util.bound(self.player.x - 25, 0, self.level.map.w - 50), util.bound(self.player.y - 25, 0, self.level.map.h - 50), 50, 50, 1) ---[[ - if self.minimap_mode == 3 then - local mx, my = 0, 0 - local mw, mh = math.floor((self.w - 200) / 8), math.floor(self.h * .80 / 8) - - mx = self.player.x - math.floor(mw / 2) - my = self.player.y - math.floor(mh / 2) - - if self.level.map.w < mw then mx = math.floor((self.level.map.w - mw) / 2) end - if self.level.map.h < mh then my = math.floor((self.level.map.h - mh) / 2) end + end - self.level.map:minimapDisplay(200, 20, mx, my, mw, mh, 0.9) - end -]] + -- We display the player's interface + self.flash:display():toScreen(self.flash.display_x, self.flash.display_y) + self.logdisplay:display():toScreen(self.logdisplay.display_x, self.logdisplay.display_y) + self.player_display:display():toScreen(self.player_display.display_x, self.player_display.display_y) + if self.show_npc_list then + self.npcs_display:display():toScreen(self.npcs_display.display_x, self.npcs_display.display_y) + else + self.hotkeys_display:display():toScreen(self.hotkeys_display.display_x, self.hotkeys_display.display_y) end + if self.player then self.player.changed = false end engine.GameTurnBased.display(self) end @@ -734,11 +737,9 @@ function _M:setupCommands() self:setupDisplayMode() end, - -- Toggle mini map - TOGGLE_MINIMAP = function() - self.minimap_mode = self.minimap_mode or 1 - self.minimap_mode = util.boundWrap(self.minimap_mode + 1, 1, 3) - self:setupMiniMap() + -- Toggle monster list + TOGGLE_NPC_LIST = function() + self.show_npc_list = not self.show_npc_list end, EXIT = function() diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua index 6b7535642b..bff531e7d0 100644 --- a/game/modules/tome/class/Object.lua +++ b/game/modules/tome/class/Object.lua @@ -162,7 +162,7 @@ function _M:getTextualDesc() desc[#desc+1] = ("Type: %s / %s"):format(self.type, self.subtype) -- Stop here if unided - if not self:isIdentified() then return table.concat(desc, "\n") end + if not self:isIdentified() then return desc end if self.combat then local dm = {} diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index c64c54bbab..ac1d8e8270 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -250,6 +250,16 @@ function _M:die(src) end end +--- Suffocate a bit, lose air +function _M:suffocate(value, src) + local dead, affected = mod.class.Actor.suffocate(self, value, src) + if affected then + self:runStop("suffocating") + self:restStop("suffocating") + end + return dead, affected +end + function _M:setName(name) self.name = name game.save_name = name diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua index 1d194a8962..526533ec47 100644 --- a/game/modules/tome/class/interface/Combat.lua +++ b/game/modules/tome/class/interface/Combat.lua @@ -123,6 +123,12 @@ function _M:attackTarget(target, damtype, mult, noenergy) elseif not hit and not sound_miss then sound_miss = self.combat.sound_miss end end + -- Mount attack ? + local mount = self:hasMount() + if mount and mount.mount.attack_with_rider and math.floor(core.fov.distance(self.x, self.y, target.x, target.y)) <= 1 then + mount.mount.actor:attackTarget(target, nil, nil, nil) + end + -- We use up our own energy if speed and not noenergy then self:useEnergy(game.energy_to_act * speed) @@ -662,3 +668,13 @@ function _M:hasMassiveArmor() end return armor end + +--- Check if the actor has a mount +function _M:hasMount() + if not self:getInven("MOUNT") then return end + local mount = self:getInven("MOUNT")[1] + if not mount or mount.type ~= "mount" then + return nil + end + return mount +end diff --git a/game/modules/tome/data/autolevel_schemes.lua b/game/modules/tome/data/autolevel_schemes.lua index f7b04b3862..182fe9c5d3 100644 --- a/game/modules/tome/data/autolevel_schemes.lua +++ b/game/modules/tome/data/autolevel_schemes.lua @@ -65,3 +65,7 @@ end} Autolevel:registerScheme{ name = "spider", levelup = function(self) self:learnStats{ self.STAT_CUN, self.STAT_WIL, self.STAT_MAG, self.STAT_DEX, self.STAT_DEX } end} + +Autolevel:registerScheme{ name = "alchemy-golem", levelup = function(self) + self:learnStats{ self.STAT_STR, self.STAT_STR, self.STAT_DEX, self.STAT_CON } +end} diff --git a/game/modules/tome/data/birth/descriptors.lua b/game/modules/tome/data/birth/descriptors.lua index 97f00a577b..86b37152b1 100644 --- a/game/modules/tome/data/birth/descriptors.lua +++ b/game/modules/tome/data/birth/descriptors.lua @@ -38,7 +38,7 @@ newBirthDescriptor{ }, talents = {}, experience = 1.0, - body = { INVEN = 1000, QS_MAINHAND = 1, QS_OFFHAND = 1, MAINHAND = 1, OFFHAND = 1, FINGER = 2, NECK = 1, LITE = 1, BODY = 1, HEAD = 1, HANDS = 1, FEET = 1, TOOL = 1, QUIVER = 1 }, + body = { INVEN = 1000, QS_MAINHAND = 1, QS_OFFHAND = 1, MAINHAND = 1, OFFHAND = 1, FINGER = 2, NECK = 1, LITE = 1, BODY = 1, HEAD = 1, HANDS = 1, FEET = 1, TOOL = 1, QUIVER = 1, MOUNT = 1 }, copy = { -- Mages are unheard of at first, nobody but them regenerates mana diff --git a/game/modules/tome/data/general/objects/mounts.lua b/game/modules/tome/data/general/objects/mounts.lua new file mode 100644 index 0000000000..bf66d58c8e --- /dev/null +++ b/game/modules/tome/data/general/objects/mounts.lua @@ -0,0 +1,37 @@ +-- ToME - Tales of Middle-Earth +-- Copyright (C) 2009, 2010 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +newEntity{ + define_as = "BASE_MOUNT", + slot = "MOUNT", + type = "mount", + display = "&", color=colors.SLATE, + encumber = 0, + desc = [[A mount]], +} + +newEntity{ base = "BASE_MOUNT", define_as = "ALCHEMIST_GOLEM_MOUNT", + subtype = "golem", + name = "alchemist golem mount", + cost = 0, + mount = { + share_damage = 75, + attack_with_rider = 1, + }, +} diff --git a/game/modules/tome/data/general/objects/objects.lua b/game/modules/tome/data/general/objects/objects.lua index 95580f31e0..f90576be24 100644 --- a/game/modules/tome/data/general/objects/objects.lua +++ b/game/modules/tome/data/general/objects/objects.lua @@ -60,6 +60,9 @@ load("/data/general/objects/leather-boots.lua") load("/data/general/objects/heavy-boots.lua") --load("/data/general/objects/gloves.lua") +-- Mounts +load("/data/general/objects/mounts.lua") + -- Artifacts load("/data/general/objects/world-artifacts.lua") load("/data/general/objects/quest-artifacts.lua") diff --git a/game/modules/tome/data/keybinds/tome.lua b/game/modules/tome/data/keybinds/tome.lua new file mode 100644 index 0000000000..f0e412b2cd --- /dev/null +++ b/game/modules/tome/data/keybinds/tome.lua @@ -0,0 +1,25 @@ +-- ToME - Tales of Middle-Earth +-- Copyright (C) 2009, 2010 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +defineAction{ + default = { "sym:9:false:false:false:false" }, + type = "TOGGLE_NPC_LIST", + group = "actions", + name = "Toggle list of seen creatures", +} diff --git a/game/modules/tome/data/talents/spells/advanced-golemancy.lua b/game/modules/tome/data/talents/spells/advanced-golemancy.lua new file mode 100644 index 0000000000..4fcac4eee5 --- /dev/null +++ b/game/modules/tome/data/talents/spells/advanced-golemancy.lua @@ -0,0 +1,150 @@ +-- ToME - Tales of Middle-Earth +-- Copyright (C) 2009, 2010 Nicolas Casalini +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- +-- Nicolas Casalini "DarkGod" +-- darkgod@te4.org + +newTalent{ + name = "Golem Power", + type = {"spell/advanced-golemancy", 1}, + mode = "passive", + require = spells_req1, + points = 5, + on_learn = function(self, t) + self.alchemy_golem:learnTalent(self.T_WEAPON_COMBAT, true) + self.alchemy_golem:learnTalent(self.T_SWORD_MASTERY, true) + self.alchemy_golem:learnTalent(self.T_MACE_MASTERY, true) + self.alchemy_golem:learnTalent(self.T_AXE_MASTERY, true) + self.alchemy_golem:learnTalent(self.T_HEAVY_ARMOUR_TRAINING, true) + self.alchemy_golem:learnTalent(self.T_MASSIVE_ARMOUR_TRAINING, true) + end, + on_unlearn = function(self, t) + self.alchemy_golem:unlearnTalent(self.T_WEAPON_COMBAT, true) + self.alchemy_golem:unlearnTalent(self.T_SWORD_MASTERY, true) + self.alchemy_golem:unlearnTalent(self.T_MACE_MASTERY, true) + self.alchemy_golem:unlearnTalent(self.T_AXE_MASTERY, true) + self.alchemy_golem:unlearnTalent(self.T_HEAVY_ARMOUR_TRAINING, true) + self.alchemy_golem:unlearnTalent(self.T_MASSIVE_ARMOUR_TRAINING, true) + end, + info = function(self, t) + return ([[Improves your golem proficiency with two handed weapons.]]) + end, +} + +newTalent{ + name = "Golem Resilience", + type = {"spell/advanced-golemancy", 2}, + mode = "passive", + require = spells_req2, + points = 5, + on_learn = function(self, t) + self.alchemy_golem:learnTalent(self.T_HEALTH, true) + self.alchemy_golem:learnTalent(self.T_HEAVY_ARMOUR_TRAINING, true) + self.alchemy_golem:learnTalent(self.T_MASSIVE_ARMOUR_TRAINING, true) + end, + on_unlearn = function(self, t) + self.alchemy_golem:unlearnTalent(self.T_HEALTH, true) + self.alchemy_golem:unlearnTalent(self.T_HEAVY_ARMOUR_TRAINING, true) + self.alchemy_golem:unlearnTalent(self.T_MASSIVE_ARMOUR_TRAINING, true) + end, + info = function(self, t) + return ([[Improves your golem armour training and health.]]) + end, +} + +newTalent{ + name = "Golem: Pound", + type = {"spell/advanced-golemancy", 3}, + require = spells_req3, + points = 5, + cooldown = 15, + range = 10, + mana = 5, + action = function(self, t) + if not game.level:hasEntity(self.alchemy_golem) then + game.logPlayer(self, "Your golem is currently inactive.") + return + end + + local tg = {type="ball", radius=2, range=self:getTalentRange(t)} + game.target.source_actor = self.alchemy_golem + local x, y, target = self:getTarget(tg) + game.target.source_actor = self + if not x or not y or not target then return nil end + if math.floor(core.fov.distance(self.alchemy_golem.x, self.alchemy_golem.y, x, y)) > self:getTalentRange(t) then return nil end + + local l = line.new(self.alchemy_golem.x, self.alchemy_golem.y, x, y) + local lx, ly = l() + local tx, ty = self.alchemy_golem.x, self.alchemy_golem.y + lx, ly = l() + while lx and ly do + if game.level.map:checkAllEntities(lx, ly, "block_move", self.alchemy_golem) then break end + tx, ty = lx, ly + lx, ly = l() + end + + self.alchemy_golem:move(tx, ty, true) + + -- Attack & daze + self.alchemy_golem:project({type="ball", radius=2, friendlyfire=false}, tx, ty, function(xx, yy) + local target = game.level.map(xx, yy, Map.ACTOR) + if target and self.alchemy_golem:attackTarget(target, nil, self.alchemy_golem:combatTalentWeaponDamage(t, 0.4, 1.1), true) then + if target:checkHit(self.alchemy_golem:combatAttackStr(), target:combatPhysicalResist(), 0, 95, 10 - self.alchemy_golem:getTalentLevel(t) / 2) and target:canBe("stun") then + target:setEffect(target.EFF_DAZED, 2 + self.alchemy_golem:getTalentLevel(t), {}) + else + game.logSeen(target, "%s resists the dazing blow!", target.name:capitalize()) + end + end + end) + + return true + end, + info = function(self, t) + return ([[Your golem rushes to the target, pounding the area, dazing all for %d turns and doing %d%% damage.]]): + format(2 + self.alchemy_golem:getTalentLevel(t), 100 * self:combatTalentWeaponDamage(t, 0.4, 1.1)) + end, +} + +newTalent{ + name = "Mount Golem", + type = {"spell/advanced-golemancy",4}, + require = spells_req4, + points = 5, + mana = 40, + cooldown = 30, + action = function(self, t) + if not game.level:hasEntity(self.alchemy_golem) then + game.logPlayer(self, "Your golem is currently inactive.") + return + end + if math.floor(core.fov.distance(self.x, self.y, self.alchemy_golem.x, self.alchemy_golem.y)) > 1 then + game.logPlayer(self, "You are too far away from your golem.") + return + end + + -- Create the mount item + local mount = game.zone:makeEntityByName(game.level, "object", "ALCHEMIST_GOLEM_MOUNT") + if not mount then return end + mount.mount.actor = self.alchemy_golem + self:setEffect(self.EFF_GOLEM_MOUNT, 5 + math.ceil(self:getTalentLevel(t) * 4), {mount=mount}) + + return true + end, + info = function(self, t) + return ([[Mount inside your golem, directly controlling it and splitting the damage between both it and you for %d turns.]]): + format(5 + math.ceil(self:getTalentLevel(t) * 4)) + end, +} diff --git a/game/modules/tome/data/talents/spells/alchemy.lua b/game/modules/tome/data/talents/spells/alchemy.lua index 7acbb21431..3ade657dce 100644 --- a/game/modules/tome/data/talents/spells/alchemy.lua +++ b/game/modules/tome/data/talents/spells/alchemy.lua @@ -62,7 +62,7 @@ newTalent{ require = spells_req1, points = 5, mana = 5, - cooldown = 8, + cooldown = 4, range = function(self, t) return math.ceil(5 + self:getDex(12)) end, diff --git a/game/modules/tome/data/talents/spells/golemancy.lua b/game/modules/tome/data/talents/spells/golemancy.lua index 2eb67336dd..436314b652 100644 --- a/game/modules/tome/data/talents/spells/golemancy.lua +++ b/game/modules/tome/data/talents/spells/golemancy.lua @@ -16,12 +16,14 @@ -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org +local Chat = require "engine.Chat" local function makeGolem() return require("mod.class.NPC").new{ type = "construct", subtype = "golem", display = 'g', color=colors.WHITE, level_range = {1, 50}, + life_rating = 13, combat = { dam=10, atk=10, apr=0, dammod={str=1} }, @@ -30,12 +32,24 @@ local function makeGolem() rank = 3, size_category = 4, - autolevel = "warrior", + resolvers.talents{ + [Talents.T_MASSIVE_ARMOUR_TRAINING]=1, + [Talents.T_HEAVY_ARMOUR_TRAINING]=1, + [Talents.T_WEAPON_COMBAT]=2, + }, + + resolvers.equip{ + {type="weapon", subtype="battleaxe", autoreq=true}, + {type="armor", subtype="heavy", autoreq=true} + }, + + autolevel = "alchemy-golem", ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { talent_in=4, ai_move="move_astar" }, energy = { mod=1 }, stats = { str=14, dex=12, mag=10, con=12 }, - no_auto_resists = true, + keep_inven_on_death = true, +-- no_auto_resists = true, open_door = true, blind_immune = 1, fear_immune = 1, @@ -56,12 +70,15 @@ newTalent{ action = function(self, t) if not self.alchemy_golem then self.alchemy_golem = game.zone:finishEntity(game.level, "actor", makeGolem()) + game.persistant_actors[self.alchemy_golem] = 1 if not self.alchemy_golem then return end self.alchemy_golem.faction = self.faction self.alchemy_golem.name = "golem (servant of "..self.name..")" self.alchemy_golem.summoner = self self.alchemy_golem.summoner_gain_exp = true - else + end + + local wait = function() local co = coroutine.running() local ok = false self:restInit(20, "refitting", "refitted", function(cnt, max) @@ -75,8 +92,31 @@ newTalent{ end end - if game.level:hasEntity(self.alchemy_golem) then + local ammo = self:hasAlchemistWeapon() + + -- talk to the golem + if game.level:hasEntity(self.alchemy_golem) and self.alchemy_golem.life >= self.alchemy_golem.max_life then + local chat = Chat.new("alchemist-golem", self.alchemy_golem, self) + chat:invoke() + + -- heal the golem + elseif game.level:hasEntity(self.alchemy_golem) and self.alchemy_golem.life < self.alchemy_golem.max_life then + if not ammo or ammo:getNumber() < 2 then + game.logPlayer(self, "You need to ready 2 alchemist gems in your quiver to heal your golem.") + return + end + for i = 1, 2 do self:removeObject(self:getInven("QUIVER"), 1) end + self.alchemy_golem:heal(self:combatTalentSpellDamage(t, 15, 150, (ammo.alchemist_power + self:combatSpellpower()) / 2)) + + -- resurrect the golem else + if not ammo or ammo:getNumber() < 15 then + game.logPlayer(self, "You need to ready 15 alchemist gems in your quiver to heal your golem.") + return + end + wait() + for i = 1, 15 do self:removeObject(self:getInven("QUIVER"), 1) end + self.alchemy_golem.dead = nil if self.alchemy_golem.life < 0 then self.alchemy_golem.life = self.alchemy_golem.max_life / 3 end @@ -93,7 +133,13 @@ newTalent{ return true end, info = function(self, t) - return ([[Interract with your golem, reviving it if it is dead, healing it, ...]]) + local ammo = self:hasAlchemistWeapon() + local heal = 0 + if ammo then self:combatTalentSpellDamage(t, 15, 150, (ammo.alchemist_power + self:combatSpellpower()) / 2) end + return ([[Interract with your golem + - If it is destroyed you will take some time to reconstruct it (takes 15 alchemist gems). + - If it is alive you will be able to talk to it, change its weapon and armour or heal it (%d; takes 2 alchemist gems)]]): + format(heal) end, } diff --git a/game/modules/tome/data/talents/spells/spells.lua b/game/modules/tome/data/talents/spells/spells.lua index ff763ccf6c..5d4c8993c9 100644 --- a/game/modules/tome/data/talents/spells/spells.lua +++ b/game/modules/tome/data/talents/spells/spells.lua @@ -80,4 +80,5 @@ load("/data/talents/spells/enhancement.lua") load("/data/talents/spells/alchemy.lua") load("/data/talents/spells/infusion.lua") load("/data/talents/spells/golemancy.lua") +load("/data/talents/spells/advanced-golemancy.lua") load("/data/talents/spells/staff-combat.lua") diff --git a/game/modules/tome/data/talents/spells/staff-combat.lua b/game/modules/tome/data/talents/spells/staff-combat.lua index 0146739115..f55fa89f3f 100644 --- a/game/modules/tome/data/talents/spells/staff-combat.lua +++ b/game/modules/tome/data/talents/spells/staff-combat.lua @@ -106,6 +106,7 @@ newTalent{ require = spells_req4, points = 5, mana = 30, + cooldown = 6, tactical = { ATTACK = 10, }, diff --git a/game/modules/tome/data/timed_effects.lua b/game/modules/tome/data/timed_effects.lua index 741260449b..290b973bea 100644 --- a/game/modules/tome/data/timed_effects.lua +++ b/game/modules/tome/data/timed_effects.lua @@ -780,3 +780,26 @@ newEffect{ self:removeTemporaryValue("martyrdom", eff.tmpid) end, } + +newEffect{ + name = "GOLEM_MOUNT", + desc = "Golem Mount", + type = "physical", + status = "beneficial", + parameters = { }, + activate = function(self, eff) + self:wearObject(eff.mount, true, true) + game.level:removeEntity(eff.mount.mount.actor) + eff.mount.mount.effect = self.EFF_GOLEM_MOUNT + end, + deactivate = function(self, eff) + if self:removeObject(self.INVEN_MOUNT, 1, true) then + -- Find space + local x, y = util.findFreeGrid(self.x, self.y, 10, true, {[engine.Map.ACTOR]=true}) + if x then + eff.mount.mount.actor:move(x, y, true) + game.level:addEntity(eff.mount.mount.actor) + end + end + end, +} diff --git a/game/modules/tome/load.lua b/game/modules/tome/load.lua index e2f8177e0e..55b2d69135 100644 --- a/game/modules/tome/load.lua +++ b/game/modules/tome/load.lua @@ -49,7 +49,7 @@ _3DNoise = n:makeTexture3D(64, 64, 64, 0, 0, 0) WorldAchievements:loadDefinition("/data/achievements/") -- Usefull keybinds -KeyBind:load("move,hotkeys,inventory,actions,debug") +KeyBind:load("move,hotkeys,inventory,actions,tome,debug") -- Additional entities resolvers dofile("/mod/resolvers.lua") @@ -70,6 +70,7 @@ ActorInventory:defineInventory("HANDS", "On hands", true, "Various gloves can be ActorInventory:defineInventory("FEET", "On feet", true, "Sandals or boots can be worn on your feet.") ActorInventory:defineInventory("TOOL", "Tool", true, "This is your readied tool, always available immediately.") ActorInventory:defineInventory("QUIVER", "Quiver", true, "Your readied ammo.") +ActorInventory:defineInventory("MOUNT", "Mount", false, "Your mount.") -- Damage types DamageType:loadDefinition("/data/damage_types.lua") diff --git a/ideas/crafting.ods b/ideas/crafting.ods index 25d04e752174cd90e1c0756ec4c1615e940813bb..5ae6ffd6b1fc12042dcccf9e4b17a68f29da6a18 100644 GIT binary patch delta 20311 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 delta 26091 zcmYhib9CT6@I72_ZQHhO+qS#4-A}vS+P1Z|ZQHiCZnw7H=lj!nb53&Z%$&@BnI!in zIrX6T+n@-_a^Mi?Apg_6)Xx$S6ruhPGGT=Rf&O2<43+=uyJ7yn$b=;6Mgt!1|2H+s z5S0D@MsG-x+Ch>2f7bQ?vyvddxc*P#BoQz|z}9t>bLH#n3pTdXpQ_w_|MOsF-I-CL zF{^2vd(;2q>MyvwDC#JA|F2}G&quiMMEUVV$aoNmarv?cg<srl{9aD~wVTD=>jUZb zAZ|Dnmw-ZqB{WD%LD&Ivzks{zTA}Cdq~6}Qyu3MU^tT&&;V<@3nVn~q#3TUY&OH&x z!El^aD&^)8BZg~igcxGxoBU);9x%UM*5P?vm)E={pS&hJp0$dYG&;FqwE9dhHF(9; zub0cEU<3$^ohIK{6y$K5KVG5h1N_n?K2b=k3CoC)R%M;BLdG9o$H`|G8~1OXo;;jv z;gJcEIA-rd8(SyA-Y4D8(4`vHgM@(JD8&N}1)OuCQB5pUpti5p8!icnHhz#Su8V>A z{O8N)gVE$9%O!p0lYc&@VS5}#rcOI>9BnKCFlM$H%LuIkQ;17tmS1<REMru9Z>t0W zq)b+T|JzF-9e(3Pp^aAN#Hh)H{xqrktMBi*hCdI%rggKCm6a7d^Z`sIJ^ldeD+8iy zxZL<BRnj~0T^d8|fkKSrf{j>WA(A8Y-?ZRxPVtr_aDVMCL&}+7)jHq1WpQa=5F>je z&TV|oLh=px<VXy`HdJ=i<s3uI65K|dQ{g#&GLC0*H2u)@!|}=M#;Ia?0o+L%GbYkf zukitQ+o(1q(U^6Hm@bS&J0$>e*n=2yLT-^l>@SpZ>NDl!+!R*rBXRuQ<q2n))7RFL zaRnjo=Javczm|hX!6+H?Z)AIe0U)2$zK?4C(vzdIw|orauj7!2B5sAq4cg@4gQs8n z-mhwJr9z=FG`ygW9(b1PvXSgl{;XY&Ag`&)GvhZl^R<KglPnPRcYMH*a65!dO9AmW zoNDrC8;Skx!5Qg}6;HHhigR1__VH{#yVUPC(O#iRtM&ZGUag;h$?R$D3_sT8<-E8v zN5;nwChrCVWPR`t_<v`xidtzEC$4_dN%Q8JOG_}hWK;DbfKL=0_uaA!<)-wiXO~Ts za%ph-=Wik!tw)zmlp+A|i^p_X>&EN+GaikZ7iv*x4j!%&uH3#$HWk(*!mIK<4ebgk z)41A<R%t%}0YdJMQ7ujddx!Lmj((lCkz>f<2U@CwrV&agQ76U|<z?I~9O#%oT@0&h zOTytp`vk}_(+DGd9y})u)%ENB*j|`S$GBNUQ$hXHt}zP8$AEC77u@O^d;t>wj*gL| zUFh78nn|6O5lZL<r|hJ(oxOqndivafeS0{@Xopo;$=qZ)jjlo@DrS78yL+@0>o#7L zFSnpFoXaA1Bs1j4|5k|?toKBBi9%({W+NW0Cn9I-^MMKc*e|?iHRjOIgQ!*~h*Fgv z&2rTcST#3fOTY%=-^o$NiKK$13G2U6YGNLVwmc)}Jxm8YRc2jWPSwCO!oJHiDmZx| z-5(qSpyd}B6Rtn=)P7XR?iHC+!-602xj&ViqVE~Sv1C$$5)eS=<@uc?2^G!D&}2c! z-chm9B<>fkq9*s<9paa43L4^?oQC%6Vpw9v(SJm#>j8_4AAk38J`X;~r$o@-km4Lq z^4mpK>P$5XydOj`f0-w!y&hG$pEzRar0!s~GosqfWZ^cDd9`vpAH83_G9^usJMCHH zeMSt-YkGyB@~Y&hmt%3`dS_+s7WV6&!>M*UFU-!NFHR4rc(r;(nZWkDs3mlPsX!6M z-9O&ynE~2KnxJOz3*)*mL=!SuTp3pa@uMt#hs-*23M{L4!Bw~@OL(X5VYe;Knb5yA z!bSq#5;8CdJz=Dx9Q6VlnqT-Kw^a?izbiM~B|~P`TK4`yx5Pm3<qf0#HtRs3QU=vC zr;!8Q%mpltcPwMi@;ghaLb~vDCGx7CkBMUjiGlDZ374=c9=pai0jcTz_;=?l=LQLW zQfETGr=9H%(6ROI>iM-62V6ozL(h$7UXY|Ohn+bH`!}O<vU87L<GV1H)rxC(?vIM` z_Td%wS8QBWXcag=S2rCja+EifJ9#`aLN}^6Z(X48gDy6>^E{c?VUv73$_4NqR^J^4 zeE_{ZhpCn=iGQP07B>(1c4n#AiI#-QaZ(UUW@DUj?D?E-S#f&4TJg90FP_M)Z-nEy zpL%tMLUW9p=Lr;f9kTZN>&Baz)xp6=?)L5gA0Zl@tJ+u#m|Y<YN>M=ypW{?Dqw6|T zsI4VKTUyKdYJ)C!Rk|&`Z^#<w<OOZZ24DuZn)RrQY(39&<KgHr`3bUNFmd44`;O2t z<$q;%{x@_a`|`0;|2k!bJ`~~-eC0w~?5RSt0czF<x?qBuUvyNqXx;v;rju`1hR}_$ zjc5OK&O1D_aQ^Zv8&SN9_+a~^y0cvmxLC1XNq;B~b_=T(u$G(7TxpAr@G}_F2M)ox zz12oHbp10J9GyA0a69b34qzdlkx(8~;YH#Vh^LG`)w8AYJ_Urb3?D{)rHd#rl_oyf z`B07c6`fy%(dl@m2TAQ-{4iM^0-$<MZwuqJ7KC#&6Ig`&6O2$g+;Z73u>7Ec@6m!q z3dc!Q+yYAXKIr>j&wkxELY|y31AoiPMM;JiESAL`rkzCMNh=G=EA+}Kv9}$NWd@U~ zQew?p%I(;-he;=>!b|J&cFX>Hr=rQ?Eb?17ojfepl0Pa9zB2s{YtF{8z>#kVD7!v~ zYs~oV56V4tot5|$st7!W@F>A-!Z*`H%7`Yk#7cnWFX&wrR1xhXL}O2!14Ve@CUd*% z&liU!gt9%M%EEFD<8RRpS!hp~L&o$V--Jm`QQ=TZJz9I#5TE+L)mI!W>2`h5``emJ z-jR(I3i=jU6ws<P=9)4BIym)~(gn5q@P1)afEwx9jd`Mz#MgTCzeYR~k0z3dxDtt5 zJJ{n~RJ-!QxXvU@>$<4<1IT6-i5tD-gNYPkK16&ay4=~#)P!>{r;E_pdHM6}uSCH} zPpw2vLCp!woJCWVwiXJ_^s^lBQf#v6jmx<eFr(Y$4*o_VC7dh>m2FMu*{=|<SHbgw zVu3nK`2^-upmDLsyqUHP(>VP6R+-=$kMzq<<KLx*U^zAud+p4HKsL$@V=Yh2pBN<= zTH8gX+xU5YB!5xrahGIiTy26gx8g<Jg?S!sDNmS_w$ih<mMb2Lv9lWZ36^BPNHmJc zvT>C7sacZH2}hbeb*~L@;c@cdg5nZ;DHh+-^l8hRY3#-9Ad{aJho_mAUKD*cinGka zwL9_}IP*a=WExgU09k&<DvGE`*_0dq;sIgJEL$a1;L+0#>}S`D*-fj_mnHVD;y3n( zDd77$7=@Mg{dVX6wf6SZP}}_>LeN(BH}6&Ke)DE{&?>WnQK&(-+^FX-G5a#%TI~Lx z77LvkT}$@mf9tVMUbg4Yvgon-s3NCC;068}hR**;SdrEi0Iw8r3y<|LFK%_qWT-zR z5tf<xa<2k*X=@9|#go&tNu{@$T?{^Y;gvk0R<;|FG-Im12P&QwmD9Ri%ZK$|Mso}J zv?~;i>jE-i4t%0~ilT?C4tOhltonlu<3NRB3p<YHENU<OQryJCgL~w6b|G_;MT3A_ zA&wa|&wKkJkRi5@!|2<>%S^D!%0KPVjbQ|8aFubOfK(P)K--5De8|G}2@XLp?Z&>i zA($$`rq5|F$`)$7Sy7f*qq1VjF3N`5gwtR=5l(9`=-psJ?+UZvhI$Zd!^t(PF?6xC zi=yxz9=chokZx@xY42|ARdaaWQqJpfW(@AVm{cbRNIg;xNJtfPecHl0eWewP=;1ad zzEs(nFNHj}iUVW@46{jLa+!DUZ8MsOn9~uP8G5TfLKUF?*r$h<r#*+bcUy($Npon( zP(5e3ROnNU^_GTJ#s%8$3?m0iuV~H}B*hF_=t^<EQ{pjJvgwrBbe!3gifR6IkjX2$ zV22q4_%!GTxTvS*ShRD5ez8v_$L-bHpcB%<Q>evsx$BOyzgyxWb~c{C>)%PSsgJr% zyg%kHx(e+7c?WC6H%XtDP=`l#g3!Mw+=Dn?FECYRotAcmJJ+_{r5`l$@aPUQvo0<5 zt|@8%3FA_;>UzHFOW?ke@JjHNy0uF{`%!!Wux!B{#+q(Ov3x+C_<O5#ZuGgxYp5B_ zHgL3>PkT1!QtU*$soOp&_j-tjy)l`lEB#}ev6r$8pq>vV|3@D~S1rg_#WkxCPD)+w z41wkE2*J>s6qD#aihO{XU)l9Uxr)!7Y02ARiz1-FbXC}HIlIrV*qH@8CGbaiL9vq% z;71r^gLEgab41-^hU8fhe&%0p7SL+OZ*Ceq(iXV2ZBnaVFT&eEA=rM2R3)|<>@jPM zoz|VS#HXa%#QW1xz78dDRe@K+yJ@I&ROLy>kr^daMhx{gqsl)!7KWE{O$g0NFBDqi za+KBl0(|trZE%r(*{v$kwYmB^`|TDEXmKb#lWNS6MBu!`uD-;ll@gV)!34~ujtkUZ z6&4|^CTb-JG<OQuwX<`>TR5ByHc8-+mT&nThgY+FXM0jIr@zD2P9DX6B8l@No^t1- z{<y)mV{pv(t@-&U_r#ix+}Im6n&bW^4D{s!+qBBCRD3wz96``2AmKD<Yko2SI13p> zw@XNgKF4X1MMoICm!*PY$noV1x1uN_n3g?OSYt5fr6}!gjvr>lr_@~}z|Op~DYewC zu}|AdmT$F^=041)!6uhNq4+X|H_wsfcXCKLMOsslQ(GEvyl;LozvqYvD$6RpO0TfM zwt!{x$%TNmUBRkLsR_jU$Kf{yY^{s`;e#uVD!m~<y^2ZeWO*2~C8kTv)D$$+wkbL; zM{Gqb_7@7`^GS&=rex&vwe8y38C@JR5`jq4H|h3j5|!HwMn&7~dSV`D_#_9`Q%fp- z^qXu_q~=xq?HqHVe8dW`?SPv_x*u?z$4YM0&#tcDGTkxAo@T7-<nHVQxP8m$Q#&K0 z&f@KvuMTTWRp($NrR{F|r?-c@?EIdd8|!ZT50zi3UK#KTl*c6MHb;k6bcI%Ad6mbx zT#<bOQTC$u>hOAfowD2I=j;VVwC&*YV$Wma&lw9<q;s2~sb>XyY$e`s)etm9%q>C= z=<WukBfJf`b!9BEV4~ZBTEt6aTC@U&k_P&m{J_=JHIk!OlA~>IFqxUFR5A=&gX9bk z(GcR2Oqz<p2>fhy^|%I`!uVg(Yr{LiiVtupI|X+)DrZI9m_$E4k-|R$#p+X&e7r6d zk6T<gKd~iA>@XB_+nJ2$RPJEJQGQ~`@^adcDFz@c!i0)6+h-yIw6id@X~={1#uAm_ zvJCm^?*1{zuy0$pL!L!0NV4~~fn?g_<)vz2=1YZlGjPyo7QgFUAmawQZg}MP8PNHM zc+ClO3cuhY3uAkD<1e-E-_iQ<<_TnVqZ18Ia3iC_+Tq--PjDG)2dNWX>-sHj0|7sJ zE8kE;xll%_P;(G~IlFt#%f*~`x<7?%@(i*DKg8-!Jw8ae=1^H^Z=>4z<^kjd30%%= z{P6J}d7S3`7X%6DO#4RC4+z4c67t};g|VO65*v6!zA6$3CRhQ2AMg!!UOe{7=ULD@ z?39;k!@{f>d`J?Y9o5DE)Nx@QO^%~bT7t3MT<=9@3G#S=SY7`e%M*l_MrJG&6$!H$ z3^=hKBdR8-S`|MEsnyDVu2Yhr`v`ed>Lp|dQ_T!Cvj@Q<dFNuT)=1k0rI;$l0qTkv zQ6HR5p&h(S3`f2`cX;7QNNQr`$2dPQ?6t4|EkIk4$fDn&4JA5&C&HTZ#@&+YtjXRx z#}^a`vO})`^k9v|*|0*I3l7{E@_3f*cQ{4(sF4X6V~;o@kvB=@i1zNM6~F72t})=* z76y1!|IMS*iC-xjLzt!iB~}$ir7mMLT|Az85>SY^gBhBIkIoyoCGXX;Y<vLyr920* zP07XA|D$<Dk3R3rOc-ZS8%JTBi|n`mni^_x-x0qSFz2Gwo_Rds{_EpHzWpE;XC<+~ zgtfevC~=<skn$h~On@>-C=8qSp!l4>K+cwM(JYbPsl$uDc7eTtg-z0Jh(?l&SuOI% z`pq(i&Kxz_Mp%gC$Kl&=()>b7y)h)5(p?T|N5S&xp;;4Ul%wi&qd#XqoCray+4|X? zWm{(ufhh-m-fB%xK~;Auk~m&vk9<2gYG5RsUV~TIBM==<nsfVDfb_yN{sjz7o28<M zEy8L-i&;VZva-qGzPe6wn=)3X`p7!zO}Lh%(?fh&_WZ+cJS!oE>6K0jcFeV*O=AQ- zHRjLN`x?_v;q|<@3qUm(w6{GUgH31fshIZ#*i9N-_K7lJ^2rK>i7QxxcBwYnogw*# zQfid>@oWX+nfLU7e=bC8lRkx+w9gj&8TJ>-K<r51JNgyhq&AJVh=}si6}umOze_ps zc=P8h+`Z8r^%R|OPs33%u-s>A`*Qa$2OomdIbTst%b1by1lv+Ax}X=thg%g4`d97& zp!7#<>f;Q1B&=Ows)fG;+ClhWP<TDbM)*~q1ARJ32MW<g>5`q&b-?c3mb<+48-LeB z3v`!>xu~9h4Ebl4LsR|s`iI!&(LZpf=o{vot+W<%7|$>rLz}~95!0I1xsT{ln3MTM z&7uk$g)SHZiAz$??qSu)K>2Yhah(1K;DoT-C6iH9q&XP-YV?arb(%KwxiRo7R?*Iy zED*8{r7bModd`9?lX-jqgx18+hjX#sx7c(QeHjfo=2(z(BI@<L(Tfd$W~C6}hMJ!w zBmiTdb45;7_adU;sqr8^7k+r0#E+Joz(Y3z1@*x$Dm8@uglNDw1-%GX)JiJ{D#Ie; zNXEv-=#ro8R=k&IU7ECAtp*qc0Q&5`odFbiYRT}_)FU-N`3(RA3CU&y$OF;hLD>6q zlx<k=<4E~HS}pyG1Yz^O6_mN`RcvCt4+Vr2W*6t3ExPN}f6n<3s3^Q$K)B{v{|g*m z8!~5E@wi!<=Qv9#CWd7Ljb#O*BP~f(yb(xIW_awi*dTeMB9>V_i<&}}4o#@NT*(bb zPT!Q>I$<%v6_$^FQ^dQK7_C|wWG&~d?hIl}SZ{49o^*ENg9~ZxXl=;_^xS8{Q=Rhu z@V%I5k!!F=X;?=_Isqx3fuDdb(vBbzz$ZF3MPA1(LN?o?r=cATBM%0=ILDC0O}uKd zJY1dy2VQ={V#H5DrMci8qfwLyGCpYgLxKCS9kp$&2S07%LqDbL4szz&@#T{^y$}|s z#VZ$}7X5a>wh&`|F1CLzs04kPg-&X30{2_y<#cwoLb3Bi^wQ(r6O!r+Yh<SDXP>l6 zLsBB{wnW+|{AAI&)I0&Cbvm??^7PzOjkhD4FdNpY>RgVP`I>DFUXzD#u~6)i#{z3> zd;Pm#sK@-xe>?HV^u5C1=HwWCy)Q-yK{+-x_Tvq{JtYnX74!e(*fHtsOyIELZeduw z-<ZEo`G31`Gjw<LM<{rB3B=xtd}`a2K4>FDC_X|86(FVO72A0zdVf5II-boWm8yKK z&%-J{ViA!$Ly<_~!)p{vKfn0uf^KAssRt`3{4lC|k)_4yJLxDtVTt<*?Py%A-qBtV z+9j*iz8tT026cmbM{A&HB$gZ49AR=ziG6X)ZJI7guxUSVXU!&QLPTe@mzSu?QzCcD zt{B}q4v0#rhyK8+!N-xbk+5DeLUAx$&n!u?FJXCI!k;5mN5hN{`&r;T$MvjMp7mFn z8dMiGHw*jSy^6ZJ-<5+cI9o4m1$NW}L9S#Ik5jQ7H>s<lm3IkQhY1!y=*My&Y<5gA zfN?WNS;d`;h%&URyPAiM&A4Rs0FIDbI4X3x0A-sT%^H;0296g2FG(zH-=O;4;ZTde zXu2$x`u_bGq@K&jx&jWWwosU87EoN^3H@U5EdsIy{bFtAnlUfRT23W_ARNCn1tYpG zrqtDfaCOl6IYOM44iiS|i+nD<H5_^{Q9{;|CZmZl{ai9seoikIaF8?2pv|0br!SpL z0n@s{#<2-)m2=1Yamzmm?^Ff$v)ubqPS>a>LaI0dd0&pw`dnk9f73i<ljTjpQf<)Q z8Be;Wo(#SqEW0r@mgz$x${k{rjS6{$@T$l3s(R6`OlaXNx%-LOuH;l(I>K4yL^fCM zqk6M1z7`}s{rs}cEr+@nS^acdObTgb02VdyJS(?<6Ie!H3O27L@>F$mZ2S$!2f1S! zlZM5W<lFqv*71{O(xN7O6hWTL%AQp^J$G^{$eI4~*TWB|t&m%hIm&z2dcKdAB#HhN zpc0%&M_br4dqM>|<(CejPNYdF%chn5AB)Q}CiY!mlRL5bC;PchKVrXBbNw#8Noe1x zX5We?lz5C1`4|bQR@v$MMlbM#ru(BqsfZ*IF#5z&miqx+@V*h|iVXr%83PLPzXcQM z|1FLrt>fYWS2~-qo1Do0*ILlJ#L|Hi$=&Ni9xJ*{)W7)ICE^Wt+EFRc3dDno{l?9D z%Z!$p&f-yR#uK|_7dY+X5#nP)tr+>)4&YNZJH=+Y2v8F5Ob=(R3a%4Kk6{=ZV!kh! zn1V|HEPvO@#pDt5oSU`@nF6r#*l1~_WVrSkEUo~6B9db?al$>wm2{QX@IDb;(`H+; zHl|Y7G+IG}Yp<n+^aqEAju~IaOF)MexPvVf*mW7LExpr*rqZkWQLwqlL~!~Eh2{f& zBzVzqXH2g~g+5u+?zPqX1r8QYX00Zjxu!v1{a{LpF;vP>ICEi+413;m!tk;9e)+A9 z9bYj}IB^}3E{~wumbR>l41>H@Q!{B3y1|?CwqcP}X`2=^hwoUQu5Sgk#gKAg?o+N$ zWxtJIc_kf?cFIAY*=zXiRY8}a^jK0)P+=-EIlfsnZ|^_T4yQr4#MBAni4v-$^0_5? z%{1`*i<VUP=7p4hgx(|i-Y=ZJZyJRdtYHzLaGV!)^jW$?KrQ|&+Ah3s7DiCl=wz6P z&c_v)%w|S17dfJ}3AW&fu|TWUvx@&8Tj;Yd^`x%IlRZWgD-$1|K7QH~kd?hwndhF3 z_su85axXyb1~*2-m;2XVqZ`${nD`git&390C9!OUDfKh~l!2FlpWFK5v$_lg^h`If z8{W4w+ZGQV#6Lih#spROIB<j<r<(9lfIW}x7}Mq8;K2kV<2;<1YQ?}+pP7n0^qXaO zK&dbvJzlARnqAhGwv;Cn5=!xC#3&n^uD&m$@2I5~60@I&DfqW+2;8;}$tRa{z`}}u zb*=T&>bTFuDm<1>2wQx~0JNzghHM{TY1s2Pivdopq#tcDV_Yo&=MQkNm5ekP(0GZw z5kA;Vj+ta4{UE$KScxXeIS%@eXmxk|sjE&^&Y>n0@`W>Io9m(r(WFcc-u>GWnUQ>e z8@KMvZYTwrS%n}>e|qpJYwn-fD2^L}KrFRNLOt;tg&PllXC{ncisc`+l>|1RR*vd! zi*U+J=*cW#Hlul&fh5X4Mdjh-8sLtyk}M1gK_ZzVs`OTyh#p*XPAMh%$aZAK-ua6) z>ZqU;EBE{h9j5x^4}m3y_s3tAQbRla{rv`WgiVn$=6R~)^Yzt(FX4e6%;#R!tyxAa z&+7HrIV5+g+tDx(_L`5>vB?e~7Y||!lJE4bTN%GJkMr5O;=j{TvsIr)0x~F<h$%}V zTV}NI6Z<?CqCSn_FKgL(ZjSFK19)H2Muw?{_^RUN-$ceOlvcMYmu?ZuY2!OO9yCm~ z&?`iIU%5m2>7Vc+@#$62<h8$Z4^+=XvD=K0tHytO)`7gKPLX>X^FmAjN|Iaw@R3eh zxH&KeDRa+0zx*_5fhre4h75$F`?$iTQZv|+U#p&<AhGBKU$mD$B4#Y#j#aR@wkmD# z-NHUql``Ooyi0g}eGHCW0gxpmStA`2aFH3bIWtn_=dx@&6VEc3dNMhlu!kH9d7{Zp zN|^o2*J=FF0J2fiU<ye<wR;XD5^5)9$F<}khTDzn2RorE+N2dUS`804i^rizH@*DW z&Vk%Su3`HL>HO~6fKHqKNV}Dy+chn_5R}S6@mDll{Odx+{!5O-iG-=rZ6)^-fG@-V z0S||BmLls|`yH(NR?GV2WKlGaR;e>q??(C8MwnI9{%iqyF#rpILhRuEI9>7MWXjrg zk&}*z{rB&m!+d*PLb4Tk_L1Sqe2X2e39-Oarr~tV{g>o*iT9kz>YyHb>z8hWA@quR z*h3UaK4Bb^%6rSJxL44+M4Zm%C)@Ujn=p}d%X8ZZO@%g|s*unb%KYsTN`~j@6d$~r zxm(RIo9Q4hHs3)Ygfu%$<b@wvD*(Ml`32ub1}y|ia@U8`I6R<7+i15ckI`UG>}WCO zx^X!<Y(v=9Bto;2vo7^htT`-n*Mt3o$aUW6f2w?$FIR0lBnZeF9?1Wx^8ZH`=VvNa z;)I6)0r{T}{h!m`!p(%y%ifM(=)a+HoA?M6j+sZDg_W0$gO{B<X_}P$2dgwIn*uX) z(hDgg7#mL#H5nHubCNL`kvKE6JrB94yN#VW0}mSqH$T(=B;&QRaIkPOadUJL<Tp3t zHFL4}Us%z`%+b!ol~~Ng)x^%m!G@pde+L`0$f!a8uZ%uUP6N1iT4*QRuRh0sEtD)U zCx<7J8i+-alE`{WdwQ0!ld6I(Ob5EbOUFtFGrM^r^1#31d*!aW8a=<;F&SZV#;&_w z*?s~S+V5qavMvy9>TTB6))0<{lU+Xoj0y_2#r{)V{bXZHYedD8s=Ud_%Fl1@nZQR6 z>n|mgvM@;~VSqt4%^1(H&;n3Uq=;T=SJdB3!(m_1(F4Rf!`*-*hvDcA;W(O)@_nOp zX1>K1RU<8SdLkL(Y&e;y*UTU|*v!Up`_kx0ix0SOUiNE~eQ`s0M8x!MiO;`eO|PqD zsBypOveBBr?mn&5Chvi%uHy;}(l5%#lCz3uv%GxBD!@wOpP-f6ahE2L3*(!^uSVyC zwT345o*Ed56{P#^vA-ra)QW<Fk<z(@BbeGp-ikxl@V)I^A_aNw{<h#*u>9<@xcBsH z%cI3)NOv@-#uz0k{`m3sP1pf9@6i_z?`bhOguZoq{I~g{l#mbjzXHdWZ9~^-Zz5sa zF2(9DM4)p#FSvh?g`8oHih`QkYYNk`_r891--QddG?6UWj3YBl&6WlAH-CBsq7|H= zb$7Id29xi!nP8g_f(_3=2;q}*<#9J<0ji6Ssx1#@D&6+6XE%@8ZYtnCmx`fPqx%uh zXgj3)a}Lzqykh&DjNGGL&wt@j8mE6~3SYNS6L^c1Mh|M?GQdkoN>VG<uzyNVyo-5x z953>*W4G68B7TvdJA#|qgdupR4coi`|E|XldR>jvPQIg@a38s8(<ML7)OX!}DwWFA z_hhe~Lno*O+d@44?`?$1K_;|mS_ZG4oG~NS`}7Z~9o(ahZRY!=Ca>IK%b$jDrZJ3B zBEa*NP~Jxk;!);PmIpnrs8dgI$+%T`TWzf`h3mO}?AUxYfiiuU1VMFywV?l7lVK~g zrnQk1Au3<Svmmz25lbufc!IyY93L?u)T3liFaIW;hxYl);=$P^RlOYDL8>Pa8dm>p z<GlA_Hl=Cq%yqWN%=1sxT_g)1dI=c+4j{5NeI^fZ?qF*Hw^3s~i!kgs8b>jI(0$MO z{WH~q4I;Fc@i>J6gH{`iNhNAxp?p*vcmJ2SckgeMg^AIKU1&paTUBU39<+=}uO4jq zV($gzykSQ<cVxl#R%)!b_ke|Nyhj)No>pXhl85+HuxogeRVXTXdQxS>)NcjaEa2>t zE;KQCeMJ0bm{M*0-A}(`PrAG*sju(kWL5|rew0lbtDR`7Qu7qH1g5ir&^*XLWE%@7 z6^oyXRk1~mM9~28*@UOt`9464hH5py(zClMQe63+HOH#3B*#rEu|}Lxll}Sxn*N16 zGM!tsv-*?LUZEy#X_&iC&6<mc3jn8gk75=^HY{yc<%5W29Mg3&x)C_D7)M?DhHMRZ zC0}2+tch?$q(5ZgOU8Sicy+1Wd97BxK{x|Rc+v1HKRYa{6)AU%){;pisY}N6VNXmI zT$(=WcSdVL=Y~czz1T4kjsXjK60*Iq|2OM2blCVc1$I_s)J$}=c_&yO53FSgPSYu) z^YD7?VEfgUzZPy0+rGX;?7dN8uIw{|xmro*s*A)dzc@}ymicjG3(57)N8pU$E~QOL zFyKkFK;6Ade$vAIM^wb|X@yMae7skuc?{HS8maHTK6Xi9zpPlc?06O2>%c3`cI1)u zQCz1!-KGS~2T*Y|woeMZ1L?98rT<vcNld@C7ryPZE)LKgl;N}ONtnRW-bV<3?7Ibo zlj=R_i-d`(RgJSk#XadE;rD*(U@UVAMZ&A7yOUwHk{O_Ct*q-BidZ__hE1aEk%LmU z6?J&3nTC*UAQYjvz~&#ArBIyEQnw$kgJE*+_9;m_LxxTr&Z%h00LJLT_>y~+4a6FV z8>~NiVQ8i~M*Z`$&1-IZkG68}d#*b^tqO*#_3@VaLHRZ}>#dPo{yqvWV)m}I+pyw` z$9;jo<{Y=$YWo;-Jd*WJ*ei89bde#$XdlFt|5)CvFp`ISz(BuwU$(|yW`@`SUWikV zJXPeuz-SU&&q=+i0jf9fwp(fE0d|-U#~LPq$Igb5!6KaoKS@t<tPjS?Yn=R$0>i3Z z#7KPgLNqaQ6#G^#QWI?!6qL13|Jzz5ZS;+d%wMZN#4E^ODC>q5jt~^Z8eLZ2;!E_U zui1APlvwB2Mh^R1R2e%@dbGmW7^8$P{A(yHLuKRd7fNvHffBkgPx}D;VM^vZ(&Yo3 zsIyG&sGZpu4n<quE=mD<EwCwDZ%TN|ky>@)H#$YWuc#`fa|#JgIy0wvLLC8(nM<W6 zc6mgyepa)qS!m%o?`xOcJs4)Q!vk50neIa`=I@G4XWL{QlGm!!^Z}C#pV=MYi0cs^ zlD_MYA9!;v;LxkXWo89dW`+P3;mu=B@<-eGy#TdTYH&e3jP>&BfJVfH(PbvT%}IHY zy=MxBB&hIS+%s<XBDkf+?X{Mnz%2=_F5anq9yBOKB;}$pqaF;Q^EFjkQNZ5Ym)b}) zHK>y?B6H3`ki_1yAXeZ9d08AE>#u`mo81q*_O`55pm_z%k)7N;J}}7#=*Z!1665Tc zabUT>D+d9UPX1-?P$jAa;csNV5Ks<=^y8%N&)C;bu@B7#$($nIp9bMy))gCFyaRvA z$l@eZkYk2A1)$lEwl~y^TuqG0&PJ3mCrhZh!=fE!Upr9-DHS!NLF@{j6r18#^-sjj z8S39L0prxN_mH5|xnK&EwCNz6sN5~dU`!-aMEf1%)=wQ8!uv>zq_d42hqZrO6hRj| z4{2|$<Jpc<lEfvDx$^aEyYA;9?jdtO2|e6=%K8|v9F!T;=kusBhP%vs%|f4!B1YYR zR(Dv1OXMLI(Lg{}Cm?9wuI$+QvuAnv?g5jFK#W3drSg6|x-28E^Bpg%H5=yF&Ayn( z_zxQ@irExA`CXcwHaiGLOK*E2$88}(RIO0q*@ddR`&uIurWow+>~1K;lj3g%gkVxq zQy~(PRd71{PzjmV79GA%bMqmc>PfH$Bn`&MHa`*JAB3p>v|fmrNP6aKg9aOioEfto zfWFC=u3Z`0l=H4ndT$)RTyW6uUg@ew3`D;~vn2jMNQG=M1(AAJES^?^zO<D55tKg3 zE*>m3Cdz)cip)d-XAuhFU9ttUY36L1)QdkOB0#c`7Vz&)F0$ev90GgJ%Nz0t<cL+f z8YMVU{>D|zo#Wdyl^abcwrVhDVk;F#0pf|yT^ku=do#b>t-7kpj-OxUPc)(E7N4*3 zD28ZSj(h)ZW{LDvaj^tVX@SSxth$~Vke8>~d}X8DNB--jCST_l(q|c5aC3Q^PrrS2 z9i0*<%e_8Yw@J`XV*6Bo!tTvKnIEMb=wJprpIt4i)80r)*+0Qt^^(;wj)lik0y0)I zVFD(fZO&w}nvqjd5-?}9-$I%5P6)T4?aDvB808uFu>6s|p)=7(Ko1LH({#tNxL=C% z5HHEr${$dBBZJP6oiLc5(Rp7Do7!CGHU^vZ-f18RdR#jlDjiIocdZ_Xk@OF;*=;*{ z&l}qXm8dCwGgT!&UT!O7N6R_R0g4W{I%ZcNey*D}0hxkkI8uK8++o-=&4ezGa?~&? z{Ow;@T7S&ySM$IVL~|#@xQut<U=PUGB2nP39F}3}V~-kOk;Sspd|}Mfk~Aner(2Rz z*6G`&O3&TfU7XcxU12T(Nwqs{LwvBrxCJ=;eD<{OO*__X?gw&H6{O%1;F!Y*a_o}L z2O?9QI5~Nt<D8>ZLBhi5N0n%)-sC*<%IzPxZh6EQ5k<wBcMbgTK56LRRO@FE!(unD zav>smly*sBDgUO_Q+liRUd-iR#r{>M-}{cceJ&UpH^Br2iZe26_tK%MLG^nJNtg8p znY2n8ZPo7Xc`&RCt0kou0{M9?V-*=c4xg~pvIjd@qCPpc`T%2Z-<ozo=JC?R6mt8Q zsiFBa$)X8ukJBfg{nQ1M9d!bEUJSI)ce_evI(wrkdZ?Hkv1r8VY-n0+945Ec_^YI| z&p-#Cc5Q4%>%HdTDyDEy58pdI(`Z#Nlv@RxuLF`sen^hq7!vSBfICm#ZN3GLPZIt^ z{1lVpuVd-D?vq6=@wS6^cL_w1(N_TS6ctD~DEP?<opY(X&&SZ!^x7Im;7XRhzpnj} zr`_Y?K;^^g3Z8^S50(bf+W@)RZwXVq!R<Io7XdT<`ZJ5Q;n$eXx<=!TA7pY@b(rc8 zj#ZES(QZZMSUKV|z`MVU-Ek=QQJ}*E@2!YgEwme}kCJt0pNs{p3zZCobVYLp?(}vX ziLuq^zO%I-KTNnH#5cx(f=*NZ_L^p*vCw+j3hqW`8|aLHX#IKd{U)y$Q^!UZ@Qp(; zH8EL-Rv#YA#O9u&35}^lxCinT*@ODocROn(9}05d!B4{ugc5sB5O9n4%_-c0#8)e` z$S$4Fc$K$L`@zvN_>*HacmHtljA`7YN9!9R)1&xk=g_qN=iKevbKa(Bv(#RW&<z9M zm&?VmHFVu{ql(T7QdBtB9*};CG+ZWn{7hhi(36>oZqist(Qz4YDW5^E7S`Pw+v&Hn zdipG_TSz_zl!C|!{v%fOt7yBtz);9KyCbI=+Hmk}m>6mDD1u)B$*G)GzrBB0la_YT zJBNl$VGL}64N|DLw<j<nv9rQ096oWzrnJzAdHGBkeEaYe#dq0UzxipHb?;&}r1%>u z&g##~;qHt+JFlkKXb4|bqo2A45mzk^?hoAR(O3Kn0Pf0Zc9V2+x)*zj3sNF(bJQLr z_O~O}-yP8(cbJg*#n?CRB)z`urv9YVTmgbBxeRlcY~2{$b5-?~*t-RTP>4(Zk9g>! z9nrY+8)L&$TLSP;f2XC1Z4;rpkP>ma!@dF!E;nhMA(-(Pgl6xr`kZ~8FJL?h9iJSW zNuvv^02&YlZnj<!=xCZWD0h+j1Iq@adxpOcYof1jVKzp?OF}tr;rLB%)c>w#Ikd|D zOr&e*SVfd7D9wm<U$onodCx{#W>bkPqw)8)6VI8oa{ful3SX_VEexnx+n@amdW%|) z-Ys1%{B`kJ&M$bmVRv(-Mhd^@S6H6|j>=`X18nx>Cs+^pP^;M)R8cetCxfa*^cpSt zuwN@IwyKq^EPfUBr0C@9)Nm&>p}AvrYl%u7;UQLymyL$X?3&t0#8zaY?@fNU;9&f7 zWp#1%!`y&y@P6sbEr&4(&GS$^n9)n)Q%cX*&b%64Q?@0mbjR`yieMJdA%otZR84(7 z0bHuf*sT;Lf3ox8k=5C6xnHI7p)FGN#3?L@#)(XwlE7rsizC+$^=fY6vlv#0D1auG z((ZGfIq&iEY-XWMoSdD2KG_+glU2)$EV^`&)A(NIP`o@%;0VFoAA&A`pfQJsr>Ap_ zBJ63G=ral;IgZv%ZSW~2Ny`tIn5i*|0e)!CM1D^NAbF>C{;Bg`r%y9BZ+0Ywd`W~L zw>3%1bwuKycVr&ytCc;q__?stAb*MTL(Wi7DZPa9{B-`svd$k{??h>-&7S)5MZcI4 z;CnK>6}mTO-EJ=C4%-TM+<!_%LmfbG+02u&>RbGn+`kU0$d}xcX8|`EOcb?M1p;HU z^%aXmJ!!~$in&(6jL4dijaz;Qbwtb5sV)VHWtn&iQL>SrBBbe-^Adf&e`W6tcMsb( zqiRU09OXpZ1@#IP($LGomN!KTL7EePEEcn&$V_gI^CF7U6qQ^%9xS<?hFFDpnA=47 zSH|8fU?#1x!#-qgqxxNsw#6PK03jbkFQ$7y&cpsR{NF___(t~vc-KJq-e@-!h>ug^ zC?B#!Mq@|J;ql1fKnPCq-<1r!fPY{IuPL*fpLN;DDFx_=XmdO3OaHAh2IPoO1iR^C ziSC&%@oM%BrloS5)G~5x^yc}=8$G>{);5k879^;xFnn_#l0*Z<T*h%3@Hs+l%wuOc zCM(8>owU|W_=})5tZ|+wQYKtbyH;FiSJBBYU-W7JO1i~6RGe8g3z9Zyj@*l*j0Ba3 zKS!%}YuVNW|1*#bBJf@8t86*&v9Zr_sN@f}Kq8$%E?b9uZRyu*(fQUfEgvFr*$?3s z%?Ik}n!=_=ciY;|W_R6lppP9#`mpG4ZDbJ|5x<js6m(C2IL<}kP3~J;sk0oBxHuC9 z0|EHW(~al2vG7=L+0ZuR(&JkVNSFr#i<p|Ya<vANOVsUX8hP0|lvG@t;pG7ERRy2H zDIiE%7f+F6zig{f^X;IO2S`4tQeHtYUr$Id8i*VPHMMIkfpO^obcyK3vi-8Z9MXHc zbZyqGqo~}QmG*8!0nX@Hxs1&3P2qDfekY6*n2kEcs)~u^9js7&`IW|C$af*+VEXGA zzAga=nIo^+I@!K}9h_Ld-P7d1;2nb~Y1=ZPXPC*>0YP<84z`1;Ypg|CUdAZ~O^vTf zHD7_8PK^8+29<{Zf)p5G`dNu$?h?~a1##|u!>@zFXEsH?Z0w(RTm@~#mL--I0J>8I zBDsyk0P@xPdI9$sUH>PG#hnT#bZ4d)<oq$m0x^+0z0;Wg9BrZ1W+{mHdDn#O_p=#f zQ)=*Ts-+I3e~6mV@M}naA=-dFS6GPp#nny2Ua`=?@Y)3Mkhcv;G+QBb#(l$?lsuPh zM=9T%VK^>mBZ8V%FTyhggg((UGl7N};p9#fK9OVPF43k@9xRqkl9nr9PY-**Yv!;G zG^Ld$<8M$^;rxR6P_mNU&r}fn6V^}*>sJ<e3Q*DMCDDr}+^2!&s-o-|p!~7t_q+G~ zI+0^n;KKl_v=);zOo4D0@5x6t^sZSuSPd7p<>B7(4+27+M6F2J<%#1c4>)j?T7{w! z-5GnasWNpO9JFf8(|OU%sAp=Sl}&l~J`cO|0RM*7sCd;uz-a|bJbK{pEKo~dO<&X9 zgB7FGj;CEeCuykVC-xd%>(2N+>D7jl()A{uZ!@6bTd5f^m}jpCQrK(s^gc0`ejn}4 zK(31IZTHDbBov=L&2URfV(wM3k$9JLxJiK}0Ok0GXoIww!Mli}gOf3#;DcoR`sU5# z3cZX~G>`?eE325W2^Ah(;rVJ`W`TQ97kL`7`Fx|!X`v$|E2$sigUZnK<}&<*9BfE8 zB?`EFlp4tzwDH=-i2l4h-f@ge=daJPhpw2tyZ4!wl;pw48}Y<(XukaBocxx|hNZ_H zs!+M54DASjM5O+8&~%y+it&DynPuNDC6FfGbce`*ackNcX{anN6>FFLOXMD#ncgQ( z1F3ykx8@9FwVATDdzWtXmzz>2FfnZ4(+<!(h6u9B6NUl9=G>&uqfbS8r(3sA(Rrs@ z0T8^K^+yC|i+{$f5ZdTh!W#Yr*o<vC8q*@(Z#v3r%2f@hesJPgtfmv$b0AgM@jkP` zMMO>ey`P?q|2!=+(S$7^8$P5f>5O@p9{EN3Yh?eOL!!To9VLm-InW=a@voCnelI{w zOqD`7o*)r)k{K?hR0hmVZb6tVBv2_W$-l%c(_AcxJRQNlTj6<HCodNmnr<)<I^V23 zf+j3wge&Z$=7?z-i&2huhnB=FBXof_Q~FTK=~?b0RU@n(W`4~yx^onMxQ_I2Xl%Pc z<uX6b^2g{&{{#6A_ihNC-!K8caSQ;cN!M|{WY280xSm?z;vY4*VDGP#EdkPVZP#*U z_+9ud@MM48%h7dp5#mE%dIAVQfAGz43W5!6llKj;^Y}&5FoEUKmbx2^{2HnvSEbe- zfV|3jevx|4y0Ej71fQ>mXuW$tzPW-DZnDCnwF(;CI*#_Rnf^mywHp3!=>rJgDNC1f zY^^_&mg&^eq$cG<K^L%>6i8-*pN9n?>~V+XcC<j6B*1x*{k$Hw2rM@Z(oM5!!9a-u z(%=?c`K&uXrN|-aO$t4nh=lZ#o9?Z-^F3d%N#1?&>Y$i}Cm%^r&M^*SwJk76e<B6e zWCYfvv2H!4p;sJdZgb`GS_06W2a{fRsf0iGqDyZ!RU_z^^3hZ`xJ6ATe|CvKX7iY4 zjU)J>{_W+rjbp6~T%4!_4~8De9sO9x-jDDF!NAU9Sb{G2+vs!2t`SnhZ?(rS31>h= zr@nJ~1d0wR2Rt#TS$R8F@AZJka2D`pdpwve!BXvAY+sjX8^ny6U;sSyDT1}>&)OtT zEC2mi`M0f9IEJPJA&;NV)y!RM`5YXMq4*7;++8DnrG=C9wi0j6YWzuNk+qfbX33a$ z`5h}Urk9_bFe3l=Bvku?Ov~Ys3N*0DEp+d&0_IX*d_N>>zif_6AXq2N;JEVp`I`^n zW01=MWw_MeNUURwAOH|hy3v=1WzyP2`_pv4jy<*a1;)qygzTSBsCU6}0R*!O>0P?D zO0~H2Zbr2(pL70se+f4=HBn)DMm*cP`j;Q?4xRnGM$~wLv_M6mrd16sCulMManqni zhBi9G&f;@;Zx;VzF?8kx&!4vy91PBz)V{dG3x)pRhv#9tC^K;Sk2_BZleSovKsbT8 zhG1KgN=@ijMER3(m0~P{oR@?o@wxUr%AdBsbYU~A{TQN&6b2>Uwd?OmVo&Ke#MA$V z=>O)dnc9{6g9kZ)7g*p3B2fp_csyS*8C^wSFmPO@MVfHvvI<T!@4jNrrWP3HfMW@@ zKsAs)-m$+}XdM7S-`na#wWYSz3aAo3VM09v@TUPA^YbKQ)?JEZw-6m_^Ow#M+UE}@ zy}Z)i?TzQqy&t95^jng=X;L+pT!55uwTZ=`H||)h79wIwImV(*@SWdyZdw)@NAcGn zhf`GBu|HJcgE%WD>9BsU4?Y1};!8e?nu-qSCF)0Dpe#UXBzV?Z^!FTx_92TMiXd~= zgv*=Ec9g!2VdoXN#Tq|aCsg8p(5O?f2o3Mlu{qrN8F05e-b4N$8vy4dzpUvd&02zo z<<>lxgI|Y72Cle&GV2SdLf2u94=*$|!nvZrjA|N0=dn_fO0Lfs_@*Fn2d&FVbYr5K zb2tz2<N-RWWtc8Lzgp`UB1(2VK%w0~tUa;eQysFQ-CWbQi4A3?9U%`O-iu}b(M|lL zzH|DmZSmT)c06m3&`#y9pLY4Dx?TCwdwu)?4SZKk^;#$>Lff_Py9$fS?NXsVzxdn3 z$7o)T#9ADTrMtVERtI1qR1`0R2+CFQc1%&S{s!KsSo3=yY#w*Iyc+|y&VA3C;dtw_ zZ13prUEM>>FM;=Lj@oCTiz3zX855dy?4a5g)d}Qn!xn!>O9kVMsh<ZjEbQoce4pYU z$JrjlNAdH|Zx8*$94`B>N&KQ<a~LVQ>y~Vn<}LMaEI1hhh+Q}Qy{bQR3_6dsgs;IF zvH*6&NkrKwX_p#*j>Np@xrD~`g?&YD5zIr1VsU1MrR7`XR#q=d@C<Q>o2a|mNNP@^ zbDpykoPCZ9EENV^k80=jh3f8+lR0uhZbE1(-mzhdZ6PrZ23&bz_{-b!*P<T~@%KCW z;N|@LDM}K(lB@oTGTsKgdnW{yCp!c(nZQ{Wi?q$#yPQY!t8$oMM??=%aJvd$6&)`X z>A_B3Mau1H4mtVhA75D=SxB;Wo%I&Bk=)eD^##1^<4o=^<c!^tt-RcC;O;c=>36bm z93&$XKwx<F2>G!%qY0c(5S>zZm`CR>QQQ$*5l-CID4*fF8`vurlYB{yS=g$t06$A( zj~;~iZA69?xoXKlp0QK1%${}zgQX2ss^+e5n}>JYo;~0`>NsO|xm>8RquKO~8|NyD zOMC7{(E^-h(^5Z@umqIxZ_#oL>P!qC>jRhbNXZmV5kt7EKzS1Buw1dU0?X5WcHR$_ zAsw%v6l-^Zpd8dc--~QGWVYmM1OG8%iX_%+kEUdH4G~j#g-AKcMc_fE%Y)k3*c%j2 zO!+&~wV5HWQz@@If;Ac*PxmCZo2OBW4~Pj3@JN5OqBA3fB;c>)os{E0)}Fi^V_xI& zXgn>0bkD@74|mPqbDzCsQ+M6|5r43i3Ju)!j11O;8D+E@z27ITVg7e<0;uygC%*&0 z>kVaJToSbpR8*V2xW5M<_TKN2jH2LL<P1_Rnts^k0d3UYSLm-PwxFucw591D3wK+= zfz7f+8;vd3vnd$XBYd=SRR6f}jH}V742uGYqeYfHyq^bLE14_zG~ky>e6AZIlCnB* zI`vIfuO@zrwsRwQt`nl$0-GHFOxU_stlK{8SNg_R(l<8zB)$E`y!$wGupgf<*tkgR z)8H}+bBp}HrvxKE#BN6o3F2-(8Gr64olLoRon4?Etz<@RC%Af7OAMJWp^}J0v<R@B zfyF<Q<qm7+VQ6vf`QVbY5<AH?)I~{^5;SR|L+8))Lj3wc)_!pP43uKbs+s=bkmc;> zJ(Sv)k%#~e+ARGq1^9ExozH0uq=tBscdp;KZg;U_G_(|V#lJ2M{34*pU$5-9HJHx5 z%qnC$$A?+}x)0HVti0l7>;(Hy|Gvse-iKUvm@dxlplMZw79U0Qh*~XQUi)-Ig|l3C zxhnR-9Bzt34M*SJ0{;FiE6T{QO@0*5FzdzIq(yl5=FZvWY783t)gL{14kDWAO3_oT z`A9<l+uT#V;pY{`w~e*-_yrHRkyH^TZ=&XzlVSMg%AYgWeK@UV{UD2u=*N9KcveK1 z9j%BC`^TQNt}*8!)e+5ryN^zvD%sDhR^J~o?{f<G`!4u97{JjKT{U^jY6Dj?#|)l% zG5mS?%{Te|{b#eo9VnHB84eoG>zxF~G1YM&kFkTi4IHCc<R#!FqoXD*9c--S09#W) zD$CZwe;Vx($W(s~A!RQvuQ_n-i+}a%off%RE%Q5I$(P}CQVp&Dp~6TE_Q4;h7)mJ9 zA<_7Yzx5#43xvvwuSKb`Sa2td4-XuGr_4=))|FgYJ8+=5Kt-J%pGZ$`{<SiHUtidn zg@oj}xnaK1n6rgea+rept+Tn^SUn;FNkY=Jxu3b|Oc$@|vKH&!V$H1SPZHOzI^UQz zk%)DX+cT>U`C26|<h#4_wiodD??w8FT+4J04NvRV3~21!5iOHpDEY+@COO<HyvngW zSJEf(&$sSuo3}CH$u^;hf%q@JZu?nrUa>ypRdia%YG_UM%BrvZ$|e(h>LC{u-p9g% zxOOtL`~O$gSqA0NY>OI#1Pu-e?(XjH8eD=UxVy{XZo&Nx4#9(aaCdoecXyY|-uHax z?0atiTB~dIbk$T%*DUF0=`K@ECODZmIny7nMaJ4K%4Tr0v2ZHS39@l>kmXVyMMY*e zU|Vq<8jE}>kKV=8a+R8!00#U0Q@vjXpdH2PzYZ(w=6T($+V9u}ob=Tj!LX>(!qAEw zox9(TAx5vu-BB4OjcM-1%-*T?v>sKta}GB*H}kumVL#lOmycU~Cz1o_FT1kGy7|+Y z<(;TUEjuI_e&tUw8p-vGHssY!=I)^y!;LdhIr5uxFQ~N0g2=_@1GLXOf`>*WlvVGC z2N~3GU0&^Pp6VUo@&do$KegA#emQ>rT5P<iTUhJA_aTT?Qd*m#H_aLHB>zUfylz>z z*>5>^jZ^t0jmJGbyzfY__^H<K^tIP?6b=3Tf)9(r90en<4#`5KEN_ok4U>I;KByuk z;VIH|)hZrkjRWWG3~2CuQv@x5#vh}?e_r^`!Fk>5T6s=YPtxoCUc*9Y9=fyx1!Nl9 zn@TK2gHvN=ULdw~(Gw*lBupA8Q}GqvvKd!insA4uaE&{Tb1Ch;I6v2Si|BXEdm_Hp z7ic_ZFH~imuZ57J&YD80{K<mPf6855N@m~H)v9^z(eS@x0VHTXu^&#F5n0wf!llIq zA^f4v|NOd*FhP=h5g~JpWw^Be?NaIs>MLJcCpSUVYn37s7d<KJnXSY3zO%nd6@>Kz zFHIj^|M;eOeJFpv+E|Apo>x}4WhQhAO01^;Rjs>Nf`T28MUi_AiR^g&jqgyK{F0^g zkclv35Qlhos0$d;RO4I~?JmJoQ|qvJIUnG;+TQo>Fibuc>ou2Hc1JF479bGUHW&$@ zZ$II*f}gaQhLwaOHQ^|6B}JY=64#ob>5{8to<^xlMiQWVsbf<iBo;LPq3L;Wgwu~j z&A+36GDAypx3<`NhNDk%@?e?k$R6lC&qq`8bb29a@)amR+MwB}r{sn7ee!Vah0;sw z*s7yXe6W$kJF#YELZ4gR{xeHbUs6}UOn?PD1#F97yO|(Zbo-J#OV=oi>I?AMhrQr@ z%7Pd6bEc-F$r{At<fWH^^xoln;P);ub(pLo6>k~q`y*eOM&AtrzxC}+r%ec5eIW}v znqA1ZGzZjq7c{=OagiI`In+TacYNB=q+RC%Z$FkN8)&)nav2vtD<g04y>L~?kou_) z?<1b5?{hLzb>f>IT1&LSbA_Gi=hg>@!?1p|o`{FlF8Rv7Oke+zuU!u*krH~vXdVL7 zTRd`_9n@<tj8vpwgSS?t5ya*hq4_uT$>+_(WeU*$EvB0b9(hl5@2TRK)z7J%rpy_5 zJ?^@;3L3@}zZCVTvuZL{NP+XZagK@Y?rG5XN_X?WL{2prfX&C<$uHG)eE47NTu+7W z&3>}V>W7&=WEXUGzEm3pj3nvtVNiBkbbEMsRF2+oe|aVHJLKErc`_<@|Czf{IBxF| ziU73qz8-<k$ElX%R+3{D`IJv4dQo{^_UqOL!<LV5zC~LZxbU}6+9PaIeg2N3#WA;e zSaTnenO)u!4tmj=2(fku7vA(Z)tRbOUM!*ZnNzaxobZMaG&s+k?F>g;qj~zBFgc&# zDtZ}Wb0;5qvfIy6f%-T8kC4=iKgRYS)k)wWVC=W@WMxHxA+~#Ee}yt<es-^>%ht}y zbau2-&P6+55H#qMYPE>->An0z3K5~7EVmBwtH^3=^%4(1ldV;Q{>y;O<PnIbAS<(} zivT$nQ5*`pNs4*g^z^vHGr8J=5{;hU#Nd+<{P@H@g>%EXsA$Oww&$rQ{l#ZLL{R|u z5b>?mHrwfshPO$H`*-DzUq1I|d2dPV{iaM{24x@Ls0g&wx4J(g<T#}e1_(~h89r8< z>OaIG9bfv8k1G+6RcC&!uGj}<(BY&|4Y}0vhds1E!hAWcwt9hsC&JJ6M6DE~wkcet zXn}<7n_^ixj^t&PK*?(tBN;{d_Amr|1gS$2R#U5AqK^87bxFdzZ|CL0`kXEH?A6%Q zB5OV{IxyYR=k|{3?oEsBk_K{i&|SJj%vNUYoeByv49>5-)p~=VXBsuW406(@WZ@p= zT22PFn_<u^OHkDo>KT#9d}ne~>F=S5YF&DQ3ktps=$Dl*G(LxtE!3R+#OMOVuNhq5 zn1!3Mgcr9A5{~zBT91W5EfvWe-R5@MKb(9moKKxVdT9xf_&8acHo9qV9bbMK281ls zacFR#TYWQe$lmqZ(9Or2QTb%dN!@eaQ1g~rDBt3GBGoDMrz1u-FcGKp)Y7Lye^eGZ zU!bHs)@)vu5AAC6<+Og!CFKyn&%0Rw&35&6({Zmn*x$61JZhpny$SWX)1R9Vhz0cI zeC)`SZ8N(Vm<L=Iqp@hIhHECunL%PYb)labLOZ|}wQr%KtMwhnGZUWoa1Y<9*-YtX z`TPF}^|tNn-Ny9Jndi+?6u45nC@d1o=J|YI6~M(N#O1x@3s<my!fOGDu9_Mv1)<O{ z&MoU%8V1fDgRAy_HeHD($u#b4D*4{F+Q%hz>43QOV`NXCaEUNe)j0Q29vITzqoq$X z`S}Cmy&g{NLWfFO<(IbsLRM~E{dzw|&~aBkYc4ee<mS%w|9V)zBMOmx#e54!n1v0Z ztL(KuF#3HEm)#i1#p?o?@I?J_jckvwVC=A*KLDi*Bqw#g5z1Mee}MPa>U~u5Y#igH zee-G8JMG|i)?b?4Im){>F+bYGf2)WyFW&)h(8EiIO{9(CKnTJ?t>gH_4e@mv6|<Vf z*L>OVtt444e_m3|g4Rv<3USy{ux4wx%-C*GVmMi<t74RJhJOP$B-ms;m1SjGT!!xA z;*Ku0Lo#KS_vxJQoJ2_Cr|zv})s78;vY7Tu$@ryA2-q^a<gsA3v2Hq*hv6kcTwmfH zW<n}U$cu&1Pp5{p4P=px{3JNTKMRiNeivoc5U@e?Ztv}w_=rFpi$JT~zY;w%FE!@H z9t;LDjr%mX76}50QHr9^+4NC6ZC_{$T6%vFyc9(ZfbqC_3>NSnfwhlo`WKD*0@;;L zURh+k<U<%M7%fyZG-<KvH-a^jpLwcgDohl@@ZO!0EcT+{9%PsSyti*I`AeVXiO0$} z@p2eAL|1YUFG9)#?sT{`7vX5tjST&KsC=kyq;;gtoS6X)P3vuexXQz=Z~}RG`H;m* zVco7Q%{Atdp<eco%h>dUni44?N9H*(nlR12rB!vA9faQRJD3$x4kfW9$ua6IjjO4z z*$V6Q9)5LShvo}>aWh$<uLKAHVP2En5kyyG@2!mHZMK$~gK|oYB(C%|P5B1dF4d{4 zj^DAg&W8XQY2KP`5?DxJ6Bcf7@Y}T4wl0iRHssR<J1|+?XC_tD-n9?9zL$32A-97j z<?}Lhs?3%U2QeZ-yhWG8XSG*vqEv-k_!-5`!%VyP>Za^}RYF>t=a`H&ngMdgG%k~0 z{NeKUhZlHTnhyGdQSd$}QBt~+YeJgT5L&<m2?2QAh2Ju{VF@U9oVG}`6@u&&*xO*J z(4zZkif60zew&!@OmwEX3MVj-_H43!=2<Gzu~K*L6xK;CJEM3hIdn>RQMl}F<5z=3 zD}N@<+E<!^zc$fP7u#2gxy9EejEokEv7yhZ<Y|J%C08JCfSg@4h7&hi)=HZj07;qw ze}E0)>)_2BhI>wg(OAxsC7({$9VtaOzfUlbc}m<QGn&9gKs>kUHvIEn&kfTh__;5q z6+xIO?yR+KKPjB8gZpo1qVAkE_bqNjy1olIj<JFcf7{>?dNUew;eDTmh`&H@h0c`7 zxi!m5MhLjY;wmxtk^a{3SWGV}Sk8<{E(Acgdvopqc;2%D6e`2NSL3a3`pNPKIV^pQ zh)31cpQD`ku4bfPZ;V@VHT=@t7a4Q{EU^*&1fYLuzcfi{pQ*V<|G){Kyj=+w*7R>m z9?YaYw(!&Ih*0zo3X>h6)ET|)@Qe(>hgBpd68|eL%j4Q8a%_iAw0KQvi>lk0M+U^K zN{~0PB}TTk{(5S3D8u;d*GTZUjmK)#XA33I<!(N2mqpclanKhuWTs#WvWhJXd%WC< zMC7-gd{j~veMK#0<aqLs9Xjx|j<KGRPAK(w3(;rWaOB3p0;v;C3KyW=sqc_E-mM9F zKggEzb|=R2I+&Cl7mZ#nOk(Ppumec@PR@=Qf?s9jY!KHN9t_S0c`*o=FJs3)Uv_u} z|Dfk%xWXdmwAA<fya+3hYFPPZdD4Vf>C3Bc!38yVf4LJ*Dto7{%|QEFlH1C*3RV3L zVsUDHg}j+$-msZSGE0>qQzY`te_%eXV5aq{x}iRL0H;MnNz}ZN<%iJ^L{C7oZClZC zi_>Q4vYr$k0x|byN992uJ_o}Lc3ZD-&cOIg3YYC+r*|+JUH}QRa0r<)p3?i~o?xTj z{}k52yQGG!(-F*VwWaU_{~WPTcxiaJlx=5;It0kr@ft4Cwv(b;U}j~Fe~*MTs7!Ve zeri7J!sRNArnl5OJ}83@&H+j`SX?eoLXtoHWY1^lR<K%UBXmIOesZY9VIu5VU~kuY zPz==4L7Ot=;nT_IEnP7?SKeWG@V?JFZRy`&H3>#bsi6N=UwLc!Sk^waDl-8F!6nO@ z!rg<B;9IFh*U&`Sa*S4y2vZgZU}HdLPfnxIzfn|&-@tdy>IL+tlR)ILn~!IZScIU# ze2PGAE&^@Y3Q=bc^n8G7>uzt0^>jLOF%-=&X|x-o%mN+7(F(pJTJe6-#h_P%{F*MG zctd^Y33!&ixp~A#Dy8gazLGbY?N=dMtm<mn67v)TTvHVb4*koWC9YdVyc|?vmrO4r z388W#^&>SnQ&hwGMnKi*H6l&awgodV*;JzKQbA*W+qlM!r!pZnG5yplR(`d_n9dMw zioVMPO;p*9L5oPjYZ9USleKx<Br4nCU;CD3O<WG>U0*}0l7qo@mv*sHt7<L4O85;7 z%PQgIuhD=t{h(gKq^MlyG<w?a-K~~1G<mXP&I-$cO*^D21js8BzjS#1F(R4F#4*RQ zMBY=24{AQKkQ+aVl5nWgp)QC{b#+#*MWx^^Va0pUCFoL|n?4D?S><YNej?P%ZR)l; zzLIUy!nLheGVv%NhU824)cD@85;iIzIQ%gK)JTSkJVEMHT;<=l-1UvrK(w!Aqaf@9 z|M)TN1q^R=IDmzQ9F~<`tbE7XH;xALvWDCGwg)4d1TMkybkJ{2R0k05*eR_|b}R6+ z#45wxB&}c9QfQWn${E54T7mpWDd+wyA=>M*vY#6S7b-Z5=t^}oy6ytt^=(Br;@pMf zz8oWSHT!YT+$g-ilr&HER=y4`eH^UUBUf>#NR;&&K*PTMHFp`Id31UwhchdC`(p+9 z#|cgWqQU#4mgW`=Le8HPQ|O<=>Uw{WD|S%GHfY=}ToI?c@bUB06TgBgXBK!PV)#97 z=}BL<-HoVQ1-A^1WTYxgb>DK2f23#XT~Q5|wF(}xUuTf_b#~8{rWi~^A3p_lfz<T` z<c}z@fjWQozf_LCQldSdzXaaWGVnTkE-dQ2T_R36Cp~jj+_izyih6MV6ja~lbM@7Q zFd(Mg2892m=|wHJ%~Oqpl9cYT8X%cU)wM*Ohs<mke6oaJgC;{nK$v3G8=X#2QK3%s z&l&FZ$6T>^X<GiQvG7)Oy6cd(xWrtgFZ}^O0k{t<g&ex==&jHu{p@{3qEP#D|M4(2 zXL}_+3;exdZtzD{fyx0$XpDnX=N?Sw3?{tC2oiwR3gXPdlQ_G2kZBUuV|&BqL@GO9 zS_?`=o}v!IVC`@c7WUBNv}nbKVhV~O|Hvl3ntVh*prKx^W?*s~xB&~VI=efQwIROC z45U}pxnFhalMbk50N;qY4o@{cSU0NG-TS)l_DwvXDXE%z`^chZ&BIVQ#ikES!a9}- z{~UF!hlCE(77|(tXNAStUT##{z8n{RDj%e^c-UwGs}ou<T{RseB3|FIRxr8#aL>}{ z?bq8wJndnw6P6$xBdb)Vf9Kp$Hmmo<1C<pK7WZq)EYhLsDj3-ok{{h3Q;GRpYJI(X z!k?T&DQXU?<(}c3h%gJXFPR8}T>~YHX6BrX1m#C~9zOqG<R}|@z;f@+j9PrzDp$;n z-gs`<?yYA_0~T%7mD2R@CIgCVsU!wXDNRLLE<7b;LN^`T6xndNHhU;p52pGM01P~- zC4tO{H85Ycu=61cBv$*ix@`%RVDb<Y-K}K2bvLfDF{p4r;AKzZZ;?_85cETiOUQWl zk+GJN^YL@`38T$RebX$*OZlR~j$Of<pcHIqM_Zq%W#Y$k_I<-xy;PBIbRU!t8xv>t z_zJyu8KNVlu)ZF+gXJ@xH{G?BfcR?o@uj(mN$@%z@3ylQ((SZUW+h1EE6!#;S2;@a zz_3@qC((@Bey?YF(uhpDC~7*%I7H9O3D-X=DtI+4j}IOnFgzyNF|CNj#Ix<Xi9u`i z2lu9}?1}}eW9sIfFm`s!>3YvsW*v7baoIb!TkXb-NwKBa#x7SbLajfy0V*k<h9aGw zX43Hp%k*o5Qw4Ri)`$yPRi>12#6Hg%d!b+;Hk{qm=h`jahh^n_4c)8MNGD$7J%JCA zuhOt{I5R_?s2aGeU0Rui$5I`hZ{GW&BTY@yfQzETbaB_Uq+2f-E8MnHKsZFFHB<qk zOYm4Tz1*GKW}-6mVF@7@h>1!k&zmR|%tm;zc3ip8ia|Rq;q*tVKg^4ni-_j!_M`Bt z)fbnH|8o;J+TV|X0;zklAo5o>vixmWGe_@vpCiL{mX+%&c8S#H{H$NIflFG^5ATNw z)aY3E0qpF@W<I%ygex6@#}6D@lfypZ#dg>&;-*6ob=U0@8ZnXw3~BwEA3^35qhBeL zn&=N4cEKRw-7`6%Ic`>fj8h|o!0~8ue5FzdiW2+{ocDY1kpFbT?M%ssj7#C&96UHn zj`eNtk#k?oK6QJgyr9`(vgS`7$p{8PYstAHmVar`xK^ZxT`xM()a)1I9Noe*ry-h@ ziF<OI!EY>oym55`^0G6K2o3C`zV|ogm-Q%~FGUgzxYqRA!r&NbNX5Nehc|<DR9=tc zJ(H>}tQB-#zhOjHz^O&1#)dX6=G9x5LV4)dymHP`*~Ro0bWo2LLoI%b$>3`kz-2se zG#^2b7~4t^eZg@HNN!n+Sq)#F*BGvjL;>SSGC0=?%E`e43}B-n!~!p3K<}!ouyf00 zhGY~HP0@j><WYAT0>$fwrmA}6Y~trf8kD?5@%c(I`tx3&h_yYh?RCDo-AhziVp^{P z-7&eP$_ygk@ts_`U+dso3j7ox=TSs+tRBih%dJ>5y|}Fg1HI84I;o(i_2r8*L<3Wk z`{1=a9M%PJKBSqwnVccr_1fhjeVpX1)zR#quxwHMq~c$r_K_r(MRo8K$+)6kymC?X zp_Yf|w2fzqY@jjo8|T|4C)wjbn9~*+DVFkT`VY)mVxH)6)D@&pEw;kqFz5t$iD+V- z%GbWp-}#j)kEXaR4s(@TT%Ss>PYe-v|7`bj63xf~J7Ce%r?vX7o%&Hd-aa{w5OEO^ z=JPsO&z5jCc~Tq#OTFN!O^L2Rlhh-`jWc?J0JkOe+d^i0v@jn~oSj}=?ELt5XNSm* zSV2rjgc-JVqwXYUGf=nn0w+;XWTP1p%;erN=E>QJBJ&IvdsJ^%6tt8*a8{gtV$Ho_ z64nTSu!6fg3!Ht;T2voVhwFEBuu%ov=AR7#R&pDno|eC0h)|`7EO&x-hx>+FMsanz z{p9&({%n)EJ$J)o6K*N&v*~sa5-gZ@?7iCG<F-%Wh4{UG|J7eD+paNRp?WoIF!PJu zQ~T+~=K*C%!hpKQ_3NhD8I(Rpz47~R9i@O+2&bc7=*`P6)awxM_YMEvFh$Vx-NWTW zZ2Sr(!|2U2?T2XbM?H?`Ql)P`OyksTyJr=#a5<tP10>%4fgIj1#Bb9MAqntVW!0<V zT0dc-=j@kbhxJ$1SH+NsP_@1up1e30TtrsvPhr1*;GJizrg_=nK|EywtLCJ)AV#3d z!6BBND`Z55CV-chSFOX!woUo#y}P-}bpS(G#xVZH*BLA77}z9;%Mqj7?44{X_j@>= z`uTQE`YW21EAT5-G9{H)PL)26v=M)NwlP+gH0G!vYU%U_Ba79(znJh}O>DZai!$@W zgiNKY*nRqL_21-#M}b_PJ(YaR#!6szJuW)wFfI-TT@2a?tz5Io3z(gQ5*v2!K1a_- z3FF=RP`ON*djvxj-xf}tHB`9V$P%&J3L?nAOq~|yzD!OXS9jctj*ff!kybU<V1O&S z;!0)mdlc?60ogXpxwdK21CwiI`bDhr^hVy{ZZ9_MBs)o60q;A!@d%o=w?7cy>F1yL z?5^x|zh1r{vA<FvGr0ay)U<aC9e~yr?jaR0qYd()a4}^_m3{hpB|l!pn^E#<U@W|l z7kxX(yvV?%+Jt!BlFK3Eh0<8hTJU=4cUp$VG3iAvS<|C?Wo}dcfVJ*!*{k6nS&7>k zT_9ryS?8;d^#=?NFJbP156QqOr^UN>PK1r$!Dm9iU6K0y;55;C#E)vH@D2W=cc{)P zdUC6xLwPW>@`i$FD==q>y9P3}s<s<msJhJ~i`Hm?GQ-rxxDbm-!s^{`N3$)JWo!dq z{EbV$`c(1c>^1E?Iu|OWPUjvg;;TDU35CZJDyg!eP-Fv0b$vFxUI)CG1qZu9^tTlZ z$s1q7XM#j-Oyj<i&AW<FedIk7Fz}Az7OLIvS`zSj+afjl&1OcI(&M4aHfNFjfLIhr zvB8$HOU)XS;<PHO?HHEbuenA+qDa)u<&73;kHVDEQ#91O8XeVg_*eRjV?2@ME-UQM z;s@-fc77DaI`?yquMq%@?}TdxkGodf#&2V)eV@WnK6P8F5k50Dj!#hh%RiG`dQ;=* zEV-3V8;~=)UuV{AgXPUEGvb&s4mZ2AK?x3UL~<F%?0U}Y6uHD{KNW1fxKRyVuSG>w zL$zE_843;5D1+WG)w=msQ(Iyf9xP((+<E&s)PFg%^~v`jp2-5E4Zht+C&-&U8rB9U zksjcKtO+08jO5(Mv#I*Gshh#jHhOK$N}<BOemQIG;p(_8ry|68l(~R1JbbO$VbbKD z*b>V7If%Y}fmMEiiZbsUrH{EcR%%|0itxqvZak()CmjKw=T)6?Tmt2Ip#3mXxQx!S zA2wE5HpEGvsq}!q@n2yZ@B@xcJ;&H|NtKGhCBG7?6GYp+r;Pv3qf9sKmtezRQ*vn* z%lj1L>_Gcwp$}MLsrXEM5nV0ILGfq}yr^po6)iJ+%T_4wuDp1U#<VMXF_PBI9y|Q- zqf{kWORJ_AZt^SWSh(10l+(*|?Qq;L1EZ%+QYT8!8HWR&?U;OtlZsCJfPsz1fhYTN zxJA34%MyP-tT<-lN}r?KOyD?n6g_cN3tig2h{@s3qQY2!j8>p1&8G`3XOKIacU(C` zg9yKyi*c2+X42>Py1*fvr0bs)O5YG6&(00!M8l^j#jb<6$5K9Zf6%6lw!i1W;?66+ zD>fSK?+yf*(?XJn^ENhMMUiJ>sWv{0cWt;YdozQg*zMh644qo*!75V4)E^f<-l%5K z3iseMKyV+jOTO$rtggAnf<La#q1=f6*jO7uSR~^779${ljX;90J(hV#N<K<?ep^Of zwTmiHpDO%uZc~hGw@a^!2+EDdtDwuos&<E}8GH(eOn)jOvO&ky4(hh+&YHEpJBU_C z&ZkqxFE|Q{4(qi$n6*i-Qca&*>ueeA;b#?J^Ny1(jP*IStl6eu4gH()GN-*2o(2+f zqn86&cnM8>CkePr>Km~utMA<NnIAhpqT*Z*5wATMkJ;yQG@(0VoV=&4^TgrZsEe=N z${_@X=Jjq7nUGmveiE@L(ew$uNuRHAA#ta~&OH*gT61B-oCxz4^uAQ^`|6HeI-BM; z{7(8EdLk6cq;G@RZRXYyLFly#S@@kjsW$K)i&SeYS?6lY2jA6TrmS*uqK$LQb~#6K z5Ba&3<oj6->x)OCWBj7>8!Tj%*Fu%GtwaEzXcLhIpP-J9pV`s^{k5o2k<H53b&u0l z`v!l}maO-rROC!&2^2^HE*>KC?T7lndAd>oFV)dzu1PXLe&sPN{Lm46H;(`kWk}YS zqf!}{w?pkJ#+oPR)LoAKlh)&&McMqF*$y9_q7yeFq4}b$QMy)~POSeZPq3o8PKzF( z7{3wVuEtnd;YdTBmztvTuZbQDCi|;Br}UmyG>9%=v-h`gYMO)}@1G=IMiPVE8?*$N z_3#RQ@;Ywitxsl4)#DbjtWO<CwcPjW5|Q}2wN{0f@f3OigMBv1Pp1I&SN8;d$x_w^ z1_B(kYVHb*SV5(EEUZUNWTTvWsA0f6m3xJZA$0f*b{3X7T7LYt1Ba2B7@R><_<hwB z!C<jhN07RS3u6VXtQf6uf^<;h!T2$}S;)Q7fhO-quubt!x~%2f7=Pk*EMaw&BC4#j zp%-0Kjc|pe<BoZ#cjXvCtQl2B+_W|-7WWVIAFReULVvqm6kmmwV)&H1MtUTB7A~yz z1UVy?p@Q%{sAar`p0TaM=A9)Nf0H30-+PdilB<%Ke7*+WxdtEMw&-zKN`xRFPDK9U z9Q;GGDN!T@bd;SIxlw&P3_9<#ASibjvxP$^<Tlc+SX1-c+Tpz*6^zTJ;z_Q-peTn> zZr2}CK5Qos;hpjAdX=snNpoHguY*R>9B?u}@1n=Fm&_sDCJMY4xK7Q$qe4-4foqHo z)xSPzG4lF<)a9U{E+`rZ(H|?oLcWU@wnq%lpW5sJpe$(mMTy*7M|d-BPJ$$qvOn*{ z`WO`?+STb~jP6=b3y4))yD%~`>a<L{{|@vPN%4@7s6mk+*+dc92#`+8Vy;;cw3B#? z?$aNHnojK_t`~cL3><Fr+b@#Aa?i2Bed^D#^bw1!ox|i5Dl^S5_iEqum*q8M#uPT) z$Gi9iEIxY1Ihr6Xrj(};OF^#v6;%&>4sNzgg0;C_+*?W5=od~YRhu1k9UqBayAE5+ zUk;|SPxxb)&@R`)vDneW8QWKt)(Fp0fW8P5CBi+=BRh@Cp0gKa9@$#3e?>vmIlKkr z2}@(TQI|}ezSW6ydBi*`;W~opVFe^bI><DEpasFaLpx^@ix;d241WBeTt)SL_!A?< zq%S$4kD7i$&X{`LpL}HRS-bgRxVYvTjOQZ07ilLtlG-*M6XfaVsO%@fJtI$MSR|?l z@Iw0#(@W=`VxBlhF8a}v7>{dCdcky_VA%>Hq#K{`kV17u`=dkVlNIrM3uqg&Tz~EX zTFD~>E2DCUHyYD(tU@ZjG@I^&qH<28hO}fbvz|WLvrA-fNP+S7oSa7|-;82xml1Hp zdF1t&HyxQ>_Vh+)I8?#%dTck9-80(VEwrwy6N|GAYzX_I&;TnW&xbD=7(ZV&Ht!ZE z6<uq;{(b);bf+SIe!tG_jM!xy0^UIbu8^TmuT%QHTnL}Xi+=|&Vn^7Kgcg$-Q=?BH zbqgP+wpCcPA0<^)VriMk=W7U@-(zwa5%bQMqW!3ZNZidpn4r4k{2Jw0)v$`6R!frR zE{FERX>;6OHa}onG6hW=?Ogn{qg#XWJA%rYn`>MC3gdvV%>8xVefYU6v)e&BFcd#5 z!1Q-IiRq9R?fE=h)@wK`Nm#L?8*rnX2LhEq#3DO(HDQF%0YP})@*NUcT)x$<4q^{m zZD;5(3pn6_ENU0o->NEE@xJki*U9<cf7y$tVlXRU?R2jl4FC3x9e-4M6sS+a6YDpR zD=Qxf4_bY|+7Y+D5=Qm`*_=@TVJPB1Sywq*LQipfGn*ODCnMlCi{mJiPKsMdyuZYy z1lRk>7%EqxGItRtg8V%N7_@xI1JJX#XP=jRVdREfaOqCD0mr-9n<7H+YOPi471^~n zB&%`wlobia13Wa5tj$r2A0I6-jryvJETS<oiZb6h0})H2I(g>)fFr}Vi46Ze&2Aa7 zzUu`#@}v%XLDFSNjm`(eaK714vTgb=S|;-rq(aAhZ8j&y3*j4BXlW_YbCHZ^8X9j; z>;LAc7)GBua=nvMM40~9`BH<c8upGY`FE?4gkrUSx``xos^cX*s8Rg`G@(>i`p3vi zUHBidQ(g2Q5ne<5AJOZ5sjUXZf2y_rqpoR4q5WS_7ythtyb`!HsY(B9_CJv?2>+tJ z{P$Q-@YlrFeplbyqWpjSm;bhcm?Zum8q8NY$PbthnD3ANcjFZP|2${k;bH$VpePc~ zHOch;%kDql7t()NK|ov@LqIs0I6GU|nmPT8H}k)D5K(&)lYxYQF#iYvf%X5aG_pvr N*P?<wv;5cW{{cXl*Z%+j -- GitLab