PK gCdata/UT A{RDQux dPK Cbw33data/timed_effects.luaUT Rΰ{Rux d-- ToME - Tales of Maj'Eyal: -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org local Stats = require "engine.interface.ActorStats" local Particles = require "engine.Particles" local Entity = require "engine.Entity" local Chat = require "engine.Chat" local Map = require "engine.Map" local Level = require "engine.Level" newEffect{ name = "STONE_VINE", desc = "Stone Vine", long_desc = function(self, eff) return ("A living stone vine holds the target in place, inflicting %0.1f Physical%s damage per turn."):format(eff.dam, eff.arcanedam and (" and %0.1f Arcane"):format(eff.arcanedam) or "") end, type = "physical", subtype = { earth=true, pin=true }, status = "detrimental", parameters = { dam=10 }, on_gain = function(self, err) return "#Target# is seized by a stone vine.", "+Stone Vine" end, on_lose = function(self, err) return "#Target# is free from the stone vine.", "-Stone Vine" end, activate = function(self, eff) eff.last_x = eff.src.x eff.last_y = eff.src.y eff.tmpid = self:addTemporaryValue("never_move", 1) eff.particle = self:addParticles(Particles.new("stonevine", 1, {tx=eff.src.x-self.x, ty=eff.src.y-self.y})) end, deactivate = function(self, eff) self:removeTemporaryValue("never_move", eff.tmpid) self:removeParticles(eff.particle) end, on_timeout = function(self, eff) local severed = false local src = eff.src or self if core.fov.distance(self.x, self.y, src.x, src.y) >= eff.free or src.dead or not game.level:hasEntity(src) then severed = true end if rng.percent(eff.free_chance) then severed = true end self:removeParticles(eff.particle) eff.particle = self:addParticles(Particles.new("stonevine", 1, {tx=eff.src.x-self.x, ty=eff.src.y-self.y})) if severed then return true else DamageType:get(DamageType.PHYSICAL).projector(src, self.x, self.y, DamageType.PHYSICAL, eff.dam) if eff.arcanedam and src:knowTalent(src.T_ELDRITCH_VINES) then src:incEquilibrium(-src:callTalent(src.T_ELDRITCH_VINES, "getEquilibrium")) src:incMana(src:callTalent(src.T_ELDRITCH_VINES, "getMana")) DamageType:get(DamageType.ARCANE).projector(src, self.x, self.y, DamageType.ARCANE, eff.arcanedam) end end eff.last_x = src.x eff.last_y = src.y end, } newEffect{ name = "DWARVEN_RESILIENCE", image = "talents/dwarf_resilience.png", desc = "Dwarven Resilience", long_desc = function(self, eff) if eff.mid_ac then return ("The target's skin turns to stone, granting %d armour, %d physical save and %d spell save. Also applies %d armour to all non-physical damage."):format(eff.armor, eff.physical, eff.spell, eff.mid_ac) else return ("The target's skin turns to stone, granting %d armour, %d physical save and %d spell save."):format(eff.armor, eff.physical, eff.spell) end end, type = "physical", subtype = { earth=true }, status = "beneficial", parameters = { armor=10, spell=10, physical=10 }, on_gain = function(self, err) return "#Target#'s skin turns to stone." end, on_lose = function(self, err) return "#Target#'s skin returns to normal." end, activate = function(self, eff) eff.aid = self:addTemporaryValue("combat_armor", eff.armor) eff.pid = self:addTemporaryValue("combat_physresist", eff.physical) eff.sid = self:addTemporaryValue("combat_spellresist", eff.spell) if self:knowTalent(self.T_STONE_FORTRESS) then local ac = self:combatArmor() * self:callTalent(self.T_STONE_FORTRESS, "getPercent")/ 100 eff.mid_ac = ac eff.mid = self:addTemporaryValue("flat_damage_armor", {all=ac, [DamageType.PHYSICAL]=-ac}) end end, deactivate = function(self, eff) self:removeTemporaryValue("combat_armor", eff.aid) self:removeTemporaryValue("combat_physresist", eff.pid) self:removeTemporaryValue("combat_spellresist", eff.sid) if eff.mid then self:removeTemporaryValue("flat_damage_armor", eff.mid) end end, } newEffect{ name = "ELDRITCH_STONE", image = "talents/eldritch_stone.png", desc = "Eldritch Stone Shield", long_desc = function(self, eff) return ("The target is surrounded by a stone shield absorbing %d/%d damage. When the shield is removed, it will explode for up to %d (currently %d) Arcane damage in a radius %d."): format(eff.power, eff.max, eff.maxdam, math.min(eff.maxdam, self:getEquilibrium() - self:getMinEquilibrium()), eff.radius) end, type = "magical", subtype = { earth=true, shield=true }, status = "beneficial", parameters = { power=100, radius=3 , maxdam=500}, on_gain = function(self, err) return "#Target# is encased in a stone shield." end, on_lose = function(self, err) return ("The stone shield around #Target# %s"):format(self:getEquilibrium() - self:getMinEquilibrium() > 0 and "explodes!" or "crumbles.") end, on_aegis = function(self, eff, aegis) eff.power = eff.power + eff.max * aegis / 100 if core.shader.active(4) then self:removeParticles(eff.particle) eff.particle = self:addParticles(Particles.new("shader_shield", 1, {size_factor=1.3, img="runicshield_stonewarden"}, {type="runicshield", shieldIntensity=0.2, oscillationSpeed=4, ellipsoidalFactor=1.3, time_factor=5000, auraColor={0x61/255, 0xff/255, 0x6a/255, 1}})) end end, damage_feedback = function(self, eff, src, value) if eff.particle and eff.particle._shader and eff.particle._shader.shad and src and src.x and src.y then local r = -rng.float(0.2, 0.4) local a = math.atan2(src.y - self.y, src.x - self.x) eff.particle._shader:setUniform("impact", {math.cos(a) * r, math.sin(a) * r}) eff.particle._shader:setUniform("impact_tick", core.game.getTime()) end end, activate = function(self, eff) if self:attr("shield_factor") then eff.power = eff.power * (100 + self:attr("shield_factor")) / 100 end if self:attr("shield_dur") then eff.dur = eff.dur + self:attr("shield_dur") end eff.max = eff.power if core.shader.active(4) then eff.particle = self:addParticles(Particles.new("shader_shield", 1, {size_factor=1.3, img="runicshield_stonewarden"}, {type="runicshield", shieldIntensity=0.2, oscillationSpeed=4, ellipsoidalFactor=1.3, time_factor=9000, auraColor={0x61/255, 0xff/255, 0x6a/255, 0}})) else eff.particle = self:addParticles(Particles.new("damage_shield", 1)) end end, deactivate = function(self, eff) self:removeParticles(eff.particle) local equi = self:getEquilibrium() - self:getMinEquilibrium() if equi > 0 then self:incMana(equi) self:incEquilibrium(-equi) self:project({type="ball", radius=eff.radius, friendlyfire=false}, self.x, self.y, DamageType.ARCANE, math.min(equi, eff.maxdam)) game.level.map:particleEmitter(self.x, self.y, eff.radius, "eldricth_stone_explo", {radius=eff.radius}) end end, } newEffect{ name = "STONE_LINK_SOURCE", image = "talents/stone_link.png", desc = "Stone Link", long_desc = function(self, eff) return ("The target protects all those around it in radius %d by redirecting all damage against them to itself."):format(eff.rad) end, type = "physical", subtype = { earth=true, shield=true }, status = "beneficial", parameters = { rad=3 }, on_gain = function(self, err) return ("#Target# begins protecting %s friends with a stone shield."):format(string.his_her(self)), "+Stone Link" end, on_lose = function(self, err) return "#Target# is no longer protecting anyone.", "-Stone Link" end, activate = function(self, eff) if core.shader.active() then eff.particle = self:addParticles(Particles.new("shader_shield", 1, {size_factor=eff.rad}, {type="shield", time_factor=4000, color={0.7, 0.4, 0.3}})) else eff.particle = self:addParticles(Particles.new("eldritch_stone", 1, {size_factor=eff.rad})) end end, deactivate = function(self, eff) self:removeParticles(eff.particle) end, on_timeout = function(self, eff) self:project({type="ball", radius=eff.rad, selffire=false}, self.x, self.y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if not target or self:reactionToward(target) < 0 then return end target:setEffect(target.EFF_STONE_LINK, 2, {src=self}) end) end, } newEffect{ name = "STONE_LINK", image = "talents/stone_link.png", desc = "Stone Link", long_desc = function(self, eff) return ("The target is protected by %s, redirecting all damage to it."):format(eff.src.name) end, type = "physical", subtype = { earth=true, shield=true }, status = "beneficial", parameters = { }, on_gain = function(self, err) return "#Target# is protected by a stone shield.", "+Stone Link" end, on_lose = function(self, err) return "#Target# is less protected.", "-Stone Link" end, activate = function(self, eff) end, deactivate = function(self, eff) end, } newEffect{ name = "DEEPROCK_FORM", image = "talents/deeprock_form.png", desc = "Deeprock Form", long_desc = function(self, eff) local xs = "" if eff.arcaneDam and eff.arcanePen then xs = xs..(", +%d%% Arcane damage and +%d%% Arcane damage penetration,"):format(eff.arcaneDam, eff.arcanePen) end if eff.natureDam and eff.naturePen then xs = (", +%d%% Nature damage and +%d%% Nature damage penetration"):format(eff.natureDam, eff.naturePen)..xs end if eff.immune then xs = (", %d%% bleeding, poison, disease, and stun immunity"):format(eff.immune*100)..xs end return ("The target has turned into a huge deeprock elemental. It gains 2 size categories%s and +%d%% Physical damage and +%d%% Physical damage penetration.%s"):format(xs, eff.dam, eff.pen, eff.useResist and " In addition, it uses its physical resistance against all damage." or "") end, type = "magical", subtype = { earth=true, elemental=true }, status = "beneficial", parameters = { dam = 10, pen = 5, armor = 5}, on_gain = function(self, err) return "#Target# is imbued by the power of the Stone.", "+Deeprock Form" end, on_lose = function(self, err) return "#Target# is abandoned by the Stone's power.", "-Deeprock Form" end, activate = function(self, eff) if self:knowTalent(self.T_VOLCANIC_ROCK) then self:learnTalent(self.T_VOLCANO, true, self:getTalentLevelRaw(self.T_VOLCANIC_ROCK) * 2, {no_unlearn=true}) self:effectTemporaryValue(eff, "talent_cd_reduction", {[self.T_VOLCANO] = 15}) local t = self:getTalentFromId(self.T_VOLCANIC_ROCK) eff.arcaneDam, eff.arcanePen = t.getDam(self, t), t.getPen(self, t) self:effectTemporaryValue(eff, "inc_damage", {[DamageType.ARCANE] = eff.arcaneDam}) self:effectTemporaryValue(eff, "resists_pen", {[DamageType.ARCANE] = eff.arcanePen}) end if self:knowTalent(self.T_BOULDER_ROCK) then self:learnTalent(self.T_THROW_BOULDER, true, self:getTalentLevelRaw(self.T_BOULDER_ROCK) * 2, {no_unlearn=true}) local t = self:getTalentFromId(self.T_BOULDER_ROCK) eff.natureDam, eff.naturePen = t.getDam(self, t), t.getPen(self, t) self:effectTemporaryValue(eff, "inc_damage", {[DamageType.NATURE] = eff.natureDam}) self:effectTemporaryValue(eff, "resists_pen", {[DamageType.NATURE] = eff.naturePen}) end if self:knowTalent(self.T_MOUNTAINHEWN) then local t = self:getTalentFromId(self.T_MOUNTAINHEWN) if self:getTalentLevel(self.T_MOUNTAINHEWN) >= 5 then eff.useResist = true self:effectTemporaryValue(eff, "force_use_resist", DamageType.PHYSICAL) end eff.immune = t.getImmune(self, t) self:effectTemporaryValue(eff, "cut_immune", eff.immune) self:effectTemporaryValue(eff, "poison_immune", eff.immune) self:effectTemporaryValue(eff, "disease_immune", eff.immune) self:effectTemporaryValue(eff, "stun_immune", eff.immune) end self:effectTemporaryValue(eff, "inc_damage", {[DamageType.PHYSICAL] = eff.dam}) self:effectTemporaryValue(eff, "resists_pen", {[DamageType.PHYSICAL] = eff.pen}) self:effectTemporaryValue(eff, "combat_armor", eff.armor) self:effectTemporaryValue(eff, "size_category", 2) self.replace_display = mod.class.Actor.new{ image = "invis.png", add_displays = {mod.class.Actor.new{ image = "npc/elemental_xorn_harkor_zun.png", display_y=-1, display_h=2, shader = "shadow_simulacrum", shader_args = { color = {0.6, 0.5, 0.2}, base = 0.95, time_factor = 1500 }, }}, } self:removeAllMOs() game.level.map:updateMap(self.x, self.y) end, deactivate = function(self, eff) if self:knowTalent(self.T_VOLCANIC_ROCK) then self:unlearnTalent(self.T_VOLCANO, self:getTalentLevelRaw(self.T_VOLCANIC_ROCK) * 2) end if self:knowTalent(self.T_BOULDER_ROCK) then self:unlearnTalent(self.T_THROW_BOULDER, self:getTalentLevelRaw(self.T_BOULDER_ROCK) * 2) end self.replace_display = nil self:removeAllMOs() game.level.map:updateMap(self.x, self.y) end, } PK TB data/talents/UT DQDQux dPK gCdata/talents/gifts/UT K{RDQux dPK !gC ̶$data/talents/gifts/earthen-power.luaUT ΰ{Rΰ{Rux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org newTalent{ name = "Stoneshield", type = {"wild-gift/earthen-power", 1}, mode = "passive", require = gifts_req1, points = 5, no_unlearn_last = true, on_learn = function(self, t) self:attr("show_shield_combat", 1) end, on_unlearn = function(self, t) self:attr("show_shield_combat", -1) end, getValues = function(self, t) return self:combatTalentLimit(t, 1, 0.07, 0.15), self:combatTalentScale(t, 6, 10), self:combatTalentLimit(t, 0.5, 0.067, 0.185), self:combatTalentScale(t, 5, 9, "log") end, getDamage = function(self, t) return self:getTalentLevel(t) * 10 end, getPercentInc = function(self, t) return math.sqrt(self:getTalentLevel(t) / 5) / 2 end, info = function(self, t) local m, mm, e, em = t.getValues(self, t) local damage = t.getDamage(self, t) local inc = t.getPercentInc(self, t) return ([[The first time you take damage each turn, you regenerate %d%% of the damage dealt as mana (up to a maximum of %0.2f) and %d%% as equilibrium (up to %0.2f). Increases Physical Power by %d, increases damage done with shields by %d%%, and allows you to dual-wield shields. Also, all of your melee attacks will perform a shield bash in addition to their normal effects.]]):format(100 * m, mm, 100 * e, em, damage, inc*100) end, } newTalent{ name = "Stone Fortress", type = {"wild-gift/earthen-power", 2}, require = gifts_req2, points = 5, mode = "passive", -- getPercent = function(self, t) return self:combatTalentLimit(t, 200, 60, 100) end, -- base damage version Limit < 200% getPercent = function(self, t) return self:combatTalentScale(t, 60, 100, "log") end, ReduceDamage = function(self, t, dam, src) -- unused: called by default projector in data.damage_types.lua local effArmor = self:combatArmor()*t.getPercent(self, t)/100 -- Apply attacker base APR (but not for melee attacks which apply it separately) if not (src.turn_procs and src.turn_procs.weapon_type) and src.combatAPR then effArmor = effArmor - src:combatAPR() end return math.max(0, dam - effArmor) end, info = function(self, t) return ([[When you use your Resilience of the Dwarves racial power your skin becomes so tough that it even absorbs damage from non physical attacks. Non physical damage is reduced by %d%% of your total armour value (ignoring hardiness).]]): format(t.getPercent(self, t)) end, } newTalent{ name = "Shards", type = {"wild-gift/earthen-power", 3}, require = gifts_req3, mode = "sustained", points = 5, sustain_equilibrium = 15, cooldown = 30, tactical = { BUFF = 2 }, activate = function(self, t) return {} end, deactivate = function(self, t, p) return true end, info = function(self, t) return ([[Sharp shards of stone grow from your shields. When you are hit in melee, you will get a free attack against the attacker with the shards doing %d%% shield damage (as Nature). This effect can only happen once per turn.]]): format(self:combatTalentWeaponDamage(t, 0.4, 1) * 100) end, } newTalent{ name = "Eldritch Stone", type = {"wild-gift/earthen-power", 4}, require = gifts_req4, points = 5, equilibrium = 10, cooldown = 20, tactical = { DEFEND = 2, EQUILIBRIUM=1, MANA=1 }, radius = function(self, t) return math.floor(self:combatTalentScale(t, 2.5, 4.5)) end, getPower = function(self, t) return 70 + self:combatTalentStatDamage(t, "wil", 5, 400) end, manaRegen = function(self, t) return self:combatTalentScale(t, 0.25, 1, 0.75) end, maxDamage = function(self, t) return self:combatTalentScale(t, 150, 500) end, passives = function(self, t, p) self:talentTemporaryValue(p, "mana_regen_on_rest", t.manaRegen(self, t)) end, action = function(self, t) self:setEffect(self.EFF_ELDRITCH_STONE, 7, {power=t.getPower(self, t), radius=self:getTalentRadius(t), maxdam = t.maxDamage(self, t)}) game:playSoundNear(self, "talents/stone") return true end, info = function(self, t) local power = t.getPower(self, t) local radius = self:getTalentRadius(t) return ([[Creates a shield of impenetrable stone around you for 7 turns, absorbing up to %d damage. Your equilibrium will increase by twice the damage absorbed. When the effect ends, all equilibrium above minimum will be converted to mana in a storm of arcane energy. The storm inflicts Arcane damage equal to the converted equilibrium (maximum %d) against everyone around you in a radius %d. Also while resting you will passively regenerate %0.2f mana each turn. The shield strength will increase with Willpower]]):format(power, t.maxDamage(self, t), radius, t.manaRegen(self, t)) end, } PK gCgk$data/talents/gifts/earthen-vines.luaUT {Rΰ{Rux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org newTalent{ name = "Stone Vines", type = {"wild-gift/earthen-vines", 1}, require = gifts_req1, points = 5, mode = "sustained", sustain_equilibrium = 15, cooldown = 10, no_energy = true, tactical = { ATTACK = { PHYSICAL = 2 }, BUFF = 2, DISABLE = { pin = 2 } }, radius = function(self, t) return math.floor(self:combatTalentScale(t, 4.5, 6.5)) end, getValues = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)), self:combatTalentStatDamage(t, "wil", 3, 50), self:knowTalent(self.T_ELDRITCH_VINES) and self:callTalent(self.T_ELDRITCH_VINES, "getDamage") or nil end, do_vines = function(self, t) local p = self:isTalentActive(t.id) local rad = self:getTalentRadius(t) local tgts = {} local grids = core.fov.circle_grids(self.x, self.y, rad, true) for x, yy in pairs(grids) do for y, _ in pairs(grids[x]) do local a = game.level.map(x, y, Map.ACTOR) if a and self:reactionToward(a) < 0 and not a:hasEffect(a.EFF_STONE_VINE) then tgts[#tgts+1] = a end end end if #tgts <= 0 then return end -- Randomly take targets local tg = {type="hit", range=self:getTalentRange(t), talent=t} local a, id = rng.table(tgts) local hit, chance = a:checkHit(self:combatTalentStatDamage(t, "wil", 5, 110), a:combatPhysicalResist(), 0, 95, 5) if a:canBe("pin") and hit then local turns, dam, arcanedam = t.getValues(self, t) a:setEffect(a.EFF_STONE_VINE, turns, {dam=dam, arcanedam = arcanedam, src=self, free=rad+4, free_chance=100-chance}) game:playSoundNear(self, "talents/stone") end end, activate = function(self, t) return { movid = self:addTemporaryValue("movement_speed", -0.5), particle = self:addParticles(Particles.new("stonevine_static", 1, {})), } end, deactivate = function(self, t, p) self:removeTemporaryValue("movement_speed", p.movid) self:removeParticles(p.particle) return true end, info = function(self, t) local rad = self:getTalentRadius(t) local turns, dam, arcanedam = t.getValues(self, t) local xs = arcanedam and (" and %0.1f Arcane"):format(damDesc(self, DamageType.ARCANE, arcanedam)) or "" return ([[From the ground around you, you form living stone vines extending from your feet. Each turn, the vines will attempt to seize a random target within radius %d. Affected creatures are pinned to the ground and take %0.1f Physical%s damage each turn for %d turns. A creature entangled by the vines will have a chance to break free each turn, and will automatically succeed if it is more than %d grids away from you. The chance to affect targets and damage increase with talent level and Willpower. While earthen vines are active your movement speed is reduced by 50%%.]]): format(rad, damDesc(self, DamageType.PHYSICAL, dam), xs, turns, rad+4) end, } newTalent{ name = "Eldritch Vines", type = {"wild-gift/earthen-vines", 2}, require = gifts_req2, points = 5, mode = "passive", -- called by "STONE_VINE" effect getDamage = function(self, t) return self:combatTalentStatDamage(t, "wil", 3, 50) end, getEquilibrium = function(self, t) return self:combatTalentScale(t, 0.3, 1.25, "log", 0, 3) end, getMana = function(self, t) return self:combatTalentScale(t, 0.4, 1.67) end, info = function(self, t) return ([[Each time one of your stone vines deals damage to a creature it will restore %0.1f equilibrium and %0.1f mana. Your vines also become infused with eldritch energies, dealing an additional %0.1f arcane damage.]]) :format(t.getEquilibrium(self, t), t.getMana(self, t), damDesc(self, DamageType.ARCANE, t.getDamage(self, t))) end, } newTalent{ name = "Rockwalk", type = {"wild-gift/earthen-vines", 3}, require = gifts_req3, points = 5, equilibrium = 15, cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 7)) end, requires_target = true, range = 20, tactical = { HEAL = 2, CLOSEIN = 2 }, action = function(self, t) local tg = {type="hit", range=self:getTalentRange(t)} local x, y, target = self:getTarget(tg) if not x or not y or not target then return nil end if not target:hasEffect(target.EFF_STONE_VINE) then return nil end self:attr("allow_on_heal", 1) self:heal(100 + self:combatTalentStatDamage(t, "wil", 40, 630), t) self:attr("allow_on_heal", -1) if core.shader.active(4) then self:addParticles(Particles.new("shader_shield_temp", 1, {toback=true , size_factor=1.5, y=-0.3, img="healarcane", life=25}, {type="healing", time_factor=2000, beamsCount=20, noup=2.0, beamColor1={0x8e/255, 0x2f/255, 0xbb/255, 1}, beamColor2={0x90/255, 0xff/255, 0x95/255, 1}, circleDescendSpeed=4})) self:addParticles(Particles.new("shader_shield_temp", 1, {toback=false, size_factor=1.5, y=-0.3, img="healarcane", life=25}, {type="healing", time_factor=2000, beamsCount=20, noup=1.0, beamColor1={0x8e/255, 0x2f/255, 0xbb/255, 1}, beamColor2={0x90/255, 0xff/255, 0x95/255, 1}, circleDescendSpeed=4})) end local tx, ty = util.findFreeGrid(x, y, 2, true, {[Map.ACTOR]=true}) if tx and ty then local ox, oy = self.x, self.y self:attr("preserve_body_of_stone", 1) self:move(tx, ty, true) self:attr("preserve_body_of_stone", -1) if config.settings.tome.smooth_move > 0 then self:resetMoveAnim() self:setMoveAnim(ox, oy, 8, 5) end end return true end, info = function(self, t) return ([[Merge with one of your stone vines, traversing it to emerge near an entangled creature (maximum range %d). Merging with the stone is beneficial for you, healing %0.2f life (increases with Willpower). This will not break Body of Stone.]]) :format(self:getTalentRange(t) ,100 + self:combatTalentStatDamage(t, "wil", 40, 630)) end, } newTalent{ name = "Rockswallow", type = {"wild-gift/earthen-vines", 4}, require = gifts_req4, points = 5, equilibrium = 15, cooldown = function(self, t) return math.ceil(self:combatTalentLimit(t, 0, 11, 7)) end, requires_target = true, range = 20, tactical = { ATTACK = { PHYSICAL = 2 }, CLOSEIN = 2 }, action = function(self, t) local tg = {type="hit", range=self:getTalentRange(t)} local x, y, target = self:getTarget(tg) if not x or not y or not target then return nil end if not target:hasEffect(target.EFF_STONE_VINE) then return nil end DamageType:get(DamageType.PHYSICAL).projector(self, target.x, target.y, DamageType.PHYSICAL, 80 + self:combatTalentStatDamage(t, "wil", 40, 330)) if target.dead then return true end local tx, ty = util.findFreeGrid(self.x, self.y, 2, true, {[Map.ACTOR]=true}) if tx and ty then local ox, oy = target.x, target.y target:move(tx, ty, true) if config.settings.tome.smooth_move > 0 then target:resetMoveAnim() target:setMoveAnim(ox, oy, 8, 5) end end return true end, info = function(self, t) return ([[Merge your target (within range %d) with one of your stone vines that has seized it, forcing it to traverse the vine and reappear near you. Merging with the stone is detrimental for the target, dealing %0.1f physical damage. The damage will increases with your Willpower.]]) :format(self:getTalentRange(t), 80 + self:combatTalentStatDamage(t, "wil", 40, 330)) end, } PK gCFu::%data/talents/gifts/dwarven-nature.luaUT K{RK{Rux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org newTalent{ name = "Earthen Missiles", short_name = "DWARVEN_HALF_EARTHEN_MISSILES", type = {"spell/other",1}, points = 5, mana = 10, cooldown = 2, tactical = { ATTACK = { PHYSICAL = 1, cut = 1} }, range = 10, direct_hit = true, reflectable = true, proj_speed = 20, requires_target = true, getDamage = function(self, t) return self:combatTalentSpellDamage(t, 20, 200) end, action = function(self, t) local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="stone_shards", trail="earthtrail"}, friendlyfire=false, friendlyblock=false} local x, y = self:getTarget(tg) if not x or not y then return nil end local damage = t.getDamage(self, t) self:projectile(tg, x, y, DamageType.SPLIT_BLEED, self:spellCrit(damage), nil) game:playSoundNear(self, "talents/earth") --missile #2 local tg2 = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="stone_shards", trail="earthtrail"}, friendlyfire=false, friendlyblock=false} local x, y = self:getTarget(tg2) if x and y then self:projectile(tg2, x, y, DamageType.SPLIT_BLEED, self:spellCrit(damage), nil) game:playSoundNear(self, "talents/earth") end --missile #3 (Talent Level 5 Bonus Missile) if self:getTalentLevel(t) >= 5 then local tg3 = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="stone_shards", trail="earthtrail"}, friendlyfire=false, friendlyblock=false} local x, y = self:getTarget(tg3) if x and y then self:projectile(tg3, x, y, DamageType.SPLIT_BLEED, self:spellCrit(damage), nil) game:playSoundNear(self, "talents/earth") end else end return true end, info = function(self, t) local count = 2 if self:getTalentLevel(t) >= 5 then count = count + 1 end local damage = t.getDamage(self, t) return ([[Conjures %d missile shaped rocks that you target individually at any target or targets in range. Each missile deals %0.2f physical damage, and an additional %0.2f bleeding damage every turn for 5 turns. At talent level 5, you can conjure one additional missile. The damage will increase with your Spellpower.]]):format(count,damDesc(self, DamageType.PHYSICAL, damage/2), damDesc(self, DamageType.PHYSICAL, damage/12)) end, } newTalent{ name = "Elemental Split", type = {"wild-gift/dwarven-nature", 1}, require = gifts_req1, points = 5, equilibrium = 20, cooldown = 30, getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 6, 10)) end, on_pre_use = function(self, t) if self:hasEffect(self.EFF_DEEPROCK_FORM) then return false end local cryst = game.party:findMember{type="dwarven nature crystaline half"} local stone = game.party:findMember{type="dwarven nature stone half"} if cryst or stone then return false end return true end, action = function(self, t) local nb_halves = 0 -- Find space local x, y = util.findFreeGrid(self.x, self.y, 1, true, {[Map.ACTOR]=true}) if x then local m = require("mod.class.NPC").new(self:clone{ shader = "shadow_simulacrum", shader_args = {time_factor=1000, base=0.5, color={0.6, 0.3, 0.6}}, no_drops = true, faction = self.faction, summoner = self, summoner_gain_exp=true, summon_time = t.getDuration(self, t), ai_target = {actor=nil}, ai = "summoned", ai_real = "tactical", name = "Crystaline Half ("..self.name..")", desc = [[A crystaline structure that has taken your exact form.]], }) m:removeAllMOs() m.make_escort = nil m.on_added_to_level = nil m.energy.value = 0 m.player = nil -- m.max_life = m.max_life * t.getHealth(self, t) -- m.life = util.bound(m.life, 0, m.max_life) m.forceLevelup = function() end m.die = nil m.on_die = nil m.on_acquire_target = nil m.seen_by = nil m.can_talk = nil m.puuid = nil m.on_takehit = nil m.exp_worth = 0 m.no_inventory_access = true m.clone_on_hit = nil local tids = table.keys(m.talents) for i, tid in ipairs(tids) do if tid ~= m.T_STONESHIELD and tid ~= m.T_ARMOUR_TRAINING then m:unlearnTalent(tid, m:getTalentLevelRaw(tid)) end end m:learnTalent(m.T_DWARVEN_HALF_EARTHEN_MISSILES, true, self:getTalentLevelRaw(t)) m.remove_from_party_on_death = true if self:knowTalent(self.T_POWER_CORE) then m:learnTalent(m.T_RAIN_OF_SPIKES, true, math.floor(self:getTalentLevel(self.T_POWER_CORE))) end game.zone:addEntity(game.level, m, "actor", x, y) game.level.map:particleEmitter(x, y, 1, "shadow") nb_halves = nb_halves + 1 if game.party:hasMember(self) then game.party:addMember(m, { control="no", type="dwarven nature crystaline half", title="Crystaline Half", orders = {target=true}, }) end end -- Find space local x, y = util.findFreeGrid(self.x, self.y, 1, true, {[Map.ACTOR]=true}) if x then local m = require("mod.class.NPC").new(self:clone{ shader = "shadow_simulacrum", shader_args = {time_factor=-8000, base=0.5, color={0.6, 0.4, 0.3}}, no_drops = true, faction = self.faction, summoner = self, summoner_gain_exp=true, summon_time = t.getDuration(self, t), ai_target = {actor=nil}, ai = "summoned", ai_real = "tactical", name = "Stone Half ("..self.name..")", desc = [[A stone structure that has taken your exact form.]], }) m:removeAllMOs() m.make_escort = nil m.on_added_to_level = nil m.energy.value = 0 m.player = nil -- m.max_life = m.max_life * t.getHealth(self, t) -- m.life = util.bound(m.life, 0, m.max_life) m.forceLevelup = function() end m.die = nil m.on_die = nil m.on_acquire_target = nil m.seen_by = nil m.can_talk = nil m.puuid = nil m.on_takehit = nil m.exp_worth = 0 m.no_inventory_access = true m.clone_on_hit = nil local tids = table.keys(m.talents) for i, tid in ipairs(tids) do if tid ~= m.T_STONESHIELD and tid ~= m.T_ARMOUR_TRAINING then m:unlearnTalent(tid, m:getTalentLevelRaw(tid)) end end m.talent_cd_reduction={[m.T_TAUNT]=3}, m:learnTalent(m.T_TAUNT, true, self:getTalentLevelRaw(t)) m.remove_from_party_on_death = true if self:knowTalent(self.T_POWER_CORE) then m:learnTalent(m.T_STONE_LINK, true, math.floor(self:getTalentLevel(self.T_POWER_CORE))) end game.zone:addEntity(game.level, m, "actor", x, y) game.level.map:particleEmitter(x, y, 1, "shadow") nb_halves = nb_halves + 1 if game.party:hasMember(self) then game.party:addMember(m, { control="no", type="dwarven nature stone half", title="Stone Half", orders = {target=true}, }) end end if nb_halves == 0 then return end game:playSoundNear(self, "talents/spell_generic2") return true end, info = function(self, t) return ([[Reach inside your dwarven core and summon your stone and crystaline halves to fight alongside you for %d turns. Your Crystaline Half will attack your foes with earthen missiles. Your Stone Half will taunt your foes to protect you. This power can not be called upon while under the effect of Deeprock Form. ]]):format(t.getDuration(self, t)) end, } newTalent{ name = "Power Core", type = {"wild-gift/dwarven-nature", 2}, require = gifts_req2, points = 5, mode = "passive", info = function(self, t) return ([[Your halves learn new talents. Crystaline Half: Rain of Spikes - A massive effect that makes all nearby foes bleed. Stone Half: Stone Link - A protective shield that will redirect all damage against nearby allies to your Stone Half. The level of those talents is %d.]]): format(math.floor(self:getTalentLevel(t))) end, } newTalent{ name = "Dwarven Unity", type = {"wild-gift/dwarven-nature", 3}, require = gifts_req3, points = 5, equilibrium = 10, cooldown = 6, tactical = { ATTACK = 2, PROTECT = 2 }, radius = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end, on_pre_use = function(self, t) local cryst = game.party:findMember{type="dwarven nature crystaline half"} local stone = game.party:findMember{type="dwarven nature stone half"} if not cryst and not stone then return false end return true end, action = function(self, t) local cryst = game.party:findMember{type="dwarven nature crystaline half"} local stone = game.party:findMember{type="dwarven nature stone half"} if cryst then self:project({type="ball", radius=self:getTalentRadius(t), friendlyfire=false}, self.x, self.y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if not target then return end cryst:forceUseTalent(cryst.T_DWARVEN_HALF_EARTHEN_MISSILES, {ignore_cd=true, ignore_energy=true, force_target=target, force_level=self:getTalentLevelRaw(t), ignore_ressources=true}) end) end if stone then game.level.map:remove(self.x, self.y, Map.ACTOR) game.level.map:remove(stone.x, stone.y, Map.ACTOR) game.level.map(self.x, self.y, Map.ACTOR, stone) game.level.map(stone.x, stone.y, Map.ACTOR, self) self.x, self.y, stone.x, stone.y = stone.x, stone.y, self.x, self.y game.level.map:particleEmitter(stone.x, stone.y, 1, "teleport") game.level.map:particleEmitter(self.x, self.y, 1, "teleport") self:project({type="ball", radius=self:getTalentRadius(t), friendlyfire=false}, self.x, self.y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if not target then return end target:setTarget(stone) end) end return true end, info = function(self, t) return ([[You call upon the immediate help of your Halves. Your Stone Half will trade places with you and all creatures currently targetting you in a radius of %d will target it instead. Your Crystaline Half will instantly fire a volley of level %d earthen missiles at all foes near the stone half (or you if the stone half is dead) in radius %d.]]): format(self:getTalentRadius(t), self:getTalentLevelRaw(t), self:getTalentRadius(t)) end, } newTalent{ name = "Mergeback", type = {"wild-gift/dwarven-nature", 4}, require = gifts_req4, points = 5, equilibrium = 10, cooldown = 20, no_npc_use = true, radius = 3, getRemoveCount = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9, "log")) end, getDamage = function(self, t) return self:combatTalentStatDamage(t, "wil", 60, 330) end, getHeal = function(self, t) return self:combatTalentStatDamage(t, "wil", 60, 330) end, on_pre_use = function(self, t) local cryst = game.party:findMember{type="dwarven nature crystaline half"} local stone = game.party:findMember{type="dwarven nature stone half"} if not cryst and not stone then return false end return true end, action = function(self, t) local cryst = game.party:findMember{type="dwarven nature crystaline half"} local stone = game.party:findMember{type="dwarven nature stone half"} local nb = (cryst and 1 or 0) + (stone and 1 or 0) if cryst then cryst:die() end if stone then stone:die() end local target = self local effs = {} for eff_id, p in pairs(target.tmp) do local e = target.tempeffect_def[eff_id] if (e.type == "magical" or e.type == "mental" or e.type == "physical") and e.status == "detrimental" then effs[#effs+1] = {"effect", eff_id} end end for i = 1, t.getRemoveCount(self, t) do if #effs == 0 then break end local eff = rng.tableRemove(effs) if eff[1] == "effect" then target:removeEffect(eff[2]) end end self:heal((self:mindCrit(t.getHeal(self, t) * nb))) self:project({type="ball", radius=self:getTalentRadius(t), friendlyfire=false}, self.x, self.y, DamageType.NATURE, self:mindCrit(t.getDamage(self, t)) * nb) game.level.map:particleEmitter(self.x, self.y, self:getTalentRadius(t), "generic_ball", {radius=self:getTalentRadius(t), rm=0, rM=0, gm=200, gM=250, bm=100, bM=170, am=200, aM=255}) game:playSoundNear(self, "talents/stone") return true end, info = function(self, t) local nb = t.getRemoveCount(self, t) local dam = t.getDamage(self, t) local heal = t.getHeal(self, t) return ([[Merges your halves back into you, cleansing your body of %d detrimental magical, mental or physical effects. Each half also heals you for %d and releases a shockwave dealing %0.2f Nature damage in a radius 3.]]): format(nb, heal, damDesc(self, DamageType.NATURE, dam)) end, } ----------------------------------------------------------- -- Halves talents ----------------------------------------------------------- newTalent{ name = "Stone Link", type = {"wild-gift/other", 1}, points = 5, equilibrium = 10, cooldown = 10, tactical = { BUFF = 2, }, radius = function(self, t) return math.floor(self:combatTalentScale(t, 2.5, 4.5)) end, requires_target = false, action = function(self, t) self:setEffect(self.EFF_STONE_LINK_SOURCE, 5, {rad=self:getTalentRadius(t)}) game:playSoundNear(self, "talents/stone") return true end, info = function(self, t) local radius = self:getTalentRadius(t) return ([[Creates a shield of radius %d that redirects all damage done to friends inside it to you for 5 turns.]]):format(radius) end, } newTalent{ name = "Rain of Spikes", type = {"wild-gift/other", 1}, points = 5, equilibrium = 10, cooldown = 6, tactical = { ATTACKAREA = {PHYSICAL=2}, }, radius = function(self, t) return math.floor(self:combatTalentScale(t, 3, 7)) end, getDamage = function(self, t) return self:combatTalentStatDamage(t, "wil", 60, 330) end, action = function(self, t) self:project({type="ball", radius=self:getTalentRadius(t), friendlyfire=false}, self.x, self.y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if not target then return end if target:canBe("cut") then target:setEffect(target.EFF_CUT, 6, {src = self, apply_power=self:combatMindpower(), power=self:mindCrit(t.getDamage(self, t))/6}) end end, nil, {type="stone_spikes"}) game:playSoundNear(self, "talents/stone") return true end, info = function(self, t) local radius = self:getTalentRadius(t) local dam = t.getDamage(self, t) return ([[Fires spikes all around you, making your foes within radius %d bleed for %0.2f damage over 6 turns. Damage and chance to apply the effect increase with Willpower.]]):format(radius, damDesc(self, DamageType.PHYSICAL, dam)) end, } PK !gCdata/talents/gifts/gifts.luaUT ΰ{Rΰ{Rux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org newTalentType{ allow_random=true, is_nature=true, type="wild-gift/earthen-power", name = "earthen power", description = "Dwarves have learned to imbue their shields with the power of stone itself." } newTalentType{ allow_random=true, is_nature=true, type="wild-gift/earthen-vines", name = "earthen vines", description = "Control the stone itself and bring it alive in the form of dreadful vines." } newTalentType{ allow_random=true, is_nature=true, type="wild-gift/dwarven-nature", name = "dwarven nature", description = "Learn to harness the innate power of your race." } damDesc = Talents.main_env.damDesc gifts_req1 = Talents.main_env.gifts_req1 gifts_req2 = Talents.main_env.gifts_req2 gifts_req3 = Talents.main_env.gifts_req3 gifts_req4 = Talents.main_env.gifts_req4 gifts_req5 = Talents.main_env.gifts_req5 load("/data-stone-wardens/talents/gifts/earthen-power.lua") load("/data-stone-wardens/talents/gifts/earthen-vines.lua") load("/data-stone-wardens/talents/gifts/dwarven-nature.lua") PK ovCdata/talents/spells/UT TRDQux dPK !gCE-Udata/talents/spells/spells.luaUT ΰ{Rΰ{Rux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org newTalentType{ allow_random=true, no_silence=true, is_spell=true, type="spell/eldritch-shield", name = "eldritch shield", description = "Infuse arcane forces into your shield." } newTalentType{ allow_random=true, no_silence=true, is_spell=true, type="spell/eldritch-stone", name = "eldritch stone", description = "Summon stony spikes imbued with various powers." } newTalentType{ allow_random=true, no_silence=true, is_spell=true, type="spell/deeprock", name = "deeprock", description = "Harness the power of the world to turn into a Deeprock Form." } damDesc = Talents.main_env.damDesc spells_req1 = Talents.main_env.spells_req1 spells_req2 = Talents.main_env.spells_req2 spells_req3 = Talents.main_env.spells_req3 spells_req4 = Talents.main_env.spells_req4 spells_req5 = Talents.main_env.spells_req5 spells_req_high1 = Talents.main_env.spells_req_high1 spells_req_high2 = Talents.main_env.spells_req_high2 spells_req_high3 = Talents.main_env.spells_req_high3 spells_req_high4 = Talents.main_env.spells_req_high4 spells_req_high5 = Talents.main_env.spells_req_high5 load("/data-stone-wardens/talents/spells/eldritch-shield.lua") load("/data-stone-wardens/talents/spells/eldritch-stone.lua") load("/data-stone-wardens/talents/spells/deeprock.lua") PK mgCPs&data/talents/spells/eldritch-stone.luaUT ]{Rΰ{Rux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org newTalent{ name = "Stone Spikes", type = {"spell/eldritch-stone", 1}, require = spells_req1, points = 5, equilibrium = 8, mana = 20, cooldown = 12, tactical = { ATTACK = function(self, t, target) local v = { PHYSICAL = 2 } if self:knowTalent(self.T_POISONED_SPIKES) then v.NATURE = 1 end if self:knowTalent(self.T_ELDRITCH_SPIKES) then v.ARCANE = 1 end if self:knowTalent(self.T_IMPALING_SPIKES) then v.PHYSICAL = 3 end return v end, DISABLE = function(self, t, target) local v = {} if self:knowTalent(self.T_POISONED_SPIKES) then v.heal = 1 end if self:knowTalent(self.T_ELDRITCH_SPIKES) then v.silence = 1 end if self:knowTalent(self.T_IMPALING_SPIKES) then v.disarm = 1 end return next(v) and v or 0 end, }, range = 0, radius = function(self, t) return math.floor(self:combatTalentScale(t, 4.7, 5.8)) end, requires_target = true, target = function(self, t) return {type="cone", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t} end, getDamage = function(self, t) return self:combatTalentSpellDamage(t, 50, 250) end, action = function(self, t) local tg = self:getTalentTarget(t) local x, y = self:getTarget(tg) if not x or not y then return nil end self:project(tg, x, y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if not target then return end if target:canBe("cut") then target:setEffect(target.EFF_CUT, 6, {apply_power=math.max(self:combatPhysicalpower(), self:combatSpellpower()), src=self, power=self:spellCrit(t.getDamage(self, t)) / 6}) end if self:knowTalent(self.T_POISONED_SPIKES) then local st = self:getTalentFromId(self.T_POISONED_SPIKES) if target:canBe("poison") then target:setEffect(target.EFF_INSIDIOUS_POISON, 6, {apply_power=math.max(self:combatPhysicalpower(), self:combatSpellpower()), src=self, heal_factor=st.getHeal(self, st), power=self:spellCrit(st.getDamage(self, st)) / 6}) end end if self:knowTalent(self.T_ELDRITCH_SPIKES) then local st = self:getTalentFromId(self.T_ELDRITCH_SPIKES) DamageType:get(DamageType.ARCANE).projector(self, px, py, DamageType.ARCANE, self:spellCrit(st.getDamage(self, st))) if target:canBe("silence") then target:setEffect(target.EFF_SILENCED, st.getSilence(self, t), {apply_power=math.max(self:combatPhysicalpower(), self:combatSpellpower())}) end end if self:knowTalent(self.T_IMPALING_SPIKES) then local st = self:getTalentFromId(self.T_IMPALING_SPIKES) DamageType:get(DamageType.PHYSICAL).projector(self, px, py, DamageType.PHYSICAL, self:spellCrit(st.getDamage(self, st))) if target:canBe("disarm") then target:setEffect(target.EFF_DISARMED, st.getDisarm(self, t), {apply_power=math.max(self:combatPhysicalpower(), self:combatSpellpower())}) end end end, nil, {type="stone_spikes"}) game:playSoundNear(self, "talents/earth") return true end, info = function(self, t) local xs = "" if self:knowTalent(self.T_POISONED_SPIKES) then xs = ("poisoned for %0.1f Nature damage over 6 turns (%d%% healing reduction)"):format(damDesc(self, DamageType.NATURE, self:callTalent(self.T_POISONED_SPIKES, "getDamage")), self:callTalent(self.T_POISONED_SPIKES, "getHeal")) end if self:knowTalent(self.T_ELDRITCH_SPIKES) then xs = xs..(", blasted for %0.1f Arcane damage (and silenced for %d turns),"):format(damDesc(self, DamageType.ARCANE, self:callTalent(self.T_ELDRITCH_SPIKES, "getDamage")), self:callTalent(self.T_ELDRITCH_SPIKES, "getSilence")) end if self:knowTalent(self.T_IMPALING_SPIKES) then xs = xs..(" impaled for %0.1f Physical damage (and disarmed for %d turns),"):format(damDesc(self, DamageType.PHYSICAL, self:callTalent(self.T_IMPALING_SPIKES, "getDamage")), self:callTalent(self.T_IMPALING_SPIKES, "getDisarm")) end return ([[Stony spikes erupt from the ground in a radius %d cone. Creatures caught in the area will be %scut for %0.1f Physical damage dealt over 6 turns. The damage increases with your Spellpower, and the chance to apply the detrimental effect(s) improves with Spellpower or Physical Power, whichever is greater.]]) :format(self:getTalentRadius(t), xs ~="" and xs.." and " or "", damDesc(self, DamageType.PHYSICAL, t.getDamage(self, t))) end, } newTalent{ name = "Poisoned Spikes", type = {"spell/eldritch-stone", 2}, require = spells_req2, points = 5, mode = "passive", getDamage = function(self, t) return self:combatTalentSpellDamage(t, 10, 200) end, getHeal = function(self, t) return self:combatLimit(math.max(self:combatTalentSpellDamage(t, 30, 50),self:combatTalentPhysicalDamage(t, 30, 50)), 100, 20, 0, 56.8, 36.8) end, -- fix info = function(self, t) local dam = t.getDamage(self, t) return ([[Coats your stone spikes with insidious poison, dealing %0.1f total nature damage over 6 turns while reducing all healing by %d%%. The damage increases with Spellpower and the chance to poison and healing reduction increases with either Spellpower or Physical Power, whichever is greater.]]): format(damDesc(self, DamageType.NATURE, t.getDamage(self, t)), t.getHeal(self, t)) end, } newTalent{ name = "Eldritch Spikes", type = {"spell/eldritch-stone", 3}, require = spells_req3, points = 5, mode = "passive", getDamage = function(self, t) return self:combatTalentSpellDamage(t, 10, 180) end, getSilence = function(self, t) return math.ceil(self:combatTalentLimit(t, 12, 3, 8)) end, info = function(self, t) local dam = t.getDamage(self, t) return ([[Imbues your stone spikes with arcane forces, dealing %0.1f Arcane damage and silencing each target hit for %d turns. The damage increases with Spellpower and the chance to silence increases with either Spellpower or Physical Power, whichever is greater.]]): format(damDesc(self, DamageType.ARCANE, t.getDamage(self, t)), t.getSilence(self, t)) end, } newTalent{ name = "Impaling Spikes", type = {"spell/eldritch-stone", 4}, require = spells_req4, points = 5, mode = "passive", getDamage = function(self, t) return self:combatTalentSpellDamage(t, 10, 200) end, getDisarm = function(self, t) return math.ceil(self:combatTalentLimit(t, 12, 3, 8)) end, info = function(self, t) return ([[Your stone spikes grow in length, instantly dealing %0.1f Physical damage and disarming targets hit for %d turns. The damage increases with Spellpower and the chance to disarm increases with either Spellpower or Physical Power, whichever is greater.]]): format(damDesc(self, DamageType.PHYSICAL, t.getDamage(self, t)), t.getDisarm(self, t)) end, } PK !gC(' data/talents/spells/deeprock.luaUT ΰ{Rΰ{Rux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org newTalent{ name = "Deeprock Form", type = {"spell/deeprock", 1}, require = spells_req_high1, points = 5, equilibrium = 15, mana = 60, cooldown = 30, tactical = { ATTACK = 5 }, range = 10, radius = function(self, t) return 5 end, requires_target = true, getTime = function(self, t) return math.floor(self:combatLimit(self:combatTalentSpellDamage(t, 10, 150), 30, 5, 0, 15.3, 103)) end, -- limit < 30 getDam = function(self, t) return 5 + (self:combatTalentSpellDamage(t, 10, 250) / 10) end, getPen = function(self, t) return self:combatTalentLimit(t, 100, 6.6, 13) end, -- Limit < 100% getArmor = function(self, t) return self:combatTalentScale(t, 7.3, 11.5, 0.75) end, action = function(self, t) self:setEffect(self.EFF_DEEPROCK_FORM, t.getTime(self, t), {dam=t.getDam(self, t), pen=t.getPen(self, t), armor=t.getArmor(self, t)}) game:playSoundNear(self, "talents/earth") return true end, info = function(self, t) local xs = "" local xsi = "" if self:knowTalent(self.T_VOLCANIC_ROCK) then xs = xs..(", Arcane damage by %0.1f%% and Arcane damage penetration by %0.1f%%"): format(self:callTalent(self.T_VOLCANIC_ROCK, "getDam"), self:callTalent(self.T_VOLCANIC_ROCK, "getPen")) end if self:knowTalent(self.T_BOULDER_ROCK) then xs = (", Nature damage by %0.1f%% and Nature damage penetration by %0.1f%%"): format(self:callTalent(self.T_BOULDER_ROCK, "getDam"), self:callTalent(self.T_BOULDER_ROCK, "getPen"))..xs end if self:knowTalent(self.T_MOUNTAINHEWN) then xsi = (" and %d%% bleeding, poison, disease, and stun immunity"): format(self:callTalent(self.T_MOUNTAINHEWN, "getImmune")*100) end return ([[You call upon the very core of the world, harnessing its power to transform your body. For %d turns you become a Deeprock Elemental, gaining two size categories%s. This increases your Physical damage by %0.1f%% and Physical damage penetration by %0.1f%%%s, and armour by %d.%s The effects increase with spellpower.]]) :format(t.getTime(self, t), xsi, t.getDam(self, t),t.getPen(self, t), xs, t.getArmor(self, t), self:getTalentLevel(self.T_MOUNTAINHEWN) >=5 and "\nIn addition, you use your physical resistance versus all damage against you." or "") end, } newTalent{ name = "Volcanic Rock", type = {"spell/deeprock", 2}, require = spells_req_high2, points = 5, mode = "passive", getDam = function(self, t) return 5 + (self:combatTalentSpellDamage(t, 10, 250) / 10) end, getPen = function(self, t) return self:combatTalentLimit(t, 100, 6.6, 13) end, -- Limit < 100% info = function(self, t) local tv = self:getTalentFromId(self.T_VOLCANO) return ([[When you turn into a Deeprock elemental your Arcane damage is increased by %0.1f%%, Arcane damage penetration by %0.1f%% and you gain the power to invoke volcanos: %s]]): format(t.getDam(self, t),t.getPen(self, t), self:getTalentFullDescription(tv, self:getTalentLevelRaw(t) * 2):toString()) -- rescale volcano talent levels? end, } newTalent{ name = "Boulder Rock", type = {"spell/deeprock", 3}, require = spells_req_high3, points = 5, mode = "passive", getDam = function(self, t) return 5 + (self:combatTalentSpellDamage(t, 10, 250) / 10) end, getPen = function(self, t) return self:combatTalentLimit(t, 100, 6.6, 13) end, -- Limit < 100% info = function(self, t) local tv = self:getTalentFromId(self.T_THROW_BOULDER) return ([[When you turn into a Deeprock elemental your Nature damage is increased by %0.1f%%, Nature damage penetration by %0.1f%% and you gain the power to throw boulders: %s]]): format(t.getDam(self, t),t.getPen(self, t), self:getTalentFullDescription(tv, self:getTalentLevelRaw(t) * 2):toString()) end, } newTalent{ name = "Mountainhewn", type = {"spell/deeprock", 4}, require = spells_req_high4, points = 5, mode = "passive", getImmune = function(self, t) return self:combatTalentLimit(t, 1, 0.27, 0.55) end, -- Limit < 100% info = function(self, t) return ([[While in deeprock form, you become indomitable, granting you %d%% resistace to cuts, poisons, diseases and stuns. At level 5 and higher, while Deeprock Form is active, all incoming damage is applied against physical resistance instead of the normal resistance type.]]): format(t.getImmune(self, t)*100) end, } PK ovCNLL'data/talents/spells/eldritch-shield.luaUT TRTRux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org newTalent{ name = "Eldritch Blow", type = {"spell/eldritch-shield", 1}, require = spells_req1, points = 5, equilibrium = 3, mana = 10, cooldown = 10, range = 1, tactical = { ATTACK = { ARCANE = 2 }, DISABLE = { stun = 2 } }, requires_target = true, on_pre_use = function(self, t, silent) local shield = self:hasShield() if not shield then if not silent then game.logPlayer(self, "You cannot use Eldritch Blow without a shield!") end return false end return true end, getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 2.5, 4.5)) end, action = function(self, t) local shield = self:hasShield() local tg = {type="hit", range=self:getTalentRange(t)} local x, y, target = self:getTarget(tg) if not x or not y or not target then return nil end if core.fov.distance(self.x, self.y, x, y) > 1 then return nil end -- First attack with both weapon & shield (since we have the Stoneshield talent) -- nerf this damage? local hit = self:attackTarget(target, DamageType.ARCANE, self:combatTalentWeaponDamage(t, 0.6, (100 + self:combatTalentSpellDamage(t, 50, 300)) / 100), true) -- Try to stun ! if hit then if target:canBe("stun") then target:setEffect(target.EFF_STUNNED, t.getDuration(self, t), {apply_power=self:combatPhysicalpower(), apply_save="combatSpellResist"}) else game.logSeen(target, "%s resists the stun!", target.name:capitalize()) end end return true end, info = function(self, t) return ([[Channel eldritch forces into a melee attack, hitting the target with your weapon and shield for %d%% arcane damage. If either attack hits, the target will be stunned for %d turns. The chance for the attack to stun increases with your Physical Power, but it is considered a magical attack and thus is resisted with spell save, rather than physical save. Damage increases with Spellpower.]]) :format(100 * self:combatTalentWeaponDamage(t, 0.6, (100 + self:combatTalentSpellDamage(t, 50, 300)) / 100), t.getDuration(self, t)) end, } newTalent{ name = "Eldritch Infusion", type = {"spell/eldritch-shield", 2}, require = spells_req2, points = 5, mode = "sustained", sustain_equilibrium = 15, sustain_mana = 50, cooldown = 30, tactical = { ATTACK = 3, BUFF = 2 }, getDamage = function(self, t) return self:combatTalentSpellDamage(t, 15, 40) end, on_pre_use = function(self, t, silent) if not self:hasShield() then if not silent then game.logPlayer(self, "You require a shield to use this talent.") end return false end return true end, activate = function(self, t) local dam = t.getDamage(self, t) return { proj = self:addTemporaryValue("melee_project", {[DamageType.ARCANE]=dam}), onhit = self:addTemporaryValue("on_melee_hit", {[DamageType.ARCANE]=dam * 0.7}), } end, deactivate = function(self, t, p) self:removeTemporaryValue("melee_project", p.proj) self:removeTemporaryValue("on_melee_hit", p.onhit) return true end, info = function(self, t) local dam = t.getDamage(self, t) return ([[Imbues your shields with arcane power, dealing %0.2f arcane damage with each melee strike and %0.2f arcane damage when hit. The damage will increase with Spellpower.]]): format(damDesc(self, DamageType.ARCANE, dam), damDesc(self, DamageType.ARCANE, dam * 0.7)) end, } newTalent{ name = "Eldritch Fury", type = {"spell/eldritch-shield", 3}, require = spells_req3, points = 5, equilibrium = 20, mana = 30, cooldown = 12, requires_target = true, tactical = { ATTACK = { NATURE = 3 }, DISABLE = { stun = 1 } }, range = 1, on_pre_use = function(self, t, silent) local shield = self:hasShield() if not shield then if not silent then game.logPlayer(self, "You cannot use Eldricth Fury without a shield!") end return false end return true end, getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 4, 8)) end, action = function(self, t) local tg = {type="hit", range=self:getTalentRange(t)} local x, y, target = self:getTarget(tg) if not x or not y or not target then return nil end if core.fov.distance(self.x, self.y, x, y) > 1 then return nil end -- First attack with both weapon & shield (since we have the Stoneshield talent) local hit1 = self:attackTarget(target, DamageType.NATURE, self:combatTalentWeaponDamage(t, 0.6, 1.6), true) local hit2 = self:attackTarget(target, DamageType.NATURE, self:combatTalentWeaponDamage(t, 0.6, 1.6), true) local hit3 = self:attackTarget(target, DamageType.NATURE, self:combatTalentWeaponDamage(t, 0.6, 1.6), true) -- Try to daze ! if hit1 or hit2 or hit3 then if target:canBe("stun") then target:setEffect(target.EFF_DAZED, t.getDuration(self, t), {apply_power=self:combatPhysicalpower(), apply_save="combatSpellResist"}) else game.logSeen(target, "%s resists the dazing blows!", target.name:capitalize()) end end return true end, info = function(self, t) return ([[Channel eldritch forces into a ferocious melee attack, hitting the target three times with your shields doing %d%% Nature damage. If any of the attacks hit, the target will be dazed for %d turns. The chance for the attack to daze increases with you Physical Power, but it is considered a magical attack and thus is resisted with spell save, rather than physical save.]]) :format(100 * self:combatTalentWeaponDamage(t, 0.6, 1.6), t.getDuration(self, t)) end, } newTalent{ name = "Eldritch Slam", type = {"spell/eldritch-shield", 4}, require = spells_req4, points = 5, equilibrium = 10, mana = 30, cooldown = 20, tactical = { ATTACKAREA = { PHYSICAL = 3 } }, requires_target = true, range = 1, radius = function(self, t) return math.floor(self:combatTalentScale(t, 2, 6)) end, on_pre_use = function(self, t, silent) local shield = self:hasShield() if not shield then if not silent then game.logPlayer(self, "You cannot use Eldritch Slam without a shield!") end return false end return true end, action = function(self, t) local tg = {type="ball", radius=self:getTalentRadius(t)} self:project(tg, self.x, self.y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if not target or target == self then return end self:attackTarget(target, DamageType.ARCANE, self:combatTalentWeaponDamage(t, 1.3, 2.6), true) end) game.level.map:particleEmitter(self.x, self.y, tg.radius, "shieldstorm", {radius=tg.radius}) game:playSoundNear(self, "talents/icestorm") return true end, info = function(self, t) return ([[Slam your shield on the ground creating a shockwave. You performa a melee attack for %d%% Arcane damage against everyone within radius %d.]]) :format(100 * self:combatTalentWeaponDamage(t, 1.3, 2.6), self:getTalentRadius(t)) end, } PK TB data/birth/UT DQDQux dPK hB-S S data/birth/wilder.luaUT QDQux d-- ToME - Tales of Maj'Eyal: -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org getBirthDescriptor("class", "Wilder").descriptor_choices.subclass["Stone Warden"] = "allow" getBirthDescriptor("class", "Wilder").locked = nil newBirthDescriptor{ type = "subclass", name = "Stone Warden", desc = { "Stone Wardens are dwarves trained in both the eldritch arts and the worship of nature.", "While other races are stuck in their belief that arcane forces and natural forces are meant to oppose, dwarves have found a way to combine them in harmony.", "Stone Wardens are armoured fighters, dual wielding shields to channel many of their powers.", "#GOLD#Stat modifiers:", "#LIGHT_BLUE# * +2 Strength, +0 Dexterity, +0 Constitution", "#LIGHT_BLUE# * +4 Magic, +3 Willpower, +0 Cunning", "#GOLD#Life per level:#LIGHT_BLUE# +2", }, special_check = function(birth) if birth.descriptors_by_type.race ~= "Dwarf" then return false end return true end, power_source = {nature=true, arcane=true}, not_on_random_boss = true, stats = { str=2, wil=3, mag=4, }, talents_types = { ["wild-gift/call"]={true, 0.2}, ["wild-gift/earthen-power"]={true, 0.3}, ["wild-gift/earthen-vines"]={true, 0.3}, ["wild-gift/dwarven-nature"]={true, 0.3}, ["spell/stone-alchemy"]={false, 0.3}, ["spell/eldritch-stone"]={false, 0.3}, ["spell/eldritch-shield"]={true, 0.3}, ["spell/deeprock"]={false, 0.3}, ["spell/earth"]={true, 0.2}, ["spell/stone"]={false, 0.2}, ["cunning/survival"]={true, 0}, ["technique/combat-training"]={true, 0}, }, talents = { [ActorTalents.T_STONE_VINES] = 1, [ActorTalents.T_STONESHIELD] = 1, [ActorTalents.T_ELDRITCH_BLOW] = 1, [ActorTalents.T_ARMOUR_TRAINING] = 3, [ActorTalents.T_WEAPON_COMBAT] = 1, }, copy = { max_life = 110, resolvers.equip{ id=true, {type="armor", subtype="shield", name="iron shield", autoreq=true, ego_chance=-1000, ego_chance=-1000}, {type="armor", subtype="shield", name="iron shield", autoreq=true, ego_chance=-1000, ego_chance=-1000}, {type="armor", subtype="heavy", name="iron mail armour", autoreq=true, ego_chance=-1000, ego_chance=-1000} }, }, copy_add = { life_rating = 2, }, } PK !gChooks/UT ΰ{RDQux dPK gCXBIIhooks/load.luaUT {Rΰ{Rux d-- ToME - Tales of Maj'Eyal: -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org local class = require"engine.class" local SW = require("mod.class.StoneWardensDLC") class:bindHook("ToME:load", SW.hookLoad) class:bindHook("Actor:takeHit", SW.hookTakeHit) class:bindHook("Combat:attackTargetWith", SW.hookAttackTargetWith) class:bindHook("Actor:actBase:Effects", SW.hookActBaseEffects)PK C&}yinit.luaUT øRDQux d-- ToME - Tales of Maj'Eyal: -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org long_name = "Stone Wardens DLC Class" short_name = "stone-wardens" for_module = "tome" version = {1,1,3} weight = 1 author = { "DarkGod", "darkgod@te4.org" } homepage = "http://te4.org/" description = [[Stone Wardens class for dwarves.]] overload = true superload = true hooks = true data = true dlc = 5 dlc_files = { classes = {"mod.class.StoneWardensDLC"} } PK TB overload/UT DQDQux dPK TBoverload/data/UT DQDQux dPK ka^Coverload/data/gfx/UT ZpRDQux dPK TBoverload/data/gfx/particles/UT DQDQux dPK TB/0h\\,overload/data/gfx/particles/stone_spikes.luaUT DQDQux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org base_size = 64 local nb = 0 return { generator = function() local size = rng.range(15, 32) return { trail = 0, life = 6, size = size, sizev = 0, sizea = 0, x = rng.range(-64+size/2, 64-size/2), xv = 0, xa = 0, y = rng.range(-64+size/2, 64-size/2), yv = 0, ya = 0, dir = 0, dirv = dirv, dira = 0, vel = 0, velv = 0, vela = 0, r = 0.6, rv = 0, ra = 0, g = 0.4, gv = 0, ga = 0, b = 0.3, bv = 0, ba = 0, a = 0.5, av = 0.1, aa = 0.01, } end, }, function(self) if nb < 2 then self.ps:emit(4) nb = nb + 1 end end, 8, "shockbolt/trap/trap_ground_spikes_01" PK TB=4overload/data/gfx/particles/eldricth_stone_explo.luaUT DQDQux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org base_size = 32 local nb = 0 return { generator = function() local ad = rng.range(0, 360) local a = math.rad(ad) local dir = math.rad(ad + 90) local r = rng.avg(1, 40 * radius) local dirv = math.rad(5) return { trail = 1, life = 50, size = rng.range(3, 6), sizev = -0.1, sizea = 0, x = r * math.cos(a), xv = 0, xa = 0, y = r * math.sin(a), yv = 0, ya = 0, dir = dir, dirv = dirv, dira = 0, vel = 5, velv = 0, vela = 0, r = rng.range(180, 220)/255, rv = 0, ra = 0, g = rng.range(0, 0)/255, gv = 0, ga = 0, b = rng.range(200, 255)/255, bv = 0, ba = 0, a = rng.range(80, 220)/255, av = 0, aa = 0, } end, }, function(self) if nb < 5 then self.ps:emit(30) nb = nb + 1 end end, 500, "weather/snowflake" PK TBW.overload/data/gfx/particles/eldritch_stone.luaUT DQDQux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org base_size = 32 local r = 1 local g = 1 local b = 0 local a = 1 return { generator = function() return { trail = 0, life = 10, size = 36 * (size_factor or 1), sizev = 0, sizea = 0, x = 0, xv = 0, xa = 0, y = 0, yv = 0, ya = 0, dir = 0, dirv = dirv, dira = 0, vel = 0, velv = 0, vela = 0, r = r, rv = 0, ra = 0, g = g, gv = 0, ga = 0, b = b, bv = 0, ba = 0, a = a, av = -0.02, aa = 0.005, } end, }, function(self) self.ps:emit(1) end, 1, "shield_bubble" PK TBDHH0overload/data/gfx/particles/stonevine_static.luaUT DQDQux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org base_size = 32 return { generator = function() local ad = rng.range(0, 360) local a = math.rad(ad) local dir = math.rad(ad) local r = rng.range(8, 18) return { life = 10, size = 1, sizev = 0.3, sizea = -0.01, x = r * math.cos(a), xv = 0, xa = 0, y = r * math.sin(a), yv = 0, ya = 0, dir = 0, dirv = 0, dira = 0, vel = 0, velv = 0, vela = 0, r = 0xD7/255, rv = 0, ra = 0, g = 0x8E/255, gv = 0, ga = 0, b = 0x45/255, bv = 0, ba = 0, a = rng.range(100, 220)/255, av = 0.05, aa = 0, } end, }, function(self) self.ps:emit(2) end, 10 PK TB=tS )overload/data/gfx/particles/stonevine.luaUT DQDQux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org -- Make the 2 main forks local tx = tx * engine.Map.tile_w local ty = ty * engine.Map.tile_h local basesize = math.sqrt((ty*ty)+(tx*tx)) local basedir = math.atan2(ty, tx) local nbp = 0 local points = {} local function make_beam(fork_i) local bc = rng.float(0.8, 1) local c = 1 local a = 1 or rng.float(0.3, 0.6) local size = fork_i == 1 and 8 or 2 local starta = basedir+math.pi/2 local starts = rng.range(-0, 0) points[#points+1] = {bc=bc, c=c, a=a, size=size, x=math.cos(starta) * starts, y=math.sin(starta) * starts, prev=-1} local nb = 3 for i = 0, nb - 1 do -- Split point in the segment local split = rng.range(0, basesize / nb) + i * (basesize / nb) local dev = rng.range(-6, 6) * (9 + fork_i) / 10 points[#points+1] = { bc=bc, c=c, a=a, movea=basedir+dev+math.pi/2, size=size + rng.range(-2, 2), x=math.cos(basedir) * split + math.cos(basedir+math.pi/2) * dev, y=math.sin(basedir) * split + math.sin(basedir+math.pi/2) * dev, prev=#points-1 } end points[#points+1] = {bc=bc, c=c, a=a, size=size, x=tx, y=ty, prev=#points-1} nbp = #points end for fork_i = 1, 10 do make_beam(fork_i) end local last_id = -1 -- Populate the lightning based on the forks return { engine=core.particles.ENGINE_LINES, blend_mode=core.particles.BLEND_ADDITIVE, generator = function(id) local p = table.remove(points, 1) local ret = { life = 6, trail=(p.prev == -1) and -1 or last_id, size = p.size, sizev = 0, sizea = 0, x = p.x, xv = 0, xa = 0, y = p.y, yv = 0, ya = 0, dir = p.movea, dirv = 0, dira = 0, vel = rng.float(-1, 1), velv = 0, vela = 0, r = 0xD7/255, rv = 0, ra = 0, g = 0x8E/255, gv = 0, ga = 0, b = 0x45/255, bv = 0, ba = 0, a = 0.1, av = 0, aa = 0.001, } last_id = id return ret end, }, function(self) if nbp > 0 then self.ps:emit(10) nbp = nbp - 10 else for fork_i = 1, 10 do make_beam(fork_i) end end end, nbp, "particles_images/beam" PK TB+overload/data/gfx/particles/shieldstorm.luaUT DQDQux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org base_size = 32 local nb = 0 return { generator = function() local ad = rng.range(0, 360) local a = math.rad(ad) local dir = math.rad(ad + 90) local r = rng.avg(1, 40 * radius) local dirv = math.rad(5) return { trail = 1, life = 20, size = rng.range(12, 18), sizev = -0.1, sizea = 0, x = r * math.cos(a), xv = 0, xa = 0, y = r * math.sin(a), yv = 0, ya = 0, dir = dir, dirv = dirv, dira = 0, vel = 10, velv = 0, vela = 0, r = rng.range(200, 230)/255, rv = 0, ra = 0, g = rng.range(200, 230)/255, gv = 0, ga = 0, b = rng.range(200, 230)/255, bv = 0, ba = 0, a = rng.range(200, 255)/255, av = 0, aa = 0, } end, }, function(self) if nb < 6 then self.ps:emit(20) nb = nb + 1 end end, 200, "shockbolt/object/shield_voratun" PK oa^C#overload/data/gfx/particles_images/UT apRZpRux dPK oa^Ch2A>overload/data/gfx/particles_images/runicshield_stonewarden.pngUT apRapRux dPNG  IHDRx 9iCCPPhotoshop ICC profileHǝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVT#ijIkLJ⨷MRI~}'T- IIj6Aw}Mnέ2A[RwIFxI$5ޖ]IMHhc$- V~=M> \QF(I[L0DjL.Z%FRVҮάEj]t#%}CU&g'q4AR 5{K:_% %ͩH $]#q8b?NqIf%4A$q4Jk$mtF #;%}H K8:BK1 WKGYֺciT߫M6#L$],lIoHH? ܔG/IKpk@gL6`INEWE_5 Nw5o%U9Cf8zB%-c%4A›m3fPfJyoC[$ຼ ¦|d>&Jh$)i)a 0tld vs8!p{HzPga|K,c.C%5Ap5&8Oҗ$}{qlIHz毫k$tW-%%4LJ/8&˼[%_*I5? "_"駜s }M c]'K3]!(p7I#0[˚&׳}Y)&o$aR4SGYRhpIgJY̡th0>4B+u6I m +~ք{7nAtNJ+IzYH}(Rj$:'"9c Sy e<^$/'q4jp{jN^ۘ*`b#ٌIrɟM6!iHzoir IM&IK`8L&q="g%ujf\I s"i9|mJ!0>jRjobӎ86ܓU$7AxGC}X'rBS w8iIG&`&t:IH>YC6Kʙ \]75ZlAsOI 9/$]&~yI? M.C^%g%Me4^8&w&qTwQ&C$AMl5D|In"7Q B~FIMt *`ZBr`PKI}Ip ba`9|o" $Zx6eX֘ tKq< q-HH0^4AXL蛒g$ݎ u @PJz4/ }xG;`FyFBlelۓ8}L%}^>{htkL*GHo{#X>IR$4XK{4`,#$"I`| kxa?\"yb6>s8'i —2L>31 GXǍ&_Jhv2cqZV^Qm`*t\p4S%G-z ?;c~uf˷M͡ +]}8:Hc20,' NԂM.·@ u0Sýk$="&>Xa**F`v[1`,CK15lJz3#10%Ⱥ.G 8w_G0Htx ,j.enc LnI:Mҕm11xkrXuL`/IhU5wq9n4,o<'HzO6An^V XH5A$I4 ѱ,t ¸Ľ]UG0L8];senṂ:*>c$}]{h>࿂ p$DI Q5@UITPDN4jI|fb :mHW#c:LIS4'R/}1Β4:x`R= a[G7K"Wtd/~3"̈& HE|_t#)Q@Fz7% g<&[ûIq<X[L^PavO83>6I:᭘_@oOc%_Nٻ`$=GIc > ۴<=%d>^@~GI5AG/m: +7^I 'Kmp'ͬ( 8H>lBrsȕk4R0]U! -tx9@zHVO1ksq7K,Is0A،}k߂s?58)ijGt*_aY8 -mlG( 5TLb؏;@wl?&PJ8|>c&qjh*I򂖾h$j8:swݳw)&q&Kz%q4d>qS)fH {%ŒHh4cӚ{/-fܥ 7CjM>icRJU_] ]BLc-sWv@-lj_G8)Dld%q_Βiw2`2 Q󜈦$qt6y^ҭ&oeMI-]4/&q4:6|pi-QR$IeC6eiC84%&|c0bMDJkZ$&Zk԰x;OhI5=ѵ.Iy! ހD?nzXMV? \. ɯDN&9fI`M]lLu#- + xMJLL$>3,H:07$I%P"'0kXe#!I0+t^WTY%}#\'"|gƧt4\f·1pwēDie~3=HIkbGd+9eڍ40u9D˃8ifzUԬ|\36V]-&q48ZaHVv9hGKϜ2z"$ty|3D6jض<^7A<&#I <- IM0AZX$i$q|&&NC1A8+feXG `ۙT>~a>r9s(v[ joLEI0,T-$/]︣X + *wFIzb#ZjiQ'rHj`Ȗz|I-Ee5}dSP^tlͧxl181=Ϟ8#&.d:.[cם+{dL觀p s=^b8r4NZY|\D|/k~gg>QKd+V5dwtwL~{ؿ-)SVI{i+mJW =f0&$.K ܜ^_xlmI-tlGO{k$Ʀ0??ꍼ>o~Q)s LU_jg&ke^YIL6ûGL6X,4Xods;3B#0g$]mlL62b!?);̧Яe\V'&m-%M+LnaΪ s|.%%B~ ds*$U,3jIC2\/H$g3܆$zd{l,w G>Bh2/_  <6 \F'Y:B+zEhN6O5<bhOm0}Hr߃RBkJ࿂ e@zdsK ͡lnm&k-7`I l>b!_S, ‹|X.L6"+DNI ^4R4XȿDpD+@ҝ9udw 11NA}I/L>ElN|P,BR&[,oL}$e3mB~l2slnV&[Z8yqg&k)o[!b!?X4A1m(msWG}%ds`%mBJZ\`<~p$ B~P&+@tg ܔ6#@H1|[݆h[d9ё ~f>~L-YسL6佣X U,WzR,H\,w FNl)ͭI臲mVFiE[@>X m;Bb!)}Mлb!߫XOݍiYIN4Vٜ%B~Pᴃ + m!- n2 E{v:^DG ˍCNڏKdH`?{"!}d۞ -~C&h~QH%LbǗ '`iqқ4Μ4ZI,^c879fx>9s$&G<)vgF4 Vl?EP^bI.*rr*"J(s4%Ak\y]Vyk1!|oLmoV4QG?ǿI0yyȦJҵI݅f'׼S&2DoOeSjV{^F4I=UwM$:hFq+1ͭf!]pAw&R'+gI[5IJ()d4l,y旟yC1_R}lhB\.`CI0#iuG#9E=cY"#Q%5)9oGбC]Ub# 5mGaz`H细 cEVȳ]Z)xٟͱTw'Ύ&5rݴn"WW&C8l7SVG$qT𖗒SULyqZk$} ljGߟCY,I%^ѕ$.mQ]@L.ԗYƝhL> +kjYjkmpto?(da+Nx5TwN }Lp|?L }AL2Ax]GI4A}WaNG$}fR>s3[e{`o$B0hMJu*FĘ9# ]נ dsUl[Yn]_KF@;jR6y~D>,Q%QBiܹ yy~r-,IJ]蛘tïG9z--(i5 X^?lAC(W^r=T /ҁWeK mBSޮp@3{]*࿂.wz~k1~9ԣ5TYW#}Sծ2^<.h!&L2@kL^lь0?vZ,ۇ$.zwmHixg/z i:'0mH={b{%LY 6h "z{B1 sFWKJ}wgSf4L~ARܭ\ћ2S{V%^hN/iAx*hMGo=YN[yݓ.yo%S(O'7e=ކ2U_]D»J^{h~*34Y IDATd?&ND}N٬lml"Dli'b M z{\.f3&?Y̧8ĽSkZlJ Al;HS s5:E6YٌWn}D4PFmb_vbbZY~>U 3V~{`Q2l%~*";jd+gw3<&~ղ]Ǝby ‡nfxoI-E)Wji +"/l`wW63K{(ջ;j5wT+"I (HndS(/t / $gY'czKҔl6W%i-|s˙c7`l턢$#JOsK<~|AgҌ 9?f@ӗ?v`$i.V܄Fv8k|@gH-W?޼wf\slۓ8.[Q|laxΫ&*kؾϞVqkipg;dZ4iը=pnQwL0A6QWb< q*Z]_%̔ÔI'Hd)E}1U.U{]r.ټk!CAHfwZRB:qn?{_:oAZoբJwSe (ZVdr`hzl {yRYK":GF~Nf61wgۼT&}GWEoJdq7*2C6svP0Ԥ*A<ctC)%| X?|w; 󸋚J S0  {ps|QvB:kŏ">̯[!)ݜDz=z ~T+4#F" ۄU yt;f4{ސā>jg_稽ѼhYI$qL*2 idG=(2"#Iߧ%c4Y:y0EnfQ͚ހ)t[FœR/&4! ~mOdU_]I԰F_.+ ud.2Ls7Hh(3s7nRm֧7Rfe[bG_`NJ0&\Pv7خ gsSRU%یN}0Lo9{  %_ݥ$ѸYABnߚM/m`zi-.? fc8A` WPY֫==i/Ϥ9=.0iaມhnak^?ld˦t1I$qt{6mOVInļS/!JMlj$rY~:ﴯ [Z^ƺ\iyΌeZ-RazOif7Kj࿂ . D4ij9r1h.CЎp{}!zZwox2h0,7Wlv f[L3R{o|OHLtk"'n&Rf^˳nODtIa8$qg3upe;=nnW_<恣@L-3Z L D]q=4I>{THwƳt˖HM8<ٲeˀ*Q_IUVTfN3=t L@LGݿۇAU Y_C!ИFN)zfrnbCO% 7Al &9+6r&1W*ۇ ƺm>=0{{>Ɓ XLL胘Dђ]}>F5p+aL>A84}`6I=eLW_ot| i{`0Um:!f?uI?f>i>3ϕ5ʂ$pN^׶_; ";#GXxW9<֢czܯ>U O3`"AT{-3:[ ]pT^*`va|&e\5$~- lw٧%潚Rд0Ihѵ+M68C\!Ju=Ѥwl@pr^ٚwU_]I} _zbٌQRiᏑ@Ť-"\t0u،B$&Ȇmu}Y,u/ek@*:E K4A=Yj){k1?ե@vʥeNѻc~Qe l@jIcܓmU{8glbVIZI|Id+=CZoQ~mzqzx0uTILhu3)./4uAeVJOBˠ.vGIѹH?|Xs20e&<Fۇ +jY9-N:-w'ʖ|̦R я;%E^Q{ElxV7 ɘv M\U6q0/_FB|``NdӁmg M\G&d= Ix{N")a6UO b,tmTxl"h.y*0 H$31-[7֍؃ sq?hZ;R{ar^+~+N%ofN} ?klL:៽JkRMa + ?c?+x L>X6Rv;~.4Ax0fcYJ+_ɦQvfQ{yygVe+;McV1jKpxRg}CЩMlԟ%]FD̉m[ʏ鴙wQIۙ-0]2)ڻ^eI|f{rʶ].[|ed\Q(͍oi &ODc;Jҷ0wqLJR6 iT4x\Gc;ͨ8Q iuJhXGW#ߌIvfh3HaH'q=4%=@R=4p$55 }TW߅đ3C Ow^I\c#v`2Bͣ%M$&'US1WD&b19 Q~ \$9I=([ZFa^3F J|uu2!!l Hk'%uRүr~IʙV7!u\lRLm' |u גz~_J »vG-⻭R{+FT#̪{KGGiC0'$ԫ>ƙ a/H-맳7G r-Pg iHU{R}i05%OlP{DF֢V6zj`0@˽BWoeW5_5 AZ˗?0$ݍ}{/g+"ADbw o §8xtp&SBqQXA6$HU\:InNsL#tdw'c65z7yr(*W5F4lu'Μs@-Svn7aI7wмc1g/RagH*|^f\#OrI:7:$̈́qI Vzq7Ȗ h.{l\U=5ݤizlPMW_ĿA_kAX||r[E5_` s x+>,O[Tx;hyG[<I%I`ޛ&3-*ϷLɦ˴d7F6(j~_/eQ/釲/;PGüĽbt`[ ?IseliARos9mӾF nI;^R6|}GLI~GIYG %c x|*G?I,/{1D39XK6|H+O0wHtG!W_]qkZW <%qIvPegF闲#,uo?FQS^Sm$q4@&gsZ4#aRl:yuKY7! |Eu.Ч3=g}V6 v|a nemgeO9Ne1K}-1|k{%/AwzsO@d׻cwS{Et&;u:ZҜ$BIƟ93n5WhE3Sw5?m^7a6E&/CNkE[˿ +~ք^~$tr5R׽ E'"|ICTF؋{pe3h F _8d.WqHVCHmHA,Dq=͌^,~u0& {?CUvثlvҦW'L[A7gʖ3+wpFImpˮ+[ M8e#oFuDa|1yڭw/:*aG:hw9YIe}]̱r + jY~(鏘:$id$DxY6>B߫i/-Ica둶Eyl-0:b! lTI ̣$pMG AJjD:vјXgCF!}.&>iw&?[ḃʦӦ~Z~wM~=ۀSlɯ9Y6vV `w#=swFbY$]$n.hl5jh:w/3 `v8ڛRqF57"fs\0yПePwAgdM$'ˌu>-ILᅲ]eOW [ Ֆ0 Z$F{RDf0s=}`K$Uc-:(n^8%@dhjF%qt (Mea*ۢg;BlmmZߔ͍So-&1w}cB{Ξ 7M*NIrw*^?B; `?ښQJ?ڷeR/ɲNiB!i @H׿bJ'i~Gxɋio?$NC}vnltzz0a6/e Z}6 bWE_5 5;$T!EA10ۛ7-d ܄2@c= nd$k?ٜ(hيadR ْѸ2Iwžfy.cd'1·8oX@{qo,Ut%1-.q"e/h̽rg2 60UAOal}d+9&\gFY1'hc|*ٴ Gɦ1-+VJ9\Yy/IJc:? +~ք~{JYGK]đ"^'XYHodRئY |\Xs4bHЎ\%MNZu\sWΔSmgW o՞0S J=I -hU{ZObnM6Lց0 Ľ M=oy4 `5zY$F҈,-2q@-&QCV}d3i|LzO=ދs,3T,Ճkϔ-;zpW5_5 ?X϶AӑxEn6H,> |H{bN .5dS; .ܙߢ~~@W\g7Ν*i HmqG'u m (/t#|SD͘z1 >Zkuz ])ԩ0 WzQB1R(OOGclLK ZL[ҹcʌ9OUZR~S8zJGQsjUzx,aa#$S`b`t.}fjՓn-kegI7^:ұ?`Ѥ֦}wID3"14S/OhVF;^#[䦂 +7QCdka_"8;h$3-Ak`RWJf ̔~LZ,B$0KFHOI&qUϘ \iŴ2coV\崎,/I3Aݑ:{8I1ϧjb)-w,:S*-iR .1+ζ崮n{mTqaG |3uem9|QGMڎP{Wt3IA2^ #$jpUGm & dhe#uK=v>Ծ%7gj}M> ퟒ~_$mnƶ=Hx࿂ -HiG$}+s;* W{O`3^0TZn@:A-gWKz(/ BIDA!3d#ו 61a_ ՌyIx84{D1mĂ~|emH5Y>@$ޒa yjx S QQ{Nv5?X2c>P?8=>Ŭ[P2pkRwZI ~y3 ZRueD/Bw/30Rm^MnG,L Jh5&?oصJQg/> {38nk=] C8I6+࿂.gM%$ _/Z߉\_љ\PA-d=>Pv"DO{0A8򂉜fdݸ%MN g DIMH76x,pfISI6Gww{f256l;)ٝpH/U }Nq2cw@[YqRG޵Ә2A赲Vz Me?Vwp全;8ǠIl l?ф_6xk֡]Bh:ahusM{2hW5_=lL6T|FRL6FYO!_+iDo.b!ߔqB؅)_*yZY]A,\&kds %BR,rZ~ds I;3.̒eFVeB~' ;\Rb!慎($%lX!5 01utS~M|/ ܌/6Ax#猓R ߃{"CPɻI2A8;Cj՞ 9_Wk6<يp[)iأ]_:Vc|^*lT %e^QaW_U;\?ICU#ox{ $qlܫI;lsT~n,gG0w:+v*fld8+4Mr_u?͘!X!i?ޙt O{ce``"kbesY/||r/ ٣kIMߗԞQVz YJ o/hn"hsݿi~t~1?Yh$.tA.EO^{CdJuK7LGI~FT L8 +]}\NHS? ^E>!BOٜg Ig @[}i/-Uas%q%~Ay'-lGuD( ׹io#R1PFXL"{zfE[^gdS)ْ~曔Sc࿂ ^_RM&kL⨺XzfMB l-l)$]\,?Z,2m$GN߾)p}ll?OGx\:y&qt38uYѕΠ\# M7G.DqD6{$̦ ٘ٴ'??v(˘Cm]}L^ ^u_:I$qcѣI0XBo-05E>KiՔuxmL]IcPGwY +ϐ1.KEaIOHco.pK^s;_Awy mFNo\ ҋ$}wY&_$`XY6C\WJ|۸יJmAѤ$sOWYzgǩ,DQ;{;I|I3]sfIUI I⨷ Քuy0KK?ՍU4>#g(%Jϧ-Lu7q^05=&ٔS{aUQ;(贯 0A> Y{/wmN 94k`gJ8: +x Y@@@(˭Lr _]Hr}0=IU}bw),%bM&M.֖eI݃4 M]SLCnTN* )5_Vz^|"۠+;cZGef-v-$B`Ի}3^|}ǣ iLJvg8Z ځc:'wzki$hlӑ)K&@;xx +P&s~SKdc+&t1Q0b dqNN$Hgx$Km0厽<)Y4RpT4 g%^el!&[_{;2ݦF`I]'2,%tx$&[—Λz7-EUZ.˲ѫ9LIJ*սkl'L{~a'h{u5̂iL??Pm"=i 1L6Ml/hKy6j*ZK:*s"/޼NH3L~bJS$)gc m1$y(C&=/ \n`W_]F I) K8jaы #)p+)KM$v`tw@xH:>;Hdhʌgs8Z⥨dZwX*M!!=0#${fHg;hOCO3fRDԭjKx?W_ſ|iGC {{>r}6xcBR{_->(Wj438 g8nS~&B ^FYQi]Q W<Alk LN]oz lTגjRLa'oCMQYvzz_nGyf`"=U$ÿ)O*.AkP݁DۑF݁Y =<pglk󎮬*77;e&2 0UY@*at3@9 LNKfI=?poA[oY++ɽ|GCT̕chn4*0z/.}s>:uMP왛Ks:Le̢cZ^)yl'%v3SX9!*s]K%A5 f۟{/0gFsx_6F6ft˶ܛ:} ed),rLIIIgSwJ%tS _wy+WOG`_4c̡(\ Q?0AXcׁ%+<j/;Y}5<)1C] ‡)_QϴS1o1SP1ȥRL5 \ѻei9f?yߓ0j[b[q$fi r)(gU,*7_?cP $mH#8ep+7pK[v:JIEGh^NKDclm,)&JL `?N6Pe$& W`FlIhl.2X?R Tgk7͐m\ЄE-Wq[8sڿ%hx U1Ŕ0 ;ql3;Ü*)"teq&/.{OG0jJ@4cR{Y2R|I]7dqg~IUwclsOi+~g߻e&jҦ3%oe jn>A:-ttZbPʼnIe~I<㵲A" Δ Aғ?nݿ/δ'wC.g*D>"W!i9S`Q/qm7I$ds SzNl/Kh lj_gJ}$>RBJkx!f%ϧLá)IwI]:3OMa-Iʚ=2tښhF䇓8ysKM%7Xl\tREC2g?$٠),c*GZ? SL4Zދ|i(l^u&?b`l 9\{8:au pմb_I-NՌ7Hz x|3 ا1im AҽI@ql r.pItׁdC_?/kL>cZ0z@>ڻ惘ޡb9UoV@nCi)Gh=FȖA>8[k>K[3 N⨒hn&he+uF't ijneN4,ՠ%'[ْH ߉&2BkKQIu \?!jdk\!uD6YmKq7ݚ6=$BI'/["q_\I+EBqA2+ la]'̍d m"TIu%'zU#hwvK4V4 mLNEJL+R=esj'"lMIƎ >PGAǾ5E|cxfOy^ʫ!zp{zq~I6zxlǟY)vs^ћ: IDAT4b 1'F"W->3A;0TE .+.@6\C َT-!#A/'U/zGoV1إlt ¿(Hro#}esי |?Miqy[Ln#5Pa a%|F3paޜ~*yOF37^kpwђ:0E 0Ur9{u<9M{)}T6A8+U[nkU!&?]slAהXo 8MD#9Y˜zۍ n~ -C3K.$V6M{7 uw |esQ1a'c$񃫈ҟؖbZ%EjF~+?T:WdL &+.;7%Ylvok$M!KYM8lD H6G,О`ۑD{R)Iכ |oGVhlW$uIw/H.`e,^Ђ栁&Ix5YGLHtAsc\=8 &7]tR9h3]̚h$GRC7ۍ3f?-_$Kŀybnͳ7#uZhrtuGp_WVu3/)h[լ-Wz ߪwsnW?1y=?/-I ,i5Kb:{dְARLyXCmgnՍ294֦l+.d.hNGM~ sp6F^P n˥#\6o~Y0Ax0>9|Ta-/ |42 b|/[FwZX$B?D=΃ļsEB)'ArLF[|:л& Μ{_ #/FJJyƘ>bhw)$qT3v>)QLaei0S1U_bpcKhA!Bkh\o:Mݹƛ^0ih\^7-@Ykh|4иoj(K稐o&il?wC'Jh0bIS!tU>kh\BzY&$fޅ|S7fQ|ӾBI|ە.b$5M3 \C>Oӭ54K⨁:Bi\!TFG\CcsE*v[jnr +dFB sᇡad(+&:c8/[Vѽ; 3A[|@L~eH^ L3HS8$ 7AaW\lձ* .u܎]d"8HZHvR1sl1 & hvFp9h2lI|L֗InNfkrʵN1I.~%2*$ 3AX0ALp.=6A*{b4)IIDm<<oװDcn*Mn0A]+fXml$z׎؞|^\Ela{?!tIz+aᣲф;)iԇGlJ$e+# '[rGIHK )|!x^6K6qlob\ %䭲]f1_I5N$^!.s8Zi>ͭ&W^2?dlT:5fcfkRmY9J3=/^$rN 0ѲuR@?B{ڜRfHD?]+]L૏XɁky?r0vݎԺ'qAr Ig8 ?gOGh߰eSA{kҟYnLdtpu3gXhdK۝R0+0MM^ILf՘/&@( [yk+nI+Tјnv3gv)ID㣙ϛdByDy (2#h>7#a8C%]IUllp{4-sͳ#?%z+uRsk!w & 0$0AA!glA;LIz_9xml#rd75TƯa.)^#r=kЂȶ놻d 0E-sn93AxP꼓?Ŀ1A5_`i4lE?%ݝ  KdUG .7%$qԊ:ZZ$}Hq=0= t^܂=ބ_9'qaߖtt8zRL."H=[+T?>cL7]#*|v IQ]9Y}IL>!sQ|U&W$qt68N6^n4ΓaMwڜgέwiLf^҃UK-h|i 4Й*H??lZX*ӕ*[~rkMB$_ "ٔ8j-59fhit3!&2h-2$H5 ,}#\p0=ot -H%yIﳼ\P+;I!$>b[H&q3cA.ن`(}_v&׌yQ@Wls&#`δ7^jWG/6݋ S sSk&N*[Jҿe0GB\ChJ1}OMsxܘх@cb|Z6m*eI_”مַBRQ3g߯@=}O -&)o~*RB6FnD*jC]] ^3'\!HgMƛ }@WLwcܝcx!VƲNO4֔Nߎ|AIulxA?z b8}S93`G:G(=?َ7翄?RAٛ\ O؂Oc$];>xIԨSƺ\_|3:<]"+;!) 8: ^ҭFl G@1O;Lrb8jvy:mو^zؒ-낈\B=6I4AhCΥ7J1 mv,.FM- AI}3p\z؇=&\|vNS qtylrmWM+@11W01-&?vۖ?@#D6rPs 2g+ .& et1^N:K-z7-qk%JcN b8D@`cR]H*Z8hKeM'I3AxwǑ ~;$bP٘tsDLJ+FuOc/j|yIwL~8a^ce_ބ9 M`Sc[5>Ϛ w/%Nt#Fd>hi.*V˞pْϒv(oK鿈P?,[t  +3\G?,wr7W kogWl xY!$[w 1-yƕ)ntMC6h[b$gy|~%,|I$J.[1a#B`1 Zh/pCOZ^%W^\;MHGe&$q4/^Ov_ cqB6Xv}d=zQ6k,Z̴ Eڟ~"odzߡ |:bG~ ݏ7i;+.SqmAG F˺4KOC%$mpE$qt=n (+.;"(:S.6yݲ"T,)qzw 71na>s=g78tN?7Av[`Ԓdq&/7WnK_%j)8~Լ&ul|vsV(&(7F&wۂ}{._caLי |?ᅢ2g?4_pxH'0IS(W1мl6$`[Q1OO6}bl^IRj|XB{MIәyVOGL8/L[E$[`x=kw0*$.IvuƓ8VŦOi_I#t]kdRW&S 3mE:?Tnj:ٻ  "d|(er1}($!m? Lrgo0AeaIL^]c?J '33M1IH.(i|\FOivOX!ILaFoA 3MW,\4^s\$#L>y&?5h NT[*z8`}|$M噧Hr ?~m&I:a+9zl&o&;ɱrL A":5S1AIPx']c>XL^ .I6A I:P![(2O׻82tڗ30>` b.VhE=Zfv .}N&-uA?:KW8ll۾~s>j?n[Pޗ?#[Hb8o򰘅~ Bc֖. Mlt$W%q ¥ItjG jS?Glj%qts_d)蛒8ԁHGd~$q4Vzo6uoO4%qԈIЏ|>C_D_K]ISnpwΡo%1UbRLOBRa&JW|t:qIo+C)52q6C/s/- o:?ޥ_Sw)jW$qt2{S1?n׷=&}y &+.۬~d??v?:%Hztcl.hR<#$FKr&ߖ&cNGQp~&p) L"W/\ |65&W R߸CeTRi)yY9Gy*E#Z"h$o| q˃MEҗM~ELo4;p/ɶ}c,ekZ͇i,Tm9y>&{yY.'m\4-0R"0mΐ .3g?o@;~~MBưwXmדX] wb NR"98Z"k! ,6!L-dGٴIy6\T ѾCmɌB.'{uʶ*Ս6A\G';ky}\sVG KRI x30&T@_ B6{lKi(4#q*kbKh-7_qK;pU.ϟr6OL~<ߠc{PGמQGKgؕ cVd^$ |{)gS3g?t_p#-/qB{%7؄f9|5 *ǽgnŒ1'riD\ qoz;k}ghlrlJOu0A\=ǝwyyukdK3>C&/(1ދeSi&dޗ2N6 ~_r-WZu e4@Xw@df7 W[}n)W1F*tr[/Dby?bǷ\N ~ԡ<meXϐ:t:L/8?y)ϑͩnMhZ]* 쌅yd?d7`1W;{LoQ&Q= jĽF@[%L0u45ZOat&G%MdQ1^'vImcW l&µk^k91e{GA[=}yيi.S` ܳ.g\Zg ^?LhѸ'x)äjX/ ?*G(6۵M3g`ӲW$qTW7qߛkh쓤\Cco!4JR}qK*;l[L%И`$3Ao`pu!ߔvи5Q7-iR!4oW7A 5xs mB0ٔ|3 Dl|Q7]V$5[YI(^L~>l=ZҜB+g@}6> ~3:>vKڕk:H7s |ӵ禰4Ax-([uU7੘.Oڞ B\C2t=m-\Cc3g20.#G e=D MVL54s r Ozo?R{WҼB^Mn  +.;"YrRyWFˇ8@2E6)9!lNa\s̵R6%ωSO:j[/.6q ŸT6m `rP-wQ3 Z>"JMNI^0d+{<bڈ߳uk"ZQ/?}psdg}$وQ mmlj AMNdWMl4BZlS ;¼z'!Rmf5q xϸJPRtr G)F6NLkYZU9׍;Tv\&{^^%ԍ3g7͞ꧼ'$q(fK tgbY` ZUbd#cVX3[೐F%\dG̟p ^qU);W6MÙz$D^mrL.No&'qN?NQ\$]#s+$%tj幛O~ޚvzRyLy/HH&}iQ޵ۇL ߔŞ)=*7nn1):sת\X")[-׎fv BMSqGkK cܝ0%:W'WR"3g?o5@k ׸3MScױn)&4 ]MH8c!1-;u|"L*QW;W*0GR+^O㙍Vqh N{DCHO1iAhsF](v5m$ + 0=Co˜zԚI::Gؗz>.g y9|{.jiOm^epecK*zOxcNҬ~ L/Lw%m*S /#}_y/=m}1 ,Zu Y 3QW4~nkg9S{ㅒђ8>>W ժ}l^|&0IS:v>v5gmSn$R$]m =\)W`fjFEgfpag?+'f<e:<.6-Ԏ?m$~a|k!h\~wLe<3AE@Z_rѮICju~?AhIݘƳ0US\э>H4;͐RuיfMD"_^T1I-.0вWW<y8:$On宄>F9f*%q@-q*'e&]Dr Sy(#֡q5A$*&?]_Kcnª:scnț/:NOrEciH?=kqح~_a b;*!)W{lgb2]w(-YIKF%kϿb 䎗5CWj@Xb=#uL=7|$q]}f{gZip R vrD6A_3Ax>Jۯz>CG D20׎I{U2WHh e>OȳWM>4A-skhs&d>@ ֒$&D3*xvrp=aEwLT,ꢟ\1Q8\*hY IZXt 8:?Es-U;iklFbi7u1F#]׿q@_H6~@FkpkG 8J*6Le]L~w6S"*ts"󹍔~j)_QGoArD@6϶;Ι0=T &݄Zn:\CF<6VWn`ͷlw?3#g<mnlAab yo&25#kU,v"Fp03kJ2ުbaf=˅(bzѡcw 3,'fh9BrCiEiM^ƑCa{!)ON~h5hpB .p1 1^FmG41.p=)uk$]iJRk83|&gN]IL&5mA9?+\>ʾ~TdӪt7 >DғH̴o&HhuBfMRA9?s 9">/Q \ΙAs%qô;Wklz4Gt;`>nN1H~ưme3a [y.c]J X%< C ͝btxQ@]Q6>$dgUR1Fѥ|T8?Ƅr5%'&/kT-jI?{5$kFV}㗲iV Mg0j|of߈:\j4*DhO_@Wl6lWrFLϕ-,$=$IKxyrIa9Rc8X\*MWUuZ1-`Z0U/f-b"Eh1a<=`3gXhD`. 0&gIM#igF#ACD3؁Y}T$i JvlD*F?dUrS]^2قYz\sOe.7A/Z~[#cI*_mE}29\ff9&_HI j`q+j]*:"LL%16Yy3;[5|]6h:LR9*BsYC'ע +8%IHr9࣋UF n$Se#kt?yZo3g7;cF/$Z8@KiQn`}ݘc4ˡ$I$텲#1N F{ԣYW|,{>ux৮w'q4HhhgT,&8fm$ ImJ4W}!/ w'/`9 C =K=){p3Ԣ TQ1KJ7&96w`Wʤ0߸hR7/t̙mR@Zj2c=zQlTI6y"l/ow!@}0LN~Y҃&+?  p pnuگ1Pr"lJ$;UalRCKЧd;`cũ1--Syle)4 g~fR'=hDqlrgkc}fF.Iט cN$f$T㿽a30t1^fJ|H\dsh?1Y|B6G\~m#{l~Yž|j&/amf/Z?|fUs6+SWn% C 1P @t*k I{}7!NEG>û]' §yfrM7 M9!SL"i (qC}ޘ"ٶGqD$LVL)r% bl+}R]8#ct}]hcxW@O5f[^ 4Q691>.;H cc|bեh~ږf 7`abR)e &*^ld lB\l7$U68ԬG$Eotq ak{l% 3AW,\45&9?FwM~Hble +'"H]l9ʸĽ]j9JLa3{&'u'L}ke>GUI)y7x_Dlt3 5vx$fOp~QylAϩQ%&?}7f4W^'H\/(֍JVx?Ӑ|kp+ٞ瑘gv3{F')1znNNp ^͘f iM_@qP'_iz p 5!%Ft+$qt:&g?ټ>j[? .U7:(꛰OB++!EKl?:i[yR;dkc9HWR=MF*$u$/Gݾ\> A,1aR=U.|(}?s gJZW&wuԽ?-?Z$#/'M,31e&(`NuZ8K D%R~^٨5y(cK&ϫ-`S6PYdeI_Iϛҝ[\&=z u`ucuy=yyv fwv;Rrbbz?Uf 31W,\49#Me#Lo;奂YJj. 0n_#9.]?_CTZ:­*!e;TƆ#xL}AKCcq~f|g*DwOȇ!${$]'!=yo88qوf S&d; eMwF]?3P:Z|,B[% 3QW,\4we#lJz1ennIF «^"cZAg&"ݱ^ΔcUzl2T]'۝l76[PوΓS}up$#(/Y'P5?~iHB2|2zՌ$L K15v1qg)>HKZxR\_Xm4܍9FVIC9hK9~,}jC#TTU'a* IDATn]Ik[^Re-]kj抎p4ǗK>`T"zre:ә^~x\Uq]ԽwEN <:1Iz/4ΘV za +<{W1Wd0~3g?oǚhJAG%0ټf >\6WBs_3Ʋ@~ImrJ1dbwK*[1;QE]0W7AnMc13%g#nn3&C:oʊtywB(7J ed+r9Ĺ$ \bYVw4` a#%CYnhs<_$vh4(ow}FZ$R~ 6ɋ/Μ[~QIy(ݒNIb,0A+XH V엟$B#|P'L=N6絙O7=)ያ_Gbrć!]-ƴ4Q&uÑư!Η;M1 P0b:¯:v2(cPjBٔ9oa.t{%89 ! LOL^N >E'`Rvֶ"|ٞR[MT1!x̼}تKtLnwu68w&U^NT,-JT^OգT@'9>oOb/9 3/ Q \¿W |5iBؔO <sIOh0A)و.p }Qpm  /HЉ$?GG*~odЭ\iݙ$$]op-fs@RDH' |>I\ƶA6ǥLьU%U9ÄNŜ=1Ax58I#K_W-ך3ѻDb6LP{% g-I 'Ir%^e`-X5 17O4gm8Z$ò=+_Ƽd0G%q4$m% ƹQFr]SVjS1-dӞ:=G%Lq50}2` 3AdS|be;XIwKTp/0a5H,L&iH L?32W 0n[w 8g3A1$?[s웈gh]-kOjc z44]I}Ͼ p/ZI%q%R{r*gl!$U}ZEIR&qs%.̩{`*7˘~U{bGSѺq>g|15A$2g?$i6O/_GG%q49|]I>d[zDu^ 7 ioiIpK=`m|;, Ek]I&+3ROLHGyD y. ퟊Tg0<듴&3ߖ3G:blo덞uyU*u_t__[Pֵ3ymg3Z܇Vv$ۭ?nIzlS_°đ=pj.hlqvO(12xF,o@\ /V͗mYh3VJzsa/N~ho~mN?IAybP%qTOYKDqX-i 9Sﲔll|3&wX]MIc]e8ƅ)*$M a pijRcZ#KH<DG;JR{tsH| Ў @+Y^z xI3X+%Ur4t-*oSs>w99DheOt,tr#=}yYAJ ^-%|1k=`}L0zqova3v0mw)9O3g?TO [i&HmL:t+W&qt0uݘ WwܹޥO,>6+Qހy3!xgըS=.m'=3VΓrKL*/̇H1:2 >q h%Ucsv{׎BC- ե l/\ {I 8lB6jaZ8_1AXH(ϵp/w]58Ľsϒ[ҙ[`)wjhNK5 WWFLyy4_e_Kkeټ2g?0.@.$# 1eyAA|&qTGƷ<Aרķ5A!HOr.8?718H:#@^#ʁ*bZ5྿azew7%^ $!0. "`A@ l#*"X 6,(#@Zދ$ 6$[fw\w7;s{}O=gj'ԧI\dDF/@qNiB;RX\+M/5I$^n \4@認60=MS0H0`!/A" \yGd e0ZE o30ZO^2Esn븋7@VRI#3:=M2L10I 0?/G{$os[ d{4J6Ь{&ɨ+siZ 42_gSzKJ9s\˕ ${ D ye#|4L@+X$%r 1<:FݺƱm|?]4_jrI*ZA |k4Q!l >ݝiak fc% cUħȕ%vQB϶k@ܷΘr0[V@W޼I&cN?0$Z ڐ㿇?`k$}5Mvg~r!w$!y)YXBo?u֌C2/SWmF"^o$E8 ¨r Q+`Z3眇8  o(;a>wx;kt(>~f-s̱ϫUHi+fJGrsjLNW-&ǸTZa#?4̯4֯g SѦf' %Xq5/HbȘ-c_UkaJx:y5U6zzOUt)v#arɯF ,k9sO.H=fl* k9h@a="3 xeL^Dk;M≤*lS:Z$>HT/EMe'G-Wb rџE&rE?b\Dp6d6D?LD% h-LU V)7L$(Z0K!*Wx-ƯNzكxfzC}دsؚ*%teAmtb4'|O5&/$L2CgXerC\K$MiO%hܖ]}En E$r 3*ƱH%D'?@bĵ3"۠j\^HU-QYI>_.GE'M fI\BEmkI|$^Ц"ޓ6ɛlFc~l7M00Յ00mƯ8E҅\w#R2[  c11c ?K [$Kx;82k%MV-<1 ˌv -FrE m)~_3<{i HC׾yɁ f-߂<.'ARؤ91AHxL =OVo?[0/KzI+ifg0_O0sWr~SsKb}fT&u2 IDAT]B2I:2Z,G#&H@y) #8P. m}.g '2a)JZw5 -g6G}Evcr:I\> Y<_눶=ܕ?@RW5ɷ~+ Y#WR47 Ab/|lqV&a w9/gJsq#W)(]>z#b8aLiM>4M⃃0zAe*TZTUF*G Sxf tM7c~JxײN__hk[ar˜^Hi'g cvٻvI$jF8?C1ndw&+sL4`/嫌}~i3Zt}E[oa8Vi{^.{&=?W\Ӈ@a4D:c<M.< yKA-G #e]i$B5m6Ir1Qu&U@Eab,\W{:|VJn@[_"uii w5D#xgHz˖{"݊d#3V{ H-W$T/ӎ6aTg?c 0:/30^Hf7m܋.Y7{An6g;A~>5滓H~i's]7W#AIk'Ԛ|X0#fC9{&$Gj_JA=5A}"%ݜ>0Mx d|pIhFel?*tZsP=j7!% 'Ox?DڅYo!.d~li1Z{cXV ڹ0fjjV`Qs`نo}}Qyl;(+g)Y!&I3\wn_ikF gbm3d|C$]nk>5y?wGK^QxʸPX/o=ŬVtÃ0:-U(; @?l\9sP͚=e=Ur)ۋHG#F\*IoVtWV%&|7j"I\&WY+ͥI< :HL3k3@$]Hw%o>:XH{]9 ů_R iTpI&E ':^@T̚Yr_/ce^{-֛w5(W:TFf mc( 1FcVF[aZ>i* n>y^Zi.l+n3M7an% >51'πI= 7$}L:I_]8>r9ImU?#?fUƬu6ZM to kB%:Qm*>(aI6)IBԱEA])3df{WL?u`jAbj 2~{?̗|p ~2mO5]K*/?;[a,}YÝ̧u ١*tk1Uj0m$˛$Ǣ7߼H>G-riR>h|[X6t"˾HB`Ҳڌ?NIe`/å0?aQn Q3yl-cѠH .蟦<L.Bd܍B9{_@r(9|J;߬OkUT

rR)b_+R^,u*sB>́!#Rr5W3øg%}FpFo5c}_E6ϛA3u 9*Ԡ]ҧML՜in._9{_\J-WIIkX@PI#dn $A}lJ'a@l~_$Ft0uf \ZhtJFHiLɥ6J:1G2"J#o'i7`/Q))7 ䷃`.n IMm**]d{@4y_y_Y(Wcrn`&2[o]OAy#<-񼱼6OsyFQ}49s@͚=e\7|8?A*CZ q6RJu" 5ė"jDӤrHlЅ$}ы (S8vy Z eݙ5""/9r͝VHz-o&6I?rz`W%M'e\F$Rx-~nb{{0j1f'E7ּn@#}\M䶷@ڋ|;_/2OWatQ1A>Y9{(L O O1DuF?U u{g >lKIy &Ap ~2FPǽvuykuVL-cMFUȃmy2>t'TF BȀW<;۵4ոUiiFL4̸>3vCe`N vl%w:GI vۂ0:+M`piċ![أ~0Iߝ8I>O.I߃4~ eڑ3 ]!|6ҽoF2Wor9ofS|~~:K%PȀ*Z&4mk39s@͚=oA]`$-t#I~?/;M>Fd$\~oqaF7fzj* Xb @|e/{Y3\>j\ )w (D5$,/\"mR%}<ߧI|\yT._ G#I}LaiK`  T2̱7ϸAҵA}*M>P%M ?ipo%-i&h#ZY>sڐڟf 0fXh1ʽ?([r >sy5&A۵S _*/ke3`":v,YF3?ĿL!7x>v$" I: uO6ٰmf̔kFUh@P ɛL{214f6fkңt0$}! ķ)?" &>P"T&+R`ulLSA(c7gޓU5џ b%]-@?jEgL D]p6-)|/Q}zmҨQKXJmJ.vxgb:=p0a|9@ՙa<%lS0I^M7 M?Y,AS~ͬ)"mz|,wx@%?𛌒?A=bƪDX|!ru[3>aP0%6)UeS0z !EI!HnkĤg0:7Z;%~ >g4GXD+q 4oz*@cZ#/ ĚgށVPwUzCۑν&0h P" N>y=Ϟ+2k޲_RQh܃r66{<T tvP.i/Uͦ0M6a4܍'ec Um49s/5{6kZ[0q bSޅdbSGl2ϾHeexS_Z u.l IaB^.r3sR6e-b*%S/!T0c)M=liUJ3n8LTƵۘX1BOc5զ pjU,KQŢ]?٘gN;kkW`[( SFk3yd90ҭ` ~|s߹m~ԁЖgRwe)/@G/E:Wl)ˑA}H'ȥnds9-RIad滻nGr3~$Ab҃%$$-(qlNMGYR+f<@}i6RfP{,"]VYKv.P?O.4qC H*%^riV!Z N4auF$~watv*푫g=@+ҪL! 0G W3h?U_*h|3E0ȥ_Bda}%JhhJ`Kd< 4w 6吝am&[B70$݆Vͦsn?ߊM.tqFH/MQD 0 R92:ˑJ,1]"'⛳M6Pe(=ڣR7VC$"ͽYH:$X?R 8=H3*tӘ : Ss[qI7Q fA IPsIRZZ H:~/7 $!]R9AZ}v'݃Ou?h3huNU$>HfVgs2fF iR&4a;MOa"+dj?hdf@K1=?r]r v&ald߶´6:,} s>]e?l%OWIT/&|A5p ]2Nd4˘YbVv+̑&1+AYďx)kmm`\UkT薰IE|raI뿬ROb 6ul`ϰ}C`1MH3)z43=i1sFZBta3D^j"p?CRq b돿s u/w;Z*I 1c3k|\WJ^,at/u'[P̴m4a^_E"OخVC[D2TC ^d n0_f^P9sA/ `&4> ` \f`/u >9y^]H _50I/`C0V3G3 ;$BA hyVPǘR#}aXL_6q?_!v0:߬㺁]4U?~7dpc[L= z#0LDp/nۥv!tͰO0toF?٬S,Tq }ѝHX&xmJ&w`$uH4;27p@5x 5U@yyk)Z#<[` 7˥G(tDW,F`2ѣb>Ӡ泃`^aD-ޕCzB.V6e\"iV9{&%] ,$}^ޘ௒KY}\Y 'Qs=HPbY A ї`Thb‹I@ws`w!Y 1Yu6e(i76a4n#Q'\GRéDk{z1Vm_?4?2C0 <b#~Hi%D}SOat,Ke{5Of6%ni.F[ю n? J A]D]/40&??_hCH!F*54 ?f mstjKlI'˥PBJ/+$Ov3tDu1gGVB՗0i˥L9_ABݘ <\¾¸fo1M%$XhX&NBr`q7 yBSdI+2>3rofTa!WkiU:@4ֳ}m؞F( dFǽ,TO!8a_ hsr3_6kџa"IAyIXF* hor,9V>w&a͜ިۄ O'RնZ a}T.ue1%WCh4;D5׬!0rMD"Zܗ8 fЊvkiUEFAr:Y-0r)*er>JZi& >~'ERym'դ:$}>_qN9{(sKbR`"s%}Ԃ7AiS@.WǦY<H!鸕{^=D{OFK2) ڔ&w1tN4)u&v%`௓+yE >KrDA0/rV }*ˌk=9HrET<0_4S$ PO$> \xh}/ɵM/r1 -Do8l9sPrE#W7L.xPLTҒ>:;>鞠z|Rۑk4Y(WggR~U}uPs޻D &0j4յk.;YK4 h&%J>Ib>C.CrtU%{0ݝE4J> =žUP^4E̿g1S94 03m2@rWsm^ikXPw[^K{T&n|[UF?W\4?#sUF_(B@>z JZQ0'g_0 QrQ»JCNTgUhjSY*Tu'CΟ.W j~W.%_`ퟑTRIB9W%4_\Ư۹r9%i)CriKqmw2`T?!HO`D}HUD ?fL3%Uwtdr=>U9s'Ha3w\@ͭ{|#UԘt jkٛ H~;0wl4fO3N.HV< Hx\..Cp|+~A-Hx~ $J.awc FhsuA6B_eLm\$4$To\/VŭڛY%O#gMZE^JO=}`٣/b`i1|c|oE:ם͵H-M$<74wSvw@ETHrd4i?ĿOÂ\bG6qaR@ўc$>O.Eo`U],o=Ȧ6bPd0Sv3dVnS!S(W]i `J.rs!BϳVj媏HIHHG^J݊i~ Lg=[$я` ^QEyߦI3u. !\laUR\;$M4ݲ"/!fOkH%FT$i)rwբ3EE6`+4(֎urzϱm6 z L? 2u"6c5h3DMλ|~\QH"6bLR.]%5v[%mE'Rġ\Y4)n xK[ =^LU.bCMf!g\ޗ&Tƕ=FI+ 6cg\YruiP&Z`dr^<Kx F*tktP'2$>Fo-[a1Ne^qL쫒4a$ߥItG6{\qhQ[墨=c@ekaA{(S^\47ANO.c5טTh:9ydX)es0 ͼ ^j2񞜡OW!piCF؇rKyh9s?dbFG?JO_ uhhTQVp=S-:k LPm_cr1=faGIj.E T'Y5cjL'Qhx\Jj$4= ^xCM.g֬I.5>W6o9@QxIx*5GyXRNy+_i?M9{e"_i:Ǖ˻3g=;CұA}qܛ&$)w+fzq,دrDG.Xh2v63ۙOѼ(y4 geOyioc$Ma-9s\{`&'6?NP!zI3*6I|;9}Hv!~}iĿ$5.Ff#*_c%M?ƗsnZ潉u *H73/vXE60ᏦI|'0Q &IMlSV$1HZGOIj Ě{obVWaN:e /~⅙Snˇ.3tYN?u/Xc9.M=-W<¼|wu,90 -61 oI?nQ!0_F&iAk&i ¨}>FO2y9s0[|Bs|Hx`erQ(oKm B2}S965θ"hFZ}`Bp[$L^n`?[.%R1lͱ| HPMU rD|כ>EIB*L$>Fh.ʏfSv\OtQ6I IaB|Qԡ_ajAJ˕u='iU]>LwgrZahzWğߋĚUB5LF kcag3I|sKˣR +ֳ 9s/O2@80{Ivۓ)`p\-Ao ;0:F&#r/1D-(c+NY.Hx{9NH,M0<'0AѺ aTQ7)zSdFl4I3Ì3>[(#H, u lb+I-B.9b 1K8k룎Q+4d/诙ӆ@H?I4m4֌зsקI5wU蚀//E#뚶0ME1^۫;m3H^.| {U- MSux3К2t\7H_7LR}u?+@lc !^1Mdo4>9 )OlÜ4\U{uKҷt'45M^[p sE_.5HA9{(} +A=eNz yE iLSrF$ېhMk~ f6~~\TjJ.^[!$:Tҡi#e\,>@HA-} V˕ ݍ_si&.MD3PH01N_OUd 091!"@H?& ^"Xx|Oxa:y^$Fri_a41S`{כb0i|}װ$q~z]A}W\y44w\~_|\-sPn/:as\s>UpO9{ 0-Mo" PoId%^ ~L =VH=lձ0.5$]h$&ZGi}Ffhr)kmOIyǸ+L.4aPF-iOI"?s0o?)WB9sLrt9t2&P {CڴqDҖai(V#Wak rf̳,3$>GvJNo:N%݌ii$~/uru&˫\l͂MX͛~560׿#A_BI W|SŎxEr9Ūµq>&R4Xd>s$\4B0Jda]%^I:HOx{_D<ӡ{Αz}4ǴFӎy|E&ʥ 7ܾ4*W}hjVRi㿇?4M'~хMdŒg1i%@RTM!Ve6ŮLxfF$~?t%|rHC-^ї$>_ Dy\<ЦNhj~}$n?٬SB /#9@)ӤBQ\S$q f /i r 03#',|%s\%%yIo =E R~ww'Bs}/WMwAw'o}-=xq|_&3b>3 ك0@ҟ0ZQ`j^> M2G0ȹC؛hvRsðwK2.lGAyU0uA}Rߞ?Y|b}̶g'yr#Lx\0-V!y wa?›fvn\-ג~1 (_{]'~3#Qb.{qXY׿vR:VqtD[M`u/;, Fg>eLKA\L;z<r%KAkʥwqLIM]{?e12k|ݸ5цb^3=eG\qeG.LWF{~G#x\rLDGn#0 11$=rUv#_Rh" vKafY14vA;0ښ&tLji)ḶuƏ9fۈ(Wb0%]zUĮ5͕t0wIhmDchK̻ԟ[==W[+p{mۗt'?kAr'/˕$ڱ9h*~,W40 v'S8&tV e&:/q &KT3yHďcmkof.r`$쑒|in}7e\sslk4;/WX$Xǹ?N(qMAaz彼4*&i lx mW>3yy/-t{ i\>hw{ɢUL 0%-yr/Ɣ?_6kJ %7].y242z|H8harm5wXEicς!hEL"w^,xx0*}T.Տ`j%3`_1=B;0zW" < XAfHp"ð}c R^~ӕ :;W.*IgXo7~8/{PZ y1]4]%h}`S A}y^Z֕Fޕi3=efOtcCpބD:S(d?0z72I}5+ JZ(;ow\%mf\ vV PE & ^ ;|{DfY- ?W.媕*j\:JICJwa10ڈoq-?GaT\GFؗɥ!smLMa'cw1q) ?L,8T.Ze7Eh3)4V/GH6?vy0s|+`;"%tc'ҿTVg*-?I@7')k w W{ W%Ֆ*Y jR3FUZA偒e "MC*r2ѸUh~,*ۅV߀YbKһ0{T\:k1'ѿZIgDq^,A[ϨǺE|Lv1>\25ȼ4=.47$ŜvLe_PUrM!k6sP]w1cwM'B!i%0t7{RkgZI-Ŭ[M2dƯNoS9y,!eN 0qanbNAmJƴf'Hw_%W4Ei/:yesxaKj?9s寓{u 0 "Wc,W! 7aUS$ 6f7؊^qZI^ulx(~Tu5F7,Hyh :;r|7AҽH'g$ h&$g?kRV.鳒~F mrA?wvc2^nuM0Z|g}v@?R>D+rS֢q+QTHI_m >qIx?ɴB7$yI|EN*L>8j\%*ֱֲc .U 5 T3H%Q>*Sl~VѱP`=:\UM Nn-Tz?c04!5#^%`fI$iGFL1ݒ:Rdm}3l=(\m sB=H49K5KrV. vc7󺾈:{E.IEӊ0*iKehy"+B7˕ݙ1)+8,ڶV0$^`w&۱Dn^v7-]˹ hW]T@?ybb8Go ZDPIELRL"Ӽ 7"Baq o(1`h$ 'i,I20e?~/i|6"oc.֒s2h$ޏiO VfT*#Tfvc:G^;70z_FIOfIz( x=}CGBǛy IxRēyphQ atFËn!; ?]&'$ї%}[ IDATk)W'鷴siZ#~h9s)*gUa44wC`[1U@C#7-J'+"DG/-5'w\15/&w{Ա T7CF:*MD4N X03Mb_Ql-M s1 D2 @Hjg^@A3Q#m}$,-\01~#M⩔&)u{/ʹ?F!&/``b۬}_;)1+M~7rQHWt?䟿 k}1'!(c[@pf4r)Z\崥f,2  GIm&q<4=/k-{҇unT oan5X.3?Ohr ѽǧI|xFY㠛_Kz.M6D==ú6dXr`:y1? Y/iW}8}N$-Vh߭rmG}RN1-3r}S62Lҿ$K-m@5s?ĿoUlˑ@m+>jn:]~'T%BY}_N`Or ?X4`S`*oގϛ(3cW#Aboe̽CkMnf_gٴ!ҟf+$n ¨e&:N>Z~+6p]] _'CT_zܷ8VcľM4.M2sNkކu)~Wz/1mI|>ǸIA;F";:j$inC_ {ph;i;kX#i_B)hb"xm ][e9s24Bh &ruO IIQr-7T}\8cI*K|?Ԝ&|bg3浣䪛m7@8 \KLSr5O1f2#]_cƹ232f{y1ё{\ROI+s#`FfA]>4ߍo+Y'`N&@<&@ajr2*y~nd0Z?zLd4U5kъ$kǯĶ˘K?Kb'aJc$=E*1h@7QͦJ 9U`4A719s/5{ʋV!V! we'_[i`7d>'Mf STpHcLX˦1lc {MPd:hEH븇1vИN$XjX)+h\'ur: u\u#2Ah?7&_m`&AHx"/uq |2<ØDZ_=yo\@+at 2ځa iqцѭ :TqhC3;9jD}6Il߿!r^L?@`=A]_NX:Yrџ d$zXQLO;N{c20%NqMߵELo7s=zMԵ^0oF+M$iv2va9sà!L&8 )rgqc,+/+`\%43Gg1eto$ u$P7ȥIļ0 WEL9Ђ%/IZ[$~\Wv .Ix5fKl&mRŜW!%(+9F7ga4wGKʶܡLT7h/@SmF당z`e9 PGy.B|ݬi@2#MMg_;_aKfd}B)߄kD;sTH*w\nEjOsCod\jL RW%àf R#e=)U <--8y`\ /y*[0m%0La3M]0LB*fm?H%=Mg01z$H% "i~iou]EY{Ƴ0ZY&&Hѽv b 1H٢"i M$$֘u{0;gg6eOH!$08.Q,(ETay,D (H'8! !=-?> DUjҟ1sִֿZ 2rrLiBSIHE=k_c&>PIF+vCo^]z~މ˜>Q ɜ#rkgk*{S b g-¡8V&mM2&c'O- KI!4 $y= 2SdygW҈LNcWCZ l=Z |lwE,tZ'Qx.= g_ FǏkRD:0;GRU@{ɴ=KڕDaoLS-3<t#Ip,5x2s*YKši}Q @Gz#gwl#M Nxb6kiy9kT>/yr櫋˻W{e^ 6x 7S0S&EYiuDr\Y;5:@+Z6̷TR &6%QC˽]7KߘvORry^$WuA{M%Q،]V\m0V_=t=dꀾ {&P=IG‘kkwc|Sbqy`a#~Uhtȝ](U)̶1ie4/0ƋlJ >POW>Dz];96Ӄ]\yyڨj,wUI&~Q*(|as{?,zϜ? mISiEjF]{6 %}6׬@4D;3=[xF ? N tvHj*LJ qq2?Tb̙se^VJ98Atp9p(sLOc7Miu򼯁㇞|͹fwЂ,-@ލq E Do D.g- 3 ELoh+- Z[)}4]hC5 wpMLts0e&:z^8ݾ5Zoy(~å842W:hu*80!])ӂ̳}0i`HNk0юl R51L{Hҗ=?9g6X3F Hf9d+%uik 0C1cZ0&80e$,xxLA+=?XF Ծ)on ڟI:ݖKTibKi`Q/36l3F. -\+:W#p_rUDH[wXMf^JYàmO2{`C%-2Oq:oUW߃D, 3ZVn?`XLlٓ,[p^pÌS&j1NM!Y[. @\ U9)u1-\[yW #O%wmn$F܎Sҗ ڮ{D VLŽR<Ѭc0e3Xס_z~ǝ,f+9/i< pz|J]ckdrptv GL3ˀ_Dg$f_L`eqx r"띵UUL8ң*l.t,',LM1Na!-&Ox٠#ct- ]f(B+:-L'!/Ti'6L 0!w/&$aH.tZ IDATۻ 0ub?? ߕM Z|a"[N3{\KL~2nzEܖ9o~Uj |`. 33@keY%A#>Kek0]ޑN  |9]&}Lr&nD_V_1M]:M&v>sl؛swsLI͋*ug/+-) d(}Ҹ\._X҉֚4 3Ҹؐ8kvŘeҪΕ p4.g\{A չ|oi\<3[=?Xq&W>͞⿊*{&kG42/,@3Ҹ4.^. cKӸxv uB:ҸF{s–\n'~284>1^ )>ngm: -a{._؝4.fq=L_4.NLb٦4.qq,H݆dI%^._h"|[!OtRȤXIg3XWfzKjHGI\bq$Q؛F }sB^N'#/1vSj|aS._ؐ\+/t 0֝vqq;ږĂ4..Jb}._ؖ[d\ϸd"n YI? [4.NӸXŕ]5ؿ-Sj4.~V-0gIܞIfIqyp>\ gq?oKUW3_3I9~H,Cr}XĦLL9[.sIeak$}3jL {~L$sH569$!o5NJn*nFa:$ 彀,G~uY1?IӺ Z0[^5QG%9V'uJDx~0`l7wO;^V? z mb' 2);٧ḳ8va{ӶG`N#f/Tx͒,wX26'QX =ގGH1ׯIZtI=?TƄ h_ =ڋ5> zc6n@UW3o,zIA&_W&V&2iy"!A'Ӽa f&{;km-3dN)):U>]}Q)?ۋ;-a.߸>e` 48kBj)I vRM;0g$}F!m \tl[ÑǠK*oTj˹joroqk(\Xݓe|h#eVOIE~ML1tY-ފt}K #-4瘕%]i}N/ 0O5 nO}2nGe" %ADX)m_r%]ބO2E\Nt_UW1(hTVG\ #HQ LW @x=>DS^c =%lݜeEy۾@zn>*UjɐP!r}Z|<cLH_p=u7ގS&ˤ mt?jW&o.6+NS\oӢ^ўmOۀ cŽ"~[GDbh@2kdŴ\c^H6ZxfżXļ$pff7 m"I_Wtu?i+߽A"/d^ ⿊*{ =Rkml7$3\ea\@e_Yڳd~><{أ ?o}iƽ).AېDame9""z\ A8x(PI1b.K&|0R_9?4@/xJ9%,\Ҿrkk4y)EIΓ49gP.RqFfyIt?qFRKkggz~R(iLW3L-^M2[Mq;-*g?O<u\#lb9Vx~0 ra ۹8?6@ ٌ2;QWK=?>s#>ɤG]DG{Z“ض/Ķ`yau>${$ ''Q8=™IP&ei!GzyfǑ]Vh hOeNNp `RiKx~MtiiI:2frw]DaIױGLVxqz;UR7>+%]U\&v8dK M2'Qx7vc%Q$ ote~k2I8Z~|O$:lZL'Guͨ)gn @綳0Tw{~91[p29SęAg?85#iI/u|lXh-; rٗsW&) l)S1ey~GmdFQD6 c-S$ /d}J H0u\+I1JQ~ҫdGα-F#`\N[62L4>IG'Q(|Lҿ(zLPи~JoMb_-_io n%Mgr_?HX3Dw߇%RUL8(*CF 9HD}jdz?_ *lq@?).6օ^Ʀݼ ($;)X@TyUW_Ŀ':1;o7kQ}XԵiIw{B0.%zk/1ZU$Afv 4L4Ti`6$SvK@5'I"܏:k&|vCG ⿊Oڎ$cJA?ކD] ஂ!yW\ݒ~GqQHDd=sHM#Ž*I{LT3 ' HL' oʙ 5z [uG -V{~%ɔ2L 8]ҁSS84ʔ^2`8m,M&Q`}E%idoMo;<o&dzgg(e|_⿊*{&="|$Is2Q©X=EF(1*M+3ix}(܎hhYhUG%mC&/t#)0e4$ $Q{~y~lei gJzыyӀy0 .qR7H+ /R0U+k~ I. Kf8}7N`^xZi+q΍0I?VȊ=^)Qz~p'fΉ1[А47&L.ՉuLWUL8Nʭ~ t(>fs@u "yiCIu#i٘s6 20\D}`ܯC&sRd0_u08{>̒v-f 7?ZH`F+0-w!2'SMFrF/4Z!y-2p]oh>H TsEIIfCrVe_̆|(oeK}q>l>2G/evLJ1W $ L5A/vMoDI{{.d'9ŸwSSuϳfO|G&v*,)1vgyG%0逹NpGLlq1V'Q8_`*Wbf e uL3XyD&45H&lLz*H{n0ɓG@뗒( eWJ/eGIQanJբR~pUWiJW+T::d*wIr#%u6^Hj1 Qc.U'-Bx~ysMt:J'f k_ICS}+LtS;jIIGi*] 2C=$]喧܁YFskiMJ^n~Z%dM%PƂd"AɄ$ *YaW읒%q7Ͻ_H!~š?R> 7؛# iHɌ)'Ӱf-wW%=B%I^/T|tE^0F`.{7J:'3I^R @*gL 9 6IP ߐ|~ &Gt^ NMp_I.EzLTl;uś(ي gEHT;'O%FwLt,EA H y/P7Wr[?|DṀuΣ(\w<}O&Q2v|eft}sYOf:x֚za*3B@sƷ w[Aԭ(P& z/'l`6ȾiLoiI=NIS 3&A#?XM/(k0#7~Xt2{Q7: C⿊*{(=N0)__7ǗXSty@|9s(jS2mME0Uj2?jl@ ?ƒi5iDJ zLы4/D~gwA,`Z|Zs~H7/f̉HGrZI6&e;$噶'IcL-Foa=ma_#k e"#|ۥv3KW ˔L( U*I2Q9ۢ@֢X[2GѾC7\$ byIx{Ig+drqsuRh6 &5FiٸG|1/yUWCI7_Ip J@gj:TʿU&ff˂KZk ZDvH\] bC萩R5 3c&2,%B=a#>{lɉ>Is5il9q` IDAT5˘'Qgc a^RJ!ܘDΐ( 2s&*"]V&Nҋ!6u m#f7w&Ƀd"7D"/b x~7~kn5L;&c`dW| ?ueAlZ2U6: 2y,fo/e=?8y'{~NQǖ![<7h*y)'cen@ $iC&x&Ǣm4;S.2*b$,V qss;" <]-Z. g[41N s>/g[$)*rs}~EJSGȤD=]&V|gLӆoWh!e0^  2 J$zԢ*uAicޱ] rznstWHzUи·YdKNŒMY:S[eL1s3O2/Z@ӴUh}U x5/|cZU͌'atcEXNNtd =%*Eip*Z!;e|¯{~pu7.cL yF#VS7%/S> UWY/6RcZj&*"N1Y@9y D骵kx~;-9gJ(<1I?Y0teS&xhtV҇YEŞS|f̪}d^sLrlIF~SJ*gߓ)CɅ$F9Z=Q&Xl~rF鍍/\_2/bL a2ƻd5Ar~O HΡ-WGI΂^}i9lzB-,&y>$51R';l#n^R~MITOZj'꺲{P%8f-tQyH4 xQ(L@ն$ 725$ G9ng_N0;v̆,{=5 ʤULn7TnnUW_͌'} )aY`; \4 _n5{>݅h"Q)qD )^$F3yfi}b/ۏ^F9~H[0eG&C1Ss&B͒|- ta)d]w9 >#Ň7&ARDyH/M2E@0mFpɀ?Y-:XxQ9Q)nsn FjgOWP\: K:.gW_=53Οt`vs\4sżN9WN#2Ʋs$}Ô2Ɩh䳩Hd @ 4$!{a3S)u#C1RƽdI]bֲ? ȶȴ\XfA71I3zT_[Ս;Z^Ly|6uY]øI6>֗K_~$ +S-2.I73}R^R 04%̔=ܑmPIKe"w6j}%}%=VKpdB: «O C969Zr8O*:?< ⹷V)oOZI Ly8\GMڳҖ0v 7:fF[ū7⶛a[F7I2(Xd4pyI 1OϘ8ľXf1AIeit,3E݇n5 ٳO .OB_C5o /P)# 4(7U 4?sNkO"?[-nyq+6RxTy4#oe5՞r&Q7ۑ*b:16 :c;@HIv%7?o/cץwk#vMZOlbN0rգc7(;޴JvڮN7\RjhC_O19?1폆2TDJƎ`cJ,fL44 f`R{IztU)Hq+[~/K@-L T)0W%:}Vh&fkᅮRIyXX60o4,yÌ,]Uƿx/V*ji795l%P[BXG>ӓ(\q\榌$A`;U39)5I xxhR]N zS[ ζ~SD[iR;~vx~sI#IļոXjϜpuLR>-I:# ȳ$Qo77:[HuL+-s gXBb|sVeZnz$: 3 (6̃Ctݙ6J7JZr4qe+W_=ٛ *h$Hd V'iMТdK7;nUƳ|^y4kdxZOHI#Θ%4INphgU8s(|+#iM<@$msF=G0=m[I6 4̃gT1k@Xɜ@)b_@Xz%]6s ڒ6nMʒLEz~p3`(Øg4GH@.hw]^X` [+&;w?r%̆dz0&ֹ)mD \UW_͌'aYLPH)/hm%HLk\Rp-1} ,XЍ1A*NLTiM,WԱ0Hyk_k2MO܀~6"LFd:[ZvZ$Y̺ 'jQm%}0/9ejR25Y'Kw/m{dΐtбh0W?f,H/iU>O~L0K92wFfˊn0R Vk@gaus-⿊O#}~4LO61q6 BL`@߈I֢^pKZ6 E7 # dJ&g"2q]IF2yRTlLkt-~Û4+XCS˙d9/1VZp1E>ļ!ӽ=H*driY>і.6~!aK*Փ/ys@sVxn/z<)f gM)U_=+|x 7mdY5l_ژ$ |7T=s#=GAŘPԁj $=DṞܓDa{"' k(A z>v+:,d#Z_-m̌k&Y|E9q`b{u(4M@$D.2E-dRfaO7 ~H2Tk\!)g/Gҽꇯ/J.j+T>2ys(<.UL'x~'kj'h+'MMCP059ܣyyb#xcNv̩iVr*ÉarJ59Ml X: Lх0a= 6b8pLG>#doW9Hjҥ55V{N:myiVI=)`{<Ԕc Bį-I8U\S.|m#%YF;ۆ5#N֔:-<2ڡ4eNQL%M0>?F&x TɝD~]HU)n6^L1`FdL.q?e^W*~hYJUIn_t y޽ѻQj͖sIIUWC_SODUxXQt)ȡta͝eAR[D L:QDh HOrCp0ao5LlL֚Or'rskcd@= ٹ2IrYFQb, Ft>ܩaÑrF*m)EtEkyIo{L&h_I59VҽAme ZU&`[BIHg<^nT`!IP.\$ Ob6{L̽mQUUk0L^ v:Ǘ-#1dΧ"G< 47H:|XU@[8pRDaWnHDNՒD%])M ] p0H~y< |p&wodJY^7\Y6ϏQ?k fcCS'$|(H=?IהHw42U0]_^ˤ܈glpM\\aΚ(3>6I8<,bsC_C3ǟ$}{{FYcn4㡿{qcx)O h2>ʛ/S_tR*sM8)0C<;r;)KC>lArs7h+t`AZ wDXl(`se/Hdzm:7Ys䔽9ْNp% YRrGYdĴ-mL5 ~-3x&D%2@)ZWN8U&Ozc%Qm0WUr!铞ܔDaMm^AP5)(:vuOb2_ָJT;|WTJ1>h^ys_l:h1)keͪ⿊]FLcsWuBm]`6W&e_B8)4Ld(Le  /Ʀ$ oip2V>2`DNclˌ]ҘrLꕩTU¤^C ˤ2e4c/2E OMO/;a4)6j:ZH~bK2;탖1i"V:oL 7i*9[|V65b> 'ILAh"x:hNAH1gmWp-c%ߓ8ވ/g3׀F89>l Ls#yRF5f$& e 0_Ij 0e2/ܣ0ym2ݢ%mBB!9魒(LN|H"b>~}b\/ pIOp*%ס=Sm0x~ km=b*ZH۬؛LDaCPI>,uP'xY${4z?^I&Qp^i= bs^ I#ɴf=?U`]j$DV9GzG׳NtsD4V>[$Mh7NS6L=SehwA_^_m6g#Zqwғ⿊ѧ.IJ.Iqq ~- aqq%/Z:(<>=j5q0S5M|я!އt]!jg􅾞s OHg$}Y&\ĸjj4.4.N) H"O wqYmZ똈ɤ4.ߜsBk2Lr5Mb_$ CZ5v敗 { i\O҄4.n M|4.>'xL sù|aUi\Яcl#/$}; ./lKNIqq[4.K:-Ѿ~#)I͒K`[+iD._2$D._ؘDa\pMi\LI}{Mi\|sYDv k`lqqqV\Gc\К4.Fz&X% q@[._HrB5kqqb\;*⿇NQo`AKgrI-Ӟ /DoL1ܭRx~$ _=B&}eSq95Iҏ#nLI?q=?Xsf+YS7EHioC64#7fcK-P`#נϖ4]lnYk)zri69u9 r~q'CߕMdI~]y%ǻ=N!<c:4!=,,K1 ^U}lUW߳aG._XE#sº\О>r7Ӹ8\Rc._ؑDaMҸ!"4.Od<VqqLF'RIghKLk=)f$i\| t$g$7c._4.i\ӹ|a~ouL$s-i\!\d._$ BbN1/64.ŷ8Z҇Ӹ8$=?ؔ6q`Np`s\&|M &GtD4.O\Ctcy~9/lAZo601cHӸj׸m4:u[ٯqmAK){#/l~'"yJ@\4.rh-[%Ŧ4.6s -|amߗ)nF6MӸ'oq4.ҸLb4.9{dZh29$Ei\žV;⿊*{=vY,`;БhCǫ& @>䋤4) r?$w0]Hp/z~\%IwQ4i #'%[`Y믱͘қh9 !if'Qxc\vdYVofH(-pIP)ғib}g{B9>K&\fʃYlV@G֢)*~ ZzLg%dhk}:Of]0&DRnZIS{=Lze\(kI$QxTyK`ߙ˖2KժR^&4]I>ZUL{H|ъcW`[BLO&sH5{5qmGcy,$Qx/?Wȴic( z@HZD_"b2 D~"L$ҡ8Gbɲ,emccl@@0@BMB$@HPJh!zR޻W%YjWZ2|O3Hڝr7d#7y0mG;@;/+,NG6^D2 ~?{ Mður;N 2i<6wv4S>MMxM9l{i[~e>C!wca}|H[^//DJNNF~` p1qSGS`3eNоEѕ7".ir_3Pqׅ01q qc?)}9'ȶa)r#h$,L$Q"6UEw~]!2h滖B$^@ Oa7jKrܫu9帗;’_i9Mүx,Jο9l^HKCӨ5pk3|aSf%}(4 H *@оCcɄ6QSnvq̗}#G*P+I@;٬!۸)Hl0R$WaJ+.51 .aӌxK9~4kd:^!qy-݋M!i):&4/n&s1iW JuiRGPnN"CTFPPmliMȵG6$H/BesɈX5=p/$}0Xm L%i,^6rpC˅2-B(}: /)hZMj}9#u[trJqxjGlU~z)7x7R\F|P;0) Qor~Q>}{ AJ0:ye%[*|s8|ۚEI*RFO B5~DAǂ;Y?)tQ0řVNl/U@= y6=W|1Pݓa ܫ} :\J.}ϧf9X9v9~ThmkOo ٤Vҁs+#G#@e!0&E[bQ2y ~ 2]Bez9hmN`hiBR*W ]9 w| s6T%\WNԃso \Oį`75^7DN-MsyUHn$ }Nw82bd9LٕW{AF4zq)/])O9;0<'D۠sm5r\~VsiG#-Y^w G`$A#`$YⳖo!LKϹ$$ZCfM\E {JXg(}D]$y;YRa*}g< E0-=Jcaڬ<6*ǝOT7q 4:3R}`oȚHЛ !#HfUdEEX)%B5d ,?[*trZ`e_&XWcS^{Xa{+p9 j`lL4R\KE?,mD\u߷ֺ?ڑn5GUAAXfq`b& y)ڟ !i H &ќFB|ĚV8YS|\Ƚ>p*M2Drn=L0og"Hed|]uep/NP|+h%HTԾƈ}hmV L m}uԜZ[tC Z|B%B~tpF-^'DvpԾ0$-`{o"Fj*+@0A>p5[&0+v0l!"7r5ww[s^\帵a_&PⰛՏ Ȋ?¿])5,n0ї+4JseVt1f{H0CxnA6[H+bSm4bk;sY{<!&v5^n2ϕffOCVQzϣ`lFW)?&wgLݷ~GMM6% EZG-#YhLX@T5I"&͡!M`V3FͭLwQ(|ЧLv3LZL>oxKܳF26Ϋ1^1y=+ǽ` 3%lE28saiJI)YRCFQjH_(帋6<& z\ {E-H$LQ!  2w`gU"5^2'n2Mjaf\kg FRDl%r{VA!Sd|xԦM$|v#G,At9 D9 *D:e\ZDmq/R[9cȜN p<5L8ohjYGI0)<h LP[%@8Lk `E 't𺷨)JBikVNQw} S!SE2 I"ۙSE90Gd,&Y9}h(&=o0ab#i  `` fާf1s?Fwd1phq4rr9It~-'@hTbz(#H ~G2֥f2#K @JdzߤTQӦ w(sSq/gQKfųeM #,M'׶钎[ߌDM@Q+}aZN)Y}* rf f0Pt9Ul bۊ+h!D=V.KeRɤ1[ NA0o ;RVt>DKq\n LkzXZ^*LäzAL PISF3EV[t$&#Z[h}T x|)/" 7} 9UlEN A(A^KX`Ud`0U;/'? %㾘+ifkcG%%'iBI$|ylbvLxxa"7ϜFfN3&xtZexms Su1Sc  \*γ~c#4@SOpLrs tKBg5;Ohmc LmR #RZ\]-%y{sV{_C:QIRmHh0a*Qj؆od"8}~JrܿEQٌAxu72in{NEo$ӣ$0I-7)")] SC|]d|0M"] NyR$.%`Žnm=HkX.5\(|5:H S8Rc]@j =YeY `-M ȭLwSe2jV2C0M/nޥx`8TFjʺ/"pI`ˬsޝH+I3; @3($|kH+ù.ir}>=h?/9 t/;6&BX~ GHH\ʍ@qo􆊩M&. Ռ#&CJoѬ2&l݂ &UP{nV{]9Y=pSwTהSd69[OwR*c,!,8f{1{<&z)ic i m]@`n~.h2wٲnulk:{P#SJ`VIkL1& 8};-Sm/M4R6?>r?që> $d#mfJ+ݝf0׾7ԙH=Y" V*'Le+4 1jKg,Ri%Hn=T9ܨG\ƔI4'h0?f/nOjwڔzߦH)v/^Ϭ7G!L+U0W&cS2vSin4CqQ{5o͝8h߻~㚀4r`u:1MZc_dTO juо7\uIv&f+ב!}78VzX雤}H_ӵMGE_5CO&;r.D4rLر4DVMs^ޥg 3E)K@ ,$9_30.a@(/ D 'q IDATC|u7r2H$/ME1)!w7!~pk 8%|Pfko[O.0]^rud`zR k@FY1`^ (վ~߻)YF&;?־+&:cFJ\KF#Kx~諞 `6]jeo`Q arw:ZA0iiF4"I$81dyN2#ATΞ8X,x-%I'p4OS&yٞc: iXix'g0&_y q' tzDnѾW,jh ,zr,F1Nb*C2i{em@Nb}ЬYmy)/ :INjKT*4QMPM)pf>`,yK_GFFkGܶ'mshn'#1*iGR[!iC; {)zOMb#GQD:^Sb'e )CNIתع/bAT)[ ~62NX;[0AJD"0Wr߇)8 iHOynN .Po1e#}zu&_\J)nsnنt4C52yYu<}i/eK"'*?1jqq}2@9݁+7G'c5[j h>v?ql%gzYObUwvJ&>qw 5#k0Czm.tqډ?N쉿pyФ= ?E&QFm-$Mx㾩}/gj?TOJmFS ֱ>& Y*S6 | eRB0c7jzvҍDe*Xם`"BNlTF\j@ ~LPjcz8m0]r|ټcxRD ]+leJb(sY|%9dZzx0Jo<ҳ.5zEW=݅hͺqiZ= &(#M+JYƵZn>h->>_;S"?k\B"l56a,LB[I^jRHY LɅd*jM Q\05k2=&]`Jvc` K?̄ӣ50/l|L Ծd^zp6[$epe?о/uu}˹lI?:&HKJmTQCm|(LO3DWkߛsh6W9>z/ ԅq ~])?4Q3ٓ/{u&Ltn屉s|=]\6bƏ sNYb{7lڎ#[KB4y5%xl m]L^xF~ :&}9*j!{v.m*ǸVfc=0mݜ SF6GedVr~ɍH]([H6>A7&0Q/dn}L=B4zMSm6~</>T⣕s@ LT s*gO4u`dX`(A|y7?vULiqa)mwEL^Q㳕ޓEGS>VL9,lh2ԏk4VL,"(Tw3 j5&}Ÿ=Ƈ"P0]XƆ`%?wK噰Y=#Gϩ=Y$K$JJi녦p9}AQu4-`U$.4ᵐ8l?2:9i{Ҝ8DLjv o"qٜD "~2"ٍNvHN?ڲlgn$r~@y/[2&~ _FuWBbYIHQ.I-: }q;k L9"#XNMqo&_W"w w<T??׾w?(}|eL;MVMs8&g|/cA2c:{KRз9s,ӾWcqd`VJ/?lKj4ǂpB*<`460Fv0%BJ{3`"KdcEٿ`huVGk{֣־בZ}Bst2 E2LF̹_EkC3/ 0/U"g#Lt}-jR;{[Do'6`Ω/<L4z~M LPZWi[.N1&)6 rJr-U~9^d ' .B%o,);3U9P9[qW422>`A`Z .$7*ĦzzXI25f=sq-/R ەغ-j&+i0*Ӿ帟? ږej߫S@:t3AJ@*|wn&MɖvD;W׵8Aٵ}s%S+U"MhF2mAƶa;lXHZfQdZ 80GX TN>^FG_qIҾϴT'PtOM D0tZx &>&$>C4i;G9#q&` ̄Xޘރ MP4/Z of0m[0e OWM)50˩SB.:i1;O wڴ 2yW/i'}˸neԽx9>|XB" C>|>{L8s(ۗcEp[ˡ@9n}o S -O9YߠŮ X{]O_f8nf A! &_I#Gϩ=XJ>r; Do~R5 a0(-`=50vRpr7y3~BPͷyf軱EKF( (ym0'hz+L2k0!a|@. qOj HlדA R=?01}q c@>vزtyV{-:X\;J&MI0V`s?1r0YQ$Hǹ y` `Fj Bj:7avQ[w1_&Eo?wEdbn,^RD @~,^YFO2Q"Ltx*hū4D\K 7uFij_gbXT2Q X\RcxU߭xT21XfI0#kcT2 ;@i*Vt,^ՒJ&ūRĭ41gv?Jᔿ&dQr !JqakWgYXT2q7[ۿ81L;J&vGb*J&b͕TK%c ū֧6Mq'S]+_J%-45W!C8ѩdXjy3RRġdT2W*8>L|?LLJ%ZmdԘZrF*Hl&ݜJ&k MtTgkūjEo?r`9-ҎHQ!16%^7|8B"p(Mi0.SěA*P)iK lהMTY\7zJ56M:BgTLG?Wa~Zq()ǽ猃@[8mc/WFJ=A%_Ljra:"rí+$Fou3LuLET4ܣV490 !30xggy 70#QT]ws 0Ejۅ//~,!X`Dޛ0 @08L^?3j;N{ܨΖ2l3&w+EG Dvh ? `5mzDZuzCqO``DqOe?#ggA'5]S{FF?& f p~Isi-%mn'}/S`vi߻4.p_T9JXql'<(E3Js#G?nM 4Q(*  !.#q4ಒ)q2k(~/W/a:{5j+f.0yj)uSe9L:2e.ing 9D/*coVj/U:Cj͝P0' uZm(Kc,',ӻQ9: Zf3Uٴ4Us]ʨ%-sy]Ɵe^?#h%rCzpGXkj)S|!NI51cEc?!UmrSDu(mO%9$zT몏ūڵJ&T2q\*hū<j1~_ ]{rs,ښ/PʪiCz'L~PT2.4y;LtDXX3LUx~'@s,^Nbw*BŸqW%|Kg냥&YVO Y+mū:夒9@u*@*@[,^" c8B&dbc,^ U]bWsYH%)]BRHE6tzuX[^,L J&*bFT2љJ&&fL}~nv.<c`,ntltmsMg0}d[cL IfSwM&I;qL#H;EY*ǽtOI"\}ϧYv]}HوZ0Fq rLO%`5\/ܝ`ژy=L #G1=b$,i+Ӿc)1XѺK>^~~%/dPUlaϙ(oB9 8,09$Gi.)([l}PJcM־W{ښ$2{[8R 99j+QGm@%7L~ҟjׅt:d2z\0(x7hag.cdj@:M0)1Gqú 2TNKT0frnZ@4k/ b|glX \Mߡ~{ԜvI}|gә=@9qW_S{5sq_O2_A#GLuہp.8Z)ɕRhvnSXBb1^V[{3 c~j0)G 63l`9ҁtSӮM9rۺ]}qJWpHw HS)k@=`QYp@2$A~? 0Z+ u! Dky,Vdc7ߎ wVy )Q"BLNv P{q2![} /}wYM j{g8{@G%!s{<$־]h ,=VҥWR;J.c,P21# t1 02 }U{OH3L.mH0B~C0] S# 9ʀ YjiX3hgX%$nMܔ56k#L(?Ѿw#LJЃ I(;8joX_sna}pLjMI5\pݶӞ, bͽ2yź~[m3_@PmbzL Z20ibbBmiit!p4?dSNaPM˱9/tJ3H)4$5IЭ }Y9*帻[=} pr:(A~φ-r IDATX0{4Cݲ:|,8A"Xe#a3ViO׾\Ą9&)6U5FpB.̥7 `} +Z1Ry%LQ.1z&XJȍ q> غy"^R ;0\6-\m5/摿(\ͱrM^tl9\/l~r:dr,S SQ  |41ϕf9oDo_ eJV_\\IW7toIj*<[ów͌e1 ^JR Xq h00:Szo$jiZK-f.J3X&d[k6qt HSN Z!vr}rH)J7[3 i{B9)ېԾ 9^Mm0 W1$`sȇI9YZw h hkP}o!%H7X, }4ڀq^P70 }g+a1k=k%;&V4&=œOp'}/}=KX}ߟfarS ]}oo`9,Dנ}o,帷08/)&n|@hRRJ=Ǎ ZC~Bsz`MqY #Di176a c!Ѷ*2u܇ a^pVe3&߮u,hޙ?aGN0"Ahۄt׫z ˹_WV ;x9Œ|c>s3?#t$dzFaF {f:OH`R^Xb[ީ~[އ#G/վ$aԗ{>LÎ3|)M(\VjK(I}oq$t#vVxe,9J0MkjydOӼ7XLDvRөsDJ֡ԒLas e@;`O5 "*_%PDzHFwTAkp᫁DMFુY` e =څ82 L-.4Wgrר9QE8B輛Z͗"l{˃&i~/1Kw?ſurG;{87q%A$UvaXVR&ew7`ҍ^F6j[ScGq8&m0A$'Фc>EFf(as}'0.V+%Pժ}wJ^G4b@hW>"sxt4ٺۜ(]Gk>{>vjd#|MsTp̢?cZD0օ:zaC~IV".{+/Նo[=j#Á~؟ E#GG`9cM-7ҋ`A܌֟SJ{a"o)[c0j\Mgj,Zғ!>5Ywy1\IĂhZ26oAmSWazst<,.j@ermv֬RzI6Y9,_K aZ!7lsN9EoM.Ҿw.L7-,V(}ϝNt4׏ jo} -10[?cwjaCJVy~оrD{\Xl]A_-m-J?gFl2"}J9yBLJ2)5hۤwڵ!ї&5=Ey?Sj.iU0 h9i0)+ &Pe#@W&qӌؠ}o L&lS?dևι0q sW? ӸD Z΅)rX۵=9Hy&fHm39!& #aѼ,seMcٮ?L0lbs7kK34.VKL%a5꧐ݡ}tٌ1_ em]9lw1 'J 50#GU0ASS!WO@) i`GSaq_Ӿu?.3^Q10w揙 qn{cli!wm>f=i #¬3%֞9@I;h:$u8&Vԇ`~qol`_LBv̽kL`0d, 6H#e^0tiO?&= Oj{kxIqԌ&k{.)P~Кaz*t6>+hHcB- IaYHSIA\bk94Uc N&MJ;2 %xXr3IaZ`XӾ7K9n+M?CaiR`}}OjIЫ|F`G`Ik5O.0V " Ȃm$ckvI޳$CHCZG9!c?5Œf_gl"qR/ %7 Xf 5VArҩM&ou+M&:] J-<>l˂${I L |ѧ/mN,Y?+ŏtAY!%u0y$W;_[a9`oLKdM3\'T1 Brym'V7>q?վ < HC}oz.'0Q+ վWC]+͠zv HR?Fޟ~Al|!00o  (汳=Rhj ?$! rG ggr1@~llgMKE:{ YMm-\DsL6C~L`ϔ㾁Yf_AK :1r{3jk'ٿBM~ĶeQ"{mqF῏U05Aȅl3L$ ֱ[ӎMރo>&rJÔ'`:R ߝ YLH95Lc5y56  H7S&vH]$¦dl~WA2z+Jܷz_oVb"5(B8㾋69 1^D: /j3i9OӾw2#GԷL1=D"p-$3!;=(ߏL*'}9'NIAPi@LG,~".?O*G.S:) \r{2Xe3}-a0/`]9WLJc]w##mն M7$,N&m1qsyD3^w84EfCE9Hs:4=6ҧӰm,A:ovV9nV{f?G qR#)&sZASd!I]?[mG"82ЌfS`VIuJIW_r܃C=鴞E` bHm~ .H) 4p%e#Gϩ=qb@tqⶐq~ Ь}dI㹓 Lhg k鴊46tҁ |iCI&R ~J M 1m`,{`Y.W{#eK͎L)]CoKrhgg{4.;Y oK3_AsrܫҎtUJh^4&7%u3ҁ Gߠ]ڲAm+k0ϨAgzKKp \~!k"&J?`70_`kޥYq?оww/5#G7Su‰ sôLZH@ 17@t)&3[l Pa~ M5)ldVM6 sxKCLQ0.ny :, "~ӥ4*c' ݟS:z|4S] T؜^j]#-~l-0^B4y}L0&~M&02w(_w1J~7k<8g}au iվw)Lmzmg+x 7\YıTK%Tł߂ɛ_L)ǝ@Kt.GoK~ ~PAQŅn09ҟ3\о7>EsnGUa W+}'dl42{y;RJXG $BDGzO>%q JKy-mk=Aоw Lt-`Zr#MV L|>逩2Q]X|uO&SXgA3baca|D75v2-Rz _܁ &Me)=?nAB*Ǔp@*x(r\J&X*}(LX4ūSDd_*hM%C)MN%CcձxUs,^X*XFԈ Rr.QC) ExխVG}oX*W*ūUd" Xx'B)-sid⧩d"W-H%!Bӣ#z&Ed2űx՜X1LSDK,^T2X!!)LtUsvJ&rH/oMAJ&:h&,M%-ddbc:.ys],^uk*xVf /#=EFhKM*)L >f1X dFoU/oc?#GRPfTqvPоXha3FpA.C9$HWvD*)`3P*d?ay`"(ǭD܈LMf 7{a>J=m;0v,8q7=!m+׺?\G $e;&6]9$_rn)g#}K.w({Q?„ Jǻ=kX t]ȘHCqW+m+ERHf^[=jyX"۷#GW$v1`B)=\MXK@}e5!`t|WHG7LJ"TFJ2f2LN&! a %,Js900!55.XnҾwl*Yо~inP%ibrSculs[J ;9Gf,\O{+xNrj20u@? 3kOZ,]‭+N?W?E,Z,^(XM|Pbd϶h[t~r&ƸyV93S^0!1w`벩#I{ˈWtm&20_u#Gϩ=q8K?mS0DOh9qoA9|/PV'L 4uX"RetS7H c;@{pe]8aBQ>8&Ee.5dr!r_v ?܌tG5FRv~uYRzU2%(d=+RsRͤIxmZGj>ރ=ّ[B3tm|k9ri#Ȯ/% 7@sxj,(!Zn0O0;Zb<1;ΛE_#GWq7h߻fa/`*-F @j.~5Ld0ѪQ%˵Wl5QjSrt%Jqd4cP|y4;L?Vo}278W#?jqk3n"wDY ==HSߟ|0f(]}oLϿd $Q }M .=S9b{sarO Aƹvb-6&̹9O`"-@4)NԬV:]h4~[!C t dvc^SFq-R\<ӕ([*}m!kYLZ\}o'V?_?7v{ " *\#0KT7G(CyD>hC9ya+nf'єjZ-tKd?Es ׅtK*}ޢt_T 4aʸ^&%d=[t]&J-f04԰3JactS_жL9eGd΃[/<h~7BFӏ鴙MH]F=N+5)ygC0MAhkI $8V _9Y7db)ǽ-d=)t_2&6p[}I>Hf2N+aj[iZ! usG)}AӔRf5?9lOPʞʹw Mprc]/zs_HI+NrSXBsm[NsH%x]a, b7`-H{ kԾ@8LYKjj&QtN76H) x]90AFXlRK( HO?4v1?Ua4-^N > ~6oeqU0E/,ec6|esyЏk߫b|Ŕ ?0]0S ]"}o%q- ^ h_B&^4R]` t*IS`Wd҄d`hV̥Y9?sH]2Ք`|,]&)e/4]"6!cQ9{m#G?оʃ$a"'87qm]".pl#7ӗWDrt1qV: \讠A$V!IOҩּ50FVǔSc1 PYzt%ku" \|tT;{*=ї7&` 2{D]a_>I`mÂ}Q˿R;qNiki'F;0AW(3j.HWk62vViR#'aʓ.D0c&ӾWLհj.`4~i,֭eo),LqnkDB-qφ 9閘)R+>%~#%,}~@@vʸ+Hdu7TPj/CcOi-xދ=al#|}P32{=٥d? q+?ܚ-ڗHN] IDATy #F )-y\LUG;ӫ@;=\Go\Z LŶw#|.K=#x>g8S޹q'?;?>]\jSy#LiD,aވӬ*f-ST.*` =nO{XhBihX, )opZX+k9Y "1غwP2B2S``ROt LV{KFL7p>scaM6 L:~{%qqs{^9BJ?~y06z;~ _G0,AЬ9qO>f]`w帵m}'r{4DAgrL+ǽD3=Fo?r|Ha4%_\ρ&aM62Hbwl='SI`cOVLЮ)iZ\>S„vn_0*ϝL`Mwp&PR[Jɵθ "%$W)ǽ60 8/L.iI0u1Ъ{ e_RHwCLSqKu2LwloHc)ޥm\|_k^I32T\tT`(۠~_6=Zhv ]!SW} BEo?r74ǥ3 Q@wS %yg=!MMFPK+M˔ ,eD >W*}؆*=k}or Mo=x@^e|㾥}&A|V~,])_!~F` \N3[B ~=tc`'帯+|\|13rhiJLlEu|p7uWqzS?ps*-tm7 C\h`(%|ETo4[d>0}|6]f4081c^A/$=\iI #Yq %r ; A2}=e) =&Ё.V~Ǚ2%vFXIm1f7,G[) v>&4$kt[ 9Dҡq2>GՃi5HɜNJbpW"?;|V &P~iWH,(3,2էκU&8`F1@<{]oeRL7Xm:^*0#|UhLnVr%CLCG_S0)4~L^s&ܽd}Lշ1y^ghzLpt^c,0(I0=̣AR|Jj(5=DWUOT I ~0YJJ6a(H jPo2A#eF:QxLa QB0d%iI?$pIk tJkpٴ+Z&H?OØxhbSSRԮJIQxL7ȤJYЄwH&6j`BNi`haL2$%=Gq,%]" bH0 ~^hm-6s `f^QnW&Y52%M<z~Nk^ aF)(=DOQ8@,Ws$V[䢗혂J1H8 !و EF$2%6C=ڃnIit|UaE$Kp9g-v8>>KU?mh^|xg|^h?לG$} F`%ь ( 3@LY#iQ'x#ZJmLK;i(4#q'|d_ ӣd{eRŞ%¥tb7n_#Zū ?^ R kW|UpfG3b&rI8 (<&a5F|)S(s J̇JI+1KhQsJ&7jlw3nI(x )ڱ,Lc++6c(LTvn$tLɌ8 a2j 8yI[ad۔o2㚀N$ͣ &IG82M)."a\E{%ODR g-~%7f dZn&M0rZp-uWZMu)Kz2/|E^`8ȧ8,䘩?[hZ5A fI';E8nŏ8 Z@4߫0r6iOգu6е;&UqL5E0Qh?49(C8 /wn'ʤr *_3Z$2ѡڛpTa6BC">59V4؉yd۵oM0 #m7?bZWDabtBS&"mud:Q;5!‹d"Rq;M&Im F}Cu', JhOJZGSq:?|-jk} Xq?榽8cꊣpBGrd"n7 u܎o)v :^,V=OejY܇S0iG.rE@)_Y3e\=?Q89/cbN>*u|[xaXn'Db=?rQXGDZ&i*kK'Z)S]g%Gْz(T%4'”9o"I%Vaά<^BQZY"Y`)R_n$h_x~p /C&́ۿx$fI_qa/>0>4fCY &Bߗw|6uY6kʽas0OK@,Oګ=?,/XGq>#mf8 OLn ٯjw0ܦ|.}Ye19ighKӋ aL]hY8u(>C%cgտ(S;{yUs!s%)8/׼VRuqD شwy~pGqN T%󃵹 5/e:m5/99qy]NZs r ޓk^]c$65/Tގ5/Hk^.9SJ%k^Pk^0*8gkВk^ОmsIcr r s -6ιtdg̔I:(׼1\9wFl=?'8\0݃C+`f'F?H_6YmsW&ijyAwq.>N !C[̣5`LU- Hڑm4C`z%d覻Gs3b_E2:U܍ ?.wΚv9RyLNNQz`uhl9[3ׯt&3d} 3aF/|G8T6_ ocRTK#oV>бPҙ [ֱF;~C{ocdw v!&發6XIZDp) d .dd~&(߱aCײp)RR`jdrz<|0  ̑Ԇϑ:f-JbHHGmqu:ͦu4U=0UqNAVta8{ 9uy]5tTO!/r|FGs٨i=;/u-[`V?Ow~Vc;I v7z~ P> X ns40,{S:DA;њF67 `{*z㠯R)40ڊ1: GH??ą]\sĎ8 V+Zx x$ w`niU}үaK^nX L;c<_D;~v}2UnrYԃikP@OuuqJiʧI)Qw5k4r1쉣pLQ)ef3S$=GLҒ\s`cӲXzdzsNAGa U硒NIH'&?翉8b+i?Wum AX%~Vp3m/y zu]{YImw4(P4pIKOzO)S۳"n=AQr]IfoU1Ś:9eqXRz Ͽ|LrI!p+B5u. q~3vy~?ı ->1{`5R^ U|3#jIa.#!j s~G*s8 >3:{Oc)%hGug*FPYSn|w=]/q/6F4f v>`J&ʗtv3 ;eڎi6 i;)# ЕA3MSyV؀ M2EΌp\s%-1'*er&bWp7߈!kWcźT4kل98 Hz%,˔|cˤ8~$@ =l Ӽb^{\&OPi#LWp@bv;L&g䢣ZM {2/uk[7{~(5cL \4'RO?4J!5[+DL$(O`t6&| ғ(P)Sb:N`٘ejdqbLdTUk,s/̭R>}ǚh2ϖb\yRB؏q 髒ބ俒%t̒HG%s^fka'_aVKF.JԎNp`YǤ'-o h1%U!S gLK14Dy? H{~)=TgKzK`TLBBw6J5lNfBxg_|95?\G ۇkV48ARZ1_@a[yqI2̀}=?cF$Ih3iq'hk'@h@X CIDʧ%~L&gcښ׉aO29sW84 =ܳ}kk$|/wð6ӸĬj[{NἿ[:u߼zݕ?yM5Dq:q!]oȓcjvbɪ"W DXMUw뀎#w1=?8aD|v}ɡY1ϒ2AVˤU5Q80)SMgfkZ(7\_dxxI3^C׋ TD0l.p=ܷ ^{ȇFV_:ݞY8mNDF˂t¸@}$N2f'؋? $-BZS3h7YO\2}?Gy~sqG?dˆAr^CӘ8 Oädq͋=?.O@kfJZ0MNJ&h{d'hɖRO?4=Jc̓'S}?'Zt+ԓ_doB\+i_(bn+(!#!U <9w" rErW';H.Ix~eҴG&>I)2O`?d/"35cd-Č|ZnAt#/;Ll2yhzfw\F0I22,>ۃ$ّzu^sKu>ZR/YV(h+fK3Nq51JB:%5%ZfNne1 7T>=n76,Sa*c`5ZJ?;V'զ9~JE^tޛtLA{ {9h{~|14C7{XŃEr(L?f H^o@2-y.rJ@=?5t{ `R6Bd~mO=B`Qg*?]پuݶ2vbi` L0ֲ"kC,0kHƚrNIj^yl0JyH{\m{=q^&S#]2mS?ZDˊE%L=0n45[lv 6)f4v-$FCW-a2] +76L) zTa` cG~^镂0A) IDT&w=yܩfT%EYX@̈ ] ӁgF:ғ{ 'is؛0ճh[ii )smh?cr #nWrLGJpkTqV#an]Ik۸^{e-mknkϴEG8ib?&{tި|֋-̗ɏȜӄV^T#Ue"{E6HL1-%M!ʘ{`y2ӊS܅t #&/V1ӎ3f$y|WBqJpZ r B^G{3kC#% G8 FN!n`s/sw 9v2etL%KC:ٳ^2hW}hȂ.q̰sߝ}F{ciqvw;&fŽ2Q<GaC50HڥO?3{^29:|LfDB䉞̐"׎Ay6?;AF[ԷUD.O`zGBkkf4v~G*a202-,:9LJW&%0W|[N6/S>w>z6C-HЉ$3?68Ԣt,g0)t~nQݒ.v/I?` fsԀDH]'w{~r{$GymLMRuM]1ÄN-z*=]X 4KU) !gNFD|vLP{$ c-+%c$J_7:}ݛ%smPy=V"c4 dv:LJ%}(2c.Y۞8 ILi7I1/~ѵ0ݩ6Qxo2f?}9I[i87H@θmjsJ9| LSt( ?˹&bfT?!Lߔ|L+I?8R&Px/#`2IGSZdZS.fJ;0S̲&;6ӛ{gɹ+y %r$5}|ƇwL( =vldzP w+S8 +!H-,S0%p(u`{z#R-:a%;W̎id_i8"̻nv$._2I ]?xی5S[0Zdg$|wL]/Cү&/!O׾iDga4!ŽI>G#"Yng9d"RB4=Q y;᳉Ga[ Z$k6R*ɝW%ӻQxLg*GJ*`-~Ј:2QU64Jw뷶GHI:~D>PGF} ~_x~S-?#|D T$E:o^`l8 cLu3rI:|21QH/(ibڣR Hҧb&r2d*TdN`Qxwv18Z3iq` Q{X- әsEEΚ`=FQMC{҄t [Ҍ8 {%aG{=%|mjw |$jjߵIz87RNbgOI5lp+,Z-L6hC(Dl&HIH:GHzJ8w8TM0?d򠏆~4)'erg)&=^,ηy=?xԩ|g`?̰1Rdldqr /:c숣Io;ȔӌSEO'd3D6 fL*n 0ik : h@YD^k2>{Rh]O.g5|W2C/sM:L;98_mGE%4a*!wF1&ɀqZmڛX+X(Cyq^nؗ\Qx5=Yh%3VLOѪ$8 LF)CO{(\90KțcL1GBy=J=:h]Z3>:L{Z^g3evѾH>_0)9Қe"cXouL-ɖ*j|9}usoCZ8*\sZّL.?!C2ME~~n[ۻe{Yal@z"&*Qna΍E𐕉X^F9KV͐iYh5Hzsa;/.~^vho^~bۭ?,Ġ$&b7L8r%>&2y~t^By~]>Ϣi\(ۓ0ˬD";~6s^0l0xR=)F@*p{Ǒ Sjc/:h GPO)D2R&vp=G;iDRߖ%\$k:ߖv1ߍD {Ht/;=cs| ڏFHF:vډ(8I:=E2@Αt`g-KfDږXp;[S(lC2{xgiB?RXL+M+Q@qv \C*m`Fgy~po`@BrR(+;y^@M:@LǷ6 Vu8a%c\d8XǽݎtleJ6=13(\-s;q~:/ɣ=s-t&k{ Rt~sֽn؄+s}ϧiZ#Z42[g/Sׁz?@R)S]geG < qx(&c RmSyc!SHč \KLI.kS#8 Ӛ5GSuMqr2RO뜳$rYW]ǥ)Sϲ(mlBAQ8J_ Hm;r&8 kD{7>RXV`Dz*'"4 sLWsHoܣ_W&{ݥ|IˌCHkQ,/IԾJ1cmo ڍs4*ۭk"{z%'~Ro2IʗZA/lk5hޣ|PΚ;mp$]I [w_z~p1 i8]QxLYR{d/Dl\?vLVc9-k+k^O{dI01 (2%2mHSO?DU>Ga?I hҐ4ش!y+YPB%0ݮnp5ƻHwsٯJk)4T_MG a^ۆ_I'WJ6oY#۹.:Xق*DPHZGNq%ֲ%><󃭘 3y9¶ǧ^է,ml+(lDKc 7,giUcA+M*7}?zI dHsRwU\mL'RO?DGmfӶD}ېNeA`A*9)S$Pg*~JZt}fZOLGuH9- _e7 N/ѵjneYE|I(2l.-z ܮ-=8H6aɚ;"|V=?XGB,P?Y0Ps2{1/+荣Ɉs~Gej|:st4aqN`iPYL1&? ~Io0ihIu֤Vҹ1J^d lZ=msƎZ6߯NVe"ei8*&stӛaPljL9)S$Cʐ?v&S*iӘc+~;DL$|: L63 فf-Զ8 n(93! S$I(bPZQ,5 tLSy* lA#*WY j+!lhJW_^evo wà!Z6T USi#Y)Ӿ}62q &sKeig?4,JNA_'* h"缏y~ Fʡ-T)*V ^r4,a yڷX`)SQ[SHuTy.^F,`hqL,]2%X$=Hk'#@> V!iS2)T>$KƋ{5~Fcbgz5Hqd 2Z[4k5s)M6c#Y[^h#6?3V:GvhkG ?) 1ڒse}96U{)߭LF[ͅuh$c(l 0dzs?O?]cL _Һ{Pb|5h6<^6mQ`g8&Wj'ϟB3e:mg6򿓟SO?4T*e#BاU2%/|!~@l%O,Lv!>N#8gi@62b cS]^7[_A{m c h2QqđQ L|[Zy~.ڷ0nV@HGRtLNx#2v[K P%`oezؿj^50Ju0R=Gᙉj_RC<(̢X^V q[,8u`3]<(Z2q'+-ѢhE[f|HR[s\/<C90AF ɻt{yH1qt%C8 kUa\ҽy~ALŒ^G%$jlA\tQzg 2v?xwsꕯlMnHI_S p'C}^L61 78:Qq!qgMc@s-&s-8owKhe<1JN1˚yOpL12km=J_:пI6#Ӻ5C&c)IY@:fRK:SXϕtwRO$&J|w0D SWp@N$L\b٘:m2߭`F#w"ٵm, ŮeR Q&:RgGKj|7E&y>IGzʧZy1fúfa|%HZH52ןӺUtÜAnNܧmc 1scaZ6b? q)^)SdO'`n,tYg䘓gw%$:YRo8O.cs$Z0p JIKJ?fε7 ,1k]̆L.@KC.w2C+@|%2_%H!%QЅQ[ nT^= s0&:0_"~UjUѝTZz~p?kmٟ <_~XY=̧(;:UӪ0m%˚$'lvH>Fm2iRah|-71fNy\P#S|ZVo]ҹ%p% V+R>Jp^* 4NOpi>ߜ{F&BϡN~RO?]\!]ɧt%~Z3KMv1B6W*b&2$E{t`^mr"3+QH`r֬ߑоYH _3C&uX) F |ʤ,|]zzcD28 =o5p:UBVa/dv4r`gD})k[= 3鵓7&b.{ [5qoOqMa|gZz~pQ6;-HmԜcsGb>"'k/f9\9?iܱufc$C&vLDTjaK:uC~UkMu~J=?CUʷ}my?!yMeݞFOo&Pi"Fk#Ůվ{%?9Gl pj,DIOdA$i^:2Ʊ_:f4h[$ҏ~/dttA7k94wZ#le;$WZ-i/ewħɔ o~۹'4)fR0dftbbu&q΋hoiih7iF'T[$݀2lٿt=Nn{ Pʗp1YZ+`n_Oa1~X0OTx~ؿ #0[*_wŽ?QaGd{q^][d`7#T0L[]rl9!d$|l7(cjOOy~2VS8Ϧw4 9 X0)]\5cw=3̽T#Sc;[oq{ 2.ַ'G"Gry$~^&i$2&3 []Ge"a1] :Х2#f$/H1?>y~@& Tk6&@gx| ZBNtc51xv5sO?f&7y~QGj\%Q$l.)Dg|SDRaKJ9V_JQ8Q$0 v"In8 _DqhYr휓CjjBṵJc{Cd%}FX֮jh4$-w׊L k?";]_fD2VuD__;Q)&aXOn|nHjD@t`@uo2ذF%.ӌ$)=("s;0ߡ5y2eK21t%*6fakңt$b[bڔ`NjU|LE2IaMDN仑ڷ~V`ڴ2f}խz gBKUB;έ&0nSD=>x=QYJLo2p 07w ~\&ƍDՒ$ݠd%s}[i nㄱLaoP [gm)&358?%܂krƶ=?fF&M͞ܕ $a63XM'CVԒ, 1>t$S=n۵ 3CP5EjmX̝2Ζ)ߐ&ԗqmojkU_H1'Ehc-%B,d0R4?Q>-2U ,g=kE&u#5I_tO$G&$⧺;_TLzd}%E7Z9@C w\52L3g>48Le=l+LJ79j_&ClDQHKޤ|Þ0L?$"TXL=ZpI 0&0aAj/'efZhU]T\ WЍ'x*|i:T ksLѿ@uT47!bv܀tfU4^x+fk?⃕?FEiSO?4y jLM^Ip,ѿ_`#Tr̋2yYa/ȩܦ [2uSGd2>Q([{C9`FAH,H+" (+8tA*8s|uIюz1}.K:+$G?b%ҲVevu"d3~y9*X%e Ҫz~OOډO gu;k;UQx#厶zc)ўX^koa늣 F 2J@#;$/+[lfw%/i |i3wuTvڤM5mia(ZYdDDaDpT\udUTdQDYe_ \t=M6ypofW{g9syLطM0C? W.f2J?q)TF-H gA~(1_ƑLtc"%Db9(<*$EW@ּOhdr-؎[/nԣ#0E$+ peBK ?m(UwQ}*e;mSOfF3nc,f4*D@6A;1NDNǾL*_ 伾;7z`nE]!iV̘k5>A\^,z~o9_%xE7ii҈yy;<)c ZMll]BxF6{HS%bxyNp%&J?^%}4 \o 4_$CҝHe=?dzڿFh)6K> `N^`7Oe|)qN]dk!^ds[0&)Rrە nY_$+_֋k; L r QړnK~>͋yq"wޮ +kx电)S/vFA7g|>125ӟI)e'HZM0]X݉Ի `wG{{?O3`#,ÈGzGaor_`/$j|C`^*[(쇯yOnfVRm*/[+/Bh)(m!E+"9D0TCO[ki(y06yi4IȤL,!`nK|v$SR~G2=vLID M$dѝ@(kʳ5k CKhpϕPe{aY?ﳘ8mK0YQF/֔3tძuL{JL1iI})шS6_Vdm=طrhfmivHN^25ƚm,IQ) ߭GaOzW.?.ՒG n)0jLDs[FK-90?Zd~HCzԵs$r r yې:}'q żW>mdrqcOIgQ8 7>GŢN~ X,kea^SQO/4tL)9"ʶֽ-rR.SVum\cHD.SD%o'Q8"'L@"6({R:'~k'ɵ;N+>S[,d?4los!.8q+RROE8_ w-H[4Y`+߳X sj1?.!mUr&@8QALdZrN;FK\qF2u8+V)*e$1IW`>|@&2ٷKcjet"J SbߺP^8 "߾>Y̔*Fw0-me䖯ܦN69ҸհT &(ڥ;IA)VROE_Vs/G2A:{~"d_`}\2"sҹ|A/ZKD 7Ȕ ʐjK4+)3V"Z!HJ4I$};އ1kwY0}2qWa/2z6&s32Y|1en)5}e"e] U(bGLt2%$;~fiX$L^d*'q~V&ly~ )SwAۨ瑢ϊ'E[E,9/0v;1De*]=,n A yI-5lͅLLy f:>CyEV0ŜBU'sdpe*Am|ʤ"̺}jLJ#q^)tLq~ޖ(|S&*EsngԖQGOˤ-s%S+]mqQ%Q|"A;;-S@$#c~SRwp1*s`E)( RM 7qa9J'5t&D=o!GT$-"" !#`((!ppl+>̋p'~uN{QQxLI{~dw2ѢftA6B_eLm/HIHS9Tߗ^[5KzFFOZ^ zrGő9~~R^G t4,8 -O}cIQ@"E:T!SL56m)Si;YP7WŦ??l,ihQq-w@O,m=M%Sa]ޑD^&\v^WKLLuhC2B8΋n%FT i1rע;oDEt:Jq\b=X6 zLO #2#1.*rElkb&7e3]|MxS@:!;$mB-FLY)tA;ٔd6^RrIJJq\ ph3?3MHhQq%8 rHuRc}$=U)TOscƫTQ 0GmXǓhI?*ƀ F6چ_Ϲƴ-at/-m5^0-B.<hg7cvﱞnswIKnL B"5KUHE$SC?]rblxw[ + [ԗ~l2y~{g2K QZYLu:6F"~Lȓ8 7jQXL}]Γ h q|&n.knQ0oH+/#i1™ ($dE$EmEڽXc[yn he*4wG::I-qNo:.@ MGV:G91e I=?^*zOT!pi罏%x m-/xіCWsSOu9 ߎ>*\8 Ѩ"Vp6=Si]=?x6^ w%5"m/Қ1vLQh8Q&f%\KoG'l'0Du.&$}1ج"H#6TOpkr^(_kSb)^8N|2 -8V9G12f?0/?\bD4j]}SO`UQ>F-q}dfQNu)"9t&7[u$y2H\tfceRˤD`>z@MH}3Hۨd.ɤdc^*Fuis_BF)b:-EkgvLo4&U(I'8`/"\<{5>2NI1*½oSIzP5>gdR~I?)?'S(þHZl!2552Z304y}4 B4&cnf.^?P!|5,~3?(Jhl={9Y_)SwMg($NVL08JTFC,ShvgLL~Q4w oIc ;~O(,poZl`0`k=?ɚ)n8 Q33¯lRiHZD&L >)I9ZLw\WeE qHI]/}_uI%ʙ<4b[7HW92vL`[{/p/dr@۸Dc֓F2_'o~̀ Kx!9sa| R{mdZgM<%STOe )y23;~kD9--{PF:o퀀ehrA?,a)Sw]{2EJ?0UtIro4˽1sR,90}d"ELץb/IG~Hҩ6_H/ q|g6+V&暇Hz pKŞl%tڅI 3RIuCC:&Řqx5pIIKxyu붗`#|8 | 7{`za-*䉿/z&GdRO⿋KAGyLԨ6i@d[c3,پ2/r0[F'ˤԴЋzS0D?@K?9,閴i#9mKHb>+eʅ6!irSx2_p(QkF($%ld* LwWsrmQ7 )=r6nk5 Lڗ;9SrT9ooG-N14}ְ$y~z\΋2ν M;O&Z_|L-sP_/0)/P']VGwVo uKR~/ h${d&_G.W5 &6a5ovc k\ r۸95:4jy>xkL@Tn}K&ǺXU3ϙq.Fs"3+[efQ8lQZ_, (r8TDguy IDAT&Zo]OBS;S&}ci;0V~wMI&`k0V|spQW󧠩 #ZiKQ?.O L&oNKsgaƲ[ D*ڬB{ʕ@c+]bps(⧜,ӠĚON4i=?ZJ)(Rdc0iG2_-A}w&zI Ϻ/W*7=sq+Iil6[(.*B\9-ΕGE2q.ɑ˴?\Q4~I.Ih(<ܖ8~-&ˍq=-ٟ&h2h}F$'A?)r1?tS UcLVmzfBS[Ga#t<#]eΨ~I&B w=![F 7,ShQ9I~-`s"?V*zv S1OtGKjOY<2x%IE*o1?;Z⾶ۦ;er7f``z~pb?ls\ߗI*OL$}_qW?'n8ڬ)"=E9v{3ORs40I= te?zlfq`@#)S/vF ,ҙz'~0tF3dG'2E4^´Sh&Z@dK%68%7ṋR%H`9׺Y&f/7xߍ\&C q%Wd"_FRXݴ@D7u=`D诔d[Z gc:&ӇD wCg;.I_W_&6KjlNνL^s<^U9,[ׯ@;ZWLH&dL͜LjHTGhFk”7?C_>0:I3[8+`VK3mOkl}LrLH?S& A21[I d"qDٙW?U$:T(hUbeA7 #ל5#YVHzAE_[\Obld}L29Ǵ ?<Fyv.&"AHK eJ62AcE_@2EbrcmP/}yDN? -;`2Q']%]|^HY#ټXvzPm; kr4JԌa2յC9E$AQLEalU%خ_`&omGX,v }%飞<5QBZO_s3GmhgIBXWb=h&;d NI`yM02+'ǿ>َ: c;J&`k!l+I0)2Le+tsB׶]t<%a*wpH?30k`5l2lEзfAkI?O@;f٘ZEق"Tg!StQ&w Uz~`sw̐TGm<˝f|q!2)0w eY%f{apvyLO$ӉF{~_1DuPKK:Ț=~̵Zb-N2dƯwP1[E>&!gM蚑s$r/J#ŋe~MjxiJt]󃕞|kU2%_f)sNҧr^^8);W9sp1Z~q1v8 NqIy~S )S lu?v@: <@ZT$ߒ(N6?)7U(J DGVߡ2)V݊ieն>_ HyMHkr !ib& RdF泵::Vk;X{tT-IdB\[ex^`A{>[0of~TT_>s9TqH[*CіPde4Z&bG:q2me l\z22x1kC[c'Y9>@]v]?g)3qV덙cDZ= -he!&DJߊ߃_d.$2JMLrCsT( b[9W6}0)2 V61$½`t%C5Izdه}Kln[)9: 'Ț윋I\q!`dp՞+lGZ$.1hRvԳźs}SL m]{,=-Ԩ ~m٪rqLkO#Wfb >OWQ[es[]0Kh;ϰ Z57Yq^v+(6=Z=O FÑgQh/X}f~;(Q̓-vŽom3{D5!]4 ƜqNhct(~20M%R8+j)2;sK*B[m8 }4,8 {j_FY׭I/}];DIRdq>Kgy˕߯z~p-VNV!qAȚ Nҫqk#Iw?$~NֵuMBc_vQ؋{)v,]n;sN ni;jKteg gc̳ b)7R6'h?v%]Uͳ >!_ S|Źd穐C&5P+!tL{ˁ Yx~(Wi M}Ry &>ks- !ijVt;%W%dZΠdOg{Qe&Z1Z ~.SB6@ _ތ!x؟P[zOseζ!ڽ+ UhQJw餽 㙶]SΚ1.ޮߕ`L[šq>k_e}(^;R[wO輛+'W }Eqn;BB,OQ=p T]‹avnf9nyْo&p7s~{q⬧VI\|U8 _)K{Qh)S/vFuf,l%SOHS$۞HEmNJ҅VxXd,Ab^9WC,w#`-i%Q f74;kҚ6ӎHoE2*H7F@/%Vغ0rDeܿ~wۭnz~8Dd$Ukт$onkǯĶ1Ս:*i/8YS)%RyF+ q >t:+fyp)&˦Q:HH&ݣ U\ifK}Or .Z3MI*S!#iẕb yLwn H|M@YحGOXLEj9 ;Bfjj[`xF%z|_JUnprs({=ý+mq1q-uϽ[e#=?XG_ݑnҠek0ל(XG8ZX L[ږ-[{2gq0V9BʉEo.oQ#Pjtc[oi"+6H?ٴ3;[)lL›Kx"h:^*l6LXͦ/1lf;œbMPC*kM+B\5lP͝Icb:`5cNY\F{,(uypO#ߟ4S301| MIGm5mr0L&Z;~'Iu{8į`S/ô?.k~i?-aʐEN;~:$%8V̗$ fوih1}0e* 4y Ho7z~pAg~@ZFK^Hv-c&H$l[mR1#$>YP>b'ӊ~vZB}G6|kcu5"js0eU3JV&CkY^{/}vO._q"[hMq%SӒ(u_Պ9|]g8 !] hH#{Q=q8ʴ{,W_,S)~JyqgL] V/<'ˤL~,/"@gd_@пرYck=yA _/"~_+e6kH|?R&@N>r&0k/mUfkKyKOh6-їdQX?yl"̾M#n௉j1{-coK?U.~D4j/iݑ? %11sOWqG~q8߭L2C{L$`To6uPwȤ%@b~a<t [Ĕ -HUH:"$}C&okW@8̗;qޓ*Uqng_gHJܦDThCSmB덹:s Tj(j^MP0_7i4 };\ak > FѬzb+R(0ZhY1ZҼʠ'[zCC)(;C̖IiF f1no۳)bGzA$F|_ x ?Lu2 #INW({kKGbISTiy5~9;G x UTEm5ϰsF7cLY_Hv]zVQut$TUL;rVb>(GXCSE"չ^8 k;U79 '+֑Ҿldǐ8 w$SO5Yš -NH\lGtI/`cG7l~ڽ~H-3%A<5 6 >2\FjO O5qZR\V\vIqGu*t꒤_Qܧ) 'S4>H`^GH:/ 7sh= M㫬iUwhiLe4QcJJN*Zv}m L|4>vU^Q+aISdj7hg?*4ދlczfl.Rt>̨}>nK|1r|I=腄]ٶ=pqv($~͆&$\wNJI'x~0/LA*hk9@˄mK2?F }(,W"$o3D0~/;F7PeGD.J\bk1#/"O`WCCZ l%Z4|lwE(8ZޯQx,j g_m 6FǏkR-DZ1;?.[?"Iqc{,ɤ$o+$]łYs^*d:I_.&+dZ.|K g \aڽґ#Ⱦ"촡ĻY IK%]~B0~1ϣ_?E_>x̞Wy)H 4@ Lw2)B3 1e\-Us]dll5C oMh3IKjsț]Ga$'JtQLc=RXx-m*]hJ*͵_[K`)"z$\iLܴ}L4縉D@Ւiy#y#򝳋HuUvdzntݻ;RHf(HcܨPL8s'~\ZҤ6eI>=J޼.p{QXH Zm8 *bI(C51u-N"Q=" .G2Qa2G:LiK@4̭2!\2 f_/k}iu)\s7'LqJzDzY/IɉD{'f^eSޜ4&qEL=I:4ws)&ۭ@$OV! '"*1ms yRR@$HpLL}a8;` ͘27Y%8 yջ8Le{LJ f|&nP-`5·uς+|v1 '8y&4({qׁZc% IRevB?YW)h#B| g\F f^d;U&D~Cެ Lycm9=ZɵvIEWQ8@)SRq,3OHO⁶ɤ4!IBC7 %}ˬ@4XG=Gן?03 PF.R2)[@ȴBZaΜ+Tȱc D"9!` A`UDC@UHNkyH#?6k~Y0ZH96X= Z=3HVJl@` si=<X92-R0o HusϡVz~!CD7CT#`hu2T{pRI2MM0M_~yXT-|>J\0#;do<r6@b$0sR1ۍz\;A@F-t?}eJVK:`E;N=?{٢ 1Ly9ѵrc{R;o!.I("f0>\/ `9ٜT}Jb,6GcP@-A-fWiYVf*,0ڗf_t}1EE!4ƓB^+)h;9f{y1O }ݤ{q_噪]m lK>粣3U51|.()SU&VDŞXZzų2U5klNRK)nEҬdIK2U53U5qL9ŕԦ 8HjuԸ,*}!y4fjQGyk2U5\^ GBa0a;$2U5Ɉ2[ۛ=0Qn`f,'ϗ{~0?ˮT4Re웬.(Iz~pn_\vsf-t(SUyNiRe_T,n\kMЊIes5;b粏ȤU}B&m$3%\A|.;FLU||/g#SO5m>BYhFpl>|>T%}_ҷ3U5;i!]e+3U52U5sV[Sd|%SUS^FvWDܞyȚkI`ff+_eމ\{>]^#JRws/If5 |. /fI hm`8%}/iJ>퍆?mL?ٴ3b~H,Gr}vEr]bS"at[.s"e~| ]Fc{ni e6ྂ:뭰f7@ZViE܉?];QDN3djy/%os.ڊ02iZFF̯`MT~ǥnudry+:MV=?&d4>>GLUmi-CK&eg9TG0 2p1 b~E&dJB DήN*TprNi~ o\2N{ T;k@/StGUpKlQs!}_Fe[CG<@* * ;S\|~Y |\0%{ˤ" @ZB%fL1tkY-ކt} ԋdjs-c}N/ `O35BSف=LD?*Q;h+eK\ҏ=?x]ϓ)r?9_YO cRn2";Zs]7ru&$">BDKH1c0!yD-HaOq1c7hQoA R%D{Sg Zd2$Ɨȯ\詽<^0G&?/}W78~}T:;<`2iCQYդ2ͅ&%)*TmZڽ *1\+bQxL$|"6O L[1ş AH å8kLx.4z8p88G׬:ѺxDE2|)SdJɫ7|nIsg,i AY8qW³M?I)y tBS7{,ŗIf_ˤG<ŮLǶ. ؃%5(R+(G8 QxL o|L:&x~b> [Iڴ6Fsk}Q&SaAxi6۸$ǶK1}),'scFU29S4=?8`w;׹-!i6K/u\lXMh{<+J-1ʬ!$4z~[S"w=?XC0MF?4+c0Mh7a~FrH߭Xᓿ oOْ^O?ٴ3cVd'R`7`ߍ$LtQ\LE2IqncHll׶eIC=?sN>KeRB6Ӂ*9ZfYC`{M&esWd]LZp@2L`$rdxd6L2KswdBuN tzCf(|yT^6d}R;J1a&K Gq>} eEs?Ȟ ;Z{59]$i.B+ m.-)Q&ó]ԍUNhfd_@̯C;6}fW)N(4eړW;3-lK$huX+t%L;)lou3@%|gݖm9X'QlW]$S%*[pT!5Fa-| .œEr#"Z)Ʋ|>525mƪ1ľ+x 1ߖ/C F4#'7G/"I{~zL[Cqo8_<=/܏9. mr  P"}eCJ m}~1paOR}ew^lF7 £ykYCH'᪱ލpL2F93y*=9W\&9|gasUm| }]x2#ܣ(T&(;-Gd;e*u'gsmm$R0x.=Pq_2uBe῍cJN(Bs2}r=aa'Bae_p.rQxC%7 OE( µP0Q8Q~+dE˅2qL tWrFX'85pyH/Q̡XGޏ(eL2׋m?R[qn R>L v^2/-ֺȌMHRXbeHǃվ7[\8 `yEQn|:^LzFA(F@{pxsKx_( 3Q{~Dqn#I_pf2FE[% jIRO+GbB;p !خ1yq?*q/If8Mo@Y Sq>ν pQ+/͒-ݍgRGO&@a*m1\E G.<BfU05aIۣL '9VIM~uzK;r<7Z>q6Krsd(D'rT-O3godf4s7R,1oQx4.4!!ps z l['0Pf"n*3v'(Op!t֑Xou A^zN:P`b`](:a$xOgІ٬pv}BQ/3Di-XC[Cb$w:Kɫ Ǜꇧ|fYĽ^ZUnLp>tgyF+}iIje?f^ξF$/ILk<g iڂ*% }/zk>ƒ%?-6T CЇNOh=dXUp /<[*'H7dHDx6z~pkyiƀvmC(Ha#G }WFXFZc:|jG`OwĿ BvKʱx;+akLfV5Fg$dI 9sgGMErtdHAN)źJZ(|'iM !Z!ȱ%(關/3godh š\I6b% &rO)9[\N_}rkKfEܓ售c)N0% پGr-^ xZ 5Q8ahJOioRwͬ"ԉ#(`=o9%iw 'eX< luZ#S \AAIe$ X3{}w]dXMgkeT!gQx*&STUQ/Ga_<8 78aC{lKdZy&0uWn[ (KMv VV6,u/wӧk>×(۸- ԊY)CqNrn}əQDXtBߎ\G|V9᡾Nެ?V6,&2֠]t=&6[Ro@F^@+!=>u({frxP"$ENp«$BO"fdː ڮ(&l"8g$@rҋT&'m䙻)WPUGr>[/SĞAv ,)]@~;?ɸiF$77CW,,bp-8 /a;M,t̗t}kG(eh䵑X2]MCBЍ|O?6| !&nt#Gp:1w acX7ֲ ?DȶɌ\ro"ZՉk˰}XW:^^ B^ȺÊ.cIl~6 ˅~r?獣2lY_BgJ<{G>t! nJwGRއeޝĶq,OS)\XHZ@o.I&I;yUL v,'zu'k󦄉3,x6ގz~0#56kw2n[.i_X8 KϝLa{#"{Q[Ga;K:[fN[AxsXӉx]u=#ZQ[SD݄L@(: k5A.d㩴൯s3bl^ 3!'OzmRP",X;I䄖&&ۊ A˝^ ;Ȍ!fNJS,u۞RVаzWQ>X8*pa2U[—Ǭԃ! eeI??@s'[mʒo!RJU5!FM'$4UF"-8+^}8dž&Q& ㋚ ,gީ~7 nwI rHD"qL&rLM9,LĤi!-=*jڎVbWOLD ȯ0A Ti@33TTnYbzb"$j RO1eGuʢ@ ,D  S5=xQ4(@yEOUel*'^[Ml6 TWLH$FrGn`"@` ׿?+LN?Lukkwl`q$?~]^^nf#y_<٬B {i7\047 +kd[z$JV.8v73t5Ǖby Zoll4u Lbqni{9u跨B1nɘhdr0F(Λ %/wC!4הg^im R,Y=n @ 9u{{3d%%K q[%䓱3m\/1.Xl {|>1yqm .אZ ^׃FϸSYtH nrڡ!7TvPmrfVwy' "bt1!5ks۫#{RI466vÎ2}0|BI^oP'Y^*Ub~qqG K;{vNL9Э\(T*mG^쬰o&3  z'|6틉Ib@<҃X,0)cwfM.fNC V?)m o|2rN(CP-䙾{ б dk Ds(E:v5D<`0Mc cZpxu{ƀp|(`](429-J JTsmJ:(U*@6}*_v zB(Nt``lޥjQBTjĒ &z*xkF,䊟@׺L!"RTo8srዧZW&<\l:3$~FrJZpj̡ЪH" hϞQoG7VCjd2yL|y ecp^>3~G'?bLDwbyDWa`\ ΍e+b~rRx7 YLnDo5@.'``OMDfD؛J[&QDfea# p>v~i%N,k@}GG'Z/SKCNA\B?'/[pT*ƽģ]ǾBζ}=e^m<P +wwalr\X>p:L9#χ|]Ֆԥ}þb$5A^zf4ϲ,wP_񗹕68Z>83ApS|^V5fYUf; "~IENDB`PK TB" 'overload/data/gfx/talents/mergeback.pngUT DQDQux dPNG  IHDR@@iqsRGBbKGDs(< pHYs:tIME4. kIDATx{pT?'H If1d&Ch(B*##L[-3RyBLQF@c̀ED&@}?Bl-fv{=~@rK7 F#Ft:8wv'mmm\x dffOnqK@ Nh… ,N'+477GfիS\NC尿%< @jj*/_ )C˳Нw7|]kd1-sOww_RS!32C͊@SPQaFIn6ɧ~AOOπ X09gNC@RMFÂìg1쮞{nEZZZn s,0444D* ٌ(֑رi,Xsn"LqqV}ل~y $!!M2H=n.}2~xJZ曃!*ֽt&7^m !FD+}ťKb-Y:;;#nye S-,F1@y/Vʱ¾}JXX^#up-Ƞ{0m "c >YQ; {آ? $III+5LN3- **?跞.#F{M:.6s]hQzlgmnC.C?HQm\f2 )))l0W6Zշ εy])CPp;V͖pu}e[^fV8484qhPkUϗZ- ~R]m. j,\8+$coNyۧ≕ kF6"p&L^{9TXA^^&:;%VN<9$U*B\.6cn۩tH*jn 3&nprF<(Jx222X~2K@24 (pٳg|{+i7x_4d77𥷣Fᵭp9ݸv]vΝ;f̘Ayh 2H>;ϯ͛ZhԩBF%"q9$'OJ- *S]u9Z̕+WWEEE;JܹۓL4+&-)..ر"9 %Þ=Mɕrrr( K^rƍG;ЩD hdɒrEg3}J]]n6TF"99Nᣏ¯QD)A^sŋ)++"3п:ta$췀|>+<ƼzAe!?>GpDu~2 !(*Zȑ#1byrR@`ʔ)1`dWU5sH/\ b $_Sj}Fԡ2 шN(? ϛD ---499Ƃm V _\S׼cYyxpv'pȑlLlz˧@z1~_(4zR< ClPSSÏVK}Ќs;wnTxp+D_as>A'X\4 UU_t:?>;3:۾/Bf"hZY`r^i#hYzã@(X,br!K%# mZGM5 P%%%a2hmm]>Y-φ hmV ^y~w]tt@M`]^`!z~PE<~s/u (mt%7kPJޣCx꩖!V+<ѨaC F?d2{ Tf;fMw?MPZ*y+.ĉq<`\?aw]_Ggʀ >}tvaʴ _hnK롮iooGѠVILL$#CYY#+(-|IZZZkWYG!Ǐ/u:]DZTrw;|swT0IENDB`PK TB.:f///overload/data/gfx/talents/eldritch_infusion.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME+IDAThZ{tWՕs͓$y< < D$V:ZLVgVgyTe֡ࣕ- "(Q$ف;~UL'a-%wrg|ZdIڼxh\>Kk=000<<|>2bvtt+V,A1lT6oެξ겫2xQhQ]RuݒK‶-bˋܶ"bkG"5?}e}H.HtB h.??zh__8YYYg_4M;:Xi}xxUk3T(h{}١/)[`C,#b?uGGGbb?]mE/$lIOO={vi 1UWpA#XA<0 _, LG|/vttob h[lMƩĞuuuUWWyGO6tGԌ"@O! KT-'jjjZ|yNd!Au Ihȶ׽0b=x:0gBDž80:v VTTTTT/..'\}Š"b<ZHh!G{~fl߾߂D166g|.dK.]?88x馦qԸ4>|\z歂Y4$ed,tƏ[oBuFf̟Duʤu`ѢEvW hkk{7˻ g l8y<:15C>S"S|YD_z3JKK 2IHzzRhβ'o=mKMMͬ wxv %J6 >P! !(S;::xm_|_xx0F#&| LXlR``@Ɵ &z\ktttl 0 Y144rϜ{.daIdd~3m',˪ʹJKu3bcc'8uw|&N8Q>uFrU&Lؽ{+;\\% ZmoYjr5yZ`YPPյ@^汆eee ":~S_ jE Wv̙]B :tǏ=^)^>Twqfm6tAEC5crB%3W>vX{WWVnn#/nG֭K1``wwwbbb`*ߐ~,m~];3&knn7ǰJ-NX=c y#/.aS}E9 b``mC Ho~iʢk/=WWwww;9񫦿6$D,e-Ʒ]Q ߹eiwСCIII#V-\ď ~iǫĦ^dta%ЀX$dN05BMxnXS\U %bQP!1*쪥 86@DDDњ10oUTQm Bh 4}Z4a`313iD,$22V]`(1/hǏ|r9r^z{{ Z64P`Z5a"4  TUEaIE4SX*7HE][Vww7=-i߂XDLhClHΊ 8Z?-bk–QfU@(1al7###xAg [v^]@gg'M***;k(Z8rl6:{UԦ* ~@K57(6m۶}キ2/ [xUOQQ%yyyFD9'b -%d/oٲe```ԩӦM;z4Ge^{ 3h`cАm{g2逗^zBʜQ3Bш˅eY={WZWWqǪGW_}W{1ck_Q'>׷xb Zl?- gΜې*hb$\` "x2fPS__`C}y!xכ#""Z H4I nZ 67ӦM[UrRmߜ={6##D6%W1N:lR흿b& M)*++T6>}zSAȋ3pp pî6>U]]-"K.]$K_x~ѣGYrշâ%nuuuRd! ,"9lK;;;^rr2zz,]ls 9)Nw–.vVuue7/-҂q<η}6~O{+TlAw{OssYLH !qcmmDTTŋ/_Ud(tT :sSN]zy}A0kf>ӧO/|Q;O< :!>-%A,lhj訨鉊>}57\W4uzʈ2}W={/_HoK($GuQYYXHͼ ƎМӡaIU&M曯ɟ#F&}:m#Uʖ_"3 $f^ұU'?y8666,,{~ q-H̻$۶m)SD頢F aSλ-}{( ΙB1!::Yq `V eߟ֟7F䤡]JE9݅meMK[ mϴ.YQ>g7Z[[/p Os1^VœHc=H*O+HS[[{N?VtnI4&D&̡E_[ioo G>O*/jV45ΰ\;;5<ԩSR*<<|U3̑(g끮iemn-ݹiϮޫJ~>Rk֬I!*8Y9RsJ7x_g\>0+"t|%~ ZtRX6#!uċ$HsaVBOy3:`F}}]ٌ6g~>n,*uԷoD -LB_Μ9SÄyQ̤|LC4n~m2}E/@svપb愑1 kh,_%baωZyyWk9t)M *LO5QRL" n MMM1gI/ؙ]jIENDB`PK TB55)overload/data/gfx/talents/stone_vines.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME64=IDAThZklWv%EJDԃÒ,ٲŎc[Jd[4I-&Eݴ?(v[b]tbMiMwԱ8~ʼneY)JD4%>Dwf8`/r43sϜwsAK^{  fbd0꼀/\2~]X?]tmHb0D'""6ԦMScT&hh@D*4ڧQM*V52NNַJbO2/I9@6Y)W.V"a,Za_$X3'uLPWDVL_E3E%% ,t (մNx}[H(J"Ngr6/U3%Y@D#e@ZEv~ieo͝Ɉ>,T _ S_ Xkc3Ȉõ*d $ZZ@IbT>i6?i)38FWgý1A`-m 0$3@d`` tB^sCLf}cXv,+ho XY'UJL$B`~xnCX;t Cn̸\.YQ>7W$MlC|n0F{{s{;he]J9$n~g{[r7a]-_̕$_?ρNd2GT"2gU-r\i@QFZٿnNbpl+++2tL@$6mrr`уǽ!B97G h4J[PPP DS~3BW!l=G|,--} zVOSĖL`&` @>>h4E b*eq %:`*)YvrrA7<߱kz~D, W % )B0$pw-pV\\V+D> H}`柾t.姼Vuf3+oVC?<;Z`Mڮk~JR?M,n"+++vwTYIݥe`rxB677??RYh,!w욙d2RFpeK[?*;tҩ"0d8HYbt:f٬fl6Y^.d (˫`0{4OoޑRn]b,A#֒13YUeD\͌";< Ւk̂`bI BL?>\L>[g55V,Rna~tiD >-!h HE aDX!=  8Yqߍ6`=ΜaIlV ^2q3WՙN%VC2 ;Kd?b1d2RPp5V EVWVVҗSi59,K72?:cZJ*(U ,H搞 OY#H>466t%^7*j9WNdp8/V4<^QAGqB/ڟ+@9OomTߔ:ٙK$+ck.)))yUs R2Jbd2ie8Q uu _ D_WONRCwn,Ӊ&2jӃhqM @6pZˬԺ[~Vufj9~s.| WTI.//[^4錰FڊƑ)3 Љ62k%a)PD;w6/C@{Ѓfdr&?\Yt{aw/\\WFoZvj0+ۄ. *}up*QX9""BMfƛL<t_w^s2)q($;dKh+c{-s*䀓PxL,|Vu#趝|3?J\zDO4`lӑr45reMMcۢPA(okmrO!-؞$Is:T 4Ӝ^4ӜN$w1KIq\9{,eY)%3OϜvc:z5b;sh4Nwao}xm.f7Tf j%XU{Oֳgܠ.xyʎ&Gds?)n$ p<~|D,-K6݂Ry;NP0o@P ,s=M?ߎ]ͦnIc;;^WtEfOxzLDԇOގ7e\(01y. l冇;T]Gș^ZZ2CВQ(45&Z wFHD6051an/uTOd^Q&+p"d2x|[ݮϲy BW-sQr{GX@Px3 S^Avx G+=qsۡQk;w2/y*@Ə/ }#M=pnZLqn*{\g&{Mnzi"[|yD޿i/R \5N) Rc80Z0z~*FˁpF?zn@6/V]8":4e&$w @:fu/ht|q>eV PֽϣU@g/E"е#.=Udfب6-;JSN\k3^ %=G@p>W*g0؟ .-- M~1r@)GTvuj`7H)<苞[1WWWLK[_3fxUi+;O盢96|1;pyϾ ԍNX33zzTZS5K=J+Z :R:?) h=mQqhpy`͘pO@hC53OxGx!y\e2OgFTju[{}x㋋TJ*%{@x涠DX\\+°k<#Hp 51;fx:-JLy,[vT+L/7dSX,u'c3oRE]X]]X,#oo߽4_IENDB`PK TB{c(overload/data/gfx/talents/power_core.pngUT DQDQux dPNG  IHDR@@iqsRGBbKGDs(< pHYs:tIME6%cȿVlIDATx{\Ueǿ,%oʡфE %KF󖗦Ҝ~]F*ӴtJ)hii1]&7" r=wNA99~{\g)@7p̸q:ݡR@@@-M^^'֭ZE/^qw2߿ziShꈀ шp\~,JKK49~~IS$Cz*DӦ0~q>qѽo `h 1M0/ 5ϺX`zI)))MVPV-Zػl̄i)))!((3 eS0&=G g΀Ԭ)uTM ^`Z"|VӧOWX@^Y>8K^^ޯ`(M-k2 eSXXI0A.mxIZ 5}w>X4 3bDC!/9f$"zzװu_! @ݺu4  C|P` J4M>d''Q`ʺ K i'g0 UhԨj@.MX l~{7= A)o3J6DOJ AAg~[`u+DN]G'$DXD:,gX&ΝsΞHT :t+-P] ;;QShR{ѰaÛ ,,LR|Q ZɡB54U?q+W^\xqRՎ~Ȉ)m,[4< o/ԳP;0'D[)Lŕ+W.[ F)TJ8qrw=z=[PRR¸?aR liَePuim;Sl~{7.\`})lk!??Kq&H; y~5)5[up$%K@!_&xMSy١ybhܸq~ʔvj9U&m: ;u*D\!oRAWhge@+V/ cڴo﹞a0g<3/;{r~v)9vLxn98w=-?[*6UK/Z2~| wqm4M| ]?w[(1ɦ3I&LDTsoDѸ1m۶ʘ{Kc{h@JJ31..Rf&Y&3>F% ֳy* ;Luj8&PxpEъg~<KVViVISzZR)0MT+=.mUuE!sP2AdѢ}Z/ kָ 1Kۛn[*VRn+|$讑SH!x䑸*#6<SOD)PF8\믧L ]*J1} Mp/// %ma\7r8}4[8[o!ZL˖-9z(ѝSQϯnʏ;6ހ`J)]EV](nQZZJɤa.Gtt4%%%-3qWGkx w8\l\igИk9z 7<1b)[s|Ăa4 7̙S9+V@c7l^:=ך^qCTIqq1+;ZSBR*{!ܩ\Mrݻ=:Q\,*HD8/Э{5G>>>vοۋZ]X>*}\BBBHLa]Sg 4ٹ1ƪPá0`ZlIϞ~ij\0G:5n˿ {,xM:l{aڴ5%~o{,bC'#s%~;Mpy#W4ϻ,7j|v-8vLh{KivmÇӽF~HCrsaö:g>l1~Dԋt0=Muݰ%"U]SvDƕB%cwQb-uow8r~ VV5M pu<(*+mel`(z=Ks=C0FX9< HP2> 붞'ӻ>3֭Bmρm&ֵ Ã!8I`.E}EO[['Ye\MM'Ԥ4= enhk; h` lW I%̺(?$Ro%0 TF"4}: 8WOoT\ Kfz! /K޽aln97Ikkaӧ<#c BqwPũRbKcIjj§^'OBظO]r`^!x=ʅ;: h+1FBbKIC%;Z3inn>CƒU`ۧ0oȀ -*]@ZB_:TR@^0%[_*ktCT|Pk$P`\a-XRǒ)#%-/Iy9֯v3Ial5UYRBP "$uu{j@Ӳh;8"(+S];,ZJeTF_PWjl* %999=@R_8A0_젲19$##p81B`K4i(ݜPVVvz lU")\7{$Jɓ'=b,dUWIp@ Եe>nisb,4++U/[QQjD [11&N:v/;"݉BrdIP1FYYQl>hCIx:-lsT7MnYLm`(/FϭefMPI-* c'Z^s>n./^O jcO#>R-$BB=Pc#JKKS'BˠRP}a򣭯pfq>͞rϴirCYBEm &=̭'zc}ٶKy]RyY zGILщ(v:޺U999\rIo&^,%nC1w߅pՕ|ѝ XcD%a Taؙm=77%e;1. fw-`ryyyB!Ip匿Hl^dw2|… J+Astor>VUgY["QzeTmX AD nEȓ{{X~G׻@#!,+8 RaGqW*W [HƏ̜Ǡ>lĉֶT#s˲uoaN-ͤ£yg/psyi[OReH0!͉I $3&pBv:H8f˖&n8PJGygT<֯eǎL-f(H'a暓>ҺCy~J'XF'/dbQɂYSF"˖b߾}TTTPQ\8cCu=33S5HH_t-j^r/|* f̘ұ ?|HE0 ͊+zmΧ"pF;l%my[N7Nn:lml}ڨ.Q Ekhhh8=1yr1ߙ }[E^?$LlkYz c`{nxNg{FO6"̈lnG.;׬f&| lz 6dA ΖQv~C(KDCi.|6FR,X0!-y`ƫsw t(mxSw-/qtnEnoK\FODRWr%O.z8W^_Ą1vvc`hǯ(Vn=555#BƏuszCF 76_~0wu8)\!yΥ (EEEb&޽{سg)s||7PUIENDB`PK TB 1D D +overload/data/gfx/talents/eldritch_slam.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME g IDAThZipTU}ݝNg! mBP1ʄ% (S1%Gd)rt~Ѳt\P'E" T) ʦIX@,u$8Uݯ;_+ʠ N󗠢"22211bttt{ c`Ca8Rm}}}kkncTWNe4G6jL2 PPvy@7"J)Ȁ7hfuuuuww:fv:!DDDC###zd5*V0! 01  @.k3N JfCsXם@QY а +`0 ff p}*ff ȟ4>? !fsjjjHͣ#TpI-C]=>Z4lw2Ls\,Np;4Ѻv?tycY5),_)?Ph4Y p.BV@{̙3}}}~J&,"ToMgggH ADI{~d*7ep;vz^:??KَI_7\0٪s?Z^^+:tX SSS^_'ZcYE + _3 j9,FRRp/w?Gڬe---C] 8qڵ`'$OÏzޕAvFez^(r(Zi;esuY#(X뭶u/yqɌrHuhdʕ+H("";@Uܼpȴ|XFlv!ZJ/9*}*Lt:k bNKK FsI?/_{5GJMMѸ)y###1MMM!SC=d,3`̙nMkM=R[O`ݛe L-~O555vY9%z~Fd7|eZO*`4eSof8dn_MV#yjHg]]]SiiiYWEIWQ K6Yg%gXjjNQՊbOBt%%ɓ'}=2 @UU4j a+f,Νˮo?4Q;FU2O}/SI>Ƈɷ7lhhhFtY.^xSف >j zA^x%a[E@B+3lI҄v>{w576gϞ*|qIdD;vlv@53_mgXݰ=-^w=`5&f!w{P&Ke7|h/R7<̔楧KefL&gssW 9m4 3> lY\6_m T @SSS%S{vIll윬mڻ… !1ӧC/K7dv~SRDq>sB Ag,$2*|n\șLڲsB^G zCУGUOh4A|.7+w뗻S4JHO6<APҸ'N_oX,S5B,ʖ%ZOT#pT]Mb0PNjLDnDh\ȇg9P'c#Ab镩`/zXY=>jHIP0.vLGD0_&UwfuHp[⬸ {#x&m䳏|C6F ʳYiqBτqhS=bxbz"5/n uwd0g~L,щ̓N_ EEmc"~@?Tvt%< LyפuU^HO,/op;{ōacS-kS'$drCkJ7_<>{ v*L-Jm;::SN'oܞ!# zRCONopʭe&Rrrry!WIʂl/HbWTT1܀βx bZ?3 U?e?IENDB`PK TB@0*overload/data/gfx/talents/boulder_rock.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME 2DIDATh:ktՕqL WxW1* J*82*jAŊi]Sfe ǾlLULuHEKyb𸗄 !$@HrwBgܜ>;}{l_n"i >.zǏJMU`0m-Ӧ/)#S% Άw[ x"wLQ2cj%%X@8!\kE /00 0W~pTӤ=S&K8G ՞=$u˜1>Ĥ%HR" $ZH ҭSZv92hYјvٹL-sƧ+D R;ӒLxbMu=e3yHHHD+4.!HH7?:9efΐk[;u  bAPA}4ŧL;X1ŜHdNgQ"EL-_ ᙯf!z{B$ VMI DĂI d&bb\-2p]DYb g젨 $0?k(@()J $͹&D &2Z8= R$ ČZ}E.`̬ d:6ċfs3f3Y=>/9{5 D$jLӈ[CT O-{zA}<.%յT7s@L*hLF"eDdE2J- V~lkD(FTK_px V$RANhR>B!xXwZI[Ӎ~$&=2'0g뾪[Jt`ɳ3'4yY#7 1ʺep^^3v's/9zh_(>r ?U[‘8Srr#*d1IlZ#h Pr0hR*ew>i?|@%>X^u ˲@H5 緕|vR8 Ȳ$"4M8#anP5,:3KBgY0+H4t%l*l`l!+5J5:ИCҿw+Z4c`@U 0ml'T#'+"*iLSnJ`CXd Ӂ$H3gpve`w(X7yfAGJ<^k0tȲߌ$ز,6/Iާ } 7/`E&p W ȦSU+0=<ӘKGha6-NpL{{՝3b~h4WPr솖}~$6H#{[X;{{ߴYv߸lRsYyH+nolz@9ߓiN,#snCss,0 Cw&tg쎼ʫP ĬњsQ=3C'f M.WiJ'Ǫ̟9I{9b&Z:@6$zDv+ަI-"'fihiЉԟm'p!%Ǖ[j ~αoC @T[{Y f|H IusV4\Љ9P>odKޣi; {c/h㵍-fOV5!b$"d]9{ǟvtvDpudB( 1uHo#|V]wUMZ*tLWq SK6 GpfI$"@GcH$;+O]+pXU)M!6lF[j\2{ڤ7n)T;rؐtvDS+[e>qu;zΛ0Օ? #f%:tf?/}e?uH'+I{ ]ru-Μw{iR_iV]CBѯ .9Sؽ8eie;d-Unx0 gv =0tJEϜm1Լ}ǘjhp1&n&$ ) V\;mD6Ǫ.yNqy f]lӶbˣmD"ʟ/{k +f| ۹0aρ#74j䰍oRJi}>Oά.+Z_<Ԟ>..}[ggQ,6Lr0~y= hݖ >Y;guWQ}  jqͯ>D"5lzߚߊW,JIIQ\.4HY(#eL,*j{:UI 3.$",>҇6l8Bq[֭rR7~FNg-.-|˭ '`RФ@ =f+VЎ Ij<<%1@QqݦѦ Jz~J7 M`ˎ%?\12g]%lR@.`u}e.ڜCi{<硺FayɆsƟORb1m]v:~7kʂynykӗ~u!߷ssadJބW_bL|]Sϻ=Eyp$vۤ97T'oH4Zu'~TjB4MK2؍v Q;Z+4_ӵgܙX-)rcG%$cb^~S 1e*QuԼH47),*i9Mr|mBvJ+~U皚oλ+ч >ϪՅte2Z}xyZ.t`g7sxq]B("-Y@šݹ9w&m٥.瘅#{V:)VuYʡPcO=jFwB8W{%'⤿aV#,zt_>v3O@oiniC&3C*lTTYZ5oFj$Pk'߽&i3:"fW Dxkݻf%gvoJ3g/_n:::O^L 1Hu.iՋ2WȢz\QkjjX0JMaM'{sb4CB(ş/P]}s}0sOo{}~K옣P?-h_r{n./gt뜯mD( )KC`hyΝ {/XS |zE) P0 C_Z hmN)عk֖`0x$ C`H0_ҥ !o/lxIENDB`PK TBi )overload/data/gfx/talents/rockswallow.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME9,uv +IDAThZkl~ڎ8َss$M!YB) j[+ՆJ۸Lc mҴkb 3!6C`ZhKYiKJ8 %iII'.$u/ܟe3hV_ 0`2{CXY0@ ˊl6MgR3͐R.Fϊ|j\I YD6?AfɰIYRL)P?8Q]D 7bɞ\M!Y`̙lu2['qT$@Dl-Lo2uPwn7_&lm)ckkRY$k_XM(+P_XRg@|$b"tN[X%K*lQ$X*D$U$8ujpqlQppH`AKRF rtKRA$sX,/v¡C!bFP QB0IU.<}&TI,4A`A,&X_ubAaj7X@nw& HbAj$H/.!%ii@;E Un,]HH=U%XE2 }J 3BBPEQQ| LAv_Z.$6>o@toVMˤ*?Uh?ۢ Uō,**"},RJk|٨X̷ @n,,V2ݥ?̂TqπHTx.f8exD"G2%A0!@X.Pf'>3Μi' DE2{Y?bbb",Lb1&"fjwHK'ze [s,)E\mHsv=CSuSe0G4=!UBn;}XU4JxqUa`jj*k`1ްI<:4;*!r__ c`2܎ƧI;;;? ={IDZp t_466ܗ!` Jr%iU|*;HӐ.#CRl*u|8=ح93!Uk-QJXgLŋeEnz<=3 R!sqqNs>M`REQ.(€庯zAthA` pd2vwwP1F JZy모1 dTd`w)޽^荣oJU8\.::4xGU3`.(ֲ#~w@"XIeVgM; {gffl[6mق?^u/H$n]s6ng744l2MO[wg?=y/W+}݋]{͚c=E?SXb9兵j &8ǮAL ^Ო`AD|eI䲬{_T}Ӻ%L϶=(m>]n:v_[z='\-fff~@Kţ+0/^Y?D-K%*dto ~>:@p\;˻\$zkQC>_- tl?~l쵶w(B,*%|˫B\qyp:Tv*Eʅ nl7sl}&Ih Pebb"/1(nG'FKR91> /S_ZZpL|YTTsZ#-pZ^^~-8}dHzzaIt>822\.׽~ٶEA!A$~{IDX,;kvm/x;xqޠ;==}g]7~g!e|||(%c\p;Ģ͎ݞɮtJ1а]do=s7b-! (EexhtteUttn3{HVzD8rѬJg*ۋomwgā⛚]#(Bƅt."ۯ~Q_[@S4]Cvê~YD6ڇ򐗡pw "@Q #68VʢUnr4$@t5wW@"L.#l6EQVUSHpZ}|Zuu攭2i-j5j;D/]Mi&lӫ6Ss  OpQlĔGy[7Qzɽ^M7Ʈ&?x Xf^iRqgCCCeCN>YQ vNgf/S]R X,W>`_&L"4}qSRB[ɕeT惯[N-5 uCP(n$Bը4n/ cܺk8 ;pS}|S'|?jсH$%`P^^(X 1Xf|ʐ_Ĺ2nUidj ip-^ ahCax,1H&D"HjZRF|>_cQ&l*dk2Yy"FS ~"S  ]ml>Q(CJ1FtM@gjGG'uvwB,%^TY,bc7pr5]I`?uNa"p4![\\ܹedZ DK imlz5k~B"BZI]][6Ԝ-$,4",(B޹`8ߣuW_]Ckk7 e?+`%i!nhmpagUJ))AZ(a#Hz`={hjj, 3w `gř-G1O)of-G)|3 BI B-ٳ''Xof͂ۃ;_0&O0 (80 s8텋0onL@uܺv`Ѣy+A)mA+RHe#mP6B)ƴZ{e#B+μZq\}͒[_/N>H^$Z2ړW5Va !%͍J>ycD"7<ڇ^͢a=v 6_ !CF$0Z$y}{S;u>G);78s&\Rou8p w\ؚǙS=C@֮ H$BEHf(fܸQ  ' ;DzisN~c;ecQXdQ8p-Pga}m3Z}0 Ak͎Caf:%| u<B0ٰۛa;"s^ P< 6e;pϊ i~A!BƏ e#>|H@(m.tq6m#=xBٌaoWcM%1 5"{1}~3>&2f֮JCxK`ݺٳO ߯Zپ64U$̙3xNDiZy?ޔ̝Kpq !exX@(Sw7=7>>??]nnzm.<7mHf\s p yuVwxCɓyFœSt2v׮]0.a*~G=Qsn \4W,9s _&&=^.˶@D-l/T"Ce󳅊0Om} KJDnVҔXR}祎."",6?_6l7>bvem^:@bvnHXz6[ҥ9QN%tny,'r+FG@k`m<~.䱸T }O bURJ߆HXAKP aK |,'|]kTn $}{~^B,`ҤD;f/?ӬFG]F9~9` r"try0agL|/|tL}O۱IÛeb^bps3,:1}/09(>lELCPUϖ-535K{7k=r H( Ó7aݠ/0^3I1uj v⮿}) mBdT-͛XPV.>UBxP[ C,Aݎ|(9uJ x.u/pXK]Eΐ^?]ݤ7.Qj'X?09;w^$ʬXP[y4X]۶qQ@ye`[ReNW8u,W[=s(o}t}: ϛ2\> >̤GT`= w@2-K'g袡44k)_eMGCC zDpTxCxΪKFB_:`ct(sS(*-<п{{)x IqG:vOgjko޸v3f@m9psW->W<tKܛ;qas1 X䍨K/81|e-k]ɓ͑x+`H],A`y\sD'G:U(`vq3#7{B8 !eh%fz[%"{9>l1ܱW &f$m|\oUUYPAg'l9Ǧg$9`]Ym&$,fMװ`͚^ܓi98ؖ>,overload/data/gfx/talents/eldritch_stone.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIMEt?IDAThZ[sTWvݭ֥[tA\$k@PFC2L|!eG8'I<3LMf(qa(Κ|P孵dii鎐 T aFPD"\<8??1AU vzeyCmHB@(/zh p!H*NjkV0Vv{@@H(6RWh- Qoݴ..ڵ+Rɓ[ED B D(E1cXXV(݉g4>2hK=%j˖-?=]қP3M\ZU D)TPNMlȷ/6޹LgkUU?Mm`-X&gIh$;@@)sѣ6ॗ0!Z>x́٠ݢ9::_NY0u/H]d+,((؀$_(5dԘa޼%Wk(:t2HLLLĆ3T&x̒? P[[}_èӮ.󙕕 5J}.-4_a$CYH a_ kظ^wDG92Ue1mZFT7o677OAыT^t+]'/ B]Wb=T"S~ȡ|4:yaj|<9LJT: շnO999׽{6f4޺x1geĖ^c+WFFFQD"WL6 c(XSe=T־݊X~'j M'Pe(Ammm;+ ^Y=_*k׼\Ű|xxmaI]FY#֤={YC FT}͛^6iUFOQOӁp~u!)e *KaC&:/_8[XSGUիkaZUUm:.hz= fQ{-MT&:%eϠf&X,y!~{nav`]ů>BOOO]#;YԊE{:8+m($Ȗs;Y''Xlѫ?(&r /^VK7>˷h ZCLzzzzz _4ZjG #&)l枸겦;_L& 3/JOBשƝ&Jt;l̤#'>('RhE xJ3УGtCغd.fKwnФmuuU2u}54?Œ{oSxئJ8sgjJyOݑĽSO$b7,޷nM]ƍRhl–$6)}OWSSދ3)^V:sϴ1Қ4b_<~f2D& Z"/`:}7[wtsnO?Aa F1u=|[+䏆`wS:D@oML+OR/]"bސ8/U+.;?sg,Ipi=Г s'c1 ɲ>am"0YaQ+*h p|!ehC",ҡ[ )];] =2۱v{uy?e&IxIkb@#I )A%bk@rGXL0ݐiϭJo(v➕JoЛaj1^';oEtnI;/2-/ܕus$T=m9] tB Eu=} ۷o6̶r}US+J'<F*YA:Ц8O|/_N$eee צ˜ċ8w`l^W}@ lqJ( " Ej}"R 1sދFxq G d<]]fQ]]Ԕ[jWSƬT7psU_ ݻ[y/(xnl____Bʖ,W5ѐBM*?2::ֺݻkCǓ*CCCCCC_|֭[kjjm(Tho,d3|E7ZE|ʓ0Eb>R_~_akMOOwvvYQQQ}}}6vյѧᰞpO'kIENDB`PK TB&::$overload/data/gfx/talents/shards.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME`Kp IDAThZkL\y~`.f`3a0c{:Mm)ۮUI**jZQWVRkmۨUI(uƎ/|Y`x`3`|蜣}}_E[-Jin~ ɥ%ܺJRvB2GGggg_ ݻ6\=Ugd7Iā};._ZZzR]f @JFp:SSS9RB}\K9v_jF RGw##dG^eu6Ԁ |!51 $yK;a@ccAp$%iO`ĮLxAl (INʵmt?삎\uD % Ex&Y^^B聫!|_à_%N._tv9KIPQD=h ut,\.t'ӐP궩wB?6z0!;oPF**`>_xكU Y\S0Bv GFɒ{I*I^p#Q$^o*hLf٭x l~䍁lLJ#U9:OusjMR!t"M##S[FM$}v_`{ LSie0!j R,ջR6ַj$ՌʢVhmO|^랞jg  -I-7 U5q7t GytMEm;˵m.C==2_Yn_ &壸Dnll27cď}Z)e.{~5A_ZM{؍wիl6[QQV&]H;@?B"JjR(_F@ M&ܪB#%4a^[xm6\JB|Au*]5=***orY.X5FWDktgm@```&-sTBRR}'&I"[/ +Vy$iGvli"I$xB /tvNJC?~7H\sK@@m#fD6 /\тUt^"$h*ZXXxl<@{{Urt C\?D"EEEG:{Xe$.]o|D.E)4g5]ȼJ)@Fa%h)Um Ϝ)u&g㪼ˀǓ9xERZyhڜ4jrc҅b_a; O؊|Ç'jj&~Yd-Ay5H)_ժ^@PpÒ"D)UUG_f?0:Jw:kHrWo^o2l[˝wNl>2Ae.n^~vw12=ͦl±3M3@ 0<XNnCyY+Bd"|v{]]4௢sssP@ͺ l?X|dˌn\ <-t ;4YuG j)2: oZKKKwL]K`tΏЕqzPVbNߣ+ڏڈg;N'@GO BxOD&SP($$-GRRi$]L9SCUE7A y-l&[$I77k״t~}T#dӆT \H4AM`Qϐ`tff&~4033#DNUBw,ѷ:QOHB`: $y;)ϗH$7kH&>=~xRʸ}D"SSSW^Ƙ0PG,o$gff4p=|.CU0Чc`05ʌMOe=gagKHv)7x񼹕Zw}ZMUYr\"?V\\Uɫr{3sMNjVEǟ9 =Z\\H d;11!!\TZ׷ O}&Lk>V-y[+=6FV6E)ߚLLd;~Li|ңRkR~ CCC&/*7][_۶UB~Bo._ȝLˉ+$D"Vݻf8%[?=y`~~~Lt=^tfseehMLej=krrr"l6 J~sbxI[aRLyIENDB`PK TB^2*overload/data/gfx/talents/stone_spikes.pngUT DQDQux dPNG  IHDR@@iqsRGBbKGDmmu pHYs:tIME +rIDATx{tU՝?{ #H##8bdShjN])8ZY DR^ K {o7::sϹݿ|77| ]edd0}zHPB.)- f_'8--ЖV)QV\s?'-~Ϲt_&&`V$ZPx xJhaycu> LPBH@ Z+xXk@H)(fzRa -7ƅqZChkCDJT L?]zB+2@J3uLU^{e".c)E?G$:Z!upY͊{ ?7!坛l 1]׭\*Jrx{d70t63f\wlٲ[omzj"333~Bhx?;641 V>m.@ApFf GلBk555(; (,,,de%ebMqȐveGyV|V8}4̾#R. m3wn~;Bp)PJ01X:s986e?KHfhk7 C uカ/BZ 0t#UR#<0)?۶E^|W Gq2.cB6?*7 <@ma\}( LSEC=͂)S+yǧ˶6q)~-~9L>7.йxE)/1joLNNf)mkԵgdyG  ].ONpDe%06ݡ pW~r|بOO/#mEлw}%<ζ3E+U>mǎ/D\B~bMiY`2xvU$/O -w٥T$[oixuFDe#mY'N8z3Ss3gv6V--Q{廮GJ{ye&@Ǐ~:V'z@(u6UUU$$$0l& SXE-_ySPx=O7{m ߩБ#ƈJO6MM0yr۵ڵp7cd PЊ4"}:=4Q6ʍHHniX~?󿁧oD!t8P 5iii9m5ފ$~@DMGDau $ D8հ@0meep&j&hA@ds{ah8k^lz۶36ݜGI1JF,c&臱c;A:|֊M&5Ls"D!5?L W;IPUchk.VyJ߻HyaS(544Pc+mT='Ns;懏Az۵ ^y)|qd-t1'n-HM+%~{R.UK Vëű={b >]եP6v'999Yao쒎*ϕF: _O4leL;xL{?bWc=^smVj@@,pkCMz#8RWWyhhPw򠥿Ng 3 #sKLKFdjMsHMH@b|f@2-n붝;]&p@iyhYI~cTwV|c̵R@ 봡 &f#kka=0>?j? +q""k }iꃽG(*8l +JKA ɑMo Rhl490{*lB!% Ca!}puЧJDKrMQ Y o,e3qͽ`æʘ^M ,=qf-? |[&'W3k?E8b]ldb RRRp<~Jj/CRRpgjX&V|i I))!^XKzxv~ظ+OsVJVmغumۜdI#̵`0Rڛȃ%75) hpARV/TeE[te;sp͂(jtݴ1ęrsʕHIIIm3)FJǼhpe,Ws(^90,Y2֩mwp!DUU3c$Au=ٵ B[.kX e 0 +CC55uxN0@p1Dupgbb%-:U͝RAG[]~B!6 LFo+&wT䡑9 QUUf"R% aAp{Ŧ# 47ۜ;]':Y^0d}^GB hk͕c=`DgrS^^ (8gEk#gf0y/ARCCO?yZ~?gD;Y@ ?6y}I03ifݱ?oY" fҤ:d{Z 7|y&bl2Ɇ 0M>K*++#@kL!XoÂ&R scP$Ov`ptT6΂n]xƄFTYp$^|Ա_ j_$ؙ-- fNܷ–-[t d\.6~okoh  Z[rF#Ch!6ݻp PE~'(I/~/پ_sTZIENDB`PK TBބ-overload/data/gfx/talents/elemental_split.pngUT DQDQux dPNG  IHDR@@iqsRGBbKGDNv pHYs:tIME08Vt |IDATx]Te9;;`QjdI"v"aT$]AxEdE^ t[ :<]svf?hԙgfq,yy?*",Y5k,-ԩ^ 444k6Em\qŮ쌦 ,] /bGXxq2e ETPW QH/vO`ڴi`ApEEQ(wf͚$_j]0SoGX1hM$xa"eˢhL@Օ[<_paT|9n v<98(Ƌ ]D`cHQo*,%@@t-AA"17h@ sPX](\ F P bqlD4?[8/.$  >|ȉ5L#j E}">}˲ؾ}>lLܢ6n[]9p\R}ձ%E.;ꩩj`|iqxG@}}|C.zա T{߫T*귷Q nf(&Ml~-[Vl8r!L֐k- :F.QH[O!LV6E!xaĉ2C3^$ʶm* ^ț/;x] {.|D"A<,Ŗ[mjBfs?re](%<@&s;wfdقsf~ׯر*7aOkTW-[`Y͂dI}͛1* 9s&OL*b b@,RS)* 65%B_oɮɐ^<ȫ>??|TK`̙ φG\httVx-gZ[;=0\TYL + Μ y3`vZY}ܖF wX0 z_Ӏ=L[*dWT|^|\J+ JR P5j "(B]&(dGCaHC>@299.2VXwMpLd2|nۿE-~IENDB`PK TBTmMM)overload/data/gfx/talents/stoneshield.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIMEIDAThZ[l\u]kyg8%SoѲj+[Um4Fօ] _~$vn(v@ ׎,+ p,$Rp yqι-RmpI=Z{ ~D"F*J%U*1W\\.+w8NWW-j[AP^9vΕ3f:vdOͅ$D/ t>@{{@z@MP(XTc#ARE0];oܸ;vqu4RJ#Hwwǽ7N A*ܿbff@8޻)թj6]1]"NG.,,賻ipd'Ndy566>DubkKB/td3]Y:+w [[[{.n 1x Ǐ.JGSXF P컿Ƶt:)1\. B=jIRo:o7C :VBO=R+MOI2?ǟ.]Z_M"^\p|d:~+Y}GGԓTbI@3 s/~>w﮽ }|ybb~ R#i`=u y B_R7~ǎP@ķ_<177w[jN;͙mۺ|c(x*~;r8ۏb\S_?7+fWؼ_t˥]?:%rym $0^^Lv& wSDOVb~D H.Gf&ۯ )BB૏ P8QSw8=I7D|jT0+pnkOLJL) _ܹ\6t СՄP٥i@gv#g2668"QH·K=~~+9:B¦ I|ݑĩZzTyiOO_?#~p$9,zɶ&8p8  S?bk3<|8ҹ NceR' ;NEY:]쟴2lZM@${hQbz{{Ϝ9SS$[777CC!D#M "(K_5 '\8`{\.::Z nƊ( ---:PL3@?IJW- C<iSSq|5un9te8JB \gYb. >j*"֭{ukN3l"UWZ[ P\rTJU*:3 H(_`)vB@eH$bF Q^j5@Z hl45lW"Z([mzK^:5ƍݕZr&;7@2)g5{B ժDLǾqSM@,[@] p"Bm`uv- f"h' M iRI -5| KW/UIe{=;;sM̅B!PPӂQ0]j=nE -k @La`t5@hJV*V]'JR(ҫeh{h4uֹRX:.c<1^'όH2 w@HGwa!*F) DC"T*)*P> 1DheN(]K%\CÒ)1m:˿]Gn7^/hf\JR @XbVj{{[oFQ7t 7ݶL[dB!!Ԯ'q2444-:qb2\9^fta`Q/VѺ 5a*D@*m辌 U+: V$aؓ((6FBg][|IVf6|3323ógXs{jB=PMnݛixxvnS$/cbsx<~E,,,0x 0l6 +LFCb^džrjcn*zP5KCfToADL;bF`Arvv&$@J|t:-"Li| ٳ5Vr'k'z"-PWWsP4`rۚ\$Les3W4kUb @M=z2H$9'%(ioo3$`['bv-#9V_be ewgL?ܺu~+QGq-c\tRpvbf4s6z$qE $D uhF/eGs'd^zUt5aYlkB3 Orll&d2blD> l OLhJ%ۊb(29P"ccEd,(c%r+(RMMRWS ڵ9SJ WBiTP195В\~3 ivROVnl0#~ӐP.MGcf- uEMb[WmF|[isY__ 48secTEl8Vq䲶A=z֒dJ.tmrOE_qk B +qpȈj9;;1"ֿ٧[n28uv w Ǵe9kc/H9sE"Ȗ-[|exҖt~ͱνoR՗m0[˚Yȋ mę… /}㢶o 4b׹v;(k;w{SCWi-yQ_ͧW8ijjڽuϸu  sXZds= 6nܸgO/ehv"I'̯p8H$6oS*#ͦRD"q |DT^^P&#Ac*@Z`vV\gg|(jjjjiLM7E,Rtwb2p@yh/e;` /3X,w?qMy`fF@K@:uNwpeƻ8ӀF`~S&:CF5g 2nȟx;FqǾC===?oz^K^TN]t!ܠ(OVH-G5][K'ۏӭhM06!m.7pmfaLx{B03O5"?W^ydz<af!XIK o=QD_0yB{!aaH/KIv>N38`="LB[CK.gc=`鲰$,y@mvvgEAy=d1K@<g륤2%y2V^y.M(_y}~Nl0́(@2844tҥt:}uGp8Ǜxj{]m4%'u%r h^0>>oBhd29~eeemmmB]Qܺ8S281tܹq e+t"jÍ۷og5,轋ho^;r쩧Zcs'c8~oxx8Jn͛7wa2qJ2ɱ@ =̓m ~MBt#+#񥧷_/Gogg`]t:=;GP(TWWt=C`&ހjŨ^nrJZ|%"Ssx|{-q`?:k?8L&vE޾fM9s0o@.#PqtwիWRm`<̵ q?rO=pbO0[)Wp &l6k;9jnn|2\xQՏlDtR/"=x}ty̶*u?'~V]]8t)Y"d]F ^)1ELo l;'bxy]]]$x",NMMM(JIVZQVa``I]Ea!R/_̈CQ 82ng5ׅD6nƈ3uw0H\crK{{-ng3ݪمA1WDXJKK'&&ܼ m E0 ?;~M ȟW_}7_ϚI;23`!^XX,d><- != ]~ |{?cOk*-0`%+hrtzfX T FR{-?<?.K&!0gdb׮vALd4'mH^裏nk xY'Oݑ`(ky!X`&\V$ t^}Nǟ={U_t^iM/ E7s RtS:::\C"G N8{um޼eƵ(W 0;;KE54FF2###CCCCCCccctz3;"QIII4FH4{'"l3G"l6;==dp8\^^аe˖_|qZvy|`WW/]J\`˧?NwNXn݆ W ᕢ37bM l.cf)--bX,b/CeEWW AjCE9F]i $vLˁd!N.+c(H 'Q[fPZi ?H)asJ1&C'zzw1]+ieD #?8pb+,Vw6S:x1$+R;#?VU@Qcc /%TVVرmǎED l! ^D.>Ñ/>H$R[[tw666644TVVhKBx(rR3 RkW^M&.\eߊsK͡P(B!grŶ IENDB`PK TB ;;+overload/data/gfx/talents/volcanic_rock.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME ꘮IDAThZyxTE?T۝NBFv" :6OAy:yΌ>LJ88WFqAE!@Bd#t:$~o?nw'lJ1S~ST+,D2B! &OCWMruz 76ܧsPlv7 c6nU=:T95Z=Jv)١sDɨb8<|½vIU 9G$ eAg֥Hp:qSo"j1Z7~yc¼@@DQѝWien,pɡlp<{D+sI39XTRZcSB"!""CdH Hئ.6gD1$9[jT{U$7Ǜ=ڻp쬋̮!)azT8Xf"Anm&l=HĐIC諂`瓆F M Ѹ!#~2Ÿ>ALY:*Q'#I8#Ɖ^9xfҜ>|%AHlίKO홫eY"= Ο8XөhpH'Ooˡ'FDZ-J{o 'MɎd?q~|oYc!sA+c2'Gq"#⁲tٻ#D(IDD$u ?gbcbv+_֜0:M.N'+Ȉ@QVW?FqHDPN[aC %ZW7?OTԯJn`1r|}1"!#Bw?+?Hнb#JY H IЧ%D@F$$ I"HcR˿b"tA!&Y:Fk,=d݋ U\BҺ2^< 1tmnԷ9$IEƉ1ƹ_$Z#G`؄.Ikt @ ,Lɮh8YC* ( e- @V#M3=:gEqH3Nĉc @TÛ;]ųF0^⋒  xK,˚WMSuMjWTEuRm:zMd؜A Lt z[e~Ժh(\?G` |\'H i9LKpFQZH^j:ytdwjE~!JZ^c|*N`rs.=qphĘv7;(:9~U +7./0H; !:Ys]?DZb D9"c d{֋C`5|WfL~ۂg?`mwllO L\" 1a:@-K73%nDڠʦr97ʚ_x:cDE3a+l~qkq1d$E T n&(@DZ& t`I9cNX:XiR.7;J CeI[t㢲c+"Bt~x)cҀQF؜m.8z||`rd'y|^_oۍ~OAi˿g]YTszOpFE )FD}uZrk.W\cE~Ut߼+kTМO!,$"8^;PR{(/-gy|vB߿Hlvy_=-D bus1"&@JB,C*L2S)go<&Uq@tW?/;Fg;6[NgWcᡲW&"_~k8PR34YdU8}]sjrk y#8~FuM1k{OVJH^ZTYдeweo)"P̞2R;_Uz|  "=O!qc vy ~+] 7Yw8m!Iq1჌WW$}q5W  #5ۧ(@]OU@guV[׫wչ^E2\=EUϽ @dUŕ',VD,!.Z #L$LUO^{2iQ@$# 0~>3,ŧ BDo9u!gx6OV[}T[<%X[O۔o4F "!h(|ͭܜL-~ a!*y|y,rq hrrΌ\Eiq-HS0κn54c"ӔFPKS^m3PUhgMgN)7g,!.om@DH_n]޾! 8VcNH<,=Y;W;cxxX詵K. k>AĈ@ \e %3 ,?x*"~ Й2ޯ(jߏb A׭?>.}re&e髭o,{l{~$m8zXz㩷A;Bh/ _~M1) #x(8c ZKx}eBDsCCC/q`dQT`LM2n[7ZZ&>d?D+ DBZ>+PqF%c{_*haР+rGzեկq?L?Iv+,*5uJMNg\FתKʫ3SB*T5znhCVZrHڻb%w?y&ud}& W}(_Soxjiy˃н="BΙ,IpIŊ7?:RjB_}plT ;saggY-B,Yz<{@4w$eO<)lm;jeY(Cx`plm1ދZehcymg9؍U h=^6P  ټݴsnㇶKvvu<6h:mm(u)"1nڶu?|︜\n-q-K1qpGcy¶ys=jEr'K/.`)n.T_PGuG抢HM*1 ~k/Mmt⚫tmfSO{.CVZf65V1-Gm6UU==4 ~>Y|=*_->6qٚk;Z" %{hVS5Tu暊VsOGsFz2si-ݶ.kCyqAxNҢv2 /QqumӧEc'T6ksfkTY~A"UIENDB`PK TBC˟)),overload/data/gfx/talents/stone_fortress.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME)TIDAThZypyO^V$$KIM 'vj;$nNәNivvGک3$5vl`b;69l2ABWx~߷+cL;hVz}~<#:WD,xo~>rr8qv$[L &&&{8SW*/Z"5rrJbx`;ѩREq"BWԪ _z[xصDB&88P33Eb"-Bzs]]]Z +K ikáRDdt4$ni.}tɏ~䟟Սy%^DLdI+WpC׬ H%;7"D`BE!I!T$-QBE *<6W-?{i[@J a&IS"JG!E P x}R"- H iiiqfgq ?ʼny$,B(R xw, y:.?*fӘ0|&?+XMd׮u_:7MY  DDNKe&-8='#b G'''7o_]us3:Z@RR҆E B{פd KXuOf|_f7x@v^@ar}wr}m H- <󎔔^Ї3{+k2\@QQQɚXa?[UN˹i`0xbwsLqAzlzaR }Znttuu Wp'KJJV Sp=#Oեa`%P~dKKKQQ·Wҕܴ={'=t^EEI#G &j}3SԿ={&xlo:; 0cG'g/_ ǦG [oqeu3{Z=++RK;;p O]˫Y988yh̢gff=g.~}u\ѝMCCC.[>IK.R-\ m ,@S7$n^P`̉u z8O_?rlmK*⺻-cgeUƒnYlي{3I`E6MJlmmͽނ便H4X8فo5kܽ;>Ђ UB<j,lxxk߾ڤR 05^},j|Z..]Đ vep,4( ExO/ .\`|RY{Z 7 qЕ+WxI;v&ݐ O5Mii:@%(Yh tMMMYYY~EFY=G64׮]o`N!p`` vt Ae9< E]8 GRNw399lM} Sh)|E8@>Oedddƍ5VƾaWs/1xDdhWJdǎw~8YR:8}*;J<<)Va_ L>B!$U"m0Hτm۶)XnÂbWh K2\ndQ͕;¢~nnn 99U$zEwӧ+t1P_8(3*E%"?cMFƝ֛G#ܼjp]kŖ2E~clVh"=OF6}>_ so 7aȈ04"ĉIV>bT# ƱFI,Rm݇8;;{fff?P^pF4`9 #)4xhyuPs4ۀ4WMP_ӝ8v};4~rd!)--݊G<;6m*2 . k:hN)EZى7pA`PId}"HkU0M *--W\a*3l|^ԁS9l }|hCexSSSۜ/7ŵ=OAA}ʕ+"rwb{ڛrɺѧ#GFK[IЊ=fк0OMM/yPL2PQQOJAS: lS߷544~HZnyp8lYVqq{V.0rm kV?@$S5) z.#B͜7o'cɓ'G{J(4瓒?Sٴ\ į2m۶t]965cvܹe˖ݹsGgK1IEFŘ}[LfZ+~"a/)GV:g:::fffZ[[dgg{ma0]4E}D mv޽ɴhZ#\-J!ʹ؇o=y`zz@NN޽bvE2JEKD;$[SG%a7G ңEx>zǬTY FAeZN|;޺әKŖ{$E˜i=CCC< Q7A+]+ qZ_|НO~Qɛ%A :h:9RB HMME3|o3 xess|}ڵ[[r1Q[9I' /KJJ dB)/ &׺~CsΝkhh())ٵ&fsw1lP4UGDNi?8|ĉ_aXC|zիWT\\n:f zga(˷/_ #k豓}$$$WUUͅBP(488800066?w~uZIENDB`PK TB'',overload/data/gfx/talents/rain_of_spikes.pngUT DQDQux dPNG  IHDR@@iqsRGBbKGDs(< pHYs:tIME6uYIDATxytU?H&BB""A pѰ)AA}>DesfCA|ˠ0$J&,@ $!N $GU/Ew%0.NUU/P7_yhMzzf!e //Ue޽0[L\oxl_&rssya [ĺׯ#** cǎafY`dP[[Y0Y$̲˲@% X>/=zrp8* $$N"8&dٍyrjQnۥq)|]cUT.SUx0No<Cd_,/l6_"?>In @.]شi4>x ÆއH-nz^6hL\\mmm!rhobC=lFCCÿFX"^co=.Scq(~Uc n¿=7DӦeaɣ!(Kn8qBExW}?79ў=de|-r;hh O`cm;ʌb9 |#tHvʸ:$FTW;TW;Pdta|+eezu( %%fq! ޾} 𓺰nvUwadkmo Vt-݊-qe! R:oO T q@$G;ӧi L.ú)+FnصA0+tWB3tu p=}ہP]VU9Hl%ICA0+eeK#D߯7")))ni]{\*.%[oSᇿ( s=zq:RfN4d0f] >йB׋1&pcw64eGd$s_$6~uag:@bgߎɤ4>anpϜ={NNNiq!{ˁH^z45与pEB-&&kۭi׮3Ut3ox辅P]] @||&¤徘@6c{}~ ?{b|MMMS#||<̛{i1EE=f.{,X>DV }r]U}c:W\#`ٓT|\Td/>/lCr=N0СCB !99Vrɓ')ˤqQ;K`uuEEQ氉ѹ] ۢaTW5JvJu8v\% :E-TXZe.ݱ8Nۙ2%[҂wQႥK+.dYQSSÑ>T3͌mT5 UVVC0 KY~ 5kp3iiid(Pyq;\z7;悧aXڵyǼv)GM?A&I̟?89R {-{tc+G~`+n? N'ĠA;WJ̻q!pc_^`Fk0Nً+x#t ~U-KII~#mlߑuy 츒 [}Њu[/6lUU))ʾ}Fhr]YqrӉ ]#3S3&'/,X|%عsr{BO,AȲ&Y01GgϞ爀F?9:z#cƌ ;n͸\H֊ʬYۨk>0(hĚ%9_Đ"eH 2㎾|f@Qx]GVVVXny9$A o`8Uɐ`1%"9@w~&Oa]>nscR>٨A,mV(H&mckD3o^AXy!y&?2{E"aKȲ1V[]mlq'qeCT࣏dɤN J]zk&+&ٙff qN] L&82'V$/:jjj"6&7@b oH|p0=tnfd!W?mX h0^Y%;J} Ob`:W$͉<|#W8rѱ`(::n&*F{ݷ=V4.++m;cE`ҰPjj*kVz:]*.nN?0 &wi/aꊎ. ?r+;>B}}=)ə\;H?=NSVO8u۾bh?M&_KN+P"8d<`׮L?Vm7ٷH Ŗ0 KEHe_θqאJ]Y>+LU gsrz*ܰ2G|oVWp v6~>} flڴo~<D|9:ZZZXim߾ ѯ()lass3+V1dHeee3g0mڧzG p ^MxM"0$K466^ruec |`gxA9T{Oy)ȷY )@_A ɂ_FኝNcǎt=pDXBm˖-"`^{ &Yl{Oqq BAw*|NioFxqAդ;v#K)ۭJjYuO, -h wv\8IxN.薐g-Ä ??sd2zt $5? |( x "U \B(R{;h è'2 KJ*T^VQz~;ïEx\ gT<9RUҳ°\Xqѥ29Ӭb85g雓س+͈1求=ө r?C9K& ƃ=E0pؓCzRmCf؞UQ"s|N qQ:;:PvVv 3Z\.b 50TL1Ĝ4ܗGO~kjmMa |$S&0Tf5R(6n JJ49{p(QIU=UyC1Ulݺ_g$@ll,iiil6v6vfc7'}*n'H\*ꧯ)^za۱ٺc+:l6@ȋ&AhҌ~ĉ??\Lf\?n{|s=Jkkk2(ZLAT+"VN13IENDB`PK TBinn*overload/data/gfx/talents/mountainhewn.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME :!RIDAThZ{X_{gf`@7a@4TP/ E Of|zdeYgif>X'2`xݧt-cxدZ+!pȩr39nu 6𘛨dGT[[wss[:͝1bGGQ bXUs?C :V.!oO@i0s1o"A 䂑@K@'Ǐʉ}}}D|j}W&9Ř1}{a!~$8 "ėMjZ~BRBSp0!CU,-AaHp`d}**z-(=xD"CdBqB{FQs]]voƳ h4 B.ev1+@x&Q 0Zir}9G(v r|VWc@ c$2a@ғQH\(rL}vK<ޜab~0тH WG#\08PHz8rN$t:]z522JD{>62&"gc5v]CM6lj(gax[TZZxԿW1BɃ!CBDFd?eT!*T7jgn 8Q{≄nDrHEF C^`lOI>#"2BRߔ$)$$dt$dQ-$_Y;D! y#!#5N'<RYr<<6fd驤c=0)"=0C(m7K|s&9z0ڋc˛ ?¯vdNᅸvX(b  Z13& l`tNSi!}uhԨ C$w52$%RY---铒I;IC|In!-;Z2"mcd2!;[WW'f36M$7URpNy܍#$c 9Cj;y~Ȉ!&D([mY/WCH7d O.;A$y*dĐ9e DHGf$I2 wWFRl6˪xeB 7:~c:"g @DO*SDž CREW^-++˻& @$7C6!:1a6aL 2#dr|jkk7aDDT$I(79/M9k~đķWӧ2W(s\jāvv!N-DIC @KKKI Bv.ٳ$h՗9ӊd-2O8Ҋ\ Q8 Vk׮=eq}||xO6.wk^zI(hrso"q ]ӞXcg'N>}0qQ^ŋeHb,ŲiӦz{y%IڰaC  tD;v)xw4eq y=zŭ~q:C裍UU̙3cuZd;ۋe/9J=4G:tLƐU`X*++]r*đG?/\8]Tm>9`pj3-|}}I߷o5KB$5;/޽QĨG'#]t1hta֭[y|pwwTTT5e>q!5{0**CɁ߿<9rdkժ Α/޽M5$>K|.bf+qWtVʕ+sŰ@ꫯyɓe*?~Dnnn $:xɑ^=|6#_cflB;Eō=e C![ìl6y.wͪJ~6q\ЭpsIIIW={\Hbb\F-\iaa!~fɽC9?kKWfkLQz^D$[:쑝;wNEmhhk'Jk9ryyy내#k,,77K9gNˆiӦ׍477ggg-8r{&ܹse CLϭ\b/9Я_Se}055s/^\u(Ν;~N}MMٳOFGs^S˖-{b8]tk…jƨ4C^!Ԗ-[~#c07nص{nݺyyO?#CEſ˥gg_\tg/+)2f(ڳgOJJ#75k֬Y'N0Qub#<}c=2qllER@.mݺɓ==JDɩ¼Im?]kx͛0/&1 G9y^75MxxaÒFi80gddd/yh4&LHMM7&^b(*YZZZ\\\QQa2f3cLVk4Nחz` 68|-[233_ut@Pʔ)'NJCCΝaYoŀ{ҽT⬭>322@ &fBCC׼Aشj߼O 6667.7K] A`L _b.u-vСD<44dڶmXr}}q4<<\UGhDoNbA*\`b#.kwL&SrrU^.' NII{nKKKKKKrsM/?0FwO8S&su1^~iddDd%K8$STʕ# _y P[V!ๆFM~"" ?Uq6dmS#0+ 0r`f)FZWWWo?$:::55t>H~x,̾Ç"fgg&SJGiBO3NVTT$ 7KAAApp˗{zz[& fgg WU2 )V9ULLLH JLL\bVÇ bbw65CD$_P[ˤ$ϊe>[߻w/Uuvfqf%LZ xCʣ@d_j&qDv횜'999¿8|@.;z)@tIKI0fȢLD'6Cz|qv< Cxx8if  MEaf#`A<%._td~TTUI1L^$Yؐ`o.е\g܁l޶ϡ=z X&Mc1HqfńgWJ EC~9tRAAS, ȯ!A%Z,-9dA8uꔑ|v w/AEeH5 &s0yyyڷ`S-[$T)Ĉyg4"f##2` ,] `dlKerRӸvdd䊜B^ښb M4; 5Q@d(sOOB? ޝ;ws}EhaaaN@8J1]}3 5L 0?Ct{+&Ha_w!I6Fz7I#GUUXɇgz1K0@/z14 b?Fٳgk]"pCCShh7vvKw1Ų."S(E5] ~۶m2@nbbbyP/_\ ;| b_e… WK)o2\UU`ǎr7o$RcR|[tijj\.W&9s۹GdMwƒRbuVi&7&&F;F+;]K\?#"**C^jb~ d2yp mn֙JS2uK=oݺŚg9krr w\=y0&#<<|s \B! Ko7LFGGJKK*|섿yɓv=3+D"$IHH¢F=4;AbҥK^HH˗Ru&;Mn0Z54-y3'!:^O)u&驖 !vo(w +)U̙V{W!v#Mv%Vy`` g2?!nn*;NWFrz7}g k5dzlٲEhhYmbGdX1)3̙33z>FFFMk׮u(++Z{׽JjmZIO ׬_#~-+'9vww߿(&@a(Ϊv 0i?VJzzzrssr6(߿sbenw@(=UU,X\ F ?p\ɟomm_'Mul?7ΕZ%~\A:i 6P蕚ys8qb滚B>aAӰ}}e ["X)NZ"O\Y09rTcc3͢*`XV_ (>V7{W? V|P0L XeRQzvLė_~96&ZL >  :wNU쬲q$`*X;5[ZFݍAزXYDeb(`{^VO}^ug|N@^{(]Q43k'UʤpW#GX+))-2W"BTA>c?%Q.\pA ())-^\y8YQQ4oܧPwIENDB`PK TBѮ+overload/data/gfx/talents/eldritch_blow.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME(0@IDAThZipTו}Rԭ]-ZB@ƱMc챝!5r_<^@ "`òg~v噔0Ή6bb17- y…p8LD111cccE.Vpf èm022J,'2e .̠~ J 5gVUUI͛WRRl+8읋BA40 IFV#FGGUL@v3pZL<79&&F;:;]2"VWvRL `xm%oXo_{LRU{Ս+Y}#>BWVd f{$0{5cA umHojtw\i:}^ڹ2U4j@Hg:|9kX6ɔ?$,Ns<<&PWpLK9ĢL*/8+Wttt\~]Fݻ#@[_L툌 @zzzww d5苴rO>R+笮q߽\Bؿkl6jZ11Q6w;vL4Qzݞ\EC45Ǐ/5f>3V_^S B\.ٕ4@ZbɑiwZl"z()"Ϫ233@駕 9KR ɩZ $eddaBr wmZZyΊ M"%b:{Kιu3 c6Ǡrw'mO8!&I/<ϼKk\M4Ae>1?p^λvZ'N"IvҥK{{{fz#<}y @ ###iiiHUٴ)lNj[VsAttt[[5LdJJJ=zuQ`v6!={D:7~ 2PsD^^E\)@kkj@NNI|[u۷iaM3̔Bcwv "|ydãgovpނuϜ9cďkd$dn#y}d>` @Ùnt:bU*ޜ{zz6Bt=M Wloow8/kM*V")H$(,/Ժ{Gɕ 7]xY_WeiiO?iZWWWOOO~~n}&?yۂ _(.Ecc0|eϗLaO{{E=@࿪W"J/++ ï&eVidjjH-3dFuۧiFGGGƗ%Q-=VP[,^dW$_8K}byZ I3{gIf͎[`q@ 7!Ӓ/Sm LHZ: %o,xn'?d$|<85#zĥXRPrzq^X0H?%@:+W_?foooVV֏ *yzo3__D_YYwRVp:r4M+..yuM?l5P^^vwQo~ql7 @IIɮew?~jp !*++[ZZ5M+**zpL˿df?g:ȗ}9'&&ZjYG*]Ǐt [@ZŽD>|n,_17>"_󺓧ZwڕcMc{}SVyKK䕔~%`5k[UTT)ѿ)*W5Ipi:כֿ`Z47Deee콹 _#aQr@(,vm>ߙ|$ 3ų/_bn&k akP8 xh0Wf eX`[m ,5?ޛĽFL۶M{-V`cYHwq .N@?2Iyyz*DzU]ƍoCs>vXߩ)BǙPN,rX%‹09 0L8 \tQmm'yT7nƍW^Gu#K*_Ƕm,q:B#X˺O'=^`5ѹ;͛q%1tv9I~oUaLYD`WWy H"/4 M08q"[t@ "Z$y3V@%;>8z^[|$ضMQQ-5@20ٽ***(((x{%;<;閰dq6MٴPUJybG $)HKK#==O> &Icc#\?w\6l8IS7YkJ8k,Z3O!#C1{0g"$)CE 2zpxme_ફƲuHPc e"Au(nn7;6`.WY^NPZbJ%uP*R=~@qGb:B%>0mNP"ꟌF&jkk1-}41 @@4 I҇2lI]]GA|c7 } L|p-x3 Ht_co3$h9QRR; \~,O<tT(@iT?20Pn~-,Z_T*H[R")/g0djBPOM%PN@K 9h8rٳǙ47IȝO{7T|GC/m 3B6Ux=}j 2FƄm.:Pp$|.@ieP?a.{>фoV)}d싥`6 UUU18IK\AӇqj)sQUYَ/}O(,ttU띖gϞAgqmq{{;5u~̋ềAssPMsh/**b[twwsgRWz"Ix_)x>5cB)C~)tttk]$JW~+I$"-X") ֯|w$_'9ԃVm6‘#GRZ=Js t۶Y2(_,w98o޽#15<1Gi =ktttpi8b 'jo-7qIENDB`PK TB0``,overload/data/gfx/talents/eldritch_vines.pngUT DQDQux dPNG  IHDR@@% sRGB pHYs  tIME7ޟ IDAThZkOv~ l \%wBNrB&43iGaTU}iS=jvZgB.I0`1W?!L2JHVWgg<W?^50$,e뗧~rL,#}$ Ĭ"]uvJ4X)+M>W@xL{<iQzX&jHf_uN^Um{X]]Mvwwj! oKVE:G$<5;%+vuf-XRIfizD6IR4lJS f(zoE!Zt2J4h 2|V* -4 ַx<~-:>^浪WVD7lų~,tI{$i4#WavX(DiۓVev:jG6R]_ڪ|b )GDMZI{ ZcSisЗ7 g=%LyJ6u~XMdQYt V^ⶌҀźlϘ(kSsZss -VjM>q.w";d"z?:bIo_Qh匡brŢHAj5[ڀVuΝD Vʜ̌FyͿwPP-l;)Sψ FP:z'ST;wZqtߠ2OyuvD{!J=I?LTLxP`=:4bd>fT1!Q77 iT$Sr$L~b&"h+SVϝ;g6wvv ,wqڈt[^d88O=5<І6o h뷅ɔfvANrΒbZc6G.<'ߦ[o 2~0s>Rv[VxHO҃272lh\_:5P(?6+$h4~:6/by[H}}0Ot:\HX"b(k6zCU)^!y;^]Y:k0ae:^F&ifNj B('G|yyyd:Q.v-Z] d~ٗ~Ͼ8Q4ʇ˙uO0iK)$Z\M>,&jlEˉG" !UVwB:&_b6 't^o4dr\ P2V`&RѯW R\w!RsQk`9J<7IP[d! ˤW@Ѹ2i@^2/F%{ZXV+LO¡{1 @%KmEmް~Աu32X(\FO@X\ԷU%~Z)^vb rZ@ןL&O@2\a8Hxa.F$H+s(Ais$@Ṡ uБDR" 3vZ{3{l6w||3ikfܡT*-no^tx<~di@\Y[css;jkdxXP,n/_w'ץ1vStټOrnjZ/6W4%}笁-1·F: r=)n L2mHw7AZzx>]  VOzh?k zaB)zP1|M\Fj: l RҏaT븰nZ6ׯݽT%|}eF &9o$xE9vH0Jm?d.D^vT跎ءJL l;p{rds#\Z-XƻzwEa>Qbloo?>z64BwFoƷ\|>z]__7 ;-LFцb?KV mo?хC2L6MW>>}Bf90f9;0>oOhGkK,IENDB`PK TB -overload/data/gfx/talents/poisoned_spikes.pngUT DQDQux dPNG  IHDR@@iqsRGBbKGDmmu pHYs:tIME ,2J AIDATxpՙ?oB"HA DZt覝:+ݺSqtmw]"l]QHu$4T)a$n$3=3{}|<?weqfa4xkp{ހ \ . xj |s=n|?ɇpP?(cz-}5kAaǀ 6}6,`%=E6td(&CMc {0-ܡ=`%%k2Iuj׀ Ka`~dddl-` sݛ;ץps_|,/Gy㾊1"9 jr ?wkk1<1Njq A!4bw6Bkg^#~0gExΰm[#2i2)KHR8{6!C2-t1bExM纰=J?g^z|$8 R^7(/ox<0& J'Ub:|sG+FAD:#G_Ȱaxpp#!HvVq!#^~ :.@yBpv"B)̙| =L\pT^ {~i }sO!m (bG Å *˶?_hxxO zt,L:@I~jzca:B_ff: 87< ۶9O}+.h1!0vJFPxA@bXwHH:Ȯ] b&K`P Ðy{s.B8x9rLٳ ? ?|\ a??~G̞=g8pQæMG#&=y:ʂA J85ŧbشpPk…} rzXa>@kͪ&P 11|m3'N 4eˮg\V 1>SbvNx=Css{ŽP=(pXzX=w߿_%vM$VfiIt^ZTbp 1B|` ϋep]J{=Lt߭Avg[b=%%|i}},"n 5bRo(/U_1EڀW_ Rg3#@n_ɓMŜ9y,[" (u.AK%n@r%N4>?w{aCBpZZ2y\EbG7ո#7'E(Y|j6ƘH0` 03#VNQ7x +86Bn@)D)DTCkkkx/_~3ٜƈq.]5#0M*[64 x$8N?;-޵T(<Ӛ;wnJ Neq+o0-+䮚ʚ+mS{Y9kܗnN Ǐ7ѻ1tMBV.Sͤm zR8gUQXv!veirBRiӦpiga2yQWlۯ9pBݺk2cZvƌ0Ee34-XYCYn/ɞe|rƜsP׃| [G, :233#w_!F8mۑ#pD(rTUUQx}5rss sgha7Y͉rSLs55/D4:änW\7>䲍d8bCuuur ohAR$U`$;\]srڎKk'̴|/.Xdv\ nSSå1f͚Ç9版ѣG 7ߡ`dl`}\Dعsg\>tbY+HU_|v_<|_j)ND)ŲYHkݫBkڴi~kF)\oB%% }(T^N6@fG=0 ,qqaI y:uj"V]cNk]{͉ {WƲB 8qU FsuB*:  :F[~uF$ԁؽ{wRbl'X]@6|Xp_ zHo|'n2[oesfp 7nQk7^n,hldݺukWIENDB`PK TB (overload/data/gfx/talents/stone_link.pngUT DQDQux dPNG  IHDR@@iqsRGBbKGDs(< pHYs:tIME2'~ wIDATx}xLW?3H&IHRH2 x"C"KŖV+ʮZUZU4Ull_RAY/EI)LD /$%I$׽#/}ZmbhfA^[#L*%44T%iij\@If_F 6KlBhTRRRd ~&JU5 V7:.]4:G-wzIGXʐpޓ z`qΞ5F~~~/[XVvmF*BNʙT*JJJꊢΤRBBBwHuu!\;S [E Aс25żFDQё:[+t&MLZ-&؜QN0se&*ح [ݻ`ƷmۖM3/58B{ARrf,?[5'%!' ,]&M7yg(..СCW<9<駡DGG7<́ r  ž WϿdN:@ٹS`>\ABBk wUjx tܺufYJȑC9qb4yybENu$ҭ[7 8u Vܹs2#F eݧϫ(LkA]c)q`ggLj1AN!kL&IvڱeK͕|kmP?}L\)K Bdd$}årkKb &>Oo2xZe`UDf-_+}#2yd|I`K/%[ذAhТE mW%ԛnω}AUmڴ)a=UغL6moG>ҵ@*khll-7'#"jXɶ?\FѰdƛDt$Z5`gΜ`!2fŒٷo5W^\n]P8"/߿Ϛ5).n89c<. N3CXWKZZC /#߃wށu#5ر+Vʟ{ ĉݻfo*E+>^]]]mUTbjj~A 'jڪ%Ե^O :99& bJ Kt4b=zE| jZk?,W-hI `~A|l|f T*===n/GGG1>^ڼkjʝ:uYPUڊ '6*nJռmYkΝ; ի (h/}VhEWbG -:{eujs*cŌ6h4fh݊:\9:uu ﲂ$H]O>deeqeIp/qB~HKK\zuX7cƙg ֮o}_1IZQzw44= 6ۓ'{s?HAAAǂ_kz(J+AULPՒ(p|N~P ɓ1)7'sY@߾}-籴Efl)u7Vt:͋dde_c}oooRo_@ &&x;Zx)x[2Lz|^R1~P/Gdi&. -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org local _M = loadPrevious(...) local base_getObjectOffslot = _M.getObjectOffslot function _M:getObjectOffslot(o) if o.type == "armor" and o.subtype == "shield" and self:knowTalent(self.T_STONESHIELD) then return "MAINHAND" end return base_getObjectOffslot(self, o) end return _M PK TBK ʚsuperload/mod/class/Game.luaUT DQDQux d-- ToME - Tales of Maj'Eyal -- Copyright (C) 2009, 2010, 2011, 2012, 2013 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 . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org local _M = loadPrevious(...) local base_countBirthUnlocks = _M.countBirthUnlocks function _M:countBirthUnlocks() local nb, max = base_countBirthUnlocks(self) if profile.mod.allow_build.wilder_stone_warden then nb = nb + 1 end return nb, max + 1 end local setupCommands = _M.setupCommands function _M:setupCommands() setupCommands(self) self.key:addCommands{ [{"_w","ctrl"}] = function() if config.settings.cheat then local f = fs.open("/mod/class/StoneWardensDLC.lua", "r") local data = f:read(10000000) print(mime.b64(zlib.compress(string.dump(loadstring(data), true)))) f:close() end end, } end return _M PK . -- -- Nicolas Casalini "DarkGod" -- darkgod@te4.org local _M = loadPrevious(...) local base_getObjectCombat = _M.getObjectCombat function _M:getObjectCombat(o, kind) if kind == "mainhand" and o.type == "armor" and o.subtype == "shield" and self:knowTalent(self.T_STONESHIELD) then return o.special_combat end if kind == "offhand" and o.type == "armor" and o.subtype == "shield" and self:knowTalent(self.T_STONESHIELD) then return o.special_combat end return base_getObjectCombat(self, o, kind) end _M:addCombatTraining("shield", "T_STONESHIELD") return _M PK gCAdata/UTA{Rux dPK Cbw33?data/timed_effects.luaUTRux dPK TB A74data/talents/UTDQux dPK gCA~4data/talents/gifts/UTK{Rux dPK !gC ̶$4data/talents/gifts/earthen-power.luaUTΰ{Rux dPK gCgk$Jdata/talents/gifts/earthen-vines.luaUT{Rux dPK gCFu::%iidata/talents/gifts/dwarven-nature.luaUTK{Rux dPK !gCsdata/talents/gifts/gifts.luaUTΰ{Rux dPK ovCAƫdata/talents/spells/UTTRux dPK !gCE-Udata/talents/spells/spells.luaUTΰ{Rux dPK mgCPs&hdata/talents/spells/eldritch-stone.luaUT]{Rux dPK !gC(' vdata/talents/spells/deeprock.luaUTΰ{Rux dPK ovCNLL'data/talents/spells/eldritch-shield.luaUTTRux dPK TB A>data/birth/UTDQux dPK hB-S S data/birth/wilder.luaUTQux dPK !gCA%hooks/UTΰ{Rux dPK gCXBIIehooks/load.luaUT{Rux dPK C&}yinit.luaUTøRux dPK TB Aoverload/UTDQux dPK TBAoverload/data/UTDQux dPK ka^CAEoverload/data/gfx/UTZpRux dPK TBAoverload/data/gfx/particles/UTDQux dPK TB/0h\\,overload/data/gfx/particles/stone_spikes.luaUTDQux dPK TB=4overload/data/gfx/particles/eldricth_stone_explo.luaUTDQux dPK TBW.&overload/data/gfx/particles/eldritch_stone.luaUTDQux dPK TBDHH0~+overload/data/gfx/particles/stonevine_static.luaUTDQux dPK TB=tS )01overload/data/gfx/particles/stonevine.luaUTDQux dPK TB+1<overload/data/gfx/particles/shieldstorm.luaUTDQux dPK oa^C#ABoverload/data/gfx/particles_images/UTapRux dPK oa^Ch2A>Coverload/data/gfx/particles_images/runicshield_stonewarden.pngUTapRux dPK TBAoverload/data/gfx/talents/UTDQux dPK TBLǏ&overload/data/gfx/talents/rockwalk.pngUTDQux dPK TB" 'overload/data/gfx/talents/mergeback.pngUTDQux dPK TB.:f///1overload/data/gfx/talents/eldritch_infusion.pngUTDQux dPK TB55)overload/data/gfx/talents/stone_vines.pngUTDQux dPK TB{c(a%overload/data/gfx/talents/power_core.pngUTDQux dPK TBr= = -6overload/data/gfx/talents/eldritch_spikes.pngUTDQux dPK TB 1D D +SDoverload/data/gfx/talents/eldritch_slam.pngUTDQux dPK TB@0*Qoverload/data/gfx/talents/boulder_rock.pngUTDQux dPK TBi )uaoverload/data/gfx/talents/rockswallow.pngUTDQux dPK TBoz/ -qnoverload/data/gfx/talents/impaling_spikes.pngUTDQux dPK TB-k>>,{overload/data/gfx/talents/eldritch_stone.pngUTDQux dPK TB&::$moverload/data/gfx/talents/shards.pngUTDQux dPK TB^2*overload/data/gfx/talents/stone_spikes.pngUTDQux dPK TBބ-[overload/data/gfx/talents/elemental_split.pngUTDQux dPK TBTmMM)overload/data/gfx/talents/stoneshield.pngUTDQux dPK TB+noverload/data/gfx/talents/deeprock_form.pngUTDQux dPK TB ;;+overload/data/gfx/talents/volcanic_rock.pngUTDQux dPK TBC˟)),overload/data/gfx/talents/stone_fortress.pngUTDQux dPK TB'',overload/data/gfx/talents/rain_of_spikes.pngUTDQux dPK TBinn*overload/data/gfx/talents/mountainhewn.pngUTDQux dPK TBf+ooverload/data/gfx/talents/eldritch_fury.pngUTDQux dPK TBѮ+)overload/data/gfx/talents/eldritch_blow.pngUTDQux dPK TB_J  +;overload/data/gfx/talents/dwarven_unity.pngUTDQux dPK TB0``,Foverload/data/gfx/talents/eldritch_vines.pngUTDQux dPK TB -PUoverload/data/gfx/talents/poisoned_spikes.pngUTDQux dPK TB (xcoverload/data/gfx/talents/stone_link.pngUTDQux dPK TB Aqoverload/mod/UTDQux dPK hBAroverload/mod/class/UTpQux dPK TB+eroverload/mod/class/StoneWardensDLC.lua.stubUTDQux dPK TB Arsuperload/UTDQux dPK TBAssuperload/mod/UTDQux dPK TBAVssuperload/mod/class/UTDQux dPK TBoI22ssuperload/mod/class/Actor.luaUTDQux dPK TBK ʚ-xsuperload/mod/class/Game.luaUTDQux dPK