From 571584901cd92b45b2af4ae0968b0acc6bcf7e4c Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 14 Apr 2020 19:10:28 +0200 Subject: [PATCH 1/4] Custom skin tone preferences. --- code/__DEFINES/DNA.dm | 12 +- code/__HELPERS/mobs.dm | 34 +++-- code/datums/dna.dm | 14 +- .../objects/effects/spawners/gibspawner.dm | 4 +- code/game/objects/structures/mirror.dm | 18 ++- code/modules/admin/create_mob.dm | 1 + .../antagonists/bloodsucker/powers/veil.dm | 3 + code/modules/awaymissions/corpse.dm | 2 + code/modules/client/preferences.dm | 34 +++-- code/modules/client/preferences_savefile.dm | 8 +- .../mob/dead/new_player/preferences_setup.dm | 1 + .../mob/living/carbon/human/species.dm | 18 +-- .../carbon/human/species_types/angel.dm | 2 +- .../carbon/human/species_types/corporate.dm | 3 +- .../carbon/human/species_types/dullahan.dm | 2 +- .../carbon/human/species_types/dwarves.dm | 2 +- .../carbon/human/species_types/humans.dm | 2 +- .../carbon/human/species_types/mushpeople.dm | 1 - .../carbon/human/species_types/synths.dm | 2 +- .../carbon/human/species_types/vampire.dm | 5 +- .../chemistry/reagents/other_reagents.dm | 140 ++++++++---------- code/modules/surgery/bodyparts/bodyparts.dm | 15 +- code/modules/surgery/bodyparts/helpers.dm | 31 ---- icons/mob/human_parts_greyscale.dmi | Bin 63266 -> 65445 bytes .../code/modules/arousal/genitals.dm | 7 +- .../code/modules/arousal/organs/breasts.dm | 9 +- .../code/modules/arousal/organs/penis.dm | 7 +- .../code/modules/arousal/organs/testicles.dm | 7 +- .../code/modules/arousal/organs/vagina.dm | 7 +- .../chemistry/reagents/enlargement.dm | 4 +- 30 files changed, 210 insertions(+), 185 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 6604811d34..14d9de4faf 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -71,6 +71,11 @@ #define MUT_EXTRA 2 #define MUT_OTHER 3 +//species use_skintones defines +#define NO_SKINTONES 0 +#define USE_SKINTONES 1 +#define USE_SKINTONES_GRAYSCALE_CUSTOM 2 //adds a "_g" suffix to limb overlays icon states if the skin_tone is a custom one. + //DNA - Because fuck you and your magic numbers being all over the codebase. #define DNA_BLOCK_SIZE 3 @@ -131,9 +136,10 @@ #define NOAROUSAL 20 //Stops all arousal effects #define NOGENITALS 21 //Cannot create, use, or otherwise have genitals #define MATRIXED 22 //if icon is color matrix'd -#define SKINTONE 23 //uses skin tones -#define HORNCOLOR 24 -#define WINGCOLOR 25 +#define SKINTONE 23 +#define CUSTOM_SKINTONE 24 //adds a "_g" suffix to bodypart overlays icon states +#define HORNCOLOR 25 +#define WINGCOLOR 26 //organ slots #define ORGAN_SLOT_BRAIN "brain" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index e022c10007..38831fd5eb 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -262,24 +262,30 @@ if(!findname(.)) break -/proc/random_skin_tone() - return pick(GLOB.skin_tones) +#define SKINTONE2HEX(skin_tone) GLOB.skin_tones[skin_tone] || skin_tone +/proc/random_skin_tone() + return pick(GLOB.skin_tones - GLOB.nonstandard_skin_tones) + +//ordered by amount of tan. Keep the nonstandard skin tones last. GLOBAL_LIST_INIT(skin_tones, list( - "albino", - "caucasian1", - "caucasian2", - "caucasian3", - "latino", - "mediterranean", - "asian1", - "asian2", - "arab", - "indian", - "african1", - "african2" + "albino" = "#fff4e6", + "caucasian1" = "#ffe0d1", + "caucasian2" = "#fcccb3", + "caucasian3" = "#e8b59b", + "latino" = "#d9ae96", + "mediterranean" = "#c79b8b", + "asian1" = "#ffdeb3", + "asian2" = "#e3ba84", + "arab" = "#c4915e", + "indian" = "#b87840", + "african1" = "#754523", + "african2" = "#471c18", + "orange" = "#ffc905", //Spray tan overdose. )) +GLOBAL_LIST_INIT(nonstandard_skin_tones, list("orange")) + GLOBAL_LIST_EMPTY(species_list) /proc/age2agedescription(age) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 1c866ea535..e08d5c509c 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -17,6 +17,7 @@ var/mutation_index[DNA_MUTATION_BLOCKS] //List of which mutations this carbon has and its assigned block var/stability = 100 var/scrambled = FALSE //Did we take something like mutagen? In that case we cant get our genes scanned to instantly cheese all the powers. + var/skin_tone_override //because custom skin tones are not found in the skin_tones global list. /datum/dna/New(mob/living/new_holder) if(istype(new_holder)) @@ -45,6 +46,7 @@ destination.dna.unique_enzymes = unique_enzymes destination.dna.uni_identity = uni_identity destination.dna.blood_type = blood_type + destination.dna.skin_tone_override = skin_tone_override destination.set_species(species.type, icon_update=0) destination.dna.features = features.Copy() destination.dna.real_name = real_name @@ -66,6 +68,7 @@ new_dna.mutation_index = mutation_index new_dna.uni_identity = uni_identity new_dna.blood_type = blood_type + new_dna.skin_tone_override = skin_tone_override new_dna.features = features.Copy() new_dna.species = new species.type new_dna.real_name = real_name @@ -262,10 +265,11 @@ return /datum/dna/proc/is_same_as(datum/dna/D) - if(uni_identity == D.uni_identity && mutation_index == D.mutation_index && real_name == D.real_name && nameless == D.nameless && custom_species == D.custom_species) - if(species.type == D.species.type && features == D.features && blood_type == D.blood_type) - return 1 - return 0 + if(uni_identity != D.uni_identity || mutation_index != D.mutation_index || real_name != D.real_name || nameless != D.nameless || custom_species != D.custom_species) + return FALSE + if(species.type != D.species.type || features != D.features || blood_type != D.blood_type || skin_tone_override != D.skin_tone_override) + return FALSE + return TRUE /datum/dna/proc/update_instability(alert=TRUE) stability = 100 @@ -430,7 +434,7 @@ var/structure = dna.uni_identity hair_color = sanitize_hexcolor(getblock(structure, DNA_HAIR_COLOR_BLOCK)) facial_hair_color = sanitize_hexcolor(getblock(structure, DNA_FACIAL_HAIR_COLOR_BLOCK)) - skin_tone = GLOB.skin_tones[deconstruct_block(getblock(structure, DNA_SKIN_TONE_BLOCK), GLOB.skin_tones.len)] + skin_tone = dna.skin_tone_override || GLOB.skin_tones[deconstruct_block(getblock(structure, DNA_SKIN_TONE_BLOCK), GLOB.skin_tones.len)] eye_color = sanitize_hexcolor(getblock(structure, DNA_EYE_COLOR_BLOCK)) facial_hair_style = GLOB.facial_hair_styles_list[deconstruct_block(getblock(structure, DNA_FACIAL_HAIR_STYLE_BLOCK), GLOB.facial_hair_styles_list.len)] hair_style = GLOB.hair_styles_list[deconstruct_block(getblock(structure, DNA_HAIR_STYLE_BLOCK), GLOB.hair_styles_list.len)] diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index c135458873..231c1465cd 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -37,7 +37,7 @@ if(ishuman(source_mob)) var/mob/living/carbon/human/H = source_mob if(H.dna.species.use_skintones) - body_coloring = "#[skintone2hex(H.skin_tone)]" + body_coloring = SKINTONE2HEX(H.skin_tone) else body_coloring = "#[H.dna.features["mcolor"]]" @@ -49,7 +49,7 @@ H.set_species(gib_mob_species) dna_to_add = temp_mob.get_blood_dna_list() if(H.dna.species.use_skintones) - body_coloring = "#[skintone2hex(H.skin_tone)]" + body_coloring = SKINTONE2HEX(H.skin_tone) else body_coloring = "#[H.dna.features["mcolor"]]" else diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index e5ca09c7b8..5892574711 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -158,11 +158,21 @@ H.set_species(newrace, icon_update=0) if(H.dna.species.use_skintones) - var/new_s_tone = input(user, "Choose your skin tone:", "Race change") as null|anything in GLOB.skin_tones - + var/new_s_tone = input(H, "Choose your skin tone:", "Race change") as null|anything in GLOB.skin_tones + "custom" if(new_s_tone) - H.skin_tone = new_s_tone - H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK) + if(new_s_tone == "custom") + var/default = H.dna.skin_tone_override || null + var/custom_tone = input(user, "Choose your custom skin tone:", "Race change", default) as color|null + if(custom_tone) + var/temp_hsv = RGBtoHSV(new_s_tone) + if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + to_chat(H,"Invalid color. Your color is not bright enough.") + else + H.skin_tone = custom_tone + H.dna.skin_tone_override = custom_tone + else + H.skin_tone = new_s_tone + H.dna.update_ui_block(DNA_SKIN_TONE_BLOCK) if(MUTCOLORS in H.dna.species.species_traits) var/new_mutantcolor = input(user, "Choose your skin color:", "Race change","#"+H.dna.features["mcolor"]) as color|null diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 3e604856c5..59651b17d5 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -18,6 +18,7 @@ H.undie_color = random_short_color() H.undershirt = random_undershirt(H.gender) H.shirt_color = random_short_color() + H.dna.skin_tone_override = null H.skin_tone = random_skin_tone() H.hair_style = random_hair_style(H.gender) H.facial_hair_style = random_facial_hair_style(H.gender) diff --git a/code/modules/antagonists/bloodsucker/powers/veil.dm b/code/modules/antagonists/bloodsucker/powers/veil.dm index ecb0611940..671f88f2c1 100644 --- a/code/modules/antagonists/bloodsucker/powers/veil.dm +++ b/code/modules/antagonists/bloodsucker/powers/veil.dm @@ -82,6 +82,7 @@ // Change Appearance, not randomizing clothes colour, itll just be janky H.gender = pick(MALE, FEMALE) + H.dna.skin_tone_override = null H.skin_tone = random_skin_tone() H.hair_style = random_hair_style(H.gender) H.facial_hair_style = pick(random_facial_hair_style(H.gender),"Shaved") @@ -124,6 +125,8 @@ // Revert Appearance H.gender = prev_gender H.skin_tone = prev_skin_tone + if(!GLOB.skin_tones[H.skin_tone]) + H.dna.skin_tone_override = H.skin_tone H.hair_style = prev_hair_style H.facial_hair_style = prev_facial_hair_style H.hair_color = prev_hair_color diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 50dd1e5608..5dc11ed100 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -205,6 +205,8 @@ H.facial_hair_style = random_facial_hair_style(gender) if(skin_tone) H.skin_tone = skin_tone + if(!GLOB.skin_tones[H.skin_tone]) + H.dna.skin_tone_override = H.skin_tone else H.skin_tone = random_skin_tone() H.update_hair() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index f7d251f32d..719d77118e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -89,11 +89,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/facial_hair_style = "Shaved" //Face hair type var/facial_hair_color = "000" //Facial hair color var/skin_tone = "caucasian1" //Skin color + var/use_custom_skin_tone = FALSE var/eye_color = "000" //Eye color var/horn_color = "85615a" //Horn color var/wing_color = "fff" //Wing color var/datum/species/pref_species = new /datum/species/human() //Mutant race var/list/features = list("mcolor" = "FFF", + "mcolor2" = "FFF", + "mcolor3" = "FFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", @@ -108,8 +111,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", - "mcolor2" = "FFF", - "mcolor3" = "FFF", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", @@ -361,7 +362,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Skin Tone

" - dat += "[skin_tone]
" + dat += "[use_custom_skin_tone ? "custom:    " : skin_tone]
" var/mutant_colors if((MUTCOLORS in pref_species.species_traits) || (MUTCOLORS_PARTSONLY in pref_species.species_traits)) @@ -763,7 +764,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(features["has_cock"]) if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) dat += "Penis Color:
" - dat += "   (Skin tone overriding)
" + dat += "   (Skin tone overriding)
" else dat += "Penis Color:
" dat += "    Change
" @@ -781,7 +782,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(features["has_balls"]) if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) dat += "Testicles Color:
" - dat += "   (Skin tone overriding)
" + dat += "   (Skin tone overriding)
" else dat += "Testicles Color:
" dat += "    Change
" @@ -793,7 +794,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Vagina Type: [features["vag_shape"]]" if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) dat += "Vagina Color:
" - dat += "   (Skin tone overriding)
" + dat += "   (Skin tone overriding)
" else dat += "Vagina Color:
" dat += "    Change
" @@ -806,7 +807,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(features["has_breasts"]) if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE) dat += "Color:
" - dat += "   (Skin tone overriding)
" + dat += "   (Skin tone overriding)
" else dat += "Color:
" dat += "    Change
" @@ -1438,6 +1439,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) eye_color = random_eye_color() if("s_tone") skin_tone = random_skin_tone() + use_custom_skin_tone = null if("bag") backbag = pick(GLOB.backbaglist) if("suit") @@ -1834,9 +1836,22 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["insect_markings"] = new_insect_markings if("s_tone") - var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones + var/list/choices = GLOB.skin_tones - GLOB.nonstandard_skin_tones + "custom" + var/new_s_tone = input(user, "Choose your character's skin tone:", "Character Preference") as null|anything in choices if(new_s_tone) - skin_tone = new_s_tone + if(new_s_tone == "custom") + var/default = use_custom_skin_tone ? skin_tone : null + var/custom_tone = input(user, "Choose your custom skin tone:", "Character Preference", default) as color|null + if(custom_tone) + var/temp_hsv = RGBtoHSV(new_s_tone) + if(ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]) + to_chat(user,"Invalid color. Your color is not bright enough.") + else + use_custom_skin_tone = TRUE + skin_tone = custom_tone + else + use_custom_skin_tone = FALSE + skin_tone = new_s_tone if("taur") var/list/snowflake_taur_list = list() @@ -2430,6 +2445,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.wing_color = wing_color character.skin_tone = skin_tone + character.dna.skin_tone_override = use_custom_skin_tone ? skin_tone : null character.hair_style = hair_style character.facial_hair_style = facial_hair_style character.underwear = underwear diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 7da9d5a1dc..06f2559722 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -400,6 +400,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["hair_color"] >> hair_color S["facial_hair_color"] >> facial_hair_color S["eye_color"] >> eye_color + S["use_custom_skin_tone"] >> use_custom_skin_tone S["skin_tone"] >> skin_tone S["hair_style_name"] >> hair_style S["facial_style_name"] >> facial_hair_style @@ -548,7 +549,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car hair_color = sanitize_hexcolor(hair_color, 3, 0) facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0) eye_color = sanitize_hexcolor(eye_color, 3, 0) - skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones) + use_custom_skin_tone = sanitize_integer(use_custom_skin_tone, FALSE, TRUE, initial(use_custom_skin_tone)) + if(use_custom_skin_tone) + skin_tone = sanitize_hexcolor(skin_tone, 6, TRUE, "#FFFFFF") + else + skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones - GLOB.nonstandard_skin_tones, initial(skin_tone)) horn_color = sanitize_hexcolor(horn_color, 3, FALSE) wing_color = sanitize_hexcolor(wing_color, 3, FALSE, "#FFFFFF") backbag = sanitize_inlist(backbag, GLOB.backbaglist, initial(backbag)) @@ -657,6 +662,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["hair_color"] , hair_color) WRITE_FILE(S["facial_hair_color"] , facial_hair_color) WRITE_FILE(S["eye_color"] , eye_color) + WRITE_FILE(S["use_custom_skin_tone"] , use_custom_skin_tone) WRITE_FILE(S["skin_tone"] , skin_tone) WRITE_FILE(S["hair_style_name"] , hair_style) WRITE_FILE(S["facial_style_name"] , facial_hair_style) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index a7fdf2d914..b669e30a06 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -11,6 +11,7 @@ shirt_color = random_short_color() socks = random_socks() socks_color = random_short_color() + use_custom_skin_tone = FALSE skin_tone = random_skin_tone() hair_style = random_hair_style(gender) facial_hair_style = random_facial_hair_style(gender) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e39ce7d488..f7450979c2 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -39,7 +39,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/horn_color //specific horn colors, because why not? var/wing_color - var/use_skintones = 0 // does it use skintones or not? (spoiler alert this is only used by humans) + var/use_skintones = NO_SKINTONES // does it use skintones or not? (spoiler alert this is only used by humans) var/exotic_blood = "" // If your race wants to bleed something other than bog standard blood, change this to reagent id. var/exotic_bloodtype = "" //If your race uses a non standard bloodtype (A+, O-, AB-, etc) var/meat = /obj/item/reagent_containers/food/snacks/meat/slab/human //What the species drops on gibbing @@ -853,7 +853,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(!forced_colour) switch(S.color_src) if(SKINTONE) - accessory_overlay.color = "#[skintone2hex(H.skin_tone)]" + accessory_overlay.color = SKINTONE2HEX(H.skin_tone) if(MUTCOLORS) if(fixed_mut_color) accessory_overlay.color = "#[fixed_mut_color]" @@ -1456,12 +1456,12 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(target.check_martial_melee_block()) target.visible_message("[target] blocks [user]'s attack!") return FALSE - + if(HAS_TRAIT(user, TRAIT_PUGILIST))//CITADEL CHANGE - makes punching cause staminaloss but funny martial artist types get a discount user.adjustStaminaLossBuffered(1.5) else user.adjustStaminaLossBuffered(3.5) - + if(attacker_style && attacker_style.harm_act(user,target)) return TRUE else @@ -1526,7 +1526,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(user.limb_destroyer) target.dismembering_strike(user, affecting.body_zone) - + if(atk_verb == ATTACK_EFFECT_KICK)//kicks deal 1.5x raw damage + 0.5x stamina damage target.apply_damage(damage*1.5, BRUTE, affecting, armor_block) target.apply_damage(damage*0.5, STAMINA, affecting, armor_block) @@ -1538,21 +1538,21 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold) if((punchedstam > 50) && prob(punchedstam*0.5)) //If our punch victim has been hit above the threshold, and they have more than 50 stamina damage, roll for stun, probability of 1% per 2 stamina damage - + target.visible_message("[user] knocks [target] down!", \ "You're knocked down by [user]!", "You hear aggressive shuffling followed by a loud thud!", COMBAT_MESSAGE_RANGE, user) to_chat(user, "You knock [target] down!") - + var/knockdown_duration = 40 + (punchedstam + (punchedbrute*0.5))*0.8 - armor_block target.DefaultCombatKnockdown(knockdown_duration) target.forcesay(GLOB.hit_appends) log_combat(user, target, "got a stun punch with their previous punch") - + if(HAS_TRAIT(user, TRAIT_KI_VAMPIRE) && !HAS_TRAIT(target, TRAIT_NOBREATH) && (punchedbrute < 100)) //If we're a ki vampire we also sap them of lifeforce, but only if they're not too beat up. Also living organics only. user.adjustBruteLoss(-5) user.adjustFireLoss(-5) user.adjustStaminaLoss(-20) - + target.adjustCloneLoss(10) target.adjustBruteLoss(10) diff --git a/code/modules/mob/living/carbon/human/species_types/angel.dm b/code/modules/mob/living/carbon/human/species_types/angel.dm index 5474adcf88..1a92da3b0a 100644 --- a/code/modules/mob/living/carbon/human/species_types/angel.dm +++ b/code/modules/mob/living/carbon/human/species_types/angel.dm @@ -4,7 +4,7 @@ default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) mutant_bodyparts = list("tail_human" = "None", "ears" = "None", "wings" = "Angel") - use_skintones = 1 + use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM no_equip = list(SLOT_BACK) blacklisted = 1 limbs_id = "human" diff --git a/code/modules/mob/living/carbon/human/species_types/corporate.dm b/code/modules/mob/living/carbon/human/species_types/corporate.dm index 3de530ff5b..e062e1cbf7 100644 --- a/code/modules/mob/living/carbon/human/species_types/corporate.dm +++ b/code/modules/mob/living/carbon/human/species_types/corporate.dm @@ -13,8 +13,7 @@ punchstunthreshold = 25 attack_verb = "smash" attack_sound = 'sound/weapons/resonator_blast.ogg' - blacklisted = 1 - use_skintones = 0 + blacklisted = TRUE species_traits = list(NOBLOOD,EYECOLOR,NOGENITALS) inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOLIMBDISABLE,TRAIT_NOHUNGER) sexes = 0 diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index a41cc8c55a..ef730da219 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -5,7 +5,7 @@ species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS) inherent_traits = list(TRAIT_NOHUNGER,TRAIT_NOBREATH) mutant_bodyparts = list("tail_human" = "None", "ears" = "None", "deco_wings" = "None") - use_skintones = TRUE + use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM mutant_brain = /obj/item/organ/brain/dullahan mutanteyes = /obj/item/organ/eyes/dullahan mutanttongue = /obj/item/organ/tongue/dullahan diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm index bb2c08aa9b..235dacc70a 100644 --- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm +++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm @@ -9,7 +9,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR) inherent_traits = list() limbs_id = "human" - use_skintones = 1 + use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL damage_overlay_type = "human" skinned_type = /obj/item/stack/sheet/animalhide/human diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 02cff6d924..606b7a8bfd 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -5,7 +5,7 @@ species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR) mutant_bodyparts = list("mcolor" = "FFF", "mcolor2" = "FFF","mcolor3" = "FFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None") - use_skintones = 1 + use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM skinned_type = /obj/item/stack/sheet/animalhide/human disliked_food = GROSS | RAW liked_food = JUNKFOOD | FRIED diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index cb8fdbf101..5390d9e7f4 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -22,7 +22,6 @@ heatmod = 1.5 mutanteyes = /obj/item/organ/eyes/night_vision/mushroom - use_skintones = FALSE var/datum/martial_art/mushpunch/mush /datum/species/mush/after_equip_job(datum/job/J, mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 6c42e622fe..deab31dec3 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -80,7 +80,7 @@ fake_species = null meat = initial(meat) limbs_id = "synth" - use_skintones = 0 + use_skintones = FALSE sexes = 0 fixed_mut_color = "" hair_color = "" diff --git a/code/modules/mob/living/carbon/human/species_types/vampire.dm b/code/modules/mob/living/carbon/human/species_types/vampire.dm index 415cd9889c..f37e718462 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -7,7 +7,7 @@ inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID mutant_bodyparts = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "deco_wings" = "None") exotic_bloodtype = "U" - use_skintones = TRUE + use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM mutant_heart = /obj/item/organ/heart/vampire mutanttongue = /obj/item/organ/tongue/vampire blacklisted = TRUE @@ -23,7 +23,8 @@ /datum/species/vampire/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) . = ..() to_chat(C, "[info_text]") - C.skin_tone = "albino" + if(!C.dna.skin_tone_override) + C.skin_tone = "albino" C.update_body(0) var/obj/effect/proc_holder/spell/targeted/shapeshift/bat/B = new C.AddSpell(B) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index c2f14e69ec..e66ebc5f20 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -507,93 +507,83 @@ /datum/reagent/spraytan/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1) if(ishuman(M)) if(method == PATCH || method == VAPOR) - var/mob/living/carbon/human/N = M - if(N.dna.species.id == "human") - switch(N.skin_tone) - if("african1") - N.skin_tone = "african2" - if("indian") - N.skin_tone = "african1" - if("arab") - N.skin_tone = "indian" - if("asian2") - N.skin_tone = "arab" - if("asian1") - N.skin_tone = "asian2" - if("mediterranean") - N.skin_tone = "african1" - if("latino") - N.skin_tone = "mediterranean" - if("caucasian3") - N.skin_tone = "mediterranean" - if("caucasian2") - N.skin_tone = pick("caucasian3", "latino") - if("caucasian1") - N.skin_tone = "caucasian2" - if ("albino") - N.skin_tone = "caucasian1" + var/mob/living/carbon/human/H = M + if(H.dna.species.use_skintones) + if(!H.dna.skin_tone_override) + var/diff_len = length(GLOB.skin_tones - GLOB.nonstandard_skin_tones) + H.skin_tone = GLOB.skin_tones[min(diff_len, GLOB.skin_tones.Find(H.skin_tone) + 1)] + else + H.skin_tone = H.dna.skin_tone_override = tan_mutant_color(H.dna.skin_tone_override, "#202020") + if(MUTCOLORS in H.dna.species.species_traits) //take current alien color and darken it slightly + H.dna.features["mcolor"] = tan_mutant_color(H.dna.features["mcolor"]) + H.update_body() - if(MUTCOLORS in N.dna.species.species_traits) //take current alien color and darken it slightly - var/newcolor = "" - var/string = N.dna.features["mcolor"] - var/len = length(string) - var/char = "" - var/ascii = 0 - for(var/i=1, i<=len, i += length(char)) - char = string[i] - ascii = text2ascii(char) - switch(ascii) - if(48) - newcolor += "0" - if(49 to 57) - newcolor += ascii2text(ascii-1) //numbers 1 to 9 - if(97) - newcolor += "9" - if(98 to 102) - newcolor += ascii2text(ascii-1) //letters b to f lowercase - if(65) - newcolor += "9" - if(66 to 70) - newcolor += ascii2text(ascii+31) //letters B to F - translates to lowercase - else - break - if(ReadHSV(newcolor)[3] >= ReadHSV("#7F7F7F")[3]) - N.dna.features["mcolor"] = newcolor - N.regenerate_icons() + if(method == INGEST) + if(show_message) + to_chat(M, "That tasted horrible.") + return ..() +/datum/reagent/spraytan/proc/tan_mutant_color(color, limit = "#7F7F7F") + var/newcolor = "" + var/len = length(color) + var/char = "" + var/ascii = 0 + for(var/i=1, i<=len, i += length(char)) + char = color[i] + ascii = text2ascii(char) + switch(ascii) + if(35) + newcolor += "#" + if(48) + newcolor += "0" + if(49 to 57) + newcolor += ascii2text(ascii-1) //numbers 1 to 9 + if(97) + newcolor += "9" + if(98 to 102) + newcolor += ascii2text(ascii-1) //letters b to f lowercase + if(65) + newcolor += "9" + if(66 to 70) + newcolor += ascii2text(ascii+31) //letters B to F - translates to lowercase + else + break + if(ReadHSV(newcolor)[3] >= ReadHSV(limit)[3]) + return newcolor + return color - if(method == INGEST) - if(show_message) - to_chat(M, "That tasted horrible.") - ..() - +/datum/reagent/spraytan/overdose_start(mob/living/M) + . = ..() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.hair_style = "Spiky" + H.facial_hair_style = "Shaved" + H.facial_hair_color = "000" + H.hair_color = "000" + if(!(HAIR in H.dna.species.species_traits)) //No hair? No problem! + H.dna.species.species_traits += HAIR + if(H.dna.species.use_skintones) + if(H.dna.skin_tone_override) + H.skin_tone = H.dna.skin_tone_override = "#FF8800" + else + H.skin_tone = "orange" + else if(MUTCOLORS in H.dna.species.species_traits) //Aliens with custom colors simply get turned orange + H.dna.features["mcolor"] = "f80" + H.update_body() /datum/reagent/spraytan/overdose_process(mob/living/M) metabolization_rate = 1 * REAGENTS_METABOLISM - if(ishuman(M)) - var/mob/living/carbon/human/N = M - N.hair_style = "Spiky" - N.facial_hair_style = "Shaved" - N.facial_hair_color = "000" - N.hair_color = "000" - if(!(HAIR in N.dna.species.species_traits)) //No hair? No problem! - N.dna.species.species_traits += HAIR - if(N.dna.species.use_skintones) - N.skin_tone = "orange" - else if(MUTCOLORS in N.dna.species.species_traits) //Aliens with custom colors simply get turned orange - N.dna.features["mcolor"] = "f80" - N.regenerate_icons() + var/mob/living/carbon/human/H = M if(prob(7)) - if(N.w_uniform) - M.visible_message(pick("[M]'s collar pops up without warning.", "[M] flexes [M.p_their()] arms.")) + if(H.w_uniform) + H.visible_message(pick("[H]'s collar pops up without warning.", "[H] flexes [H.p_their()] arms.")) else - M.visible_message("[M] flexes [M.p_their()] arms.") + H.visible_message("[H] flexes [H.p_their()] arms.") if(prob(10)) M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Don’t be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."), forced = "spraytan") - ..() - return + return ..() /datum/reagent/mutationtoxin name = "Stable Mutation Toxin" diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 54f2aef10d..7a99d3ff29 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -350,7 +350,8 @@ body_gender = H.dna.features["body_model"] should_draw_gender = S.sexes - if(MUTCOLORS in S.species_traits) + var/mut_colors = (MUTCOLORS in S.species_traits) + if(mut_colors) if(S.fixed_mut_color) species_color = S.fixed_mut_color else @@ -360,7 +361,7 @@ species_color = "" if(base_bp_icon != DEFAULT_BODYPART_ICON) - color_src = MUTCOLORS //TODO - Add color matrix support to base limbs + color_src = mut_colors ? MUTCOLORS : (H.dna.skin_tone_override && S.use_skintones == USE_SKINTONES_GRAYSCALE_CUSTOM) ? CUSTOM_SKINTONE : SKINTONE if(S.mutant_bodyparts["legs"]) if(body_zone == BODY_ZONE_L_LEG || body_zone == BODY_ZONE_R_LEG) @@ -544,12 +545,20 @@ return if(color_src) //TODO - add color matrix support for base species limbs - var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone)) + var/draw_color = mutation_color || species_color || GLOB.skin_tones[skin_tone] + var/grayscale = FALSE + if(!draw_color) //check for custom skin tones. + draw_color = skin_tone + grayscale = color_src == CUSTOM_SKINTONE //Cause human (the species) parts states have a very pale pink hue. if(draw_color) + if(grayscale) + limb.icon_state += "_g" limb.color = "#[draw_color]" if(aux_icons) for(var/a in aux) var/image/I = a + if(grayscale) + I.icon_state += "_g" I.color = "#[draw_color]" if(!isnull(aux_marking)) for(var/a in auxmarking) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index aaca33685b..a1f1bd7daf 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -252,37 +252,6 @@ L.change_bodypart_status(BODYPART_ROBOTIC) . = L - -/proc/skintone2hex(skin_tone) - . = 0 - switch(skin_tone) - if("caucasian1") - . = "ffe0d1" - if("caucasian2") - . = "fcccb3" - if("caucasian3") - . = "e8b59b" - if("latino") - . = "d9ae96" - if("mediterranean") - . = "c79b8b" - if("asian1") - . = "ffdeb3" - if("asian2") - . = "e3ba84" - if("arab") - . = "c4915e" - if("indian") - . = "b87840" - if("african1") - . = "754523" - if("african2") - . = "471c18" - if("albino") - . = "fff4e6" - if("orange") - . = "ffc905" - /mob/living/carbon/proc/Digitigrade_Leg_Swap(swap_back) for(var/X in bodyparts) var/obj/item/bodypart/O = X diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index 3ecfc7bb0c531aa3fb59711fe38c9a2a51a8d7c8..989ec8049cc86341ac9dc92da182db5620f9830c 100644 GIT binary patch literal 65445 zcmc$`c{r8-_b)h8>d%ExUxQ5qyt@Y;jK$F|E)jRX`*^$k$ZzY%)ii2;h z8|*TJW)^B&3^xmZ>0|`WY`mNM%6X{ojdYAg;T@LFPW9YIg`qE>N)#OV^)yo+-px-$ z^{JOAWwyCIx;M;tAn~i|BOVr$^m*0!v|RdZsr-`W+s|W|bVg5KG94Dawv;AF*)?fV zcaN(IeP!_3?K(U6M6;I8c;5wsvp>DkUWLfs?@!^7a!5J0_9Ty6INTP&${s(Y{CDU9vsw^tCpom zb`<+@y~8MqI(7EsrKhi6Iw|3Km2bwRaPSr~F-8Y=0N!3S7HHSGHi} zX{z)z#_U_%{)h>~*4x50SMqI6L4y%t`bdNKY#dWQiuw&Z@KY$-9dB2Qow$(AbIFS@ z_v)Lpz#ms$QRT)RzGbtht@PMORp8^WWcJv>Xswh(Xg=|nzz_9$6)-YT$^*;gzqMU_ss)EdU=~|V&`nf)=I_Fe>9E!dAjB8 z_`$91z++rF`IY{M7w6)?Y)-8DH8Lujf6m4Apq*cnPyh3n>4~p5{TpLKqM7;HMy<4V zd*1Jvl&%StA^xeGk^DUUdii{eV>^L-IvjLw8ShEI{qXX+>iVrD-p*P2jrab8(Z+=B zBa*}RnoTZQEyo30c?83R1ssA@by7iM411#Qgk5+waVg-Rm->!OhU|8NA;r1b*a*HEPp-iwbPGj1r95mTo?8dM=>*I%EB> z?i(oUt+zXt(|@wozD*S-f6U5NE=%+mwm&Y#w7uY($(pd(x!Z2ALOWagnVB|@p%jHW zi@GO!L(MsEZeUUQ@nrlGxux5{;)?O9r@=pdN?*B}e`GvMM|g9Fm8W=?+K{(V1@m<@ zu1@kvbxWN^G5ETsXNt2P&|C_ z2dc)vW897H-7MkPm2Rp(CC#Es9{1WRhks4R%-S^tw-jgD#Xr#0j09T&S9yW+z~6Vm z6g1EG-W@*RI)K`*>So-aA*~axp44<^C_tFNS%KeOba3PE9d>Yo+rA#5ysp73C1@lP zC%Q8nq+s30aR?>-6KiGiUJ~uv8zy{0ioC2W#lUoWiAQQnq>l=_N{d2y<{KOo(=gIr zKF@ySSuC{j zxJe4=xE29FO|rM!A#Yx2ajXHm1^W2xb0+xgyr2kNLrsTZ>F zIc}#`dP|MNhsxf&$!>A`nLuQ8gr&0VZCS%U`iIetijC#7iA;Wr)YU7vdA~0?L~B>} z8Ew)&6e?Tl#IUo4hLQTz9py+EjgietmewNXY(SWk5uYHh$cvIZ>-|RR8r~^V1nXkE zNu|MEr-lBIG+I($_Z_v)BY}-H3As~zIfG;wbLOuN>FQWvbbo>kc53$Sz9997 zw+US{@wq!wbUlyC+vS$$gQVBLW5fj)?4nISRY$68GjM4vA?vpw`^c48N=w4SSk;x79xpE0Bn|C$UFzuUoN!?Fl;Q06ZS0^yIT5}5tVIP! z%nk}rMu{%0j+8f(Taya|e`++&(sEQ>>{-4#NvcbT>YtiEPFEgzOLckEV?Ihv=uAZM zue|rSo$5PUv-`IUAGi{mf?&fRoIWv(^7P^AcOR5Iv?z7)CjL8$0RzjZ;~1`Roj6Pr zQ()Oh9DfT>no6G6~$h1>e_EV$OneEy3b2+Z>W9Vy=B^7F@*L7v;#N)QkktwDh ze)7f`%uDszlf0fkKYw|?|BL;)v`h7!pU3S{mFduyC^Y1)JBh)~Kb-$%(6d_`+z$&8bNVUJUlZ6NiGhNA8Bs^AK*n6NY9uv=eF6%uRW_hh^ zLC}%%O---6qoFbn_K4p2P_X?ZnM}l5_g+#?uqU$D)^ z`%uAaU$|MODvsYA8ME%g^_jTQ)$6>N*C@K0pu}DMD9tiCFFQLseMcef3QkBFFS)iT zc4F3`ojOUwKkYpE29JmR$&m#q){?b?pkpsJ8%VUH1i^Yqs{3W+PkDRIf0i0PgmX?G za=`3+5R9eCD zxL~*;;^Huuhdzmsk#W_dB`BDwk2dLnq4KY8ngc>RmMRbYo01f)nO!WMg_?;ZM=gF%bl!Pw)TVp9 zhhET@ccVUOpWmDxQ=)_VE_q^264?SfKGI|3M@K=b&`Lvs37Gs71C7Ltr!9t3YCHqp zDKYM9)OxSj#iddlPWF#~$DTb+9&Zm_!=1+bnv*(hAP}{;5SiKCSG3*cy36rfJ>_(f zJ0ASb4?UxeK|evMa*Z^L?Urus#<8%q>k%J;9TZPIEQS^?w9ww(Ml1q+d?9>3&3H;t zm+E&15BB(HZi_DzLSioK+lT&P*=75@JjqaFc;%rd1?rz?9=0{J92Q)`F>Sxg_m?iM zxN?!rCj z;k_mzQuv-+ENXC7I+#sMxHR=BRg@U&!_k{X2Hat{C{|pEGWEtZnGNZ!rHd8JG`(}5 zvK%q2(#KBA1ykiJD{`rmsU2W1woT7Up5~gEl?DTzDB<$k>g&KW>WN`vu=&Va_)0|~ z)=5W1VVi(#nfmHzf2(C@ID4*|TM@r>^1`Nn{pyKbTcyvbTm0NQ4H#|h!CkR5g-Qml zfCYgB@>2z+`?@r=m4E1919QKdaH@%1^Y6{5k^Q><5k-yq8dI-e%`kR*U(xTQ9Ueu8 zqo)UQ>d6$bSIH>hg1@$aspm=F2{myC9AopRO557==cI5JRq9_YlTRM?iPT+n)z`mKHIlv2&9300_xQ0r-;ERx;b?Nz@}dtB zk=_s@MfVvnuC0LySu(n|%K58ctRsZ?R!L#wy@i2{U}6l)^N7LJ@4ny9|9m|R(m%D5 z2P&_@&jzW_NewKkmsJfp)bd++O?P{kQJ|j8Ba#c(6;HeWyn)3*E{gy9<$vRgDm@XT zE$1^M&$~6G`FVI=3)>++Kb4@jiNi0Kn|R@uMQHYb0zvQknF1Xho%o^B(o)MXN>8@Y z+NW1dO-z;Fwl%PK$b?ZiMVhmY3Z~KYskMoor_LqTr3u4Y}dJEc*jg4JhFgG!Ir^RE;vxh*4Riiqx)-`e^v$NAQ+TLMBtMm&Re?(91X<3g)?Cvv^+$Yi8U z(uA3;&}7M7V28fC^j@d`Ls%O5aokTfZU^`1RTj5JLSLaZv>2YA&P7L;mYyC8Jr!CH z2_GM#UFa_kbE-^EPnSX_IGAK*$dH%W|lvys%~D6R{X;-#I8WS|7lKC zR<_IX-8**-Ei4qdxVYdR`P;X>-v$QO*VWaf)RPCxT_f|8l9Fx=x-Lr2Z($b8HzVRn z&tWTiN}aG-+03UYufwd}?lX*phle8zmiG1QH5IqgFgww16(S;BdFzDLPh&GmPjL@ByKjQ@SrH#pJ)_5@*gVY49G4QMo^2xzqe}?(Y|D~;cX0c zmf%ZzAlJ~?h+lJ#qd>#~wG@9>cUopM{Fwi|d-fn=7m;h|;iS8hlhfn?)&uX(DX~sS zZv~_CYsZ~;S^L%B=fbg$I45C!J98_mt_r#j{%8#i4r*G~6LcY&I)(mqzjN1^MXbJZ zN(uhkB9{cYZ+vUGv$M0gB^||Ih7tN#vz=d;IxS}HTt#s3sG#abeb}XWz!w`tk^=L0=E5#1_bx}LIpnwPy5V=UnAMNf{Je7)8OvHJhFme%U#z+?gu`XkCZTE# zGOSG2N)86A4YXbco5h5gWDl6mGt1BGB6yaVuhQYPG zuNlD+^3CY({m3&isSXu53)m(Afy)6k3nMNzGSp*(`PHlAb*r+$KRJ(DCo|#1y zhR&>g>z3EyBS$6}hGv`wBG1v&F|o4pJtBZ`VyBlcSLSd5?3Uxg7xY)XS2@{uVlepR z>#I3!ArLrZw>daDDVUpQ*ux8tMoec`@cEMgqJl#UucS`~WKN@G_6)Hl1xh9WVu}H< z`3MpQufTsasQOvTTsc~tL)>vus4E42c85@fGhpF3T?m4577yXZs|FZLc5X;crX}eY zuhxG^9cvk1)#LQ|5&eywJt24>Di#cxo=upxE*^zvN@Ri{tLp~C4;1Rdn&OEbjo*>C5^ z8M$27BIfiDqbg4$Ami8-Kujtc>ht&K(#;|Uc2EW=)GNRL?h7hTCPqK9*?cH{b)Xrd ztFfzNf~t<-uj=0g-`7MFT!>exP-mSHVXH{ybNS5YI(}F6){opx^IF42d=L}o8`9(> zoUiZPR&P7v7<2wnoOlXBN3*#P+n1{Wq?|s)~oQ%aP>o5c680hVdaZ2=`?;04$Og_Rz z>gafnXj_5Rzzngez_NbARz*)Qi?^bb1w7YVHFfoRxC41vTFUOPaPKo2A$O=M_kfde z?7bo+bdk+{Eu@P`Ju-afL2vQH=^4xlaDLfWznUG~o}2rs3XamQueJ4Tj@GZ}q|SO> zx6;02ezKoo$i~l}DGa`OT3sk!pkr=sUcd951(%-Qz**5go#*TO`sO)Ket!H(bg|Q7 zf~s3afiF)c%6TR&HE&YS1zzT~cp~s`z?Zpz{T&C#QM0mmS8P>UT-=;Z+M{2}W##i~ zV$k&)DLd=IZVNfiM1qY@?GD6*GMt&)XP$5VHWyJp7Mrc|HN00t{?MUA86~*)DJdx{ z9-6nO&&9UJ=~I{B{h?n3!TaSRVCeSW zzDKhJjvm&u?(om$nb3QiW91u4h2+kBXOk(wyARvW{3=9k|xLFBW4}JY}_TWd0 zZN}aR?qo!K)Px-cPc+^fFJ2SCu1<`Nqtwi?Zy{v#)FvgJ%e0ZVw6|BAogFjQ4lwZ>Ss^KGQx#D;(U5h}a_%jMto8F=)usVVZ=Kxyoi zz1E+zEU9am-cg7rXSyCNaHY1T3jwd3|yn@2T`_v2Jtl-ISWn~gD`}ndQHB9V(LJ@@3SXo&KZ90LB zcF=uu;6bY~n?ru-$B*oW+8SqfetuS2$2_P_G)+(BX{1qCQ+xjv3ku}EGJa2-HMsAF zXc5y{T! z?0#n+e=;vGOkrh9{RlVbI9px(z0`3YtaWa#z(MbuDjFIQPBgVtsU5s-eKLPga)fIs)KxS*qSp0O>*?`t72KtUA_DrJR)8^YwjrxG2_qoSB(< zbvLT}u-Z}QU_FGp!yAwdgi5uXb$bEOxVyX82-DE`{BX3hTg?r0>XmDf$;dd~c9#_tZUfc| zOp0wb&B$GH7&W4p&@Z0^bzcCB$@vhuHoNcl%O2_?eNSO{P6`S$vj$X;Z?Dg?vyV!# ziJuI(H?q}}oU+0eP`%=KPQ>M)fRmyVbI0nW7mZBX{=I04n~UqF+1SI%&u8D3t5lF) z5l9BTfPdw5!w(EHQ$~@dHAvg*Ctm~4DQjcYFrm1j9gA860Ng5%z*<=%d0aP z*gpd?mtXlap#AIF6=e;dKE27o!69pyc0hgiNmT~6V&+8Ug5%U35?l9MglJ`^puCQB zN1AAiT(!E-u#dZXIrl&s78}_Z$#2g8kNUnBTPqVrg4rqW$P>b&?1TgcO>{m<7Eq%75(?iAq>c5IUX70&8l55eAH;j*ew!=6$3N4D68i|&qG>Y~m>|8@_9(UGlTvB&qz_YZwCoZ(3`l+Q=(%#$6cJ4c+ zYI&AS+nb}k%J$le`G)D_o#YI1eFiJf4QkZcv#^qJb}i;+W^b)LC#5EJd8kux^g^Cru@nrj- z2L<*>r)M#)JR9rlJ&gQ%kJX1%LBfXZ7GB-eB`Go(EZ}C}E(Sf+)h!<#QnV{HI$v#j zo*b)uEPzcl@-t8WF?t309`cPd7>-P*!zz1ErVneIQmHxVYw7CF^AxIAM{E~^n8@ir zvZ%r9zK$7IXRaeRxTDc%YYR$QSfOPib#nK$PNjiVvHjs$B-#doU}kstLk%wkhq9@b zwxp`0eH8qVrY1jYwYETjz*hy0UbOg`>@PrHI>LBTY{n_9F*~5TV}NP}XDB#S%!H(o(oi7iBZPET_5bikDb}!y3c*1@S^R6aQvrCKvQO^Uu;m!Mm zle-Up;jB);Y6^Zx>H8q;$sK{Ak8Ld$`M~`Pmv(1cgx|F_Q$LS#!z%X9hkFGf~16|5XuIvDhVng-sev{Yr(nwgt( zciuXklrg|xz82bEcw?46OumzRg9Ve4=3!=K74hfKAN5__FIfL$$9{QQH#03&X~puA zfp4ZGj}LViO`$9f|NS-Afl6(8_HYsBIL2<0t+J-_FtR2Obai>d!opkxKfwQYu=nRX z4}a-JWwe4o=QJKqYiw3jQsUc*^$V=5BmZfZ_6$Te#}oBH&^;aXpfJT4HGqG~%Es1G zdNhxb%3SR6hR8G&xKoBt4{X87qoBzVh zzP=D|G5hIszv=4Is5kyrldvg2|G+(|l&!XPZtzg?GT`r1rKrfVm!vE_9yC^*#q(#oNvST9k^y$+py(83_nVFBaZ|a&^4OO_?j@1OJ zNUfDzfk^{My>~B*LT}Dv0RKstrJXh>;A$HyPVyOD4f3Psu=b`yW%*^XG9G)PhGDcx z@KD0H0}u?tc$cz~U=yzY>3a59pZ|MbNaUdw=jQSdfLBo=RSJ$xxbw^U6nwR_y*<~{ zqs?ns;k^8@tCm{h`0E_a27t3e7)86yw(0=J>GQPjKn=4`kJN761-hi9@1el5bHA4B z*m6Jbw7W;?z*0)#&yO0RbWzKp{6WRazlQ1`%v#ruxW(RJ+APT5~kP~aq1bQ zmF!Rij@=@^e6-yI4osl!gG%ebp8!Vw-W)BS2hhT~0|walSlrnPa#UAOk12#A^$Psu zvTQD|!616puGj4a=#_uk;YY;lRJiZBxq8|F?5Y4S*yXhzA0NNrM}H|U+=ZT=Uf{}= zC-$#oCT_}p2483|Jy|OxCT2D}bEtC>qLBn?9R7eBn_&OmZhkzm00Je&?;;l@{*uZJhrJ+GYXiE;dym|9Rg2^i- zVDTmxpM=62Kj)mIqN0|n2@r-JI&%1M-T3%;39An>Yl+Za!#3qI3tHy0{>%3Tc7;i0 zqn+KciHVyR7Ucg-P8vOVBI9~yGk0wLq+aq9?TE?hLf@X{D_5=z$1dYxu^%n&up-jy z{2ACf&8)}EB}^`5X3AXQp@V~ZEfxEBk_k9i!?wnA+c4*FuY!Vt2iDfuHUcc9k_1+H z-vhOWZlgaB8jL-)wf)^bis#3=hER{44VO1Xdq1COV0c)((MVA3ilIlSh$XH5$+O$v zVJjqx74;EU7vUG5Ck!RZ}UW5AU7KUJT~P^f&N?v|mAudly{ zX80IkWU6}<%ZiUlJ|qSJWUm%LIW_Ui)tm$h0R(0a=Mbh9-qoqNDmGWLC)O_?3$Aq+ zAqj`UFZn@axxG+XZjd2D3$iG@efMKF!Q5$g+~uQPkQ=_K2S5t_gVj7yyKn2eBx}*#omX%Zg#A z^_RvPCy0xSTjGBGWE5E6-fSnRX3znY5#-R=AtHWK<{=`Gof(?RIXMsYFuM-eSXDI` z(9bcO>4gR1jR~zL85U`e$9k^wLg%kyh+}Mh>4cTW!%@CH3M-&Y87R9U=E@8tSO zM<>4)38vhrN(u|{?F6d@8=IXCOP7tFX9}#J^7GYs8dsV`>-2*6wQupe?ScRyQk(Xw zC6|ZS0DGki8k=Yc=eC7sEOTgz4Ytz=j+=hXc=ERvsn|`a#mGti+zJ~yfa$;S0(*A$ zEIZ<0sy~<27%xx-zlVnS!B8|0mFc~_A}&6gmr+ol zF}h4JDD=5Fg|z234RM*$OQ-EM)3nUYaCj<`AId2MX1PF{>x3hcK*}#sS7>*2bWFYlA?(+nO?aca zlp$P1Ua+#`WD$4dS<5EQO3^;9X4Fm~=hvj};h`3+~n4BEt@!{4M^w)yIOuyYHBSfq0^;xp&;7CE7otcj|D9o!Lnb=+^zX9 z6;+8c2BQPl70*3K`F|+Q`ENqy%9AEaXD~#P;6z)Ro5c#jwmEV#YnmYZ+!z)Q?r>ux z%|nx%M#2wla_1*uu`LjBt=`tN52mHxa(|pYq|RDahdb@c(fi@)%nPE*m1WlMo}TE< z1aq;?^dk$KZ0*aMAHVUd;bxuZ@}CD&@YkXe$+Sybi@Z|grlrwUwr=09$DW1x`QB7i zR7h+M@vVGM3PWc{hwqCv=7WT&j@S@Ct@I%fCts(&>~3?j(#}sm`sPLOb165mCf_PZ1MV1bbXT`1qgu$+1mb3wvHLD} z>;!agQZ>7k*w@>86Pdb!!KWNreaLJio$D#IPRwx*M(EWeM~>XtsWki=4snCOFQO{_ z{d3yl;OWP)h5Cda;lW;=3LKtNYpQVJi_KdNV4QANZcN>baU&UCR@9WG1nNp&~HhQ zR3a`f+bBzu@2}$$YZ8sLT|}2&;SG)*C<%?DkP;Q;go)M!RY9aMdo+h@b#-;LnogfT z$b%ca4SVj|jp231=V4>|;074Su*m9ZNBBzAc~28&E*Ej$4LTEY{%#QABY6P99Byup zgU*P46bg!QAN=+#*rKoCzWG-lQQL9f)rpo_d_|oKIU^^j9Ud`+QHt!fcTGx)&vj$2 zjnuCx0B`#WEW;#SH%!RH&DmKr13QP^@Vfbfa_X%SNtyLs;}^RbcoL9*5Bp{Ir56FZ0|H~&pHsG_J`d6Ud;Tr!@zv9PwBHi-RQG@hKNa?IF*_IDg9)Q2 zC`yIZE&cQBCLx*J$upiH>H4;ubm`J1Ny(+;L9bm;Joz}*wrWy3k*qhmzQ|j1Hrw%H z^gd0tDkS=jZLh5K{Gu(5TONHZ$B%pMEO+u~sV zoJ$T5-p`b|a)Y;UBfzq+V9QK#YJoYd7?4QZ@lhYCrERrSom8p@RqiF;Y+qCp%l<@? zP_I%hP!>IUll<+N`d#h&R*re6({)pVsFanIUX+~RIvKEKwiU8K+MFfC0u0gO`E$== zy+q{dQ8n_;go01(&Y=&@_)pX2!ZZ$!j=fxyX=)9OkiUqU#z6E_X^ z@l{RYG&|(unh4uN1(vZOQ)J=Z3L$|H_nl5TUfdJ5LaeSJpV)WYID z9*rq~Ppf+zfV2Pz`CsUyexA)g!l?c~NT_V1*StpRH5wq(&S-T&L5$79{QP=#?F|I9>kI(gS| z>HY=s>QG0hMgAH-z-?!F74xl}6yQ#BT`$=jGd(AB>}x3s=e|?$xY+hKgtVFK3O)Y? z&VIyJ)OqpC%$)iBEYZD7PBDa7A#%HVW_~^#puEd;a->9)S8rgSq?ElgV6}L=W4kJD zWoy3`&V^IcU6nf8Z_px(nd>X$zc7k54=QQ#(wrBhYg~Jyyb$HVL}uT@U+5YjL$rOU zsikFSW-GuV!DeI`M%o2&@QT$>(y=?1GtjlIGst4Q5~1nCXtDm&J44Y5QD*m*6!q+TKH#YYcesip+TOGE;>3oWO~|^ zPCF*BONc%TXr~ZB0u$BbCTou|qIi4b$ll-+QsWyS98=6$q)RsbHU)R>we0@nwCi#aewA_qwe^)L)vxTyP;$lP8l(SJ&rir zge#!tKQ}P1$Pwl!7GGdj99QnXvmvwQcTWsW7Go8eDzF~1nzR)ak5}qjqeGp&e7RC{ z1PWN$*^z>y(TuDtCH4?Gz*IGwIU9>Z{MKd5Z&nNCE_{^q5Qxr;jfuH%I?%sPg)RmX z({QhO|5J!Z;t1^QfCyt^V)8s5t}7rZGd)u0jZ-VwOXPaP-%@se6w}x=4h>Mhgj?d= zV!Kz*n>5FXs;-bUsfV)TPJ1~xIP?yYp<0oFW=Z`ru}WLZd5Uy1-B{Ta_}A5&ctL(MjCi%+&PY#jtvYfH}yA)f=kxiFWhy@}2_?C3tVO7=L@J9kF3o z8Qv6u$*=!B6m9lQSy}nX_RkBt?l;klwb%Ef_R~=k3{)r|C@Z(*@)OUWKaYeT;3i%7 z{RtZA?~lV%g;8oCBIw^NaveDSle4t;$K z27|%n^aof35i@%3@+Xcxdi(aRiEhY;qyI#ovA&^_PNJP52;K|4q2vQW>Oo2ZSM`|9 zv#y8kSAk50h~Mf$1(z^Q%RUkH*C)B=4$=4TT0P>6oQ`TTv6ns)~S;wk1Bgy>EEH3hK{ zd^`D)uI679Ui;S?jU5Seu!J0+H8ZTru#m?Ms`-(hmzC#;u_o z1D{p99AYUs>lTF6b?(Px9&Rm8Pv-zNUM!-|y;2yOKy|D``>yW1hC5_-GR8(k-u{~* zUhv?W=vG@4GONCSY$XKL3#zsNBV0s_CLLYs!s8Wy@PT+_|3~HQt6+u1!{tTClx6c0 zHwqukYjocky|qV}y+t9j92R38k; zJ>AXj`?_J>ufu~ZW(S?`8BP~7mUcXXBFKt^nmPQaXvI6Oti<;ir#5SLa;j21&6ece zO9%566voWb@(8F`XkzcjFs{%cmq`}h#oC$Wot+(uZ(Jy5uM(QT#6y`X70>eW@?HaX?kLO1Trws*|rWY3@VdKOd=iY&Me?{3@%K+c{?b^lDfoA+w6(uJN z=J|+NNXSXb9UpP@SC%7)Vd9LYS_uX9D}=G zx=llF+}Kw^gKnx2os9Bu$ZIU%QQ&D5*nXPBqX3bo9-Z+kuBw0m>)ay?5>aMe;#Pc- zcET4|xyW3M<3nzUv+>M70JhC#fa>e3QUWK>o69o76;*Cf($_cBZw;9~6pFz7ACCNg zlRcNIJbd(M?}E;#bu*-*J%^J})Sjs4jBZd`wAi)lM88bSBKF?NT&&{7-~xf8*dX>_ z#^*L0Ss&APd3nG_@#l-j9v1Yd%AvhN-KFQ%{!Oy%57!oJgIEqt2Vr)%9c+eTd=up^ zd`?ZhI{&p^c zt1t*TXMT%Y@EOXUCi6cS{E~dT<6ttgMS&7N3gP%!R2CYyaAF`GrCtcm(DmF4=vEX; zM0|bENP9>uZUAl7JGQyDR)+wNSDL$SB%;fwZ^QqhnD~t^6#t}4ij6{yTi3{s5hIr8ZL+^*)k=rD7qQAd?8R;1Z)QevRQuP>W;g#y{SDIt%-w^t!g}Vx(Np9dd zt<~Q~#&BgJeF4E00WHEP7#z@I@ezQ&m^rHu?BS$H7xL+DusnOnJIGy&Z-$rfg1ra+ zQXRoi@jJk;tga$l3s6hy-?A^_LFXYuz!4S#j8%YdT`e1CjwtybcIorQ3b|#eV{|Pm ziz%hxNtqR(?67ebBtc`Ck4Nogp*fx}Iw8T)>b5K&x?+wfo%}d-HVA09-JMOuRmSPi zg#a41Tpnm_2Hy&h2N*gAx)6YCWm2vAXSCrQmBKDsTbq+zf$|ALzM;WE6r72Za(|&s za+vT)CM@E}72O5AP}$1UcziR|K7JSL;X&G(j3;f1kp%?>S7L{VHCs+8kv}L_sDM>t zVqwwUaAJXi8E8_BGSSRyXK_I|@;AbD(Kg~1MwJng3PZnqXbX-Qpd^k)e4y}bVMrL7 z8QfR?yheTV_&8J@n3|e~0D8{nE&$tY5{T^uXI+$ttMig-)!m=&arq=Vze$#vX4N{E za364I@4C)FL0;ae05pNfK)*X|WPz%zxq)Oxh7ADpoYd|;#(&%oNKgl>&Og>-w6BZC zN@**K_`av?%KQSlS5jP@8=+#S`NT8^B$UMam(^qK3%rQd3q*r4eT3chRK6H?Z>PW5 zuDRimx?AAex4w11{onq-@#vg|Z+Az>XQ2uKXb{-+;^SVvauCUH6j{MAva+%qJ)}W5 zA+QG++#n;Ixb* zAZMurKqYp~KQu9TCUkW#4udOOu3>H-0vNnOnCYN~vr<4y0`vky`e^K=s;1`TPewYZ znwqgcV|n`}dIjv!$_n;q)jN#jmNG}!Mzr8F`Q7YCQ&IzR_Z+z3`uboTJ0Seu*Bo>0d*@xcu{b2D(t%0jbKOxg#ZLY!pjDM zn~90(sv}C?aQbW%TaDx^{v}FhxD#%(1o4{eniYoNZR&&ZP+80oAUgjaK+#v0Jwe)< ze+6eydvtR0>6Q~&*Qcwi>w!S@V@C|wjgk^EgGo<(XD34wMj)DJ+7ty4KWS%k(dU)G zPUe)E6X41(1qH(I+;c-K8Hd>w?vi2Ydh4TU>_I3Q*5~TQ*`IrK_j6&?8{T zFQPAa&*|mPOY&yP z(VB3q$(!=Y$cobdQe61wPq&%$42)ya zo#py9>z+lGJTuSq|AN5m76qf{_)`2K!zs^N9uSQZH00EcRuw7WMi|uElUqchgGNQJbko;?-?7R+;Z2<$4^b#f5NrmlvoyNvg8zOT#`_4?MBsbPK+!>s%C& zSVe(K=^gdi)W-HcIE5d7_B>})ljZd}a^=iJPwHQ!-5tr&jY;{kk_)xS`*PM#iMBZy zvWG!VS;hW<*!oG`%VG6M&9^m_LQIWM>_a)XG*X}{@7&tQdIgIkm7FL&;S~vry{u3P z#uchA6PkX4iEx3_FvzGpT#f;4t)I?PomD+eDMVFPM7)n^qps~wegoKh6sho>t@F*I$7U%DTpNe@%UbDZyvOl4(s~Rlav~6}?2pf{^R!5l-D<5pR++ap z3UQW1|La^NIC69$vXLne>%X|NV!QR7)}!?y03!&r$TP|r(g*%MZBQwIv>d=+(Y>5V z-bxe@5xK-)LHO9w)zyF@)?yIX(^YoZRcIOQJmMXMkYm~<`xl|{p9Pj%rMMmO`Q?EM z;)((%H+L8?W-hzy_z7=DJ+1b!e=9rvdrKTL+!kGj!T{hx`8L!cGosxdHvMC+2}N3) zY~JSrVgL7P0TzcM&GA_*1Rz^!-L|JwslhE}r#l##$mi~ZPK3y+VxL2z!>z*RBkw)0WqzJ=a6p-%`83IOVY#Hso-Wdb{ zgaWg!iE*&Av3Yni>D}X^=P&>6ou|t5)KoT(yu0WG8G`vrDAutCRovRdkT-=`_Fs0{ zmjJ_PbRNHa?%P zbIig%9sc-*`7I!lF3x5EAOmW8KnVuAWCY@Eh)hmY#Ka0&rMX6OKo41Mh%BV?W;Wx ze3L1Z(v~mzsSlviL>v76UOM34}l0*l%o^q=y0f2E~MF2n|6*(XRrx97H|<(V1JvwZzyXu{Td01S z>vF6_wACcNvV^`soG*{$UH(z2qq@6`lgpbw>6M*-OW}g{Nl5KYgC`8MOYm8<9DB%8 z2`4wu-60TRLjWOn^|LTq91@;UgD)k4+=o;rQjG{6<1Zl$!dTESUsor`$@W6G-{5SB z+$rv=POBx4GZb3!*?2%HC{JnK5_`@?Cv3ATZyw+|Ab&(y@wq%XJdMte=|X^uP#!&L zkWLC&N&l1vGW@Q(dboe*IriM_><^NT`r>*XTN6Rg zug?)lRfqWP74P3?vfLZt{`&N1m7Q~&!5(Ypdn(*Z;fSo<|$iWX#1mRx@iZePn7611`5sI8^-4uq{SOSg0!?y#Nyeet|IvPh^Kc`0_4;GrlH|6}yx#iNFX zhH->gaVYhlfeEACmaBsjNo%RLn+v*5%e-({XSUT{uf(699r-4eaFXu)ayVqH>wxLD z7^={P)1myZ>MJnSr~|z03R{a)Q+s_wzeZM8N*i-M20T(o*ZbSjX`T!1h{BO&q?j4; zPrv*6T!%qJRuIQ!Zf1~xxS7q0O-W!Y9Q=n6_Xq7;vzJ*6l&HhGYUCgYH5_(63Td7* zQ86(BC(*Lwj5xyW9Ri^Uk~OSQJ;pzg9H|!y$D>7EH@)Lv@a1u+S-6jFv7>c8Jrnkcrx4g~(o7HYqp3u=+Yk z;EzMb%v#!MA+Ad}udvVud|@FEIg(G;3Z#PZg)_<*OX-KB=<8C8XD@iOQ56#P{;^#4{b_de6FLTqs|srMtfA@~ObT9w%E)`EXX zxHUtas7`D|iT90_oT8_%Wc=Ynay#CuK$|Iz-N_Qg6MOUKM@*Sxco-Cz+LZyqnVp=k zxo^>Yf>V z1|gB3BX=T2palO#)`a>NEX#!yxrM5D$?pEtq}Y%U#u*UJ4~mOT?!?D;gNAJGjF4(D zio-CX{O>wY4bUKDaeO#mEhi*nyGaISmB{^yr+==*k2I;cGG}k`AFiu-{%WS;g~`k| zS?Bgr>@C~77kYZgK=}TyJ;>x*@kiOm8c`x-IEhrE%r-P^X(^a!tFQm_2cqojw3(R; z`bI`|>%Lr`i>6IS8(7}>M}an>VDHV7*04ZY{50^6&-Wcv*nWZbIFsw*0YIspU zc~vOM=gVLZ<$#%%|K{CQYNz}#BFrjoJ5?cIQ=!Tw4MB66>}q1=|i zfdNOG7y9|m9f4tC)WMR4CqT)ioZBCLZnDknd`+aXWIJK3@up*D1IMol2$=fLJiI=F zC15~)G(Fa7U_m@x8*O3A+SwT;dU4IB3*(#@x^JF(xvm3i6qi{84j4yRZ*VZ|0Etb{ z(4LG*qP8?Vw8gm@dmj4eYhdC5F#jo#rm(JOZ(kM(VJ#NO@bkBZ^Rm*?kHr^I1eq`m z92hMqIz`HK{Ups{?ZIC`s0gT%3=}Fqn^_Kofe$3JkK8J?1SOPR7|LeLBsuR_ov;gt z54*ZPUKbD;FXLO#BApz_(kevCO)5C`w=aVjxs8LZ>A7{p;;dTEBqb%q;oV57 zYYuw}q{S`2yfFhFZ5K~fD93$AGaJ%RqyEn{Qn)xgNB_Wp#bYP7k>WYWk1X{J(05y- zO2VK*j^eNnj}}Cn0N=tW6NE-_0CgWfd4ke!e8A;$3!+i*n=a#fd2yT0Snk=Dt(bf; z**&XDk~x%@%0c#Qc1UZnZ`8J3j~pIzXaw*T`f@qp4%e*HCFS`3Qs z1h(<&97s14<7H!A$HUTfsyj>1;GwF@C`B>-L&G*DMY`IsK%LPQ9A9TuOIY(W1s(Vq zmTl^_$-F%?AMk>i?S`eTyW|BqJ{G>1vW<99 z<5NCYL@K3R`?Sm!Fo3I{d|RPdQ^L2Ffll|yI$*sA-P|U(rF`)xT0 zDMd%Y;IpsR>!_e|LX6L>eSG}*@xVO`F@lewE4uhD(Jxucz#tr)wpN^?3cFaN{|S}L z(a{ywamI|-KeFq&xW8@<*~dp=UAy)Ypps3SHql}IQ2dcWw~kyoyB$j`YnEr-y5LWr zj^3)WQQpu2$ppTzvau1^zWtx99>en$JRYSZQ)L#}rzNe!u}I7BDPCIj5#n3gnF$z1 zNA+Ui@VC%nhg#d(Zr-|;(fu{g>d>;$84szASuI0hmoF>2yG!UkGkRRP)#38x%OMxD z)~#x0a;vSaE!e2Ac{4reo^RcaI|C#ZmM>qfD1A3Qoy~0_I2`4_zi9y~D%YZzrBvDV zV{025!)9l_-o1Zs0p>{k&>^v|HGPj}%FD}7w-w6~rN-%EUF9=pwtaV$WLH%@dUO?* zwl<3Vz1=TdkjB^aaq{%bd{~nu55=4;Y1>r~T_;8GMN=fAqQmf07Kk%Xzq9pBQm}&9-(ey^apKjhL7~zDk#7#5E;q&Kua1{HwZC-GJOd9>>M9I<< zIc{N*@)D)rOcbe&s}CMJbooYNV#eHjL&w!!hhhetrRt?NMwQC7HxDtP&q9IxilgkR z$yr&>x7@h{-C6R=I{eEzmd(nwrwFe==F2H?c2XM`pe$K2(~w`%v{>n5tzaV3DYRSDPMY}|1urVh89lb5G=<%VtKk(dX=O)m~+q@^wMs=~^|Um~o7 zf#4IfRNAR5NR>St^8mZ|2{18Eqx)FmXoyo_Tg}^QvWwd}To`h<#=;AG3taoxG+xOE z_!83XUG(EX@kc8qA0OEQ_n{RpnjG|)4LUQ@w;PFa;_oM$7n{USON+*>Jap&~#jLN> z79dU5*%pa|@C}L2MK()F)PrR?+qk(@DUpThF(Iz1t$CY961=I3tF8FI{mU7Te4~IJ zyCWO@{KE{0%@Y(7+Kjr>x`zojA(8(1Gh$arW%r8N>>L)!l>7IYUw2b0DPF;tAQ0Z$v*72?x|Cu@87HaYAfNxKx3zcUAZFO#r1td##pR1m#N>pxQuHb zCBBOBP>gGvrh&{h|G2QJ}J-)-1$i<{lCLqMRWyl?mniNxlXrXb)U3pwpn>|+4ctv!@C44g0f-)LPcuT z3eMwSNAWhEvb;WEs6)EfY7g>&Ej`rE7FNvkcb$u{YYV{T@{=1YA?z5e{l zmrwBHy)-|OI#vBbOH1osh0Eo@VTWO-Zxfu#X%q1cUtW7SSy@{vvN8~J5@OTl-f~t; zXB|Gi5$=0aQ&k16VqH^`Pv*lO$;^jf!tGyPnbOTPIor76rQo3f^vP;KTZKc*LCojP zYN)8FxW+d6uVq{O!{r}$?>}EMOZ|QE8r^^U`Tu7xiX@BrhlL5puyb&vHz%DxcP^+t zfiHZ++iePUoqPjStvc2LAAyvW<%|hoVSOU&a1}k{s;e(EB^|$~ZD^td85Y-y2O0XN zRVdWWs5LBJY}US|56@%U;p()&v}!%Sxal=}jTyCi)~K0eUYb@fS{9{ETn-BiCJ#}& z>-207?T-C3w)lnCFvj+yRiWB53J1AEV`IOu_tHKYlu@yz)^a-w2&BAdca@=|(2xl} zc;wem>~wOW$+u0Id@mSUmTbQk9S_oEHm*LzJ)zZ3O){~+?I)08W=^lEqVjtsOaw#f z*KKxHQLonYy2^C8%BU8ND4xBWDYm`j%nz>OOnc_$L4~+Gzd!U+b3e}r39Q&E(N3Ns z`OMlHtI4lfJ-x0P>S+^xPv3-1@3r9)XH1~g%h6O+-n=!gLAB54aL_k<6B&E&Jw zn5p8*UlM=)`ev%Fl!OzK8sy_fU3gtww+ai;KIB3rho+BN$m^?Q3Qi#u2voE~Lb@bhihjy(u)G|v>r z`$AFgUT~K_1LZI*rhylY{Qs^%?RU#kukFBhdYkLm z>h+Jp*W&sK-nvIK+1c4JcB&H!2M5$nUTb&7CkqR`KWA?a1q2LICc_Rcbi1tSN36fSq#exu6cNRpqNDK}YK zSX@aikGvI?C)Ep`S;HH6!#{0}-Zb~oRD+g(cP7s0+{ZJgtajyhtx=X#vQN+XRKhDz zOcy73NDk6juV0N~Ix!EfCirJ0!k4 zMgO)3A-J;f3Rr?`&y<>|5~dfobOxVW$T=9zRqJX0_9BzleZEkRRcvkk9z)IROfoqE zg6O0jIg>L!F#)}2a>=SN{88FeSLKxV%b$7uevV{b4~?|JcIv@md?1AG*>>NyhouOI zrF`I_C?n`!Gcz;OzLAxUP5VflPxs!FJCfrio$9-5)qBhOH1d9bmgY|Or0ShWpnb4i z?ncKs@VruVt?27t&$Z%e(=Vq8tH(S59CrRbWVJKWGkJ=?-5RZ%oikuT8Ii6=q78ItqhblWAHK zuVfs07qOhRzAno~DOQAFhY;`pu1IVd^8K222R|yA8-DFZ`GM-JkZy_0O&fcZVgx5k z1L)I5DhnFMI>$WFcgJH;>EZ&{OhNSxCyDqrhEW@-NG7%%A9S2!&v|4!(Nm=`bC+$V zIVt{GA@@zcf_3Wmxs$Z&M>{uXsbs9C80>YNrb=Ec!qeLq2XJI9(X@K-^QQ&k^pJwc z6AvCfWES1AWADDbqN0vj6`cVMgW~&gA3NWUh!8DU2G1R0bwT#7ql=46>#F5*OVx^p zzdnBUjN_~X_s^d{m2~OZa#kn%Uh*rTB9RDH(hf}#)+ljYC!XL)z2YdVe7kMm3vq1T zyd|2ht1VFbWc>CRJm#&V?-ztCpGQtld#2g-aqyO%5sggWA}`PTT!cHuO+rbUDLp-; z)e{rSHopeDt@nVA&JBb|xL@{l>o)D!QCaf|F4Cd-<#LieevtUFGA>_u+cvRZm%=pS zC4#G%Sa72~D%$L%ZBf<+7P4txykSh}+Xy*FXzSkIwQJTmqdlVX-mhQ2)HF7pK5cWp zV-F{mF$ymw1)pSRvmqD{v6^4A*>vi5(AULVNn|FsVumEW53p8RrIac{Oolg&s(r9G zBmfSvk>C_PU;E_LE`s!5ed;?uYYuDpzk3^7#TM(Pk*WLWXjIpoAh2c2QY14=N84m3 zfq_W+(B`M|ChHBEE9-(&R&MzumJ1gygjg-< zkmiKlRzG}L37Dr@Zp$Tk4ukXYadDxDJ+GS1X4cNRC0&N0Ffrj3;aKT4HOwQ?sR-NU zDxpLhzA3y!ME|*9-Ij#f=hl_0s!!l{WJTu&s<~@VYyT8a$OT{?93EzTOGQ2eW<+) z@#%L_4~##q5`jPbo!~w9rRblRNwgr&*jp>8){@Gz=wv=@y-p@HtZzx*tL5Ayq0AX( zk$w|L7T~$btJI}Mbk#7yc?KI~ydr7uuW(<;d86N6L?QrqmGc6_Vpb04gcJ4^9rn*v zWo66Z)kym1?T!Wfszd)5|K6^yW#K8Z?7wUfs2)ULQBU<~%Ur=X8~loTvbWT}SC4iH ze<$hT)v)pMVg{Dr{pP9I8WSg}_LKvs$7HvpsI$B5XjjS5ejv;EIZbBfQCwvG@9(P{ zk`5LPtY~Q97M-3Gb`|L8jR{MW#(ptB>TSunEn4R5K-~oMwzgl#g{2ZT#lA0wtDM7` zl65aDw8sD3uQ}uOd4jz8CU$oApaMn#8Tz4^0(GzRsUB6=q_)=WQF)us`Dw%Ej>$EP z_fSS+Jo4uQrH~^=L=OklUM)i-BnZ=&Hg%Sm0m&iV_RzXAdFle zlghFf_oNmDJ;CJ~)pYk?kU-Qdf!?9?GRLaK`~Rf{Aomm&wyN~s8~wa|gwDzMZMS%C zkj%faad0v^l(?1p)2(5Zk3;uJFGd8QTsiyQzl!blIyn63LdR}SwMajyyM8-6HfAwA z+(6cuz=}Kgt#2L9K{^v(6TbGNr5p0`t1DKn)F~RNtk>nqdE^YgRA9R#RU*ZJr(?H} zSCn7g;#>UtIP4*aH`Z%b9Xo*k-bBXwD zi}DrI^S(%y%ppPu*+&6Cp#xg%IQ*pfkHQP;M~|xD$}tEyxMCC_bag{B0lnu|%K;+n z_FM3Q>?8$9*ZTeLPlv@LdG_lL{V3WGP+E-qtgg=NW6Tykn8{5u|3>7*94vf(OqaCZ znuX#hST3nsp_Iyr!QoJxb7#0yxmgmyB+wr^9 zw2wR~Im^SaGM`xjmu8l&$I8bSo!jQiJ=C02_Ei4`d|McLm7E;$H1g_yc-q0?9eMGY z@&3a3KP_R=(V^uQib_g>&zk<*{g{95=XHMaEj%wz3QW;b7THnCv;3Y7dKtPtASVGn z09o?-ww!|hUA5-2d>Gtvzv^TNn|MCzX6$qucg9JC3 zPUO)j0{sbI>lD-KjcJwhdEof+@5IK2K%FdN@N$_%JTn%DoE#6POx4aVoj05Af4Vn_ zML?aL1hN|f0Zap77He~zOpz1*Y=3iUap1WXcj{#w7(#cvHEY*yTDIh=?vB;GvSA>2 zI+oap*7d~u`UWQ~kuPf%r)tfhi311f?Zc5pW z^ppxmL5eL}?$3Je-SjW(XZ(h88ct$<<4k?IDEEX{=w=uM1CygdwWP(a z+8}mI!LQhE&uwRro|{EQS3?{pbo9~nq)qZOUDroveAY`kZuDbx-3K;x@^R|jB^1Fe zTi$e^GsjdnzV_JlNHZ~gu<=;DgvL4sI!FitS{*Cqr`n={4pT}Y0Hc(&MT0a7nK*{E zZ+->o*L(_i;3rNc^AZDtgJT_`d`jMoK0uX1R&fPNoNXrg1s2(x2Zyc){$QxOD`$9d zFeA79T)s2P;fcx$dot*c$aLHMum{;3Y1;Q)KQ??y+<(d#`;v(G5OJ>Jm0gd(t?cEQ zue*Jzp2~MhpbJYU1TNVOPfbgBd83(7g8UBgVyZVYSl2=?Jb#&kgk^haz;xgJ=ur?e z8^GBz5_WeWR?g+8$|TGl6PP0{;8Z|x7_n$lKlvFLY*5jDhYxan(uo%5+MHPR5T?-r zu+?CjvYk7WjQ1Yv1$P}Wi-ltbK!_~0>5kB`QhFA%+28#Ibz^ARmkt8Zv(Yav*(0&a zZ(+aN0Q(FzCC0$ zPdIERomBoB6BCoDGhZL|-%&W*yzfR_oU%4Mr8LXDY&R%{wDfSy3}8h3)bjl*HyEh2 z%*@d0-mXfC=XwEOWdBr5GT9ztRv%blhrpp);#Y5p zS%x@@A5D@szPRv4Y`vHTgJVJe)|d7TtFfo0rMb|1wDjvSg$%=2DZ&9Wan@Y$0Cj2F zdHs*#`78GTzYIq_FY4^rXa4iuIoepic*x52lhTr6q^Z^588V~)-EbU73Ed(;n|S)V#LlX{{mL3-`3 z66!gv3R-uZsV;P9T%VL*tyf!E5K3vcz!2J6!=ig4hOVut!CGa(rgwim_NT?k5-kt& zP?GCbRf2!BeP+%P8|wVJ6-b(I2_H0b!Dw^FNyFWxPvG(09V%0fp;Xu+POk(vXgZu?66eF6ij`Bp@AS<5b-){%y-6$ z=m!!q`E<*xorD=S{y~|Y_cek3m3h)Y#h%nDi_g?ZHJzSmwb?-3<6F|_ZM5F|^?bUGZ%(*i~m7~$1?^6;?k_h2RSCO+?{qd*$_=2z1T zX8Tgx>bqCKOMUmF%~SjlFHt9wXetmyxOvlWt=uzQFevIeP`5lMzN8|hJc2A?By9Bg z`T2c~*_$1UCUr?|L_yb%@IYvNmcT5aEuviU{2xPNZm?Ok*q0)I65h3|0umC}k4%~p z?K@6A3;JfKdh#T@W8s+E?}2YC0c2yMG92@(wuJ|xI=CZh|L_5AZMHwdtr6s*tzbYM4r8(J7Vbbae`D3dA*FHB^4j#=axiGGI`01l=MScI7E=Z$1f zH_Vl2Y+YMuvI}m033CH=W};(aX1Dw3fwB#w*_W8!_D+~DP-iIq7?hOcWIB^f$*gUO zy!mJz^cLNKvdcQlAQ;gGH9$rc2q0OtS=cYF@7sZHbK=B&N63(IUECA}k?c zqlii2`WQhH0oE05Bl4O{kh^xmJidpzwH7}7sX@*P5R+a9@28|Jd7_)41eU-BsXf^i z>*c)m`Az^bk+X-pwA0n)U{I`inEdThdO9luoxZ;Qt-ZFIS`iYrkK$X*N$Mtr!D}Dz z7&Z44Z|ys?<}Q>fD>u-viF6b3EhF;=hNNoFr)vy1>c_euT2o?WX!WJ7)gELlxHzgRa)5dS{-2@s6$SE%1QDUv%oqSxqZ_qD5CR*F%E(= zRa@$hu1IU|t6g~;%I6z~ks-zks}$xHVQhhTX?V&#Xi>p^zJUNG3c<{>KuTQY(#(b@ zgY#{rA7`p@v*GJ@jKU%wz0z4FWyC0hV?xq9tM&1vuCTJ zGJXq{F^sc62quJ*13xI+!qf^iMTt^FQq;Y7sQApZI> zQ0)5{ef(NbW%m*a0%;M`V%fBbOyLzhRq>%v?J*49Qqy~3!;Eh^f43dPn_(k)c3nFd z==D8Tjg^5IGEVA*Fl<)|&DYp3HHSS~c6=E^z3Oa%aDF2?p_CUtr{+2)y|BHQlBz=? zF!d}l!8XQUNf6 z9;oQ7-N`K_O@ma(55Hu-=XMsH<*lQSN*lbYX|M#rOILEF8AMffzr7;)BMgnS_)6x7 zoJi6(3DHCCB+qEj^0js7NnS`>m?P=WD7HWK!Fw}nuI!XdrXt?*2RylOa|j0-Hm9i8 z@E-I`K2~0%TSVv;6Ho1(jnLZ!qj!1fi9>>2IG2C*`t?iSzZ+rU;&+WFto79(FJi;4f+t8mmL%_- zZ-iJHDOA8sZ8`l6T`V_Tix0;5Fu@Qg!;{E(3_l&*o+WsQxHlI>?G^wF0-kIFmgEdw z5|e0UeZ(KdBbu74apkJqmMhSe{%p3-3~m{!zqpWk^ma;tk*JaPP)()+rTes^~Yv>(3ACmqoZgD3m>l@+mxs5^z2}!d2WkaRc^}=bOr!qmw%r^ z7i1!Pz$motQf&Bfbzf`P+1eCU1Wk|K#6!f*@GriO;Mgf+O)nw$!*yTx#0(Lph}+lS z0}PwwJG%{FCW-O_1DB|%s`ke+QxIsA_usiQxS~_qdf}pc(xwT&t`BVBOn*Z<0LmE+ z1VaGqtE=yJSU_S-vYbp4X6#I;T9b}*v(*Nps1CKeWq8)W;@lt;o2om(h^z0Rv5~X4 z=I%3mzrkgV*Lu3X@mwy$mbgwoHrsdJi`ZQ})*F!g;933gW}Wbl1(^rX?rk&hYpAtuLO<#QG>sHtPFH2GUEC2k(i)%?q(Eyj1+SQ(L zb=?OhISZ!9%GS0FK`=5gsDJ{VEcxB#{@VOSQx?FIckkW-K_^24v{&zy1DDOGTgh|O z>RV#Uo``6^q5hc*BsexY%M$KdeG!gUKgP>xZYY@H3_`q^2Kh*}+?0`uk)52|z{w5> z-EjWndn9wLzwZ>8?0R%8X*DH;TAUht1<0VQ?#s#&Nry&%=npO7cHhFNW#j%yU>jl- z_^jLEMGZ# z6{m^#OR9Csz^>S4yzAot(j)NidN`lf(P7xve3&KfEfh z+L|FKR7C!KzULF0@38kyalS>wAg5oB2Azi|%DtHrX`~X!4tcWw^;276gh~4Ea{~1* z?Ejs7|NobqFI_XRgy0~bV+9YT|FMO9qCU2*IoOM;oOn#-TJ$2fs>%S(4+0_iM;D9C z-Yog{VXJW6i~%!fB8|TsyS@0n`GTD8wK)t*ii(P9_Joa`)d!IQ#djQ-wpVRa5lEJxLh^ZtT8b@bQ4`8S~t}xTJb`k~MB@fGEs{o3iy?1un~kcn#^XMb3Y z8oCf}@jsMa)2{}-NoiX;ws8FH*_}`Y`ExtwDY7%rEnT{_pxzmPBebbMQ3-Jamjwj{ zF;Ed6a-hkE)dw}Bzrf(m&JmPpU*HwJ-MqlKn5B}F+3i_<#0zR!8 z^r%V`HdjU4=R=>5s&-B4F}@*t*kFc_t4$H7Pz+%Ma1ycQHE9V zw0qqXYg`xc?iKs7uTq3j4gae-XC>wUaSJqbu#a+HzYiE0Z6xU7k+qMyU$;7fs96^1 zpOz+!`~!iB>tH?e+2)tEJ4?>+prgin{_APC;>J$-s~iprNM>n~D? ztP6jMsxyjDAu8UnV7c0_w-7aYebtcczy#qZ7w@gsj}^mqYqb~NzWp2$^~!!{sRT+5 z2Fw;pjsz4Fy7k?Da!USRT5`n^H0L012_Yx}DPRon$n+F!OtkHIY>$)f?D%PrNU0w= zQij=}pMgvc5ww4+W2i`F-}n5z{?`HKr7P)N@n(1(Yx|;!m76;PkNDyFs@JX03?D%Q zdq>><-P5NcwlL;IM@E@$X0iN!iuvP$f(^i#6wVapD4aTVYVb~5 zW8?Y{nVFdfaez$w8i%2z!K%Lq5QJxdO`(*473Ss0aSPBq<7G4 zul#+awD8Wvf2XGlY}Jv(!1Ys= z)A)DIf5g$_h2u?srD)oX;s1+#nU%rv?h?-byMFn@a|d-_H2O80+`oPM3QRA;t&n}C zcm5{rWl>Qx{^-N%X|NE5SNoP*3i_{wXM2i{oR<>Yu5boOnQoNdaL6p8d^D}BEho@*Foe?p0N~^jfek7-5$PVVEjv(NuP+C#((d>my)p6)*zQHiM;qEsQa?DQq zlg-4oDSulV8^$}%n5X$?ml1P_@W7E-Zf}u)#WK93U!bu zL&R7x%S^%89X@*WhWqgMehMYDtOK$0HN>xOMKr@q>Uq0T@85j^5II9|Wd^{v_j>AU zz!SXKK#))swI?D4QN?(I3>!l^4%6eeu@6xWge6U~krZJ<@QF1n(Jn=&TmlH-ols)6 zxvrZCN0#aUSVV{!DQa8*dyIg~b*TAUmQQ8__Xo+_N5Op^{7d;Ue{9&`1eEt&J~#zD z2y-P9>xc9CMzF$5D4_kgVvK?B<8!5(bDc(RAP3FP{`~8ggEFt;qk{|5;_U!Bl#Pvf z0Qd#~7*BM1^vnd2bE%Lrr65LvW+vb=V#)C zH0}rjJyaEsukswu?|pmj;d$!x*jvKQ)sN|zSlOILX>GJQKgB05 zSXbsWFXf#^3Xx|tq?iz))Wz_~da}~yN@x+t&`BuKMZEb^M% z^MH=Uy;w_YikKJV&b;|Ujco(0H?80>CKp5NR zQPd*d$2nc3YH(Ow6M_CSueImU|-FRY^=vOZZ z|K!h5cOv?Lsa~qcN|KcIF)f85Esn35)6-L4zGTPm))s~IbY@=UucdllyW#g4sh&zQ z5^F&C*4A67zJ6(ybQEys0Em=ybcDk#^m@{Dp6qsRKk%-+yaQZq+@}0Hjg5M%xb`q0 zpac@C17(KQ9`mjb*Yt|Ka)zq|k?|mLe~&gf0YC!v_>t%YFRN9OQS39+s9UPk}Q7|8DbDsJoMZ` zz^DupA{BuvW3=9_0x~SmMLGd@90aLQmQII}+yAU&!K-Yze0;_yuOoze6iw1CG1?#g z`Dc&dsq0{c0eZD}Mk~Arn#lSkm5-&gMblSl}Jdw>&IXCnGSnYy$q3;umF5;TDo1|e0>QRgpD$;%V2s#j92`c zn#*={zf~U|VlUK}k%Z&+^pf>3PNJ!2=eW+r7_IsYoz$F&>Fj!6CL;!9Fi<>XJ z0@e-HL{0vATX+a)A}z>e_^?MU!wHVL++;ZtmJUt?bQb+|32jaxa)bEci&$4~l|15h zHw@q$5W5jQ3al?!Tt3&5so7pANRm-b0hq53YXdq2G0@I#09O^cLy>7dA&4v@$M%UC zQecI8L#DyeUXhcy>E6FLjnG0{?}eU--fQ=rgiDOBSlf6}dL!}{ly~!h5k$2V!tsFe zl#xswRc&Xq+9NDi5CB*#71U)Ax~q!FPmmS+1C6pk@QdUE?g+(I1w9K1h{!r}8cg?oZ{9T9tLK{S+!^W25S;+Js0oG!gNuv1w zh@GIy`hWRiZ>v9QgLF@x^mz&7JeuO;3M&x}z3e5u7OwNr8>PqD{G$<9O=+VZXj8rl zyRVUGLp+R>zHN>{Th|EIIHXb@z2C^&kh&NgoWYEkl>lWp8P%-8T@4{7iqO!j zBQ=O5u0dx+A(;r&Jq(I8Ur>06gvj2YK!U`6`rRds7{MG=cGk!{gs~&6Bf*2{lXk=s z4RHH;ziWb}azW*uc48u?M(m zKr!xZJf`z4OopaZZjs$r%*jCZRBfUVgB+kquo(9^JYa5olT=3P@{Co%L4wJ4$j=^t( zr9vt72U{p3QtA z?6&JZ)pJo4M8g_O2s8~uto%6X#!@0W34?JNxPa(W7-JYkrmQ6bgJ5%M$d>m@fifZT4 zQUHqahQVu!u3Le28}WTsh<>v$6Y;W5K@GJPm5rXEx7?$UO<(C~&P34oeMU1l@qT+EeafGa^1Pn%}y(&F{qs9wOl{u?f(Hh=|Cu6TLg?YwOW7 zs5alBX-{n!DWJfHDZ*G3YoZ`GcqQis61F!>wPPP=uVLkd%zq2z za$FHeKX@QmXPuCOa#u{W_`bcsXpo7MXidp|#v|{ODhLeN$?Cz9?iGJa>1w$aD;7>H zU-SP^v7nGii~U>2#8%5i5EbMhE8MtJiNKS8{p)2#V8wqAHdNPq>UnD|>NPnK4BbpZ zgJ0#p;^Z_gU=9>0M+kW5CY?%j0`PKl)LhLXWH-!hel$5Eiz(Y9-XXyWyMs$9pD$7` zu>8GA?X~|)*}f@LL&(_omwiJU^?V?ldMQrsm-hPT0@$ z8zO2>5j`NHH5;g$)(ouqd>WkvLTsNI<$oDHs*zV!9voQ$%8j+~@Z!+J|Gf14_tV)( zwc&|(d%f0%X<4r!R!-Z>lAbrkx3{c)54Y}K4KzlWJoaJ7?&4Ah5iG#T;A*5SFIfH+XgAgGv4zx~-SEC*8 z(~cQ(N|zoAU|}2dAeHcM8)@KGHSePuif|wi0scb5=vWAq$B?%S$}=ubMN^~yK~_Ay z_I+ zNURwc3pG_s{7aP5=+l57-4hPql;2Fo+KEr$ZZnE_&L7*vHMWK|`pCQ12F&M5m9fz)^3xgp4o zS@tPF60<_~mWk8ErI_;L1T6hZMw~8C`3Lr28>hTHjOZw^0cxL=DCklOv5T1 z;wNFXSjHjzJew|>A4w?<$K|Q$$C64yqAOKHEl6WcjalQC(v=({te}gqS-VjjMx@0F z08jN^p1x)t*A~UKS8W!IN;!Ce{WxQY4szbt!v#l-UOC);CJr-AkpIHLXRlT8143&< z#{LiF%Uk(sUbGcoybtcQk- zmBR^gnAX37XMrTL2?sXxZ9EfiUjF|5+rFNIm43*29zwYJxfa{G7Y!YltNA1y6HaPr zwfD8;W}b+(29JQoO9LjM@c4)$w&>_UYd?m}P?}`Ty$B|38rKJvQ4tv$ZQr)d1t{Wv zDuh7Vb2^Lx|$y_rQs3(7tG^8A-)c%LvzZ4qoe`@G=$OVg(oHy#&Vu5O%|#mA0*`9?FBUN{<`nCM27 zPo%faQS>m{dR^>~bkJxgj(Q9_AR2cao9UyF!px!mfq@v(6z-F){ASYV2_54riCR`} z0qMZM$0Uf7Zcvwx`6#)M{Md;GoOQf@zUvrC;~g{`MJJzFs3a;85q9k`oe95HKtFpk z(?=CLo~@`p6@6ui-aS=OnK{g$QkvbtYnGtd&8sOD6@*n2KhTVD?g#qw=k`Z(-xlEq5(z!3jN4A(n`;MRVH;bRH5z< zuhs|+2f_WETm7(js%YfG58A-b9UL-Vztga|0J287y1UP|ZVV#*#Dfl;Iu!>2hdw&` zqqQVy2LHEDK5=AdEJ_+LWm{08qdOq8e}6aNg&pss%PkB#Bf^hNe^x(d-mGXsz(L*lnphZMNSGC#5ZqVSamyl#=;D=RQF1rA~!~`(a@? zd}~N9(IaU-Y9v-&ko?js$JXuW*7+QumE{q|@b5-T&bJo0k#jdlZ%{P2LWej5i-%v& z*ka?6j^wACiW^K&c0BW>WOm0{RZld}#8vqaba&IJNwoW$Rnm$ey1M(PLfqD72-)xw98==%76nAesd^?T(9&ZIhdBAZlV?V=zm(e3+12RkM$Xo>|DJhq$iAQStwPtP zP+l)6I*KO}N60}8-H>D6AU`&+{W-P2_(N5o8Ah`@1JkSG$UA|9L%?c9ZluRVp#9T{ zm^mCPS_v1C(|VBxZBG|b(Pp2iCN)%~_u$zU8Vr6nVd!zN74Kw5J1+Q5wa~Z~rBFgz z`whB8=Uheu%q5~X53AnwTetwO>>8Bl8kiMcHqsq_O+R)dH(`+^z;6a4_Juvj*Lnnczz`dAfMy6t9{fQUk|hd^Skm-6p$A1p#%S%1<6dznS98Ui?U;e`*KH`odhLos`IMC}U0b4uBMxqYcO_P% z#i^wA^e=KcBI)=K=Fm>dW_w)a$G8%z_2x0sWbITWt^b%`vpV(U_H`Ga(JI+`ZZ8WI z{nxSox%M-j941|_@coYWM3bI#^es+exwg{KM4NK}{aa&)oG^XkGlj8dGnb~*u(afw z?siHg%Pdearl)`HWwmD_yZIe#1{z_0M4Lvm0{;hfIM(o3&3t~M(SA7aqp9%1i^bFF zI!mw_#v#D}NXjor%WT-ae4m-;*Kj5kIeY_4{^#aVf#ZeilTXMbx}($HiD0EoTLk*? zz|uIr%nQElG3-+6Q4!@HTc0i0)Y<3u!+yZJ_@Hr|T2uhUAeBJHUh+>By!SUP^3thv zcl$aiHHz2u+@v`>rcM&rrxC#LiNjP&qZq2DUMAn@G7 z@BMKS;<^au>tkqCjw2q8hvr&zzWDX~&GmQvbpp>S=i`1`N@FVFw^rEhCx^=?7}9r%Ut=%`w8!M3(7Jm&iD zK1|S6^xTX=>p>PYlaF{IHqx9^sYmVa@3)|Wz|pABG~I<5IR;aK!v#8qq@r*L=s#Uu z4-odRkJu$p?g{F*+~vcg*n8X9SDb^a?JS&+uM_O5fuUhr3tFOPZz-ilWu`6sK)ao> z_0z*1B~LDLJtuv=t7mR{QzpB|yDOgqBE0Y`yMpR?SfhCMTjoE&I;?Og_r%#J5!~pr z+jv!|b#aOS?C~ef|FVsUF8P5*G-?%Q2k+NfP)R2(pS64MMW|IP4v^u-#HH4fpk z5`?9DJ&JFxBZB4_2~4**Dp~pb6|n6&xyt7%T|JFuCHcB)JebSs3?x; zfSw+kA(#00_=}Zt{TV?L_t4xbB-D-KhcC^|b`Cs_I-b?AX9zq=J4$l6 z9QrtaP*KF`^EgrEA!PL3&KA9`t{2@SV<8b)p8(gcJ%Io-nV5quXA;_ z$Y7CI7!Cm!K%D-kp-!X^zjKa{zL`()Sn5~PCpYF`O$_ZFD3e==F-B!V&6P4f++*rp zufr|9V7xBT8byRX^3)o@96ir<(|6o zf*eG+8TQLt@!+cK0ytJkoYn~|{owfHTvVFf^f=q%`>y(uQk8rjIzP>z|E^Fc(`i_i zVyGNbN&9msK$?0y{3v=Yc3f@g6C1lcd_4B!xM)(hLb?~8Dw(~xtCxnbk9ZbxgXj_Z zN8-j5jmp!sG&AGdbobeOxbmbE*GJ|_&(Q4sHJG^>d|BD6q9SUP$Bzm4IV?%RvGvCO zex$87R@nzE`u(Pv|KOCeUZ`|lk?x-+K4Yq;#r|^OaWVfJ!xl)VR-9Y@oKF#5AuitI zNWe*KV>@4UN(Bs(!>A|+cJF*mAw?AzcY3wrlgu2(lg^PjsHRb?0|x$H#@NYM8r<2FY zzf(WFGoxOKw4h~$wY$5nid}qi!x22_1(;p>Z~tCv_q3bu@y|cV{o`=9$%zvuybN{j zlkho&nOl%Iy0XA+ux`&8wb(ZosACo6)Od`r+3aH1e^w*$b?yJabFMTV(z^zhzPGr1 zwSg(Q2TI^s{lUM72Ke99|Fiz@A)Hx0i|x88l=TP5Njv{(eEq+BA?vAIDd`$r7mbPv zq1#6fCu?0L{jT@izJa4^5OZ@>K1VO|e~`nfcu?(JD>Cat#usY7F|KQA?RDJxhwq04 z&*G=*=~Qtlz;!bF;V@2GEV?CbMo zxGg|GdJM-YzW~IzG&4#1{QJhW%Y5JCBW}L$T|D+(7ei5tV_sbYi>q>i76O*TlWU4_ z?1+-{pm9Z%t4xWdtuU>8et4c*9{FEd01Ly|Ex7S|-jYJ*?F)8`hYXnMSY+Qq&-Lo! zRZqk+v-LhjRAoq~^N&8S4!D=DJNoPu>$6}PPW{*|!Ai+p)i+Hj0>LD zCW9r>@BZ69%8q-(zNcQZKJrZ+6u9cmxNvwyaA0r4Kpwztmc_zk?$+xTs@LWb3?#gl_5x(@E{5;4`is#cTH$#Dw4cdL8# zZ5}g5-VAMs^`aWpPOhJ|uuqEnI?1m7@OE{P=c>fTUg^u&+}_apn{+SD+eJZ0-D!wtmDL_B<{VZn+ z<$JJz0=Fksb92q{SbgJFuI`=C+^KAnN6)(l*lP^J{tHl)&pRGg1~lmG7ji@G;~hWh{i#Ya*~B??KFrlgQb zLS-3BX(5$;9c#*3WM4*FY(gZ2zx!g2SQ zHW=^)kA4%DyQmQbSGzXq8T-}Qw!aB1+fh3+W!(A|Q>KOfpKxyThnyaATZ@2RQfNb=P8eJ}@rbhZi2J|@+V zqAk|||FFyibMJbUK{C1xl-{h8@Eun!Up^pMRJu{K?gYqsAn&ns1S=#!WwZzx1t!#4 zO0YO_53R(E1^((TtjBKdWe#gsv+1W+PbaTIveJBz>U-_-8THgepurzGdyC;voXLM+ zoe1XH9#D9RfbAe9UwHBU{ah><65H=}0V^@u;7t~K+@2iz#3d;tDk|y$cJHn{b&%x& z&{BO`k>6zzmiFt0{YA-+^mdJf-wr+yO=+A8L)S?LgdA*X$EY>qfW0GEv~q z6bv4%xb~!CVQomk>+YAMT`u0HNbr6SA+pS)up24^n2^VZqjv%G_e_bfBv=rVsm$K7 zyEQIgjsuq8)GC)xd>n)mWv*uO11oyNTJb>ZLtxUUqn!EoOy%|# zZv(pn4rn-)1%ANqKYtGKJMV*0dW@>4XWk&+Lms2vod>8TX5U?YF#HowRsGQ&2b7{d zOp|*xvO*6nP*B?}qyj}E+Io6q06?D>YjRe;nB2BH1DN0oz_7*0o@vZi1rG_5MhhiJ z&`K7AC-mx8m+z=n+puwCJrp@P$)@ptu&@A+0dDbx77^iv{bjT@wwsh*!ehhS18?o} zGtgG&Rcb&Ry*-ouvk4`$M=8Xizet|EuegX$pI2hwLMA~VHhHQ|O)dat9oP~OPN{ zvJZn%n7{2e4jBeQQEU;tyP~2(Ufv*NH5@(*?jf``Jtbm5jn~<8)=GTawr%{JCxBd2 zSwKaCDufoA!uKYKaXl$x2&bs38u+S`>2B!r0t5#TjB`-TP(|fiS2z{)NN4mmuVuduLi41!bm?^{WO?Bww5LEHnx9a`k|QDwvsY&FZ-^=3D6Vm5a{?JxNIhsTE?&v-pQVIX8D!0@`6Cf z?{axf^fa<#arNYUkG32^YIx?VJHGQX#64m*cJL7+Sk6)S+)gBFm~a*`?(x3uefbF6 zrRQ85ovrsf99j~mzNIdcvgoRznIn#(bXUFFrC_z+xpfUh1>6@v0VjgmVKv z>_|JJp*ck0BvYFwqe(IVZ)Wyd`T{-n!w(m3KA4hwK+L8(*O8idBucarzLDB_4k!*2 zI;hIi>;^1DTu80vgwt0fe-L^@ao+|Vg!W2=CeYN?m*3LmVhBx?L4D{}kxyrHhMW}O zkuc=mwm0NVq4~)4%O*NDs<-dDz|L+;NTPu1$XzQ;#(lV0JdFJEDjmt3Czs1G`huDK zmbHZBQ@RZIpTY#w-AF@Z^R98sX8ySo@5qfN6%?M$nD!hktbA`rM-h=NM_$DUw1Q3) zi<6I6e-$M!I1sel1i3y9H5dKLC@(KhnN>>iU0oX3Go6&POleVEmlQyjkryV$qA!Ac zC$jcggmy(kk) zmbw*4W5DLTfM3g?A8b1(AXOK{fw2l0e;)P(n)giOp2OqAB0!zJ?&dJ*@_>U93(%BS zD4Daebxd<}HwI%<^hf)9rT`h5oI(q}eaAxDE{ZRL$q7F3Zo#N4LE>-NfCy5iC}O;{ z1;|)sN_i67Wp9k5boo(QB7T+d>f6U|P>7g!8yci5L|{tN;>Tw39JmbJ4(Jy_Ns~P* zmpIhGjq!a2x9JD>6&a(JNfDV~hJg?N^C&LxE&U9`N9-vz(RLQAWg>TnQ{%q;I+4x% zXZPRa!Yot-QN@)zJ}X{eK}h~+Tl*jvrq!*B>##AN1NkUbJ|KS`vtW&?sbK!EL2E7Q zM?AV~Bob?LwH#U1bn5(0J=Ike6Rj2@xJ7!g$O(?p^K7~w)XK3|<3Qc<73hRU*M2Xi zb3L;fne&4mS2wR-=sR9!Q?wI1brx}9;%kVcJcJRi% z%XI{!cAfZ(GeqKo(9XWNcl#E6)eV?Hb|Gvh4<_K72wx72%=;|u@5P)TvRKxpM%AY~ zbp&sYVnDyd!$pic9-f4G%_^pv&c(9g_7c;_Yn>sdtGPd zuo|yBWsk4HGz``68V~6htt~k+O=5PXm^H?5`e>Dk7X<^*{FHjC51LV61gdWx8sxCv zf5Gm%U7ksOGx$nQZ4LM1$$XC3O}^mqDZOCNmF#bL{=N@Y_%L732Xcn+f}uoRbs3Bp z3E2h*4Wx*0-ar*nXT&~avbS;F_(FS?@@+Vg;y;m#Q$BE%D}{g^K1AiMnj5bNx+wf zy`eJ#Qz)9y`YB?=rcFzIcO;8DQZ{tkyN?*x^4tzxtj%MEn~LGzFfixwI!}0RdY2Ee zc)@4L_7}Xa-z&c8^gHGm^s}##dOf!*&HVlx$Ftz1!$NDO0&5xKn2?$Ex_^C8jii;{ zr5KF0#sJS%#s0?qP#Aov^wDF{eqEZ*n|NDb?d+-hlj+1tHNQU#CmB~4T0{MNlB+zd z-7f!let!Eei_?QYwB!b_JFX6P^V6|c&r&Fd5l+lzs~fn#+T4U^6~evJObp|!IdldA zUhBWg8GA70)b5noEW=;n^3D~P?WTYI#W{jKtGYMYveeamXWGk>s?KA zAdd~LeU2=vvKJ%t#!?vc>Nx^*Kw}CMCT3s|Fz+tPNLRS_^ecl})za#9zQ3J`z1*`1 zJzknb`S>8r6U~MEWkXlw9z))$1btK#} zzS~iG)u|zT~=GmI^(PF-CS>TpwL~GN6CUE^w9i`>7>2it%w0R=f6`gS_eV zDaN;PPEO9WK_6aTUU5$f@;^2Z40j^OZJ%*xen8S}*Y0MALIZek?YB=N(hOxU*8amt zW3AFf%o_RfQ_D|QE}QuaDsmMO$iLGZ4n9f^0-_JFj3HEu2IEM45n6Iy-ri0OepNys z>(5!j(vMIwbWB^Z99r7j(-edE#Q8lBM8@ohr0nde?53tBg`>8abg+SN4~dL>&>0>O z5fp9IFes6kBAt>)%zB-)jDM+eeJ@Rr*KjIa{2GKB6=^m3CDB=J{nu8A zLv4kv%3u+YILo!zJ`v&3+UL*8g~+1D32HCMl-FU4y+%L@SUTiMw?OS`MC(JMC6{%* zw^04RU#(qqMhhD|JvrHv+C0`rINU(m;8ezWao;6~D+Q|K07VyeUAHn0tn0RNdviseXw&MohmfzQ`v1v5vMb6v58{^~0uFM06rVUsz0iuhVT(7LECfU^OOESIQH zz!WrxCfD0XqpkYr4uoS2{bU8ZCX6!HPXGOYsw7sUu6Gqy+D)Y(m$O%Ux)6@Vt9( z1F2a2hEMM4U?^gT-sr}C4US)obB#r?d1fPo@?PeX#!Dj*5)$+ZJK2$Vfc6v2`ez%l zFA6q#r63P*&kbksyRqGoS7|@pv4(TG*(gC3_bSo^PeJ3nz1SkSi zik>&kH8Wt6CaUm&81_nM9XDP!{!Kgj#$-Avsw_wUb@_qn>m=jIWF}IF>>nn(sML`VR|%x(KGIf%wk`~j z9yONeOl=sc%Fp5wF9a!QCiTLz)+a{IlMntG=d7lyrwBl6)&WdbXKC3O)LjR5*u6{lho04yKYmB07QV zxZlo}AJD9x%Ouys-JrKU>;A*+E8b`2sDM9-zp3s~mN#fOe=pNi-27Z-_0R`YzRhBa z6sayc^`MOiHSVDif&ZCBV~Ou&F2yHA{o z8R)pe{)w)c&=kZ(*85cLhH*Eq$HXRNuJjuoZ62#QJH&JTJVSBQ_vT8DIbMCj~9{@%PE+xR9#Jut1O)cn)b>AEo| zG7C3l?MrZg^&)w#ZA0lNyUeZ-)E#n(**8pb0&?V9qxXC=!}#+I{3{i2SwR&oHfJ*2 zP=glwXd9uoC`esUd=S-qeSR-ED~gMfbrd?bsNB~eGSib~$tW}=eC&CZOooo8fv9M6 zWqC0Q>xmM7|LSy`6|ZA?vI%#<5qMU#e>KMXUY=_JVNcuL8p5@&iJOf1XOV;|ji-b( zQs%&C5OU@mL*kzj(Jqp2Zn*X^Tbm=a1~XYWC}?O^bc zIIeeuyk$2)D(*8bz0M%(*5Dl9Vscv7=;y_=*=#P??`q6q?lHv4b$~_6pX2?fyYHF< zYtW!KwAftfSBZgO!%7(U|Mwlw^4f`)d%S)2#0m5BL60X}QzNPmq{=`gg@?}rVhoxx z+2o3tQT`b~Y|#=3JGAF01vw6J4OcA4vz3m9w=C_iUcFjRd==^L^UHAW)<}{MDWQ3+ zK;TzYf!*cHr%=E_8QrHyv+7%U=Ae)8GUW>2A0L)kw|pvbs+tHN2p5ZkvuW0il7x>% zNTr1PmRaWBe*M&DOG5C*vnpTq$S!YB@Xj%uCkE|87Vfda&Nli~oOm^ylgZrlCVVTw z*ymW8kyW5nT>T&=zbi`>$TbfV!>r8ta=JIi)Sl21{Gh4zp%7(i;TeoC8iJZQtFZmE zM-a(spLmuyfB_6|Wex^Ju*8MM#1d|<<@Nuuh87&A2{CCP#ZZAY$J_z|A1gN|0MF0) zv7yIL$9$MBgNyXcbA&wSY5jB*pG6@y4HUM4w zVeG}(-7iwP?stq4Xk)w#!rlr7ZJ0I5X6;0HvXzjA?VLI4^S!rgZF46LtU?~&wG?aa z6MQN?^}gQwKJt}%eWBziL-g=f>(5*<&+=u@ZrX8J0zx54aH;FnVA`1Bl(=pz&2IU@ z;_WKz%a%F!bQu4Qg6t}EO}}295yr~Bl{iK)3=I2CSD1nUs3}L37ZV-7R#b$v_-bB0Uf{c@Ta&%)d|WP3f#0z}=Ys;w z2D!w!g){H33?qWG;ugbX!lxy?Y;Ecll;H_&CSAtyZriN8AS2g3vyli+7}(cf3`~M2 zC}~IR(*%cN*yG5{xOb)rBhGwE2M$;de?1QtHEm%*^y`R+0L`?(t{hP#&Nu%fj9vGS zk%JcGPZ^syL$l(0ycZHlKQ4=5SZ443o-ZiLGa}5g4UR zA9M@3YU<5V-YIH=PZC2WeR^j*(|TYS?(x79mMC>HyQ5?OYr_Dn8{ioJ!w*{Ntz+`b-RZb--nxBou7=m@FO0+Iy^3 z%UZf{`&ySX3_5{UWuNvYXpxD0k=$`?SRZy=c1ANy%3d z%$6Rz$ZmH-`lD$CGltxs?#wg!bDzvW{dqQ`->J&&pwNHH($72 zqWg)_hXg}+x`Rk}4IwdRYH=4_Hp#kYQ9a>776JU3_Ydut^IcV{FFsgmRb7`{mwmeK z?Q(zB_JOu;Ymen?r0!>Xc4jUH^f_N;iW2jbk}QZ8x-~}Zqg&pgX-JcA`RlL7CRaNa zkRQp0EJsfHi1Zr2gk0z+7G=*+qJkmD*y(0Q=NTdq2~`3=`|nS9{+0K9PPl{iipPW; zSjpePkYZNa_+l^{{_oon@)mXam_Wk$M|JL-LQ`E`xF-n9TKg|XXu}|M8+JDzhN@X_ z2sDo^EHatQ<84whHa*_7?e)Z>j-K2&R(ks>w!W1+No+R8dfnuhd?{ahvz_lQ+0Q&IG4H6alFIH%H8sP+^PAet1iPdV|m5@NIBnA?FmJ2f5i#6@^xBT zrE>OO>+O8sGJIs`g$wJkYx?`1}=wm>u^D7a|ds6idEi0m4A#3~5QD=VlL zbEY(2D(k!}g=)WlO*9B^J!rfnDH!FKUska96#U#ue2!aamO!q#{VpN9RI*Xb#Z6eq3{wyHZ z)G{jjY3+=_`1T(tI5@hlm2X_wu2 zzs*i4fW#gjgR35L+VDh(pjFx{_$+EWO_yq!+WOHwlCo4awiWIxZx1TA-YIn!mbv@- z(mMeU=wNNF0qAy#l)|Hd^mkjJzM&wqq{N)L<&<=qgDJFtM-KqJ*5wblB_>let{5y} zXcX+bcQvDfz4{`UBxrtT_unnGQPOt(F@j|(9*uQkj(yITB_*G)v=0bYBj2&yx75>E!i7J3N?Bd#)axS`~RXLTg z|9(C7JNUzbKh;Fa_BpM&ZpUG41EUxIAG?D#|2`}nTJpB3kwZ*~YJ9a~|MIL$cctLc9>zfY7{&jzELG4j<7&lP!crK7+~d zx&-l>_JnzLzTpn4-7ppVQMU~J10$xnHpJm^>ing|@F#6*?YL+E9)f%wQ0fW=dJ$GS z|2YbIDmnZvvlZFLCoB}J)Muxg7>QG#zd@#QSQmhIVJ-YO<9LLYmBiEy=GdUYas&2Q z=hK_)T(43{&d0XeodD~x&tcj90|vef5}2i&MM`EV4b*h{4BMx9z3T_e(`JM(_5n+z zWb;axGN^bn#NAJTd#8A@Iz2!*nqjJZZ>t1HIN_S`3l}BlSK$0h6KI~ng4R?2v%I7G z=Yy(qdH1%4Xx_zPVd2Jv-{9c@D-}vCeO?`7->X`S$vuQB9EuV~W1y?B3>Q~lIs*l4 z?}ry4{ilato~J>rK>x&_KdLVk*f0-xMhL+}|KH{!xBDW-y+jxZ0$jG$gHLM;;inK? zsT>t&bt>0j&L-i?qpOFgk!ZOIWaOe7WA3#Hl7Y`@T|@qdn$)7R%l8{Efhp$yUl2}I zTKEFVKxIB+toQg`UQ7yF7XLavkO3v6a*X%gq`9NP&(E98R4W4+X6>;F*^s8l@C}e+ ztP(8l;sw3y1CDoKdFR-4@YRCT9b6&*^Sq<+#m@Z?AhI{`5mJI3rXkT$vX2n16ZwfN zNlH3qKp0Z|6+h0bmrz`D&ELPhP$iLYAH*tzLl&FKBc>9m&1VS&aE2`ON&5^@M*p>?7j-(=;IdBnrkv^^Bp^KTJ8FY;}$1O9g-d^l%*B@nuB*#t-(*7u#%d<5WuY#rEu9lVbjxY z`{OX3g?*6mQhhZ@FCeXFkTQ<36ALz3XG3slBV?&|BFbEn2qvVU`ETWkNdb8>1@nzU zk1F^)yfhSC@ENLNboMA1piw`}+&@vjk7(3SB_5=$0dv`-10zJex&d{Pbjmnj+WZ_k z0EnL1F7D+^J>Eqb%GTezHQ4ScPp(_|a+|}1bJk<{G-zR|58)SYmq93wu&o?Lbb=|1 znH%TG`vZE3MXn_!e`qy>#*8u}a9C#piU_WI5w}NR0)o1FyId{^3BNum(N=NV>9q^B zK|eS!&%_L*E0^z5!u;Ki`^7pg-H9P97f+OJjE|gYbHRPEt0*Zcfd(7PL6S~8Le@>h z_V{=7_4OTRPa6C9(4IdV7Kc~=rtR(e8Hp@n`lZh|{WQmYW+|x>^D3xku90+Wag*=; zhkEt7Te!4m?i1l?Ou@`647tQ7cLR*0f}&C{j38Q91h2sv+nW!2dHvK*nl*+@k0_NL zN+mYaO19JP&S)xtaac7e{{ze>T+#2>3|2rnx$UFlEp$y(+P86i+|G1*%Z)tD~ zyt|#V6kc_6)CHfs-&WrH_JVCxhJMNUnAjW%JB348&bZ2kD2l|t9wA|81B7{qk0JIu z0^z2Uc5-__VymZiwDW5A5N@-`TI@*`Ftsrn*{DMoT(n{ng($|H?nIyJ-{PW1ifeYT zueiFZJr7PvO7eY|GQ@0ILmEQ8C~oofGn<{@s}?AR$z-b^Jm^tr&(Yc4?O&On)&IA) z8jGzN0>pz=?KLeedq4-DWNIuRP`Mu-4n;_OUxLt!NdzX{+He0g%H6@j7j*#we8%N?g>!rra+PEKD>p|1(UEj1kyRtINNIC@kXkWxIsKG2lM zitidqrP3lm=wqY+P6U{TOi&00K+I9RT%K&E@rHgbvF+QX83B5FF%j+*CiHOXIh)z?Vl4vt#}ZBl)gYvj@nD z9?E@N1|%{Ej~v+ta0I}BKqz-tOo(|x8xsl!8=&{gl?z0{^<2BC+S=Mr!A$!K&9&-h zwLjxoGsgkA@pEx?NcgFMfD%vW(vVQ91h3)X_Ir!a!lUQK+`82(PgZl#ey4)GJaqsn zCH0!VeLDp}4=DKCCR1+6I`;hPkC;L8mDdAMr;Iol^jCC%oFxFmX&jUjH8wtdl9D3l zw;#@WPFMHoD>^tan0HB!#WjomN`Ub2D%-pVwL~ z>$aYF_7`8+A%?zr?vlr1n#R>dB{Onc*H@EE2n}O%-H|iZ-SPkc03MMa|B;1*05EoR zQFI|YaB<=J^PPbBig}_Q^vPcJQ_iCSL)N25!cfm{a5h%}kWeUYZSm1~+u=aISZGtK z_xSN+dlwfSbr|E9dg8r)V^7b)5TiwsfO?h2D&s=OpAaQB2q{IT4Xw91GvJ@8F#MeK5oVVJCD~Es{I67S*DNGV1q15`FJ)}j@;BbMa0GaA*0m2ek zBLsVFOcSbX<)J6KHn^1q1sn_MKYlo>si{GJy3~4+26=lcuk`K)`rC0=C#MI$e%bI9 zD{f(Z|9&58!^5HKXwItE7%JSJ!jxNBoSz3`fS5yyiV@)`4iiO$weY=vfc}4>fdbU) z5l+njRY%8P&0V|TH6`>^Ej1mEKLU`xCV(_OX=%CO2s|$}9%6!@`d9G6p5jsPQ*4;eQYe>l&AWw*u-V=nxW?1 zUK=(+nJX+gaw7-e`2L2-WtAGD+-MXX(0~WF0SE-|4!^%8YGjt8`Vk>W1%S~XJ*5?Bx)$^xR#X6R@c^6A;wNC5ad@CsX zc82$3)uu`ZuAuu=WZ7*kM#92Lx?&3iL348{=j9S*7(XcGJQkqDA>b~`>1vvg z%QXW*`}W%D8y-+#T^2pGm9!anM4w#Wp?&n|(GTR;kDokIJ)*8|75L{Uf5cXCE^%@3 z#QOTvF9}-aW@i4iH8nuYc5*avB{fm$i3dt)vWS4 zt(M3X6N}>UCEH z^w}SQVpHzqQl|QmBYqckE7Q84MMYd&I6Cg)W5TT3ox2oXp0jazHO3^`L1+N``ozbK zL36b=x$Ppx1}Zvwm7~$wAcnv~3WEqu-9h{BFW}JuA`9wR2#M0dzF6u>_? z*?Xl&{k-nB{ul>Jj3KXPH+*MjYJ@^UK;ktyMMo%7xtCxP{pl;|xNK2F{KD(B?p;cX z802yxkC2Dy2dMrceWW3!_}<;Sm+$q#HD3TLK~Z|Tqh^bEOs#{5$3^ErAK8M%A|P(w z1%RqDY^8raMpXg%pi8N$x<%H_sICW{ZAG)t{G|2r!n)I`)*C?~S4&OrenzRie5hOG z-pT3)8W{k5^(gax)~yRS{P{gz8(D;8R(8Z-4MZ)Z3x8i5=yEBvC+P-uVz5{+q5a3@YferRucRx>e2F@GdJRCK)h>g*(Mup@ z7seRRbNd%~Rp{o)o|SEoj>x=Z-65(X7=@;m<_7No|quFjC3`iL1kOr#!#&6#qma4<5gD;1UuMd$zr$8yRpg65R zri24^27ECn$pEWsXbOK=QPIl-td)kv8%~uo!3M7Afp2@>6fS_?-uI3#CLS@_b>oG$`G%AucNs%grx{p8#*dnGJ2d(ji+K>qJt{TjN`R zrh!UHBz%1Hn9zqC>pGt$2fPSF)lPxf$M8pk&7wqG+riJXq{(PP|C*n9H(OC#;8ycW zu88X@O+c3OPL);Vwy)VTH6t^9(e+I_9UO@lqMCJhjP(NQ(JC^2 z$Iw*tSTk!q7H-m_a$P?;XYOEAgKM?;1^{9ya*oA*J?P9E%;rJAAAx>V*>ht=_E>j! z>{5-f!%s_dp{krjHqaB4Y>c1HO-3_#zGyAX`S+RPr8qm~lR;6$K^pF~i(LSf;!c`N z!MS$&H7oJ)375!Ak2R;nE-r{@IZ~GaUD?iH`Nz&VHlK2_EBTO1KJOBBdYI%7#bqJu z&ai<&tQH`J75O`YuDlv<_J6(p!j|P{>s16Anz2bNvOx;*sgQN(Ln5YP0*%$2kDE$X z0f2sm(9yGOgWTkq=@FSIcHhGyvR|&Rl+nV?b<-wk6!rted_o?)0CzN!>ZIgt_km8& zTq@buqwG_6yTN$)m}!ecK4xpN>3q;{9^QwgaD;)GV(oqk6K;DL3Ha^MctOaW6C6sb zSze%qLhD4xt}q>{a*4AqxfJB_OUj6~%c{Mkp$?T5XLez{1J8)nKP%p`M5)}0+(s72 z(oL$QB<TX2Kb;m-E5G@(A8_GZu5 zGJ*AAx_ppKA+jh&0#PeKlXq{{E>=krsfNOz=o6tG1ofv1f}|glM~CpUHxaRn`Qh6T z+tMB$eYg54fh_~T1Esb#v!w54jl?1G<|FTkg}Y`aQ(1MzJu{nA<39y>h81Eh1juSJ zfoJ75IYb7PZ(l)-m^@^U z{Dckj6=OEBgc_xQB)a%H znB9eTKN{?!(PAgen~BBjqDu%=3_Y^|13$&t!oM>tcQOQ;SX7V+)_8i7gFTP zy=slcI=3X2DEk<&^rZ}~`^$=74wGidlXr9F)ZYw#U4B1JA7KPp>y^?|qg8U^SxZuQ z51mmw(e+zVl$y)}tN=5)Zx%_EwK&|zYioNsLDxzF7fG&zDG-W!cz{&XB=vx|G!WlY zG94$^!Ebl(+?#O>}upI=4@GifGCG#%*<@eA27YI+O5=KQ?*G zLE&&*{#8cCY&zd{zh8;V=NSCUMvqnTMAitO7x9U84v@mgriqXjVQp$ayZ)a z2W1h)-1qm(sNApB^*(~7ZiDh|Q*$vYnUb-+Cu+6t)T~OR5KF=>cKFwt1jd@{?f5AE z#T&`k!pNntzL;-?^FavUDtPI)mb(6)YvfpbUO(@jh_meOqz&aSXqyI5!4Z|3sot~{ zI=bprH#<2p*EW#qNi(!uYv#BKQha0L{Vy>z?%T>xW03i_&q2Y9maQ87+q84JpGfK% zpt0i+>kl0L&oJ7JsDBKEJd02t+W?*`r+k-%v-4yGfSUS&@4(I#4L*ST>@%;VtQ-|i zKS;GY@6m#qLqNPq1IB?kFeNX$hINnqbs%XAbWd^4;8B8B6~zvt5%lpYBQjPcsEYTJ z2&*6Qj}d>UR3Wl;z$D=xXAwX*13+1j@6aIllIrj8pTG|D8U&K;Lq8C-QWR+7oMQAd z;oz6GmXc{PL70VFHJ$_1$=r>>6k=H|?-`K+(My`z;~6R~!F#u^FR#uq4jxrGbr^jM zm0>Ca73+2N^v;4Y0G{Yj3>%)3hE@V^idqjf!uN1$hf$9OUfs(CJWNcD!ywul_^WDj zmVI{wLU&z{rTHsY+}su&x{85wCQh?>OCXSEFovb@#q;=i4RHOy+wDG;_4>_FQ?niV zBsX^OuL7<6b#FzUi{`!%xDAYi&fba(aqaExTY`(83#Ro5-#ZzgTk8S?%XjbOJ^Z2t zk7W?w@KB5$dT@d5hQkTNR&uw&Vw3=fC6b|H=QY?k2L!$rtblJ{7-hopa#yN~j;RY7$Q* zQ(XGGcTV7abBqbG2rGzWH+b%22Nf-sh0l%FpL0iwhnhC| z4SkdO(b6Ib-seNTDfW}=*Dd7R??gxEa6!4ua(s0<=I_aV#LEbs(2A_~(bi71KxQH> ziajnU`Shi$0TG+1N9|KlkL54sTr^Ri{=lt4k|ryVeavQ)L>xQ${l3MFL2~XW`F^7% z(Z&T^*dT?dOM%m_@*gS9eo8M1(9AAd?xs1YVepjfq{EKQWAVD+0^=tk#}zjC@R=0dOfV7 zwPIf7OaeaFp{L>^SoznBs6>QJZa`F*CIt#&X=YQU6P{Ujo0_2rTFiNN)8Y06xUXxu z)nfJ&QTI0?bK|+Y5GKO50(Pr~c%<@y`^<^+!#%ELOaX4!>Hou7+!Qd3+(@CawF&_%4KNIcObbFPb<;ADIJn(=j0xOX!b# z%ZiU{xv6`L-zr(2sJ{vNb(^!kAHLLgqO>Jlj}7N*I!+@V3%$=1SF3d%xU%MO{8@Gq z-;!=^gmc{x?CF$)k-A|zJr9bq8e3(r)5aS-;WunvKK7y%w;l04*I@t1sl=)Lw#3x? z)X=LNZV9hsb~axITkXbP)zE>FpGU~HWH9s~ZaDEft~?<@LE3Mbx&%CEcME!V zft7WxgK$h=5T&t1vm(1dZVC!H{%%gGf&MnGfTOjTK zC1xcZX2S6^<~ef;wQQn}Luadc*2GwO!LGT?)Q0NkcUj0(pXTKq#*ZtgxxYV$debnXWxLh|EtQ{*j>sp`x>Mh043n5Be>Q4DhS)lbh zPiFcrSOtv86dNK(+a$+}CI}5*iO2~fHWO!r_cXG1*f1=-QUdah_olyK$-atwY@_7( zl~Q+nUH7)SEh(r#(%2KUSVBnia8y`Fy;rQx?8Ch*LWVphsvrBYi~M@xzK+{4rp!HK zYtD6&f}G{v-W6+VO*5xjyoyJ%?%~asaSs~h?;EekHjU9hIMqr0p`0g={PxG4Ez{k3 zP;vTe>&Hx^tg?B#b7?hwZhQ%sRP}uw@^FL2r;Z|*Sh~w}zxNk?ooJ*}g|!-De_z9+ z*3v15w3)7G?;e-YUCu$zTT*0$toWEg)+)iIy|Qw0-Tz>|gJLAd(HV)^`%g)r#^>@> z4uX|g=WGR1uRmr`^t(uOCE6cS*4d#j&~TQgrK+mEkJ8?*T7d2JUWwXc7M-B8mM%4b zRdsgv~1Ijh3G2wKnO^Lkx*(M$j zN{*C_jIs&3mN1yQte{j*w**KkG@qh=cQ#s2Zq&|f`TBJupUoB}^Z<>*sS=EGLZaY{ zq1$%7b&cla3%;o6#CX_{YwruAmrW}9C8by9JtL^LHrc1ly(m`; zVG@7o6WQ-m6YK+Lv(5y#73HcHbUiV08K@5&8x;Cur@9IgqIzUTbVk!Ql9IaoVZN38 z2(MSNxxBBOzj*pp>EWf}ZH4eC)Y3vTzVbe|xx(ffdLmD2QT+>U^L`*_^w-$_{3=3cqG{NQp2RC_4*qDK4tq;k$%fuChZFOMx@YnuQ)yq;#-5iuBTC9bb1W$KGb~Y!CdIA&%A}npeSZ6K5~|?g^mPRY<}UW zE5mcHn-$cp^SR`wv+gMO;l@>;y`-vl+)ga~{kv9Z`?qpVQ^)Qr-A`Y^%lR=iHu$__ zy(}%r><6Q{hyK%hwzW94i}lk>Dtkx7I?yIUTL+ld!TZ=tnKI^9>8`Ggll=>2J{^D^WTxz=jksvHshh8K^_uHue;l))%wm>Fi}`22EB&zfwc$H8 z-)(g>Hd67l>9v2yD*>tkReiU0y1{iSa(veW^43T-3)V=b{;3Fp#nj6hz0*BiLfu6k z)cN(uTjU!Phug2^?3|*b*Bm}pQ0*m^`f2a|wEm1IjJQ{SRq=9C_uFzXt# z#iyk^esVqcn32<1`BHnEDmCwE8zX6+)vz?yxIWH35+CH3lxTW_qg=a3ZPInRDy`At z%0VHHZ_QP=dV-7&O)2?W1vEVB8RgNNi^^3_JCbbSDXbdu+4`J+9p}BDJE!{=4liz; z7_?K#oRh!DNKB`Qi&PG*&6MKUcvL}2I6a`2e_rk2iL0fZ3bnRZQf~B#kX?=?z##u% z3Taz1U}o_XHmR%o8NKEv!TPOEd`6;}RyNBnVzMl~P1HdVgV+h&m*WAri$ z=c((#9-%U|MaZWYAAJgMw58oy6)67AT0!NiGyCRu=8lwb_Iq4Wk8xoi_c?{NJ^LBy zD`~v@4ltSRnQxP)=%@txP64^1b-I5XWh8;mvoJrFQoTU43zS*GCuG$>aXNo=67Mc+ zVCwM)fg=Z>rI0Sxk$T69;*|;tj0UggtU(~>pPPd#>`@qu+5@X#xyru`RhU8(E3cJ$7iL1Z;2?^uOq#H(PDWsuTBVXkCwbcX*D0v-tSE zL;l1#GPU6%dP3l`ysuASEeTPOW+4juR}=vm4C-+e-VKe#Gil<>5b&Cz_K+?%qm)Ct zH8fGZY(44a`;$pZ$$es1TP=H%!?W4eFAUq zNQ+a!3#S73QS{KM&8xB4SsDqkblCM~YC1GBymiv6jlSS-c`j8Q&XJyc6Ub~%TKWHe zZO}6V?5f&Q=bmhitz~pHaV+CISI)WeN~l;Jtz3F!Ev4($S+(+gBqv^ae`REwbdT#c1Jk;)drF74 z-#ev+vf)lF_|uvl9UVuYZR%FOShMT|GZ7sYwEL-VCbB(?iAed5BOY38a7F7-s?pXV z-lI$6OE5`Pna-nsOC zU$yOpY$U4Mw$(+cB$bef%t=hKA=TCb!?Oc$`zIh9RE%GYUA3d`Nc7I1j*~mCVs6%N zJwiPuYqdJ5as0v;jm|gnrvT&=84{xj0cjV zSe@;2&uGUCSn_vEUtrdH{K>{IPr+hnG97r_zx=0Jyz~%FWWlq7V?)k?4JU?ALyI2s z$enYvD>cg3L~CQ=38rVq&ZWosv#drvld(EOJC>%DFgoV1FYbehx$et55qCSg<1k;~ zNH>+r13C`JtI*pccpg7F*QN3_`dd@e+XVzT^pttiHeQ*yezbU>(&WOYuhpT!UGooM zSn_be%Tch7q#SQJFVUw6Wyo?O@q@>v!y%vbGYr-@UeXUF3&l#E__(j`M?ZH{RgBOR zszZ_HW|OWB&Al6)i+Y^od!`l>hQdI#5WtWhtCGTo#YVIU$Y&iroC4D;3DGPJp#5+H>DtG9#!p!z+cNi4a zOhhq~($A&^5zf4RaLeXRK4$<3wWLPM;O%SMm)+&|4*$NjQQ_o?-SIrwDR1)yrkpE2 zuMZXIfBw`G++JSH*p1B}@w3QYB`ZemFq^{L^B}fav`oQ=*nALJw3;G=S`!L=YZ~2&)w-eo%sKqO8 zzc&u;3VLer-hWIcs6!3rLk;I4!49X5#AzzKo(>Sepi(P_eH`_b@7v@|dQBFNi0>j^TT@UCE`1#`10#_A3rA5 ziS)S$w8 zpXROyt_|fCGT(m~O7<clyVi(M56#?|AL6uxHXsFT+U;k;$kQBzar zU>RliAjfRFDJb%2(o&?3&T>@Xa+^Tr)b~1MYB9dfOUl7v}BLoJ(n=+UV76D_pol=#e>Xq{@-{ZKL>IQE_JY8oO zf|`7A$d3)w-f<#2LH**!6$Zc_HPgIa5+upb*K)VZ8NJyg-@y6Msj(M|v+nA-Q_a%H zKy8ADmZ~)!l6>zCSRD_1OUA$}s0XKSfB(5VyehC^>Uz_N-N;P#Rce8Z7zQ)DCr@%5 zPJVg6o|2E4d;d}n(@gTJo`{wf_=)HC?6H_Uk#Ul3Y~*JDqVp9>(SaGhV9Q0Xx+U}T zr-IXMu(Y+|phrnpN9dWkZv-{^`f`bPQ*W!}T^S?)`QVmd(R1?eZ6&AfUN{LC>h5cy z_chnfQ@$?N6j>%Y4dZ1*-u-hgd-HVv*5y?+c?A4pAo(5pC!F&ylWgk>(;1j-|H3qL ztth#F^R7AmTW?ny)YKJ)pCTfHTHFH2Vp&E7ONbG$20>6j5N$<8i6To7G@?|+0M-zy zq98B|G%PYExFbqb5Ro;JNd$&KMv+A##tIS@Ly#y*Fy!^Ts8grEJNZBCiWAoy$x8h7D3Es<9Sl4bPhfbN&%L8da?(0 zjAa2C>>i+~Jqlp1woXAp~?rx`!Y@ zdfG`+ddq>GU#^q9J(kOLb>UXXs_tg-4^6I1wA|2rlc2MxUgy@ zbOZ?J+uGaD$UpnLl*Q?Lh1bIF3-lvqT^(|Ji$f~7I~yC8)bdTe5am9L4FG#*@!%j` zc+g^Rl~}h8M35dYhXkG@GvF_{;E+l#qZMDO2B{eBMX@T`HCGPx2YOO>4j2q@==q{Q zaTx->+tq!`%{Kv?2-w$4SH@N#W2F#5!tWgv=X7BLYM*4l z+6-1Tk=0~t(tPp+$JrYlp@+GPa_#WE$ONGm!b|=&h2n?Vz=`oA)xes<;S7h>B@$`? z4zZM*3HkLwCwy}iAT|1e9H>3Zx!0uhvU5R4$0shoeI>|v{QmtdS+wy|qA!&5T!GPK zZbf*CVx)=KNv&)I3nPnu-vU?#R6)8rwN*)P*|Fsz0i9G0Y&GGr zNXRv`Y2+FrDbk?rJ9pmeo4PQ;Jj<7luR~({Yo{S8$G&FeS5I1xLGj(W9C_Ci3Wfck zvbFHpr+WBz7^JzCRWOP0kPp#MMV?W|R59Ho&aYSP)-U>)bp9@lLPA|1EmWZX!YhY# zXsjugE=3y-TKKIkulQUmO$sUt2A8lN1Z4h&2;Z9xb>@avml8dhuVuxVj3Hj#+@Qiu6w_b9H!xnUSCy zR}LxN_Nj3#s780V&*Q}6==HJp7CHXBm>F=tsF-DRh}&5_C}~!F>i}gc(RmkZIF7Fm zRm&;Ed>SFj78hd1xPLfqkJQ%jJ6Xgs4hOUVSQ(bxHQWr#T-AUFXw7#7AV%+uJRpS< zs;>Np`=pU@2W3vbXertd{}%4{l!*KW8Re7)@D7P1^WjStOoMr;$C% z^BA_GuQP=dzY-P_?-zy7)2){8%*uaYnf@0MJqeRufZYO2r#*>@E2x#^O*vV;ailYX z$Wqzj`5AqpeF|bmkBFP@2}t<>VZjhnoZ2(>vp(R?-nj7jLT`92z5o?6im+xutdy-r zO%-f)+zFW`Cc=2^1ReL1CG|Hw)rTI)NC!lEpg7t>`JxQ4!a7AuM+Xj{j@Wbcr+R`5 z6uRG@Cr?UbE$XCh-K`N&JccTR7Zjjl&S)V@s_&xeDI`{do(jhGZu0(ct(cgm;99>< zHarR%iNS)dePTUjaN_o^dIvBz=csoqoWpqJ@&ZQNhbl{%N3;1Lca@Ma$lWhw{Em%Q z43dq&So>j9Xfoc+(-x{ugTo6Owq^+VcFjl*456Xfp7j+qr;QDmd@mRA3+ zQT!#6Hn7gwSfHd2O|bPbnHz+R+ON|P=`@S9vHTPn-qO~n8fW%gv%s}CmuV3dVLbDls?~egXQ~@IRUzScSu$X+*!*%( z0s>u1`ti`aWuwRF8=n3H*+4C(cOfp(a9xm}VF@#auY4sP(2IlJBAi=2fk8K_!mPZeru6(Q zSz;}rALAETb*-yFV)*6rvEki7wg79KOB7tm-1#`1@)HA~GiF_0b9!bAa4ZeLVM1^& z`Y+wgC+{f#Sm^W7L%GpIJ&?N&Xsxp=VFtz@^5>dBm2$$AcLg*+h(tCm;un{SOG?AtP0wTSa zV1cM~kPeB`dkigskjz=*-oNvG?;r1XzEiI2%(b_fJTrObDXZM;UTX-})xN^RwTBCX z!SJYGy>tVE;iyIb-@Fl8R=c(*z!xL0TLvzdES=4r9z1k;fOEiLJYJ>6H)#(a=MU(f zy=jnl`OO2<{-(_*&DP~^KOLH>r%;GEa>l5wxkjr-^-q`{f?Tb0c&TG7>hIda+A7dBXz=WpxwQ0E}N zR!#JD{^+&U*s5D@Y@0PNb3!3Qa!p)Gx-GqfezF6vH0*yirD1$(sWE)!tE`cm z0k&oFt(ulgpxO)36vd4Kv5C!!+gx{#eVoqv7`)5$XJYs5&o`g9-V!?Wc{(e#cfuw9 z(Uxb@Gl74d+-~(&=&5&$(>%!o(RPlkZ7^1g8xv2wJZoc$C{ckbixsa-q2W-j@@3WxwTn+b>0y*sW6HSvPemWm$ol5Hc#*_h|mkfrqSBwp`$& zsd$&y|M~YTdOkMzq69%&vqkc*CmdC4^LFDGW z?!<9KKZH8LjTN`(5ZINs#PcFlR;jn|!PmaDtbN&$w|81w=Qv8Wh#xz2N-mQnH#WXv z>Mp7B*7m5et@UtYU-K8e%$Q84hg;uTjk0%zue%e|xqnAZ&xLh+w%hDWWv-|y&uU~p zKR@L?XTQ4g?gp)Cj$YYvT5yh;goE=q`k5mBVpAgK z=}i|$@~Pyr{ce}8oyKoJ{X_!aIxFU~w%2L%8D$LSeEw@pec)xm@xf|R7=abqfvc3) zsr|g2h{t8TTvpn7bz3==u-XyQ9zd%d>OkC_H&-C*Fqo&iHB$2T(fP$9mqpLwTb})} z3M1&y4orSy6zVzseXO}sr#{(esXE$dAzI1&_|KTH0it| zbonZbZ;(bpl&LLlYcwM7dyGMnQERbIvtfw)Y}CTtB%?fmmK0<`GMc>!gX!6N#4mr} z*cb2aN33k+nD#9z0|B(k25sVv-aMnqZ8P-h%_li0K5#H^_vR@vS(7?4HgliKu%`Ou zj+5NdEyv!OS^JA;!ap(Af-b}Df_g(isx|D~o?eq2MAA)uLl*)oR~NQ^*YucO|6ePt z-+pjok*vE>GgZ0u`+zHSF+u;#QG@$34ANqF3-CKN}f&Jqmswbt^Mk+2*?-*BS& zbk}*N7zj$w<&7IRK5kxj9jzTTJX==B6yww>Fd9;ruZm;#cwic2et@N2PO&n#hd z5Ox*@ZnMmE)v8=#{#vKbRu232gxnRS#G}I9XrCj{Vah2gX}A)RvR6~s(fs5H5zBUDbs zD1VBe>HKVsgPC{l1X3VUd{k1hfi1O_rJ{W5LGkZ7JMwVf9AZ{hrYq&?pocG3VR5PC zZP9>+IRtSh;eadBTF+d6;}J>6uElQS<2I@rYc; zQvLG0`2j`T+V{ZO-l1;0OXITy6@}M^*~s)ux9mdC@M4jPvkCMvn6&=r_De|6a|#PN zjLd}(SSNWNVzz`U)-_Ux#j-s~L&3)Vg(fx6YFY9THk>0Sz z-QvY=Nq2Kum7JZnIRjji%d`DLtN4AR%edj2_HNz2@&MexesJBzCqlS|;OkMmJP*TuC#skhW~9$P(~KQm4aji{pV zUf9kVVc%RL@_cdewtcU0RJCAbfoUa-?mEmmdfbn&GFd+JjT|HGu7d?RUL4IBe~(=| zE_kkSYjh5&)zkX4y^)JVOs}?c>K7eV5kg&U__9noO_0BSgJsA@lOI=3h3qbmFzEla=hu$*Y7ySH!D~`MA^r~DBCG+-A0U^!FKvay&t$J7y1Z= z$q-s#rSw$kNK4VbaP}e5(e6wnd#GCtNw}grnq}AHP>n1YVe*%b9K)o&`S74Lnn#rT z*FsKz@zR3iG`s)Ox~-U=;|byHZ-@V0-&o0!tG`RszevxaWFaqrjcsy6IC=&eZ4M-4 zdyCfbbyGilxl5&9Kvk&XTfrNkFR3iN$Im1xXZe7ECd@H-FCsbwueNIl#}OV>04Th?{GA7gnn^@4 zQ3L(v0S*{h1a}6di)>DEMGal-mCjSM%>sML+3oV87e~O<2ZK{9ue-AS>_a_yyB5O@ z{fgJ)wOIJuhTYWJBDZyKVZK(!w6Ah~Kn+H&4fFUS(G#h2dd;;_#B_G)k?H@cH8cp@alN4x9#O1SihixV1K@yuVN31}S;qZ&B zRr>ejJS-v{N4EUu%Kw{&QB@E@42IvI&Bk~8ko)_EBt{vkBiqye@z?%eQ*~(vI5;>s z)lrPm^L~}d985||n(6lU_t)e0JN_kH?akE0#AflJ0ebSav=K#Z6WSy)G)ss%&jCN6 zn`+nG%zW{-@-Rh7Nr~Qgbwz~I;I=j}bS3h2+q-CCO`qJbux;7!lco;j&wOh4RMnAm z@bgi(#q9a_tvnU`Z1tD8x}2Qc%lP=`E~T4K&YFBiFWaq~YWj>@M7rfQkeir)pHU81Mo1Fc2If^Ai;~i~nsdCoM4C5#9>wh=K%h4Op_gz3J*>TL|^}Aqn1{ZNSoQ03i zJ?MUqu<#2PI++w7zdJNMoQdast56f0!!QmF4YjeeySJo7q;ky8&W6Uh5wW89`V55H zC&kkFvlRnD5*NfRL-r=r1u4{+o~;>H>^=BSZLS;tU9i9FkijA{HbroIgvMwOvEW@f z^SPZPX!}CL!YWLskc&avXuHJW8V1w#X~%u^^SpWr*i$%OYyjDZPR_ z^@1op-a5(gO~}FrG4*vT{GWS5jx`HPkwBxFjdCqzuCA`BzC=|y`yahkq`}d9>7nb- zgX8xzo4+boyX1YAJ9^Xa^W3xEg~>s#GXP(1f$>L;s!47+= z1Q*RXgf}r$tWqgV_xd)@Fsg`YFKdY8a@O5_QRo|-5eOvJt!*gi2!_&HE>-_b4FxIin(oF zJ#50||5>L8f;>gtdwQD-0XHwj!Bk4&q$y&0OyBT{=h}&l82$sOTy&X;mYa!I?odOK zmN|3V6ihgW{{TW+IiY@|qb8$>-s5P?88I0G5IpDmfvt_ZBwP&Rt{5qmP*cWaeDuD? z;>Dk>!_-O19zVX_WgB>+_Pd9dO+DuBZ!hQU6*Zma7Fu~StE7S66aGhEFuFSo*7Kke z`Tvpe5n2gnGMPr|Q!_I^1_tgeGnbZ@_K1naiZ3lMt8vBuWDU8yxEzVTb|(ZoH91GkMdtF~!MGtWb1&k!z7I~c?fywapZM^w zVFSsU$6p_@ku%{pX8$Wx#9+8aQ)AAzG&a6NJ83c8y3+LJ#oJp)U0djDKPVKco10tK zn>QCD^?aYHz3JV3jp%&5PRC(eVq&766T~ERqI3yUg+6p8ZfS9m;kNbF8Q1S3A|kG_ zF);h{Z-5wqB5!!3vE_hK+YrSNlpVcRCms!?2L zceiz{_e(R954o+)H0^k!!tkW@di%{sH?0z8OQ;hQc_r&p-n{wjg$OnTm*kvd8QWmr zuh}4Gy9p)eI^P!p3AP&KeE6?1%)E7!y4B=pbUTAlhC3WUX25j7#D8^oV)1mp%CJy* zK;TN>nCwrV6RhS(Y-09{RZ3&c&i+QPqtWxO0%bjYpGz(j6Y|4|dt22onD^MWK@KTj zrD=UE7Uw%@E75|X!$XBh-}(`G`A4#}g(YH+*1IknZ=t%<#iamD0t@HtpL@l!{_o^Q z-|n(lv01FLBsdRIZ=JbL)x^Qnsc@uaI%Na(*Sw$Aun_P7{O@{5%yf4G`ZX zMC5cXmvAa=1Y_Z6_GRnujnVU4A3D6hF^w>rYWn&-Bz{wc5<^W(D3zJ)M4%}Jr;}AJD6s_<{a$Gj1y4jTa`=Eiy?Z zd13x$AGiL#xOsYOp7bK&0bRwf-2`8{;*0f7RSYv9#YOhIug|lzu())ijAWb|PBde( z%oBR~Ht|}2=6vYuTRk>5rZ>oOMnS=P>8O@29g}b{uN>OmD+$z{Ti#E3mK_=zH-WUz z5in^V*J>owui)b;;ds`ubDr}Sa6Ad^H8J|1CRsQ+^7ZTAT%Jsg%%0yn?iUVp@+*y9 z8tB>@=Q$E8uBD@syNchgAB;W$xiE#gP4E47xY|oduAU8xH^qg2I5>lH+WB>G3OFjs zMP=~-ubif*@?IX#A3b`+!{Q|;v{fG-8k_! zqTw*+X>TC634Fp?+eQ1w;8ajL1C2)D_}}oJ|JVNY|L;4FTwON+M(CKdborY%Z{{*@ zW(-`YI)qLS6L2eHz2crwD-{(V#>0KaJJ2@2$49TOn^6qAk@-UWfrZ7}?J`@?=JTpM z-(u!q8x+IdJb(UIB1rm;zq>b}mr^3QO19{M>OUD0thGW7p0>7jpclbEE$v__7};*& zCOmIcR8(&`p41rod1S;wep5fKd&t@_&W%1?EEec4yy5i5D)Tm~@Y7!m`q@Bw5BHS2 zpF&Vu+jTJBC;3@JbjIcm8m>?2?_m{sPw8_G0$?XQ0@BOr#eu@fwzf9iL>Etmy@k)GM?0aPo z_eGqz&kVHNa|}z@2Uo^`LVT-#_ILT}896z=r+i{0$MrJ! zgO$UkK0fD84!6v({wgXjKMhkhNC?=b!4xV9L++^>ZS(oOq<{j?aAy_ip zU&AOSAoy7dQH6h&>N?#e4a2ZS*sPlR69gpT<;z>wum7@r&+H`Q+-4kwwOo=eLmse<=lS=c>%sGFYqS(g25FM$^|Y>&5+5F697 z%>pOG5R+bEfAXEKydnaDKpGN+o8==!jQXJr_@zT zA01!mh7wblwR%3zb*Hz=8Lz}e$q?B`;`wH89o;!0rh@y(m(Hh3a`Z{$k;@fI?-y%~ z+r0YZ>$BinM@OgQjsy-<()TibOia!LE_tf~TrvN-% z-6pS}vIt(Sv7rCBjg3v@2$h1s;1X2`%KXIXjEs!VA3qlVEZW7*4Kn-8t*q*&wur=8@D&g_xm6BrMZ<;!jf-7ndhihsp{IJNl^D!T|-T8=1G>)jy%w z-~3J@IA{*shL2r6$_Q6KP3GG*Q}T}=BTU)pr9L8opc-R(6O$WN-mZ(qin$!6TQY4X zetiyd1?(}cZ<1?VZF6?SH{S8rxVi3{$KZv{uVu6o&y0#H`}Ewc$`eEI;VR$Q)iLF$ zZss*!8ZU5N3wp3Nn&8P}bC2PR^V-!vf1J$A&RsQI_7!P=gymX z>!)s(7Gk7u<&MX&8ki7{&`hI%7-2)(G+H)v0V09QGDkbCcPi>2s~E5wK?Wtqh;tIvQQQ zdA^juEY+*8rLYDmmLXUn^Sv`9WMJSGcpe`iLi#c`CtkU!){wGJ#!QPa+kHeg2Z5BiWI* zGM+r$Phq=#G!!;h?NhHhD78uBKDY1Hr?qfhE-r6(#co-qasV>o@bd=*+EW-TAxAV-@7vV_M zVI8%qY~=BoIU;KoXZRpo$$R-ydPc_JaZyA|ORIOy?hAy*MfiQSU!+E;D_39=(#=mM?+Xi3iQa_8{@k8{V=pOS{NYjBcy zZ|_R+%<5{T2*w!8d$@nZp2N`hr()PNm^+2x!svuxzI3698%^e1u7k8R_XiIy=(pt%c-?lu zf3d~ky4{IPBWWqA`&L$JG>?IPq>Ehnjr5GDqr4)1b`IE%Uh!6Gm%kueg?l*CZ2QjDa*vFzp9S?QL(aF}7TPzCZ=d`mx467wiwNGDQxWh82bZf$Knsu)&LQQ;Gk zn9K9_Cleb<_88_#RPxp{H#f&;U@!^mHB#1LZ0D1D64u)S-FDZ&;4A(`k5} zk^a^G!GpGFN&Nz`w9fGQqb@$wt)=lSdk2RYap_~nKG<*&t=4PN4h-5O_WdR56^4HC zcTA$Nsj;f#VULPeDJ^$&sZ3;$ia*@#x-NVbzWKUC0aew`en;i4bbAYn3fNGb+#^p8(_;$ zo;npRy}|y(<&0n)xpHwy$~QIs^>;gVu^z&dPSl=;MbW)@(I4*o(b~EfXN(shkmciE zz1pgU=xA%-^+Ygv@wz|;bh-Tg`SEYMGWO<-hssNyxV5--XFYzKh(n7rlCyF@MlJl= zGsX^VMd?>Lx!V3xT=&Sx+vxqr6SZxfoMa6j#tT=e(8umw-NY;UY##gM+8D1*x6|s85vzW6a}Qz;;EW%ANhZg=`y~9 z8}Wjs=_2!WbZ5bt0bwU5#flcMdB~`6I)7zXNZosfPdn?`*2{vJu74tVTj=3~IB-Il zA3kVLx}0IQ+0~4W2W-aqQ0sUX+Ng~7LGJAu8X8$SIZb4TU!<(4rIBBuIH!3z-c@1| zlOSgXiiE+;LpO85e1{9?W_a11*v z1Ra7G?M<9Gm|0Uprk5FivuMxB&27OClF1*y835$Ong^yKr22ZjC8EURNdkdMDHW7S z2^~{M2@=0k@q=B{Q&R;V~vcC zYZ)CjwzdnW9F*vU`JGal5bqgNcRDB9Juz{AZy~OI z(5!*~9(ny20ltoepk%Xr1Mzsx4|hh=J02X2Qm4#)46QT!i{w~9b7ra}YBx9v+a~;q zzKbwv_mx!aPU`$22S+TqB7Xh)<*i+I_|Tz~=gz$c=;FO@B-9rI*W0Iir2O{m*@MnJ zjbYI6<;x{`UZIN0$^)Rvo=gG=)8OD>O^L6RKuBEEhqs+9ocCeIjR}GrQ)tB7XBQtI z-*ggZIvP&Z`d)t1HuFB=^a%%B+nXo%6z`zCf}{$EUH0b2=zaltkN&|D%|lV82Z_%Z1WTL|#Tp>8Nw6UG))AT1?(CD-LlYm3dF2#{0a# znbnZp7Mn50`}e=jPE16&;1CEO?!&ikZ?Y4_Z*xNheZqbf;{hwNZM=N{D>{z|hN1^N%{k5?%Q;nK9)#k^7l7IGT zp!=@e2YD+qXYRa#JI9IKMF|SH)z#I2pYCC%lY|9fGu*zbh~Skl(+htjohjR*v?SXi zUTm7f;~-x^YxRlntvYjr?u(@={f zcAt%HDfz}MflscHMHv{dQ;Idyi&*dBh^^spXJ5H zcMzNwyRPp84u_VsxxcliXIIv;LL;MaU+JK|AhG=P6V*&nL@k0P_G8xu-Mcj}eZP~< zdtkrS!SoF)Iti2LU%wC9F? z{ofC64N%iPJyKtMXK_qYx#{xuRWaT-dpUnY*jEH$nmSwHF_TX1hMmIY60eubolt%C zOj}1sa!+VhO^q>JqPq(8Ejq@no?rE91WwW*q?~}T&s&qx*iAva$>2F)cbckkYP zJ;t-GkIiEG;)D`>tBv7$*1LBQ8Qxc|qWYZf*~8b-(UE$FjT@}k`817W`hXYo+)VfP z`kvh0BMTMs^8I&ZMpUq*kKo{NtTnBy(w(}k zZoYeRaxzkhEqU}P1k0%q7H!%=5vH5&LP@H+*CrY%XbjlfJJ}GaS@;8jx|_fYrk?q= zAn*~!H8nZe27+@x=g2Aq3XonCg}{+qs`b2TRxEIL?ma6_#wqsv2@M_p3F^%ZZOc-& z*zVn1eE6g?7sC)Tnfw)~IB|(Rp;P}vCce9H8t~Z7*;kJFd3$>w7$d6?lbgz|Tavzl z3|+`y$cdGBoMz&7RsICaL9l~p>NWQ6fj7yq2=4ehbp0Tc>|cR60hM^*z=1PB|D~`@ zm<$D9kwBU|L=AsW2JQ7AbU#T|f@eHc6@SNb4^Cj0Ghvos)ZxKs(E}X+i>%fE4OXq^ z;ks9vhXyk8+iG7P6BX35=zRx(``d-pgi+V&9XJ=5R+eXKGR{nuU>X&^FIEc$?B|w*#CiXFR8TArU?K zZntp4JYtlAjzDxImCGbXIagXBW}R zR_OidrPM_9SLd!;n3(LH5cboR)o5)}s;@iFoeb**GYJa|dz>r0YtJ61gPD-P$h>u} zv$OMZ+o2v|0Jj4WJ&O<`e}FyAqFFn5pCBrTjxw&oBv0-cHK^pJQY-Vqf}5o1xC>XV z1ieg1ctF6U(pwWu)}{Rfe|!7np4k*^sH_=GGlI5IE-8GX9g7k@ApN018AF>nyUKE zLUzKX>tOUXO9fNOqPe-bzfZSWbe!mkxt8`qJEQRMfa$AA*a(~Z_jRQNB)=Z$Z9Me1 zl^Y+Oiy7C`=!6_PuDy<*8#2#y(-@DP9l_C*)4V)9CiU3NK$7|N3 zO-&pBJ|g<(_Va)3hJ}VW^u2%yb}%rqde`<#zs9R~T|XL-;n@O)>k-zE7WOD*mAKtJ z;!iTIEF3&q%FVJX7cXAi>u7lQ?#Z)fg|6E1sYuz4?YKo4=d%!NY;IO|TAN=#ib{ap zHDFG%03)_Ocps^GC`aY-(RfW8H#hmb#BLZGnSiinJzc22y%?<6$^)tB5*lSJz_TmyR4$>#4%f<|?Uy zLrNM6=3D<@VGRAR^z~mh+idJ{YrJP#zRPrB{Url(VbSS&%%3X5h@f7J!MKsj+F_a)8g-R!Cq_kZ-uepf8T*aW4|}ep;HE43YUqn(G9@Nu8~& zDIFO)f<@Ai-`)y^s&OwlaTf0W&!9+?9U1yyv_fOwR(d`Q4ZRaStr#Xu$`{p-gkCv< z6T)+r=_SR(imAH@38q^wLHQfk`~?^p&cXrFXhHu!DcI2cY> zELviNE%Y-hP2K$ycm~T5wCo2sgkgJg~7jYPh-2?5Q>%rOI8sM%rKga`c_`$^8iYY$uk? zz*W%#Az}oUBrPy-qa@AQ`M+=lO8vW{A86Yj9)kdw8;pb zMRliH4r$PriJ^@0Pdy0C4bxTf;b3cfHT{K`yI*snrMN1zLb-0J5Mr z+-gBuMdp&nu(u4}Lv-CJGav%x`u=+wL=0-K%`R4+=QyGTk5Y0Ry5u(cNCJQ8&>`_b zqvsEYz69GnAJX@^=~FlCD00T-Naa2wef`*6S||`5XgICC772BYsKaE1He#*VIPt}dP?0|V;(N*$#(Q(8M@YM|P5r{gQo9y0*SF=~A z&o~Z!$)b9y&@Uc}`i6ISdcJUjqG-6`=@k@#oD*$nu6;>ZagsU-6%6dsCOss9CV%#< zVQcqN0{}3evjTGQnk6Dm{UYvw&jgBCO^gNRkY4_L*k^!mSOUV4zytg1>e;HE*Az7Z ziU>sDc`M4>%DNbdvd4;l$)Bk9WPsnf9QkeJWu5VvL_OK~#aU6{7z7-J4-2W3B0v^` zvnbhZ?11#wV9Y8JmPb*NnBC}U0C*?u&7!dO7YxTqiW@{l;X%N3fBpUYx6cF`~KL*HU znH=Ddjo2F-c-h6mA(|ynJ!gV)v^^+C`Iri|&@mXu=%7p`5 zaR5m8)|*KLR0&7Tv2~(=ea!RYpiM;}WJQ!94eQW#45RKYb0NTV04k^61L0#A7w^k8 z_1zg%K<&yEj)avZbWQrUffzm_QunSB!CEpsYuI%5057^e7P6i#bRl4`fYP58{aI2{ zQpEyj%U!Wm3D(MiT(w)Gq*sAB4=^zd0$V}Lgq~aPmSwtV)(HTvYD0!klD-D7QYBRB)MG16_ny+sA7 z0>$Zx_KAWTzB~uprgMF9&l{y{ono;}qm;oa&yMbHnGHnetr|$e_;zn@)m5UR(}wN% zcuh4>K#-H~rSk`$0Ty%PE4eTYGpkzaG6Y9u*^#gHc>S*0ic#;mOwU7^Jhn!?OWwmm zlXKoJ^#79;BKZAxtk5T?>zMGyf%)qbhLUS2>W7LWFZ!Un?~1RTF=hGYrk~;SDSQ~+ zdsf!g;KkD+et;>>6dVw$5;}i6ENal_U25t_`u>S*>t7Y*PYqVI@#x&`#l?m;najlB z-D7N=gF{IYw_j7H0T)(==zOeRUKJ0>xN9`KH)BRA5Nov0O@#D(SWyo-4n+w64d?Q% zvhu9#$&>sBNJ32tGCL0L=0pe-&2C8Kz`PGBWqg%ZJA#oX4zN*yYpNzLf_FCH{ZF`Q z!Y74#jsFkgPCJAB&mU^+JLK0CfMRtM5vLHD{yKwJTJ;IyYFu9YMF-9P{3fCgHul=u zUbFFr0}6uuo+)L~@Ujg&zvtkNEp%@RlbrRq#b>a)Td;SArnQZNu<3lkmp=K@>IC_o zU%iAd!jbz2T)KGizd6c3B>Wy5qB9ljWz>nQow=);VsX@!#EZLz#Ll`&<(reX@k#De zhl28DB{v6Am9<~Ie50eIy}4K)THTkmwW`i@x{!YWBxMjZKkroi`xEyT^X(&Wys#71^`RUVRD3*7Hdn6sT5M(h!rE_VzdkG%)036ur zqz=I*2O%DCp@*89+~(lT|3Izkh@)K^zp2xJ8%C0`vxOa(tcXRF}X z7)mT)9dnYAwQ;>wu>@{3UaR$8gq>xNBWuaNP$3UF8eg!s=m%_EX~~AA3>DS`3QV&G z%C3x$NlJD=PVrbvQ`4jv`@e{YqVj>hj zb_)Zoy+1=campJ~cB^m+0^96AcM{pt#AVjR6_sm@o!vqz6Kn-qe}BJ>#tm<8rllb* z)SMJ{P#a`P2T4|R`~))ql%T{StS(O0z@-&3(&MuqC_z=Q3z+R*R&uX_&-(60GaW)0 zBo%F+-yb*SKn+6m+Uj(!A!N3b*Thd8Ki;}ZBCL^O_4V}lgD)-i+2*b!T>(Nqd)yp zWqP`rudgq`@+=#+Y4HkS@yeKOHtpaf1VR4LWwB+0fV7OvG*mhv_Gy^O>FJO-?^Ki> zymKcLRbPBi_2Eqmp1Ld<^-8x{S!@R)5H~sq+kWdzVi#as(9aAg@Rf|$yF_C)k5<{lI2FU z*d62Kv*d9w=l%N$C;@1Tkv6<#Z2Un;!Qrc`5n$7+{U!Dt1SSq?irwG(rNu(F!e^ym z|MR~g>k$3TqNu3oEsIId1{YAuC@-&Cn{QZUQ3+`6e%cL**}h^85b5;j9@NIU!dJVQ z!^u83a;um7F4m3xiT5#Ihd%{yS9s7~qj6eHjKE--<3+%ZkRObIVl^oFU^meju`<}M zn>tEq)!y`}5SbcXz!}>_&b*b>|G*H%exJLP8y&q9*45V2^G@6STLi{uu|-G}>*H~c zm(fqOfj?BOkOrIG*!)u{tm&VE`mb*Q^Mdv43Kdegb@S$%moN9gut9$ylmA zS65dzBWtqYECet1K*k-`8nTtQVRT@7ii?UEqLnacFrScj`c^^@6FKX`T3rhAQu@c+ zeQg83;yIq^?gI5%5S&99t5*AWs%ao_FRrBleo6;n$OM^%N?sTy z?NklQV=h9}Yh!778K`I|rfYHdd#qI2u;g7q!HwbJVJ9PfFks;>zaITl`Q4T0%X9;z z_Mjm~x_5Usz=Nw_n)%{j$Y>#t$XT}u*sln2qe{1?zIp4(IjQ&YtQ<)FXlR6d|Nh-4 zd0p&Wb3tr$bS6v+%y_tP)PMRdD0mH0cpt1D2z)2Va~5=>w76p+C=^~Of$ao1Vg;FQ zQ!}#*fRfzj2Cm!N=fGC&g94cFS;a6oeQx9>E#bZIrz!vKb>|=eQf4i7pp-C*^S1Hu ztPr}FHbO>K0YVor>khKc})!PwE+;vqiG-C)yWKSlLb4lkzn5Rn%0B7Wxao|2^oz4w$K9lrK|munI_ulFqrog#OS8en%dT)_BkUL#* z_wLhykFn|xSvA4f{`Emd?A4Ks-UtbnzvW2yu*1oml zPqQ#6a0g~iBKlfDN$Vth5sy+o81?N+^9jKBWZ=4WiIkK&v;5ZZ;HD3N3?re&P+ne5 z3>HT#1C|>Av!IOe55PZQL0}_p>FZk`WP{g7^*BUO#s-)&V7)=Cis!c)f99_Ncegr= zBV->=^0*Kk9SyF%X6^zC(A33u!2bQ<(>a$KuDtqg(d|)Ko!RreWD9q9cX)^9LQR*| z?X5srqk#O2*@;z9Z@X(iV*Ke1D70!i*;^0C0!wh?X!PBk$WUDfoEPjM=H|-GgUdmI z1e8*AHYc8il9u;#7pg((uZq70=V28>A*^N)yxt9+h4(OYC)O|~9gv}fAXxuQ;<2w> zy!=F{ky8ME94a+{Bplkm9b=~)d}-)W$9sIU-$oG?g;*#B0=i8LKqanvDWObxR(a^=Mg2Qh3i;{N-lR&py zezMtV&69L~djMfq{a#Fp$Id~prJJt-8PX~-@CJH{CC-^T6v*;B4qtRRzW71LICg4k{h?`d0nPVtv{rKFh$s4rv z0mQ%tlI>47p~H>J859jsg#->bAdX;g6gd$8oi`i5nKk_Q1iXKu_8*cSeffrYnH$?M*1jYlf zE8tAp?*F)U!c3kB1(ZbCyL*P55xrYHp$ay8ezQL?2mnBKR66yA_r1q90BS%vi=*!`!=bz5Pr(ERbMRkt{Qsyy z{ubu&jx7q$ua?DYj#B9gd-4MXm~SrVy*Kx)clW z!d8gJ2QYm!7R$cd{?8QxgfV(U>o+H-rKKf@K6|!CdHVEeGR+%C`}1R$5&9%LgEkxt z^@WF&S0~4ccZ;hdEF$8re#6#wdK6N?;F^~%uU$Pk z!7vWu73=!`{b`cdl!W>Xa1oGw8Fue^52=@TfJ-75f85l8VP1yYmJjLy?nTyGkbAKA z3!_Wi0J>%=i*LkOUrYBZ?g+jQ_knLl@$waw3;e~w!NHG9phi~k*u5iP8tl&i;(h+{ zqpFs+HUwPzCR|{^7jPHlYDwW@I#tVkwxFsVaxLc$sC%u9#xBuFV$;Rl#vQa_5?_tQ z?no#p8=Gs? zYI>5GjL}2%6D@b87$aa%U%qhrCg4|uE5P_d9YpK#oJfXGlx+YPG< zEE0H}^rug`F7Ib|UjzdSkupHTj)8%Jtb1J2pi1cag8*`~`|zj>f%y+NNc|p9CVYS@ z0KrvDg=l~?JKwTU{ec)mV35K62@EsTAoIDPx}943%i9l`X<=&uK-Kf~EH9VHr2$6~P~OWjx%ki-vteRl!NWEL0S2LBH@bwP;@025q4 z>SwdEj)Kx;RaYAU)w}AbVkHhKkHzM*RQ@JAYqXa{cQT;WP?=mJ;2EQ8ug=(R@>WeI zwI~10-rVsDhwD%`{~|V)StAHzthLJfMcO+E41r9dHeLPNi|FV{SUv5c(o#CSV6fQR z^GM+9H(-r6rABqCTr-tMvd|FYZ^a| zq3J1{7!;lZ%0@$Vy?;VPBD))zS5k%-tmOArdM#z4NaS@~fDSy3uojM>r36P9-`6=m zT2fgHLQ)`@KuwCoQ~8f$x?4%+pkq*l^%{16T9C-7J1`mtNxZ8CSIQF{65mTnZDmUCcw}ETitd4q?ae?BUqVgFgy;ke_c`~#nzD5 zrofy1516+oNT3PUsBD~+VGqfWAy{vyuLc*G)s%-x(G@1O!Ocq$sHsfc>KZK{PwGH} zD>xn#OHSu!W@hHQHSql0xjal`Qji+Axq&-*oe#modrf6#EDkug>>OE=e*J%{Ujwj|Al_s z*qfU<&hJA5Mrid~Xj1UkwlpGpj*CF~6tm*`AcQ$Rn=p?yGii*m1RNTjKzMxg>+~$S z+7Rk>yddD=n)ga*s_|tOfeogtjVY*R+$i8u8Z&JP$N1LLFy4$qwpG>_T7Qz&Z_ z?z4uPYCJ6jd%V(946O1GP-~S;u<@T(un)OTjhS{|%t@&BS#g>si4g{vz!Xh^mzqk9 zi_5FnaC(9P1Uo95U=$1WeeLFIZOqWs16@K}0|Nu!*KN|>gN~`r1xci=yyR;lti%!^ zSh!6TJKyGqEbDvURy&YsBE6bgEv*h2>-H;RzF%f!z%KYb1_(VDj$b?g zK4A*W9>rd8ynYmnB4wr7eKpx<{#yfY;gs8O0KTJi0K0s6yW@cqgr6xbV_|MDHUmIMFK++^8PU@||218i8tc%E? zlop^aDD@v}o&63x(KZN0lzt!@|Nh7pUhhZ6#9!My8sZbl9iC@@3 zsF@z*Ipah9^BUducluc0Qxp7ME>MLP#3p$D2f;n${TIspQ%ixlww{jR;5GH|P^|2~ zcTSX0rqrXLj{Yg8n`;W%(QS^!WMw`3nod1OEqWZvsx``>qWyb4XIAqDYd;R2d=}3Pq`u zIb%g;B}pfkqoIs=1dtD3PnOPC3C3EB-66idp`R8_kZvGzTfxm?>Ih3M};*! z>wd2L8qV{)u6xbPV-#{9G|Hbt&koMI@s?|A$k?sC${C;9 zvLf28@89=(&y!_|$wN+PcPnM~JW{?V+pjq!%v)2feu7+GrZp>fs?C9c5S!yc+^U$L zATPc?Y(J6SEY7FvZ1I(f-g#%jQ+cv!N4tijV@g*~^G7szo4))_HtFp6`t{A$+)Feu za_!o#=%5)3_x5coKOXaR6loy_w9Mbsqj_fgF8Y_w|xGg$#=CUszy`yqKwbz98Zd|#M zlq$RW5!%6UH+Cy+H}kwP%G^{5U(d6zw2Grv3o&P03cCu|qbx9&4q;H#O&1%l4y}}~r=+wD? z9}Se@qH72ac)IHs)H z@;$LY32NkH=Tq8$z{laH->w+HGWRX2t6NE{xwy=)PMLQ$M~pSFRXTEN*=AP>FZR-+ zXqV-tqzi|$&ZjLi_h_?GKQZCBZR&{gLZ}Mco?4?1(*0T9@}(LY8rF$(Y^TNRPxh@7 zp52|myuiM)YejttN5-dVW6>Nly9?X62UP2~*{G_zF7})~;d4A?l#YRU8NxSbP~Stl zEl2x=(gtHAyid8m?0d)jFgQ5rT0ooklj8XUU)cvJ3+sInHT#BE|C$kG=58SGkx{hluLY_KLK`lxd1a{E zT34tN+T}gP;omqzb|~1|Rz&xmLSwmDvne4WKas~uJN*7w$%4yH|9-Dx-vUwXsIH3} zw8KSeve1gZVH5vc?a(ej#Q6T#1&TLik&r+RSe4jXN}3jrPW2B>&-areg33Kt>J81* zDs%;xJV&9vjy$_ta?*$P&AZpW%)V{-$G5dO~P}#=$U!-ow>vFNQf%M3!x`D`G z(}8d!e<)>wcEuddH%n7%ZWP(HY14s&2iZ+aj^L&AjvY(Tj%fTjyk_0Hj^p<-EaUr! zR3ecSHJskDK}ku;PHv@M`^sU?*1_r{y1G8Q_%C=CcMkZutd@K1NXc=b1U%|e&X)Y7 z%9SG(>CKrTQ4@UQ#+3v{*B(j8W$fC{G$uzpe8~Sk>y>tM#j*iG@sL$+ed;g@4UPDr zaDndk?+-Y2m8=^h(^NF{mRBqEg(Sqiel5%2a7J8GvS~QfA2BWHP+vMODq1|G96np< z*uS1Xg6E@OyLIG`TJz_VTefUTN>Ar>;2@zbH0=I;Zr!Y5kKN(-?#X?amoqIHonn19 zAuNKggnEw;9OF<6vViD!aS(F7|KV9G%H{j-q;-!_S+Sdx8P0hNfEkhN-Bd{p9P z*DqZ(_gAR`y3w}m%_TJI<(vH5=}pH}UMvd4r;Ym`P&YYz#j5TDR zIWT~j|#98t0BVXv)9_%I>T{kZA3(l zb!_TlIJERxHMkEi?S3xoh3J)(b%}p3{d;Y!s%68_^te~?Y&vaTx=BH0&j|~QCkc%| zg===$)ZG)yB}Sn92y!Zyi8{8tzF);GQO0F{mPT?Hzp6#rqlflR;^mKQa~Vd|N2Ys^5}S%GcyRT zV9~m@_L&0*6BCn;h6bbZdQRJq59!idLi4(O1#l~qUcM~b$GIob!Pha`&w^feX_W@2 z-){_C1`r~DIIHH)lP9;k7Dq2e$*GcLAc(UD)RaGx+aA~WQ^u)P2FQW^X9|5OUPKhs z+1{0ht5Qv}nMpGCpG6-Y5^I{$6MC>HKzB2y%kr{MiOOH&DzrrEIrT6e_u5&ata>S7P zn|@HH#{~zrO1-wJqpwTQuLZr-H+!e2ud`8=*`A#Bv|NR4;74&_7+$b4u&|Iy zw$LTb{?eaf*r4ikOa^I5Xgt+-`R@hkFP5$u9Q-nBvvWl&S(ft)GZsF{O`21zo4OAd z`kNI*ARmR(JJS7HW6-u7#}!rE89cZJS3W!2^smpIB-brfPnf-W ze103DxVR5u!O`^i)JLmZ*Q6Jq%2kiS0995?!wk#p^oW5$HJQnM{er@5Mo#`W@P-m5 zsm=0tFG)Oaz_MA=rdamD0F$RzTeS8o*NKoiuK@1#={j< zSzdoyFJt9jA5lk_pl09;!4_C`osp{9MK4H-4xdkKO;)*c> zPRE}tlm*~Ou4}nCzktxSy?+Yqwo~IhsS{Wb*Z&$a){XraE5a*qapkZg9T@-LAdH zG78#sFe0v`WIZN;K174eue!a__$U0qgKP8iUW6kD_iLQvz|)+1;)S-#(kI}$_JUWT z6h2die>swxGT`kE@%vc5_xG2Wl95lP?Wp97fK?~isAZrree4(P@mn>Bcovjt{&@__>fO5@Z6^$WP?2$u=w z)hg52YR9AQv%BJ2hPZ@;!hpdE?mA0CH^86`VZr$N%`Ry{cRMUBNTTMfQq030Hf&G4 zC$*8}!E5s`XKsqJB=O7I-LaD4$7}SsD@}k6KUsZ$3m%O3o|u?$(EPhvdJi4XF;MFF zak7FkTzR$8XEaLAkwm&DrW^3#G@H|fL0k#kSK`hrCUrF%n@#Jzer!miVh7`^LDBrP zRJ~Hniq&F=)X*>X%5a;-rG6geiFd0#hcm16UDW^|OC5?;F*iXhB`%Pgo7<}6&4q{Z z&QV_*JOPmLJZ%UDw7^4xEoAyGdI68_MYEWH%aFl^#Bw*4iqMmog-!rZSNT8Pm9@vge<+Gm5mO^&D*Iz3ktf%*4(so??`)b?Vec73%CM zET(6%1rfGB;%P9t&mzO>$|MlyQrqkvV&V@NzueZ;>5$=gdbxwBl>%y~7&lr}VX*i8UayC>nK)cD>9>4QbK@0&Pmv zC8@eSGmjBB!>j-mU|Al@Skn{vz{i-~Mh}!M{1z|tqx9vRlji%9HZ?rshez%6J@oqZ z*`B>NUtinP39Zh#EikI1qr)xfM_tXOH&owyFs?lddlw+qUOn#RLMnoaii)Je>5N7O z2G*F+mABW0qW5=igpHu8uOLdX7}~d^Z(rLt z-Y4<{kXcw8*xqt^*Up<;jz90N^P^_lh6yi#>UwqP(GDiGJXb#4eyV%I6H)Ot@tnrz zy6m3oh;(kp&YcWC#s;TtZBI5NXeNKGDCnfQKL`2OhwPZ+$1E9>V5$MAFkE_XxUVJ_ zM)}1ngU;m&<`wk-n%aN-_-dpp+?rS3_LRaCW!l!R{pMC9nLN;izm2nPISkV+ID+2N zY3kwa(T{s|rpr$V{_nV)WqL~=47C2I`%!Ktw2!=dU}SLv8>Dn-8lTi)if%TVjBmTq z4)YF!LgK~Q+?Cd0Vh&TWMY_%?fvCIx{LDmKY*Nj1>(|lPzyIxsN8fb;mr{7v@hVj+ z7b`2PClGc0Inuy{=h==6Ej`(FDsRuk`Y=bKLdT{b!w^{JA0EC+ zJcM3TkH~>FG&RetWUP=q)6u&9qzI+s4y0D_V)%`9^D7go7i`N)#_Y5Cy1{9b;M=lo zYs<0u8NAGLi2RuNb|{^^e!O5;%R=lY+~o})pX?Dpk1gl>S+KE|k1+oRLM!gzw>e6t zia?SwZ(!PoAhW$bn7&=5~SDPl0B;OWP3_ux@0CplDxjl)5+WIYgzO17^pMZjXm>9|H>O}<LQqFaV4$^u!=foe!dN?L~2rc%N$<+ZOHXKrmVI})SB6Q)Y_ zR0~VJj!-)v9iY}YG;N&gv<3-uNNDH;py^3B-ry_$p#^BnCQ2~CHFN@gntJ1KDSb$# z9?Cfys@-mj3QiCwuD=>IDGFnvo@~(UVH?+sf}~ak!*z&kH;|cQFFwI2NX}L#`B!EI ztDtVFBsj*ei+Mx~9Nw3x=!oCQM|0pNNV}aszum50n0Pi;++dn&3C9a_Lv7;s79%TG z<#)Io65Meho7uDXj{4cc4&$uTtR!IsU%=-GyHwq>FYh51eD|&3d}hnfN)Rsf_4WR+ zJvQ)1vtTkaTsoARDy@EgepZfIGnt6&-iQ`<4i1x+*Hx`bNyNp3i}pY>U|76m?yV5j z|6E^X&zqsNx9APMbLWmfw77lnI}ZDazm3Vhd$9gzzrW`)yV!AoU%^F?Iv%9TsO;EN zeoe>AONmka=(BkJzy$G?jC4dbnt#?>EwuTkJHEx^BgMw1&whs|L@yD-={hK2D6VU1 zSR#u@Dn3fgoa>k41}3dKu@1qf#r&fBO2#JNC0AU|)6F~SseE>qU`Cr09Dr0LJBo{4 z=X$R?r1+`88NR*Fv6Q+X_9D*ViMs?>V7nS*UuhKbN4bKvZ+Llpa}gTNFs;HL?&sxI zjoP){$60USMd4LE(RWr4Vv3uOuMaNSV1%LGF}+w!8FVlkNy4&35K*uKHu(pgqPt$afgySY3z@mVAhoxQKMV>Ey|JNFq#53 zP2@{A*X-1HEwS{OHn6S;;i*Oj!4&lNN>Y+I>4iYp<&{T8xESy@>t=xBCbniPd{8V zH3b(8(d#<`Y=U*+!A+|7*#bx~R9q@8IR&fPnt5shX@p%fi9GdbH$U|7f-8dj4cLpvBZ1Dt$>jZ>R z`Doqg2|h+T$L3d88tfP`ZAqR02+r5a0k1eFS6J}sl?3q}@=vTciG(yv&as)%omy-m z%`0tj6Uyf;R#jihD{l#4>-GB6lvgp*9gL7D+Zd+2s=hB*K0vtp3d{Q0+Ohp65fh~h zoJsRLQ*%7O-`$^q-FKS@pfR_6sU(6?w_5?RwJIyM?ngwF_q&zZX5)|jXObUehO_Nm zR3c2EoS#Fli}UqFF-^Ur=H|EHqV}b?Y{V+ST#Zo;Xoam${jg}{RlFWenU$0MHFu+< zL$QiPTC`r7AHt4gi{!7Zt;@oy0*P&m4_>CL&~Y`|lKZ|6KwdarB1Ed7Y@;W@CSN`CcBmR$+XD?Em)>}6s(9%d=2G!qe zYD(_;fsb4mNE0{E*JK(4I^FmHK+39o%4|0S^7A-^yp38n zm!g8E9(@U2T^n3K(j)8)BD&+|S(p0L@yj`Ie{)eVlZs591CWU!jo6yIJjaFS|BSFl z*D~j|a}-;QS+3E)*I;+mB0Z>mMd;6FBKtCLy)9Z#fjcb-Vid zOrBoz3U}>Hoj`^A(t=2}$LtUbUTn#wWHTb)EqpLB8H|M%^uw}QsawutYA`)+V`M5D@+7P%%Feh~ua+NvF?Dn9VqpiY8QBSJz5z26vHhJ| zGl=9D1#MI^5SnqS|KicBRXK@e!pB-2Qmi`c(%? zq`yMlJ7*{L`3nl!ebmKSw3=+dR7|mZKNY%eZ&*fuNNhCrrUPlPwXw-QNZPHC zY9e2V&p<9pkSRy@Oy3uaR9kTK7;e2{l5NWhMUQ{uPmRNeZ~vMRM&>Y84mY${8xR~Cd3c7Z5F~dhix@bH=2DE^IgD+Aq^oV!#*Nx`Avli8_7zN+5{cI6%Dv8}+r?TJ_TBQx^(vMGUwl51{I%D=l z)o0$l$IP$Abjru})8m&ng;duI`TXWOZF0TMsS;I>oXR?7X!9 z-kEL`LIzxnbnJXm+)}?UrpgJC2ms{S+@7v;=gxUTBq|p}Q>D$->6n|Z^KaZXl_k-K z@_U<~-bz?i15@U|k+Dd%e*l;0{{a$V9~50HCU60sgQ`iA5ApN!nD@fzOu%y$VkdClWU}#iK`$ zX6V;U3{vuH=QfKtNP2PtbTpSmRS2Tv&mQDaD5gFuh=}Z+@+SFQP+Er=^L(ykpz361 zH{20HFgDm}*x2+ZW*hZ?sZM|O>hWn5JF8a*!f}>pii?J~G1Vob002xm7QfXpHy;ptO4u)kcy8*^)xK}h)0 ztKxTY4Nq~NrTTpR1(rL9w}=Hu zzf{QB`j5Lu^Y?KxsvqOlq+s;YCdo0nVuaR2q)o$}#qD2Fu)4(@4npE*=f!CUNQ4L# z=&4u_;eI8OCsDQl|MK#^29Ej2{&`T`Aw(a9=MKJgtAb2hbj?IF&AnT9cF~+KQ*Q*D zvZpPTcU+o!K+6K*X@zuReg3R@?d0n{M@))srIZ|zj24Q84d`I7X7=;M#8O}hL}v|A z`!$^>WUkO=^Mxabf>DCcKC@2IEiut+yl&UOR#S48UsOcoja_XtM`#7T9=A}lQrFOQ z0tPUYs5*j>LcV?V!|C!mf$jFqS8pVU&yHS`TYF39(IF)0iC;6xNo6y2FpZtGlA1!| z{SYkTpFd~b6br{nhSHCOQV4tmD6WdidL&DYqU1~Kz!mHVDhM3s+;Ho5r*HXs z**u=0YXM%l54Un*&ZP#L0py*(CVKg1Peh`VprN(Z4$UnW6-h-4qlF@IZ4{PGv|-ch zoI)iNug(ka4^@2s;X|8e^S6{I?WPldDI2BD+Tq-K+#70k{2A-wL`@r5Mk?%Bp{ZA& zVk8ah<H+Ut-Q8BA5$1Zf{G=r$>UdS6iFaceaP6X$l-eL+S|y_p#1(m=dB1Y_S0!RbO8} z=?QJBdN(|DO@9CqEp%L-o&2u7959Z9i+^*`b$q^FfIvUKyu3$VVG^<3>$hE#qxjaX zS${AZ=bJ-L1Oowa)?m_~Nr_{NR7zAqeE8VLnjPO<@@Rqt(|2dXKKbNg)=uJIbi~gN zc8+-Li?GQNSu7yBWRllhnQT23mh)rJKmPjDHc3eiq>BL^ENC_$VJjbhx8f!09G3>2G_M3mMfl3_}YS#48`)u2Ko+EGj*?nXt0 zKsSNcMNG~)wTMLSqwP*4UibwYejO8&suKad!Je6Kfj$d=Ub<1#2;HR&`ej310{+s_ z4VR#wPI&q9C*Q5~u~bOnmWT zBM^9GcgQ!cNz_C+F`^@!kPxUv*Z`J33EQC7*1rbXiS#7{366M3!0fDN6WN>OkF-7TFJ*3l#=#_4WfV_P>?4_H(VHQo#;tHo%whU*h9{*xmv8J2;2oJ1A=pq z=gR`-^WLM>f71~{RV)t0FNJU8oR)2X|cXbf?`Mn|AKq6DN zrL73scaM`sTDfM;4JhM8K=or^Fp<#xmEtRuc*N8+%5NIMksd}@KQtXB8>a$33ID@F z?$gk?`n(O9%VuE3%b5dbrz~#}03Z4SBO&kcD_f(juy5@rD~`p@mWXE?OYlv1WiRD23GCrEYdi|qAp!-5 zgp{M$ybAQDNt(Q8H#sqp5&NSY9SX8_(%ZHLzU={zqj~zYD3mzBCuKjd_yZ3{2}9e| zN}^aYCuxU^R`g8-gM1SqX{WcG!tOt&rFGr-`0z7HbDE>D0Sf&4D>Z?DBQGo%;K zp3OyDNlt~W-xC5e$8`N(bYt!X=OX(7qo&ThqK`f#1~dWc1-o!g(wa4Eu&9U|QE60q z|1zsPkb)#)JDJdxI^>u_MgHvO&E-vFWR7dzU3*GPR9l*x=cTW7fj>_U6Iq22nCpDv z_SmY~f%EB=drGmnkreZl+f29Y=hlpex`@v}L7CeNmS+N z+5s}BoT8%1y6(CwK40w`~j#h#Bh>7=x|T6wiX>cuD0?M0|2R zl`&8vcalMn1n3Nt;khyAgBW>l6$z`-;64hZlGP#V-{`KI2okPu!?-=KE_DHu!*kR^D)qsNW~AknFP@^;A4+s3340DnWl`7@AV z90*VRprwvm5-wVXgbn~Q!p3JOK06W!o_-i35k-Evzu5p6mW5PI7-PMQB)^9yhznv2 zR8=0kJ48%V=hdbU#%?8XG|96JBNqEQmaZ z`4Yuqx}KorFA(G#QP_b#-#~Q6q?Iu5_Cx9hc8xke>eDhQIBv5^Ol*Fz(`a?h&7;P~ z{KIR-4;?}o1H^*hnKM8g6=6n^y6Y^_7H0GNN5d@GYycpEEf$w`r=$MQ1(HB0A;mhU z6oXxnzxbz}04=+Ley^xDI|N-6oLeR64nmMZV5-SY6U`@Fx1el#hoUy~{NP~;lmz1G zimg+eSDO{pG*Y`NzI7$pGVl&l1}>aFb7mtvIUq&!27IP$-;P`y^x1B1O?4BKHE7&; z>BVs-j8?ZToIG3D9OdUB31evc(N1v!dL5NosuP}gQ&7=uBMAs2NR8kWa^(A!!}Q|b z2#|2=@DiTNPpl#ti2Dmj;Cg~M5a=iybg!=`xCi8IXmOzKzh@Q;gIO*hzZ}jDh`rCz z!M!gUtwB8!`RuQ{0B%M)0ePoVaD2$7Rg{7)U zb|WO)N!y1TV%+=^Oj#KSR{Z9pIh&sZ?pl!GA=tS=gG z;5*0pH+2=@Y{5gJwPimt(_|9>xvl6~K(}SU*KwxH|LK!RUwIz-yzyt8c*ygacIsNl zwyLXjL^o}+_t=tL)mMg=Il9Ld4E$be7>K5J@)IjPZYKC20-Qu;nc&b2 zT#VqU_N}}c=S#PGc#dW7kRYLdWZP_p)p7$JPAC<@F7ObSku^;#m_=_CCQkw=Jcr*V zb*{NoZ1K%|sx}|UB_+(};hxL6V(Z$F_B}xEfz0gN*|!||Xpjk|Qfh6K`pL>O`aAo_;W zO(mfi;KYce1j!`cBk|cYYqXhGgW`Mnb<`gpmoQF(-32_?hst)AOj}UBiP7&S#a=lM z1%w&_@&H1@hBPQHA%R|%G9LJArqkj82q+?|01E^y@UEi58cLCBNFnLvR~&zSNRQ|* zgulg&+z7ajn4SHl=Y)hYw(7qK)Z0_?M%=T}@EOFB*S#`N(sFgu{}sz-n!? z*Pu2DEQ=ep2jPB>GJB4KzAb{igrQiZ?>97zNG^alhj5Z8`+_h+vfN6B5DGfUr$k-e zfZ_C|_?(w2H+{hCu-jn^dx9`p^y6iu(|Wo+ZjB_@E8NDZe{SRdM4$9O##a9CaLqNj z=-ONi>xqfJrPb$#qR^^^2%6A1r&Mrch-#yd*Y}I)dkZA1ukI%IlaCx9PgWiEjXEhHjJ0UH# z&SaCu#eqeDWJ|u=XvM75Px9!SAxN;si6=|^12`hYd~7e%J5#ExZW<3HbQz z0ldF9JYAs`*qaM^(E~BZn=(-)_*8h=cf}(bi4S-!>2<$EppuG5YzJ+kpK-82oOmu; zNUXBk=zX2KSOlPqMPshNQ0$MEtMd!z0AV5W??KW`?}nuAIvR3uO^le&ty3zEp z*U$yJv(k&Rms9~Eul%@aU*|m7GCBXvwrL*|5A0fw&cNkbHHv{<9r8CE|<<3!G zRp$9cJ{MKLq>-L61`##|Gdi((o}NEF$3wj|^|)uPgI?p+F+l=)QFotss@ILL99&?cj8a#zdEkPr%DM$law zlW8Si6)KhJ*f^h2rz&YVGY4_Uq8q8kug3HB?Dhjo2J4K~V@2g2U|zWf4F*B*(RNYj zpV;&6r#lEv`>1xaq>q|F<^M0u74zX?WjuuVQzU^MB*StKRx--5_(uB$J&On%2np5n z0`gX_(K#P)Ac+$3j*ZE^SD{=V6_0ZFD}=EuX+-f%kou4;lu7k1*VNQJaO6mf>`pjo z#M3IGli>9U*}XPWK%?XqM63Y1ZD^czoO@Fz7LqWI1_j!{#6Q5YI~^J*Hso!)3}%Q3 zlJ>UHjtzShK7VwE{XqeUc}ToN#7t25p$LvTy||WG8%p!PpZ>2d3aklu9N}eOrOHRU z$U+Enjj~ft@jLjCvX$XJ%YFFOk}d>vD_y%eym&VK~SgWc^m&3zMBzny=N z35!IOAkkhPcP6CZkTZortz#GQbG5^HJ#%x8uqp<%#R*8{{`W2m-zm?td`k-Gglyc} zZw?iZ5D-Br--S8a&_pvh#7dK5--nZddp9yieeUUu5*sj zL4p9*{RNj?7!<|#C)O|B{=Zm0i+{6%Kg+gzOTQI=Y<`Tv+hdC7m3eo-gD&N%L7KF^ z$=kL^re_wYV`hFX+vdvNs~D|2(~@vu-I7)IBvwSDe}u?{CvRS_n>mx}L1MQB!msyK z3w8DqxXq|e(7G=)Uw0vgMI!a3h&RWQ>^e+mg+w~Rb%nRz3lEO?JAOl{c{=dFB@(Q= zir0~w2fG+Jm4)X#)PBbVq2P*YUh3fCc9F7YYPFK-1|=3jIM%~^iWMs1V38YLnPiGo;I|ej;S(_kk5oWLap<9pI&`uDIOoQ>BK;>tU^z21D}bV`kzO5x zPsW6#<4sjWu^24=I46k?c-WfV9rgWoX)q5Ie$y zGy|$Wk>}iQizAC#B!oyvFt*?@fnL6;*n9V$&Qk`zf2W+Jq6g**hHE+O_$!<3d8Nsb zfi$9v`bR-8!Uj~m8j;wAp@T0N{Cbpmz#FHw9UxrdkHo5=1#W$$xrfOmXJ<($QRCbC zV=)9fvSjhkiS0XgW>Y}!z)JD~MpVE>8#S#(93i@v2+o!FmexjOme+8k@Fa>PLtJ!G zqM^$a#j1`ht-5jJQ$Z3M&Z={&X9}Q`c}8d;aN)SQxbT4i>PadwN`h;S@Zz-cBrBzT(_$8L%aW56z(JSR^J(%&r^NEOx<<~R>KnSBi-1NC9#bF z6sy$b>WCijEY~iTek5>F{R-)XF0C3>7!Qefw5$)~1H?xBkDEmN^Z{`$TX>ffC2|b0 zWDZHW!fwIa{VRe_6;w_M-KS(bDxzfA4BmsnSh^X(Zb2hOaTkz@%_J2?&++cffUTND zBZK#b)!LpY0mf3R_4J&g--?wvA2+3vR_nD-PW3$i_Wl3Na~$mpC0Uld?NPgQNs&<< zbp|6?WG8t6uRp^#z#PAf=qkERXzozy{6NDpD7rfj9|i{m&>NhuOS47>g;M`d3#M`K zp%pB}FmQ}I^>3!b`{G}wqt1t-eX6TnCfNyBFc#O=h0Q!pucDhuK%|U1U0}XEoLAP-W z5+Hj1(UihR%>SyRUE=e4pS2w5JNRiwM!0!^KauEf8N z4i1#_V;+SYYO+l4Qoms!f_~FYwM&Gg|1#%nCk=!ot>o#>4g^*@A-}H3*xv^+`RppR zEx>w_5e1sB&@;A1hYR1P|DPz6i_?#!F|~06^kBff(ZK-VEawn*5=I_|fPW%TJ8)1e zBtoZ%$p=lQX#>9;Gp3?z5a1K?Ig*k5jimu zWDis)v0JM+UxTltgL5)UW&N+^6qhwrqY`m_W4md%mn#WHF@Qv(0eFRw%1sQc0A9*% z2*$TT6Eh1nj~{Q8UTfJ!pu@>gu6gZ?bAXoYaJHQ#{qVw!!}$U;j4=ujUPfq4z=+iJ zA1j`7#c9YK&`t1$R;Ugj3PY=OOip3*=Ka-Zv@-Sqr|T)JSr;r*QFz0)+V7VzIA;Z2=?4Q~m zYfmB}%A@2Xgpepal6}N~_v5?@f_Ma|hyKD0V+mq|o;ER*>v{p$0aGrnNYtPaqXPNh zVsyNHMc!N+{tM}OZ(pAQZIX_p|J?iSdJA zFLoylpp4-jase8a(UZtPLemGs(}rd0N6A9aD{4J$@aqqZI*$r39MqX*HkwhyR%88= zs<)oS2oy1+sH@rV#r`)Dh^yhj`8@_Li6*`c0Jc!nUgJSx>fV5S_G|@@5i)~0BeQiY zg2aTVbi%M6FiV<5y1af58wtL~a8czzEY_O#%N4!~^#M9>Th(!JD+;j=Oj_3BRIWGlZ<6xf#TBq|$d@d5?Ae=7s#F-|qC{Y2OG?L?{} zzVjPEdsJMtm@(uhQQn!{;w946P!n#gLU(orDqaIc565l+T5D^ozu*zQ`x#2KfC?)a zyFa_{B;^pPKA&!c4G0*Jd?MIO2#Tvwr5lhbe}*YQt}xw$74S}jGWjol1{4gcC}>1s zrJqHGNT^34a9xbFVi@;Z69+*FcUaX%%v`xa5-qj}!+K~V;GM+arKE~ecLE-b-HVAC z5psoj0Hy#-4O;~NvrF){<;P;v84^y|NpUmFd3ixG3Fh$frCxt)s`gSPzZxC?hN!0@ zY`zIaiTCe@{m|Wtze2lWLg@3Bp}KsQU6PWuU5t*8{C@w?BR&me{KTh0$7`H+NrRp8 zDW2BTJ0JtYDNp>4sFHh@=3llXYua~ zqhLP^a&w#gSSjeG)A!-Niwp<NY-^CLO~9KoPh+n8vfTD=604UH>oOUw)8 zCyRrnNPAw)pSpugtK?Q$)MXKe6S&v)B|evLu9e%``poP;njM}ZFhVR$rH&OpaZW6Iq6u&UVfiWT)F%B}QtuC$~i|0aiPm_sNk zw5yoSImZ+vN{=PeZ@GOA7!IBN2VE`7;EzjxUamvtL~!7;_Im@DxGL;!nj*4o{W`fv zht#8qtAo`-B!N6Oz`RBS#zJsT?{Bup|4OH&}9O_JD6yEHRG@4GD>gWk|N9m()J? zsbGMLA1B))^AQP2fCg%%$BcDLOUo(XnaPW2HtP%1J8>fA=L1(#KG$P5L=e4DqTd;7 zuBoNPoa@vUfQG8ttXkWh$aFrv$2qakt{Lt@?zll!m6#ZSol3whjOxp(N28G`u4H`e z+SS=b0nK4?&oUf&MKg9NM;n+$z}nY|UgbCQYlkWLWc0g==Z6Ys%xlh@JH-r zOEf=U!G&g^0V%`24;H>3N}4=$vaVFy^YUYf>)Ugy5=LC~ohn>k zzj~j=pY{8sTrFQ{!t+0Yo~BI|qqYhrgZc(7G?tYj(fX<{J{|8cKVlGbUS-i9^G_%1 zFd49tb0s45WAc0oc~#Z9?_qwFr^XS_ia9!|mTyD~hBIw%jXBpq$w)gWH`hj{)R6fL z>4_P;lzt3~>7Pka68{WKI{DAI%a!c^jQjlm@Di^XJBT+Eeg)t4m`e4bJDYC6-d|4l~W(rUZq}P1?PKs>w~Sg_IS{ub)IR= zs3ftGPwz0{-TmlLHM9<|t7dZ5D>y?6IZ`@&iKX(F!%2*vySm2O%aYbkJ=A$d@qF|A z>5BJ@!{>!xCG$KMW7C_qz_Az4j3pu#1vKbJo!>fi{=F~WGAb&g2i2di*i}_kwdk<2;50Y?Yj?ALmsD;dzex`$OfNNZc7~dF#5ZgZk>n8;&>4U#l$Mj0PmhPGx;)k8|vx4mbZWKD}fM8X-zOBsFQ(%5T3i zBDPK3-Rh6CU?1Zg&_NXJ=V7dS6`N1tkl0JW^6}$Ga(To7vX34=cE?n?n0go2dcvS_ z29_eGSjL6X_YSHM2R+&~Tw=L?d(dTKagAIw&Mn3ux6b3=4QLF!cjE@D z?Z4{*`ZBzj2Aa0~(=u(W(4{Xpl#HFm!5M&$Vi(seCPz$Lb@ zv$IdS(*C%rD{RW8bPm!9hkV&()tgQ zf(|%?ADd^jcr1Uqzeyt>dC^#MJJ9(wCB59~$8@MZo${_-4+(w1cMK&~S9tautz*^1 z{IbBnKu52g>jec5DNlXexns|s5u?VaPsnP&5314%Fegi_`D>T)9`c_{q~I)sh^zB# zZ>MB;8ZgExT?o0yST7QD*vR~1?&rQ~-kMv+_QR>8nFYVDnzdHaU0xtJ+`ElirKy2& z9C;^2zT+s_95hKR?s#LcMQYd4pqqF3g!cSZ!HZ zWIft18hgzX#Ko1)*tAT1yBp2OP70XBT)_`O1Oi>O9%0ILIwHs?yN@`KF&(2e4S0EZ zZ&qGlKPZLcW4^Dqx0bk?f?EC;vDg8={D`?A=e5vnH zQEs@{`R=pX;^Ja>O@Cs;M44lzyMVj>9;?+xejS<4?P-c@njHqrg1_-tk(O0MnHcC& zz5}G^og?1m!zbp@aYry8y}QcHJ=u>-9m*lTBW!eI<}a?(D+H@p&HYGrQcW%wKJ~kC zEc)zp<4br`)q_YXhO)VTi2pPkoLY=v)m`ZA89Q$7AbhGUE&TC2bvK8x4Od9kI=)5-j%t`^#`rt;Uy(1 zPq!DBhlhd%uq2MS-ONl}zY$`cGI9b?cXRmhfC+rC=(a{@E1*Zp(tGV&+bi5K6Iquh=0dDlG^S{BBqf@C$F4{ zL&!SHSCi$Xar#AY5l%>E+kVqeO{0@FnPYT>?`{mHO0Ri4!I?CsTjf!~dAdEaHz=MK z_>HzA_&`wbN5(I-K#?6AMb)k`NJ2gIh~Oyg7H}EkI)1pOZTp%sa>P6e5R#QSh8qa=!&Re1?x>Oa2+NR z2>&Sk2_S?epHHEt+5GM(-O7MjmZAww4Yz{Fcjc3MUy#Y<;R$4cMf~CcTb;=-TQ}Sw zJJD8iedu?qoG0s0bw~UH@%F~oTDqdr-ZAs|bwEQ)aa@Ow9~EL_!jjcC%pRsZd7!Ni zH-MPw>7DZQY2OHT_;IB^KDKLoMHTy%Vj}pUsyJ~&WA8=E6P#amyC3L^txm}*EL=De)ob+4cXg%#W$hfzR^)E|I&v>n`dBr&Sw3kb{jOhXdfBrP zn*9UHn8NS*rGG7J9mBLUa6v~Kj!m2=d@#iaZ|Nj|`J}y5V(x6(iNiG*qn|nvIjrCH z-Axf6?E!UQ-K~kpJr}Qe4F9Iy5{d|krLfJ_6;?411(Wwub1E#4{i3a%YxzuTdQ!M| z_v>N52pf*(xp|>4Tz;OOo*AE7{Ps;0Fs)THMNKBg* zIapDFy4QaAg~LHiaBR&@-Az5*o_o+|RLUEJ>#M&eskcovzb7}(UifY~$Qm3YvTeX} zi1m)rWV$0Q`W)@(M%vDVs+$MQ=Ul~Aa17fU2{4t<_Bvq+g!_9%a?ckMmDQ$ zJ=d=>#JcjxD;@U{zjY!P`pNswct6vk3WU@lojv;EnTYHUTZz@bSxKbYZTCKK9O;Lr{3g}jaozx zjXI~lJB_>F!i$IS%&4!<6TTc;LMAd$Aa!sH1M7|E%EEj>IuhMI;&q( z!pogW{z-kjc3%=zoQ}WLuh)HfaO;C`*iF{S)+5QPfaab_G9!c9>Z|Eu<|DJ%)_v>D z))KF=na%({=8BVgLxbx{vI1;Y`p;Cxk)Z~<=7Ef22D(+HZ7 zcOnI^!Xrc+H3@5gsiO?}CR z46?Bqlk}b~__LGBHDVauj|4n> zH?ers8QkuRn-#B}Phhnwa2i?$vl(&7*ESuodpw)Vc9`6}bn1~5V@G?sue_Y#bC|>g zFZpH#vp;b%Ajv=Z*CSH>yUFuSl_gQe%QS+em~fjtIqA8P-(o&9XW6_l-b`lp;Gw8v6oq6bfhFcBY(Xn#Ou92OdSzg zKb&TW*o|b3n@n2i@2+I7L}%Zgd)3-R_+IvooeZ+1SL>K$>f^*QK-J&2p{q+e*E#gV zg|=eY^jikC%Bk&~c_UAUB7;e3J0UoO+q#K<|dKCJ)boS6RL@$>z>KKtO|U*ton;m>6=p|H9?{-@qd$_?qyiGu0_MUJ(uBsb@v`n zP3_y>XcPq-A|O}*K}3)yq5?__D2hszUJZzdQbj>TN>D6-0wOAHW3bSh^dS@Kd&j%q_}=@*8!zMRBS}_P`Ip&#bN*&17bc_%6xnzfe)xi4 z6Z7Ye2L(|B1)pGP(PuO?Ykt>pxu|1m9)?mrzN;k9v$!xCh3x_ByO{QwFZOJB1lhd# z%L*>KC5Oh?H2h<4$!+PS3(X-IjMk1nt{*5wpgx7yw$0M~)z0su6Wn@V?ec)0OtJ6W zDyHT8k7$~Ol|fy_z5;`cd7Qib7mgrm3-iLxI*Q5w0$R2hrVu)mctWqgZU=jMHRtPa z%_W`f3u{Ewy{aVcFEJx1cns!sW{xGQcQKd{<$pBsE5{<_TYi=%cN}-rR_-`xn%zw8 z$hcB7#~qa@x}Yx}EgAb*=qZ&$YdA5f=f^-GclRz0)_CEfQ;XxxGsHgIL zLNB<@Hd87{wn5qO!1jpH5I;^W2aby`9EFZSc7i;2)Wy7=CJf%3hg;)SF`G3RFHgL> zcH*rJQioo~oE6Te`NDDO)(ZK`8h%i{Qp4CMET0kV6Q;q&A4~YJOHaP7Jv56BqDar~ zgK&}EGTS$iz)Ut@zI8B0MVx(WjZDLCRrE@8U)w;3rwmfIZ@SMrI|KdhkMDi3DQH^_ z_D8s!C>Xzw3pM$$d<%pfY^My9XO#F<#O7mW@S>t+Hcb|Y`DbD})1#YCHges!-eTv_ zqna_MFiah}9CBXTnIw3g`pX5_04Tgzg zT;ZiG3oPz(Ro&3$NFh)$A>cy=QzwrIU61B(`uI>Jg+O_qc=hWp<;Rgk{RVJ#sM%Vg zuT%mJl4o{Ej^JDb+Lm*lAUHS{Icv-a>-7*V4#Vw3$hu-Y5OwH7PJOw6SkdwK87={w zW`2luSS7h-3Q09xAd;)6upQ`VB^^JiywU98ig--J*@H2ezm<--IG<0PcPTun!$=++ z(^5{%q0-?#yIq%STD#7;&D)j;zJMMwRzq^#=~d}bh|keF+;SgZPu_RBQlN!0wHfZ{ zy`Ss52&(ij&YH15nFYdMmWi7wlP)~jz;d$euuIHEG==6LK77bA1zISSC|10BC%#9m zFwG$V#yozu$B;u9SfDTV7N5Bvyj{2vJbZZTn5X8}%1503VO^xjw4Rw`MBrrjV}x#v zUO!H;IF`7+UIkU+E^AD*S>Aj<9Gk88Ayz}3QTRj&k(*&zvG{BWjmdgq4l_6FT}Bk% zc6}GB-a9QZbu@GakA|KmVa(M^Ei5by$Z&P~xHFMLiO*FEksIvPV8I?8X(Q8R7EaXa8oeA$NzyA6NOaEW`9cRAAZ23KW zTY!1INXKF@S9myW*EC%^e3Ffgjl-??rtmLcuDZetYtptuxkng?`a_4VX?2Pnh|^6; zDz1E*Oy%&_`#2OaH|rObKeMXOS5dry;XSae&lj`6&H00uMu9G z{S-e#x3j6G!Cd=5QVktmI_5}wD0lQcAMgB-ekCOoCP8)%`+QJZe2|oQo6Kz~k7#@S zbuVi>PM#Y(dkgW<=j5w~AYLe?hH$2P<&$IN#DR~&5jX>t1=@Q^GOy{{_zrGT^m1{( z-=IOQu~gxQPOz1zON9=SNS%IAXFYMw?bl1H@%*z*Zoi5)a4H9?%~*UPE)V*Fwb@cU z)o6_t^YF~+6MW>j0AfvRHI-9w5pu4(#sNMY=PI~S` zq+h~~vcFI+kk>he(yIU?dDW5sl$S4LK-0hD)lm5|nt-K=8}mQ-@s~E+%~H zU|+!V(v*6)E(rSz)FXP0Pw=Sf%dm*Q!~6lZ2AF4#!sQ_KtR&XnAo)ZxuM^hG@jt2) z7d3{9oy{P7TgNl2N}3q-Kzg=Hpb$+-aiiJe1?*8+hHv3hb@p~4Vgy4VVV(48+8C2~ z_i{bfAqe!g@!>cbm0tHj5t*#_0rq#pc9;;Ok%W3IO#&Gvi(wa=Ay|N!9NrUr={CbS zTY8)3p-QGEX{k;efrpC58`l$wo+x2{TC_6eyl{1j2ipzdb#YakEh-IZC33oH9djui zcOtK{Hp4!tHw%_p8Z2mR!9V80|NScr?sv zDB->N#mWx_HTH}i`v52JM|qMr?8pRN9-QXIp0co>PgjTk(Rh{!3k2RU`5A%E+of^OdS zz+AtzDM>?}&cUCTB!ZoT9WB+mT@`UNlyV8XP0E4Uim^8MV`+*OFBAZ~j5MWJ&MMr3 z&6LS0-YL8XUWIOcmI7V|L43dI9xd}OMSC;m5H#@G_8~uuZIZ4lzWA8p6g^+5yC-NJ zpUOC#sC_8R{1?mha8=CbwMWysG)v$}P4oAA=bFWb{NkiEq>Db7xH`gCgY!1CWIodI z5RhJ49SaO<&7hM2um3Ya`u{f0e2GR6VJcMioA3 zlPiQF2u=ATl=cyt8=#)Da0hu-F(kJ8rm4ST3sS}ZN|ThEDx^c}yx`9Tub$$7tkbNb z!k>^5)C6tfqJGhRnf%Xhp4Ky2QIMK>9G~{v#iXY@YaF??51HpLVsr+qx6rx-Y%a-j zki#%RM;&GgG)ltxWoBH%d3)j3n7GxCTu+w16S&AvoOOeM+X8S*es1M+1`*|aQaO>I z+p>e5`&-Yyi7CIWO9=H20ZNOlT8@Rlxz^ih z{r4i9w-L$segbwFU$$+G97DlT#v&saN=MndtbeEFo+EZ@)?O!NEtTp&U-`KGJM)6% zR+Z@XavxeLeo2*Am`j z8T%dOx2k~yzw!PmdV(*gM|#>!F;0i$K2}$2K;hr2EavD3S^V^mmTlN+;^R;0GVo~y zRJWMgZZf$!+Jra-j`sub`y<-o@MI6Q8>HNQNS*ix=TSyQbJhKcEe>jE;3>1Z@oT`c z+DBUFZNAbth0jyCDN{R>Q4&3uKIzf6Oe|d-Vk&(hU_Hm+qx5EiscbOlb{+FRsc_O` zULRa6j~6PhVR#PM&KNpr{S;mh_81mkYW;@5Kn+GPNY-r&#Ei9FYV6;BQ%P3lBEfdI z>A?|G;d-p07(8qMk&H89 z76axkw0_~E!3~7#azVEPgk7e1wBY}HWm^UmOMCZ1WU83z%s*~LGe|blX2h>SJ6K&& z%&b~(WqW_~!ld=ibqZUL)(1);O11J}xneX-6biS#OV~}{>BY^j<*&dU9hMF2#e-NO z@!;@%21#Z0pzYbWx4f%wWb^p$z@3@R=5p?E+%pvRGVc$}T9w@Z+Q}7>wlClmz!o9t z!?o`=frWS_Uh}an}d{F&5~Bz`Aj*{|Q_7rPMAOh7jWnb=kg~=@ifD?8L zznptjnnXEl8N`l?=F;XmR4)A&a`-?X$f+RIC;H>*y*AamyB^Mm(P;Z`1?2xxEcKte zcm;uqtoGsIxBE~Z3=l#vgBO4_PVBBb+9wPnVk3&fK=)~z)(NkcM)VWRJ)2>VJAuG6 z#{+p3096Wm8Lxi6m!I~>e-66+&)NUOq1HQ(!2*+9CMN5{gi>c zChN%Y;}eh*(l$Tj>#cJ8cN+R0rQT@*9zr2dyi_IwI($VC$=Q?bXTEv&gJZ9oc;{pyvH5a zWlpTIc?dQI$b7EyUEXY!K2{+NeCf+@{mN=@3|bhoV2Lz8NYz^}1am z)85j|0P1ERX}MV2(&ieWL|CX5kyvA zulR1k{~3udV|h3d`8~PaNtPtGy;|Ck@{4YJW^#M2;=|{=Pfq#lg)mRApqcZQZ1VlL z`sZDb7;>ri4u&@u-+J`XDSm@^|^X&I_8Z zF0C}l#|>)f$vnYH?iE|bZei;2$Gv;KMLw{#xYANr(^e*v>hSEct|f2k*3&$oX%$>1 zEuBcjdU5pIOP(GK0zF(Xf_fAfOhekPq+oY#wN3XwZj2tXrvOdQ(G)*LcjLA#Ep=;i zG+!CkCkS#?Ji|N4_ZN63yuKWy$bXF!j+QSHvsJV5QbaBAZ$q-BA63~6i##t~8on38 zQs@Tv7JQY={T79!tY@41->)~?XI>)LtHUpHt+J@@PEhq%1M4^A-MS8^5GZy{-lm zdqDJvXzTfA3+=@D{Xyzz-V7UhPu}@5Q`Nvh(_b*S=cq3RLWOG1W_F!VcdmvJJMYQV zg+WsPZB?d6AsS?4<696ugH$XC*RxXB{aW#9{^C-IvH60?N98jFq-*+n=f2=YB-UMlhyMm>0Gae)Xg)4a=lQZ0bk~^ za-ZUj>A3E!(wwf-o8BF&+kqm2q#BLA?v@=t;6@`&>xog+D+i}gj$|)LpWdMG$G_XL z$9Fg?pY(mAkTD3&9?i71NxjfjJJqXBZu=&=TU_e!4a$c|hCX@aLll#qK<+4&x%b9? z5EaD#i7zG#`WFC*7z01Uw{9m6E+>R!4|digO3*NLmdZ!LM;Wn-iZ$Kv;b?^Lpc`V4 zIgBU1>iqNXolbl$#2Fh98o=VR5_=)o_-mz;U%2rh3KFK-r&Etd>8DDw)D!h}z&Xl0 zs%T{G-zodh5xSpuP<3u*cw8^DDe^u*{$^wV(Kb1z>P-Ht&P-VD1yV z+kDKk6(YDlzwt$5IW1dd=>#y70HNaWu0fsDEQnm~XFc7zq!-R;jt#-R5mFv{^BEQ4 zhSuF5e1N&4o7m23nxocU^z6RlbTH;dzF5T>+S4O1#_uFhzl z`4S3fq4Y38x;jk&&EZPh`!DRz;(rbMJNAEz{e?{a2lhuS4t>`b0EnkmF2+1;qKCCl z_wN1Es6Y>P2Yh}*-oHS;R?TZ*Kf^XRMPq{y0rVzOwyzOf=aRHib($6ab!~RtpxI~Q za=@XS7j>G#n~x#E;H1S)bP{{!fK`2&LZQUuurhh~i4Q>xP)T|<4-0c`{w0-H(i&en zEiZKHR?Gafs(9@B3Ef+|yO`lUgr|G_`iSv;7e~Nozg6WmZWsFL3ZR z2o-b;DVt7iHfBuw{JD{|kCp38)FSDhD@XH6##m^Sgo`c-Jh`C6o=f*Px+ zgKu0Ub|8>AWCUv(ta8o_jOqH=iQb_8Q}5CT&HEqBBs%u=?hrSbqO{8dYyGi<6xN*& zdSGfe6vUkL`C}1PZ))r6ObWx9-eTv*>D44(OxVLQJ>x^Eu?ruBTo-t?CAohvy&p3n z|E|4bjpF_|UGRit9%Wum>JYMSe2@*&Kc=T(_a9rx@Dv_T1cV>*8o^)$iveU-U06%f z(4#&XhIDOv*}7;-nJKQcw=E6L=lFz7Kysnc-2n24Zt0cD_pb>4LZml}gs{?{AOpJM#=le|{%B$Y zmd6IqKVcW*5X7=906dC91U^2+V>A{EWTrGg_MC^9SLY9i>8{4Sx|$V_s97^m^M1)SoM6-?KY-*xZSeuz9iyF+adwaJotgMQqbSqC;jxvA9M;K#!E zE<1mUCt)&sS&S>XCh7EFdWI#8T3Z8y<_{t%xZHb;giatB(_sx|rlyXau~>j)!Pk!M z>)-kCze}p|<;+RC|7xyX=Gq~-Elhn@Fz*9!bpfC`|8?yQTeJk*u^*fNc<0~>DRANvYkJvjf$@YqkvPD=&0LPGOIYH~m|WhSRiZQsoh*p{21ON1_-^12MnTX4%kN?q&O(qkdI-?D@xMa8`2BEj?(09- zwo{`$2jU{UqO2`#%lv-!0&L^m9R9tt&QeR-Er7(yiB`!x9F|=^@e)riu82R!nb;8%?=0_nrBgq{d9b?BLLPDTDLiZKn zG#2stNLWaS7|%xTPXXvHo9f)ms@ zg|Dm-NF_q^##%YxSLf>>=Ivbur@Arng%1+PE-Y6-Hv~#(NCB|P-pip*ewkx1-rGR3 z9-3|i*?3W$0*a87G|d}quDM9_?{2QFtQ7xf7LJFs&Yj_~O17bP8%kEEr8QhYU}nL?H9V*_UMPcgvYHFPDR3^bANT^T9HgPP zJ_jwd8m!v%zD*(kXnrb+Mc-FeGKZlV2EB=Z#hG1$XYqwH%y2gdf@nPR+^za2JU`$Fj10&2#zk<(TT;OZXqPP?f%7*p_tX_sHb%3!7`Q>+Bze z05gm>kT=MIJi7k#lJ~G{P_8PT490Z#3X)U zQ?&2DD&^?Yg>Z1JH>_WBXK$}G zY@dASsKCvA)x{+m+Qcd=Uo^{ywtCvKND+K~e&#sv8si`WB;@%yIu>08V~dS(!QV5xf;~%qYr{2ON65e4Ay!(r(qzbo;=rnr$p+^`~NCj z9f@PDA*K8Ko6dM*M;2-MuS-%>Q>Vwy6-3iz6ZPf%T%l~KwY&T3+YM&sfu{47M!g+h z0v7g4dA(c*f<$h{34~S;iJ=`uU<%hVo5hN_Mi+hI8?N%>8gGxPZtQ^Ewv&-`$(V-c zTbCvvZ{@D}GBGg# zTK{qis`$Hd13# zA((@)_?pOgU%$XW*4z5<SZAP=c# z@NxzAfq==5lg0%>9(|?XxXa|1sjbO64v=DOWuOkCS$otuHGaQZoUZc}@AraS?a&BT zWGidOGiZbCeusT`VTN~5zr!}YNPL#}`okMiO0eUl16{+|K$`ZdvU7EDnS$ahquN~9 ztLLDG4^?Ny((bd=v1Y=Y@er=v;wvmt7a@veBc$7}Xt{5HEuO3145OHS_MM4;VBY&sNI3MgMrunVEBA z;{gC!@mK8Zew^uAB%Di*Kp`E+CrPKAoKitwN^akjoU0|eH$z16gUYTK>A^%OP^#(c z>x-@UWma37zP3+gUorhsHGI4whF9SLm(4 z9)rw5wK~YlruW^b9dGUE5a*uYHOb3ZYcV|9MM`?~PGm51M@*R8ZNan>vflfyN(ieh zM&6p7n6NBH=DPAuf~Tyjr*}0ncT;onT?1HT;ru@)JBH5PhaoF1C@8qdNVd)kFI=Os z2x<*&m5p{lH@O^tkW=T|aq)5snZu*y8?*i!fTK|(`@aV`2Bo9UfX(p?O2?m7K{EH% z6H@(cRwd3G#g=j-6s}2^LEot^D7f!NX+gi|GmQ5;pUr@|c&?_drX~wTm0@2rrGlO$ zpppdofjFcL^fC^qs3dITMsIP#k3c{^K!edd$eovM<|+XA0n$PK17d}mAqYPnF}t@; z2seEBr@3TK6Tl|_EtG<$;)BkQsd~Tul|EQrPxVtrAP@a1bSKFJw%{{>2uys*(w`K0 z2YSEo_cvHg=Z3E7SpkcnB}7BCM>O~}sIrYL;dII~FfQ&j4SJ;;90*L%02{M#7F#Tn zDUr})$fKOcf!E5?Z(Hclo1zo{kcHTdI4k*Vy&LJb#5$w+X-ocqaS#uUF7>zmE0hdp_1-axqix3>A( zNBD(gd`#Pmrq<>;);v?A=UQ{>+;;A$iO8IKzq!AjHt8jta+-%TvpQ%W#iJ+#$M>hp zCbpJcy^$^}9)(QOI(^rQ$^h@1D&*V*-yv(Fc(tOhOqR$xQAC1H& zUJ?5**m$hOq86(&2!m=v5v2 zrfd~QXtQ5=Bc0qU*WR4cSDCHTq^tXRm%%rOd<<{dd9Q$x<~;}eT;Yh;oZ~qqb1F)1 zFAxeD_f4?qCU~8ko}aPt+W+C_+#6UlP%m~B?_rYtzI3fq)g(n$B+;?sRL|dx=*Z(s zzdbAQJCdn#jA1&T(?HIM3z>CZtmp6YM!qy&F3NI%sk#r@>0Bi8v$14&CXXBvGQi6{ zOTAD&MEn&!r(#R!F;S$&hlB)NE&m-GaMdbBol#F2EU^+WnJy~)Q-py@3gft$TB}Zp zA8xKJo}M?qAgshsY#mY_!q4<#&zY1jY7C$LCV73R_*S9>Myg1&_JZ5r@sXrWl=jne zLn%XkM5X=pGn5KWnc#J>wlLD~QcY|EI8$W?u(BJ1Nel|l7*BkH}r6x^IkU`yga z`lFHw^)iCpqs{&N=%1m+r3xxG!RT^ve$z96ma#zs@_`biE8sQiL*C{+U&57}fwO?5 zVC)w^&-h)caM>uvEq|C^5Kaw%-z>QhC>u#_g^(o;$z?lR5nxOn4 z4=tnFFtW@JQcZSTyyj)k*eUm_)8Glme;^6V-~tcmdX*Tc5q&r>8P7j=uAOssuZ?Kq zvm<%dK_qg;%G!Da70sF@sZZg7@D=;^o?!lYc0ffb9DWE z)@0G0Yc65|#BR*!F+FWupy4+Z`|`f>IJ)AZq=VLoY;ZOzN4-MOL;wxGHlQ9 z=D+w_4~+tNK+~8iP^R2b8sh3uDhKw1L2*e5C18-3@C4N-E-Gz`&0oLPfBmYPL?`$O zZ#axV8sEnIBTE~Sd=ukh4_{A?re0p%dfs2g7W09AEh!=IE3`p8h`Q9@Zh-+&H+a7v zN~#>+BH)(yW7Ws`j3WN&jM5<0Mh=bh|Ky8u;_PdL*P*w9m!o@0+aUTiRfBQaez@HfJu5J zu-8q^Yw1)h1-rZk5(^Ho@5DG?lPlvn4GrI3Ktb)q__(2)YP#RqSS~E%oma0nL^~4x z`m1e^@g?7b>Wp6}`}dj`0#7kFH?RprzhIf`*oKAx+f+SpL7{6nP>q?Lk0A-=YUJ75qoID21+vOkmiuaoz#8tWaZ%G+C<^Vf7NU`;`d+NMt;#Ggl{b4 z=hE-t@SSNQf243Yi;x>Y*VgM?&4mleM6&L9nK=WBXoXUqj7<1Z z*)zc!cqURpz9hhpE!sD~OhkHUb+3reZ_u)Go3kHH?hrD+%fXt&#?1P64XB8KKph$T zu07BlDtXpzLZ<)uHOg*-_!hGCVns75BKtEWJ}g|g^Z3Y$h>fm|EaOvx$LC7?@}ZK1 z@@ZtiI206H=R)6aA4g@nAcPoqDcE2#r8z}MPF)l9IPXOc>wDabpmQQj@Y7@c8nw=^ z^br{!Z96q`l9b)z5y?EgAjgRQtHDXfq3IPDlM^-xQNe$+S5YRXlSE2KU+nENP-4DI z?Ujx2zEB^NvU=4qg8x_fb}|?%7va48`>rp|pc6DmL8#cj+Ft0p(Z$ReE{hfT@ww;U zwBe*nSI0NKllnE=(_y+i!mK<G*b?JqL(UFI##a>^q%qe8dB>|aj2^>RK$i$?P zvOCYUenLoS2w~vlK4S&(fu?T5MP^vyieToO#UmWI6};9{hqx|$Z{La=cPHEqoZDTW zGAP|1hRb=j=9jgzPHJiA#jQuYMP7e`AFIz}kxm^^(S=U@Ji+4nraK#^rq1(S6wMz! z@wn3}fH8d|E261caJ>E3&L5G@mEvQgtkP*u-jdH5`_#8tPp>UUH5F;i!!`oWT1Ivr!+y8_#m=jUGl#tS zYXnFEr;mnErPT(q+%PSSkGGO4dHUT(HFz~Q(x<-7b+YFc!MgddnLfqy99A?TE_Rbw z%C}MymkvP7u;Y{z*5rniIpWM;=e*Co$us(3(~l&%Ig(nS1%MwQ4)?URG`!nVWOLPG z`rPjL^=J+rW}9%M;?Lcyh(9Lj^}Bbk*}N9r445nK zu-jWUmUFhJ4N|_=JX2*-HB+NP@BVGd9q|2Ug*Et5vR2F-65F1>^YNH^T2bPyV3PGW zN@h6vwZTkMt?Q=7nS1R%e38@$I!JpRp3VIIEn@9518f>@yC|?39 zmcJyVUU=THBW1YJI2V0?&SP%iIZ|LyUS8bE=r-{;WmM6YCyX?mKc*~i^=;?Z9s8?(%wszuprXDX6i0u>r!%ffd^a3OspyG5kKslp<>2&YHL@)l!QxHKo-ze* z+{DsVeSZBI47duVpZ=;KZ^*cA)6c2RxyNrD5e8Ot zLdq{N&@@h#uH9m%*Vb+qU7(ThcudiAwzKK^U|&8-NkVD2iahrN70foAW)%w~x2%oH z)C5)TZCE=uI$Y;SG>)7)s3ifnjSfkPYvu7#>u^ma({+BGcKjOyg|76w-J&JiOKjrk zD({_mc|TF*(2MWw$oXzWx5AU7b*n?>Hq4bh0N}tGPtBt9Vcxmi+KEoo=Nd)hRKsj*I*?Ue9+PH;M|n{!{<#lX@Pci zOOsx|@z0itNnYM=N-XttB0Z?pz-g$1E5k>yd5Z+nKALndK)CyZ+sjG(!8F zxAA(XB7&Zgj$xdt#vF`FvgK>8v{D8;Toq8ge8PKeNiGo%+?Ob{Ssn-z&Ek)`#~dRo*Ximnu%5 z@iCV7=Kml^JUTtRnER!8hD+jZS6%z~Ouuw*F&5SuZi#ubMTx8~i%zk2!I3^^tNW|* zX}JyPkNl6S>~nSmj2;aWwEc`wao-*X>-StqU&h8X;8d$?F0b^RG>wZ_Hec>)Ydh{x zVqZ~0R^dOsp~O|T`3@P~N9cOe%=Ye2^Un6;K~Fj^6{{Yf7^OEOWc9LQ7quTb-;3PM zPp>=)pKdJQg%Q06NW0-fw_ag=*WSPz?1Qj@pDP(uI=e1^YsUY)_PW({zbSRXJ=kw% zj7vTCDJ=8D3f?(|dx|9oVkegkg?h0H-c9wPoY;O(?U-eMt!xND79ej*k+{Ud&9HR%|DasE@o_m9w;8X5^L{$)p zHvM%@9v67EtE}qR?jfT!)X^8&w$~dvax_MdTZF@nCo9tRDmx$8k8d6%ReI2uZokE_ z2PvEGp32P8noMa5$`G{)fTu9Onw2!GsH>MKZGFRBXnWjyo*&`q9pZ|<0*XPm43G3{ z-wExWm&3(g?3Ua)Hc-O6t#%mf_1!J)MYgDv@I+jl*)J=w+I#mz*OEsz8!xoqc{rlf zz0ey~;)d@!!>tONID*bUp1W05aNNic6W=^Wymo9p!Ic(T_3lP9@2kv4} zt3;06`%#8C-G#iY28jw9Y;Dgi6xi}U=NS%oT8NHvo$0G3Uc4^jUS!>*$M*vSb&r`T z28#?kG}-pL3kLm_82gmWWU0{}4mAs?P^lFs>4|dv2r;yR6SadxIIsg%E!|tA^LAf- zIKg;y&qY{+u}*EHX$xAM@!Hw6L<1DyQ!tKB4WItW{cIqYSp*iF=F0wyS%09MFCg&l0thGn`su>OA+z{)D4Ql-{l=1dDMsOm3 zcB29xqxC8N@*OktHQWYhnmC}WS~qvSEg=Q&8(XmC=KjoDY+mc4y-dK1!~5eg&0l&Q zh?4yo(BN;k&3=ms6wV_pz{2^uw6QI2HZ+wFGGP-Dv6?yjl(} z{EhV+a{bB4(U5@vH=4mRI0Ecoa?pqe+}GW>*Ydja!B-k$}|P+}z)2*EG9%w2P+bWqNf#VxD_}kGmj1gEf?h zT>dEA0-k{V!a+ z$0Rb)WJ7;n&72FBQe;|_&tr&*Ax%D2`{3NNMV~JDF9?$vNW1mhqEIPbt}iv2FxNgBn&ot@9yd zO6R3KffA8e z{KPd6@4@k5MMZ&8^)y{$2@lr^={v9vDydHm%|p&+E<=fTb$QsWU!5IDSO5wLp5EdS z=qGzeCYaYtU{GpHfUuSTN*tuEbqN~j!flz|exI9b@Dk7R<>p3tf(l`(h=2~RCQj%Y z80Y|;g_77V02O176!3n)^J0>|0?E*z>O%cK1(Ki#OmrY?k>DbEw|^cmT}NQ^Nt@{mV&ezMF9=kEaKnenY=03V%hi6*XSP9dMI zs>RV2%J`APL~5yU;XxN*6w`9&PZTvWdz?X@dYn55Y%ulc#dz-kJCwKS{4O-WVK#!E zVvWn1zgM70#~Su+2F`=oD538e+F=X8y?P`DGmg@itegf%(flzBzA)S()RL@w1>q8} zhIzQ3bL-PLPDXLv1{^AUg{HwqYn&(u*WF|%NT zl(^13wPqp9vp*EvrMZ4kJz{IwGV0zvKJxLAiddGt&k>S|Lgl@Sko`e@fln$KxIUFG zLGV}lJ$$#hl5g$i&2_`Ao{qRJXRWX7YKdi+JW}!F%6j8NJtvp-wv*1P7XN-ZOkrwV zCAl&ESe29;qp1>=Wu{*}yC(hmD=6pplIK#4Xe?@UGwqO9lzRc zupD*LQ}9tp{iVZEOH1Ax?FD3zC69Ie$TkKZEX@XU@iAsy==5 z=F~9!5yqEzeoiC0mG6z7krc!h78m_7*m8=|J(#Af=BGDj)_V?;XHj%f7jlmrI-h- z`v!GE3LlhZWMx0!QhfpOxTY%p2d~h#5ak|a1^RE{L8t8pCoNL*3xV;MSZHyiCJ*;# z{PyVj%t$+)sIsB&7`DHtU}c?bcN5`5b1P6{JL_Jlq>W z*M{F-y1lc*o&{;La=Yy?F$<|&SQnF}XH#$9oRqB~etCq5*ZGKIS;LEUF!b-K9v7WA z98q4tB`=W}kUWg*Tg&;wD3HoZaCNNx-gD(bhsPW3?$2l6X78oB{XW3U{cYExs)DfS zMSp#-VdA-|NE!zwsj3ToFv@Izm}u_Sf%HuZdlb}#^z}ur;(t^jSQ$$?o4LOJ*Fg5t z9ESPTKli?a^H7k^ab@MK>4cf+=rdmZdophh1Ttuy-7d0sn!`1ER8=g(06M&SH)lTrlZy9f&YU87$1IPCdD?~)z!M>;Ba#5)~%Ouke?6@ zS!eoMTK;5@XF_;yZ`0XBl1W`19Q;pv&lAVjR zvSH=CBIpL%_&Ll%h53#nu2G;;@N-PY==Sk#Cw z=>GcP)6eO#P6fo$ceVjQTA{7^pU*I_ob4H`eHc2Ik3I6jVPzQgGSAu z=|0ucy2M}bec~BE?l=~ibRy!Bsx1#c8C|?^3Az*jZyc^dWUo;ZJL}@9DI84-^GAIFxy-DMzO zoRzK|-OVTeQfF8A>4HpF`S076b=QtPJF2%o!okzlyu3fBG)LM~P$xd+u;5l5mrW)N z|4#(sjMCYsMngm$LDEyPP_6SOx3dm}iJj#M9V-28k4R`R7ZblNwS&<^8h)DtKp(Lfwpwrp>|!6o zOgzEQDk7>mTb*}UD7=!Y%5l2Z3=OlkyTU5HZjkrkL7 z8$TU#QA~J#A^21qE)kE6KSL60c5S=e{)(SGa!#c>Vkl(jSnJHqul$I z4Fh1xwx6<^Jy9d=o%^9|_YcNQ0QBDceCaiF+gpY#Fp4>nrFO2px9kh_Z8E3EOzn-$lhm3M zW)9y}7V;Eyy1C6XJ|!8y{n-l3dCTMr+>+Ip_W4AoPYkwqk6`rYZ@J#yd1F^3DOrJI zlG8wtWK{A#X`tX+j zxyq&!I)b1wuIDDXZR}e{7l1C3UumU@`cBK-T9f?4Py>H^tH~^BD6g;5&u4il)qwD& zwe{%>A;W|*Va%@ucd>zMYY&B!PnBj!&tS#~B}dByQZHtX8F`=i{=2A|Y)T+yPSL*q zymkQk={^!5#!F{LRXT|TXpX0an6dzvaW zK1}A-5ZFf^|M|#nJ?Lk61@T=8T2(n_No!Vr zWO3*JR|njOH47@LsCOo--`&Z6=VeDu=RNQb{BP!_3Tz^)y0?R}a&iI<_jd1_65r6VzE_(?>0)Hw)xFoS3l z6+OS5j~nTEec&l*Nsz7AjAoMaj!9)8&_TiS@n+ptSW@#@DovJL0EP30ve5><0bn|6IrpjDB( zdV6`fk8IYIJz+iZ70=g6I9uL%fp5`(nQ-dQX;RK3qlQQu@v3(&Qbt&#|5Qu0Sz7d_ zy=pUbdn>Hd`ED|J?8OH=yWyBSurEH?C879d=?Y3*5q0j@srsiqJtkZn5L=VU|Pkwy>7{njT2A<-3eO4JY zeNq>>UOr00-HjN!Qnq4Q#CU|>(eXB-FFc&brX`O(O9o6F>AC(L#l+u>x{p((j$acb z{oYnMcDIk%)WML3s}<)ErG_um4E*Oe-WTxZ&OsIZ?vC!kzf=uC1B6G?6jL^T(>j=u z&(a;c@GUViV;FaDMX8cK9lr>ZMczJ1R)y(PN}gT9`mp)?`^$iE%k9jpIr$4Z1aOn` zTwPtSMEd&sXUUG90{X6S@`G0@I|Kv-o?GB2m*4dF+eUwCxey6=Ptg7|Ds9A#@XmnQ zNn{Ctl!#$PDk&)yK$3%{jmtmo@&-s=tju@pAhry#=I%jn4)AbC9o2I}vcA(| zmFo@(ZmspUb(=r9FHCfTLLV&8+4AtDn>=~Rs&i-SQ3ZZ1b}RR{r}!e)3bSf{$;p8U zP*f7jIbd_4bCB10k9^89^wwiO==kCBlOE{c;bEZl_2`=Nu_R~MAYoI@V!fSvVC+YI zX4r2X+PTyB$SfRnXeZcMU{>6EnY!QosaVfN+ZSWLVA6Elx*C5@kW@ED-1N`(n##e$ z&)a&7cH4dTP;F0u#Gu0Iz>NMX5F47?Oa|jVf#wV(=6ahS3KR7dBv~xJNju#qmPpI( zSt-Z{&kAFR?{p3lB1t+6cD}CIc(~sy(dnY9>1R#8j->3V+)ZUW()G~@p*hP$9(yiCB*WoBJXnBf)B$Sh{WH zUfV7-7XYo)_eD5#cXhSwS)@`etiL{*o}JxIs6fe?QaBAfV21w71t( zR8k68jVvuHdLB-4=pGp8;PJR|!`S70L(jm#3t-!FPJB2s;|8iYzo^LZ((K>c=D4cr zQErxk)DFin{EZt&{GbBdv4h~Ygkpg!bYbz+f>m{?adU9Tn6sz!wQ^3_-Tl7+$dD(d diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm index 8fda73b199..68e9259183 100644 --- a/modular_citadel/code/modules/arousal/genitals.dm +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -319,7 +319,7 @@ genital_overlay = center_image(genital_overlay, dim_x, dim_y) if(dna.species.use_skintones && dna.features["genitals_use_skintone"]) - genital_overlay.color = "#[skintone2hex(skin_tone)]" + genital_overlay.color = SKINTONE2HEX(skin_tone) else switch(S.color_src) if("cock_color") @@ -331,7 +331,7 @@ if("vag_color") genital_overlay.color = "#[dna.features["vag_color"]]" - genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size][dna.species.use_skintones ? "_s" : ""]_[aroused_state]_[layertext]" + genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size][(dna.species.use_skintones && !dna.skin_tone_override) ? "_s" : ""]_[aroused_state]_[layertext]" if(layers_num[layer] == GENITALS_FRONT_LAYER && G.genital_flags & GENITAL_THROUGH_CLOTHES) genital_overlay.layer = -GENITALS_EXPOSED_LAYER @@ -361,9 +361,8 @@ var/willyCheck = getorganslot(ORGAN_SLOT_PENIS) if(organCheck == FALSE) - if(ishuman(src) && dna.species.id == "human") + if(ishuman(src) && dna.species.use_skintones) dna.features["genitals_use_skintone"] = TRUE - dna.species.use_skintones = TRUE if(src.dna.species.fixed_mut_color) dna.features["cock_color"] = "[dna.species.fixed_mut_color]" dna.features["breasts_color"] = "[dna.species.fixed_mut_color]" diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 8183ba92bc..c936eb9dc4 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -55,13 +55,14 @@ var/datum/sprite_accessory/S = GLOB.breasts_shapes_list[shape] var/icon_shape = S ? S.icon_state : "pair" var/icon_size = CLAMP(breast_values[size], BREASTS_ICON_MIN_SIZE, BREASTS_ICON_MAX_SIZE) - icon_state = "breasts_[icon_shape]_[breast_values[icon_size]]" + icon_state = "breasts_[icon_shape]_[icon_size]" if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) if(ishuman(owner)) // Check before recasting type, although someone fucked up if you're not human AND have use_skintones somehow... var/mob/living/carbon/human/H = owner // only human mobs have skin_tone, which we need. - color = "#[skintone2hex(H.skin_tone)]" - icon_state += "_s" + color = SKINTONE2HEX(H.skin_tone) + if(!H.dna.skin_tone_override) + icon_state += "_s" else color = "#[owner.dna.features["breasts_color"]]" @@ -117,7 +118,7 @@ /obj/item/organ/genital/breasts/get_features(mob/living/carbon/human/H) var/datum/dna/D = H.dna if(D.species.use_skintones && D.features["genitals_use_skintone"]) - color = "#[skintone2hex(H.skin_tone)]" + color = SKINTONE2HEX(H.skin_tone) else color = "#[D.features["breasts_color"]]" size = D.features["breasts_size"] diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index b3ca0062f8..c05549aaa0 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -84,8 +84,9 @@ if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) if(ishuman(owner)) // Check before recasting type, although someone fucked up if you're not human AND have use_skintones somehow... var/mob/living/carbon/human/H = owner // only human mobs have skin_tone, which we need. - color = "#[skintone2hex(H.skin_tone)]" - icon_state += "_s" + color = SKINTONE2HEX(H.skin_tone) + if(!H.dna.skin_tone_override) + icon_state += "_s" else color = "#[owner.dna.features["cock_color"]]" if(genital_flags & GENITAL_CAN_TAUR && S?.taur_icon && (!S.feat_taur || owner.dna.features[S.feat_taur]) && owner.dna.species.mutant_bodyparts["taur"]) @@ -98,7 +99,7 @@ /obj/item/organ/genital/penis/get_features(mob/living/carbon/human/H) var/datum/dna/D = H.dna if(D.species.use_skintones && D.features["genitals_use_skintone"]) - color = "#[skintone2hex(H.skin_tone)]" + color = SKINTONE2HEX(H.skin_tone) else color = "#[D.features["cock_color"]]" length = D.features["cock_length"] diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index 4264cf5e48..a8946294b1 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -49,15 +49,16 @@ if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) if(ishuman(owner)) // Check before recasting type, although someone fucked up if you're not human AND have use_skintones somehow... var/mob/living/carbon/human/H = owner // only human mobs have skin_tone, which we need. - color = "#[skintone2hex(H.skin_tone)]" - icon_state += "_s" + color = SKINTONE2HEX(H.skin_tone) + if(!H.dna.skin_tone_override) + icon_state += "_s" else color = "#[owner.dna.features["balls_color"]]" /obj/item/organ/genital/testicles/get_features(mob/living/carbon/human/H) var/datum/dna/D = H.dna if(D.species.use_skintones && D.features["genitals_use_skintone"]) - color = "#[skintone2hex(H.skin_tone)]" + color = SKINTONE2HEX(H.skin_tone) else color = "#[D.features["balls_color"]]" shape = D.features["balls_shape"] diff --git a/modular_citadel/code/modules/arousal/organs/vagina.dm b/modular_citadel/code/modules/arousal/organs/vagina.dm index f7e8eddcbd..cdc7dc4927 100644 --- a/modular_citadel/code/modules/arousal/organs/vagina.dm +++ b/modular_citadel/code/modules/arousal/organs/vagina.dm @@ -55,8 +55,9 @@ if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) if(ishuman(owner)) // Check before recasting type, although someone fucked up if you're not human AND have use_skintones somehow... var/mob/living/carbon/human/H = owner // only human mobs have skin_tone, which we need. - color = "#[skintone2hex(H.skin_tone)]" - icon_state += "_s" + color = SKINTONE2HEX(H.skin_tone) + if(!H.dna.skin_tone_override) + icon_state += "_s" else color = "#[owner.dna.features["vag_color"]]" if(ishuman(owner)) @@ -66,7 +67,7 @@ /obj/item/organ/genital/vagina/get_features(mob/living/carbon/human/H) var/datum/dna/D = H.dna if(D.species.use_skintones && D.features["genitals_use_skintone"]) - color = "#[skintone2hex(H.skin_tone)]" + color = SKINTONE2HEX(H.skin_tone) else color = "[D.features["vag_color"]]" shape = "[D.features["vag_shape"]]" diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 198e6c5c24..97261e07f2 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -68,11 +68,11 @@ B = new if(H.dna.species.use_skintones && H.dna.features["genitals_use_skintone"]) - B.color = skintone2hex(H.skin_tone) + B.color = SKINTONE2HEX(H.skin_tone) else if(M.dna.features["breasts_color"]) B.color = "#[M.dna.features["breasts_color"]]" else - B.color = skintone2hex(H.skin_tone) + B.color = SKINTONE2HEX(H.skin_tone) B.size = "flat" B.cached_size = 0 B.prev_size = 0 From c774f187581ecb216157f2117d71f07954a64244 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 14 Apr 2020 19:18:08 +0200 Subject: [PATCH 2/4] . --- code/__DEFINES/DNA.dm | 4 ++-- code/__HELPERS/mobs.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 14d9de4faf..c9e03389f1 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -136,8 +136,8 @@ #define NOAROUSAL 20 //Stops all arousal effects #define NOGENITALS 21 //Cannot create, use, or otherwise have genitals #define MATRIXED 22 //if icon is color matrix'd -#define SKINTONE 23 -#define CUSTOM_SKINTONE 24 //adds a "_g" suffix to bodypart overlays icon states +#define SKINTONE 23 //uses skin tones +#define CUSTOM_SKINTONE 24 //adds a "_g" suffix to bodypart overlays icon states if a custom skintone is used. #define HORNCOLOR 25 #define WINGCOLOR 26 diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 38831fd5eb..2827e40120 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -281,7 +281,7 @@ GLOBAL_LIST_INIT(skin_tones, list( "indian" = "#b87840", "african1" = "#754523", "african2" = "#471c18", - "orange" = "#ffc905", //Spray tan overdose. + "orange" = "#ffc905" //Spray tan overdose. )) GLOBAL_LIST_INIT(nonstandard_skin_tones, list("orange")) From d84ef22f22d92a7cced62a6e6dfa474122486901 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 14 Apr 2020 21:58:37 +0200 Subject: [PATCH 3/4] I'm amazed this actually works fine. --- code/modules/client/preferences.dm | 18 +++++++++--------- code/modules/surgery/bodyparts/bodyparts.dm | 16 +++++++++------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 719d77118e..45c10b6633 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1547,7 +1547,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) underwear = new_underwear if("undie_color") - var/n_undie_color = input(user, "Choose your underwear's color.", "Character Preference", undie_color) as color|null + var/n_undie_color = input(user, "Choose your underwear's color.", "Character Preference", "#[undie_color]") as color|null if(n_undie_color) undie_color = sanitize_hexcolor(n_undie_color) @@ -1557,7 +1557,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) undershirt = new_undershirt if("shirt_color") - var/n_shirt_color = input(user, "Choose your undershirt's color.", "Character Preference", shirt_color) as color|null + var/n_shirt_color = input(user, "Choose your undershirt's color.", "Character Preference", "#[shirt_color]") as color|null if(n_shirt_color) shirt_color = sanitize_hexcolor(n_shirt_color) @@ -1567,7 +1567,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) socks = new_socks if("socks_color") - var/n_socks_color = input(user, "Choose your socks' color.", "Character Preference", socks_color) as color|null + var/n_socks_color = input(user, "Choose your socks' color.", "Character Preference", "#[socks_color]") as color|null if(n_socks_color) socks_color = sanitize_hexcolor(n_socks_color) @@ -1843,8 +1843,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/default = use_custom_skin_tone ? skin_tone : null var/custom_tone = input(user, "Choose your custom skin tone:", "Character Preference", default) as color|null if(custom_tone) - var/temp_hsv = RGBtoHSV(new_s_tone) - if(ReadHSV(temp_hsv)[3] < ReadHSV("#202020")[3]) + var/temp_hsv = RGBtoHSV(custom_tone) + if(ReadHSV(temp_hsv)[3] < ReadHSV("#333333")[3]) // rgb(50,50,50) to_chat(user,"Invalid color. Your color is not bright enough.") else use_custom_skin_tone = TRUE @@ -1954,7 +1954,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_cockcolor) if(new_cockcolor == "#000000") features["cock_color"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) features["cock_color"] = sanitize_hexcolor(new_cockcolor) else to_chat(user,"Invalid color. Your color is not bright enough.") @@ -1994,7 +1994,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_ballscolor) if(new_ballscolor == "#000000") features["balls_color"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) features["balls_color"] = sanitize_hexcolor(new_ballscolor) else to_chat(user,"Invalid color. Your color is not bright enough.") @@ -2021,7 +2021,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_breasts_color) if(new_breasts_color == "#000000") features["breasts_color"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) features["breasts_color"] = sanitize_hexcolor(new_breasts_color) else to_chat(user,"Invalid color. Your color is not bright enough.") @@ -2043,7 +2043,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_vagcolor) if(new_vagcolor == "#000000") features["vag_color"] = pref_species.default_color - else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) + else if(ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) features["vag_color"] = sanitize_hexcolor(new_vagcolor) else to_chat(user,"Invalid color. Your color is not bright enough.") diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 7a99d3ff29..d6f0866936 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -361,7 +361,7 @@ species_color = "" if(base_bp_icon != DEFAULT_BODYPART_ICON) - color_src = mut_colors ? MUTCOLORS : (H.dna.skin_tone_override && S.use_skintones == USE_SKINTONES_GRAYSCALE_CUSTOM) ? CUSTOM_SKINTONE : SKINTONE + color_src = mut_colors ? MUTCOLORS : ((H.dna.skin_tone_override && S.use_skintones == USE_SKINTONES_GRAYSCALE_CUSTOM) ? CUSTOM_SKINTONE : SKINTONE) if(S.mutant_bodyparts["legs"]) if(body_zone == BODY_ZONE_L_LEG || body_zone == BODY_ZONE_R_LEG) @@ -545,21 +545,23 @@ return if(color_src) //TODO - add color matrix support for base species limbs - var/draw_color = mutation_color || species_color || GLOB.skin_tones[skin_tone] + var/draw_color = mutation_color || species_color var/grayscale = FALSE - if(!draw_color) //check for custom skin tones. - draw_color = skin_tone - grayscale = color_src == CUSTOM_SKINTONE //Cause human (the species) parts states have a very pale pink hue. + if(!draw_color) + draw_color = SKINTONE2HEX(skin_tone) + grayscale = color_src == CUSTOM_SKINTONE //Cause human limbs have a very pale pink hue by def. + else + draw_color = "#[draw_color]" if(draw_color) if(grayscale) limb.icon_state += "_g" - limb.color = "#[draw_color]" + limb.color = draw_color if(aux_icons) for(var/a in aux) var/image/I = a if(grayscale) I.icon_state += "_g" - I.color = "#[draw_color]" + I.color = draw_color if(!isnull(aux_marking)) for(var/a in auxmarking) var/image/I = a From 2200c690f76bf9bf22bb992e23e7d259dad96261 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Thu, 16 Apr 2020 18:44:05 +0200 Subject: [PATCH 4/4] configs --- code/controllers/configuration/entries/game_options.dm | 4 ++++ code/game/objects/structures/mirror.dm | 5 ++++- code/modules/client/preferences.dm | 4 +++- code/modules/client/preferences_savefile.dm | 2 +- config/game_options.txt | 5 ++++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index f11093cba7..cb18d37f21 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -473,3 +473,7 @@ /datum/config_entry/number/body_size_slowdown_multiplier config_entry_value = 0.25 min_val = 0.1 //To encourage folks to disable the slowdown through the above config instead. + +//Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones. +/datum/config_entry/number/allow_custom_skintones + config_entry_value = 1 diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 5892574711..be783f387e 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -158,7 +158,10 @@ H.set_species(newrace, icon_update=0) if(H.dna.species.use_skintones) - var/new_s_tone = input(H, "Choose your skin tone:", "Race change") as null|anything in GLOB.skin_tones + "custom" + var/list/choices = GLOB.skin_tones + if(CONFIG_GET(number/allow_custom_skintones)) + choices += "custom" + var/new_s_tone = input(H, "Choose your skin tone:", "Race change") as null|anything in choices if(new_s_tone) if(new_s_tone == "custom") var/default = H.dna.skin_tone_override || null diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 45c10b6633..d44b2ffa04 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1836,7 +1836,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["insect_markings"] = new_insect_markings if("s_tone") - var/list/choices = GLOB.skin_tones - GLOB.nonstandard_skin_tones + "custom" + var/list/choices = GLOB.skin_tones - GLOB.nonstandard_skin_tones + if(CONFIG_GET(number/allow_custom_skintones)) + choices += "custom" var/new_s_tone = input(user, "Choose your character's skin tone:", "Character Preference") as null|anything in choices if(new_s_tone) if(new_s_tone == "custom") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 06f2559722..6d99ef63aa 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -550,7 +550,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0) eye_color = sanitize_hexcolor(eye_color, 3, 0) use_custom_skin_tone = sanitize_integer(use_custom_skin_tone, FALSE, TRUE, initial(use_custom_skin_tone)) - if(use_custom_skin_tone) + if(use_custom_skin_tone && CONFIG_GET(number/allow_custom_skintones)) skin_tone = sanitize_hexcolor(skin_tone, 6, TRUE, "#FFFFFF") else skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones - GLOB.nonstandard_skin_tones, initial(skin_tone)) diff --git a/config/game_options.txt b/config/game_options.txt index 8c48ac6ede..3253e37a8e 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -632,4 +632,7 @@ THRESHOLD_BODY_SIZE_SLOWDOWN 0.85 ## Multiplier used in the smaller strides slowdown calculation. ## Doesn't apply to floating or crawling mobs. -BODY_SIZE_SLOWDOWN_MULTIPLIER 0.25 \ No newline at end of file +BODY_SIZE_SLOWDOWN_MULTIPLIER 0.25 + +## Allows players to set a hexadecimal color of their choice as skin tone, on top of the standard ones. +ALLOW_CUSTOM_SKINTONES \ No newline at end of file