From 40337071f4f25378fcf2d4f47199e9f9e9bf3a85 Mon Sep 17 00:00:00 2001 From: Benjamin Mako Hill Date: Thu, 28 May 2015 23:20:57 -0700 Subject: [PATCH] initial import from shared repository into new public repository --- .gitignore | 11 + 02-mysqldump_to_csv.py | 78 ++++ 03-parse_mw_eventlog.py | 299 +++++++++++++++ 04-import_merge_data.R | 118 ++++++ 05-generate_spells.R | 360 ++++++++++++++++++ GPL-3 | 674 +++++++++++++++++++++++++++++++++ LICENSES | 42 ++ README | 160 ++++++++ docs/README | 1 + docs/biology_screenshot.png | Bin 0 -> 113874 bytes docs/homepage.rst | 142 +++++++ docs/protections_over_time.png | Bin 0 -> 7397 bytes 12 files changed, 1885 insertions(+) create mode 100644 .gitignore create mode 100755 02-mysqldump_to_csv.py create mode 100755 03-parse_mw_eventlog.py create mode 100644 04-import_merge_data.R create mode 100644 05-generate_spells.R create mode 100644 GPL-3 create mode 100644 LICENSES create mode 100644 README create mode 120000 docs/README create mode 100644 docs/biology_screenshot.png create mode 100644 docs/homepage.rst create mode 100644 docs/protections_over_time.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..20655e9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +docs/index.html +enwiki_201501-protection_spells-v1.RData +enwiki_201501-protection_spells-v1.tsv.bz2 +enwiki-20150112-page.csv +enwiki-20150112-page.sql.gz +enwiki-20150112-page_restrictions.csv +enwiki-20150112-page_restrictions.sql.gz +enwiki-20150112-pages-logging.xml.gz +output-deletions.tsv +output-moves.tsv +output-protections.tsv diff --git a/02-mysqldump_to_csv.py b/02-mysqldump_to_csv.py new file mode 100755 index 0000000..a3a4a9d --- /dev/null +++ b/02-mysqldump_to_csv.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python +import fileinput +import csv +import sys +import re + +# This prevents prematurely closed pipes from raising +# an exception in Python +from signal import signal, SIGPIPE, SIG_DFL +signal(SIGPIPE, SIG_DFL) + +def is_insert(line): + """ + Returns true if the line begins a SQL insert statement. + """ + return line.startswith('INSERT INTO') or False + + +def get_values(line): + """ + Returns the portion of an INSERT statement containing values + """ + return line.partition('` VALUES ')[2].strip() + + +def values_sanity_check(values): + """ + Ensures that values from the INSERT statement meet basic checks. + """ + assert values + assert values[0] == '(' + assert values[-2:] == ');' + # Assertions have not been raised + return True + +def clean_quotes_for_fread(col): + col = re.sub('\t', ' ', col) + if col.startswith('"'): + return('"' + col + '"') + else: + return(col) + +def parse_values(values, outfile): + """ + Given a file handle and the raw values from a MySQL INSERT + statement, write the equivalent CSV to the file + """ + values = values.rstrip(");") + values = values.lstrip("(") + + reader = csv.reader(values.split("),("), delimiter=',', + doublequote=False, + escapechar='\\', + quotechar="'", + strict=True) + + for reader_row in reader: + print("\t".join([clean_quotes_for_fread(col) for col in reader_row])) + +def main(): + """ + Parse arguments and start the program + """ + # Iterate over all lines in all files + # listed in sys.argv[1:] + # or stdin if no args given. + try: + for line in fileinput.input(): + # Look for an INSERT statement and parse it. + if is_insert(line): + values = get_values(line.strip().rstrip()) + if values_sanity_check(values): + parse_values(values, sys.stdout) + except KeyboardInterrupt: + sys.exit(0) + +if __name__ == "__main__": + main() diff --git a/03-parse_mw_eventlog.py b/03-parse_mw_eventlog.py new file mode 100755 index 0000000..957bb49 --- /dev/null +++ b/03-parse_mw_eventlog.py @@ -0,0 +1,299 @@ +#!/usr/bin/env python3 + +import re +import sys +import os.path + +from xml.sax import handler, make_parser +from xml.sax.saxutils import XMLFilterBase +from collections import defaultdict +import calendar + +class WikiLogItem(object): + """ + Holds data related to one element parsed from the dump + """ + __slots__ = ( + 'id', + 'action', + 'type', + 'timestamp', + 'logtitle', + 'comment', + 'params', + 'username', + 'userid', + 'contrib_deleted' + ) + def __init__(self): + for attr in self.__slots__: + setattr(self, attr, '') + + def __str__(self): + return repr({k: getattr(self, k) for k in self.__slots__}) + +class text_normalize_filter(XMLFilterBase): + """ + SAX filter to ensure that contiguous texts nodes are merged into one + That hopefully speeds up the parsing process a lot, specially when + reading revisions with long text + + Recipe by Uche Ogbuji, James Kew and Peter Cogolo Retrieved from: Python + Cookbook, 2nd ed., by Alex Martelli, Anna Martelli Ravenscroft, and + David Ascher (O'Reillly Media, 2005) 0-596-00797-3 + """ + def __init__(self, upstream, downstream): + XMLFilterBase.__init__(self, upstream) + self._downstream=downstream + self._accumulator=[] + def _complete_text_node(self): + if self._accumulator: + self._downstream.characters(''.join(self._accumulator)) + self._accumulator=[] + def characters(self, text): + self._accumulator.append(text) + def ignorableWhiteSpace(self, ws): + self._accumulator.append(text) + +def _wrap_complete(method_name): + def method(self, *a, **k): + self._complete_text_node() + getattr(self._downstream, method_name)(*a, **k) + method.__name__= method_name + setattr(text_normalize_filter, method_name, method) + +for n in '''startElement endElement'''.split(): + _wrap_complete(n) + +class WikiDumpHandler(handler.ContentHandler): + """ + A ContentHandler designed to pull out page ids, titles and text from + Wiki pages. These are assembled into WikiLogItem objects and sent off to + the supplied callback. + """ + def __init__(self, logItemCallBack=None): + handler.ContentHandler.__init__(self) + self.currentTag = '' + self.insideContribTag = False + self.logItemCallBack = logItemCallBack + self.logItemsProcessed = 0 + + def startElement(self, name, attrs): + self.currentTag = name + if (name == 'logitem'): + # add a log item + self.currentLogItem = WikiLogItem() + elif (name == 'contributor'): + # when we're in revision, ignore ids + self.insideContribTag = True + if 'deleted' in attrs: + self.currentLogItem.contrib_deleted = True + else: + self.currentLogItem.contrib_deleted = False + + def endElement(self, name): + if (name == 'logitem'): + if self.logItemCallBack is not None: + self.logItemCallBack(self.currentLogItem) + self.logItemsProcessed += 1 + elif (name == 'contributor'): + # we've finished the revision section + self.insideContribTag = False + self.currentTag = '' + + def characters(self, content): + if (self.currentTag == 'id' and not self.insideContribTag): + self.currentLogItem.id = content + elif (self.currentTag == 'id' and self.insideContribTag): + self.currentLogItem.userid = content + elif (self.currentTag == 'username' and self.insideContribTag): + self.currentLogItem.username = content + elif (self.currentTag == 'action'): + self.currentLogItem.action = content + elif (self.currentTag == 'type'): + self.currentLogItem.type = content + elif (self.currentTag == 'logtitle'): + self.currentLogItem.logtitle = content + elif (self.currentTag == 'timestamp'): + self.currentLogItem.timestamp = content + elif (self.currentTag == 'comment'): + self.currentLogItem.comment = content + elif (self.currentTag == 'params'): + self.currentLogItem.params = content + +class logExporter: + def __init__(self, input, output_base="output"): + self.input_file = input + self.move_log = open(output_base + "-moves.tsv", "w") + self.prot_log = open(output_base + "-protections.tsv", "w") + self.del_log = open(output_base + "-deletions.tsv", "w") + + self.prot_titles = defaultdict(None) + + self.cal_dict = {v: k for k,v in enumerate(calendar.month_name)} + self.r_param_string = re.compile(r'\[(?P\w+)=(?P\w+)\] \((?P.*?)\)+') + self.r_expir_string = re.compile(r'expires (?P\d{2}):(?P\d{2}), (?P\d+) (?P\w+) (?P\d{4})') + + # this marks whether we have moved into late 2008 + # when material is being recorded consistently + self.in_window = False + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.move_log.close() + self.prot_log.close() + self.del_log.close() + + def __flush(self): + self.move_log.flush() + self.prot_log.flush() + self.del_log.flush() + sys.stdout.flush() + sys.stderr.flush() + + def __clean_timestamp(self, timestamp): + timestamp = timestamp.replace("T", " ") + timestamp = timestamp.replace("Z", "") + + return timestamp + + def __clean_logItem(self, logItem): + logItem.comment = re.sub(r'\s', r' ', logItem.comment) + logItem.params = re.sub(r'\s', r' ', logItem.params) + + # add userid and username, but only if it's not deleted + if logItem.contrib_deleted: + logItem.userid = "" + logItem.username = "" + else: + logItem.username = re.sub(r'\s', r' ', logItem.username) + + logItem.timestamp = self.__clean_timestamp(logItem.timestamp) + + return logItem + + def printDelete(self, logItem): + logItem = self.__clean_logItem(logItem) + + output = [logItem.id, '"' + logItem.logtitle + '"', + logItem.action, logItem.timestamp] + + print("\t".join(output), file=self.del_log) + + def printMove(self, logItem): + logItem = self.__clean_logItem(logItem) + + output = [logItem.id, logItem.timestamp, + '"' + logItem.params + '"', # old location + '"' + logItem.logtitle + '"'] # new location + print("\t".join(output), file=self.move_log) + + # add the title to the list of titles + self.prot_titles[logItem.logtitle] = None + + def printProtect(self, logItem): + logItem = self.__clean_logItem(logItem) + + param_string = logItem.params + rights = {} + + for m in self.r_param_string.finditer(param_string): + right = m.group("right") + group = m.group("group") + raw_period = m.group("period") + + if not re.search("indefinite", raw_period): + m2 = self.r_expir_string.match(raw_period) + period_nums = [int(x) for x in [m2.group("year"), + self.cal_dict[m2.group("month")], + m2.group("day"), + m2.group("hour"), + m2.group("min")]] + period_nums = tuple(period_nums) + period = "%d-%02d-%02d %02d:%02d:00" % period_nums + else: + period = "" + + rights[right] = (group, period) + + output = [logItem.id, '"' + logItem.logtitle + '"', + logItem.action, logItem.timestamp] + + for right in rights: + group, expir = rights[right] + print("\t".join(output + [right, group, expir]), + file=self.prot_log) + + # add the title to the list of titles + self.prot_titles[logItem.logtitle] = None + + def printUnprotect(self, logItem): + logItem = self.__clean_logItem(logItem) + + output = [logItem.id, '"' + logItem.logtitle + '"', + logItem.action, logItem.timestamp, + '', '', ''] + print("\t".join(output), file=self.prot_log) + + # remove the current title from the list of titles + self.prot_titles.pop(logItem.logtitle, None) + + def conditionallyPrint(self, logItem): + # print deletions only if we've seen a protection event + if logItem.type == 'delete' \ + and logItem.logtitle in self.prot_titles: + self.printDelete(logItem) + + elif logItem.type == "protect": + if logItem.action == "move_prot": + self.printMove(logItem) + + elif logItem.action == "protect" \ + or logItem.action == "modify": + + # this limits it to only things after 2008 when this + # data started being stored in params + if not logItem.params: + return + else: + self.in_window = True + self.printProtect(logItem) + + elif logItem.action == "unprotect": + if self.in_window: self.printUnprotect(logItem) + + else: + # this is some kind of error so we'll print the article and + # return + print(logItem, file=sys.stderr) + + +def parseWithCallback(incoming_data, callback): + parser = make_parser() + parser.setFeature(handler.feature_namespaces, 0) + + # apply the text_normalize_filter + wdh = WikiDumpHandler(logItemCallBack=callback) + filter_handler = text_normalize_filter(parser, wdh) + + filter_handler.parse(incoming_data) + +if __name__ == "__main__": + """ + When called as script, argv[1] is assumed to be a filename and we + simply print pages found. If it's missing, we just use sys.stdin + instead. + """ + + if len(sys.argv) > 1: + input_file = open(sys.argv[1], "r") + output_base = re.sub(r'\.\w+$', '', os.path.basename(sys.argv[1])) + else: + input_file = sys.stdin + output_base = "output" + + with logExporter(input_file, output_base) as exporter: + parseWithCallback(input_file, exporter.conditionallyPrint) + diff --git a/04-import_merge_data.R b/04-import_merge_data.R new file mode 100644 index 0000000..cd15adc --- /dev/null +++ b/04-import_merge_data.R @@ -0,0 +1,118 @@ +page.restrictions.filename <- "enwiki-20150112-page_restrictions.csv" +page.metadata.filename <- "enwiki-20150112-page.csv" +log.filename <- "output-protections.tsv" +moves.filename <- "output-moves.tsv" +dels.filename <- "output-deletions.tsv" + +setwd("~/protection") +Sys.setenv(tz = "UTC") +library(parallel) +library(data.table) + +## 0. load namespace data +wp.ns <- read.csv("wikipedia_namespaces.csv", + header=TRUE, stringsAsFactors=FALSE) +# drop aliases completely +wp.ns <- wp.ns[!wp.ns$alias,] +wp.ns$alias <- NULL + +setDT(wp.ns) +setnames(wp.ns, c("ns.num", "ns.name")) +wp.ns[, ns.name := gsub(' ', '_', ns.name)] +setkey(wp.ns, "ns.num") + +## 1. load the protection snapshot data from the parsed SQL file +final.state <- fread(page.restrictions.filename, + header=FALSE, na.strings=NULL, + colClasses=list(character=6)) + +setnames(final.state, c("page.id", "type", "level", + "cascade", "user.id", "expiry", + "id")) + +# drop change several column types +final.state[,cascade := as.logical(cascade)] +final.state[,type := as.factor(type)] +final.state[,level := as.factor(level)] + +final.state[,c("user.id", "id") := NULL] + +# NULL expiry seem to be just infinite because we've confirmed that several of +# these pages are protected even if their expiry is null +final.state$expiry[final.state$expiry == "infinity"] <- NA +final.state$expiry[final.state$expiry == "NULL"] <- NA + +final.state$expiry <- as.POSIXct(final.state$expiry, + format="%Y%m%d%H%M%s", tz="UTC") + +# print the range +range(final.state$expiry, na.rm=TRUE) + +setkey(final.state, "page.id") + +# 2. load up the page information for the id/title mapping +page.info <- fread(page.metadata.filename, + header=FALSE, stringsAsFactors=FALSE, na.strings=NULL, + select=1:3, showProgress=TRUE) + +setnames(page.info, c("page.id", "ns.num", "title")) + +# merge namespace data into the data.table +setkey(page.info, "ns.num") +page.info <- wp.ns[page.info] +page.info[ns.num != 0, title := paste(ns.name, title, sep=":")] +page.info[,c("ns.num", "ns.name") := NULL] + +# merge the page titles onto the final state data +setkey(page.info, "page.id") +final.state <- page.info[final.state] + +# some pageids are missing (pages deleted?) so we'll drop those +table(is.na(final.state$title)) +final.state <- final.state[!is.na(final.state$title),] + +# 3. load the page log data from TSV file +log <- fread(log.filename, header=FALSE, na.strings="") + +setnames(log, c("id", "title", "log.type", "log.time", + "type", "level", "expiry")) + +log[, log.type := as.factor(log.type)] +log[, type := as.factor(type)] +log[, level := as.factor(level)] +log[, log.time := as.POSIXct(log.time, tz="UTC")] +log[, expiry := as.POSIXct(expiry, tz="UTC")] +log[, title := gsub(' ', '_', title)] + +# clean up the log file by dropping some invalid data (e.g., log entries that +# expire before they are blocked. these are all done within the minute and seem +# to be a mediawiki bug (e.g., "EEE") +log <- log[is.na(log$expiry) | !log$expiry < log$log.time,] + +# 4. load in the move data from TSV +moves <- fread(moves.filename, sep="\t", header=FALSE) +setnames(moves, c("id", "log.time", "from.title", "to.title")) + +# drop id column +moves[, from.title := gsub(' ', '_', from.title)] +moves[, to.title := gsub(' ', '_', to.title)] +moves[, log.time := as.POSIXct(log.time, tz="UTC")] + +# 5. load in deletion data from the TSV file +dels <- fread(dels.filename, header=FALSE, na.strings="NA") +setnames(dels, c("id", "title", "log.type", "log.time")) + +# drop id column +dels[, log.time := as.POSIXct(log.time, tz="UTC")] +dels[, title := gsub(' ', '_', title)] + +# because revision deletion does not affect protection and restoration does +# not restore restrictions, we can safely limit this to only delete evetns +# and drop this columns +dels <- dels[dels$log.type == "delete",] +dels[, log.type := NULL] + +# save temporary state +save(log, moves, dels, final.state, file="processed_log_and_sql_data.RData") + + diff --git a/05-generate_spells.R b/05-generate_spells.R new file mode 100644 index 0000000..8356273 --- /dev/null +++ b/05-generate_spells.R @@ -0,0 +1,360 @@ +Sys.setenv(tz = "utc") +library(parallel) +library(data.table) + +dump.creation.time <- as.POSIXct("2015-01-12 00:00:00 utc") + +r <- list() + +## step 2: merge moves and deletions into an expanded log +################################################################# +load("processed_log_and_sql_data.RData") + +r[["num.final.state.orig"]] <- nrow(final.state) +r[["num.log"]] <- nrow(log) +r[["num.moves"]] <- nrow(log) +r[["num.dels"]] <- nrow(dels) +r[["dump.creation.time"]] <- dump.creation.time + +events <- log[,list(title, id)] +events[, type := 'protect'] + +tmp <- moves[,list(from.title, id)] +tmp[, type := 'move'] +setnames(tmp, "from.title", "title") + +tmp2 <- dels[, list(title, id)] +tmp2[, type := 'delete'] + +events <- rbindlist(list(events, tmp, tmp2)) +rm(tmp, tmp2) + +# convert type to a factor and sort +events[, type := as.factor(type)] + +# dropping missing titles +events <- events[!is.na(events$title),] + +setkey(events, title) + +# return true if next event is move +get.next.event <- function (move.item) { + destination <- move.item[,to.title] + log.id <- move.item[,id] + + x <- events[destination,] + x <- x[x$id > log.id,] + + # return the first item in the event list + # this will return a one row data.table of all NA if it's missing... + return(x[sort.list(x$id)[1],]) +} + +# BOOKMARK: BM-D +## turn/expand moves into a protection and unprotection events +############################################################### +# build list of uninterupted moves; was end = end of y^ +build.move.chains <- function (move.chain){ + last.move <- move.chain[nrow(move.chain),] + next.event <- get.next.event(last.move) + + if (!all(is.na(next.event))) { + if (next.event[, type] == "move") { + move.chain <- rbindlist(list(move.chain, moves.tmp[J(next.event[,id]),])) + build.move.chains(move.chain) + } else { + return(list(move.chain, FALSE)) + } + } else { + return(list(move.chain, TRUE)) + } +} + +setkey(moves, id) +moves.tmp <- moves + +moves.result = list() +while (nrow(moves.tmp) > 0) { + move <- moves.tmp[1,] + + rv <- build.move.chains(move) + move.chain <- rv[[1]] + ends.with.move <- rv[[2]] + + for (i in seq(1, nrow(move.chain))) { + moves.tmp <- moves.tmp[!J(move.chain[i, id]),] + } + + moves.result[[length(moves.result)+1]] <- list(move.chain, ends.with.move) + +} + +explode.move.chain <- function (chain, rights) { + log.unprot <- data.table(id=chain$id, title=chain$from.title, + log.type="unprotect", log.time=chain$log.time, + type="move", level=NA, expiry=NA) + log.prot <- data.table(id=chain$id, title=chain$to.title, + log.type="protect", log.time=chain$log.time) + + # if, and only if, there are no previous events, we'll add right censored event + if (!any(events[chain[1,from.title],id] < chain[1, id])) { + log.prot <- rbind(log.prot, + data.table(id=NA, title=chain[1,from.title], log.type="protect", + log.time=NA)) + } + + # copy data.table once per right + log.prot <- cbind(log.prot[rep(seq_len(nrow(log.prot)), nrow(rights)),], + rights[unlist(lapply(seq_len(nrow(rights)), + function (i) {rep(i, nrow(log.prot))})),]) + + # put together the unprotect and protect events and return them + return(rbind(log.unprot, log.prot)) +} + +# check in the final state data +explode.with.final.state.data <- function (chain) { + final.title <- chain[nrow(chain), to.title] + + # this will be set to a list of rights, or all NA if they are missing + rights <- final.state[final.title, list(type, level, expiry)] + + # return entries for the log + explode.move.chain(chain, rights) +} + +setkey(final.state, title) + +moves.results.moveterm <- moves.result[sapply(moves.result, function (x) {x[[2]]})] +moves.results.moveterm <- lapply(moves.results.moveterm, function (x) {x[[1]]}) + +log.moveterm <- rbindlist(mclapply(moves.results.moveterm, explode.with.final.state.data)) + +moves.results.otherterm <- moves.result[!sapply(moves.result, function (x) {x[[2]]})] +moves.results.otherterm <- lapply(moves.results.otherterm, function (x) {x[[1]]}) + +log.otherterm <- rbindlist(mclapply(moves.results.otherterm, + function (x) { explode.move.chain(x, data.table(type=NA, level=NA, expiry=NA)) })) + +expanded.log <- rbind(log, log.moveterm, log.otherterm, + data.table(id=dels$id, title=dels$title, log.type="unprotect", + log.time=dels$log.time, type="delete", level=NA, expiry=NA)) + +setkey(expanded.log, title) + +save(expanded.log, file="expanded_log.RData") +# load("expanded_log.RData"); load("processed_log_and_sql_data.RData") + +### GENERATE SPELLS +generate.spells <- function (page.title, d) { + x <- d[page.title,] + setkey(x, id) + + spells <- data.table() + tmp.spells <- data.table() + prev.mod <- FALSE + for (i in seq_len(nrow(x))) { + row <- as.list(x[i,]) + + # if it's the first time, through and we're seeing an uprot, create a l-cens event + if (i == 1 && row[["log.type"]] == "unprotect") { + tmp.spells <- data.table(title=row[["title"]], type=NA, level=NA, start=NA, end=NA) + } + + # first, see if any of the previous tmp.spells expired naturally + if (nrow(tmp.spells) > 0 && + nrow(tmp.spells[!is.na(tmp.spells$end),]) > 0 && + nrow(tmp.spells[tmp.spells$end < row[["log.time"]],]) > 0) { + # if they did, add them to spells and drop them from tmp.spells + spells <- rbind(spells, tmp.spells[!is.na(tmp.spells$end) & tmp.spells$end < row[["log.time"]],]) + tmp.spells <- tmp.spells[!(!is.na(tmp.spells$end) & tmp.spells$end < row[["log.time"]]),] + } + + # otherwise, see if the prevoius spell was a protect/modify and ended a + # spell by omission + if (prev.mod && !is.na(prev.id) && prev.id != row[["id"]]) { + unlisted.types <- tmp.spells[,type][!tmp.spells[,type] %in% x[x$id == row[["id"]], type]] + tmp.tmp.spells <- tmp.spells[tmp.spells$type %in% unlisted.types,] + tmp.tmp.spells$end <- x[x$id == row[["id"]],log.time] + spells <- rbind(spells, tmp.tmp.spells) + + tmp.spells <- tmp.spells[!tmp.spells$type %in% unlisted.types,] + } + + # if we are adding a new protection event + if (row[["log.type"]] %in% c("protect", "modify")) { + prev.mod <- TRUE; prev.id <- row[["id"]] + # if there is an active spell that conflicts with the current bit, + # end them with the spells start time + if (nrow(tmp.spells) > 0) { + # we could be missing previous data on type in which case we want to replace + # and add to the spells + if (all(is.na(tmp.spells$type))) { + tmp.spells$end <- row[["log.time"]] + spells <- rbind(spells, tmp.spells) + tmp.spells <- data.table() + } else if (is.na(row[["type"]])) { + next + } else { + conflict <- tmp.spells$type == row[["type"]] + # if it's the same rights, we update the expiry date and continue + if (any(conflict) && tmp.spells[conflict,level] == row[["level"]]) { + tmp.spells$end[conflict] <- row[["expiry"]] + next + } + # otherwise, we end the spell + tmp.spells$end[conflict] <- row[["log.time"]] + spells <- rbind(spells, tmp.spells[conflict,]) + tmp.spells <- tmp.spells[!conflict,] + } + } + + # add the new spell to the list of active spells + tmp.spells <- rbind(tmp.spells, + data.table(title=row[["title"]], type=row[["type"]], level=row[["level"]], + start=row[["log.time"]], end=row[["expiry"]])) + + # if it's an unprotection event and we're sitting on existing events + } else if (row[["log.type"]] == "unprotect" && nrow(tmp.spells) > 0) { + prev.mod <- FALSE; prev.id <- row[["id"]] + # end /all/ active spells and add them to spells + tmp.spells$end <- row[["log.time"]] + spells <- rbind(spells, tmp.spells) + tmp.spells <- data.table() + } + } + # if this is the final time through, add any active spells + if (nrow(tmp.spells) > 0) { + spells <- rbind(spells, tmp.spells) + } + tmp.spells <- data.table() + if (any(is.na(spells$title))) { print(page.title) } + return(spells) +} + +page.titles <- unique(expanded.log$title) +page.titles <- page.titles[!is.na(page.titles)] +page.titles <- page.titles[page.titles != ""] +#spells <- rbindlist(lapply(page.titles, generate.spells, expanded.log)) +spells <- rbindlist(mclapply(page.titles, generate.spells, expanded.log)) + +save(spells, file="spells-nofinal.RData") + +# load("spells-nofinal.RData"); load("processed_log_and_sql_data.RData") + +# remove cascacading data from final.state data to allow for merging later +final.state[, cascade := NULL] + +# set any ongoing spells and final state data ongoing at the point of data +# collection to right censored +spells <- spells[spells$end > dump.creation.time, end := NA] +final.state <- final.state[final.state$expiry > dump.creation.time, expiry := NA] + +# drop log entries from outside our data collection window +spells <- spells[spells$start < dump.creation.time,] + +# drop any spells other than edit, move or upload for which we have no final +# state data; and any final state data along the same lines +spells <- spells[spells$type %in% c("edit", "move", "upload"),] +final.state <- final.state[final.state$type %in% c("edit", "move", "upload"),] + +# TODO/FIX? handle the two extra NA dropped here +spells <- spells[!is.na(spells$title),] + +r[["num.spells.orig"]] <- nrow(spells) + +# we're now going to load on any final.state data for missing spells +setkey(final.state, title, type) +setkey(spells, title, type) + +## merge final.state data with spells +####################################################################### +# there are several situations we need to take into account: +# 1. final.state for pages for which we have no record: we create right/left +# censored spells for these +# 2. we have an open spells. final.state data that matches data we have in log +# data. we can discard this final state data +# 3. we have an open spell and final state data, but they disagree. +# 4. final state data for spells our log data suggests should be closed: add right/ +# 5. log data suggests is should be open + +# 1. final.state for pages for which we have no record: we create right/left +# censored spells for these. most likely, these were spells started before +# 2008. as a result, we grab final.state data for those spells +missing.spells <- final.state[is.na(spells[final.state, level, mult="first"]),] +missing.spells <- missing.spells[!missing.spells$type == "aft",] +missing.spells[, start := NA] +missing.spells[, end := NA] +missing.spells[, page.id := NULL] +missing.spells[, expiry := NULL] + +# drop these missing spells from the final.state +final.state <- final.state[!missing.spells[,list(title, type)]] + +# print the number of missing spells +r[["num.created.from.final.state"]] <- nrow(missing.spells) +r[["num.created.from.final.state.pages"]] <- length(unique(missing.spells$title)) + +# to answer 2+ we first need create a dataset of spells from the log that are +# open at the time of data.collection. these will either be because they have +# an infinite expiry or because they were ongoing at the time of +# data.collection. +open.spells <- spells[is.na(spells$end),] +setkey(open.spells, start) + +setkey(open.spells, title, type) +setkey(final.state, title, type) + +# BOOKMARK: BK-A +# look for spells that both final.state and log suggests are open but there is +# disagreement on +tmp <- open.spells[final.state, nomatch=0] +tmp <- tmp[as.character(tmp$level) != as.character(tmp$i.level), list(title, type)] + +# handchecking each of the examples suggests that these are all due a lag in +# time between the creation of the SQL final.state data and the log. we can +# simply remove these from the final state data +r[["num.dropped.level.nomatch"]] <- nrow(tmp) + +# as a result, we can simply drop these form the final state +# an alternate approach would be to set these to NA as in: +# spells[tmp, level := as.character(NA), mult="last"] +final.state <- final.state[!tmp,] + +# now, we have to take the list of open spells and find the subset of the final +# state that does not match +open.spells[, expiry := end] +setkey(open.spells, title, type, level, expiry) +setkey(final.state, title, type, level, expiry) + +# BOOKMARK: BK-C +final.state.missing <- open.spells[!final.state,] +# BOOKMARK: BK-B +open.spells.missing <- final.state[!open.spells,] + +r[["num.final.state.missing"]] <- nrow(final.state.missing) +r[["num.spell.missing"]] <- nrow(open.spells.missing) + +# spells <- rbind(spells, missing.spells, missing.spells2) +spells <- rbind(spells, missing.spells) +setkey(spells, title) + +save(spells, file="spells.RData") + +# save several other computationally intensive datasets + +# load page info data +page.metadata.filename <- "enwiki-20150112-page.csv" +page.info <- fread(page.metadata.filename, + header=FALSE, stringsAsFactors=FALSE, na.strings=NULL, + select=1:3, showProgress=TRUE) + +setnames(page.info, c("page.id", "ns.num", "title")) + +r[["num.pages"]] <- nrow(page.info) +r[["num.pages.main"]] <- table(page.info$ns.num)[["0"]] + +## save and go home +########################################################## +save(r, file="sweave_data_spellgen.RData") + diff --git a/GPL-3 b/GPL-3 new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/GPL-3 @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/LICENSES b/LICENSES new file mode 100644 index 0000000..71d44ad --- /dev/null +++ b/LICENSES @@ -0,0 +1,42 @@ +Copyright: + + 2015 Benjamin Mako Hill http://mako.cc/academic/ + +Unless described in this file this software is distributed as free software. +With the exceptions of files listed in one of the headings below, this software +is all distributed under the GNU General Public License version 3 or any later +version. + +A full copy of the license is availalbe in the file GPL-3 included in along +side this licensing file. + +mysqldump_to_csv.py +------------------------------ + +This license applies the file: + 02-mysqldump_to_csv.py + +Documentation on this software and its license can be found at: + https://github.com/jamesmishra/mysqldump-to-csv + +License: + The MIT License (MIT) + Copyright (c) 2014 James Mishra + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff --git a/README b/README new file mode 100644 index 0000000..5370398 --- /dev/null +++ b/README @@ -0,0 +1,160 @@ +Page Protection: Another Missing Dimension of Wikipedia Research +------------------------------------------------------------------------- + +| Author: Benjamin Mako Hill and Aaron Shaw +| Homepage: http://communitydata.cc/wiki-protection/ +| Code: http://projects.mako.cc/source/?p=protection-tools +| License: GNU GPLv3 or any later version +| Description: + + Tools to generate a protection spells dataset from "raw" MediaWiki + XML dumps like those published by the Wikimedia foundation. + +General Information +---------------------- + +page protection log data is very uneven and changed its format many +times. For several years before 2008-09, data on the specific rights +were recorded in comment fields but this was subject to incorrect +parsing because people sometimes added additional information (or +tried to reproduce the format "by hand" as well). + +This code is limited to extracting and parsing only the most reliable +information which means only protection data from 2008-09 and the +point of data collection. + +There are two sources of page protection data: + +- A log file that contains log events including protections, moves, + deletions, blocks, etc. + +- A snapshot from Wikipedia MySQL database of protected pages at the + point that the database (and log) was exported. + +As mentioned above, our log data begins only in 2008-09 which means we +have data on protection spells that is both right censored (i.e., +ongoing protection events) and left censored (i.e., protect spells +that were ongoing in 2008-09. Because protection data was not +recorded reliably over Wikipedia's history, we believe that avoiding +censoring (either left or right) is not technically possible given the +data sources the WMF has published. + + + |---------|----------------|-----> +2004 2008 2015 + |--Our Dataset---| + +Because we don't have a perfect data for the beginning of any window, +it means that events that happened are invisible to us unless they are +ongoing at the point of data collection. When our dataset starts in +2008 (as it does in the dataset we produce here where the log format +stabilizes, this means that there are two conditions where data will +be missing (refer to the timeline figure above): + +a) If a page is protected in and is deleted in we wll have no + indication that the page was protected at all and no page + protection spells will be included in the database. + +b) If a page is protected in and its protection status is changed + at any time during period (i.e., either by adjusting the + rights, updating the expiration time, or unprotecting the page) we + will know that the page was protected during the period from the + beginning of until but will we not know the specific rights + associated with the protection. We will have complete data on the + protection status of that page from onward. + + +Running the Software +----------------------------- + +0. Install dependencies +=========================== + +- Python 3 +- GNU R +- `data.table` R package available on CRAN + +1. Download Dumps +========================== + +First, download a dump of MediWiki log actions. WMF distributes these +for English Wikipedia at http://dumps.wikimedia.org. For example, the +latest version when we wrote this document was this file: + +https://dumps.wikimedia.org/enwiki/20150112/enwiki-20150112-pages-logging.xml.gz + +You will also need a page that includes the status of protected pages +at the point that data was created in the database. WMF distributes +these from http://dumps.wikimedia.org as well. For example, the latest +version is here: + +https://dumps.wikimedia.org/enwiki/20150112/enwiki-20150112-page_restrictions.sql.gz + +Finally, because the table above maps only page ID numbers to +restriction events, we'll need a mapping of page IDs to page titles +which is contained in a table like this one (the latest at the time of +writing): + +https://dumps.wikimedia.org/enwiki/20150112/enwiki-20150112-page.sql.gz + +2. Parse SQL Tables +============================ + +An important first step is parsing the two wQL dumps file into CSV +format. We can use the `mysqldump_to_csv.py` to do this like: + +$ zcat enwiki-20150112-page_restrictions.sql.gz | ./02-mysqldump_to_csv.py \ + > enwiki-20150112-page_restrictions.csv + +$ zcat enwiki-20150112-page.sql.gz | ./02-mysqldump_to_csv.py \ + > enwiki-20150112-page.csv + +The first file is small and should be very quick. The second file is +larger but still should still take only several minutes. + +The number is adapated from: https://github.com/jamesmishra/mysqldump-to-csv + +3. Parse Log File +================================= + +The log file that contains changes over time is much larger and will +take several hours to parse for English Wikipedia even on a very fast +machine. The page log can be parsed using the file like: + +$ zcat enwiki-20150112-pages-logging.xml.gz | ./03-parse_mw_event_log.py + +This will produce several TSV files of the log file in several different +formats: + + output-moves.tsv + output-protection.tsv + output-deletions.tsv + +If you pass an XML filename to 03-parse_mw_event_log.py, these file +will not be called output but something based on the root of the +filename. + +4. Import Data Into R +============================= + +Import all of the data that we've created into a series of RData +files. You'll need to first edit the file `04-import_data.R` so that +the input files (all defined at teh very top of the script) match the +files that you've downloaded and created. + +Once you've done that, you can run the R script which will load and +process these: + +$ R --no-save < 04-import_data.R + +This will output an RData file called `processed_log_and_sql_data.RData`. + +5. Generate Spells +============================= + +Finally, we run the command that reads in all the prepared dataset and +generates the spells dataset: + +$ R --no-save < 05-generate_spells.R + +This will generate the final page protection dataset: `spells.RData` diff --git a/docs/README b/docs/README new file mode 120000 index 0000000..59a23c4 --- /dev/null +++ b/docs/README @@ -0,0 +1 @@ +../README \ No newline at end of file diff --git a/docs/biology_screenshot.png b/docs/biology_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..80f1c0acd98cb7d26e6ba929a850f66d119478a4 GIT binary patch literal 113874 zcmdSAWl&r}(>9DG5S&183n4&ocMBfe-QC?~Ap{HVi@UqKyR*2vyW67Q=DzFs{=HSt zzqj74Iy-yj%=XOmboX@kH77(~RvZNp9}x-)3Ps|Vh$0je3@Q{9^w&>tkeb!I=WR&w z!AVF$`4i;h{mJ+*Czzm{s_)-C z8!aXp{QOe%5I4w+>I4Ki?vJHCc=KmEiRH#Cej*J(7h3G9$VU1K`SG_v7zX}7HPZjf zvTPV075wodicWy!H4@^F4!)rBnE~~vW7hl{_Kz-Hx+%wXkBb(Ejzh`?%;nF@xuNe? zIgo~v+?=e=Oe4io$@oTmB{T6O%U@m+?ho{eD}-J&*udDqLQcYoSv5jVXJk$PXL5Cr z&La}Uas{bOZj@i@=kDDtN|dq`;)M&C6OP!VRjyi_Ls~4Uvzj{`*Z})Uh~^cwm22!C zft+kLp2~$x=Qjmq^n+4L32|zViN&SpzN#{BGkV#6V%SeVSUHSSgQjsGJe20+b)T*7 z)Jp#IyrZ;d^^=^wsme2d?*DmQ$}qtvU1gRVW^1@73h4#P^95P|`bo!zmq5`$O&(D$ zSYT9F?ie|-+qx>D9-%gZwBJL>>sic|^pR7Im# z)5?V=7d!HE*DfdXY^PzQ0s1eGSE?I>GW_;X=Hcmd^{?_amiT!?U@)*)HEh2y^Xoaz z;ZfN2gZRx2$b7zB*uzDLkDFj3y_cT#i?$9^=Q}@CirRZ-{^<>Iuxk0_=_+(!U=h#L z&y@xg`E13AtvnyH0)4(;Ft~i4&cYpEgkJJ(*4vr~9;%&HwBZ9w?sJt1Aj|GVHd5m8 zKy*s%OE^6PU4?|$(~(S;V%J$+W`AqO%F`L_WJU){_|qdaX-Nmts{4u3fi(BrFwN=| zVNPG**L-Mo@%CyCq!)F1q?95?!ZF;ahD~V%YRtdisj-sy22ilyx6If7m+>S#b96XD ztZgalgEBt$yGvy-ww6;(aK}1B^m*+{XBBD!zA95w`4+5Db1VFyi6CscuXHHSM>AWq z5{Q_Q{$l=Xm~vg?L`aE6c#gDLGgnL^ZT=2+kV9OVEBEv z4N<4<53cVIzC~|uNtvE4>ow*779qW}q-@^h_317gk7XYY`0JCxe1S|Vu7FS5oJ-0; z@(5z>p8;2voEB}z`FMJVws}AWmk(hpRUD~6RF6@opO(~^?>ozq9efSE^M&S+~GDH;)%VEkJ3p=k&FWy0>Yxe4eRcKQWXHcL>PXy z^F0EeakA!*Kdj|-{E6bc=Uf3wU=*+BQ=2H#*v)=6cn>FD43+}(-swO;g9(=Hd)L14 ziDMh?X{nO^XJG*j)koS)PKuwB&ESdDVqg8Lf?lk%+{>$@qT|z z631Z^48lK)hW%K?GQqQRxcXLSWyY4=LdYQF zVp*}Zz$B>w)pxcCCfU{Zii>0I*r^D0py)Ln9nPrM04cLws>n9 zPj>Y>crr)zovQ3}_1m^1tv$s_>ayBHea3KgbmneOXfK|wS>Oo#^>{bGH7&VKzy-SP z^ja2gV3GeNsF%z8(Z1P(QZ8e6cQ_8Y!;7)IyL%yRF!P(exwWNbWVz+?Kc%J~O-TrR z4c+^~|4cY?pnCnr2|u2)c3HzlQ6i;wEte)z>sCo_J~UomC&U@=yE3;2F?lmJYAVV+ z1KHZU`nzM@{%KZA!K4oj-4bSU1{r>{dbwbxftYN-vZE1b2OpeFKV{zE-=FXS;OJ(eIt_*`5iy6q<=U`Ngv1>UyYHE!5Z3V6vGQ z`d41_?8Y(2$=1!KcBIZX`%q^m9$s6KQvU+y&4Sy!zXO(_3_hq2@bE0gL(#EdXlQ72 zR(y8b)u9YNucotxl@ckKqF^S}pjQy%H3>ZKezGdVdDS>^QFlNf`JHx#^J)v6_t(~M`!8wGx(f7 zyjW4|#GKe5x0b*dBU>sRP?FH8pKzKqNPMM+;1%v}Ah(F>8v|XWu()h&iV)YY&!SH-@cGt!p7+B^<}BafviwAy`*}r45AV!e!b*5^TfSg0UU$# zVh$FYxFvi7$&po;eskfEZHLA?gk2>?P$$C+{+8m8jZGorTA@#lH4KcN%Lqc$X?d2G z#Xr2}43^$)sFZA$>SV(BX=%KeInoY(Ey7@Tw4rRciL1UZ&(>}OY;mvx@87WvmfLaW zYRI7~U_CKvJUJ>ahPN^l#%XL)@zcAo3saYP>oD8JTw(C_!lqnur{pgmF@f(9VytTP zxyxS5K5e^1dl5M7o9vzxEWxf7lOmaeM>(r%h&qyWV2kC*I&fklLhH3P z2E4=HkY+2pa(`xVaTJ+a%Tm6YR>jJ`8*@GCaQX_9yttfET6kZ@LlJ23$~TE+dU+DV zvbez=?x5>gk-^;#Ow82M?7+i z>l#%Pr`(I8mB%gOX7KG4+V#yl=_W(?(mL;1^ToyDl)5eI$9vm$&2mi#7Ep+ar$seYv)3)QTr#oFJ=>q$C&M8+YN%b=w9 z-bFdmcSX!xQC*tWv=}{aD&skU$4_H-iV(y|gYIi4Ra>18?nWZti^UvG#Sz z7thajC!Le z4(1!Ftqv7dRUHx}rn97TH}p*@=*34y-V@Uwo)Xz#;g11wpC*?(oY&|Z*TciwVP(%+ zH?5D1V}p6|$8)tBZJ`Kx-HWD~M|nf%tAVoPWgk!}B7=jCaG9|-*gK?2^!3+TcJjke zAWHfOWnee{Re!aXm(>|sye6tj|Bx^TS#%UO^bMYokktAO7w-N{Y9q$!Q&=g*2qWRv z8W-8oN+Sa_%lh75lA{V-L*<6A)9*K2b*5;! zYWcAWO1iThc#X2R+@rZk39n{?1VE<79z{_qXyGX?M5hUK<%!flg-4hM7oWwHj zYJgOimf{Eq#Jh*OB=6jgd}*Ax2B&+$dk+r`omX5OH-^6A@mnyt{ts0%@^!1xBin_I zlgx(%EdoS?y0AZHuym8ad?YUh8k7&pw2dEawu&ExM%jH|1~!ugZo-PMt)gq5zczjZ z2tx*anFJ;q^<@ImbL7=CT3 zVbd1iO=95SK_V#E5HJ$Y;Jf{OXjsrhue|>XW-^lJb$Y4o!mxP{=fQ?z%?>?dITq`r zJ(ZM$BN2`N@pq!GXYul&Rb~4?AQDamRc6VNy~Rq5*2@!%`y=iE>d~)xJBK_hm_U!+ zqze1Xl}hl_NhR3RiZ;1`@ES3Uovpxunj+=3)$MX^-d~$)fv%{(`cbKhF^Z67QSG_7 zD8G4L@^hfMe*X?WyY*t%`C9An_&7PF@3mI9T7%vo$CKH<<>$Jmu5RZ)muK8!ypu?L zo-G25FzmsYYWJx&x)|_n*f)2+y1Q{YqlYs&Xrrzwa}2in?4O`Y*~_5de_!)SLKyh_z>9=S+vB9D64ZO0tPqB zD-GV0BWpbkILF>n0KpGecSvVk*XON-ELb)V7l~ZcW?0YnuWOtR5@l zu1bZLipCyk6r9g3MBH{IL+?%&F!Avv&CP$DEL1jn$5M&f+E&c5hAzyQm-uF?5^&<8 z1~_EheV}m18ox~G3Ydrg#3R2?Q#KJcCER8{QxK#OQSiNC@CbLZkk9kBjs%Ro!pj*QQ=TyGDOfz7K}JoERkeHlFWu=H6~bV(4o zs@YO3cvh}5qf_mxNg1qo+FPb}*+%$#{$vB_=->d)%s(!n*SSA;ZTCY1uTbXiGdp-d z*2@E0WOS8&YF*}SLk)GbNwJGQd2E;z&f=AJpdreFnc^THt=HTreUi@#XZ-ffJE{W* z{6Z9~ZC^83=kM@g2sl2$K8V2_sN&1pcui9Hb`kqQq3gdy9 zxHA=uw2XKiL%x{o7V?RCuI+?&7{1BU;m)l^3fzCc1{=WAzrFqiKe~F?1KZ}w&G9xi zu-a=1cZfK)QtW}4DsATpk+3#M1@~_G>8bOI`#YLqU~aAHW-}-zk_YBQVPEA4v;I;V*{AT6S;QkH;D?UoWPU=$PM%3^7HW@9ABsZG^cQ1Ucm4^UO6dWqRGG091`GZh;rVi{!J5w!ZH-TA(kk(}Et}oItn5<` zY^%{xKr~lff!3(EEcy2sQ$|Df)M3!@*FE=dV4K#dWkLUeZ1Qw1VN+Lrd>MYcPVs6c zW>iQ>IFKe>pdfWJk=_iZ5J&DLp`6jy*_@1>C?C($9_}tR3dDgt9wUwutwAppAGpQyB+C3(JD9WiX+`J4g7X+q#h&U$C zNd2i*&qq)uL-S5jQ_WP)W&*H9WlU>3-fvUzv?VI^zll(z5 z)&K_QB68LH9Bo_ibTM}MPqCb*!3%#(uNjd>=J8n5#4@$6ubC-rTY6J}HE-=BGKJ=4 z6bJl`p&MP&b#szkRG6>=7hzp=rd&{Q&xvkzI8bt`!JS8mAE)xqdUogzND`o&Twoi_ z(Am}Ww4+JHfSvJSwRkTdrIY#0!%o(E5&l)Tpq9Se7{!EJX7)lBIpr(_b92@UT{ct9 zVcD6754sNWhb24?j;|LVT7AZMCX!`;f1|3TTyGiKvv+njhFGXFjoP5u z+1c2v?%v+s{hif&TSTG^fGwGa9KecU`3;mfuwbx_?FO~p#03Q$CCYX z&gYhY5m4K1jnQDF_x+ODzYFU2Vxx29?8H^2AL3T(;db-1>gKLuB?Z0Gracm`fTFhi zmbJNyXJ$0*YL@rpYjjWeX~CXYWH!pu7BT3#+@6N{a6X-!HBHHBn?S9Bh5T zl6izFHtBQ!Q8%-8t>)Lkn9PJn8VA(G@2$2uCe%PgX*vFn_$ROy%XbeZ%8v^3gu}*G zCGd8ruCx!D38#ALKv!EjjpuHCF_k7(rKzAz;Gjk=M~D#}UsJBIl;X-BdIMX?hE~JD zIB>4*jgC*_zJYS|I=m0y8?f15z1rHq0C3S!z zhnlpoDEvsKvTIk*pYJH3DQqC%i^!n07NK%Y$Q{4WV7+VZh_2Ad&19}5lzWH^Ya$_5*wd)4z(=&_~_H0nR1+x%cWGWjTc2gh)1h^XT1XsUj4?- zSo7tN+J7msIOTt!5+0X?Rv=;y_AYeKE-AOz_}~0Al?!y)8l-`T<|g7s#zj^MfcLZ$ zdl=s7in&Q*bnsab5{vXGy~c%a=g58T3j7YM|J7p6TTJ#7*|6kC+70~@-Zd@X-97v7 z5Qou=+p)4TGHxSd_m_{$$x62P7Jn0E?!@arCk9ek0bos&kowYdlg*Ss_2#KTitR#R z#v@YOwE&d#`NORR2<&2zzk_?L8-C=H?6T#6D}4~6*$!k;g$e$%-M#z6nWQavAX??F zW3rjis{~j-8f%}f?rJT(clXDO%13Sj_WBWU!tcp{PtckB+Z4G4wjro6yEB*W{1DeU zm`K37CEUkeYqiwdrn2fV=ED8iFwa%%gmkA_ds;i*8cC&<=?iT~|_6Ua2SX)U9 zkF)Rl*#}Z%+Bdn-O7 znrjMo9p`ULUrOOM*~`5YIq;kXIiws|I_Uedp+xHd%xf(h0Ldi3($6dSgDQ8@05+f1X%bP zrk)2crdDHnVGrHh!Wkc5_o=KFW(e;NeKHa$>Ggf{7rT@F7L9t#S#y1XXPb*r3=s*<*RWjk%O9I8kKU;YqH{?Ix?R z!8yI=B=M!vWiLcr8@%Pu@_jB^O$H!>Rp>I4fe=>c=yB&IswSttLjg4$F znFO|WMg74N*`3VK&?eRu@)4P+<@b+^V)q5cf$p*{ZSw)2cm5O^+~DR(?Y$23lZ)Ps zcAlC;dU2Y{5MXv~OAI(Oy^e@rc+$m{R((@uA?J?wRcnTR!_V(+oQcK@ax;z1Cv0b@ zduNqpGyKQb`MZ8MKG*<`hs{XKNQByHX6FhtdcBK+oy7~>$4((rhRf{2c~1bRSLFUfWY^n@ zj0?9et%6uLCp;{dz|vCzZ{j%S80^-}(njPw|BldVxMkVZ zIVJJwW^2|ILX5`tp<7B0#|rF0yR%Wf%nMjj5t};OwdLb${0&e^NT*gK`QA+BvEVw& zzC87ZRpnNSfFdN<@LNm#1fO2yiJHy)>=~dOc%RfVfR!*Srcwya4ToHBL4o`HbmZiDf1nUGk zkHlm=mFDsMfzbS9Fx)JYyvXTwW9i57pY*vFpXam2RXyi0ThhLWhdDJpCf8H-(i2v2 z*H-Hc7}?y|uh&nxsSt1m6MO+$VJdN&`9xTtk;Iq(-k1ciMjqFF z5~z4PFj8I_5vbPrm#%wyYlHM4x%pM3w}#xlX@EeEy{#vwlp22~w+hvW5HWSqBew;R z0r4da?#-k2r7>0ly>LRP4`zHPm~&4AD_GH0#Xzs*ZrVQ~g$t|z4QqD}5?O}NTL z;J-Q4X~BZIMo#a$IkmY9TGBq3heA6CMw-CpsgI~GO9c*d-T0{w&9YMGecNxAqJj&y zhaDRs4!iA1Ypdq>ThB==^<;LBpW?&nd5l=;?2$V5MMReG}OsG&U%@MsW0QqM-Lm643`!I)n+8Tb8 z!PV?s6I~zZNUOK7*9%HP!JGWbt(QLDx?t1V738u~ZzMmY5`WL+;7s~{Mnz<8 z7OR6t-9*P!s)^8%q)r(di^c4uSoll9McD2z!x;_TljK&I;a01sO$&6D3>v{Qt~`tdAF4s z3V-J#g5(_iA1lj>L4FRD7NnW1R>=$kUC+QYt{eIL`y}XEBbG5)S#x@w9^^$m$=rT{ zeLsKL#E16}KTEUS3^G%C_DIkaH=StcC?kX$FT`usU!zyy3$`Bn4_LKsmfGRY~Y>PC$zGKu==hnpCBm_BhVTE886%HI_{}Hga|Dtpd#8L=?xi&fAKd3SN zLt0s>F*yH$usx>#cS;!rS=8M7>`NidQ^t$)o)T8$Tt)f5^y)PDb$LDb8vnL9z)-(g7RtkFQzqXACej`dJdx_^ujQPOAZ zN@m$S(P}+oX6_m<|NkEtJyiN?XyRHDu>K}DZ}P+{koNO5r!jZ-6P7go^t#4szWS2X z%2e!w$svZ3HI+s6@ag-sdgszV*4|MtW1tc?HL#|oby)|IiB~jpF3hVKgn!RkYCmmo zaB25)dxHPKY-0O~1*XluEMAwDr46o%z5cNI#Mm`o1YO>uzlEhh1oJb-*cd}73trFs z>JOL`CNv0Xm@aE}r_-pNQ*NK%EJwqK^^v#c8wpT$zTEZqb#yVMYNUKb+|EUHKj`Qp z^n70v!f+TM(WQf%+u+IyfgFf>nmx7qe0c?_g6`ws&u=qwPR>Oe6ng)27T_d!>}nxV zgE64I88JVUq*N%{@!`j@;QyPJ+xWw+s$^GQ`Ei__eq5EiEm*Jnlp(TjEsJ`k$?A6=qfx+b$4#a<+JE;czA< ze5NT&3n#j|M56fqEv0;B4Vv?&Um6ByFg^^^{uDG_#r4<v% z@eLv}@hy&fh@+igw1@KK!8fOBXN#E_E@6sV>uIMKFUKEFLDB^PDK~b)waAUq+@;&m ziDOK!dyU1;&gs+MV6>S68G@ePUZ&J>-up$Pv2-3B4h{}T#nj2&>2iIkqbC@AIYP6b z-1*d6lB3-in6UpIkbisW;kN^I?!*~gcm4DMetuC?^`BT`PtVMREIy;ic|TC2-lNhY zr}V zAqSbh#O=CzwsAc@LO^;Q$x7Y!%bS~>{Zu=8ouV&k+#lCk=9(ipeC+eY(Rf4O<>ln>XURW7LQbTnCU9M{MuTYa}-O%gf)j zY|b(24m+^$Mq(BZB8AL?5bl4P3LvMXypb5=&}K4ay0BBi^Oo9(H8HEqo4o0t>Lbtm z(HP;IxE>Jc86RIJ)mC$qevL4Z3g1ej=M$Zt9?`9zWw+6h0K__3uBZ9<@#CTj8}4;s zrv6mUvPwlb0Wqg>pY`|b!}oKigK6QGPyei(1Eg7AVPP%!(RMYZmGSvpVh`xmRF_>f zIo3==mCyjFddF?4Kj}+>JsBFIyV+4ztLT#9P|@7z?#|vdh>$JJH5mma;H-MmtU3hS zV3qbnpb#?Ws1shJB>#Q}kkl~ci8q&0gi|4i*dQB;4k7=6_1xV0Y<)+JG!PI$n@;dI zGm#)t^ufgb_E4}ZUjCb5MLXv1@-#-$E%*&;Hnft}x(5RKB@)VO-vd|j|eT%5j zQP^GLFA!#ZGB!4jPV$MoS+YQGb%7dp86Tlr;O5-iS`OO14NGX4GiQ}P<%zXcLiO@t zaOxKp`QYxQmaOOF;}c;*{o}{a(m7S#&2!x+e{~moSQvORJjgHu12IlH;u|A`lWO;W zAP~^hvEz~YPCvTh>*eicmM9z|H{MDYV2cRKnf9qFWA_s^kduoK$4yk*po9tmxffYR150y zGuCT~`G5&>&Mfi0QBoq6#YYj>YsMHQIX$fD<4mf{5ImT zMD8!M-p?4&TP+D+BeX&gkjnb^5*JcBVgj)I#$G6}CRvzi!=vAT`MQ2mA?lw+4+c?T z1~pnZQ=! za$r&tE~K4ON0)e1&qb$jKbXBqmJU^A6^hyiC+rnNop&}EX#1M{8C&Tn6j2;apnz5< zyfYy_f+;NdN{kljd`1m@TMbOpn5*}Rra-HsJyV0nKl;bY%1tE~zzBv$^$R?|kMxlq zzws4fnu23z*jUjgj1lZ{y5G@M=c00`H8r7Hwq_!MF<;Ons}jdmFoZriq+77!r&!S) zgq0R(Lq!&*?GIm)x81x_5^_0(V@HlxH#U+v&*qkSADT4q-;rdXq^Z=klc&G*5_lhjltSL#yoGX^`;Z`-lZ$Jr#pPs# z;}4Acjm)90%jho|+eut_abC|4j7ApU5ybTd1#Z4tnXN}|gb$6#yxPv6V_SUpJdzyc z`)W_FFZOOZ?~?Z(4@KJ!Q!GLoQFm1Xdio_0m^V9pw@OX1xv#Ly9h0J*{T6wPmMmD9 zV^&S03Pk=+C(Gk#0s~D7?FdT)ae74RH0jQ?>OOwGirrHjT(Rp&xDZlxI!%xf;d?-k zi%6375rjs&CmFrWfW2~k5W2{M-4rUw&(ChR;*t7uwxZ>O+6t5ZB``1$7a1;GjLg(& zYA@Z@l^m9W4Ic#}MUYx)3Z-H0Jz70mFiJRg)0UbF=Tjg?_3Cx{^VqV!smQG1mp@E? z5mU*ca&4b3OZfZjPe1>R%6XSzirMR2(p$LYJ5=!Ar}U2x{VXLWX%W4p+fPL6HAbG- zB(W`xOOrGDh1Y_NM(IzomMG0%h7k^)T8^P)-M`nsT{Q`jAxk@G#`03Us+@Sb92eriH;Wt6qB)kW8#t}q>o zR$~yK7j=I2l)1d50W1FKN96t}$i@tT4^UB2lcXsSk&qxlTN#gvgu{Mc5sEmH;f$G6 z@>X4XoFw^P-=UG5?cxz4d{w2&+|DAUq%1T({ZnB6Tg1UF zP_|IGa3(<;pdg`3+;%0FezMHyC%n`uZdkVUK}U7T_ILcq8k9-G8OG&tRIp5pFd+Xz ztZVuQ2D|jYnsYSA`I&UB>G+}dg<|ZJ-2NTP)pwDxtmO>!Mkt{_Vf5pyHbzGS-a+Tyd`R)=ea{@U#$C1R0WpBOZ})sD zCxjk%9cCkxxFl$JdvYR@#j(H-5NXNHB^yuWDD=45uQQ*5QBzaDW8?4uZ>hk== zM5O6>%2bI8&2qg}aBC}1Ipl2G(h?qIPX7MF5+}k5I|RIZTfJx}+Mp9>5_qd{k;?GA zrr^Toa6EErn{OLN-80?Us$Y}rgc%*#2@p?V! zeWySD;!=2;l)~o{&DP-}pz?t3kjOa?Z<;F!SE_*up0b?GpjMUf{Qh$SCV>Dk^(u3V zyM3N)VedajDoDQn9cN=uuyhVsreqQBF9zGVrh33VuNNjPwsanh99z%r z*6^FgXN-~V*yQQ}X#~=5+#$#iCnq)*T~z(oSH7T*afdFz?g`;vP0cq%Xd^f#g5JMW z$s>Ka921iXPK36idAfiN5#Jq-oFVG+|~ya_^qAr3o`@y{qKWj9gFC@QD03jU*s z)#iqVlz-v2xo3Mug-$Dm<3{c&A~-%*&Th9B9{8Cbz}1?GN@*lYYenJ{Heth~DQCXK z{J8NhFBy}Xsx_Sx9T(@Ho~|>T>;5wjBBR6Y#1-1je};{7G-^$E_ceXCf8QJ!jC?U) zX*f?%TKMKxif@QVY&j!*v95)Z{L-dbd-7+bTt!oOc3zU;M*=~oU^_n`@A#~OK~t_$ zn+IGP;{+^4xl*x_Z{@X2_i2uhE7c*9RcpUvKTUjQFS@11Y|fg0%)NYjQ~W>^TTsO*{|AmV z;Bk~0e+zt2$(Ih|_isIK**C`DED050GD0>`=y!`g7Su;O$;FTa-haxwF2NI_*9}?O z{?)9Mhc5Jzz{TA&90&Ab2q)5daDIEz3CeqnSQwL*mit#Su_tn0%R1YEK-y5b7-n_#wV)oPe+~z_&;HS zpY{$1w-cPIv_+Cfmb0OyHL7C{^KvTw#+FLKTzXk^9D1=(@}?v}<9u3ihx=u+qSPH= zjcjE53y##l$)?pI;UDig26GAyI^T)beLG!O#6-F<V7AplhqNvZDl4^Dkku z&E5L`_FQSJ?b-RUw+a2b*G&HX^@v=Kf}&2e!68&iMn zcgARyLTYRq?2h%0v1O&~uZ60gIh_%%EO?UU3yab;Ajd|BmTOu@YM3rG3sc1;nD3I# zo9RfAZ|?`Zma(TR_?idKJlobA_T6%Cu!a6|+c)ihNqfF}tB}JxS47J%MgrgrJoq1= zr5njEpo+4{^x1`oZ-~mhJh@A|J?AoLI-XBrOZ)3(OKA!4^D(b7&n&~&k6upSRRljt zZa7CrKd+M?rh59&)!d^$z39FG-@C32h$QcGn@}qrswp4|uT8m0mF&XNN1xqt0p%x~ z#rUBKb({eZNtD#7EQU-!(llq?`p?cQe%}tvEUGZ6g}u}ggj@b_f>r3(Oxr?;bQYDL z5O5lw>8D(%tI{=R^81bc<$%_J*I>8#y1u@C+w6Z0Z%iC(U?| zMjvhJz^fFhCjK{ScJk*)lerQN2qOzXi#SUP4QCzNYe0u8>tzcsbw^*4wsv@C2Hu#m zZT$ivt{OvCCWgs{>Af9-p|(qMyV7> zbHPHb5O>3_!c2<>PtrcYP^<}Q_?eOmpXxY%Xk{bEI&5Jzb%D9C5-$TP-Atg1C7z$3 z6s<`^L;9Sf3coJFS~cVinS~|DUh(u&-OxWw3^EO zRonBdW)g|SY6xdT$M$fyiQQ+VnWY{R&P-yTOrMEY_jmi`3PfSr&mn@|7-|mh8Z@N| z&gsQ3o|@&gC?1P7wz}VVYX6jQqSh?lY-4N>`u48TOpv{>U=s*?+3O6 zzwWHA^Cfx0Pl@XFx?+v0^j<9=Mt+1Oz9%a9?CsA7pM&M>w?(dUg-BW}kamJy@@=$m z7|Cn+2a>OPTekmXp!x@I5!QCx!fGu9f^Yl}k8=upHyzvy^0x$hIEg|to)3%n`*H`( zywN7gqXtE=nY3cB2rm4I`S^FdoGhe}HIn}7k;o-F_^7~tFpk0HkJ31Suf0uZwb0T5 zxacIkj=8tAG)=mwqfcCE(dv*Eh|H5PPxa5ldItLlat>n8jmHlGg>90!`{CO=UAnT`9%WTly_Y4_53tg-WvCuoI}x*$ zm!5RLSRPlCtAf^EX`f4lC*e;w>Wh9b&hB9D3SR?-^I`_F=@Kug&U0#7bOIgc?AzFr zjUXG{@o+s_WLe1i$AfJ&V8I%fPcufH9%E|2dcl~6j-KmEO3f9XTw)(xUt#iM z^lIQ&fy7vFJ0=-t(mb#oAtPK*d3;Dv7^d{$Y13@6XWfbA2cDS*6`5Jf7jdj7_QTrP zF#fUHrg&=$0M%Tju||yqsA{`Rhqts+O%?e>Ex4A2Kc+899RuandIeeqI2XvSvS(DI zIG=Lw*1s?#nQk-DYsrmuT~?*z2<%t}9Bt!>B=+4Aa_@}+jY$f=h{Lg2t5s;T5mw6V zt3xclr{gPZaLujf@}UfFsDQf+oV|sASVm4|^aA74M1Ry3k*=Y{At}bn*uF_3^G$2O zwc;U$^n_Bfo{rL=3XV$eOSo58S)*wy9^Cit%MvXLX}Hm^B9PNhpK;`*z*CT9umDip zM^e5YMTXwJCFvLaIz3IZGfBKts7jn^b^Zp-zBEFQlMge4?26)vjsjVGLe0DycY)@v z0UeRm&bQFW!V=9VX!Dh*uORY(N*yV~#Nx;1#U`D=+fqK=cjUo8=t8s85$z>H7sAn* zes?@_20eYv?L176;S9%a9jf$?GDku$>mti=cQi9|`pKDX968)8TI7hh^1BWw3lRcSLXKVy8h zG8$q|HyUg$l_;yx<4G2_pnr@)Gfe8F9NsD|J%6t#c=4=ZT$~2ll$X^T)KAn8hVa3IG$IQjyAh$LDb#l&T<=Dt;BTl?6h&@FR(d30`b`o2KPP0 zr``^HD!RSdCqmJqn&&5Ti5ficwayAxeBZR2yr!(_>F`1u-Sp0NP-+uFSyofb?`l96 zS|4J-^O#W~$k|hQsqzfeBkCWLypX6XOk&VJT6O)pF>i~WcOeul$DHkVv#4Zrs{e0p z?Gp_L3Jcdw_75~j=B@LNydUXDjqb0(djr(Yxa>*n&ZI?p!J0N|Z5eYr^`ub{6J!1r zKR@2`P>2-|V&~bN>1GH{gVZ!mJsj|!L@PHL9+a!bn;8fA9YgkFkdD!DHKsQItuSl2 zKsQR(n~?O?sS84lBUkYchOngi&$w{#2Etl#5I2Nib+J2Ud-?EHqb@5OX-XvNp0N}} zMtGY%F-Y=`aPfsY03Ai71@bNQ$$;gkU(2PN2T%bq?lUN~eR>Kb4(Ei`#DJy2CLP+RVRh5=IAotgbod)2c<(Hhu|uf%|+%!$;smp-r+QUW@dg(uREClNDoz40*jc ziQ>jl00EQ-;l>+gZz7S=G$r7u9G17G`Tszye3FO7DR2on>3<>WspPktNYCuRT3lskm z;^5OS#lM|NVyoNw-#qM?>3#Uh;86}-tE^SO0@~WI?$3qwf4N&o{ap4uC*h2`tU`wY zwBt2>&!8qiD3Kzwf}inR8(iL%@_v})bu~@^mX237^i`$|%In#+0bo6Rq%0E&{#dabxx&2Zx;th<{e*T$8&nqk)9b*T?Uonn~058!!( zj8rvtKG=$O9Xd+e(i0dpMfY0s=278ib->8bdA}C!n+|i7^jpTe4wc?=cqZzkm7w7f z$1ZbtVdT{$jwX=qRN3>}nC#A4|4Oq*pQkp3FNo~3*`uX6`#J2IeW`q9cxEKCcTIkO zzlmcYb|Ul9p?F#0n((uGZQeHzYpte`tyIv>{vVk`acje|CuBw0bmQf+2*{oBqo;85 zYq_0EpzoUz5zI;QXm7B};@P9z)3?$6(QKO1Dz!{P?RzwYlF~=km}|XKt`Yc{mucLZis50FH~z4*L+~W3aurME6Q=ko`%`LjL(rlp5R#ye$nt2N%{s5H zQ$^v)lymzBVkOXMcB(iwba5?3^AUJi#9{2fOtm(FaPc`OSeV(;DVzialajd9Ol4T> zv5n&fwq~HWm8Pyl#gpM%qh$}N(ox#z5%smd%`p%sb~Z5d1UGiB%tC9=WeuaU^llu)dtC|7FPBAE4O z`nWf0*-}KDS*OBB6j$n)AVGe*Txpx^EH9cGuSl&`p3uYlds&M$#bA}x0zk@Or{24@~!o}j4s}H)cYk5kUEx6T=4Ke=Cnyo zxm2i;Y_e87qQso7l4w=Q%l^?k+F9C4amEnWfu6&TZ?~z>TawYbgY7a(heZNyxhIhy z&s?&hOO#9e@?s4>qpwghg5xdDiI6lo_ffw)1y?QWo*^s;u{H=4!SOcfBz#v;u3)m7 z0P1xf_*;4vD7@b9|6;oy-%xJ8x$Gae+$KURU1Lv>pfXu4CnjJNE2r@iV~THY3VL0=XPeSH5z~Rd*Awdz6`E9hRNA27dZF2 zmHra;3)QGrL0JK6nJ%H3$ZGHH4VZQ>U0Ze9$P;OM-bnYr>GEmajUw)hGOJQD_Z21x0G+!GzVo8M7hO7NxhC5>NoKc%c^zj(J3 zw;y3pU>cKCqOdu@xA6bFgE!2?EEvCg$~{kLqXO>9s^qfxjj$KTZ0H%vZ{N zznTWzYU+?Otm$_JF+&&hwfCL8ChNJT*WqH^@sF7!9lom9c~i@^vxZcA1vB|Pd7C~q z*3T9Oy_BxaW4nwm03B7F_YenNh!$@|1zy6QS8GvD-?q`w=y=AH+*-C=$m7)03DD{p zFZT?*&PfiGNo~9cZ?2j4p_kPDj@KHjol3toZe%dUjXwBzIlJU44emSJ8ANGa>>Ky( z>l1GMHM;kB0|)YfI&|h119?$xn*yxle1In-Y}XTI8m^rvXtBA#!WC6 zkQL9#v@Ng1HZ!p$oy#KzM z{TSJ3E_#8zrw39`r-^DPDP9dE+{hFz^s~)>u5GAfv3cyAn#kADrb^@#R^WrazGgB+ z4b>6UKk?rxaZZ)X0_Gd}zfz2}~D?tS;(YpuQZ zd%E&(82MkhRI@>H3fRZF@m>n9%gC2~4)f^W!&I?OE$ecX%{V`$igHyJ`YZH6-&r~| zDJC0b>|b_+_oHcuh3kfm$(go4Ls{lZVxbxLbhqNRi?K0AO5X3eLjC0ZRD64al@-y> z=R(h#tE%~6`vhbD)B*f!xy@I5wYDaG8`h4?p26#GODEi^z`poCM7LsgbvY-TU6Xq~ z`yIi}_Fq3aj`E0DEOlgj#cKXy_3ZUwSD0vGZM#Ka0jVH*-oP`3y?bB$Heu8F{E(jS z$h*ib*^TERZYfQIZ$438XbFaxZz60>I6OaqTi~cAojCJiV8Y z9Czescil2dnzkDE%6G3N3L|`t6gGZcPMR`JQ#>BEWRbwE1u$9X-~;`XPxwL4U3snEcUtHb5z^Pf;Tj@usV~GfO?Q4XwC~O?b)GYnMF=!zEGAy?tfu1sD@TsdmGPHDVG=Zg@Yu0Y~l*?2~-j--r>zvvkzk3r$vgh z!KKNOJlrWd%MI)l@g0-wT$EvY@}E7UX3vieK$iFxVSN#$@`{)}g^_5iOJ%A&+VA~O z(NA|Llz25&wvWA5+b%5a0&o99<w>KXofGXn z(ya$CSOZ_5g+znF;UJ|USokL`!KC8w4R(nFtFm_23|Q8x)hE&qUduwKtJGeBW6B;& z#GZE7t(J8!rO+wK1!m^{cH<3PI?}nE6n~-+61Xwsq+8b4>3*S=*x}={k`pJTQ+W^!vxDsS4TuX*5CA{L2aMc21$=l`i$GXnik{y zpS;#f)hV=fyTXn&%lQT}-49=G@6w4QpZBGBts_@NI>xW0+fG}%wQOE=A%ErT&Mpy>B$~>e+c6 z_bgq@z<1)x^X8@f1|7s_q)dmTN9N7c>xL6;%?9~jw|k#6{!G_Aw;TnmhTNV+ziIP2 zq0lUWg-3pP6Q{+T=+REAxDxO&t|G(-&1Fg1)weC`*ELM9=a&!f5#<4KacdynWjjm`w7t=dG}DKg-{%+5y`RN|GVk=0nE19z$uM&ypKH?j zi!4?%S$5fBiZrGua_^^3jOQP9f4?moeU(V(LBjpX;J(R!LLuu{a~_5r9Sqg(-ImZ; z?IGWyQ~u^#p9CX3KF1Uf()6{ecjB0=yp{(I9z4q}kQnK-RU2#X^vCW^{;O6r!8^GG zY#Yk=4+!c4WSjLdbz>J9qtC5dZ2RZl^2a%$L{I&S&Pao9Ye)Wd*&qE}WIF8V6tX`0 zfsahe0f7H(_DC`zjSAFjlV z=t&w;_C``glg_)HR%wOBU$cDce)(BYTU%RJPA*Q8DztZf_RzUShb01sDW{?$x-i2% zT#NaYZ@-ZUb0W0gsHmhQ=f{sY0gtOc%gZtSMidx`SxUtXm(yRQ@|A$m$DkU|yFF8u zMwAtgDppdjRx?(T>c&%0h2bquL{Lcy12!^zJJ@4r%#59z2<`VOE9hZ^7t>*jV8CtI z^Vl~M)oMm9S<{lloKGst>(?&;lP(=LvQjbjoaOhiF~vHY<>)1AQ)}yJBQ_}?AEBwK zDY0BdPeIbCs3bhPW%Qrn-l7$o4xVRrUIfKFL@2?I6JM{|+3+;H*HOke* z6veQ`!Ic1CfC_`Sn;Q>iSYYPkf$6Lz=lCu=xFk!?h~D+=oE-mzcj}nPL809Sl2n+m zelSYK@gK>2bt+BW-BZ4Q#{pL}(&(^#a_dQji9`{LNDvil%PnhcOkJ%J3El$SSngQX zlsUNBA{7QW;a`W&4i7hWP0h{klVySRF;9seY_0w;BZ9)bHPYFwyEadEMsSyqgtn$g@3@iL9Ma80HT1tSCJycnT}Rm6^OlChoP zgUKseHrOFA&G#9qK9}*|8sXx+d#Hb|%ZQDA0~drWB^Rz#yt*>Dq~$P-EDIt0Dz*W^ z@8yl5gwks)&iBk!d>|4!>d_BrYLXWGaqBMUOd>(AzH-WIH!QnuJ9~2f*tPbR(`NT0 z1AMuf3>~(Cy?xx%6HlJKnT?IndQTJ)x2-Q0EkvWP%wJT3rnuNI)w(HGl5RlqnRPSY zI5Ij~N%@QLcSfDeh>{cnG*TXEZrJW_2F!kxi3xflYFL~I)WX3Ck>U;`dU8xGq>x-k zr(q@aLSb2I#E_b@=B5NniIF(D&bpX#apnmO)Plae&4;t0x2%g7iswhte~Ihi`lt3U9wiYQ9Ghfc_0QpCq|pWJsY z+I9{T33NcKM@Q^@B`J0SaT=)NmoGBP%2+vcankvc`AS7o=3sH^ zv0_AYe;eEc@nmjcF}CX%pOBzmGk3Ge;uF?w&|$=;sG<@$W+sLKhZ!dJv`Gi;SD?c- zs`;$>cf)@Yrc+a{W5!$OcOPmDh?wcF#`oHe)z`hxfVig0nWZUMYyos;h znZ5*zWdB;Vt#Ugz@xJLK%~4^XXJ8oMqXoe{IX%tB#^%3dEr9_C?rqnRpk^*|%xtLL zHZ>)M+ine<8!kaQNIIVaGmI>8P^xg^XMMf0re^q@WzV5Aba1oJhz*7=L7FWY1xzLY zOPR8=a%W#3Vwf03d$4pqrXsc!4HN_;NGQp&!5WMZwqz=t2w(;Rd4`>X!)`r_Yt6Zt z$6*Tv3WY{SMZG}|`eVk97X|sZwUooCKnPtp_$98N%DgsZJkH+p1q;~XWm98@o(hvb zSp~UXNQ|GsKqa}TxEc#xEIB24HQ^=8dv;!ND=QxRgzupT%2psPRr~CkYk?Wl8z7f!vfg74D@@wj z+6q2IlK|$rzbA?Xg{G2)tF<$7ib@8#WhHRXo=BzqUj|i*YDz=4%NXtgC}<+0Odzwb zUAljsuzQJWiQ^Lv-%F5R$t2d<>pklShZJZ` zRcB0#bJFxcq>QzV@}(FC-m&gn!oiX^$vedkZ_GYqs|I%3YmM;qKxmUvBgPgr{G{^> z>e}8w`{B-R8^PDfFu-*4=nWPOT1fitu2h#}xDlH$1wJiiSS#&l;WgbFhRMbb<-v^z zQzd^LYP0@_7*v!Nu7bZZD5-8`4(Im*5rdQ>BA)HEr>0r&HoJiz@|scb8>4npe2wYo z_`-q=6{bE&R-lG7H8uU&zjSnQaoC%r2UTs?F$GjLP`ZE_J3Jhj#Op$FB#kFPB>Q8z z8WwU82oWu(DOJ~29k6EljX;3~zEWyDl(@moZ_@cjZ1}P?SiI?I3DV+*hLq{)=|dwU zN{Whp-3H{zvasM4pbUTj{V~UwEQkSagPBDJ2w&Re*0;T1MtQ9tsGC@Q4Vvo$L^9*Ap_C?~LSlC=}ror>;anB7RE6 zR3tGk&qts$``rfB|ISAP1*Zf)WKh9CB~8#`4w23mDV&Ivr9lc30oMy|*}=g9EQ8@COD4xIL~I$IP&WF#w1Fi9t*eAb^$Yd&SZzH(GQ3PcQsC$UsoG zwFyQO@rZz`n~;$3v$mEzK^h+qPtVK@F>$baccPHT`2Y_rNMVdW=C$D78Qz)y*+bP} zLgTb-KuFCE?F^BRmHp@y71h>8uemoUg+xJ+`@KxWZ=g)nq6RY*(kE%ez1^ZQ#AYdu zrZNDhSsQ%B1xZdyaye>hlK=3YB)0`69{JCn3NZHOjB!I+Nt!!_ZH}q@Mf^vPvkMA> zwU{M7f5y+DJG*nl&6Z5cqsvhc;YVVw4~awO^VbR%E)^|RT)lSVwzH4>PJ^Yd>)Xgf zOOuQ6%^qnYS5$8L&4|kgs3A zf}A-1MsRv%v24s8(mh(7h?Pq>@Uook1AImk!nbeVN>bNs zu;ByP5@#9h$`0UIk4~OMzRE;XgP$xzx6_Q3NV%fz(cg0V{9#-E zeiac$SE3jD{XUWgzB~eFYcw!AgF!Q&+g3_bWsiUqr;(nTQe6}GhBxIC})H~@@R1|wftBrSs4gQ|^k=E^2 zTH)0r`ZOo!$iiPouIA{V2E6`NuSJ(_8a3vhx*qSY4^!Q@dt&i9ZI(vWNxh;Y z59-8!$ygl`9rJ{Cb#d!1-tvoo*{US0Bi%R;$vO9`Zykw^&y2BN0Iw9*u^p~*+ZWae zZCUEMZ5KD0ZMlSbK9%O$uRqG)`Cz)!4kkT*x$STe;NBf_|GsX*veChQ$$xfvzHTkl zckSLSlriz3efC=(ErWC$f7-_;tr|XL2YGrY$C;Vy>eaW#MjjA5n&mjTW1*VmG^xW% zphS)5%j_N<_3U37)GsK~VRxjseD_n~!g)Bf)M9$@bH z`1qAmS3Dx3uH$Pg6olottPNK23Y=6A8!fGcs&cvp~L#WV%kyorQIS@u_-TK6}WEJlDXGpL^4W{ z;gHkElBpIeAQDh1y=W8(nzPI=sEB@h`0lHwkwjrgTbl#jTiB@tdxim-(B6)HDZLur zsxOD08=W)N2Db(kOOxSB^rp6ddRJCf+zR_XN=e~M=SS*3o{2wr3q?hVmwj3G*Qxw< zm|^Jb9#?#d^q_-IkPxQ;Q=wU%#$iD$mP0`U^;2Q!|Md$7BuFswlRF`Lo^yL_!Zs*vo>BNZx5}Ar13dDnlO`I-LQlj z0s=xPZ4O?Pd(Idg6pB<(P>6wL7cLV{$HZJvU7YcDaN(P@eO?zH6sj+GJ*3aVre8yt z>?C(myR*UXneeyqLNmB*`NenT24#Oi`FqYZp>bj8bfx?FtHo}}sk2>Tdy!Rh(a(SQsSqb%Ir9I6=&+1iS<`U#=Zr^RoWcIwWkcTGzZ0+xq zr9#r}(qAj8YnwIqL+T?+8(K5*{*C&s5a%B)2>ciAGM~ux#954?H(37 zM*Zd@%-je`taF&F7SaO&7T3S=5G{l4cDtFlyStm+)RY1ko4bbxAbr5IKR!P%?d2r^ z_PAZA6}m+N@wMZ~d*Lp?oEYKCAFWhuG*zN1`{`5cu*vy+Fvv-uQWdKpgD|Fnk`qL2 zabSSzOeE-;q(B#_Q`u`?O9AjcLxNGwoF|Dc4HO&(SnWT6h!%oRK#)^bhEl7UzI@BF z0}l$+`uaK`vmo8*-p|h@rKA{ihrgYinE^v31plxI7&qksSVUdh>1}RqE~5WO&eZ&d z2E3ZNG#8zp^S3OIB74FZfh|jB?BOEWdbYM0z989=VPq8*g>qO-ZxA!rFMJ}y0EvbS z+7IylZ65$5LlV+xq=J!C=G{hYtc!qoS2d10qU@y!RQ@bN|b74xmknY0nhzu#sDYV;Ko#zuO}q(BgTw zM)Z_()!039;9VkU;&M>-by)f-un*1oIqWbZ$aXu+U0=RGJX<+MNOJJtai~k&)^$w? zc!mB=w&!zeQ(W~a21Bi{T%mB`6h%+RzP~HC)N!(o+;xkesWm~!l9;rt9=oqBMSf0M z+z3`7w_OfYoT)sCQ9)TfLalOB%ZCMPg5G3FXRVqw46nh&l#Z!xLIZtcoPAQ=VPe|i zeQJ~#1%+Ha)R9w0-05us2PbScMkOhq-ze!uibX|!bu}y$X>V^&15CX@a{Z>K)gX|N zq%=qJgx_IUg{Q9RAHQ4TNDs=;G1M8>E=U@W-vkH_sbT44q9=<)m-qE7KOIJ~vrp=? zC2LH3zoqW(ZqRn1GO&xQrrWR38J>6IP>By%-lj_YG(IyEB}c2EV?z7p`U5+6h*Glt zR0*}w2lBOQp6N0jS!F{W(N@zx^zh?h+~z^P5O}rH1fImy)m25<4n&69*t0WUxcrQf zk*`K&c2vbHbR zCc6Ah)RoHAzY?@3dQ-LZpscg&mK-8zzltZVSyu=1r@lS{gS_eL>P401J{$8USC)!_ zG7S>-3zSK#$M=;aEt%h44pe$awskkFo4@O;!%Fj&9^LS1o}?W=qtUT@TA32gs3XH* z*U$Xv`rX;nl}OSWW?J`|4hKefu!nH}D;5^q)1r2bNM|b_L(w!6Hty@=k>IRfbVi8b zFtDFy%JlVI_^e<*CJ9uU%#Be4x`5UV||GOW?B_;4^+^Kf7)WC(V3MnOfb_PDlw+J1h>1kAIfw6t1-@wN!i_ul|L zAi^OAiGb^4OO_S%0t^-d&d-cp8X%g=8E~-xL_rECsy%P*!A{2AE^X(;&PR*=elK6$ z9J#d10Q#h?d@dgs6e`V|?k&SBTC8G!Fbf6}dBp(z+Mh1ZEhs=x#O~j;2doL?O3bhg zCW0{dF*D{w$^>Zu+fQBj14YhLNdQv;x?fUqvOW+30V%e-Inf8&Rtg{5MpI)5n49^|`uHlC-QnZ+hj)okiyo^JCnSAB5PR<@4WFNnIRttA^?m2i1^2Ej zN)TB`mhyy#x-`h4MMa41%jk`_9=PI3=S^SDtbgek^=QI5IAkgIe_qmwS+XRfrYS0} zvaPsAad2Rsuhi_=nB*>IXVh&=vt%CbhtdM>cX0(dapebGvY>zl%x?ay`wlio=-nmV zp(Kc6W9R?KoG6<6;!|wY8YWXJr&V4-UECUGpUH&muxu=Kz|1i<9-T4@k>4Z@OS4WDi?mWRouR>uhWJ+7HM^>x3~JC`y6TF z2+j5cm;3apA1%q=Qn#SG%;;Pl@j;IJ5WQNLA_MuDjeThb^J%_y%n5X3RW|W(;uo~f zjPAxKrzd7yW||$3{v@BBtDP7b_i=mCX-!G0z0k*XRFS0#(}njaNMHKYr|3#(kYq^d zozdvUlIcAN{~;4M`!L5rXU7MLFOl%x-ob+u(6e9L=j4d6fLNyvLsV7Yg7Ai6XJ=Oc zBmf8o+@3eAIdp5b+*J#Qx5T%zvv^?E4hUVKVjzZe0^k4?2)~ao0DJqaGGK>4R5*8J z;}H{YCbmCN1JnSf_5qV2iP_c-Z`48)c6B%fvIf|xLWQ9lEUI&d&wu2=$^x33dn<_| z_POGl`i0>f@dyCYBO@bE79B>xl`%0f-KM*`xNzY_zyk%L+rVusTeBPjRFp6=Kwr#i z=g-L(*tD2&Nn&V^KZ1OA)OxLR)U?l>;kJdJGj_{9v$8@4M3}>cdSzAB?oM=}$j;S1 z31S>a>>Ro+4pelZ2UcQYVn&@7Aea6I(qy(mDA=#WQ_Q%d*#DNU)Bgj|WHg$cnSj6s z=ocf-YoN3M_|UmZmMj}LYyzal2arQ@+uAaizSQZlCA$JiWv8Ja8H_u7U(I4zOphq2 zEC2p5D%kt%u;1HP;4rD8o}<{0PfVOGtSati#l%9w8$On|+LKz6M3h0z>`#%LJz$+( z*Au8ysPF6^AJ(rAP=((6{WnHmArcaA#H&&`l0MPw5mu~fYzx~rQkf?ZBxpwK6pH7M z>vN{wK5Pq(+FbDqtIs^_26lD^aEF((bIvF$CsGley*axtu3(U$iN!b>R#e-|veEnY zP3Tvjf{<_~dM%9cCiTsObq`GsJu?&ecRYjLGvlHS+p~>+&md_s7(li-EYw#WN62E0 zs^*7WX(9A1ETV<#>nW+^M8WUvzH1Quex%&6*JB^}HbBj&)08wGXYkEPsw=lB9{I;E zb|n#yti!oMIB`Ca_pY&f2z19v^rrJgPAoewlUOJH0nP^{d%8T#7CBtwd>n%@vQrJb zRylDhqD{wZDJm--UbUaGp$K5q`AwH&^p9{Q_Yp@*L|E0S&B#yD@3-w@I*Tp_klI>x?dG3@<%jKB1!LXD#z&`NaddZ{z zl;tSEXlL0YaJbzs#=3HQ!ouSHF0AL%aW9L|?(3e0pRF#Yxvop*a?f27?H`7YpIV`* z6v)xu#dug+koq$ksq)yRW}z;tE}`6`rdo$Z`JuHpf6c(gNb4OnVRyIq0*59jy&!(O460k&C`e))CO&bkUf(CDr^9CfC=X--eiGWm!8Z}zKt2bt z5Ap#hihyQ-{vZfapq5SS4yjxJtgHKB(2Yz$NZ4;u^ROc!G{8qHE-s!X-~rT;zKsnk zaGC#9SWsg1S@F)I0{{ltzl@VB1P}yBhpVTqvo)sZfT@6HB9J@j>FGPH>py(>0J@Jr z2iP3sQ!d5^X(vdeBN&zNANFNwy}+cTqy*(1PM8cc3zAAfGjE4XS>Z;NN?FJGoFiv=4U1|O;gVChP^Y*W;;9bv$} zE7{{O8ySTe)&-=Oe5C-LQu4ysZ<1nk^iHh&YipM?y5#9{xk^a0hiWvmy`YQ1u4+sz zmaA`WQJU;DqOh!|XIn-3B{sRPj+#j54Il-6+1bJa1Ja0ao@PH`!In8=KZ_F9d*vOj z%Ah^&uR)$@8FNBz)sdlDiu_G)Xk><+t0*sO^-^Bw(F3+ky{M=t=UgRj9`a2Jw4wyh zVxtZo5B1sTlN_2(n$rrVlQT2=9}-qxsvKwp+>107lTH;^r2N zf347IkN(L0>t=(Ip&TVlHXQWPENfTL#gg#kp%}{i&ucPiJnQ=1XAF!c?`Cu?Hot$d zUfng#G_g02kLGxH;_5}0ps;K^<#FbDH)uf=FCBkd=y8@#x;3CVJp+4Dy`OrIhxX}o z?b=6x^ledV==6&89o?WA{mZ1S8T7V36|ZhO`X^|>R3fBQ`7Y(&9=sx@QrMpXmJ=7cFl^cJ<&f^ zlW`rJ%?1HB>zK}eFK3@`^Cos%%ysjX#wI7lKt24|F29|s^zH`ATViFr#*KX81PHY^ zaDH=hp8>}PtKW=0#d8jnB+%8~uy^w|Z8;g&l%xki8%-)SvbabD+SY*c%M}i)n~LR* zc}f|QVf0xLf{jan+Vu3~T~bnVW}FBpa;6E02B7T&3ZE=XBXs2t0V?wcUfvX+>U~FE z6H`;rJOiNvP71U@(3BF%&Z@4Ct*)+q;0@~3&lxj&;tyf*xg7)*UBJ!i_gJpPzfKwu zz>8G|sttSb2ni_xIRFnLD~kkr-kjw~1ar+CgUmq#UmcKq-l>)8Z4M+bYW}1n{R|o$Em!jvw?BFTLV0*(iT@ESLcVs&-J!>N zyciV|qpYJd!g9qw=*Sw~!$6x6bfiQ3_akO;mZ+>rC}f?TW3tLp>O&nSR<{}x>RWNd zM(*4I{qbVF2+jR5!gwmEqN6+Yu58+T69c~vZe`1SXa9(@YYQ`@nm|NiyuwBm8~^y| z*mg#COAEH}w*WFqJQP-TcHiY=@#6UN8yk|`yq}@-yc`nG-|`z9{lf<^^L`M0sDZlj zJ5a4D4nYJ2Y~()fiLak4>k+|Q2)3SGyuGTGbTXC=5~=bTp7QI*qu<{^`CkfH3(??#m7$!yxj zQPHFxa}5-i!FdxNjF*ZB`VucbM?wVLTX8}Xb{ACK%Mru@Zh7k{eZ0 zqF|jw*G@0QCr$rIU4#@ufynj(pG}A74B5s}K5ObVcepg*JLI5Q%8IA)BkyhMa4>*p zxnmfifp+fNC^5pksU3tTu>%E?#uIo<5Kf&1e`#t3&@vW5ieeg0D#KwYDgCpv4L?$? zanPa+J7d-MeQs{o#rs!_%wNK&&cZF-zTYJaEIBXeO!r&&-@uF>xBo&toH=Vu{Ouc+ z>SEp6C-WeEH)(fIoALtj`N=_R!TY7Ipo!}O-{q(DPEQRHy}9XmnSDZ-xK>Yx2~ELf zn0;Dxw$cczt?qI$A0mCU{wNL;WpX3r@}0Z*?3z!`cbf| z3VMD22(|+U==%Z3P7iS4Vig7!S*_XO{Y&?Pf`YzH`$h1OrGHz+f$#*xl3jwMGT|~C`?}b5z06j=cPMNP?cfXX-;H1T9Fb4MS`FWrHn2V_Oyk~y~mP2mnb z3_x=Ms6KT~8};1!;CbD=ES{}!GLiWdpQ!7dtU%W_If)HiJ^xfkcX!Y{1U>>FKY~gQ zd_W@E3WAT>Dh%fYSjn;wev(2^`ztLpiu#Jm%EV}(tIo~Isj2IL^@E=fppuQx&4od7 z^+6s0&I(jFiGky5WnEo)GK^o=^_0+lKuLiu31lpU0CLjgH{!9tXG4VvW>&_8*!+}i z3d%I)snGg=q6CS^Y!^@DvGFj{eAo*npt&DC4GCZ|7-x{`4ft9A^~6o!!FyTX$exbH z2?NDVDnE|#OIuQOv@?K_BA-6dQ&Jkr%FF+_+T&m}w=x<|K?5W>DJ>%_r`oTYi}!s} z@Bu7#T!#+lem%+`U2fj3PUTmT|08NNI#*LF^y`FiwWei90Vt(bA$P}J1rK;&B@7`4;%u6r(9ZTf*!$^a{jq+a0$NU zeR878l=h9-5#51V@eUh(7QkYlq;A@~>$rA(59E`J>+4*#QotLw`(kH`${hd9%mAbN zQ@&eFblNoVmg2fyyh^Rs%?t9{k8!(OsGm^eeAdLZB=%f;<*y`MpmRv1yGL7{zd3y66CE`;bZo)*4oUEiBAQ8F z`O-HARaevPNr4vMif`U*!6z_>NxtS{jPcq#|B~1V{!_in$=4Zt&cz1Y%_x?WU296A zJ9mL8^`DZ7b>~MtPot)*4=@0nf-PxwkB=p?6*lB~BYW2o{e8(0si0CVIyQo%%%Gpf zkN~`Gz*f+Ca>D8Z95a9l3=I$4f&CoiG6g@GnwshqZ94+ENCdDwXt?>gZG%qSpV`?^ zkS>lRQ4mCRHWK@d&SQd2vP*Z|QyNACp=2T=SKi&f64ownc6;^g3hBkSroN!)kH|2=^RbnV?vyK#Ys z2GRc)xJJ1`C~(K6q@9p&)(5@ly^L-5X^^0s@PhaUt(WijcQqRHE#ddbd9~ ze==}z*1+d>e0wIjX|=X*MDbVho8S>uiWEUxWTr((58ku_X}g4yiDs;5Ws+I*X4+)H@aPp5hvHU-$2KE6;LV0YS+Ns4ncGC zvNDav$j!lpqRL7E7RE_7fe&Fy#aRVyM15?Woc^+~1m)qyVSs7JZw@AA%0COUV^hD8 zSx-4t&`}$1y0oBs=b~3#Qe18Yp-_*L9mFG!`M}9DIFv@3Fw$2r93hpbMC4@^SX%kj zQ0fbzbgl1#fCL4;Xs)W^_`aESiP7$OH>2hxXe5hZi%UyO@9gjA);Rp@bK`K#P$n`Y zWu#@7Z44Of`Y^;T{&uVNL8XeZy^fQ&!zQdh_RhFh?>K2=aah3Bp(txl7O3rTwi4*-!j zDJ=~SxcLAr1gulb>vGC+?nh8g4h0~cfPDhUIk=evnn-PJZJuo{H8ohEzFE~T_55pR z7b_QzWDX?`B`Ur4Klx6~Ih1LLfffR2CO8AIw(J}pii4iopFh5Uc~|$6h*r)_fM0-Z zX8Rm)$9@2^fo=sh{TkgK%1-KZ5!7Y_LEPfe?*jcz^GzQg+E5yKb( zh>Xl@@F26zInzvI6O-WkqvjZ3HMIvC%!Az@0GNS9b#dYNr7omX zSVH0-Lgqj1!qQ;;?s=h~O>{n#`~g^6|HVrf7VU{U5U);KCZM3LM^6kYuZ6`sbp8_< z&2mm3$18A^px}emJwHDWkUqGzySuxc-QE5|D`tK%^Cy*$uS{z213G^7n|cS%92)D< zN#(yhT72S)OxrgxH~NOmw|IU^Se-)E;(Yx*Uz714c6nxq0fN?lIM-F~d)Dcp02}C8dp()sW1d)o(dUNO)xk1qIt0HSRp9 zG7CvW1nZ~0=;Tlluh#U>iK$?vj#ujwj~+c9wirqvw5oLuO|mmxev+id43_8tmIqh< zbBdL-0rNa19+H@lP6?WCgZkabuimNsguav`5{e$(CdV8ZYibAujvgr~kXJZ>Z;oG( zi&idUS~y%;Y~>+``=?2GKnmkE32YK zlPC2qK50*WHDV&<1vE5$;rK+;m`0fJyN=;|DM|pAk;wZdysHo?ojL^u>C+xUip)F5 zSBL7gr=-n3(uRfthw4lcP2SgEGMK{Nd^;@gcu=2leBf zmD`~h+lKx|3upFi^d)>@_Al^&WQZte8gFiH^55;`y7H4y#JUCTh@^C^pMou3Z+m?n zB!Jx$Ah+Do($~=b_)1O<1x*)6M+`(bv#($EL7R7*w2As3ZUv+blnj6c50;t}Pft%< z%FoX1LGu?lpMh5e*dmaF)*g;uUgS>fev_mUqj&@A7O-OllV>`$FObt=SL8$sDF>`-{N*& z!yZ&u1CQf|bNBM!3)W6}D~)d(!Wp(K&V$Q2Ke{u0^C*Ll)tjct!)oR7xV z$hc(V=rE;vi2WrZDfJvUX1`ilZ7w!C5D5uJbz|n_mBGfCMvF56H7v+uM4X>MIA76l za{t6_sZ2+?ca53}w9D7dJ&J6K#0$AF!teh1(JH~-nVeChuat`63MazAUdy1F2&Lr% zjAT=EhEtDq$IR-hp5Dh#6tOE>^5{L!nXOz=aW(wMEk3o!_tR7NZN*bd=2lUGRA57N zD%N1UbriG=BZIV{nX52|1ElJ7sM{e`uaPHa^x@2i0TFFaH7Xt}Tp)@jhM9$v3{&y- zUU`$n^7Z4RLJ954n_#>T8Lp0Ad%1-f_n%7~muI}RpS!aRr&?v%V#%TX+2iIrI|p5) zh}jDCiu>#rJmqviAhL(=*N97)qV6&Pt;7und`EZ6g}SJ?0TXU_OaC66SDLv&6Nc+a zkV2rKQ3O~O2-x}+03d7>)2}=0ON3vD<mN#2c$6q z0s?MeTsS{J2R$yNa)ek(z^Q}_C+wEJu0i{46jU^-P;U4DVPX35L+97#(T!S1Oh10n zK&4pY=6`<0GN?`heG(|pQ6;H>N}OF13w&h>(!VP-!4$(vM+(*X@87V%0S!PIauBTP zXa*26l5urh{eX^#=;loYV3HS9Zjym`D@36nBE zXO&Y+k}E?>-zzad6zMK!_fzQJ{?KZ2z1?%DR6xkHhnGu@n$h7CZluVmsezV%;c|F- zaN|U~QYuz)J!bQH~y$Es|$z8!#7Dh9A1NCWoq zu{Dj)g(Q9KqoK!#ni_SC1nSUtN_2^{Zk=i(eyrZ@xTQ<}(^+bb+otF8rkw$(hG02TN<;$%6f9z}o?pCFSoj38@r$Y?>3rZ{^nYD2x@~A@ z_a=3?=j@E_@bD0@tM7@4Ky?AFhVRkQXd~%-y{}nXz-SK;S6+pH2jeijb-xGV2Cy`Y zZe!VE`NAw(eEs?l@Yr%U+-{`;-T~g@s9_xqyz<}Vh0leA57osH6V7X3J1Q=w2P-om zAOO@lPzHnGa;I}EsPX^#1Io+GWo2c7TEcC+;`<8%xEN++@xUed0nBl zTBn}g?cIGV2+bR9uVXg|WF8n37#Uq>>&i1h_mznAwYN|0_=Y3zSjprKf8w`yc^{L3 zkt1H3XRF6uk~$R9VX3Cg!COjWipw(c!G4?E9ttHAa0g$#v*Bbhx6>Xj>APsul zz+wxgW9+UDK2Ns@mO1nIDFp5|!sj8sFD-Sekktk&+ES-{VrQ7-Sy)T1j-hB?^nk)fP;e^~@k(bf%ne9ymRG7(3m-fWn0yV$t2EbG_hV>8Q9 zvNQ(kJ=xdB-glQWL>0Z4Hyoj04)0{%q7wA`;BoseFP&h78>>zJZa6o?E9R&4hV0eYSk zu^45|90XA-uYs8uM3ezI8XX8F{;?Xv8Z!UsRR&&r0H;qDLxA>6&!#2o>FH_Ejd+QH zP5FX`hNi(Z3m>Z3W6vfD9hPfFMc^fNWKZS3PYF>OLWj_s2Zh%t=l1)LnbD{- zjE{}=d}==Azdnd4ipP{TknF)Kn#73uXkkIQDeb3$JxRdBkbqY?BO_B9_PvgCdRpC% zm$6^VYPS_5ZbLJ{uy}5l#Y_J`?Fn5MnwyHs8%^BbGs42I{ z1#5_InsJqU0LxCcR`61Dy&-2RVsDF9T7$2gMZvdG!$0^^*x_ls(2a^_X%zGrGH4j< z7gb;P(oa2T#Fibeqnz#e!7!JGFn!nrUN1+C0!*DC=}A`3cuYN*CcMUF24uhA zhz*$J!9x}RaROpj{dvak#`u_M%a=gmmimwjsK05ijV`iWMN_9 ze=~7*_TwW<>8|{u$8jqF6&bk_G4`ix;#*r=a4ca~3w8e-VnA7kCocvN3OwQ>a}>DM zzM7e3X)r3Ot4jcy9wYR`Ep#^)1E?)X%sC2laP>o)-Pr}itC#L`O-}CsLHUIb;sJ0a z;Nk~UG(f%wUJW3$MUw~&08;=skdcY$1tM}BXn6xEV%Wq`Utjo-N0FCM?Ui_WIq(1k zewPx=?A^3K4f}#}fqq%d%h!=X7)+NhpmC92;uI&jRZ~UNzd*&0AaCOnu*)`3? z$0>yQ8nVh>#QUYC>|C=_v<6^aVw{8&q4Xtm{A0d?Fta*Ty5Q?<3z8lAV2ymce>X*T zb-ADAdl?5AfoOLurOybdOOYxF-AV*eI&$1UqlLBfyr0;*MbM%&{g&7D*H2)ozmbMD zNCKQ~I@;nVh8!XD8pZOUbN0ZU_uFIr0d;B=RKAcE9|i6~m3~X9I8=;LBv%cX zeql5mJiw9<{kEcW`Ddd3#r1Crb!J^i@wXh6KFPv0Gj`0qGEIL!n4p$OC8_?O7E!ho z0mE~lnucPP9P8TGcH7wtcHE3Zqr*ycM#)W>9)2-lv?DpOB2T>Jcv;&{qv9c?$ME$t>Ka zI*VKL1p}(smgNI5dLsILPN~nC*m@dQm|%&5j67LwohUks5!@yS0!AqN(-i6Mq~p+0 zn*k>SPS+>E;esFoZmnFE9`FN!OzO@b3C|R>kRjv+(3`2%=BA zUp)JswYA+RG(OwX{v-@f_GH)3X=}G}HHyC2Lk^q5(Ko=3E%^Csl87lB zyFZ-1-T*bUY@ji#Ql+wFu8K*uR*WoT z!Kf_z6ti5P9sl%<^2TWU=jUHK?iZ@zB+E;#x7^do^;fABEmZsRdo4?unJV_ZhUOUP z;fK{2u`xbWXzv_jVLm=YNlMO;rj4(xtp)4~)b^3pTs)~kJjUExp+QstYX2O<7;z@Q zA4}D5+pn9Pvb?|Oc(d^A1|`n^$?B@6!Oy9`qBQY~XPs z4xLiO@G)^Ja=N&e*&`d;`llQhiv!JOcIRd^m=mw@Czd_0D2S@rUHhLD>awB>ERfpO z`lZ@8C2KKvUR?0PqRZ6BC3>89A1#G1kuRGKOq3?o`pXe3{sSsv5T0uWoz#a7Om^_4%K+L#+)e zKf&{rIOq=nqB{2mMe|GcWW2Pe*65bZ1j{Xc4`4CEApuP>2qX*zq4j`TIzAr1>9o51 zAXLd)+|aJw__>&JFW8$aDq2LY+C&yy_>uUmVMV-q*Szn$>cj_X4A``(V!PFU7{&l3 zOecJRdUsA(<%6nGzVQiW@L=9#r3ni3-~NJb{iKp$6dW7th~$~;K0jKYg7%$G2@n%w zf0e=y(1gQc!jIPZsVTQ@#e$cv6NvbD#JMVsx3azT^1`uxc690l4zqhYZuSznuMVe4 z=>U^cx5p_(OUHDoV`gFkYb$D=#kiQ7`ONq$&MllOV&+N~|6A0mLxJrH(7H%8Dk(gX*dda!Jx_^N*ww5UZr&5M<0m9s zed82}?N$45|G%XnFm0nYN{5T*eVH42ugjVfQ?6__z*4p;ylR}#em)w@6P4*q3^pK|novbJosV6ihV&Vu`Q=DH+%|J#T zrKO9UOEj_cWW7@~N9L=KmRw~FHQuoa7inSDYapmOxj8>8%RUUgW;Vch{IGRbh+Peh zfjb-_QZ`8A`sSC?1QX`n4IZ|vgCE@dFT5EWBNYl~5ZeBEJ7aqXlV)U)CnO{wwxoA0 z8@am1Lpd*YU7<|>kYEDREq?kxOY9rkZ~?pofi7E_9@;=?E{%-J)S0YkRlz6^%KmI+ zh?p?pB#D(RzKlvqQU$9q+#T;lqPyCFs)rqWbZiV%MeR*Km!RbUP&Wqph6o@4CCew! z(JfdIROs;lXaU1>-{xi!C6wE_1;xcCZ{KPt>jB*kEuiyKJL(se!ip?X3}oN^018lz zz7%T~E7d@My97(~zG8L|DFZ<`C;{}n52TE0;F^h_JfQ(!Y+Mg;c{n%^Bc>+D?dajTAfQ)5X1zptOb7`uOzJ30!^IDus8N6P!>7m}H9^DGd=LpZd%Y z;)cN6#76W*m-Wam63K<1rMS2c4_!NjbW0|8_>ap7`QbU^_ne%@boDbd-%N@~4T+|h z7tA=S4C|FMB@q!AxZ#ovnkp;9#8j2^n5prS?18gZtu|bXDVfwyLbE>hg>;zEn|@_< z&Q~^e^dPRWAhVDVisGkRj*CN-c>H#ET7fEKsY}HBV_hIV2CdMd3{k0A^sG_-?+r;^ z29rTjwv9+hYSeEeEc~V9rP8nQKcl^XHc3+aaXS^m>PMnN$xule391AYMto)ZPX(ML zx@BhGbApXNWJD3PYF1pO>3Z^dO_I5~g*S@M9#DMB5(~oL&OmKNFV_|`n>yML3C&Q0xb{zD0sS>-@@L@T{+xgM%bc%-Xz&fT$ z{u%e3K#I751R`Sg!I3$CY1URN&a6*i2PLH+6`wkePdyHoLi85~yRdmUV!Vp1vnsB6 z4!rS~yxY0A3z-dOc6IuWwd51a6TD#MR8Ua3leWNJ_EDY|;Cx7%09JR%Qf=Q3R4>1N z{c>3C#YdP|W+s5!0EC%CQ&TUYIfcvzuvdShu+o3H;c~&kJ*;l(`Rbnb_!YAiUJp3b zY2!Tl4yL1O^M;f;Hu-%nI8RPa?&mB4&$AAj_SLe;4K+GCx{IqT>c?RargwBmjgJ?R zTmn6Jap4KhjjF0UXBg}y;QzJ&mnk4XGdl!qguv0kC_xt8A1m&$g+H{bQ98ZNuK=UNJ9KJ;?`s`r z|A`{aXPgf4ps4S(lK9VeU9p^!5vx@c8Dk|a201putCoT;g-3s8kh(c8{X-olt{5YZ z2{B`4Hn+4<|M+X|VW6rc)q;+`(c4Zb{?v}eZy)8&WX!&X(5P&ZkQ|hj1Ii>nNMU%< zi$O&**&oIDcZ^W9d}vAg$Y?YbJJi&aL+YE3P>*ba#{`-+IfY(&f59hDoCD5m<)A!T z>P8__nJ-0%S4krBxrjbKqyWV;*RfLLgg%s_(xRai%wXFp^N`K8+Iqnpw6-QaX_<$I zLG}E#Ht)NP@nV~7xkOf@!2m^TO6(BqF!PZ1C7L(}Y`^Sb{xKw$k`R5<*j*- zlxDAkR2$dGqs=~hhuiBMn8jka+lyAJKpVC}U#g&?p=seb-ugoLQ0(glHqIO3&%&Q8 z1$nlWmnulLwe_Lcd z#v7kGkDP?Hoz#*yFV$*vEY_`On3$S=0M!B>S|DX2GxTg3o(jwWIYPh>;NF0;f?yFq z7pJ<2f%RqJWEzf#<IBrgaaWh%h4i=yiYpKs~(3+ z0!;^mAXE!*&CqKAzFDaSdMm$y^&BLQ30(F|sA}AoLg`>( z>o&N@-nGPk2mgcmh=~cjl}N2wMJk033oQunGvPCRJYA8ktu3UdzW@dez!JVoTX_MR z5l6>Y4yPr=VPge_@M1Id;m2n+M%7v`A=s5ey=%mh6EK-}t4b9HO?pknf_O%>4ysj^ zWOrsoPMknlzp;3;k3GClGN&sBOXub((>rYp)39oWtkI&JJkr2H6(La=6D@_ZI4}@@ z1&uF#R?l5K_NLvg@)fgbor7c81u_RAosX8y{!sL6m%nvT)12a9vHL+! zW`%VZcA(4sH+Ah%={cX+8E|5;RbB>`{nij)#I}mRU#-)z+9&oomWG;Is6FRDH7h>; zYP8te2#-EGXjFAkUfiTec^moH)?xOS|GhfHY3{YYwTQNUifQpX?Qww@7q=u;Y^_xX zQ|o&1MS?jyv43mPo)tI+lI3wQkR9uE{qHoz(9+yrI6AL&SiBF8ejp*Dc;?&#aOo7; zgoFSC%>gRvP9N{(1!ljz!a~?Q{n{3>E&X6oH0nQ7Bb<9ut@kz(33>!zwV+rj8u&TZ z!4@ln9V%ISHs=K`>zy63el|*r85Bw4*a@C1u`h@yDCpvP*x1-$n&&#=v?*8=L3qVX z00}C0ghI1XrPjZL=y%Kwbb;dkRs3hgix;Z?4E+?!7@!vd+o`@&7D_@Fed)WWH6 zLkKBQmM&Ju!8j)(p86oqNS!%=YLyN*QRo*4C#g&MWd45h{`Bam3@=WLDO7nQ;nLI{ zrraL~)}Q|!lX;2{%mB=7teetqAg7QBu+=KzhhjWeB{o-zFkT#?xWiw+n3@R9WN-s2 zye}gRB?L?e@7}8vz84{CF?UujYl&wH=j56h+9=i`#wq-eoXiL86cnBG-;fVCIGti2 zzN3T>7eSu(ISWfEb1eZ(A1-f>cB=a|qSV;hBFZEY&;}dK=OL{zbV=sL?pW&gAs{XN z!?as`PX`wYT!^w_PnXIYk9nETU=fbz%-0@5Ogtsajs)0oW|ME=XCh1r*MoVHOUjS3 zQTewgG**sLesgvz8+dkZ?=Anl;K!1nj{H;MEYPZaZ$=c0gD!eeFVjpy3FYPle_Q%N zzaE(-lbNZCOl};WoQFnY;$t}}Fj8!8s>#q0w|_>1kQZ-Z^i>?I>ic6Y?|k}hhYX~b z_JxymuMKbx5oTkxl4L<5ihp7-!}o}hbo5_H^>by=Cdxx^Oe1i?{hR?&0N$~HZ)+U$(;bY2&KXB z2ArB9&}YIH-D;>T!weF9SQ{m!rH*Znc=q?(u#NR(i0Rn z6}(v~qi}=6YXVyULP6dqYk`FNhCu5A>--q7mTBnH*G(uciC{wq=^syG!u#P9POU8jk|{Y97;En?{>3c00Ar?R5Ue#01k#*qLN_WMT=3zh9oBwx3+S|%YxPz zV)Mp2=#!x@P}S57mZAAvS@{@t1bV-5PI9QF&i{3ZC@Lw@RaG6O2?@0I#Bo6TVQ#Jg zeTZ(I6H=Y-@7`XtWVMv0N2EXz*RByd)ae35!2ZLTu7_sj$OE1NYSQ~46byP~%FfrC z37;uD{2mzvB{?M}uPWz3wMyvxmekWkqbe=SH+Jo&qaWo>duZbD4&VHueIOf{w3;i` z+aaj8L&p4j;J>)A*q0r@27W=_SYK&2}dXnMyKPrK+$`pSL%(G zXq$m@ahh7L!JoWipi5;%bjMcrAenTs}Gv?N};du7CNIgZWwc@LZV~ zt125$&3k==>+8)EX~dAq#8T?2>tl%cw}f=symJj zpOvy)Ciw@aqI1rJs+VHy4`lHvYleq^`0bK&pyhth6%HMn5qJ(5fYu9I?CJyPDzcYogjsVM`7G?{cGL5)|uO7=aq zq;yC4x*q;(DDl#Wc{!i?^oGB4QIq)M`s!%%W^?}FN!=N{#;#DtZRW}J9^S#S_ihy( z(ak24_le>1K#kJG_|f5!Cda`FfAeKL<;=~>Jwp58tgCs)a(lFR*{20$v^b~;G<6U! z2RkE_{l5kVI7CFE!J-O+1z-m5oTJ&c;Qa!*3)6)P~(tCzer-!)X)G6DimWNX{`mV-c+449cv=TyR+#fP0)!Sou#8v_RWyX=`id=}7|qHjoj)sc^?-K{bnduOsD5 zGV*W|`t$a7L};erCX~%p84J6x>Uf&k|J8Y25z0c!Lp3>f0J#>1h6V>)uC5ve84HYL zt;RCX&pqU6fsE_Br+smm3b!&fP84+EuopmmiWZGRvdQ%! z0O$;flCqz(XWt%UN{JTd78ggYu9`Vb-M6Yn2E!K!Dxu-e&dGTcs2kX3XL=NpIG*tK zKU8P_^c80_0z$(5^NAs=v2J{0@mRL{w-L|_*E)Fw?e6NM)dA?K6@k2FVLnKYe|%=Q zGDVS@SEw&tiE*M3Nf{3!gl=;qLqlp+jzn$!mqQcwrR*Nep3>5uZ-{4QcdI9~(+s{q zT~IpreqbFS1U3Ny1rW8lK2jWIWHA=6)zo;!R6J@5KIk&#tlVm{swu!WvH_G*2_>HX zmTbc)M~VGei#g|&wYI_0;Oto6j z%QC%=H+|P`OBb0URIx$TeV{b5G3)v+)Ns5q64R$zLO=P{hfu`xlqxQ+@9KsQC0kd_ z&RLZAXYVkhPVNWqyx#7@&1`xQk(#S@Q$Dk$^Ih8;Sjcr*w5=i{aun(zuM!be>?FpPJabpS@{UUY|-HYv`T4#F_ucKi1rPUX8)>)~3^-VoL z>+9wQNO37^T2wQC6nlCvunJ#(3jbHF@#_y_=ByWC^hA)p`=>^Dx}WW1SkJuUW=?$* zLR-f4PN(|>D^{_1<9ORBY&P=hFA?+=@6}OSkYD=PdCgqt$m>j#3C#p;&v)Cq z&^G~YgcFJgr|BQ}cLI@Jpu9mB2+GI%u2q$luMEjX(^w?3u>lQ$2rzK%RuEfN>ll83)(Qw5 z$o$04(ctDl;%`a!}ByBPMvJAM<)FhH1RrKiZ#W)G`aqmFL3 zT8{<6YVJ3eppCl=uG~5)DK7^lBjWTL>^q1RP-zn;;aBg0rQlB7*t^OuCwEsLWIw%s zn?VEtV^C9{*Ee4Z04zxxhgvY~0QOm^1t5|&6cV>Umc<7m^yOtjOB)+Niy!Nx%p`%Z zfK^jveh`vvOw68k3}ywK{$_*i)UY%Su8^rRO&#&(u@WrfLsbx4dIIApdgoIIQ=5KyN}n?1K7 z$_#Vb+q)e^$ZTmrT7Tl|>hirhXM%WRm;0-&3kpGae4l3Cf9WW(i1m6AGR#utJfFw> z=P6bIOxOM4kfFwi;7eh5hPJh(kC4QO^HNJc3On?Zww41#a=c=|`_&(ml=i{9Nk&eN z6wo8+&oMMe^_A|WR!3#CqkHm+z1%siDI^!yxx5 zjW}~9^oJoBDR0TQV)dF*%l1UYW-6V+%RKinGc z$O$?+kJZOQ^XJDVKfg5Z_YWLgpT2N6cS@M*iSxcDCp5TN>U-$y=9|(L&3U+w_4~Pi zKp&F<*;>1WNY}wXf#@CZ&v-X4KGsi5GdoQKN z^O%3`z;jP9?=tk+q2w~PAO~Mhodvo0L3*?Kg${b~=k(Xp0Z;0b$#@+Wd94xoI9}Ys;b*xzGN|O2knv%-W_wFF@3lp6u2duUrb$A z5ICEfauz%yMpE+GeU*o2@4Vv{Qsb5QH3P*%`9?50-FHg@IZCioa=xpsq1j%=sF706X)_I?^LzpZup=orP-XACQy&l!i{$3Zk^$@;2AE*K@5*kO4&RD#8 z6AFPe0JQ*wf3!YO1;NNlN?2Gz$JlOj9(3HP3R=pp{A9q%-dh;^l4@3Hx`3nLdU?r$x!4Ajc0JsSzxgZE6jeLB_n&+Q&tG_PQ_@+}znKe2z zBnFDG{E_Fv!mR%!w&xmC!6bii!4J}e0*!ljgn~)2&TX^wYzd$0c+pc>@&Feifpixt z@d_fY^Z=co5ZL#jIlO}kB6=*_MiCROmM4y>??ln?z9Bi+UrC0=$}YpHE)8%Wz_ASX z^t^UcuD%Uferax|NLTEF7(wPV2>lN9x(Bh&gblJ#%oC)>$uI{FP?&FDNeMPlGDaq# zQBCvn7dkV7Yz(Sq@z#eru)16G6jC?-ZnjfIIC)ql$R%0~{*|BHR=hw7niT#KXDQg9 z(iPsn_$9kC`SiEls1DhX`$q@PATM9Pqw?k`d1kYbL12tn&;rqldwyR1VpdIL#SJ$D zT$z)H+lW2sB^?Kz6B1e-6-0c|B=$Wq1?C1t)w!29x%Pa}atCfA9dzn&qUF(R`6aWq}1^m2&g;OuO8 z|C(s&aF%j+Y*>pi`^apW1mi2}xI&qH9Gk!Pd2?l7l602``)8hqF52I&<5Fr2jZgQF z@6=D8r8Z05cE43js~3O0CoN6!&-Qfw6rt%donn89hdjT=>;0nN`^-?Wlb zAEfulpDj?%U$(v>&>Zhx?MovQ7#Qwl43KEkvNgW)!@dzEdPn(d_$N-6VndV&kuQaL z{#hDtt^4M~KVORVHYx0WAW6h{x{-_u&y$antZ)W^n+lvVNEyH7|jSW8b)dL7W5w*@Zv7!eQEm8-Z7wncyxu zJ6iaH-r&4f(;aLH0QhguH)mpbFFf!Dr{5Z|7stoPkoOJdTwnlzs|G}6d$Ka1`J%WP z$A$9Ff_D!=MhjQGD1HZ=fY71(-_L_IY(ut(EuAUeRr7oKx~wC^!{W>YxOgPi>IkCB ze%>5D)t%D?Pw!PPgW42QupvD>7?TW#jr#o{Nf81GYz5$z0D2L258xRg%WshcE$}Xb zQ==H%4#DdgUYMd4^gPM({{INn;?ltCCAK!b{s>O@;I>!Mt%iB^#lbeTUB{ys8mR%L zuWOdDf@IoN|4E2_V#J4(hf*;m6K8bB+yu2B-GMzoIi)d;9HsFK1<8EQQu9;GljPR? z%#0H!Z}CvdxTIE-n3RGJM~+RPS&~<$eG3a4Q>tebO%nH|#<(#!ePOGkPmsh5Gm|%G z+K~4Pk4x-XmHX>Ti}uu^)V+I!sbCZtV~zh98C}!dI8C7by}pHX>2Pch9s~h=Q6X+U zsa7taRjKn1ijRMq750Fg$OU9wQ4|8SNv+zYV*{tBrz-0%lq1CVp6f)0z8AreWkGI? zm%ML0gcpJzA_>C*iu&GUD`(YdzkrN$N5@#$`}vdCug=lc!tm36BbUi5WRF3r0GIm& zA@N`PAn%atdTI9sp6~x58{;nHg}v8BFT|;Tw~Qcs>VGs?9mCE0FG4#$-;`R0&*dq{SMAQtA1L%D&i+Hj`E{jn%A8_UdZNtg!_#x&zfGk| zxrWE85DIl8TP@9Iny#C#dP2{_9J`SmkPK(438Mdys3H(~9?6&2d=4qU_VO?=GW$y+ z(Cx-?n!JIYHaXS5KIddeinW%tw>h~ZB5*p;I42NU*O|kjJLrN}4A!&TSObGy=WtJh7b?#~7;tM>FN(_h>;@zh+m z_G1Wgx9*0`u zN_FG!UkHeVzrtM%>qZP=c<*f4sSY~+d{DH4I|)i{=;@)n2dEkJP(VnciOW<=HJB^t z%@|E2!BovgfA$sV#P7rwko^tm@Cai_jz??#fU+qWdcvZBhQi=tIFT2M;#H?)FtJ0D zJ$R#V3$nPm0SJ9yBjJw}-AA5_=vzc<_YJ>4Ud$ zH00_-PcfFpGh_5X{4?|yfIGu0__t=Ybb`+DYTW*s0Ni|rB9OV`cMi!lh*lP0A%syI z5Y1O3BR$bx4J`_gs{lCPY-HY`ivDYY%APU4NEWq$aZtTj95SsEBr}SO(n&~CXI^%G zmhb-s+nJ~?{!a)5TnR&3>Op+UsAY@U`8zsiylAMv6~lg7I@deHok}5>hAO$YazTeS zxt9tjoLA(zpJI;L(RjbiQz!N*LCkuxbWo-oaI*Br^!tew(HIoP$gi>`e>*;XgcI4R zt$%_Y`gCKDLNv$OdC8Sf+WFJ(UDmaPhQAmD?PjQjY8m5XJV*Ao|J;~aTYr-=Vn~xN z%ETw=Fye!r1YV(p7IM+KS#^nC6i*nrYC)g~9^{(u3VsVPc|kbUG%L!CBb66()LOr1 z=4uwnHNX#)t%ajiP+wx%pw_%Jt)B7eF`}xfvn7`y_f&W8@MH<*w-g3Ov&T$KyG5rj z*u2&0OGv?Pxf0Jes`Fq=4ngId^IV2VujFS32ehIN=#h~u%nF$~{e|muJ__DD_BSNf zjj?{&b{DR1!{&G|DZC$+9`N}d-Q50eO5GEk5|YH5yLB~}zvBHjdKEa}xZdVf?$$&0CY^wiDmEq=`R)&DY9dr?3Bpi}Vs} zKESOLCMTYY3eV>ga!eVi)4ypruE%9W{lWHD)8inSLD!CO;Pxc{-12Hm z@Myh$zRt;s%XfFV>0AT9P0$4_qmysQZ!XyKAwm?Ua;nWJ>@oVD!fFgn>uhmru8+R_ z*1Y0Z{up2_P!|D^3j{jcuMialDpXj3rtHavq_#CPp!0^o6Q4jjyR>v?!wnQaXnxPM z^A>XbVh!13SQFd8F(iyp@3u$ac?cvR$dT{Px(%26NR?|wVErizTMt2c@e*KMExqs# zV+gciT_C?%v%f(u9_#)4m%hU|7MOCtxe$X|7Z$SiBS6xw9P(@ZNZbo_Q%*oh-kGxC zfzZnXyWlr;CzU67@#xFs(2yVGG^F-J1WM8Mg|f^&xpAD3Y3ETk%>Vgsso2Esk$dlp zfyx$aR{ly-tcketT~_Lly96j`$MS)0F0sZ5iPbCXM`J}q_x>+058fdJ;DvYm1Rn=v z>p*fW~x~ulFf-Xgi#yqVjG^6wA1T z%9abALiMOG?*F_0*zBY-g?%MuUSS;wE*#afz#KqD4Q7){?V``GVu>1s zxIr1pPX=kuU_~UJ=AVuYk^J?m|7+83PGN4cCDre#qyIK-O5Mlfyq8H|3~en&2?SYM zZyB1KhyCCe0MT^Y-r3`5)s7)NS@A78a;2|Zoqz{YNjg0jdNBJbWFfL-sQ@KXLy;AK zeJNR0Qia{~$B%!B6zQD{@3o#sS9&}UaXv4BXZz6DJ>>SHDRQ0XjXoY*KD z<=3TY-ahFrBz6KxUHdTLYVWyY#gJVsaEq(^AcArA%<_r8=f+c5 z5-3>Ycn-Z#Bt}F>qc1gr#hNNMD>pX~g4!B$!tC)se=qh^Q~%_`U0>D-$FKjxuhY8l z(7R|hO-;g?8hZ;+6*nCAGTjLtX6xNds&&BfcVF)F#W(%*_iAKlW5{rrR$5Q6{#-oC zuMQ^n3;|EoouA6j_b_ZsRam}4Tvy+@mwu!T7AG9&sy*9b~_S&-rbTMY`k zhrGK*hF`-fPu&Hf1b;}sZ}mVm&=?;L6lY{m4TFXg5VSkhKE&!m8WLztV`UyHNRDx_ z^YGB^vk?f<#dfQG>ctL|OiBr*jQy!&O6D>)J=X))O8j=2Tw^t>QU~%x!T)S9QD8Dn zeSef>o}tH7-*%+Yw2nXwgIYwCVwH!S0H{#WuOGnUsSYsw21zFD|DBKKQ&15oIK0_s z=5Hj5*N~$mGU0ldF?R33B_rWf0ny(m<8rR=+qY3=)jeZVQ>4Pr-KR~jQIS8lbeh#%XukBdwa1(Twdc3ru#B{4`Zpg^K;0i?1s(`!Qaa ze!Fo}QW8!42M0?%`ZtwYP`ZHomD7qE{G^a~-|v%Z>EOmLR$nDiJN5gR^Re5H8Z*9}^> z@13=A*+`ct#P4S#JoLwZwM~AfQWHksUY*rvUhdtdt+Vm`9zl6~ zFv?Wb?pHe@m*$3ybh|Q%)*X2i=e)(#VPUXdY;bj2PZEITz`C`&!tuJ{YIWpYK+T@p z)a8Kh8{gKwDHK-fXtD&y!yU>d!5F23@v3~wf5$ZF&7;dD6VuZqa7;H`9rgi#3+`z6 zLg4UDQ_OD>0Qu^j*ban2z<~mR3qCH`=iyKT412L>YQqI`d=ZO`z!)Fb13C&ot)WYT z8^L2WUK5_?PPF#t-R(6fc@)!lTj98cAyh#2f~1XYbj+||(;BMND+q@5ted7rMAm=cP z4O|1TK!>IwIXX%7E~5ZaXU@K)GRDh-9uH3L#J)gX)-K481j!UU77q>8PZI=r4cDhL ze`*~A0Q~vmr$~oXTEXCKaJ>*tW>k{2>n_S3MEO-Mj4SLLVW^N%v^M5M3V*O>=Gdu{uH`uQ4R!u}|9)JD=VBMaU5DKiUb4z_nT{l zo6A^mq-{0J&}5j65k7q~V91{O%IcdW)pIClFa`d)NHfz4Ea!xWFgmP$O-x9*{-@!c z_TzbP*Sqx*@AH8h0i~Op^?Q83e@IXB=n#`-N?Uw0;+#@u**ud28ZD?VS$DH6uv<}PXY7>r^N(-6}t`~tFv1s4D*P6es{(JHF4U{D1Yv;4& zKGKsE^ZSL*j`shI{23XMemy|ueej3i=J<8y?R)F7`wR|a=eWOy*!N(evfY_PZO|784X~`$umvZ-bg|ozo?x=rYd_uiG<)dm%~*^QP7H^kyS*D*s)k z3DfDps>p2Li3l(BxTG`W*Q5|%nbE(e^6_SCU1gwYepc>EB~2pJQ{>f3{kv#`6|d9Q z;_F3W;SCC-dA+Vze@-}r`AipXua^l@eCvV{S~grhYZTw5UIem)ZQ}X}l0(+iLn9?1 zdcB1QvL%A=CacX~jMqRG%;T09Z|n6OC?IhPRx@}fvUrNr7$F4X?))Tby4Wn%ZSqbA zN83Tm1FZd(IHj-eZhaxG16B&u{SYS)%u%ii!$WlV9{}1=8GwKg>K75il3sYgGU-6XcJ<&tNjGJNhl4t*eW-pk7h- z0+Ox$F!@L5#ryv zU+nTp)8m+rjDr@$3?)_uQ#Na2bQ!DVD~}T8{U!&v?k2x_gF^jH%eBh>l{3lv|Fr;O6A5HAReZXSTrn{Fvp5QRRyqE zI~cD!f?02}#@+E@c!djdgZ}cUjWx%^LvspjG1T}2OJ65)CXydYedgrWe)GnD=}(|s z1m-iUGNRD-c8utMJ>lPUe+UPTk9N14-g9e1CLv=fD0G-#Oiwb+DtNDfe7g~D02Zhn zH!_p9PIA^qk?+MNl;-VdbZ`lg?JFv_C1}UkMQVcNKTG9(V-rTTCG~RP-ATewUap|V z?<*{RLyN=8#;3YS;p^^CsLyx8RLk#Ia2TCj$+KmCoj1D8Q@bqUem))guGnk&UGxv9 zRW$HRP;l zg1@G!?%-L-eSF9o0~1YX<65n%(GofX1ChYMd)ESse}~zi5Q7LOs)mLJFUZ)1GXXz- z`j-kA)yhf!$pRQq1}ZSXuE6a?gn@jsk98XZstY4@5UQvas(mPw;X=MDtKVJP$j>wf z`7so!06B>cauQ)cuIqmU0wj?ttceiQoLg8JI^cT>s`s*a8#w>|XRM2aKv!5HAgO}Y zbC>7_qhuEEJ`|88!eI>8gqSDc$|S)U54i#V_Jc)Ww$43R)?LuV`Miq z;IJj9;E(5>8yw}TtSu50b?JQ%)(c(vDv3+A1psN?9Qc2asyOrP@W<)z*hW~aap^-;3} z9pQ;YWO^&v!BOm7e6p3FavF1z~_Lu3wzlpzdPUuI@ z=S7IL`FM+edSJnv4pj;$W|pI{Q?ztGl?aNd`Aos^En z?$Fam;j`hpnI>JPPa?{qii@^7Rk?g`;C3Zn635ZT_3iy^b>G{Wn={?lLBYWgcXb_D zrp*&O!n4Km)v1p6!TdSulZ(H%D|%PA1wb=`W)Q@4Tjk9+iW;JgEi|B;1Io->IFoWT zH8T^2Fgk#j=Q%fb=N((>m*W63K>$Ue9E3M$!hRPc@w1>2Ee$x+`!6dQdDD`U7a_`e zJvUK*2|S?w3dh;O7Qb zT_+g4L5s0K19}7yK>!d`r^`xNEJgJgY$ckrEN`BHz$AiN1;Vw>i2N+AxegwmBEmewCL*;3Y$Wdfmu4i0N73JzCSw5E1TJaUrU&3X(5t>7GQ)c6id*>fgUfnJmM>)A(T|ugj9t zajE?ga=E?)O)L~~j|dVpv6&W+&k>|)Enb?2Cs}P0Wuz?sV-k5#7}dk~3^Oqmg~BR_ z%Fk>7?c6w2nO=#Vc>S;iFVF_Lsv~5E#bmuSos*j@K*oP$!_>y+<0De5SH(tMQLkUp zd<3WEe*|*$iS2)WI8#`~`{j11|Dr{Sd{kO%mBQ=3ps{p-6Of3Kl&)_YF!Ouq3TH?; z?e}=3Uc(Y~>vcC@cFF5|fB1^`} z33^_GOz|rtqIKP2Zpq$IckpSJVN}-gM)w*017A zz4bHX$b=9I$-w(>1N_G7JfzEX^Q!7FOSStF6m~-1-|!d&8)vk+&Gr0?0Jq(m$J^a& zk)$)kihAyaBJ0)mEl0cA>g2UNMV&t^$2Oym2RpuSCxgoP9h*$0?qZh+pCTJhhyLUOl~Z!}Aj3AH_P6RwQp+`|>XK zhKeF76W8`H*?H4Eosuz-1EBhPL6sqy&tz0-Nlcn*>~0zv?Ym6`dpCS)d1yze-zv!ljnmav`}qlU)J%1jyGBg*{K=6U6&_S&gL z{hO)52sJ8NB21i6X*e>?CU*67Nq@91m^~{ap|-xk_KUxl%47dud<475R<=se?^6x) zJag>uTo*Tcb0Z@^fJ&m~&hD-1f@36rGp^G|bEun9VVt|kQy?#i_C3yl z8w<8l|A{RS$?7;z0g2VB2<1GIohVntOL)S#52oyQgA!pwrps{mx8d%yE-&qRTs&sw zCjvzosO-R>4UY>HM~LpC{-6Mz0SH}sOmQ0ZqXD;vq@z2fA8-c0GlcqpF<^TH4EOzs zh3RT*Kt=w~SPP{RG(2#uHR|7zYf6qazA_VnfLV~}z|;Oq8$(`%5(^|ZL-X^|FkK!} zHYUyCjf{OvdmGV(KIk~fW3*xtw zI1CN01e>Ii+kaeRh7L57QuL^53G#iGX{EbplarDqs2(quxH-=(3h=t_LQa43N6An+ zY$Ny2@-NlQRqX@Mb2%&j-g8P06R(rB4R{prpDe9`XlX&rfH*%{hq2nwprwRP&}s+T zbhSF34xeIhz(%EDPTK^L`z15PS7BkjTlw#%%lVxgGnzApGm)z_rz{p@a>7>}0*kc@ zKC7u89_Tr3`c`Qqv~;u&%gx@{aDJ3sNy}0Jfo7HGn4D1M-3+z^z-Ly(QHHu-)BxMIh!L2bd6vxn7gL8%PA-B@nx;k zIh8HxA1&sShW(L|No$1b zklj-U3Rwu>^S(LCq{|!t3Dg@k#`qX>;^?mDsr~+5!0dt0ksLwStY!vc75sU>_GZB_ zDgT9URwpH!uizuUwe|Iops*)=4Y-UR!-c&1_Wmv;jDbXqW`3vKJcXv8Vi!5hgZ*G2nl(+Pg96k*dL!CDX zgfys^(TBm2pCakQ?vqXbVGnm%W z?rmJJ8AE(u2#s003YYPxGy$(<`L7ZBOu3D@$)s&2A(C&tPSG&tM!4`tj;Qy|JwQ1> zb$i$Q?l#H*mU52*)e01;&?V^b9s|EIe5UCg{nyLGqr$B(dCJBacNhFa%+B5d4HAKjsB zFb)X<0RPXp3Tp(xnB7B=?4`ECxBAy4kart`rjY~VhW0N(2GBQ5%nay zsR^8%5)fd685{t;&&f)g+u+F95u92`VtJBO+1do6IocH3neMj!gCwI9p_7dkSSXm@ zA-TDz2|_RJHg+Hn>Vff6C}J?ynK2u``%dJMWxrxC6~6Tl{gimDe5FjKinPV(5;{$c z4AWm%en@e2Ez=3>5L9DaLGxH!Z=}b=F^(0CW&88BC#1e7bb>=dNt60D&xF%}Q0ki* z!!~0TlR>8B^bAqvp!%pCQCfz_TH3i<@AHK(c{OYSDMuRKU~^&^9p@`3tX|fJg1;Uj zbbcNFWEAkKVRP9*iyNsDJRZFM5=X2i%jNdRF=8qiNngYzF% z0i-6rU(fGfp6yVjYUjoqPtML0wSU_mr+Fi2@hOtWDYNWQ>ki=d|hl* z(VW?@mu_S8W+gBagDQ3fJAC}M`L6kaAy6)_iC8}T|vTCvJrN31%*eDHw~6J$j^rj`e$U%`Vs2(1BfmX&a{A-ygLr& z{t<+Lq0bBDSD^hNi3EKRd-91(Y7A8SR;#)`8=u!hDQn-!AWG{Z0%t!jKaCc6;(J#lXMHP{{2rwim3m zFx(gWA?);s|BtG(4$5*3yS-8(rF2UONS8DS(jn3yrF4h1NOyOKNOyyDcS|XVfRvP= zfJiBEu6KXuJ2U5xJ+sGAcwwIVey&*Sw>%5M9|sf>$k_1pz46TZ5IK;?X$SkdZU895 zR2R7MGA;T6s`@>k23(`Daf0{nl$#djj zxkh=C*~a*=up$3$R*&E0!6OQcIwD25g-a`6Gh~eC@atJEehF7BE$pl%lv40?UOHR)M+ZaP&U+ewl64hbg>lRP(Da%Lrlbr2HQ?oy7RoAu@Uj|Pu&wmerHz;d$=scro`y0S1aiRW2lg1e zSkV1SWvRTArl(c?L(&xrQHtew#}EmQu*(bRq1Gx-2I(DeMZmuY53DO{ksC?gnnAPdWCnlO1J(wL;!J95XiWbJWbzn9GpX{XA zO}oQB98*C3A<82$a2B0U$NKb_S9gv=6ehe9h736oz=mfP)6LgB9Zlln&c5@p`YAbP zk}Mbc{`!1l1OAMZlv*?CSfakS>K7!05@|@H>Pw3QH_bSlBSq_I2|Fz_>f}b3j8RG{ zcyzfKBC&93-(UVIE^!rXabKh0Rz;mOj@e@1`sG2qsgKt6NZb=mh)Hg-S1a3Ne@ zH%Bc-m6c9K?l(1yI1Os}eg6i{f*EeU&~PWwVBPBeX%$JyO3LUD0k4V+=FIxcdDR$; zN&rcguu-O-I9WVxlk{m`Gv{4?X>E$WBX(wAfNr{Y<;?v<)QfsC@| zc|&soG~ZzVLd;vCga?KtD9a7*+n^!c7S9Lpcbwc@r7tw3HuF{B7DGvu1$$WIL(zW= zleBo@%|2JH)OecE8fVQK*RHy?!AcG>$ARw)E-{2^9nh^3)H=K>teKEGG=d^r3E>*$ z<&lW3e!%^D=9G%{RwK&Nm(dqEC`dp)_#aXx1Oq)55EzCr>-c-g@(Jgmc;Tr%m-fTN z$LGkZ`+O>8rY>*Z;A2!G0`9`4`i*t!7O;{r3Y^Rm=mpJ66SQf?bw2$1_@%`ef3eBV z#L5aMSW1E>)6CinD^OROA-*uFIxgytgZ3YaCtt?=mos5oO<5@;K|>{5#z>o-B3IaJ z`Ocitd{{PsU`#N|gDpl^n7JdvVOZA7j!>1)zd0>mjVb3dqbhSD-7FXP1p#v)S>|lS zvXykD>blDpU}1^VBqmH+ST3o=%CYwBx^&E1rZA>zl{%7s>F@+&xwE^7V4V(!QfRUZ z^T)|odJs)q(~4yN_)CS>14VC)i`f)Y}L63bHT8oCrZl$MVC(8XTDR%}*F*VG_=m-g{>8DKt%K6bO zo#ylJN0O3L=Bwxu*MH<-Q$q`>!d^QLA?+mkzO=Wp`6o8Jc*M-2;^uilGSc%ChHpZT z16B3by6rqcS#NA>9K`U3aI}_{m?mK%t-C+1XiL z?Fodbj3Y3iVEM$D3ZkYD&?N-@nP3jC`zqI-`IIzr!2Pi24#=+iEO~%%nwFJCIP(ZI z7ztceFtER^R5)!3#Z*9K-dBB*lTYfs{nCYMu(=C^DQPq5rW0xX0$3`yAVdXL7J&5& zy+<`@%XbV+<-77Jn@&1uDH^1>aKvnvTa$gyLw%`%nBdfcf>{D#5EM9=*eKN6I{*Iu zMG>-qaB~3P8`r{N7q?2N%|9brUqgpG{O;5zQ%Q@d+*!-;0ZAyJ<>-w6oY>|22m&vI zUxoRDRKCs!S0M!_LTBelOIPEhQH%$ZNC^t>B}AVICDUdrti5DaSCAF(C`kRt$M2+r zny93}g)8+gHV$W-(XxO*`t5gXQr#?ywr}F2T~QLulC<~_RZDYdkxEhi=)NP*pvI#~ zRE$%ESUz6h#vUn7A|r<#w8YfZcn#|NF-|*8OB6y5ab7LGzp^~4 z^t%T4_j$fuU>%2J$)3rRc8G@OB^1xu(`O>L=!So^%qy&<+|5gKY8l@2zx~SlEo$OikiOryy;3&}g+J%$6Ywj}`0N>~)xH)Vo|0wNSzU=!`^>gpQ6C!RkIz6F@SBjWQwKRLUy!eOcd)i&s; zWWa6+&Vt@kiO&sd@H;TChk6@=vtihTSUu?3w*-R}I4Uk3?bo7AkIO?Oij?2g(1BKPxG7$uPN+g|QP&L`x0SyHPRcg1 zm8IRFm3ke~sBygn<9*sjqTX%)=aslXUkNWTJUi8W;B$y8Wg4%*BK4w}D`RhX$Xg@H zn1F$oFg!w$N!Fj+DLl!6Tb?~joISZ?gE?NcD4>?Aq@BCWz6*)utE?%r*!fE3}KVSU6&wK-b zBp^o!>RGsEs|>nusCgh4gJSi)=Px5CCpg}UAlNaktr)`XO8liQt@_5z%?Z%y?62D8 zBqfnytlpp-tyGMEe^xWsSTjdEx|R=&?FvHBh&DW%u) zK>h$-vkA19u$axQEgAIQbJ<%%lpu)VF*xp=ul~Bis-S7bM_4xY!6uvvB-_%6x|9)9 zB-2p<1H)Sa=r^_6tRP&603ax45M<)7iPmc7t_lE+7w|eqq}D0>{7&qpD`;g?U7mq@ z2`T^f(_EFQ&!6dcp1`jR08^D(EIZLu!mMZ+vk2bCLsf9@49_=BbJ=vfq&jeBTqvW!n96=z*cz z$G&^MhZK5Ewx%|oY^9r|QpqG3fhh?e!g>p2?Rfl2@ODu=$}ttpG=86$b7g&`jUS1R z_%26>;gn2EUy7Ej5TZ+)t2T_U+|QWgobxF_QGq#AoF+AIihS7YH^Hb`-2!c%Vu%KJ z#E4Fy0&Nd_Dvh{Q3$5(pdVofNwv;m62MNhQ!gTH4@joK4j8S;F9J|9?p#FBtf`~eEfcPEFZe(5IM1+NTJd30i2I&{i$k5eZ zvLllHuXg4)jplTC*z+=5@ySRPRc5$^vlpoB1e%uTMw272RQw*wo=vTYg((qt-9#}gnP@|E^Mnroq0igO$)vEws}>!A^u1D|N$HE$}H4&T^h{k22M zM6c^RcLaWSQD0veR2s}(+(^$~Ge>6EiD3E#q&AxWe7oex4 zpz%ROFj_YlH|T;X6kZ1K_JH+ruU5#bY76kxz@eR*ndxl+ct&|Se&d6$i;D0PTd44N?>{oJ@6mfN(+Qt<4IYRv6M06c(bwmd%n2B)v5a z@MqJdpY|6TBK1%0>e6|VCg62NmhofiN5CJ0@i;jdD<|PvxL)kA3)E4y+Kre?Mf6(r zNFGp`e7-|2oczc3hpCHul%Lp85Ar|8ZRs!;Y9tM7WZ$C~zCGP?SiuStGEIrPf$_%d zvHIoW_KkiL5^1&L0;R=GW z8oJ`lBf0Y|IVf(KxcMIy`7$MALM$1Bni+fANN5u$jO#L0%b69G@2N9uswhVrai-Oh z*?u}`AuO;~dsgo9sftFE`N%@erSa($6)kbN@qNi58Pb1^f8r)A&#T1&I8njWmD zcU|L%AJCrI+4ooQv(iT6sY_CZ^1t4Ec5`%N{0+HlS$mQ)6sMl^LfWIPm6VipZL|SB zM%VqKFp-tDKfZKrCK=YL2M;Orq$}r5YInk`21;wk4%t6$7=+iNm9 zB%}%=AdV=k&Wr>QJBJar&Flzh5d@SS3Kr0fLH#60*9!wq=b5NInnuaVI_E4zZu>5KP3||Xylyvm;5D~ygeYw`M72h0yjSc0Lmna916o_WhF{$6_51+6?dV(VJ^CCv+s)iZMvL3Asy5zUT z7i{t)4`pc*X^JFTSZOjpCMpq6$*K_yD2#G5q1L`Lt@Tr6m8hQ1PhgBIOel%AUKbaO zFvd;Sh|r)d(r3qi6{*7dU4^OeQ^O|-uF0euOV5+hcj}(|_ zGh6GQumkj*y9MvyH*zh4#sY+)b|GTVw32kWy+GN*D&m-O!2HJx0ncl%-9^Y?u*xAAOeY#^${CbCQ@^9qP{M&+m_MLyD zC!O9L{N1y&Ydg1viUd{QdZBIM^PG&{*|OK#ImOXEJSIxtELjh#wUd?&k-9zn_6Ik` z)ncwg7NqE%$DQYQE=5oT|9zJI@_AWCZ}GP1(Vy9+>8oL}mj)#S9HP!4jf=7Q%~t~0 z*`59Oy!Rv?C9qI*9uxS!F$(K=^I+(D7nkAo@bCIAQOU(DPXv_Y#U(RsYu+ zho^nM`eXgUnb*G_Lm!T_?NW0*0M0>JS_@oT3LN+!D|`DQm>0wT4i40R$y%HwSlxe9 z#9>h(rL(ud#Vjlr7N&)9BEa-R; zwV?1pJN{D#YfzCuMjlF*#DBRE2pcxcdqJ!-2uo=g)#~c%0+0}7=W2R-W6+yr^4YCJ zsw)D&=`QmA&EU?S@;@+)g6;%vG}z1Ey1dA~X>sT*Qx8)1TE|Bi*AOarSakw`n*__4 zFB7f;&|)D{SOEib{&&7h$;PJqR!PE$DWYk_4|asfvoec*O?+9hci~kcAYus_#L>@uV`O7pOsh$&RbI0EC8oBJ&~p|Is{z}x zqJfdEK`t6+)S5-G^g;YrB!$OnS(NGDWW>v8)bAhP)ShjrI=$QMxG64c^;juxE4HAT zs51M&(HLa9pq*kj!t&*5K<&ZpeX6_H^mJQKIcZuLw!SlL-Ra?{Ne!Y7qRH<~90v5v&t#8_y8{QN_cg2zLOZ#qttCWTK#501T3MTk&j zZ=sU6?wj)!st~Z55@gA_;K(-`HwZG8#yvM5Hb4I2Evoo{I6`~y1y%3&I^$ZswD;jE zlvR1TxkL^60ZzCtrlJ>UW|vz09GtQ3p0!&3vK=(|*|(LjOGUD=>d${ZVlsI=+;zz^ zDSAQDmVL!^(a$;^F8=N7Vqn7anI#Hymvf41G%;WI#b`y@P}OHvd_EV`-CJ6f`$ci{UyiPPAMz2K+1i5a0Wu2u5AIDZOejO5Ype{oC#JTz^* z)upC5pPj9Rxbu@|t;DtNj*mv9qL{NWt7pZNht4`hvVA7|jr{K1oco|vUlMV=-^oAd z7wz;F-oN~cOi?0I5NWYcTmHT+TR;&;an(LHg4MpeWBcC!a)qyV42~?XIz(L8Q9`p@ zF~=lVzS|x>QKWI8f5R@;$4^D+zCHfHJFX}CP3>hWc7o5Wmz$6O9kr(8{%d>+pS1@_ zZ4ZnOUv4@7stvrXF(UQM?jYSbPmZ8MGY(dUg*j;`}v|Vuf07>GCSoW^^TI$Wv?Tewfp(e&v*au zg*n6y$+EMo*VD839e(w4`OXR)(0@BQej#wYI`4ip>T7xvj^FN4of+DBNNwShDfK&b z{YhncWIF@944AF4B0bs6wK!k@J%Ku zp_@RLKmN->087XSb;N*a=!GtpR{3WY%_O>TC^&$t_FrSETN&aP-?!Ec+~3LVc(VnE zwF*CURB<3f0!Yi|U3X|m2m&9h2r?g7j^7EOMnL8Am%-o;8vu}&ff!T}STn%FnqO=&Srtg6Wpp&IO(>jpQ(g z^Ja>4#mjlcmEHXQqDQJujx*_`<0;(bFBV;!37z9ul{%nt6FtV#x*L+H za`=feDX>!~jNwUCwDibxr5pz5f?{J+^WtuH|COlX!gRHT;3|P0^+4-*`J@Co=f?yy zst#YNNhECT`(CZcJl|Fjntwf@*>(TLm4t|ER$50xkS>w>=k~Y~TCR+_;q-F3q$|a( zp9M$wEMHXUsE(rKs!UD1gr4!dqSZ^n{drp|_1=}rC()3yp#@dTi}r;LHT^} zz&14p<7#7$&~rIn%`~BmL)MbMMK$H^*20Q*TWs=boe*KehdV(z6HzL|ITnxqv^Qj{ zcOa*Y8=eRa-^F%;mTe0^p72{=vdrU-{ z=H|ueN-@sXt0Z?~A8h|=nH`rZA`!|isv7O-c~bpwchxZsH_k!GOJGU!6A!;hoqYRS zhkGM`2s}^QgI0bbX?ps;SMFNbtXw)?zsBsmSN9A5P2HjAy{mN>i>i&7u8vT)%Hx%} z*X`lKDWPe;Z~eC2ioTpG@1g7Z&DkyetLzYYv)AvL7MSS@SuhuW0{5@_n-;#KB_Vqq zaGjsW5*Zs^X1%_7e!LKGyx7#Ja)7q9*nFVpxo~2$owyoWy`%5im0d&HJ=!{ftszFd zreEvtdaEw0?X^wL!d-#eGa?tWNb@(En-k`5y)TPDi@TPE~23{n5^y=+{+}NkgFvK>K_n7!?Xx?!F4bpkQ@^y zkiPWk%FTtAptPzAY7BBLY=|0#1WxEr5Pka6(m3Utr5=1`5u-FM&4dhv0fbo|=Ec`* zRM-BnEMz30O;$h%Bs@Laay39ghfTg7F`7SO3Ih7sb4A2z86>hG0YOY}A&CNlTFysb zbV_iin;IJWxd_>DDzX!VAw``+5(W(g&SQT5&^*R-uj5Bu7<{muGW6q?Rs|qc z?CGf+6kphnIW;wF7k>_3{m7(eZ_A50DisILvV_5nqX$lQZl~6uSt{Tjc@`8y64X}Z zCgoYREN!t2YkR)z5Nw$AH80thWlA!7#1m)V2=X?3R#YBW+q_rj=E@(Q)LZ&EG`yI{ zoVRAtj)I(o9$T^4PzZT0S2dxKG-FZmi%mIGsdSMHnq!b8dYHDUSQrswVf;%`FTP-R z;}CtVo&>hFay(oLEeBN2Pzn_l`AHeai>2X&2t{#H`ga2m$JWO_-18*B37aoSI!-*xE$?8ex9hR;%`g7I{wLo9J| zSrG&PL^M76={sW`DJxO9J9CI7K2x4L z|E0(z+soJzhBo#)E^TrG@S?diiVocB&LLQYkE-)r*m_B|d=ov9q zea;!2Fsye+Igf~jz%L}j`YX|=!xrJ{hXgK84l6z&$)Dnl2CPAEu62=#4$|#t>1RTM zpPav_sCImDRF!)_Z6bVOaON8>cJ+r%-}{8hS;V_1GUe7-K-ZRpSwJ8@Q2_C+Ppqz) zmRwy;|MZByef;VFQsmt2t>E9K!2PneK)aK!9}`_~MNf#^?XBLXUJy9{`4}F=fkGq1 zru}%q!1lNH&L0E!=NZV(Gr~URb|ppXoeqZ4rGRZbU+(kz%_3$oVHf)4ACAL5NA$&B zFU5C%&j1SdRr;l-pIeD5lqTntk2W!f;%}!H8K9P2MsKu-y3bFFjT#c@cU4E9dcJ%? z?EGB60D)XmVT7b1(Amjk=FL3onrdvN#er-gthGn-2~#{1_aBy(@S+8Z_kD*Aug2fY zWDZpV?A;%urELj@8hj%WM{0$}sxMz6Aij`j`+OEgSAa@pvcX_#49x$uSg-F7KQuKx=HW3l6k#3#lsNL%?ZSdeX7A1rYJoc$gA3?bp#h`%{kVFWxA zaIic5*--_12mEcYks@!a=GwuE9rDAJMK21B*4W0lUscZ^ZkCjlfo?W&avMB=uxosX zJG$wFkW`INOc=rSG#X8f4&y|awk6OVjs8m2>9FS|=d0XMTw(euq<4QJM{RwD$`?!g z(~fTQt3I8P(%S|IqfEgunf)zQ9wxLA_9;8(>L~ ziBnIh`uYB7&c~1Oqz{7A3Hs}YThpDC?nnnv+-G^37o^c>_~yLUy>}JE#6~x&!-P#@ z&w58&*QnvCs!b7x zn=^sNpZFqYtE6*RXDk<=J$nw?SUS$mH-(wIt7XwG-z~PJvc>kDP}ywM@97;1fqMFe z^6fmA@5>;5eTjoN+XDQ_Tf4q{Ypqe^dj?n=9m5-!r$^V`*9W>u?(>V+L)GCc1Pu)h zXs^4RB&uxP2sg#W@56&P{_!IoIttX1;D3Wh5zC}#v{XL@F+Kz942;V1H&wz7iU_o# zl9}_=2+1q~ z!G{#`^3A3x6ph%Nu$yP}yZuhT))=)|DGMMYK@fleq9>+g1qd%1ERkZ2ka+Wk|IM;1 z@$BsE{?~>`TRt0&7YQR56ELKn0UTkic0qnVGQbf{VxJ5`@e1lkxdbUN*@8pLWF&ze z7B%3VyN}XSvt5;Drg@D6htCw;et^J(r7SGjL(b=d?GhslW>V6&n6oM@9 z(){ng$%L^zR=v(R2~kN?%$l1-(?z2ysVJ`z`8GdgW9wX2f0E*-#&eTd9H5geVxa)v?`JassO)wIo?Krz^?K76Rz3cI43W zNa=_f>an@Lqt;_3IsDB8xyM6HjD!-JNtvl{J_rksgk+tcf$`VS5- zItZL}%GzR_BZ#O*EVKw1fOp89DNj+{Z@7M{5Q5%itu#rn*jF|eeUh;DP{0i^R zCdrBy=fJYE$i$;>qRT86?>CwT9d&)n|qI6U1|Nf+quKXAyve)X1r@z)KKuv?Kp ziT;RKFfBN10BqPqeBzx%G z)m+3$w5ea1rxNx1gev*`$D8W)kB5uZ_o6tjzWHW0NzyKn(JhggW{HhFK6|&;z1?fu zp}nE6F=`Q)LS5i{M-h2?V_d7MEo|?{lj`tD0zelHTDe4X|45pm$DaFov?!h8zJ%rpI(wZQ8RSKr)kwk2?!LsWX|EmQci-rMK)Q`y7 zT@V_>E74V^qK0mf16&3PL}~T4^2>&2aL;#$g7>7G^jk=Lo?i2o4~!x6af0Pxc&DMjg67Y*!wPd51ctAl4C&P5gwMrjSzDLi4Gw@|o+>5I z! zCsF=m!Wf-{kX;g!>YVY8xiGk$=O~iub`)?b%#kK|leh)!L1n1`Nha(NOo*#)kS#2j69se>}w zEw=Q4lSO%zonExXY;I1Ag>?#1*lecrWFt6$!RNmk4|FCM?D@BQ|T zCmUl?{vGLB`3i|~!5`rqlSt>wi{djb??vc+ z3@jiaHpV~?y9FB`aF{%N3kM1&)f$?-em;b!NQQFHAK~52w`CuzoAzlw^d?*amm+G^qC5F@Rv0h@cuHEXY`Er!GAC=$}J z?B7?pe@EY*%;v9XV-W}{D`N(`4aBv&Q#r4ZRke)^4^-(G6o z72e^|KcEekA(xwXh2xn(=XkN1>ila-@bq9s+1tB=#%=TX0&CQaz6BS>A7=Hi)a^-g zXj?X|*U1kClF-NQZa@FpX80`HonC@qLojnfc0OWU9<#=kB1~Nz3~e%aMw3EE79B57 z?0!6PMGz^-y&y3A*hH#`XRbJN18RVeA z5Sh1KeENz*O)*dE1O8{{LPku-P1u<(BPB`XaRsjxk!nmI^2 zD)BkJxT7C`7$&(Heeej`L-m*d21K;1tRDXr@|~%O9KtnA<%ErnjvWsUR9Bza>dN4h z6pymL+bPxB!vUuZy25RT{5;0atxvh}mFXFE6w=t-oCfd$m>*g*C`#idQU{LU@UdLD z5MxLHgWtkDuMNgtOl&t>|5JAtoge%2 z7nRku{beENzl$GFP85C52t{5zksdOLHS8!2Z1`PGbub^YFlq2@R_^z|Y8CI#>O9^i zG0zS3Prj9-bXmPKkdD2~>h1mAc3^VxQE&Ix&eo4R5la`9Z93;;*&UwvzW>Ddoc1wa zOo0#b$6}}Kk1bE_t-k|$>|3oK)i&$KQk*2;LHmGUWg}qy;`g;XJa_>N7(%TEJ}h`Q zLHwJ_3A6EY!h7LRoUW2G6U~BYM<)DI!d7x~42H7gq=q#tw*ra2g4)g1wLw(}m?a_D z?x@JBMpl*?=4nrR+O5|?aOb|08wxdeg--pTWh4xj!9dwV2EJn`Li45>AH)vbPcCzp zgr4um-kzY-cl7G^-w}?wO}dqk_yIm+&%;{f3cYIGz}g>#ShLvvZj`k0H$pB3>r^XpcfTHOEc7Dp>67Fq*nBc!Yh&aBJJ z;>N}lN1{{z!$dgtVonT{mzyFN!fUjDCImqxAGKDY%Gh zzUsdd6MM>sx&80ou=%V$ARjeC1Eq@dAfb}$zQVA%`*jO(`a3^&3aM$Sm)_X*_3Fds zhwfQ)397FakC9lkTx-mpJqftwyh|WWt(s8s+92Z5r>C!GpU&sxjLBZW?_1 zE8RrI;UM4Zth%dj3ko;XVIiw4RsI9aY!?4Xbq~Rlil@#2d70 z(E#i9$ZVpfB1=dkAqa@uS@62JUG;+wShTDZ@fEr=Ud1j{fz5NQC4XHV#;b7%aG^@WMehbY3s^?=e9CrY%1i zzJWljzP?-}r=W|`;Iguv)|ds`EyxVp%CM<|6bT2=6oN<=GT$tDtZU?$?NVWCgV>*f z8c?Up=Lw8yw?Og%p0LF)?q)iCma&AK7Qt-LI`)=nmP3dSKS=JIjC6jw2tlGbutlAh zUFX4C-WUH6l4a^)?gJ|gX*xWvr~&4mBruJIFgZa``5_$I00-y9L+)C6O=5j<<@1nf zbo)4@Ne*T@P=mwB7<@-i2s6Y*4sia|XQUajSl=PpvU&EcZ;F zz0YlwU&ZwOON#b)vhJ*5-s)A2-%}Ibx8gbbRkV*#F7m~$ZcFIMym)p_?`}Jkg|h6Z zA0x811tn}r9_F;ju_}(8?Xv!=eLbpquOVS0*Whvv2cy3nseY+=pJTl(S z#0D{rC23?i=}0yzq$wWDC>17vT%#C+4;SSw>x0Aj;fk*{5r0q7*cY8p8!Fk7aPRMH z?hJ63v70n%`7_6j7S^;rFVTI#n~JR2XPv+~M)VZrWpNHcjSy>6guH3--A_C%=O_u< z63>u2J1N}HaDoc-nkn198pfDKwxN% z_2+{-8JFE!|9Vw$4vY8fS9e#FZS{AC638qL&N@Fn^B2D8{d__!YhF*XnMmcGoONwo zW!YdnVfuDgwnKz+XPtvz@cJO>w?@p-;So-wUD=H?`s2$d8)AmfFPZgz%0778Uz273 z`n83dTS`xlc;GG^J&^e!YztUeSPoELsRL~*GxK5USgut@uBdh?o`zBlL_vp5hrmEF z-v4mJ@1GhnHk;nWhQGgpe?A>d+oD+?`pA-@0C)W5qjS|ZivDRpWv6qbJf!<}ban3E#UB27Ta^U|*lb(9FtBitBA z#=_+z1?l$p+SzwP*9!|VL_(0BtgM~36nc*JS^a;IlBV2e)PZ=ZOV8Yvt>}GZmqyo8s#gVX$e*0 zVN-&4N>mwnju%^F3;%vhzFm(`z4%1sljQCamtoC;nNenCjjl#mgOBr%$%>wCWUzac zN2@&RYpc+>c~)IY&-TPjM?vIurz+kNfj={*Nj_7CUO*Zfw|OS^h-vT7BRq7}v^0Ux zvXq_9Yvpf8wk;%$U#aMDh(k)>YqHggTupdhl)v`Myz@q6NN#r7YrB&Tg<~#;T~K=^ zZezq(_~Z8V1&?pN^Skg6CAUlYCu?W7`3|Y@iahu#Z#dF;x_yT;&NajPnmSL|B!9K^ zW`NoSA;SX+9U>Y!Z@R>Yu*3bx7)qI1?QsFu7eVh0--m-=0Xi38V`YOe6q#q&tqn|X zAuZ~Vvq%a2_B#!nPg05j^H0zfA`;_Q1F|wCThpCq=`KeEzq@0}}Bl1}gRtErJyyWkW1Q@}R&%d8AfdMBR_Nla4U^N|2vgrW0 zK#d15w5nfC0F)MZ*xgWO?GwNO1OMKp6F9+FWO^oZ_JpP_lcZ>kG|WLgSyl%0c`VLH z<4xtvbKfKK5IIlqgUIhsu`fMIVi8a;Q>GqhH1 zS9B`OK`IhsN*hVN%WBY>@x)X4Xz4gm-|d1{EnQGXM#k|A9s9p2jIY8(s}6cC+Z-O+ zU)X9)7lib$g--XqBX_@mx}u<{#b+_uy@Pw#HbL?BrvxRw;ylK;5L`+;lf*+fZCcpx zh577MFifV%@iPw>A9r8V%@Hp*M$lfFPOTGL-Ew%5BwuwLGn45v=3%5^?v}ie7|O(D z6ZoCpPq(>d=)}T%}o6F?R&%W!w)<<0^Y_X*|Oc6ocL9z)DT+4C6}vW$o}5k^h5tq zexS=6e&>Zj*Kz3~MkdFUYQ4U4j;nVkd;Dt-0%=*4MU7QBFqR%sFMhjMIa{II5d@EH z+=MAtI$g@jpX~$pM*XP%wVP4oU;jvZ*v@_*rg*N*dj|1WtfphLe4F?5x=+k;{cx_I zL$*cV+})kz`7D-)$-oT_2^QJ9I46gE2Ry~1$LW)hHEnp<>fG|~b~j710=SI(=>?LBr$p}F! zFi;E;g((Cm#>rVD=H|3ce=ZIkZ46mKX#K7Wj1M7QxUivt5aJqOYd&pB0QT^|Cwn@u zPJ_k=#(}`;P+>gmIPiupC=?dnWo4tcz$HN0smXW5eD?8D3+%G;qW!;Z9 zL*@I`Dqhwn1m1~NQU9!D>J$@rCnh&ZEor3IdV;pswW0mbrOmtj;7oh{fRz`|4cCmX zSMQ+?K5!>n&@U>lM}0ZDb}YcO^_cZlE6Fs&?`iVf{KDWh|N5{P^Tt=+OebnwCmMv-IsHlkytK5q@ zNyQpyN5~HZYOIpLif{GLf2=A8fqiNnAi5N1F%`M2cWQedP9WgRDw#Aid6Wudv(8y^}o9NSD`G!qzjw+u-M#E=5co%b^P#vff9(y#p8+Uw6tbhqJm z{IJcq$6@zS_=zM?h%J<|&0TCErZtE`AjaXPzjzTo- z-ny8P#w8syb09DvSYNg#A;Kdqc_LWH5Xp3KlE@x?#Yp~ma7O+Bi!iYwB27am%e*H5 z6)tX=v-O90cz8g+3l1U4gPy$;=zd8^NyQWB`krELVHY!}%+_j0!DSB&Mrf1c;y-A# zGqVy!`rj#$GqtRMe%|w6!&4+#4Pd;#OxbGIG!nz2p2;$Jm?Q>YPDxRtm zm^`kE+Hh-w1o^E$yR#HRF6c1U2gRmQi#NQS5bph7t$T3lV15R>U#xE0@jW$Iqaokd zy{-SvW%fC=*WbL3pA&JsLS&0T>X(DScmn-1;Aa3W=GDtT;F{wE=w%j-zNVGxPOB32 zeaP$~kPK3XcvXy+R)mX0l8Ua$gW8Qatws0`+`C9j~sTWy}o-qwon>!-wj@N z;Ryc8&nn56S-VSA;g+5$)*9qhHM}!S(3j6qXMWt^bv~NE?^_%c%zCi_oE+RNtMJC=0-UNYuPs!cR^z8 z$G>Vg@psefGDZ(~6iMr)B(aNWqTe!>9J3j{5_@L9YSS%sc}Zfar?Sk*NW%f)b#&^( zfr_Lf#uBNlB?EX7xq+_w_!|hq!}5Rk^6TM=ZDDs=DD?<;X9vLU+)V(xA6p)3EhQP zLU3I;s$C^d6VJMGp`~rb(4K38!qD9iAM(QPvjw zMoBYHqDV)0#%4g|1NR;&IXSe&Ga%&w8>V^v!YxuQ5mM$K2{6tHaaTosU1QjTgs2fB z2wC9y(s=O#0@x8Tb70khJ|+lAT_q}w4Gl2GF&_s-5*`*B3}ZpyW4lVI_Y>R<+S)Ik zrunI2`(H3WgD8!$RE{C*hMDE%=P-0e;3s;Tn`_i)Y&ErIsg$P6dKB6SBNYO z;PR0vL00(@^x;l0__c38k^yZIf{_m&RV8nH(+L`0fCWV1`xZ*q!!8eS1}m3a`~a?a z1TQd!Sm+)=5(N%NkaL4)30AaGo-dd|=QJkA104z|l;E=tN4>a|WiB!#93N6NO+o&5 zuf}$SmixjHhf>LLxwN@#4c?(ADKaPtkuOXAxu&y0?bW0jH&2MkvcpVnWQ@T-ka#7#f8?eszwrV2>l=teXlwk)3HcFKog{^2M`ZhTGyC`N`5#QZ5Zrs-uB9v>4_^j~=?~vujoA z-Tux*fSKfiDur99F-R9ljsEFV^Z79L{9!zK)!H4#_L>{bSH8|vllxx&{_nX4iyx(> zz3YyO3JSZ6`AQF6esqc|{4pMB@6V96T!D*b1#gv{&N)dFZ)BWM%26Q?nrMb}u5?xv z#oRKafRO+?o%^ViqhCc{e837AiIO5UWhqpQSF8#$tu<~~xIaPk!|Rm`@4W=9E$$!Z zD10r7XT1#8lH#Mrq?r>v`C?u%$5-2ydQ(w;QGHb1KToEYm>o_p? z^#7i1$X1GBML6th?3aPdwg~ci(Akq|bc0-$8offd0Rv*afxHMKn;$={CEqu%D}(U` zHvXVsf#itiV1S3x7;@4ae>Tj|fO`zK`mmA*TMXhW4;bgdG!l|R-$B!;Fb>Dym19%o3vR<^-x*!*)N6lt>r*05pWfC z_4EMYyH;BKp7ufPL-c^$mk{g(DeNJYCr}b0#0#)sfocSJNdeTL%R|h-VA=(yX9VRG zrmpZ&Ei(qO`Iow3;3VjCDFA{#u;#01EZg&gnFxl%H4ni&qSt5(R7uC1t25Bl$v%G` zEnZte2T^|!PA%i0KboXZ)$fI$^XlqK<})z3H%>gT70jvcbDCC}>3~gc{lo)s+JFis zU3qaSgAq*2AiwojteuqYiGt8Ehm1{8)0>3P28rm8l=0syGuX>6zOh6L>i<;Nu}dk zd!Fx|KXXjzX3yN$eXVt7byB$ayYjJ!wEO<=%6CL>N0@err|nDwSobgEEJEa3jplhl zB&OoQFL_V**9KUt604=|K^@JgG+gCE!e}$@^c&d{xS4#{gcPh^e|uSkJ%&bjk^I~l z==tlW?!F~Hb57Kieg2WxK|qK+eFGQeSxogB9YLK8JlLfwbmeqX4^q1PhjzMt)~PXU z#D4LSQLMe#&SCTTMJGR(v29a9l_85=UeR0sOVxIe?sD0{Rb@EmY4W?WT2xSrtlHeT z|FX^q9cvx^Ia-v-=Mx^xPd1~T3`&uSiB`fHZUpey@WoU4Wm1_Xra@BJhB?rnF{;vi zf54D-4Y;fDt>-@2WZgF_r!SZLA&iUV%U@Ll^a-OWY@$HCmzRUN7*C3Q7NflU@tde{ zbklWeR#bnZ8ofAa+t;rpK>f>24ERRhwlnOJo!`DCI>gu5*ryj0MaRGq2xj}%-`_7_ zn#tG{2zV=ZhSbZKU}OW-2ap&@x`2zIoz)B9{=vSg1Ri{nXg+bs?Q z$^%1mj}12*VhEmQ$0KH}B7}K5{n=}9v2eE+fWvJSGyy>VBNDb3-BurDdmYL`W62Ib z&w?{9$aoN)qT+c_hXV)!e!_q$o%JVO7FZYHEQ^x2f3MP+;EH1PT0sv!>4W0~3I^YV zaPQ;IlF@pf|I-2ppYTCQ8Q5$P7V5X3A4*N+LM!+vD^TNQu0OrvP81Jc?YkG+6OVyO{a*VSCW%*;sp3lfgNW4h zw89g~OfTUMT`pPj<<+fPPSYf-PXvu{nRXJ_?5$2c+B}`tn{${o`=AawuXMBqyjg$zZFY~THi zKfokGKQun0uYYqUZ)&Xe?es|#GtPRQIDd|0L=P$oG3s62CcT%Jzbzi}KaykmrLRDf zVS4cO>F~(t#QcYMGi7P+5zaL+CeO!~vF^SXfWT^d`l)9SN<^+Jt#muJPI{P;)R0C7zlU+?g|ttK!gYArz)1jQQv?0 z@vt)?WN6au55#<|Ugkp)~A#b6;F8bB-3WQ(?q@N9v5nSD5eK^q&N>^`KcOm1^I z6EaxG!eIzjNOD)7Cu6M9)6C!7+A@S7(@LGjXpp;f*e445UJJtK1wURZ5&lOHGYBL` zF~Kid?(-71%e=nw5lJte`1Y+E9@ZJi7Ve87E2*g&dtXaRLLwPY4VObdI5;t;hl}J> zzAi2zcyKuI5C#TUh9=YFKdIrTiG8bipce&Y4PvXjI$4Uzr-Q9o!jB_k(U$b5IiZd_(E4UdOWGTvaX-|Ypf-(Vo0SCfnG(O zTaH})=@%NP&L)10M^3MAsPDPkUjCT6n`Nu6XF5iVl9sNhyf7~LF*eU8-HuBAY-hre zzIb#D$6iz~tFv7GlY@4pOg?f(Pn7b#3N1-&F}z{&v~lFy6+PkP;i**w3i={5TNu74 zJWHalA_BcJ57T%RLqf~V>37_@m_xLOO~fVWURyRZ+15Xhe0Vp@iy`c{vtjM%tA;}e z!TR(Wx>LsXdulF;{Bkq=Iuax;>euk>XE%E&IMXO;m9h#>x@8Bg(>8*oD_O|2`6Fhm zDIP_{M~&nr)%_Th3UqvU$Oi`SS{s56o4&ap{^~CS7Ji9;{2`hsI!+|~y-VU|N1)|& zSnY>$lj#{w{_1MCg}LSHH&TGy_*_zxzKV^0nKG`eGZcnvcbFz}O`V^M8y4wwZ9}Fy z)BR)rZk?r(m>MIkhf>_o=C*E2=prsHArWz2UM;BsRQQIR)0fjHd;iuzTIYb|Hkyui z87p~4$$BS6u7W!Me@SfZ%>vG!TT7&5WkcLLDvT^_FBmeMgI)l7 z1p!G2YY;=ykB@JNp|^Hz$KZzlQ}yKR?BMU;mA4(CS>d)}SMURyrPeGkFU`+q8u{u2 zv~#;6+~yxpdd(0^8Aly9S)v3XU7>S-0CR>Mc}w#J`HmF6c*&853}Dlk)Y>4yM zZN+BFQ=v!8unanEPoLxlcS1#Y0FufX7nu-aLINWRdXLbIr9-28onD8q%}M` z9A`$C-=Ey$UlBlpE`w9g^%5^vIU{b+B{b24^2n)Q-I&_rflu3`T7}`xOtK{H=c*JE zc|4+&9j<$)7Kb*{+?BQ)HU^5 zaNLpN!~;dPo>M1K;V{aCQlCnw;5j}xP>*+-u3V9Cyr$B~2!CYY@#I#mx+FDC@4Dh@ zcDTtNsnLfL6en%jR%S9?7A^)NhcRAjccdT=@rOS;b)V9 zp+Y&VY#{RVtfw34J{QBCfu>YZ@^H!GjU*vGO~*=8Go83WY6$#CMZx-~qMI)TxvLAS zc`{G)okyB8g&p6iT>Oj>>nghW8*MSPw4Lf3)7E$M9Qr=dQOqF&z6EEo8aGxJlOtaa zUh{$wEj{lttp}}h&_s8aTwl5`@BRB&NlG!mn$FJ7kWkt1(AYURAbGdXxK>$R9dRT9 zJp>}RBLL-gAoo3T)MsYSs2l_S8Wm<|hwFF*1gg5ak&wm+3^!mn5c>X(TvkX#gjI$s z$8)zCyu9ZZ7Z60v#KeRe9Zw__5Si4ZU-O(MVFD=SGPM#oP~zwao*WX+^z})Lii+^? z@$c^@C=irf&b3_;!%_D4M}oGLpmM}d z3NTd!%coFq@vXR`qoeQb5B4{?LLmqw3P5BwfK%|xXBu8Vf|=36*cd5Gu@71yf!1&n zR0IJUgyoMx$q?k0L2|;q1iUQ8fQiyRo4Py|tUQgK8AmbPKYwVo_T32yw@h;FVj)~I z+OO3o`{D}o(8-Zq=db#!m)L01M1)%_Nt-e3lgo%)pDLuz4zA}*ze~)_IP(HipGA%Q zcv4Upznq><+m@Rt_?n=rRk z2Zd@1MoK2q#L49I5MX1SHEn;|Q4U`|RML|dBw5Q$F0#bXK7SsvEj$$=UP8qvAEW<< z{Goh7GW|qqBsu!e^oE2gnRtTNY>&g=;i>Jan9AKT&%*cZk5I>8H!e(gSlzlI_x6uR zvL0(TXA*LbEd)drqSZJ)`73H_X;VWtx~b@ zE4ok;h?%H8(aWNpuvEu5K3;a_FRQ9FhCrX|R(g+%mFFkkVLX_PtC@aJqZkSup$!eW zfT$2HHR~U|smHBX9<}}GaCLNQ-Y(AIU3?okxsXLRbhJ%Hi`lw@nZF*jXJm9W9Tnqg z>pS%NhWF=<-A+*3V)|0`XL5pwAPotKTcnP{4Z91eb;>?mkE0-^3mQvbzI+L@GdxHT zlmxrDva)hJfbNk(q8rkQLI^b2dS5zN_F7bobL=`1Po*a31y zsu0Tsj~ZZ|xp{fFGe&6s9zaN4YEI6hwW2BOX8^12Pr;|a@*OEnHTUriZVLs#K#1f? zD>x^&@yazSz#5k6y6E0{JL91Ky(Sav_@MtC0puRp(*br5P#1$3LX#GPChRc6%+)tvI!MqKFaPt<;wBTfQ_kbI zd_Sv@n3Q73^{Y%vwFeX(xF*6#&myYx5GBK<({U*&0aM1srTzV#^B5FuDT80pW}`9l z64yC6g`~;v((*s2t10VwByZ>{x&J)hZNncU$}Nog+cy^aUYlCOy6xJS)7XlaHmzGo zE%n0GkDtYc_UZOU^?0{8DDp8G;T}ND$knPdVOIvX557T!r}`pcVuL4PNOBk(KMsMK~=hu zX47r4eC&t1gdLV_5C2}oF}g?=+{QV$)#kY&tM9df-|BIcb^67~#sl}-kT8u`tS6pQ z(fMS;Zcmay>F2*Oj^CM5Z@#K3zZ^=AsN#BK*_*2@N-1i&7&V)UEJjv+eS7x!kI7q) z$f=*kSY`%p1;g=Sd!0caM9#iOd?0tT9c`@?G zrms)v8U>?ow8mlT4eQFl4btah?*J^jJ(pnKxs&sopi{=`8Hky|2vQ&ume3hiC;55M zl$)|_&l@-f^`L(QPnQE=tb*AnkY{-_$2S{j2YA7=q=4Ux+K|w&wrb_*49cebb0?sy zY82$O=(ognA7ksXLAD-3a+H*m1SbMgS|BM87zp^?W9Ln)33z7jQsJM#r4+@p*bip#ySEBP%uU?fG;cXYM@2yp)WFDynYnpfGB*@) z@{&kHevab|bT2|Tsz!xWl?L=4TUlHGoLjo)hAkRes-UX?3^IT=AZn&qV;QTPkdowj zU~h-GC;-jiP_Ni)${emaHZK>%J?t#6sE}YuIfB*15b#@uB#=F!-d6<|4LDj6A%75s z1Jf$xN5RXbwZ&>6-(8csy>;4^lb5jMvu9#)F^8O-T&ye&q|(9#%EI9E%LOJ#j&=xnZ8=QAYCV{svX^FOyph);Mu@9~n5Z{|N6` zUr*Y6tD=(}qfu84Cf*9j;zm~z=uWiMza=+vEjt=RQXA59K>Nf`kk0<}+m$n(bKK`Vl!BiP7w<>8(qMg+l8`ZRc%VhgN zMCKIJzV8o;Rf{j{iQPr&)0`W(FBV7oS5>_R2c#C=864TjM3}xCdk|g(74v9lXkeH`V$3frybIZVUroMX#d3liWmnVflev@A5Lycix zRaF$EyT0S&qCEexPcA*Dg z2Lh{}w9;jn&c`_W7QtlDj3(=sbP&dibN@#jwSpp_md;0ln!frUeWN1?Y5m`~IlY?( z?WP=nwLh$@qVcB)Ey*XWq?!G!$jUSH0imKh_;3rA!dN@Y+p& zU~|)1g?-NGvzPLyo(tbtwdANtJ2?3QEGlCvGm+{J(P9Uta)X6; zKbIa4FR;;Wz-acxifSm5i8l)Np(4Oi(bbf+v%o@j55n6Zc!*ZwzLwI~@h9x- zSM~0rv9{12(?Z{N30K!g2a|i-LZ9_V{u3mDk|r9LKip%j3PuoJt#Xs;&T; zBAmLq%EF%e=OG?VRzsV-3v)r5nZ4G}z?C4*!ILq$Kx-v*^IIfGxTWf&9nUoL4M*Q) z-|68YLwR|%Nh4XP2k-GRv(1|_P#1)kmp}7*Q?mMo%-LzVbw^X}C7`kBDT}SR&;PzL zG5?+B{kge%JwdSHLYSqhCja_t4*Mm`q&5kn!FV&_;uUWo4G5Ue!xWL(~bD?e^^>T{ldS&)0LcBm#%-h$9b(w7PK7B@{rR8xUFrY&MAb~LvA1yIJdI0Uc7|1 z>?JQw`0qIlW1?8aRI7v@`>J$WoJF*B0bB`(hlha@txZjuhN=im0K#iR5DrRcB;|Vi z0PZ_TsCC%;a^g7of~VGIh6BhHP>mbg+s6WEe0kY2ZVWjHW^C}5xgF6%`GE`!#~^Nk zr6-w150VT7;A)KNyF-4Nfnmv+KmwX%1_lORusm`(~^=#)MN+iLuO+>B(ADhQ;? zz%_&AdwS=ca_vB=@~?j$a&R$&YX6ae7rU00*5$5i+iHZtCFR@CS(leyc|wKCbcig) zz;xSB+ceA z!zt&21lqx)qoZAUtv@Z;2LCbg@Kj`T`AIjU_1;K=rI}Bw<;)zBwFqkBr?*U%viJv< z$8Qaol0bQ)_5&?G?#JoQbRSf|ztNId<&&TB+IFvOYr<3FYTst(b)$^#%`v>e}i2HK01Ot#eDS9uIaI-SHpUnm^aX&XU3P0#bP;ezhmO=|+dLb{* zxoOZ6h5pfYrRNLlVaSu1!yi;j#$6lQ&dFQ`*9JL1cQ0DyyUNY$cT+ zDWl}$#aZITsiVk<(wG$AaP?vCO2wn*Q4g-UrTbOmVr1^-($PlnHAawBM7dGRxmyt- z(5Us4M|uozxB;2!+}h$L=BcJ_BX^w;*G-hJ@|364&MdZ>QDyl=hf;f&rR5icx-~NV zk(ikB6YI?V&%f!=9x9s!58>-~SV`Jqu48zlW0bf<0MPMn3GR&1oYLW=crz-I_-}{vn>;xY@y`72C={L5`2OlxfcO3G{qH*+2jANEGcE<(n=1%{>{6qJVw{#t z%r5sM8hp=te~a`42-vM{clD{9o=yrM%`G;OEf!n2Z9dWU?en(rJgauinahcsej6+$ zz3sg(Kr(-b9kR#T-nhwK{ppX`_cpK1&oREmLY^uAF10QW#Ex$ioI?K{{K)>d=in=R z=@H`l7Nw2;bHWq7s2}!|2j7_I4_QBJomeuSbLyWcB;4z(Z*<7nyO%9|N#}7wy4$+V zjoGWwy0_SRlBrQ!G~BgX;x(_C+vol3mZBiZj=hA*?cG+PQwH1h?MK30%)T2Z7dBG& zFiMr_ASGycgc+?FbTx2mYBpHoudlDKt*s&2w%G_xjg7^}%Q8aC29EgeV-i96#>+05XYrmj4xuPb>Jez^UMBsQJKm@Q)V1oSpH137O@y$a# zHLR5FW~S6doOZ`>>+(|9z^?<{yJ0*H(c*(TgD0Q3Wu4^Rr+ z_=uzh78ZhA1@N(hgL2@C!4llR1??PwhJbbwp!aTECHqD9O{4l5!pDy(2_nE9*9W>A zXa_N@G!0CFsTh`HSabV*bgDGOqP1bn&h5oeqoR8A2KpJ2!zL`dcm6p-4+1oE4)JYf zLK*<1RI&pn4h6G_Zv{?SNMnJ|Cl|@O?ds#Bm+qG*rszUyu@l5d$5>@-3Z$%$FeB^y zy`v+A7ksj^lAsyFi_(^MaG-!M5xjA4W1~}2lKx)S9TNU48ofKRmB`AI@BQO@<#w+I zL{z^NX4fUJi)QlmVf!sJ6;OFQlZYs|XGg6wM3 z8rqW>NCHIfz-ERO<;JmWZuU81Hl)h_eu5Ea|Av#8(kixh1qdN4l~9vC-$m*6xq5VD_Hg^@u>{XuYT5kZ(%Ct9RE5 zt2y-7ra~4!VqywT$j3H&JzEb*Pd2-%T~jx+BkI=Uq;1e{5l87%x1XPq{+`fyJm$8* z*~2D4c2xW4`g`NCEwSr@?>nJaUzjs|QoeY%@lDy*8ZRx#JL^z=@f1v~V(j`-@@OfF z`?o;Wnq7sIQlIDVB~S0RF@0Fm{5CAOGpydcDT2a~j1lPMAt+4;2NBW(j>l0@0O-)H zi*yR{tj1iAVe3PjX4P*XR06;fjx4+a5P1&3IqZHp(TDlk%*;&J>!1fT8z8&}>V+4w zP~eRLE{-6EU>MM6$^Aq{bDx<1Zo)@HhJJ5eK~AOsgn}Cs9zPG<0vk*N3poa(V4=-Y zgsL@ME>hUOOG`_ap?(L@%Z`0U6SSA=>VZppCAqn`Al!Aq7Gy*?m?0{3c+h+cCmr@w z$TmY3jXfAuN9OQHG?&y&Gg_*yZEn`P>}Wui#ob$lFt5LV4AqHEC56Fw-+Gu-gUTC)A#ZAABqn3bG0;`%8SXS)ZS3ZDH%z^o80ExhWYA>Y zofwr*+HH5{32zpTSYcbSv3`r;<={ZbAi z8A%cim+r->g~hlfUg-mxpMm2#57fUW#}#PQeyBzZ>ycw16f3N!)JOGG7vmu95)yhb zPny@1A9-`Wi)D}TPfbg+UrOiWvO{y4t4rLQZ$C-Mq$}bnaEjQ|U)aplA@{9OkCs_w zCb0beV*8bnXX@p$;|L{ztO{e&)-(H0^)bye*!;|vE;x!ggklu|JafSZK}LVv|54*Q zyxsH6dO9>69~~Umk5|}vyPKZOXpa!bA@JO(+;B14uA}Q!>p9>1b#bQN%VDm=(BPE= zt7FpNlmycb|DGA-jhA=WuyO8g8T}9rau3UtWKxv160VS$&H&qk2mcCberF0VglW`t3JFL!IZ>gvVzmEDg?vkew(nfg!Tt@tYs=~*#%7Aa92!hCMzcK>i&vFD zM?JsS{~Ov=xiP%6)9CGIw>T@;;rXP=;_;r+#!l~UaFWH&t((=I94isw=#|(@{#hENi@4RysMp+EAZsLhD&Y zaX9@;@tFiK$wmwslLH_GVKwuCF0lK;hV5g47M#Pl<^SFO6 zU{Cay#o)f(EA`=i#fvMSj*nV!L!I9OOy@-gw^4((`_;c`_l-0QOG`^bfG_=}JN)jT z1X@4mB{2s=B1tYtzorj(lpjHnnU2yMv&OZt2?KfoT zkVD1*X-ZHM9)Qqs5Jx$U@`adk(2p~>oln&Oz73Lqhk>6s-u-|{gEB6+v=q#@z5CT|Bl(m7)XIiuRo@w^H;a$z5dU~W#IVgCfkh#vR1)rZedVk~2ZPV{aEMML} z*|gD(Xf8$lpsiebFwBIl5Frz2yk#a!AkJ>e@Ki14IO4^uWHk8gzl$D4V?4Z=zf2kY4n-D<#(~#qJ>SI?m75&KRKa`K}j$ttAQBo1f zbMPanKGm!zPm(!E2=N`@rx#1O@y>P*ujI`fUGIoL})@6lJ#!5dah$3W3ck3Lj&ZNtK7qz)l> zSfT107-Q`=9-@8ts3SIDmsB7?;=RSmZOMEtO4;<@b$R+Sx|I>!KKJ@J@#p9K!6DDL z1gA!bQRbT0elmsyQb#KC(Vr7$E0G06cM&N*(Ytf9=NbHFPebf90j)hviA`tcs->mi z(dVwwQL=^Jf2|=i4%6qZ%*tM|2g_afxWYd)_Z+WI=3?5ukq9S;UQINJ?C$u)9^6m1TKV_!P&U;74pW^G~r67>u@YLsh zigg%^>@n^nHY+B}ISA?JRfIGx;81RTg{p^$)ZB9q5H}%6lb)U)ubYb{+W)wHWNnLJ zIVioX7={j5O}7jh&eSi z<#j%p17ZSzs^JYmBIJ>nb91=~oCpZbk!i=k>J%Okf&3>jk|!9PK|p2#@xunpCEGK= zpx@UJxr{=Li(*NaaV_d;D3m?w`(C*q`X*Uh|79q^1OUeqGbF%Ga1>ILLqQ`9ZbT5i z05emaC07K#D}d<5a`Ky--BtW`YWgg>R_zrZ-ai`{8Zx@^qr$^yu(Z_eyuNdxS^qJ% zNd6bZgTf~*WA$mOY7P$mdF4L?L+|jX&4&X|`_;Aj@uaD(=vzfmVfYX)qa<~tPg99mdJWOW1D|tkJ7N~VBe6enBsf}MeqT2hvL$GwEYcQ^o-2w z{T-8Dd!DX_WV`E&7jJW8UzgFca0Jv5}ATMsuf4Mi5l2BOu5n>IB+``pQ=i^S+0bTRYVtR^$+uehxci)k`M zPeY;l-eZA=BtXcSY_B+v8>R0ro*e!bI@%T)sqsQEha)-~eTBh2?K@Aud~rT`yW;RU zZm0-25yzFDM;v=P%l!w!j!qa{tOgxhfe|e&Xo@bG8=F{{iPwJQj2h_^LkFy`AWVahKhXn) zl1VrMMo$0~f+CoDpDT}!T!yYXD3&1yxEr!Hfl!Aj^JRs`iZeev+f@G*Wdko$1fK+9 z|DY}$T#XSK1zS5cwFE@JfEf@5Y2?^q?J5M$3le=m8CiJWnIF@xZpM|}GtCsJudBN| zzRJ^f_5y(@8yQgq1qDF?Jp8QigTbwTxUJ;-7*0R*LfP6z!|S7S<^6akyfyqkTY7t6 z89Nr|P~)M&zO&CfoUcm%UVB8H>)TH(mgNJtu)r&b7w3AVs}c?Xb!ll}ax(r0mj^g0 zWug{c3wzXINKvhLQH$Z47vFso)gvXl1DKeDo$+KbluKi!|K8oWy1P-Jz~AS-zp^wg zA{e4uKrNdNI_S=8_feh38;>9vf26)Y>?<6pm^o7Naf*HM zjfJer(}S}FQ>$nFKV#9_pJoV$QGCYqH&)GO%U8#adlu7KSERrv9alOMsnms^GR?M1 zXf{_=)zsJf<7gI}ag@H@l8f_A<0|^y@n7FyfXvh2nOJa2e6(?EVF9z%-t)*`WV?BsTKeS@w~b9R7$fcj} zF$a0}+Y|b`iywk@-eRua@lvD}Ui6^76m?P){gASW$)dl&(~@zq>-O6hlUj;s?t6!y z31+_JBO;QF-C~||+tnPS%C>GFuTs92t5x4ok0sJ|_z-^~PmUe?$=Xe=-{*Dp)S2p| zA7B6b?d8Q2ZHbp-!sEJhKrCo+I(#uUAU#4LRFW+a=G9-0wIPQA8lC{g1z7}0pW*!i_a$UEh*HKOob9!qC$@eMp$7oqWW)dr%oZZI z6N;lwmV8B)u8$jo0-^f}Fej*z1X~OE-x1%fe`v@Aj5daBsPCqC@Mm#}D(nEf?zerV zuKpe{Zb(UTht_X|YcV(X-Tb_+;e@mxBVz=3;~~BUQ1pikl<+emXeoSZa4bU8DG*K< zi;&lJaljJYIuYP)8EDEB9g0Wk5Z*KKFn8{5*SmB3O6VwpJw8Om*DejFCptJlPprQjl`NA04oY+_3qi zSOQsEm`HheH1fBfWCcVs*7sA)#rn4ZX!JM z-sp2F*`0SZ!3UHbVpq5Yus%`FX6H*UC;(0nVZaZzgZ&8ynK+*pT~%wDV4I!m3TmlLOdVzP}Yv6{(zqqoM1 zrk#pUIlo^#ztFnw@od@CBVv?flig2PBYk!(7==k2SE$!7m#W7t`>|sc2~Q9vt)am%7CkG%By1 zxBi-EUtJAp+9<#OaQ_<65*gQtgNoAD51vL zH>XHW@Raxc4PH-?w(aS##mr5wkN*5rn3*}Id~_05gsis9i>G(Lavg@1265Vj3q~j5$C3GK-Cj!|cNzz$au# zr)LmQ^qsaU{K~fC=dfYXYboM`7H3)8@WJDs^}XPb{ZF}NGtvwMCjZLKsUJTO$|^bg zV;6nc)_OoxKC0Kb92;?c8)cHyXTF+G(Pb1ns`HxXUYU+@x8YYc%}fc6==*8E>GG8Q zffdkSbcs(N#Djvmjba)Mej&Xqi1w?>`)rYV-Fl66gYA)nT{OA)^cb>1eKS2PtA&q`{`i}Ib#iDm1T?nOFV$gTm{$M- zpW#9Ud{ulZud)(hQT|^!6-2inG@)xfmRx8|Xi&OrNCg++EjB@Le1gjLav4Qrxj&8y zZj;rM3(!Ddvtf1^VpmK-BdK(mx+7d?EX`{;$;>*vAo7H&^M|Pf;F?bvdRoc?Z53j5 zv;Qg7Lx$FI=n?_L3Fr{DvMOso2k-~Dp7Gh)aE%H`W`e;vTq>?;8-gDr3^~lXGqhkh z#zs}v)nz)hgl_>}q>+&k0A%$c>I-2V0(V{W*+zyt1e-zrpZ_Ej@sfjE$@hBGR~p9n zi3tj~SEjS7L<^xHdIh<d@bWO43_r zWTZMZ^EnnqDYK1!GsOu|9Qcm@@#xo(r_8Uqrj=H*00nePK6YQ!X5HHi&m_g0P&^5F z7dj%wgaRxEJ2qT)G+Qgb~xLAS9JBK|3fXkn}yo7m=Nd76lR^AJ?NgF=*l$MH?eT{ z#kAt$Yp+rB+)Ejdvb2ZGr(W|;IK(^gRMIlb!KIh=V6%EP!&Rs+*vT0PzMH}9>64?q zo7#YUj@Z(ozYm@^Z9X?xYuTwrazG;3AawabKQOr7D$v^3k@9naht8KKg*d{FHUHFOnWHDFwFu1X0$qDYr;%v~K9sZls(lh8Lt|6ts z5B#@T8rDb2q^CUwGOz?SmSOW}H1*Npb;j2hWhQF`UFXahL}VGpZa-wrrc}ATe|ogu z{1Z^7`W}`HnKoa` z@a#whIu@tJFMl2Q{wxvkj=Z{9xHR9$veN))6j zfoTdnbs+UFnT!M2rNfXsOA!|{1TonaOc-)!fbtdMS0JGhm^FJ|kaRBN!(@X$>>uEinvwlcX$_ z%u8r@15m^ihCc}V2C!&(3>!0K!jj99>#^So9PehBdfgyK580^-AQ=Ev!0ZeIAVeZT zKQEjoM4*_fYooFddzwN!rHMq9hMKCXxUDS9S%%T=UzI!!s?)7f#b9i*Ly-iwJ*^;<;?PIw(tn%uKQtdj8Or!) z^ZH9{it$(h&X8J>$O8z=|5-kil>g5()1_`~Yc+KE7Y% zcrhI87|$3Jy^fDkj?QX)V{qTpjL&-@AKVJC2Y8 zYZW~dv-B@V*EjPg22-;g9IZzsj93Vn&DS`d#aX7eT&iaKu3%$Yga-FcT^jYV#2>J) zq3xeNdehFV#eW!H$2Z}UnkR-rJZ&H|7pLE%PsVfA^++o zJ8$P-{^T|Sw0H!H?G8}hvZM`|;=EfQN~t#=d3^kPhDwI@!YhKSJhCHE{nIILohB0k z+Z@T@fy)f0JUGONI1eT!a9%%#=3He7Mn*>P4ML;)1Vn1m;o2}EI|yY!CMm;*%X}S0II^j3r{nt``SY=dTi#j zmF{I2JvVKk1(p+*OGHb`&!5KdWWwIJ>0j%wI7IkT+_8l+I8+>) z9XsjdyDtvr6K;CGjnf55Kb^Vv#7vrA%=gwwWX7oMII-cXyZqKKUfJh+sO&|UaUTPR zs?YIW^Vr_bm(0?;-1Hu+vuYrKZ`DV9CFup6U23|Y8S@zv)37nyHW4X_Xd#}__i~kp zN3oWhy zzKv6h9cy^?jPqxvXt}~sns3u%2L}S}xUjI*5ce>I!VX&@b` z310lYU!Hi4*$Bs*QZOI2!5b#^b`l0tT0BUt0)X7AlfO#n#|P1Ac(MU{u1(OGK;CHlGf zEx`w2_xTki+VWxqkw>bDJvHL&=>i-#=ED zJ(R4hF>u2u&;X7d3-|;)wV3%pW5Uzu_HXJHvTHvW@?b}yqN0LGG6if_RXT#n3LvaV z)`+V7B1t8rq>vGb&~Q^AQUoEe34ubQ|Iz#WHg9?dSvo{K53ofYH^#A{p)NzVSQ%;r z+oliH)~#hwlw~S!LvpnLrZf|Q1Wf|ad-sFH;hmp{q@tVch_i0$6*X%_N}X z9o&eltXNUf0TY&z)Hn|7Nv|9sp%YP42$L0Nh=k=EpyYvJ00kVxTvCAvg}n+8Jpd|H zprTrbDnJL4H#@xn=l5U#s9#f3Ru%?pj?ZZq8I*+4z83|<>~koF0}K={GdL26fWo>V zmV)wfIpsqVBBF=!?GO*kk%ni}g^q>>^<&E?Z8t(dw;P7SH57b)5nHyta;E{qvx+a@&*zXxoEb6(0G6_1n-&&>br5l|Tz#*XwO z;Xi(oUqtfQ8qGoJ7$-uq_GE^gfxJ;V;Pv3pd?$%DH5cpapN(w`&tF7kJKl+m>DmY` zN_>@AyVLlP%bJ~_BDnk>qeEOwM9qA+p)VO)5!Pm6fI3ch85e(AB1r(wQwoM5CO4$6 zVU{1Y_L?7M*BnzMiPs1Ps!u9Oy?92e z_&1I^vZJueTr08WxM|*N$9HdeR*BhcB>BPb1s<6(!&spU0|^GXW&3t$nF>0SN`3x3 zG!RKafX3~5hUe^LEaz%-atSx2t#4`7jt%fL0I1c~)nUj%KG&DV>xWmnIs>AAv$PZy zFu)%y7Qah4L%gJ4a!{RvW)mz30I&brxncF(e4=mRQgo4{xEHTDIia#Q5^tmRu|D52 z@c*;`k)D0MhV32qu~F$0*z#VOv&d$`*hFp0k`{~IiGk5faTnF^7CUz@;mP7ton)p8 z*Q^3Z>a4}NtFBDeSXn=cdD&gFtEbz)?e@GsW^d}eu4!02$&vt&5KuP6Qjsa-si8a$ z@Bo2jf?8}lo(H*9jSWW{z>_ecfm-|XASMJ;0z6k&SI3qy0#!beZZt{HKqxM*Bng#4 z?(Xgwn3$?sTA%_mefw4;wk}zQ`c+Rxr3PFIEBjNkZyGyrRX1B@8wSPWVt0fGfL9?0goLW-UF;46R^4AitBbb^QoZ2wT` z6a|}lt{a7(&_aLW__Ro%LXjwg+Ser^Q6`@T61Hp4#%4n^Pq|v85oDmc4ghbXv+F9{LjS(L^Sb{Bg1)2pUA zIp$^c#rW7w?{*5Sqv6N-u_%%Ww(IFM8h+?c%gSo6{EBN&(=^Y~AITc6TipF9@*!%k z1OL@sFZ+er2gCfof6u%7ANWz!aXe5@-l*FgIbzb+7qgOjD5R&yt2fz=OOednb`JvH z1`-Em@rTZ0Xmd*P=i4oKeAEBf{Sl>!N=UGfOv^KFDZxLf3>lnt|FA2duvf&g`-wTi zOM)Bac+b?>I`cf3A+eNiYJT`{Axbj==|!W3vb9)&I;W7ZR9wTm=#MJbR|dYaW@pB~ zzS~OWPqD2&?#oR%SZ-|Xi5i09sx=}O>C4naM+GUVQ0>vx2VH|>-hTCMXUq$K0>0JE z3?AqB1hpJ$|N51px+FZh_5K0)0wxTfk{+!%bbfkPVfEQ9n3LHeEvwY{s)2Z7VC84? z+w}DB4t=yW>$EYu>wm*EzE@ircL<)&TL>%pDzVNr?vVrF7@}u>~3uM?il2cM37Z(0Y7gbfgXc~D=`LIK_I2IEiW>8*19-wv= zL7a>vWR-&w5}@p;Q078cFrDD!lH^3Yh0R_G!63Ip)W|tD>y~bpAjPU=2m3hbycr_Pzyl6%hN`M6U=(6gQfU7wA~b1Y9502z|AF)i z;o${m3s`CqFhBUHDs`K20448Q5oJj+fwxb71t_;$j~i-0%LxU2pzRRzrNn0f@(e%- z$L37v8hX1sPj5;IT60*dOwG+5PZnHFM$=Zh&j>zjTjPWVF2lW=pb)yxp9P2o+7UXh zZys(~3)$zcD9QZ%k8g$hF$gC|WH^`vFWRn?sxbvJG?+vwzAhh04-8dME)*87i$9u~ zDaw3JY`W8z{NDWNpXlQa1x~RXvLxx}Y|FQ^LPJ`=L`ev+#O6HhAxoSD&XTKGvSL^~ zZ$upL#E4~(iuy&@&Y@$oMd+B95pKz-J~_d$3MXw!b+!JifCu)#+Sa$+SOy10Pt?YuJ0&3nr~dGNAFLFvU|?VMdvOG(C&fa~Gl zG4AD6iQRhpvA4oZf~AWOW}AyYZlBGXPWKj`2TS(n?!W4(F?Lxowbc*34Opv2eCoc^ z5^Zm{v=Yw`t zF;KH042C};x-57h83YW~FwjF98K^1zkv0W9L4>sb*>)Zh=#cy=pVBfDM1ZEy|HIqz zJ&H61$U}>QLqwiaCIo8aTL1)ucrmwtg^8(q#U7?5V5=d;2CXu(Oq7zA7A2sgJ%Uxg zh*ar71S0O`hckF$p2{bqj`#jgHmP6p%J8FlnL6w(_nl`TmKlVMU`zimk4M7XoW{11 z7?Kv%)Nla?BN6e*gm^f}45wpdePmb;%LuSpc|>&(B$Sy+Lh7|I1|${{OkJoSRlOgS z{eu~=xw#oSc@7|R9iVpj7VyXT^fXF)@r#U9P76$Lsy6X*b(2x<1ceBv>Sp3JRRtq4 zQsJ6}*6i#GqQ`NO6Dpd+#^a`Yi`+B2t%P z0wjld_AL4Adr^lN^pp1HcuX{HAv?u-?^fye7PTU}uRI^$t}AWLI_`_E*)4l)`Eg^z z=E2VI9gD9=J>=rWltC&vB3$hAkEQRtUTyy1=2cM_ zdiMDP`9i~;V&1z|^lDy0-an`6al_hsu*CWkcVyNuCuL3R?;h;>T~OBFtly!x5Whcx zJMfu=YT-3;*#!>WSS2SfpR%L6$T9KQLtJI2vwo%ovKXd6mlyaPTt89UDyS~7Npv)H z^ancdDL%?peq>6oWzns=cqm~tnxUCwWYKQRU+sEPGF)8V%f;34$>5aD{Eu#-=w2ir0u(RbTG8F4Xq@v9>FgWuf9<)t*ODU)mJq#%JeSpxM6Vfu(JHe_6#laDVDM!8_z zgR36ouqWj3odzaJLs%}93*h8INY{t8jg3bE%?jVAgoFgAtzl9aLi4Aq&RW>|LdgPM zGa~8+h*0tEIV;EK$mQ=7Jaxi8Gr>GAPd*ycWd&M<{~#ua))-m{0?a^anZ%zs&@gh+01-Kms3Z$R01Z~iw*r{?L>^d9sy$r#xvaFQy(nxk{_ukWP z*lasD)+hh#4K(!jK~ue3+im2Ilyxha<5g_3iJVID+D5VN%axKkG+ji}u9T`kkLn$-nKA{~LQnm^NqMyMJm?zW`f4 znB;)eKvEid3>0}1bYyf0PI~9?UcU^K1d~u`0Lx>4sl|SwE)v>xn0^Xp-V5(}*I^2h zHX?}k1m}vkx8X{pg0eFHGd!(=U;;#zn4wc8n4(wSLhUYFF>~i>4LZbI!2MngTA)=% zhpJ~_h5_0ER7l|PhD;Tgjeb0A)H^Wzl3xD+lpB!r@sb5nGl_^ifG+&2?Is9&BFCSl zNN4ANh!7GILJH*ZS1Wp4H1$MZANHk)a?R<0HdX=mGoW^m=(+il4cWKPx3g`)7zd9O zFhb#w^#6j%8b0uAK}b+i5{`&;`yZJq3YIn9B`{QmcM!c9aB(m@fEwx^xnMh-U4$@j zuGx!+n8Vm|rrd~tm>6bhu=0fF?SsGur`s84S69ss9@D*f+2s=iG?i-5|B!v9V;d{JsHQPA}H#TnQ(QLGzbdt1mxvsq57`6O@>F(Wl-f519 zJY90mdP4X##IX^)Q5k7#nhk^{_uS-o(4xuvj0}2vzp|uAv}KI>)@99jv?xNP#?(Xg zsk!9*W))TUxRd4cNo_)WVZVAvlbT=w3d1HzIVE( zo(oMy=%b#`c@0NJ-oGa=sV#Zxx@}~Dr}#JCL}PTLA=8sqPOUu9(RY`rdIVQpX0G}C^}AJE^U(L;9jx4V z>?z?xAn0vLHD{6&84-a_s{_akN$ULWQW!%~Mxzyg2<$NuJp3A(n(vG&K*Ec_$pYzS z=hrWpya`05t)ODZOQy}7*j}Ep76o7Dch-*|5p=>-wj06*A?Hs`P7W2uyRiR;Egy9< z0G{4w1N39uw)UNS51;}OI|ESBbh06)!%v>P)h*eCd=*yx&*&91;ZQ8~C&Q3y>1$hT zYARELw&te~OfvG!JOK6_`QGRnh^_MJ&>7-4Cnq&wj4U5b$q=hR9jgGV80j&1svt8m zPJtdqz1@56fJLK3MMHyU#R5((ykV8E3%QAzxXNGceyalFKa8N@o_|OE4YcBLz5)2z z&JOmH|5>og4I4X~y^f#NSl=aPH~dgmb{Ci@jjr48<3?ZyIe+QPZj{<%k8DvFD#IO_ zgI`n`sa9!zDE;qCQ)Of(JxhJer%#%U-!XVo83&o|sBzJ1v2(eMeO^hB+E%KMa@&Vf zPrZ{V=v!5FDYi?a!4brdm+{9+)_?Jg53Nib%h^zl`>u;J3&|I^RIP`7T#BYsnk-n` zV+A$!iN8njxOo@dJpOWt?NT#`Ra<|Rvu<|eoF!#MYW6x1tl^0a zRKf{o!Q)pa6*djcaL!|j=`q*1WJg*ywlKMpjjeR$5IO0OwZdd%WDV03a=dYp^iTYK z!Un1^1_vLX7&~l@%tYnHzSS-0wdbT$4Y%MW;1vHUOT$-ft4G%tRp+uInJ{87jhuIT zcn+gPb^)rMiMsnQU-KJR+|_zP`0b}Hx9XhX^ZgI* z4q~`{`zX$JVL!vnf8|Y)OE`yMw?q^cVn$J>ny>f%myx4>+1J%?MQi`}$)JwFRF~?pIqyyq3a`A+VW%#?R|`tIBCr8n%A0 z@q+JhAn34jZlo$^uwMPqZtH@|14f}AG;~Y8O1mxt(*lO5&^+F9adGJ%7|5xvj)UqN z3YHaYtt;$e$%kxgck36}N>df+&nBXMyCIRGui9#;a?T$95Uk_=$I`*#XqJRF6`p61 zv%qWP-bB%2tPWWd@NLe{j#eswH1#KXdIPhwDNedT-Dw!ircNI6f)(M;-d;g-bH>+_ zr&#wFnY3krxB>dp^W$xcnmOd4VeQI%&0?5PAqj%H;_E07-vJO*p8mes=3t_9fDQ9HXm?Q1 z%hihVYTBanNha^^bgwDCMnlE3fcrBMIe^B+^~l*vv_D@7LZ(n5eC7+PR4PVV{c8NY z8}}b2`T=x#^(?E|d#ZQ!W-}=}%>~S@7{mPW7u;^eWB8u$+N9LyrkzLDzQ@PweiS2P z{@LVruYJNwT8Q(}`%IDSGvvp0X0ISl&vm)%cg9e!8nWhm$s z`*V`_s1&tM>EjzKQYT+{lZdt?)cAV)%Hwvt5Ug7n7RU{8mvDwEy`Z8Map<{MP>hxr2oSu z^rCAgqRM9`ob`Fi*n!jgJo$_MD(S9wsMgkfsafQCex~m-$gv=5U~nh?Aqh#AG;N}$ zK9TgN2-lT^^pCuio`-zkPOEaWVzJF6V%5u7tW6Js6gf`R9n&T~&bn`pX z`_}PE{eAY-3*!4h|8@=b>E7%U!BMeE{sLRL*N_kdW_-AMA;Sbb(NIJIB*XJ);Ne`2 zO*AfRz6K`K+;+kz3sFi0Oic1awHjkQGSbt61U|C6fF1_4J=lA3Kjia1(7eP2NWk;8 zcm?`*x1N4-!;O>+Wc61nSPPc8q;cIE&S`DU0!TP*^3XX*n8Rjvt$u%RgdzlM^aNf3 z5^PjxY+;f_Ab20k-;Mftxi8u!Mkd& zyYSLdc4xelElDutD*)^Nz-G8j2TVJ|7B^g&KS1ioct;@V(kAvn!9j+Ey<4`%@MlT0_A$) zZ*0j`xrY_TP;gN&PH}1uM;C#w<}`U@PB67#CY z4qPY&DC82~0)-zB6}#FDa4?yE6A8#`2^=nUi}4lQFKSzA@3661eE7xdK%k^S_t>Ua z?$`HooW<{_m&~kbr{}+d&Grd|*Tljo1EUY4scuN?uZx{;61|ppU;EKG7vAt+7%boH z>$$u0gXRiGIqB<@gLhNDOIW+C&J^4Y`N;`QO2m8HDd zlFQg4CW{?Dr{8g8Uf4Csbaj%0Rx@Ch&`eR4LQ^m0BZJ4n}y8%o)ns`;Ar1y zd8%`+%;cg8#nrze4y*DKuiuK|f3N-HZu@&^J2sfIkh-t^h|qjehKoLqmyxkg(Cq|W zDKQP$SJ@*1o+PA{E8P<<%~f^@uXc&Se&u=mA-dCBBRR?CXP^mQcz2^qarWGtZxZWh zUx`y(NY5iSw!-{Mf0Zj-^_zXE>)$oC-|5sW_Lt&ke_15x5U->-b9v7NF)RSsnHo3L zd5De5rlBoT(SW!PcDo!5J6LABdyiSdG_!2X`_!rAEQYQ3Z1z{9M8pS@Z&vN{QQG(4 zH}Wz6w6%M_-`pRxJCvG2{y6W+Iu7cyM$Ms({N(K{zqgXq-9dME$8BGUUVLZC5MSLM z75PL$d06Qa9G~tu%ur#*6#JRJ&HJ}18PUek$=K<7$~y(}4Q4)u#LWoxC{Q+Br;U04 zt_iVp^o0ck9HP~$XUNj~2~ppk&9yE3TdvFWNOhoSv(-D@?hEYlGnP5ZboCNnY4!DM zIsGyg{p%*I%&1BCIW>GC++Mw!`2Jl5awb4{MN%|{*lQz6JsGTm^AqkU#}XBg@oTAs7q`=VRUn1S`)*Le6lDKE zj~)ka1;`trOM%@suxpT~gJ2DwHvtJqiaI)p?cZks`CRvM0r~eGcmkLA|rbs|o z!D<28YXYQV?eWB1pKm*EK#k+(;Xx!8!P*0IDPd2i^7^$fFr)nb75Uvy5gZyEgpLc0 zL6{oj@C?Hq1ttuS2xUXw2B697wOo=h_5~}%1Zm$xtqCMuKyEe7i1sn3Jj(E1I-BtO zFd^ma%+y~XnGqT)W$#Yh(!zeSqoHpcvLqO(TVZBy{f@Ui;f3k6&|@nvJX@o8#Kz72 zCm%B-u<-)D^lqKtsN~%CUc&8LnjOH8_PLu}k*rm;+?kLgRgs8W`6q`+c4FYe7yjsv zGg7gHtf|aVDP+du1o8m_H})bHW@pi@^P-%- z%bQ`G+%u+EC9@i0Qx1KIZ<#VFPl*e>$OcQc z*V58tQ{Pu*JrbJp>F4GSVWeBBe)3&gT~&wDx*$vDQTM9{GY4DOMkJ-AGI37~f8Wxz z!*i%lziif&xi7NV^7wN-!=pzj0TL_Qnk7`VMBj`q!1q4?_8HPdLt5+c;*XI)%WX?e z-X9-o39o;Mqn zZeM2HD_w92vUu_^z208F^?I+Z#qKiuSs%Prg+AWvJ5#I;=RdcP{xmhLhupMKNi}5e znamHb9k~o{+i#UDpdI8lSKCN<47UYbIg0$NS~U40T;7}^R3hF-XCwBsk9TQEXkX~} zOV*<1%X@zp{<`*EmNhrr;PH_MA2_O6|Zx0-IrJQ+wA{bcD!2t zBd|bau%Ef!H+xf7)@e-ac+K3@x5PD;F(P_2ojfag^K*N1GyFV`bESoR&Y|^HAM;kx zsQIC8YvSwcmf@SC(aW3LO{Yt58X?%R;o^4_0@m4$@Ww&E6$ps2DY)by37HR3D1yp4 zH<$M3&!2luQg;8Z1$frrMDu{(-W1$GFlU1oCJYWUV?2f-4ycx44cNC1QqCagZf^Gq zii<~q$ZC z_!j`B!}Y`m=@;x?8V%K;iQ`U<0N5x3Fa@z&$?Qhvwzf)=F8PmYZ2+W*+7B<9l+j5#2)O!}$-)c1EwYirBIMUTL%jqsov(s##E?T5!&mS*1vo% zuC5?Z{ZL>3RB%c=-jaD8#N5!-L0~R?JOmDW&;7V2`wBZ%MGnl5CAwvuFwq3EFwdAM zLd*dA3%Dvl4WQTT$pt`;=e$a=IWkJ-m{`P!QbZ370Q{nshPJex6@*OO8F`t!^OK@0 zE`H2zOl<6M%ETqH}OZ+v?rv(NWL6;dX)}Wui;LH=M-A`04M5@9_$@5 zwj9a(k@^Vme)v*;-*bMAHc7bz>ie=0lCuMITUr^yK1rjL#Ma8U9ZV8P>!Y8EMphjH z@$znW{`ANT>IHiSw%c}3%gz5xk~_?QzI}Rv?6@b?(XlL!Q_V^HB!uNDJ58dDpwCbA z7O_0VH{N08kRNSwANdsrNAOx!H&##RYA7jbuq=v#hm~A;PqbkGxm{2H4QoD=ST_CLKJynFa?P`6l<{{7~V zXm78`bB&*a} zuajX`v9mg!=PGpl^(FZm_0$+&%C^%B>{6eE`lYO!ohH+ZddgLM+hafL>r?M7zdS%x zp%lg6_vcPkfxc1;B-IdH1<+%JzFI@W|En#bWiAjU0v|YHitn6W1PV6-SB4v(=_*V+ zQmlZr80IQU1xN#0wua0#A7*wdCO60;^NWh|rgq+QhrslxyD@Gcf5lVlK(%2oLdfsh zJExdi_Ql@uIjHpBv7Um29#*nYLuaTxTt4d+K*sw7(QQx%1Go+*NGGqwh{9!mU;$Qc z4W^?okb$ufoZXGBEg*S7*&*%N2RLT3NYqHV$50}GN^X1(Ncw;Q8X^S(s}(<0y@KH>h;F6KV3Eu%DmsivUmQ$iVS4n)6x8j&9ETAQEcRdz z=Fxgg0rx6m1nP@OpJDou0N0@|yFquM9Uln~wNc*I*#N#mKBin>(fCeecieq?7mU2W zipI-}(#y9DYdjCXqG~2$qffc~rSDbwSmFO+Mqarlvk;{*f0rOb?CU$SkHd;Zg_2Tr zQp%<-m_B3~^KTMTS&R$?Uy-999i|JcMR!f9ON43T6>YAOj@G;3p-VeE3$Z*cmt&9T z;-4P-F2vA}&c%Zog@-d`5m2i4`Ys_uApQE&3->{0YDncFeZ&^nDNX0gQEJeXQ7}Ug zr{e!|w(r+8vT$TjQqnQ&GYuKoMeZmk8^1(WdrD0dI@{2i^&&U`1#7F)tP2%{jj3)b ztACLdXnXfOxcJ3YUI&E*1qt_3)bI{hNUXgcqlAUm-0MV{7XG=^_m(>PKC+Vk3Tb&(syJSJ)e7IsQZ{iBN317saIZKyk_OT zg`&!G+&?d-=0P7_h;zNTRCih#rQIVyRk}T2AHbt*fk)`p)^`qLmc_2ZhiRMxZ{t+G z*C#A~T{rAW;3N)l4R)yn-*!u|fBjA?ed+oaj@KK#dmf8zp@tM6)^QRZe*S*>!(&d{ z^cT+C@E{R_q1eCsc zlk?q5K#Rfe?-&}}t%QRWgQBIwrqIHLR>`kpSyx8iR@6st#78e3r$Md(ZQWF=_^mB1aj{Xsr2#|N9Lt#8EH$AUZOOQwCJKC9g-F5LA7Z}rgv-$8nBjR6 zC%$4PyixPTDAs1Sq}CL}FWyqAUr>b!t%O82B-;VeA4-9TbaVluqiX+2zm=Z{X_r9r zP6n?}|KQ+S`toHVwF)ev5mT#o_^|4j+R4w&MFPt&?;}{#k>3lBF#;cBhb1?cpr8Vn zIRI-81q$p3K^+WRxAF0De+U)sK%=4u0)h9r3#I4EZ4hlh;+NqUH|TlZF7FdRqyB39 zr|E=8^8ohZQt;dZ*$2eJh#Ugl(q{5C28Orb zySW>!rl}IHWCeZ<{){a6i*xr*%RCAOZUKXk%K_VW-?QI!W7NqdRndR6bW*x19x}$# zuhx$>4>psDDL>eH>k(v^X8VX!>d~(ce$O#m?m7IMC1cN!7&*k>=5*wZFCU^8kVsCt z)(t{?UHs@hO5|p~9p4W=CCoC{f&THS#f7oE0)FJFLTLLN1c#pQBJ5dA+HNSB2bGzI z2Xc!n&`U_al^QD=o8c{={l)jZ49MS2hrerC_Soueg^-Fx8?ynvaFPcU`Q>#<#l_C- zhW1-^3ywDPn+0W8NOXBV3RCUkTxzd_0>8|kBR_FE7*|XnRifu^n7#M4r)GF~p36?> z5drtS!KfMMV>LA*s{&hNpL5#dr1TV#`g^ImgRKDz=Y8^&R#S~GhVkq{s6`sK1i!x5 zL=PEN+Lwos_7S8zHbiN3tNS@hcr}{x@1~?G;$j3SVI*#%oc!_7(oG6j5L2WkF|DNf zB5ZJo2E+-de^w6CFL{gyvx6VPoF%J%@B7FDxgA&?LxyMr!^kECphX zYAt%Tq5b0~{5be!M$N$7QB;tq*QiUF702~<)e&Rs;eiYP_og(V=$RVtDdMw#SG)aJ z7W3mSbUl8UN7O9VUWX!-Np>CILfMAlb9C|xQ)t|bGCt14YwY_g(#I~Kd2@S}B)`v3Z@!(_d$8`=nZhx z;qb%vTaq~uh;fKh_za(in;S83bG3q;4cNqhu;dPoD5TQCuYmbfSAT!Vt>E`1w^e_t zz&Hv-?l3Ku+Fa7yubZrx15du(-~ZnUz(agr9#ca6AuG0hlW*D zP`*%5P)MKCe|-RSlJ}J8lKrLqmfUb~f$#zI0f_E~9S#G`(;!>m9sn#eYCuZKN(35B zl)r<}+0ZmqKcAre-LQU73R4VrowQQ=qP>Az$JmkB@hbUM?l19ydKjR1^3f{!}5C-<{bayZpTizK|nEG#H}FXONJ-%iFMeHsk!R|}rVF|NDWLdGIW zL2pdr<`Pv*A|SxPyE*L2cHVy~uK3(M<=sytZZ|M(8up@WK zej>~6>v3(HRntcr_ZK&UA+!xws%fvQPSAB#ALY7M_CJDDZU}h*xeQAJQSt{}mYuy< zPb4a$>i<$~{5bU0t;mW-=c{#Po?xE7T!;^zu##3(y%S1*au>O{A~{bxh^b`Q+NG3A zonDc9M?NRXX>kiPs41wp^kc!7!H%CgyNKO0OSzHC!Y0oO8FDdBBI9Uv;@y5XQi3ER zi)xu4A`(Gw+%szHecv8C?n%=Guf^Fj?zQl;O|Ltn3Hb;snB2%>zoyt?#LKu>2zH` z-Lm|A?^4|a{6Jx&YSS5$keC~oODt%Ot(FfkAvUd+V^Ovh@;S6f7MGUe+ZG;m6aOG^nx*Z#t_3_=@81rW9H z2njLaN(6S9t%`K)e-_Xjgijd@+gdWxfn4glAq}y90`E5~|_g;81 zYxkyvf^6&UUSVoV8bO|3Ivk()MUm6PRQ2y6a@hFs_b4x~`CDC=i5vGUjvq1gug@rI zD6XBns^b~Ild6P{c0Zpb=X@5Ad-Cou(<4i@P|7yf49`cy-}RYj<5IX)Pa^NFpCDJM zcbs0&uz2sHQLV@OoeKG0=M@S06{eP!Vl(y{CFl@MEeJ?@g@ys`UtA4^)=7h$1nT(Nz$ zsn{7y{mON>;V`MJ`Jlwc>u}~OrN-3WiJ+K1l7*s$ejOw3h3RPB_Ta`-e#p8v52BN^@f-CtcRwbCI$sYz7bT4luD- zaSBcc3q6(5F+$nf%S7&?QOhDT+dQ(xbQ$`wPyV5-_D-3moP*lE0n3myTf(+~e^9vo@w*0&9Fzr*-W%m4)-%hmnlonoW%dS(X7PWlHGb-MYadSV5 z#(ce$ZJ2R!!FXz&x^(EAP6~ac;lw?4V=P59m>FNCZCzyb5LYhBa1UFZocHQ^-o9V{%(_x*X*0D>+G0obe=`kj01{l;(bp5U`&lyND%18T&cjtkfy>&v&RlWRZ6>{kOUJj}+B7Y)J1OULa}~!a!H*|!Q4 zby$POFhPw7TsMg21n)4|E~V^Q2~8Up9iVlFF)G-;0Br%dw{_5DZbHr*LQJMv{0!o& zz|;>>JBSP6vpi-kKx4t$j1-}pqoHAJ90jsFTU*RfnNENtH@f^{F|^%>NT;z}MzPIJ z!q3LG4`T~Wzu{ZEA#EAOhid~}dLn=x$(fZIhdwCP-mc(O6DRWSaj2RHkBb$KE6ZB< zAWw&1U`Su@m&g*5`o@ne?{@{*)-M~^?Js_cnsaIN_YiEP0ag*0gyK$ea_#Yhxi$|f zqMG+2ju*(r73oOIM7l=&+i3><9K;rblPiDFCh`>5U`f^2i`v|F4dx*1`FBi|%XWw=HJI&d}y+<{y@aW*s`&cJGz^;2#fRZ%-VVeG9 z86vZJM!NUjc+xj7qW66=PaPTT&p(H*HyJp;@8EHdkZ=7rN#*`-Rjswnmh1G_@4h>p z_WYvFK6**J<6I;DY$~(sUeT>yY00hs1Z^nH&_$jvwq))AAg|20pXU33U0($)p6Jzu zm*oP7-?rh+#%qS}-ZdF_(8_%ucHYy+vA2YOJ>E=@vjS~ z%l&mkLEA%=>JkUA(uTQUX~?+pmwcL$n+13e#K=gu1blAbp$By`U?Sn&G+Rn=(t@!p z%q-!5hf)xNQ94zHUgfDnfDZY+wDk13M%RZ$>e*YfRghBdj-5UBQ1BSW&M+JG2lR9z+@a&wDL~BU}#;SIS>cfrsCq&1<3w^ zQWa{_47H*d6va?YSz0`J)xjJJh(!QNf&v3xT`dCxWtd>YTmK<{s?T;1YyYx z|Dv$-ghsvy;djW5W+VGw_NK8<$s=yeNt*Welf<*fbUmqdh^5saxIJ{R)p z>5dy;bd$CU`o3kH_UNwGv*$UAM#DQ31{!v(?`B^V?Q!B@#W@pXuN{V{eNg^sTrwTSf`8XhV(gQSC|wwV@@0Ww^4)t zX*|k*<~ke^Wz0b9`h}d;L~r;~wSfMSg0%FPZQ_Ip6RDE&c8dg#Q79w@c3)O#(>R1PkV#t+xcu# zzWbfWvF#kOTwG=C`(#~sboD6PJn8>%ZvU`Fj6aGzJ-@AuI6z9ClVEkDm+4XiHH)m5k!ZP7b*%)01Tc<{$yNxpUSQFfE3!f)!$slIx78@Iz^uaXwgiCpC z&eRTWs0=LJ*IXI_@BozRDwt)pp7n5G%3r>G`4akc*nw3vA7R4is*mzb1R$4kP!RFP z5b81}e!&VM;z)J>;Ak3n1QxZ1yUkd8VbM{rL5Zo&*~K%uIvib+{>q0O0~X z36wt|kM#rs5q#W)LUmR$@hP$4xM*9wL>f)5ml;fwR_3lN-5)?TdetO{N8AcEq@pkoAO*ctB z4ksUlrLPrc$xLbc`r&u?;?IVw-JwM0Q)ct}>`p(YxmdmQNbYi)?iRMJWA6Tro1A{u zS8G?6uV9_}RJVVedbnG9_F>R$^*OuvMQYzf;ehA<6=i9G*O|Bb-^-)z&qj81VmtvS z5!m^dOcr!8@dfhi_*JI9Oe|?+2Tgk^sSk6rk71d|7bjlu*2S(VVU=e@Q(6pDO zd1}U)Z^5m{xw*y3kJ`wHb&euSt=6%cV&(Zf0r&}A!rW5w!O7ZCGE&g1=E-HKm<|kB z??(O%NFm=5|h;&v~N5-D0QvIVCn{2$L5c!AHf>T}%g;EjDvCtx z{uX@#F)>Voqebf=Pnjk_3Uq}01C8#|y1GQLa-N>nCVTJz7PtjP+jaOKo14jD7sE@o z335mH)xHyfxx6QjJmK5} zZ4B&BpjQb3q9*K%l8s+u6ip$16u7EjC=G8jq|t&)pwjQg7xCC5#KEvivHMoK3KfZ) zo7=&UylC@UeK-IckY$eIa7?i!NB|!f;iv)mJ>;gygO~?&I|!I3OsEfGK8^~*^$lfk z{KBwJui6p=E*MCF#z#kf#KeR*DbDs^b(A6E5d}dFfiNM+di|5hO!70Ndp_rd4c1ez zwcdgW0&V<2e@=W^$gNusY7}Lpw1@aKhKz|2{YJa)P^Uytm{*y^S?BEZs}jYEYfYX`$^F6T-bnrf8#8aXzB7R zTiw!ACD~W(;%)KYGerMgyfhS@3D-ti*f)|j&PtszSs40OmLBLYP$Lu#ZM@5l3l7Ki zuQ$K0M?HjmT;8$mDr>OlbQcync^Nfd7Y55y4VrBl?WTr36mnm~CN9U0OT*j=(*8w9 zbG_<{Gd|~=*zwla#dV}U+&MfDbg=_GWvs@AZxvX#eoQ>rAXXT+<-08E6YmMc+CJM` zRVLUd=KSF%n6dt=;l^P!)6Sat{^R(c_b+hfLi=E#;&BjW~?B^1?Mlb5|)m5Ai#(js+t*zhQ2{t(2 zI*eW-G;Z_Fgu+z9ZcNGRcjI=}MUC<54Vr3wO?}tk7U5P~EopOG*6-4}>{5udgcB}) zGz(T2FonPu1-M+MeF+1Wpq6;MkN7%kLg5RPY4Up@knak>5f7Q#=?2Xv=3XU?6Tq5#FaKuhZ_3}6nglL>h)5^Vd~%C`voJUsXDK(UdbT?M}T z%7f)IRKQw-W7ruSo-iU{Vq$`pABYphz^(x04Fo&@+6l?my!GTQ%J;tiDsC7nVB$A-_8NII9`wGt%Vhm zZ!TDy$4cY<-Dg*7)vnx)E}NLlR?Io3DGIzwwx3esCTTCFB(Cb7l)u8JNtD!+<;S#o zHxVnILTJX7PWpg?TEt-B5|d?nEL%z@;(G?GXqF<`*%u%b%@_}*~b8c zrto*FWmE%p$ByeeSN`#HbM(wQNJXwehlfnRTRiwUhZ2V}wRH)RDov$OjEwfYe_50q zerb7DwwYj{d~WI|QTz#=@OaDlw;KmO{vt2?3rV|ip6?#vC!e)N%M~%P_zPDr{TJKPv+5L+ez6^!c%y_y>Sqxr zaPTXc?D}AQmEy`^QLjcq859uDF(6@whIIh2msQU`er#CmfDL`UiU^n5=_q)sh=QA9Qx+f*7LDb#>4-A~pGRMreY0^oeT}xq#(s@rA%bc$m=!HodegA_1Mb zqT0+Tkwc#pzdlmL8`IR%3Y;O{UOXLjDk%!T*l!BnJ6#OWEuklIvJiO_heiD6h5nMH zvH{lqoo`QVPRtLrxl?nEc{??hO#}HEms~FV=-!- zL~6;6QA|dd#>=<4sbSEBE2F5%$DEe7WyalMSJBcdvftdb)`J379_Wq_&b%889l!y3 z@Xs4Crg;<3^_rhOHreM)t1`5DXm^TBS3s9MHae(aGoGeg={VW_a zSYK|gbOeCk6J8#;SRjxtGSE+VB-o4G%IjYjc%mu<*F#gny#lp1%g(mLLAc7T@z1SXKIw%`XK2=pGyKFNzs9#FmlPstR9UvPy0aRVN4M4u=2 z<}Xa#-`mH+Jpog1Fox&n=f}ViHmZtJ@WkBC#|rgK^Y80Avg%17B3N}(nf%5bq=LG* zh%f4NV_k0iGN;Xtq!AmFRkrzJR23E>!cIDzkkDo{PiXYtu6VA7);> zc-bt#yT04+yBdoscrsWIav=FZ>q!n!R4Ue|L|7`)u|n;}NTM5E`nW zM_sCdpaMPF)}WPytSmDlg#+^zacp8@yS~26_&zPmf`6BIkS0Uk$NXE3hDwT68J?Yy z`iY%ilcatxSKSMc>I+80!BeMi_&O6Q&18}EB8k;V<+Yr!fWvpw$<5BVDfK}X#rOAi8Wd5S^I8$#f>BF&-!G z`!NCNSTF7?ri6utKBR5PP-EP~fB#PW^&6yV_Cbr+!ZKM5$yJAV*5+K&IV8#+*PH6( zzlR0CPf%Q$eA`cV_Jp{B^S||NBk)Sx!b(ejl@cHfM{4WZXIoMM?pl!l3kwS)JG@qKA{$E$t6el-)kh*-NX*g6+SgMETJzR-z$! zaw1nLeejBAs(~{T1~qwbL>mJ^(F+|VI9Z`3I=Va_11BideV{o2qs0I8f-t^?Y7>z^ zqFD^uq|X1AOwNMjKoW!RuwK0b1r{+o0V?nIGh)|f^jL+HSllug#DY7B69>pJu$qAr zLX)TjGDPS&5s?ivIH&;`;y!7xeI;Ty><=SkdCxlnT^ZE1U=RZMbVm;t_>brhgrFi+ zD~bmJA`zSZd(GkvgXMojU0q#3o`tLvL_R``G4wcK$F5(9)MnnC%M3p|A9_=1IrM07 zWbJYQ&;9015h&)3Zs$lmJUqiD4gLXWW3Kykgv~eCq}sO64fRLuMWvQU#3wcREUkA^ z8Aj_e7aF~E!LbuXfdse!oGRyGh3zCOUY%>YCk@9G*O?WoX!a5OOzrd2D=~ zmr!SpT+DoX$YiOrx=>F1YR69|#~>;uABYB-}&- zdG2E#9Y0m4RcgOFeVUt~lu{X;7o+Gb{E&&2wfRb5&1I>#D%~ZPh1c-QWaw9YwIrIz z*tf<=#%QP;$KeM-FSvS|yF#?UPZ{WOR`T{#rN;(yrjZzeqtPvDr?DIq(haQ9~T zOIDNCuv8`zO3KywT5-xZFnL{^A)$Eip{gqC`kE43j^eFGo|_E1j&J%X2zWgQeRpI1{81+uo87W=e>`O3R@vKxk(%*YA;{1 zfu*k*tPt?#0<$@6z!FX^96|Uk1>iY{E*^6yGvLnSlo3=Fz1I%ze`?Hp#3}Y>s*;F~ zH;N>>fZ9Gdt&QDC?)ztp^mk+Z+mfdoT;lu#rftbcuFTh_x1uHdHBmAtW}w}BUi%s- zpAzSX>ivVGYaK?q^A&$+k>Wy0JRFyXf$~_)%(rS9GAH;f{Ah=B{_u^_qtC+pp?>XKE2IaKC{*f@hQ2w0To#tzNZzRanVE3<*6SQ#mpG{VYNJY zt63&lqBZ{QTZb4`Tl8D;$|T`&+dpSMW&|#GbH)jFv}wk z`Y*H(|A!kYV;2ly1RHMe9^E(~nd- zpOBhdGhDaz2RPJvHZiNV&+kt_rkg^} z;}RbGYtGr;{{wl7N6|&45gWU`xtc`3EWybs$jyS0y0G9C!K%gWvbo^zCm z1a?s@PWVZtj#$%3NQ0@2lLWrS(pfULw#;CegfA_PGK{g;-J4S3`+D=R) z-v2mW@ssGtC6{ohlSH{UMLk*<%VJ1tx&2({R?B4$xktGymrS{fa+%zfEZNLln^7T` zP}+2JixQdUR=@Z9?f>nu@AkR8FR%CW^<7HZ9aJj-gaQ8vU@yVcWLGjY-ypUD)h4WT zfoZ_5^lmlyN1*99Ty5V02eNP^75ahoBhK!ZE=}*%m@q~yIx_HNz8wyS3JWua%mUlD8-Q;B-^mRJLWE4Ee$tE)~}pZ zOdw&WzaW!L3)*rxFWTQ4cqJC~lhZ4QJ_d)K@A~kt{=cFA<74?g%M0D?FS%q=e~I~> zgIGH8mw_2JN1*`b4rL@PA)_->Q+D$~B-nk9Qx@mWa$Z_k_H*8J7k?4+3w}~p_gI3e zDSp#EhWHB2A@PEoX%@j*QYMb*Q_Z3j?#Ym;tC0JOFz>$9I?icWwa2w2Y`K|S@cW~s zj&pM-b8Pr=$h_3^=NP-yS0?WR+;;U&@)w|BW0>A6N$^#?$8;{@N@i}Q}WBcteSvsuQfPe5{TYbI+ zOFY_yIIPo#oGfK(cdfRx{|YK2(kRDPca#Iw%ja;Oq>7=TA&bwaT|aU^xe+q^b`A|x zDNy@P??yp91f>2H)4ikO*O02vg@#E7z+1o)2T*JiSdz-MqTz(rz(Ov53Nj5ra|l8L zz_eyT90cu@;^G(x(-&h^*Ws;uiK6gp{GT%pn@K;f2M%SZ@wGaILQmEB+A0Ee8;n%$ zkvb$P3LUBhQwmfOJ}ec(>AJca4tb71+A$OEL>D za59F80jM%V4Z1F5-Wi(Jklw=vd6^AC4RAD}#O1cJ$~(Q*Iuj%BsKby#XGeun`9p{}`D=%!Pzs08d*Wd>xInj%l z4!HAzpU&*z>8``MM%NaN;H#m8X-?m}Iu2G;+dsQ+8{J*!sfQ3HJWwteVLuvYw2!nb zE5!fDRLwv^A^1XlZBDNer)i@PZQA)QQL-kaG^+f=P54D|3_Xe>d$E#S>iNPr^1E=NngWl`Z#u86Q_I^y zjbs@>lC~j4sdlEv1(}G%cDQ?ZdPs_$lR1~5ppv^A8MuZ|(lxjB)+L+iO?U8_DqD~z zpj`-K?f>@BKj&DYOwpQJFWIvUQ-pLOlhc-!@;a{L)W^X>vrNgvIM7uUKPr=9aBj4f zPYzY+>14;|s%bfKyZ9?!z|1P0Q}z%WU0h(Sa9ifQ2;roeUDoBhm2W)r$=_L#V>Y5D zR=*`y-+Zm!?D;9&A^2{-g_AaTts^@BnJv9kk>iDnJh zjBK$LYPl95tBU`?pfmhnQSHuSIzPHzeP8GxbXB%##gj-PaH@iPN=9bp!qVWmPeddB z``8_EcvnAHe~@@UfDJH8OTj3!8j$*6(wIOX#0@6wMU&z7g=)8~gEDY5wo6C=KS@9U zCU5*DBE;kI1l2E)kik#`P*j2VD-4V7535Wx!xFX(1SrH|Ac8~w3qwy}Q~}cvPzQ(` z{|#cT{G(R|gc%rSf@FGjXeo*!Aed?gUTToMNKq(J$Hlwrj?T^W(Y!oLzlwbVoTAGR*g zgqnE6Mn8RDKoBfL)l5aM-*Pf2|Fyo+!OVvUV4i8#_g4KOjB9(?oT>pa%Q1?}dHJRm!_!qUA=sPwwzld+OHGlbJVO))IK zeZUNZ*=KyLW1v*Ts^F;UPnHp($G746Ty;WXz}6z-t@@COVq95~^_v`*i>wu@H$5y+ z8D>+ip5IKOuD0qOvIk@U0N{?g8dx6yxK(?@ zmM2sG}oskQyvc@nJ2{lL&Lp z1_qZL!dFn^gKMS0@mrDga1#+eS^I2CAz@h=JYT-0LzjM(W~gm;VdvqWsa#L~i+8Kr zBbLE*WPpb}7bJJDqpm~t>kTAdo=lg0b1TvDF$gw7u%>4>&6BdghfZkOReL$Xc-@0e z4LnJ)sza%es)x@Yv7#FcB6WOySL`WB^!AeD;m>W?)W<5<*Q1W6OYOgd0n-ft){u^n zy7@*@`UXvLLklH&Cxt+ZvGkFw8d|TlbjFpf!iucFuFJFO(TbkD74YLk(@usw4=4XSS)T$b-8;nP(*Vn06D+% zu@dZe$=p^nNuU^GWmF^8kB6~7Nw{OGbT^IZ_Z=d|kGi6nx9t^Le)yLGd1H|uq{>Jy zh@?m?qdcBP|9Ij=@h%P@C)WjpyxgoMsJyk^?S>$1MRgpQNj}hy_5BqZC~@Pio9owI z3|S}>OI+*$Um*Q0AT^YAFhLNd(wsm-lMH@LU?-xVkon|Pjc+{V9S2Sh%ySK{!}#o5cEd@CMrd487ZhL zQ7|_)^`rX_=}8C$arf6+ki&gP2o>ku2I}X@|0FnfTl7)b^a(eZ@EZ|VM1MjBTX)xP zP7}CsoZUX7@drvrT}3`w$@Ef@RJ8yJlEUNp`o&fSSK_=fnuFRTt(ZNd&cCYulK7>0 za0laoW5(SMf6uCDOh>=8zKO_2><&^@`2-IY!F-%wo3)%2{^VPi!ObU#aRKckg zq&KQt=mUA88*^aEuag%bTS*4Pj z+Kw2Jj$Wx3_cr%GnLdMzgUo};l2#TZjQWB`=ZI)PKS4CT4Py$omf7oY zeBylajv|lR$TWL(ICP4&*2;Mmv#K5xo0ZHK^6Ed=_cb0ebkz%~d~NJl(O>pRcmH|* zgthZ+r=7_^lL#C2hQP{)M&zyr8I{h3*+|oxpcmwYy+4ztq{{q^nSP3oy&kLn*-=Qi zjo9khdN|2w5oHDKU~^W!N}{$*zp1C^pOph3sUJ5=;H6XL=VmXom$>C=sF2gF*uqLinL|FGjcMr#oUR)bimHhcD*sBTp2-7XIK67z%?JAq9 zBnxz{%e+P}?=W&y!)c`P?k71nfkwS1(uVTSK^_$@Owc(e>4CA89&c?gt2xGL(w*7e z^=A5ct@)v|g!YWEk5`d|=&tV{2bZ%8lWZGpUlo2E=y5Kbuy<^1s5rLTpngw~`rUOU z(PG#_yyfIexqXE3x) zrXAUC704945qysQ5&H8|^s?>z)3Lx|*h=Xpe0geB=aBNy^C+LZmXiAp74a5{2U#04 zI}SAl4@QuqyvfL^USJJ797zie@5R zDFhUfekL>R+Hf9N4tCbw#K@h8G20KLK00g9 z3?XQ*PnLe>DWN0P?^>d%N#gI$u((timI)xQV3KDC-BP7rUI(XK96doi$yT)z#Ymhm z+dp!5$#my;!G-c~A`Y6*4;MKbN=h8C>*@5(9EJ85;BSeoT)R5{pSGHQeiEKd(vEu0 zSZal*xfqI`s4fi|t^MBk-ca6rLfchnCsIlrmLO#-6>F(z8NFdKdI~f5|9p)+->y3z z+^7&zv*K=1YeqzPAL@@5&kXUv9jn1F823$=j(@xSLSMF9wG&QR)GRdb1zx#4D%~Hy zQ^B<1X*Mqt@G7k0xM_3ub$AB;YzY$X`Uu4Qr`guObh{e6u-9c6%@FSvS3Td*8E_@H zkKbKJcSlp=SY#fOGE&PW2TGoDFOTK)XQyuDyD=-L(#z3BnBgIK)2n^6&d;P;u?&4X z{TKO{G7(QlA4Qz1&ORc)hZXuJG{}|3nNyNnGO8o3y%g56zSdKbX?!d~6rq7LJvKW& zo#}MD-eMq1;#>qS^5ZRWM(ewE0e$=0y(WwM*(XF zUOCsWJ^adrJxti!`%qr6Ag#@ZXEN&sHnG~O>1zQ1!JGg05Evve$kV;0b9Mg5Ci4w>+6pnKSo4EEG#TsTwEL;9^!B~JRW~}d5OVbuFp;{ zo9ZrdGI5=)SF_VsW22ae0Bk}e#@`+LCJFz0<+7?2zq@n%trz#L_q3+sqUb#}H8mIv z4hRSk5fK?49zOmtip|czzRNg+r?s}W8X6j68*477e_nj5b#QRl+uKV>NXX94wzjsO zo}NBAIXOE!J3l`^Jv}`>KE~|tV_H9B8mciLb1-R%7-TV~=PPD$9)q61Y^))XNKAx3 zCOaK7GI%kK#?4N#v9aCU7dtw1T3RqSH-|euIygAEy1KfkEV*1>+Su5bot^#t`?rRM z#>B+L{{H^<_I6ZM6dH{lA0HnZ8=Ie>pP8BY_3PKl%F5{I=)!s}z|^&rNtTEn(2()HAvGfc z0H|`+!HNcfv%7gI`Kx`F@kF!6ntUO$^ zjsfjLZVcb{)?d$SYJ3p*q3^W0G~~%{-qaRc*T_=SejX;5_<}vvLFK!PgJ@xP2K$ZU z|1#$3!dE4tsA5PnHtji__FcZ7efosBwW3D`MT>_vHYrmG24kjRFDhrTrf$ zH9LQCnfa_yun{&6#2}1n9BxVh+z)JfUu_+*bZ%L4xAUIvqDTxLyM`9i=04UF{V6 zvH(||zUCNiKC%npM1F8C(q~K<(7!4vrdvx{dY%-WU(}e%_4T%T4C5y$5ssf9G*dce z_DA8%C7iZ9Loa6L=RY%c^XhV^Srwo*RoV0cq@zNnqP&yF%1b~0dhP^0Ob+zHqi@|wt_J3FYD zIq$?DFzvTro+aPoFuETfBSvC;KjLqmyx(@J@zd&?n{T#R`q<~v@HZ4|-Rmt_h!>*} ztn6iPVN)M%J+^O7Y-mLJe;d%QD>~9}HaFCC-pyGWA2&ej+CQht;;us>=_fYLkhK~^ z(|(J2@UDsxAJU1kg@Xg8cW(n`@6IF_(2`3>(|0rf*#!MwcD2R0Hx59lW5%kq1}Anj z_}-mWdAjIFc{1+Ie{2fmG}oW3>C{OPUzD2S^vK+c1ToA2XMJCxM88ODZM;|-J$f4u zXXT@uGAQ|lXAqg)m6GPmVQ+BRfbw)4gL8{7D{hoXa-%hB=q7qI4b)0M8SubIe$yF# z^7JcHn$Q3;MFu=pO|E6udS3Q)1#KX>D=R@X zBGDtpI-Ea4K5^8R*WaI&S*3UV2X&{0U1M^A=B*L!+NV%KbKb0KN)E;8WW*a#6}UGa z$y)=@eCY`U=1{B0I=2xPq|J^s1&Xlcj4*tfdCvqq=Blne@uC3b_yuztxKuF&yd-3o zm7rSJ;fIzB$gx{ZHcBjh@Z7Xf9@$E zQauBXnxgm-81NODmn%wCtk7x7Y?F$f?iYOwohI@kSls-`wM5CpAhLywujrMzhG51L zZ+I)>=nfH7@76lE8`n)XeUM>fQEdgoTaO6TX|(9+njklj}8D;H%;yUGXP%^pe$G^P`3e4K`LS>!A*4l zqd~V65acn62mtFa5sDQ8pjsz@Qi;b|w^OgN#;V(j>ZGxs5Q4D+UIS4ep;Y5ngOWsom1e8< zXauN%f4j1;$R&33i}PV>6>kNk9V&JpeGF9NUWLx? z{hdZ6SYZ%`=coozb|~AJPVxEayisGwvzp*o=pf@gi5JSQ)Ms*i6+Y@`TuD>rLz-iU^QP*AJbr*cpBt0lb4h4fLYS&qSr!HI*D1l2ZNs3z*? zyR~XTc*851pl6ktIR)N;CKQNuh*N`)nxV&NM*GLP5tk)*K$JW3g703p=`;VG)?|+7o()YbHWX|i%ZJC!e&bwt@I{WnZz)djL zP(wzE(Yu-x6U*}`VbN_kc)D82^gZ6mRsjKTf#JpPF^?~=?$^W|jA=k@ND>~cj7TUe zcg4!%yW*`_`stdWkN6t1Ox8w*?HKM?*OCrXas{z+JjRum$Jt%Ts7cXLaT1?!eBtk` zEm`2p@(LwF^-#^g6PPwk$;gqPS!CadE7-lT8Gp+blQ1P`ILp)$y`?`twU)AQM#4Fy|C@k$>y9?~L1LhP{#|=>3)qFxhi1<5aJbw6A#pH(_@cEPg zAz!-ShuX*iDg%Q-DI<1E8R$slKu-OD=1>})dYx54b7*`M4WDA(!(kU2<#AI^my6K& zGnfGZJPahjW2dZtHwi3^)vn)BYVU2gRvuTr=RiCniZp|G{<|;|Fdn@1o&8a(#z zARWRhJ2!2MlXdCeCiVY7S7O3E!@|PsWh2p%yRNSP!iO=Hudgr93H{wzwZwF)b@EDY*%wOuZYt;L*D9&*teRNqkrVpWo=0g}tEbHW9M= z0ELjzkgF%W?B~QxbB>q0XN&Uqdtt2H-_&zHxL+>p9b#wX1GrYS*ph2L*~C_<&Dtf0 zVfk`$ay&hVt%=<_1B4tRF?#b6RJE&Bp9%bBn&t7k8Lx&ahIH~zE_G_~Yg1c!y`tMr7N$HNOMQkN+MX+=KRe2BMXCL42*1AZs3YHcpL46% zv5?9(@k=wNhwHVTxLivh9=C#BBi}GS$M2%J%EPhR?8%2>W%Pc^u@Iq zZPj+GYXsbScVc2suQLF@nxAVWKS)Za%#c5~-~Qe*)BEmaysT7TL;l%ld0@c^$(2=r zka~dwd>`zGu+$OwnpCuVe7qMCsC~_o_uL08Hh_)T%g^--v|L))FjURA3U)j>Ej<%T zAhgO#D+|N>UbtK*Or|ke^*2g~xFbu;#IXaZ>bB?2Q_@@7Z@AUnIx>J2#yeS&o}S9% z6BGWW6S7h}j{-srz^7;5%iizl5>|zHf!#&%uz{l|i(4IusM^$L1#6VaVily_I? zCw_Yeq4`enc_pF8?`+<>;tSie9Ch3_6?%(#~>*M;~G!-eju?N{xL{~bT^pf8mEQN`Fm0h z^`$+U&}A#{bMYCa&Xtnl4bJ+9Oj`cW`&^1WEqLeW@TNpFFx2siCwQ5apZDv0Ox|h# zejzKrbH@fprLUKG2Lmd7JtW+CI{DszECyUrN6m1Op;-9^sW>_Rx88As$@crZa7V_E z`hOdDCNr&EuMlHSYht-vh_UpX{Ip7`OldUggAV=S{ZMk2WRWaTA%zlr^Ne8xQOEKLwe8w*^b&C2DJVF=YxNhdVpQNA61DD*fo&wVoAMk zbxeFBP&eeRby5}e7@|R`+1EE)nk(QPcic!vLf?|zjh`Oi;~f18dd9CAW%T3{AjVj| z3X$h!Ie_`{rqSQCM!nW+->CNHE!IZ|@;H-tVzpF+CBc;7qZqX*&IG5a@J1unwv)FOJ+$^|cIsf(-CRGzzO*&>lJQR)EPYUX2`A|5Ev z_ikcR{@=&`e;o%dh4(%m+mWmFcyxod?59k2R1dpyXVy|@C$SlY0!CTLvniv(;E8Sm zz3Dg#&2(Nr2eBO7t?%zxuwNfEi#>$4rq9>r>ld)q8NOj}30);56qZDN)5$^$V?L8qL%`qP1%RS$$;uIg&~dQ>%GEB35B!S!1e_ zEwALVX|%nrN^G-v@o3s8k2iXL(!<$x)h!0ezfdnsEV z`x^py3KA9*0Er1a6*mwTmJ$X@iHZn-B&0x~^PLli|3$&w)6Ur;=>M(|R|lEBQDFV+ z!OPA;O3hi{-uIcOpNE~ZhvPHPK!B*o)4-=u6lHy=DiwIM4^UUu23J3`e)-=3e4kzY literal 0 HcmV?d00001 -- 2.39.5