From e112aefc2b268acc3d353f2938a3bb85bf0355f8 Mon Sep 17 00:00:00 2001
From: Jason Liw Yan Chong
Date: Sun, 29 Mar 2015 17:42:00 -0400
Subject: [PATCH 1/6] Feature implementation for Issue 2841
---
lib/matplotlib/axes/_axes.py | 4 +-
lib/matplotlib/axes/_base.py | 58 ++++++++++++++-----
lib/matplotlib/cycle.py | 108 +++++++++++++++++++++++++++++++++++
lib/matplotlib/rcsetup.py | 29 ++++++++++
lib/matplotlib/stackplot.py | 4 +-
lib/matplotlib/streamplot.py | 2 +-
6 files changed, 185 insertions(+), 20 deletions(-)
create mode 100644 lib/matplotlib/cycle.py
diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py
index 20fde55ba981..047d0b31d2f3 100644
--- a/lib/matplotlib/axes/_axes.py
+++ b/lib/matplotlib/axes/_axes.py
@@ -2876,7 +2876,7 @@ def xywhere(xs, ys, mask):
if ecolor is None:
if l0 is None:
- ecolor = six.next(self._get_lines.color_cycle)
+ ecolor = self._get_lines.cycle.get_next_color()
else:
ecolor = l0.get_color()
@@ -5677,7 +5677,7 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None,
nx = len(x) # number of datasets
if color is None:
- color = [six.next(self._get_lines.color_cycle)
+ color = [self._get_lines.cycle.get_next_color()
for i in xrange(nx)]
else:
color = mcolors.colorConverter.to_rgba_array(color)
diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py
index 1e4f52d377cd..fae0955894a2 100644
--- a/lib/matplotlib/axes/_base.py
+++ b/lib/matplotlib/axes/_base.py
@@ -29,6 +29,8 @@
import matplotlib.font_manager as font_manager
import matplotlib.text as mtext
import matplotlib.image as mimage
+import matplotlib.cycle as mcycle
+
from matplotlib.artist import allow_rasterization
from matplotlib.cbook import iterable
@@ -137,7 +139,7 @@ class _process_plot_var_args(object):
def __init__(self, axes, command='plot'):
self.axes = axes
self.command = command
- self.set_color_cycle()
+ self.cycle = mcycle.Cycle()
def __getstate__(self):
# note: it is not possible to pickle a itertools.cycle instance
@@ -145,12 +147,7 @@ def __getstate__(self):
def __setstate__(self, state):
self.__dict__ = state.copy()
- self.set_color_cycle()
-
- def set_color_cycle(self, clist=None):
- if clist is None:
- clist = rcParams['axes.color_cycle']
- self.color_cycle = itertools.cycle(clist)
+ self.cycle.set_color_cycle()
def __call__(self, *args, **kwargs):
@@ -229,12 +226,10 @@ def _xy_from_xy(self, x, y):
return x, y
def _makeline(self, x, y, kw, kwargs):
- kw = kw.copy() # Don't modify the original kw.
+ args = self.cycle.next()
+ args.update(kw)
+ kw = args.copy() # Don't modify the original kw.
kwargs = kwargs.copy()
- if kw.get('color', None) is None and kwargs.get('color', None) is None:
- kwargs['color'] = kw['color'] = six.next(self.color_cycle)
- # (can't use setdefault because it always evaluates
- # its second argument)
seg = mlines.Line2D(x, y,
**kw
)
@@ -245,7 +240,7 @@ def _makefill(self, x, y, kw, kwargs):
try:
facecolor = kw['color']
except KeyError:
- facecolor = six.next(self.color_cycle)
+ facecolor = self.cycle.get_next_color()
seg = mpatches.Polygon(np.hstack((x[:, np.newaxis],
y[:, np.newaxis])),
facecolor=facecolor,
@@ -971,14 +966,47 @@ def clear(self):
"""clear the axes"""
self.cla()
+ def set_cycle(self, style, slist):
+ """
+ Set the cycle for a line attribute for any future plot commands
+ on this Axes
+
+ *style* is a key to a dictionary for cycles in the cycle class
+ *slist* is a list of mpl style specifiers
+ """
+ self._get_lines.cycle.set_cycle(style, slist)
+
+ def clear_all_cycle(self):
+ """
+ Clear all the current line attribute cycles
+ """
+ self._get_lines.cycle.clear_all_cycle()
+
+ def clear_cycle(self, style):
+ """
+ Clear a cycle for a line attribute specified by style
+
+ *style* is a key to a dictionary for cycles in the cycle class
+ """
+ self._get_lines.cycle.clear_cycle(style)
+
def set_color_cycle(self, clist):
"""
Set the color cycle for any future plot commands on this Axes.
*clist* is a list of mpl color specifiers.
"""
- self._get_lines.set_color_cycle(clist)
- self._get_patches_for_fill.set_color_cycle(clist)
+ self._get_lines.cycle.set_color_cycle(clist)
+ self._get_patches_for_fill.cycle.set_color_cycle(clist)
+
+ def set_line_cycle(self, llist):
+ """
+ Set the line style cycle for any future plot commands on this
+ Axes.
+
+ *llist* is a list of mpl line style specifiers.
+ """
+ self._get_lines.cycle.set_line_cycle(llist)
def ishold(self):
"""return the HOLD status of the axes"""
diff --git a/lib/matplotlib/cycle.py b/lib/matplotlib/cycle.py
new file mode 100644
index 000000000000..6fe0d64cc286
--- /dev/null
+++ b/lib/matplotlib/cycle.py
@@ -0,0 +1,108 @@
+import itertools
+import six
+from matplotlib import rcParams
+
+
+class Cycle:
+
+ def __init__(self):
+ """
+ Set the initial cycle of styles to be used by the lines of the graph
+ """
+ self._styles = {'color': None,
+ 'linestyle': None,
+ 'linewidth': None,
+ 'marker': None,
+ 'markersize': None,
+ 'markeredgewidth': None,
+ 'markeredgecolor': None,
+ 'markerfacecolor': None,
+ 'antialiased': None,
+ 'dash_capstyle': None,
+ 'solid_capstyle': None,
+ 'dash_joinstyle': None,
+ 'solid_joinstyle': None,
+ }
+ self.set_color_cycle()
+ self.set_line_cycle()
+
+ def next(self):
+ """
+ Returns the next set of line attributes for a line on the graph to use
+ """
+ args = {}
+ for i in self._styles.keys():
+ if self._styles[i] != None:
+ args[i] = six.next(self._styles[i])
+ return args
+
+ def set_cycle(self, style, slist):
+ """
+ Set a cycle for a line attribute specified by style, the cycle to be
+ used to is specified by slist
+
+ *style* is a key to the _style dictionary
+ *slist* is a list of mpl style specifiers
+ """
+ if self.validate(style, slist):
+ self._styles[style] = itertools.cycle(slist)
+
+ def validate(self, style, plist):
+ """
+ Ensures that the style given is a valid attribute to by cycled over
+ If the style is a valid cycle, ensure that the list of specifiers
+ given are valid specifiers for that style
+
+ *style* is a key to the _style dictionary
+ *plist* is a list of mpl style specifiers
+ """
+ if style not in self._styles.keys():
+ raise ValueError(
+ "Set cycle value error, %s is not a valid style" % style)
+ param = 'lines.' + style
+ for val in set(plist):
+ try:
+ rcParams.validate[param](val)
+ except ValueError:
+ raise ValueError(
+ "Set cycle value error, Style %s: %s" % (style, str(val)))
+ return True
+
+ def clear_cycle(self, style):
+ """
+ Clears(resets) a cycle for a line attribute specified by style
+
+ *style* is a key to the _style dictionary
+ """
+ self._styles[style] = None
+
+ def clear_all_cycle(self):
+ """
+ Clears (resets) all cycles for the lines on a plot
+ """
+ for style in self._styles.keys():
+ self._styles[style] = None
+
+ def get_next_color(self):
+ """
+ Return the next color to be used by a line
+ """
+ return six.next(self._styles['color'])
+
+ def set_color_cycle(self, clist=None):
+ """
+ Sets a color cycle to be used for the lines on the graph, if none are
+ specified the default color cycle will be used
+ """
+ if clist is None:
+ clist = rcParams['axes.color_cycle']
+ self._styles['color'] = itertools.cycle(clist)
+
+ def set_line_cycle(self, llist=None):
+ """
+ Sets a line style cycle to be used for the lines on the graph, if none are
+ specified the default line style cycle will be used
+ """
+ if llist is None:
+ llist = rcParams['axes.line_cycle']
+ self._styles['linestyle'] = itertools.cycle(llist)
diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py
index 1fdf121b32d8..93cdf17c1c32 100644
--- a/lib/matplotlib/rcsetup.py
+++ b/lib/matplotlib/rcsetup.py
@@ -234,6 +234,24 @@ def __call__(self, s):
except ValueError:
raise ValueError('Could not convert all entries to ints')
+def validate_line(s):
+ 'return a valid arg'
+ if s in (None, 'none', 'None', ' ', ''):
+ return 'None'
+
+ if s in ('-', '--', '-.', ':'):
+ return s
+
+ raise ValueError("line given not valid")
+
+
+def validate_markercolor(s):
+ 'return a valid marker color arg'
+ if s == 'auto':
+ return s
+ else:
+ return validate_color(s)
+
def validate_color(s):
'return a valid color arg'
@@ -278,6 +296,14 @@ def validate_colorlist(s):
msg = "'s' must be of type [ string | list | tuple ]"
raise ValueError(msg)
+def validate_linelist(s):
+ 'return a list of colorspecs'
+ if isinstance(s, six.string_types):
+ return [validate_line(l.strip()) for l in s.split(',')]
+ else:
+ assert type(s) in [list, tuple]
+ return [validate_line(l) for l in s]
+
def validate_stringlist(s):
'return a list'
if isinstance(s, six.string_types):
@@ -529,6 +555,8 @@ def __call__(self, s):
'lines.marker': ['None', six.text_type], # black
'lines.markeredgewidth': [0.5, validate_float],
'lines.markersize': [6, validate_float], # markersize, in points
+ 'lines.markeredgecolor' : ['auto', validate_markercolor],
+ 'lines.markerfacecolor' : ['auto', validate_markercolor],
'lines.antialiased': [True, validate_bool], # antialised (no jaggies)
'lines.dash_joinstyle': ['round', validate_joinstyle],
'lines.solid_joinstyle': ['round', validate_joinstyle],
@@ -637,6 +665,7 @@ def __call__(self, s):
'axes.color_cycle': [['b', 'g', 'r', 'c', 'm', 'y', 'k'],
validate_colorlist], # cycle of plot
# line colors
+ 'axes.line_cycle':[['-'],validate_linelist],
'axes.xmargin': [0, ValidateInterval(0, 1,
closedmin=True,
closedmax=True)], # margin added to xaxis
diff --git a/lib/matplotlib/stackplot.py b/lib/matplotlib/stackplot.py
index b42ca98702b4..b04765fb62bb 100644
--- a/lib/matplotlib/stackplot.py
+++ b/lib/matplotlib/stackplot.py
@@ -103,13 +103,13 @@ def stackplot(axes, x, *args, **kwargs):
# Color between x = 0 and the first array.
r.append(axes.fill_between(x, first_line, stack[0, :],
- facecolor=six.next(axes._get_lines.color_cycle),
+ facecolor=axes._get_lines.cycle.get_next_color(),
label= six.next(labels, None),
**kwargs))
# Color between array i-1 and array i
for i in xrange(len(y) - 1):
- color = six.next(axes._get_lines.color_cycle)
+ color = axes._get_lines.cycle.get_next_color()
r.append(axes.fill_between(x, stack[i, :], stack[i + 1, :],
facecolor= color,
label= six.next(labels, None),
diff --git a/lib/matplotlib/streamplot.py b/lib/matplotlib/streamplot.py
index 3708afa647db..b1ef343c78a9 100644
--- a/lib/matplotlib/streamplot.py
+++ b/lib/matplotlib/streamplot.py
@@ -80,7 +80,7 @@ def streamplot(axes, x, y, u, v, density=1, linewidth=None, color=None,
transform = axes.transData
if color is None:
- color = six.next(axes._get_lines.color_cycle)
+ color = axes._get_lines.get_next_color()
if linewidth is None:
linewidth = matplotlib.rcParams['lines.linewidth']
From 0ca872d3530339fd4817807ca28487cd8a698390 Mon Sep 17 00:00:00 2001
From: Chris Li
Date: Sat, 4 Apr 2015 15:45:40 -0400
Subject: [PATCH 2/6] Added automated tests for cycle issue #2841
---
.../test_cycle/clear_all_cycle.pdf | Bin 0 -> 7099 bytes
.../test_cycle/clear_all_cycle.png | Bin 0 -> 53591 bytes
.../test_cycle/clear_all_cycle.svg | 660 +++++++++++++
.../test_cycle/clear_one_cycle.pdf | Bin 0 -> 7111 bytes
.../test_cycle/clear_one_cycle.png | Bin 0 -> 72233 bytes
.../test_cycle/clear_one_cycle.svg | 660 +++++++++++++
.../baseline_images/test_cycle/set_cycles.pdf | Bin 0 -> 9160 bytes
.../baseline_images/test_cycle/set_cycles.png | Bin 0 -> 61682 bytes
.../baseline_images/test_cycle/set_cycles.svg | 902 ++++++++++++++++++
lib/matplotlib/tests/test_cycle.py | 51 +
10 files changed, 2273 insertions(+)
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.pdf
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.png
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.svg
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_one_cycle.pdf
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_one_cycle.png
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/clear_one_cycle.svg
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/set_cycles.pdf
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/set_cycles.png
create mode 100644 lib/matplotlib/tests/baseline_images/test_cycle/set_cycles.svg
create mode 100644 lib/matplotlib/tests/test_cycle.py
diff --git a/lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.pdf b/lib/matplotlib/tests/baseline_images/test_cycle/clear_all_cycle.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e46c94a24909b96b611a7c0ca9092555e0cd5a42
GIT binary patch
literal 7099
zcmb_B2{@GB*O8(@wopiKwj|8H$ZA#jZN{d3%
zrnIOOg+l#Ed-(2shtl%z`#s4p4jHxMt^^A{VAy_M>fEmFJL9lMj5EdUH00ei$+#JK=1VKdFmhl-lgHu*d0B!Z$aEvVs=^k+2x7Gb@PAwB*JC)**Q^m4c9n1jr+U!{G|}U>x+_
zS$u9ZFA(Sm>coANC{!B;YXz7E6!{1pefNW5_&mz5Ejt1z48ht)0I986f!rXV|M@IV
zh#(ZfL(8Cw=L>i&W+Wyq|75Pymg!{q^&bc4ButXl*x{RGlp1H>Bd+bGZJ)eAaf*CH
zYv*>eZRYp*+~5q$z51~RD|-|2zxcelmQ-Co)S~&(`&<0^#-ZL*SL8d74qi&3db8iJ
zeoyu$@4uvpUAn6E)Z&&3Y+wMuX@z_=H|Ki9S)DqTRk}a>7AyZ&9}iCzLA63om+uZ54iH*%-pQ!
zT)t#R;SLkwgc%i69B^ASm)>XBsa7wlpB|iQL~>|)In_#?l@<}x;~BkPOZ!D;ql}IF
zq~aUC{IZ!2noF-2kh^kPI}`3@i?lI%
zI>jj`_}zZV14h_t{mhdej*K_frw|h@alOWV`*4h;dp+_?Hia)+$8ox0I?DzZ-<$VL
z?)b92hfXpTOS41Pc~uAJeo#1Z^!4N^Rkeea-1YrIS*o*dE4CbV3Ns4weSc3Oz=d6x
zmvQ)R$GO=j~)d7&sI?Zk&eC&3HXv(Jr~*IJ!5H
zYHljO_BnX4-g=W`UL_;n$y3+r%cOpMg>nMh(OaMXiXdmtcW5wJuOGZmt?+uWes}Xz
zZ>p;&a$Q%SRJL(5C;Hx$wT5PenM<~%5ri2pGnKTauI$PQ_bxIf7jB;9uKq
z7UJdC=1P+)Ppk_&=@*zAzWC&WV2o~|Q+JqiWb?8)Czs4Wh+mq&(WF^dx4hXf<7ryx
zyi6xY@yk;Cs8$!lO5YmHb|(eAKHxG}Cw^A(TC1a{dsBL^49)Jcy&hEcaxy!1-HTV*
ziIewEe;*@gq)n8t-j=XeUB|P5tvQkP(y-P{n-eYvjZL_MDw0D+Q?R+&cdEBDe
zi(OCOU0}UEv?RZ4Vx-nfvMWaZiDLF;lS9_l)B)nYmQ6vf)M=%T5uZX_sbcaQV}k0N
zWLHi_3T9qvl5N@3+yCU9%K0iyZl+KdBm!ByW?h=2Qyx&ti&x5j67%g5XjGkOBj8>}^M(Y6}
z05Go=u3q!3dE@)Vs8_jb^4iU6g}dY=sOB#JiCpnX{?VsW
zt>b;Qw*Kvb8E5KJ^qA>ey!NWixF$h1KbOj0@j&TL90}RmhcM=~m#Uyb&Q9M?YulOkMJj^hsB^sXK<2HE61RZ7yrq*koCe*h$^$uF
z9VMZA^YW@vIUHb+$^!*m9UL)hYHT=CRp~wPw(yB#4rj$CW>w#jlvj19bxPD*4}t+{
zZSYq8w$Qi#Kb$u%pU!XLtOzlGR)WFK&3yS_V(+tm7Q7F&s!I@;y1Pv_MDB!mdg8H%
zTW1wJhY{}U44B-yTM(|uIHtCktMou;=2M*`2WRCWa^>?jJ}HvjkMLwC1l^>JS8cAW
zUeI)XgPn392i#$Yomcg-P6cm$PeRT~|1TZhK_g(OS-_ZEe=GY+XykMBs(CXVY%XEWjgPsl&{r2Az0V~yIU
zH+QUDT$X?T>1$@;rnh1iU($yM%==!yTkNOb_PP3)*2Rrqxk@+eZww9HUcaX=u(k6(
zuQs?ieRnH2&4+W7`yr%N>c#QavyYO+_Q>@virT=mp8ZvLv?ZkP-C#$|@RyFY=bP*T
z4CdAczb#HQvgeq5ZTfcko6MW^p26*nn-ygqE}$gZJP0AFKQoJNS=y^`T6r9h{IIf5+0^4|K_A85@|5M`hLul-RWgd=E-!g
z#P}k~F~a=L2?vtiv~JkG3}ba-(Z-#dRkGNhSu+kyf$-v6;4ld6=tSocw}
z%vQJ0rt3Y=hcuo&*PO3_IAvkBZOgo>D?KE$lDQrrzjPL
zFEOdUv@`viX^EIcn*y)Q>$FCovb}88@<+;Vt=`37Q$vDtvNvLU7p1BsG5Yq{9a;I&
z%hLa!X2&n~bHe98iY;o!zw=^!tiL;XRo+*a95!I&S|Xm
zu^KyNNLMvdt}B_Q5EZu%tkh3h=A>7pztv*0Y~iY9nnh{(6S-pi+q+L~9Ix8zeJK=
z@NWIAidE`}CxUiUg0R%nd0L1u}*kJo+Z)7WtFU*t)0h>M1(LSr)yzBf;a)
z`;U?at}!vo&4i892L8a;*yQ?e$szq`zMRt;iWd;6@o+xw={38Wtqn8D4hi?&O*a
zF5;;wHfsjRVNSR=X9&vSZnJZ?@3^oK=Og{-&EAF~g2Vh>8=4YNk6(MdZ~59g4qrbk
zPZ)P-Fk#{oxjPzKUVq^5-=?nwkeL7E)NYNkR(PrE5R6Lc6!FzT1&eB;hr=Up&1EVK
zTY6pFE){>E{>JQAPUa@_^Vr|1om);n?
zD9n7K
zW3+&tIi4Za*r}Xg$!~gF-njMS@GDG%*xC(Nh>6j1w>nq(>^V>SuPr?B{B7>k+SuB{
z)`n4=ceqnN`+?D)O~qbb!qFgooBk+7rxdzKxAY{6dhVn
zl&*0l=~bilF6Kh*FqyADPA&KON;lLq4tlnilvTqM=#+i@O#bmGz!e&M6{^aaKiu)tb{F*}8=#!@u$IS&{q>
ze?5}_VXlLo>b
z{lQE5U-jn^9Uwr93$|QdumC81T~ElTZX~>&L
zCE)T9yr{5%bzw$=JGdoVAUcj0v3N`mP&hDh=SDI)7%Z$oI5P!2Hd-4n#^K=J1ApIp
zpe|s^nbt9G6n!bAyW`C84#fm5h`#uDh)7z1AW-S_e207k*0$A
zkS3i*2d!ufwx}>fDh9TY2`Cf<3fQ@DE*S_eq5*Khx@ezB0*auaK&H~smQDryf^iC-
z00b1RO9JbX2|zJ)IFE#oK}!S5f-MRJh(|${09&{|YBZ=ozynY$sw^^?gDPc|IoP6}
z23I1%2OLxpWE+YGTL7qC;Bq3skVkCxos_5p7!;8p0ExjgGUN(y4mpBuFlw&R7MKh(
z$_PqY#w#3-P?GU5}^AI1XY3w;JOpl^%1f_WWNTwhvf-8t%2Ov>F!AJlzFdUp`00kul5{0oCcw@40
z5Gw|6h=d9RQ6^aIkJ-jtUdZe*N{ZvLf-xX0lQAG@j{HDOBm)l$M!t_h?|?sqGdc#`
z8~DX9V>tTncpy>w4Ua$o8vkW3yafC<2KMtWV>pmp{WeAfLF-pM0`50@1R{vtzu=MJ
zDf;Ue6}l_@{g9VL{GC5C+{eG*5lGMxex6I9!L9Pk7@Z2d>*p~d9%%j7F%sO2zu=LH
zzwu0@fy4F}JTUdQF%Uk-%oXsM>Y9l;+2E>Be7+yEb+8}CEGzeyZb^jvUoASTzpa0}$~Kj7f7;;1S;e&dm`J>!`X
zwSpzy9Z03amKE?#@O)?c=A#H%hf33SQiBF(
zLeA$23Nyc4DH$2JTdkfdflo%CnO>5))D3Pak6qSqTEXbuT}PaNj-}tdslqSo>}NcD
z{gHkbyT6H9<}n>C%B#Jpn2Y1NT-e5tF5Hbjo>OhL=kI?vVpQYQb-F=9@;luD5%%D9
zp7Hj0CCS-rseavJ5JXPF%IdxwdNvA;z*49s@%?t6^9=#3#ojliy#A~WQ>e(4=+{w{
zBhGj%`qJ){GsWh;NH;y&o{;d|;}Ck^xjQ%3lkgyjT{(JwccE1-Qu})GZ4E#17xB}@
z?4HE2J+*%>hm&JFQ6=GZa6g(+()7O2f48nq2smj5kBXCaM@=D^u{A-&kV%Hv{~TZO
zJ}#!JSf`v#N{ar&a9-2S+z+*63LMAFb5D3H)%A}%5!5UkR>j`BUdK=T{bWJtpM}7
z8^cS$q;(hY;e1Ve926XlkoH5pCry}I(Q-5obm
zD1E2U6%RHsNIvr9O-D4-Bh$7}0^b;O+>U5m`3r*W@!$T;(trGu*@?Bj-`G7EK0n-T
z9V?IE)d{G!Jmr;cAvwg
zq*NF!X{6~+z!fqNzp~MzDK9+S3hYY{EVw^gXXF)zWcFn*&dV`mbD|^Rol8{fPt&7n?T2xXb47v%N^`6`%gp
zTwk-BJ>75q_Ow}iZZ~yf@u{CI2SH~lb?285r1Ki$a-i)tNSbik!>uvok|#8bg_Bhk
zcC@W$(C9%qQEhpJwz-DiKup%U8Gy`j_ex|Fr92u!~_51N<3gKoA`M$QI)xxmwK`QE*UM}7w-ME?s!70e>bdVGa%9N9wfjP{A_r-
z4OF^~cXg{jvrH3`;@C|-q~zD;`w-URjm9h(_t6`7Q5p9$8ZRobLgf&ChnvmS19*@9
zU_ygk@(%E)%J{|FxL>$%i*@$DmTNH0>V(s3PS+eFuV&8Akmq=|`h`ndS2yJj4UL5%+^w&Quct_-JZlBxQ37J<3V{Y*t)0ZD
zSMuZ&sotFbRa1?_oLsR+rj)j$W5wZ!4z&H$Z>r9r4o4UK9^)SQ=ur~5n)J4|#2h#2
zaNI0O)V0Xmuqo|CzHU7Kc_Pp8xh(R^UQg6|cTK+_*4!0sug9zNPTQj%y);$bQ6&Yd
zDCtc-y%cOT2En2?y3&L2cksWRon4p7#>Qu}sMN!w(_auG=lx-r~CRK
zu9G^JDnX7jevvA)Qie|cN9NT-)8n;7KD+F)Tu~Co&cD_2NvSDeeA%8w_v+kCZ)Z|Z
zTjhp-mav8H=+#nP3G3!tJl(<7tZ3zU}_
zuQKxLs(KbvTf(l~+eXb~r^g_stKAWulqfA;Uim!n#Bsqw<2qP3-x@*7n=JI0W6XbO
zI_Q};q%i7Gk+VyD1;4%rN9ekeGDCh|H5$45muUZ_8qeyDg6ZERko*3ZAM_G=_bqj5c&?CN+S+tS
z<2jQOW#Q&OH0<L8JKkbe3UGkXV~`?l)4`HS?`l1~*)-uzpKW98^0
zUu@~Ik@R1`S+4VwT=Tc({cU32ZawsJ(^dW1b@BiUsjexH)b=OH`}^G%Fu42R)%S`W
zS+YBL7QHwWj5xDC)OR1^bS9E{92;ga-C8Sno!{?&CCx>YB1+bo&9XkjU^N~q--?={
zc30`wVfMaxS0;scj#hx6%!u%LBHpZjw(B@m9fSX@TSPR`vq&6f|BOB|8bP8YffZb1
zZj6UV*~S<&Fz-d6fT4%jd#u}V9A`#XcHImG6P}R|<@yA5!Atz{nuxX0Sw9AqFMnXL
zu{-yhThVhqtyfnqWR0^&Xw5Sl;-P^ljimO^cgvgp>_0)Cw+M&(pX0)|t)O3UF+#(1
zu?B0!k!NirSqv)4{Z+5N&qs$AzG7~ucHQDDwt89C4UA$)R2LfgvjpMG&wD?VH;b4e
zC0fP4##g#rFec=1sP0Xq)MOHW(%brn<>eGiy(MnXr%g@yY|dbQh~@siS5kHLAXTjP
znoR%x%||WmIRty-oSUocd30;u*LYSY$u=#IDfT-!^>IAragFB{<~u3NXbyJB-jsIN
z7MqS{$twJKt}s!hu(#a&C#u;pyPXv8!@*BbKQcQEs_`|lE@nRvA;W}J5>HxD)h69NcgBk58@OLTt|&sb)e
zpkb9zn24HMmRC579~n)B!Phqr!2Zl$U3L)1rilh}y^zRWy|Q!&$K}=DHIe0u^hej(
znLYTzz^O(A+vyIzz;p!iy!G(CxTxFc#2Y(1Z1gWRBpbQY~PxsI59ucB9uGQ?
zX!ANYoUKEge5@{LySk4{qUE`dmoA10%6*K_DsnqCQiLh-O4=<_5ntSP{x3j~x?U>|
z)}zZos=q&;-$MTjYyH|*m#49EZwifA%0Z44pSsUvd&o5FJ7Dfry4mHp+MpOOkJ2|f
z&*!pa`N9}v>F){!N03Q6r$l#S_f}V$d!I$=8jZs1;tizF&v?trYiuSs%;pv5ZbEKb
zYT;2ezsg^=cGbO`KaAMLV~K4SciT25QTLGef^=R{S6^AS8y}?rb2C_xX
z*IN#We01gIG4iXav0jHiLl@P^Xm*9!ID%KcjTEIutN8TAIIvK$Fhh3xr48cb-6B~Y
z7I_~c2ISZJm1}LAllV()$O#@lw)Fw7>J$3FDC39ayB7ypDR)uEekb>~^5jp0e{cjY
zp00WN@i-XG|40sSK#DTO`AhmS7HHvG%`saIeuRWP4F@)1W`?*I((;@3Y*v{E`d>a`
zO7ss4Up!5ptO@K+1Ym4tB={+nCP^qx{jB9x7`Ml+&AOKBqdlS?Jb+$OW1Lq`91rG$
z@^Y)@UTZ!g`7jYrq8dfdbGrYz;C__STjY=G-l{l|BR#$WF}do<-S
zXjFeD-x`DLq@Hlt_N!bX+EtJpv%I5M{NrKV8oQom2UY^=eVN6n%z;WIq37H-+RP`L
zL!Tf*HP)EspBx%6k-xS4f4}1Ec+l{hPUz=6PmO00>Pg;bbt--L{7L-c5NFZ@K7&pH
zrM|S(=+2U#A3V#7o)A(brOQsilu)%U+$YZe>tPxrv`wk9kayfcM3)9ZXLYBoZr
z?S{E($1iro#rQtV%_7yFt++i`SmwHSZ@cbl!m?ye@a4zD<@kq{nPn|45^&?rTUTYt
z8lgOIb^9wU$kSQxlc?5*-jKWHcOj~SwHXy*iWB~>^84K$5qZGbq34kbmHnDV62nSg
z5B~4XCrS-2)zjr3PGVyzax-9MW_lS<4;CXb8mi2Qd+u}YuE(jM3cOsCdI<=f5Uqm9
zl;}=b`)yc_^_{J}6^lDOIBH21CAn^PocBnaHgC%}y6@m2&cY#2oDEfOzyn>kJF6ez
z6BT5L-1ECk?NZK?F$e|_1g6v))*BqH_O!)YMY;_Q7c
zF+iQj_d$xyl9UwhGr8H`U_L~R^)S}ML7a=lW~^#BWm-T_2xSXlzUgy7sZ}T7cv`hl
zkl}E$yVWQ3EOIwyLMh$@n7T~py>X%X=bO#N<#_%V=2C2H?+_V~5J~3>?UOKW5QjdA
zJeAW9?WCyS`y^pg2wz)K209Yk>CV>QRN^rq#lvPDdnWlGUT5{hOJi4PxmX&UADo6l
zVnQrAY5DPz_+N*Vc&Ca*k>Sq3iS4Uz0<3kbA-_cLH1IZ4pN58IKQOYV+*Jng$DU-%
zx&(!7SfXwsuM7A4cGCVbEh=aD&Q$7jp60;vQk*ha471%NPPGNDu;pHFoQ34H{g{B9
zg8X?!d`xiB%OH3hF{FwdrWCvpnqk>RCDsLEPx={K0M)Iq{BcO$7j8W%mxYhui)K?|
zNw=CXM3818=ltTfB7;=vdp*h38IM&vUFZCIh|?QAC1HZzZo`xfnoVA|J{4Y~?lb>p
z(7z1f0m)Dz=hfxZZwhJmmiRfJJ1%UXkt3$(+FPTT{Yr}$#^)Zczv8zN0#q8oY42PD
ziY4o-kz(NZ0D;QM$RFO;(F+QCp}cJLw#Y!xvOq^u^+t1M&ECpsK(#&7nxV?#o3dW)
zSd6@L&DFt&Van7xZ}BfNjFJgH9B%{h)Sbm`ani(fmhc09biOU#qfeK7ogL#W%*h(h
z+8&PiYSl_q_J-K`g{y~zd(cqcO1Cd7#rj_D7%J{$H
zQJ-k*U-_=za!>5f6lRK(d@k2mu1;6Gn)wKSeQpjWVzD#PI?&Pbsi7i4rePzr?E`qP
zk4+$3Qzi4`&w6q{)bRpGQR_n27ay%R**@sPcZp+T@tlF_!P_%ERiBW(I}ecA{;
zS04PP{)B>MwIo(yJG#aa@+HQ0BE`qbvd??---2YwZJbng;(?tY|GVr&Q#%ZEU1n7
zw#Y~xF~waycyl8~JO-lN)<7c+dHj-tAy8eeOd8ho(bl^C7G51d2)3%856Z|AKXZGP}%
zr1eO^>HfrHPJh4orep9p{Y>fVt&z!^Z7)v5$PcnLsK^IAnX~)5y~5yGnV~mOe6#+@
zc!+dxup{mdbviD1x;WOI7#=~ZC*-w#7k;?Xb!}g%L}S(X!wvkO4v?SreN{yMH5TN5
zi|$-yWJ;$;b2+{#r)a#AvnkRk6=I4)tEb{cGWS6R5mr)Z&GQ(?mkWjY^-FH&^&6o+
ztyKYkqV$-nVTJJ!_;JL*i=_BIISW0G0gc*^$SDV~K6-F5I_g<3DnZ7s1W-Q<{dEnvJL`t3#$uMP@{(W4^@*AXh0J>4Ph3QWj0@_Ep>Cd^
z3+IbsU%!qjN3NbWqGt3yavpi_sZzYV*yPQ5!Ep5pA?0q-8tb_)0afNeBm{(x1qW9c
zfde~WvPREk+l`V^y(pgZwe;g*A@jwMli4N(tAY)y#-$cQx!ZX!dLWqhUFyoW>%(c+
z*t&aDn=4H6axu}!OH=7JS}1|sNi$3&a3@hm*Fw@$=%H2Y^-oq0=u$rP5^;w-rFudV
z>hZQa!GPrS7(~hA)ZgeaZF5XuVl=_H>~2hxQINkcJndvi5SJ((ZvXQrXg>FK(v2A8`68(eB!wg{r=aWBp)zr*?&hX*8Y
z7N0#=XxjoXu65xfp}~$5dygsJ;Z7Z2pU1h=Fr_LevL$eYMQ)EHW?&*=$G?dU9%qO~
zz&|hE#3!m)uF_ztEp;sxFw`Z5TT#Y}7H?Q_Xe0d^LqzR+2WZ8^!x!gb)KgFB%7x?N
z?}F!WTaPR%nqrTd%M9~!RqMYhN?JKhifH)JTGEMzXGU26!_mkVV|vlzdqk&C3b~u}
z%O{_Ng2-ZE_4e8r)H2)WLt}xMENh*&cz2U*mC>dtsA&wl_2R9>WpK+KH$yhNh
zt^eu(v5!A`8}1QI(jGxOqvQoT127S1?gy_N&5v6M-TwS?
z>w_s_>Rhhk0&8wnW%*jJ>`pbTGXjt
zrc^sq3?89J^wS??{fUAs4EQBb2yDk%D(ytlJsSS;bPt!Bd-Ke>Dw1wu*Ldlf@viak
zVA}xH|B*?NF6H{aF0fqyHnruG(h&TKT528Lp2*8>0EoVxQ_fpVr?73p$U91rbk0AU
z*F}Sdt}CRqSjV&MzN_^xWmi+^dj*&JZ8{w3T$F~rPXp@;u;%G09P-9RtwMVjMK!)D&h%Ab3mL~W#8;ty$|yXfXn
zO3*>g%Z&@(^^jQ0aWoOglW@ARDn3`?Tk)Cvm*(E`w3EDZaAr@&db&e>&vadRT2<&V
z$PoG6=%HxO+yMjC`ir23T=a-iBh=rJF
z?2SPU#s@1NAM40_?4es|n3F^-bT+3Q=T@4;xG=y7^=OA}I>Qzki
zrXSVt4O2S(c09Cp+v-m01AgQHGFqvrLlvEnW4!g7ga+Mj-#jGbyxnH4+T|nZ32*bX
zCBi#ZT%0l_TZa(gcTycAu!O|IUuE2S&u=D!lsS>`RWbE;7*=){N1jEe#F)YSORX)g
z*MV`oKB93#w@v;5F6ESYcbhYCkG|2@$SXOWF3SO;q3@4qLp*fCZ_D&lJFtMn*B~)j
zyApWP_2sSCiYBvnq~iFqnAHUXY5_x2XZ^g${eBtMp*MvshSM6E0T2W$@rj8M7{gnqr?^W#|Mfh*dq*H%Q7c~nJhM(_4
zAPEQz5esYE6#*gca2}?jV#e^I*3PWU>gsYjit_3U7rFbY|7B{#dpA-tGv(ifuLGwW
zc6=R3_&{u@jGvPK{=I!}GWHejwi7U%?^&T?D0{Bcov{76#+>Y-TZu1vDvuoA5&Ws}
zpgVh|hxjI4OZNU`%~7M}dk%EsC$fEo#*=c;8;O^6WUVj>l0`T8%cocUv?u>pU^3wS
zeEt<4+cWb%QuQ=~61`T*dx%=cd)U($CbH$OCG0VE_47p2Cx5H+WnT}i4XlZZ`N=>M
z!u@R~s60;1-T1>pcQ3Hy%)NTzuk(vm>{&s}ZMKzOWcT9GT(2>!+S1YtpAz~SkL}Of
zvYP-{z}A~v9T3jjcOl0kMePi~2tLQi;i2F$^4?HXRi?!6#MXB;0pfE9GuTiU0>a9L
z#~u<8a_rD-Q-M1zipRY_EQ{e&^R*a-?
zZ_Q}(I$b?9GaZM^yILpyAxML5j1M{QyhHh&KH1(hQMutR&*8Y--7ZX*?SohHZYBK~
zgqmL7bVH_in4u4^yS?$W1lNuIHSDUaMz)3OoW28YdDCk8@vR1Mf;a^;N{&}rwGfPM
zdrx)7HUDz;!RgDGz?KX4Yk$RKfWS7}GD#iMMagt)BfEAkj=irA+b7aQmr8;`vSC=X
zTk61{^B*YFd6!8cbGU^M8eefs>o3vBOE|h}YBZE`*559!9we%c8{~xHH0Fisu%E|9
z$McU-C9v%q3H)14V|U!?9(|O)Ju6^-vLz@cR-gkZ(C&km^P}c54<+k8D6QsZ;pG==
z*$T%fg<|at?7hH_rG-Ucc}idJusOW0de&ki!p(u_nvAY
z6beavCD}>Mu2&ZsJ(X6J74O5`jfSi0H#2$e5D%-)cgF=Cm!=9gFsza%wG*bQr}k2e
z+};O>N8@sDB_jbv9v9b$$nvJJ8f=j+e?SEV9{e)=&JwBS9HKdnUDdzo4sQTxvTWAn
zW%i^yI1f2)jm|zuJYA+XKC~|LEB>iTFSdL*@{Mp8jRfDUR~;aTF#Z5NJ5cqPb*iHm
z4bXwE2uvmNg0Fp544m^@YRM*g7d`{)3S08o#f^Q$P966h#{bJF^~a-fM7MxG8#82U
zL(uT~8BPPcvhL_u{Ufcyc=ttW_kE9(hqQMR4_>9d&ad~@uPZAPycZJ!uUC$#;&gd+
zjv%-RHdrosmV_Y@t
zpQzU#s!{+jVeDF3__?>c+jiI#BkM5>uRAuQJ|-hwY=}Z$X`CFoV%U1>igbv(6Zc>E
zEZT$a)t{DD$s5A=*w{Rt6`DTH(O{Zu<3=TMk(ZaR^aLjIQXe&04hTIeGs=wcVavOA
z-R{JQsn%R&d}+6~E37Fb3&K)1!W1@@8-sU&t!^{l8a?r!>tNXrz{K7|M7)?5)Dg(h
z7oQEeJYm0_8!KgSL}d`=bB=tL)#P@0*qKB!IOPqnXmn(gaMf1Fx2Nuit}=rzh6;)-HPi1e$ZprKGU7WD5#`tl=+CIpDWP
zFpy~)pjsglDodla1Jdqz!}-3n1+v8?kyxA%~d
z3H96K*uBJ#APcLhGx56QtA}hi@k-rDBwdK
zD9u{ihbQX9tnpfgzbd$p$`Dqr&rAxiU4usR&RhLibfToXbrgU&heWceCdx<-RJ|=~
zGpv>KO*zmmdM_n}A+97IvKh0`n_C||&*)9;fxTy|17~d67dAr3&9U-W`;J^W&Pr3@8L
z-Nol4MNXoR6p3=YT!#lkksGs_YjV!3?^TmR#SgbSmUDFSLUh%THZEw!>VnrH?7_O@({2TVIIRD2^Cas4BVZut1nV9RnNHbzMH`3
zaAYQ=I6UP$fs(=6u8G^(`p_pkPq;hrw{PmooR^CyPDv-Ac$nNMGrY#W%b=jGEY}w=
z({M-IOR-_Np}vGZ7{c;OEDC-c45NGvoNMb~r^oNK$=k&X93J?u^V6cApFfRZmf6Q#
zVr?;v&YTr)r5gopP#BuxeHY%rX8WfEz3TBZJ&rJ=n1-^X9x4dF<2;
znb-S113wL%sT0(JMBH95IXIrh7ch9plvzJBTH2hS?QCU`r_N}rS9BZVYy`KEl5&Da
zF$6x1Nb&ftK`vt7`(R^d60`7<)*Hzyrwgpk=i-&YvOnlz`jdFgp2b6JH?V-Klh0&
z!_TOgX19f`?g|?tw(zUTfcuO>hbVP3`G8?yqFWR+Hyi7_rvS{
zN5A4a@NY8S0IisZ{)p5QB^0Q6>RV``ICH)o#J_W-4Qf(_U9g@*9L86E*d=Or2ALBS
z$+I#8g?tUZ4k@pHAlHGC_Pu*eeOY;iWNJ?2U0g<~_YNRW2NB`wle9%E`+?`!Z&g!@JZr^xNjtW2a12jcP~8RBO*h1cNHae@8iPCWF(>>Do?
zlv~qzfdj<&!C<{Vbgkb&<#Zk&Yf61A?Ug`czt-QZ2x-5-%AMbm@X%snZhKJ1C@}ua^-NG`0U$sQ3Wy-TN!&i@L-PeP3AY
z%Fo6_URY>?rTb#{W?|)?Pc`L8{uOr!CnO6@P^Wj!T%Usx;fo7%&lBtModpj!aRJmf
zd1XhuVie6n{3n`F%8dYpyqZNKRjG5d?v;scp2d4lG%=(IeS(Cg3eRDW>#T6!_t3aM
zi0X`T+c9mKEN5}IME~&jpU?J}_^#C^0)pCVIM2y>SDB?9eN0U3BC+r%YCDC~Ssc93
zx^cb+277Vuo(%EcjC=FY4@A_9>2fvNT5^XODL}LWxRp#2cQMG^qvb;%$$Dzp#ghSJJL9Q&GWOLF(W>w1)Q8YI2Uo;({
z`mm$_p$iT6rNjOt=SS}E3DR%_|WUzc%xzAb!BpmMLH+3Z
zMTRD-4JJO!X6W~ly#0B9An0I=*r0L!;-qbcg3;J{GM6}3%&rBA)VfE(%_tGOBly(*
z=X;Vhftz<7kN?m)73#$7GooA_4e>y-RM#MeXiOiD)bRFP5Z&DMvt`3v1H%uUx8%k-
zSMWWWaprsJG?-}`US3@SeHXy^Vg6BazV#m^%)^ftsg5JU77pLm@^Nc%KXZHtH9NF6
z9_B*-;YPU~^1y$*Eo@<`ZR<>llZJia!bJWEB>_R;q>(Xy1a@N(R4!jgqpFD@_EK*Ed7_jk`jg9Qg@IO^
z{dHwQ!Mxl$4M*dp3UOW>f;!UmlA0S2d6jiAM(vK>;5Hs)>o-@4W7{Y{Ue8syIGZMH
z@R8go2M%OKY3a}5dd#k!$fJN+oGu*}2=zIC6mr9B>&$vO#gfnaaIb&se}I32--X02
zfk&BPi$i5hyUqCYC{A@5W={gE@xR{X6L9em?+>&b6^8IX#I4RN0r8wo`)L3&2a7up
zX_xNx+k{JlF5l2H1(QU{5Cc#>9o9H=T3UvUs{)_-Q)XDwhn`BFYMqVex#Rx$`kcV_
zd6)B|syu}&ObJ=26rVI6|B8{p6R~Pev)%bfQ1!1JOA}#stjNy6t;b(WZtsTw%h;
zjT&l)m+KeP0Q4)*Uem+n2CDjKU~ujluUxS!?HB3Jv>XWPk@l;Djn<=v8XNDc8Z-CD
zEiH{#lZ!sU>?=L^1F~x~W6?8&ryJb0$BE7RXk>G}lfqQ3!fNlV?@kVDQmp-SXPFI~
z8%X=n6(6W~PuFCOlVc0ZFo{B(1Bu|kcj2PaMVu0yZ1Re+-=H|U+*<1)7O{pkJ=4eQ
z`AFD2+caC;hkTnVG)=NGmE09gkVMITGN6&^vwsG19$6^kKf#MP2oo&5M8C`p
zShoWDy*Y$tSA6qUxl841
zKQe#
zWK=+fHAOl(^Kjc5WBC0BoTlkY&hfBF7X4r~k`CXXp(WE>S_VU)1@r;y-*R_6HAxIW
zXcge%*E{Rhg67gh9(k+)6AM+le|uX+#^*%J6IXb}{HRX>BN~MJaJ{5Z=LxxWVVDV}bauOZvsKr9j{fB9GM7Dkqn)wI`ru2KxCBj~N2
zZ}vlt7_>Ijvu>VW)cK-$kKWbCR+|GxWcIi(k<4l+m<08S>~^wf3&1c
zNQMVG$e3qLW9MV_PSa0)j}5)&jyLirv=(w>{!yy=sDT~WUkGXbqKTKtJ9RZ{H&rEy
zj=gt;tUED+iLl({eS`BnvFhpqyvD^*z0?1_PCYdSB@Vw+eRY97T$-lK6y4LL6?EP;
z{=%gY&3J_LFE`q*ueD9RK=TJGf(KxhVq~rctMeVCq3xUiF)I=SMd?!D%f^e@4W@bZC#f~p~p{^
ztIs#0#C6L|pQC4+8(d@x_%4@*I0XzEFT{EzUu=w!jUzJ2KCvM{lie0D%N4K(A&@gu
z9#4FDZor)pWiIdsA8C{CM+_Ep~M_M5+wC|Ty
zG6^x<;K<8MWNuv4ACIA4}BpUv-zx>o*G+isM^P)Ykj&n%g!KO(G=*m5FS=UPH
z35EBiT*E%pc1P*n3cmH2MOSp54t(xkq0E=@>ii9r0%!C2!u+3PY>2PG9HLgYVmZmw
zh%>&qSZatcOAf&};%_Gr-el~=PZ*GQkV@MEP3*AVb-?_@eGiRXo`|6rJ<(dd4bZXw
zB}s3(r4*HF_to-Ey9iQQV0LeaIBWF&atNywJKj;5WTlm@iRh@|U&G
z&aqlkp78Q4!dz41RW%n-k@IEJV7P$Q)9)z;{QMAj%^*9&0r%!#{Lc57Ug8#Lk>tGM
z9FChV^LF3)Sg*H@QtnI3FkBXq^>Vat4Zj0ks4X;n5&sf2;{JaBLO{HKSp$2}qyMxK
z_}=*9vZ~wh`rp7Wotdj&L+YQ)ng&}R&RDH!fKHvCR$2aV2G?4{Q
zRYT|^KgDIe7&;m1_Zw(}DVdq0xwCz!$Qi_x(nLO>&SXO=>bP9$^Z2C_bFueq^QY@8H&jriHac>Se7ZRQN`Xgl*-H
zWqJ4OWsacQmKH9G?G24PC~~Y`Uh{PZ@INy#MQ<}7>8#qn%3Bt&AIP$8ixtiX@{Aps
zq#xmf(y4O3QfcB2(HW91Y?@gz<3B$P`(O2fe`U;x`(OI}D|}6yCH-?j((hcN%A${c
z?HDy)iQgW6r}b!O>g7L8IayH8JFl3M7wS{Y*IME7>HqP&DtrydE!66X6N(S;b|He|
z_o2)ZPIxC9+?K9e@lzMO_)}7XM!gF`8njI0%L5Rg!Q;@$utOPeMNZXXELUN)0=xT-
zMzY5~S=exSx$=n@oVxCg=O<1-?Puuk@VsdTr(K2pj1(9PAq;`AJX`C}M4w(T#}IoT
zZ9jhV=HCk>D#_=hxZ>gL&*`7(f19N9$u!fz1~nv8veyfZ6(s@(0)2t`wd@IfXolUc
zaV=}Z9VswHFf3?h(Ph`13AD<%bz%1}5H|m9!)?Yg$Uf)VjiMzwUPQ$4hAgBalhJ~fg
zw}9j{Xld2s8T%!Atq-+YM1up;GHcK%lbTw1m3a@FkPwxAt!=}ajX}L5uJsD*n57AMq#`l6Z)8X7md%A%l2NEIIl~{~
zQzCM8<@kr7{A@JbHkNi`?pd6u0YdasHu0_m6070QGi(DHj{rRm1TQ
z%w?^gyr;@>cm6lr4{5G<->6Z7^bSuj*rwtl(@@dhmx@b7$Ok?_M+hHL<@r66kaK^ZCx3ju@9c&k%|L2JGjbwq5%+ts&{r
zN~rh4T%aN0p2#&5H$QU
z!7R4x*4ZJ)No{Nt&iCa1%bxs+gdRsV9dWQ@3YcEw3$
zxhx@I`mu`2jWRG?F*Rm}q;XC*!M~o~A|j^`E_z$M_#@fq2?&2Ma|30UkhqIRULn9b
z;%&ypdC#N7Go*DN$YuF6-#5yDvo12ee0iPLC&
z))Pa9mJ#+N2w8NySw~v5lKoFGV#gF7in!o^!C#Fu;LOuAb1!T
zsBy8JXJ#*H<7)kk3z6&8uC-5MC#HS*nH>L#qNn`64se-vFqPqO_D)GD_^Z`<$SSa0
z?z5;0w0(Z~4mCceyieeY!!|ZF@Wr1RD3cDAaT1j_p(}x#d7s)c)~_B6K6=
zE@1Roz1_g14bZ0;!bGMV<*;v|$$GR*d|~sf6|IFR==XkO7;#1`qtd?mXHh
zp`D#7d{D%BUb&!d1!T7EiyUh?;9$3>E^ij#CYc2j#4$q_3^lxf3NdWqB$x6sOQxiDFUto^hjCm
zbA-`MX3m_e292Er-}QtAWKJUbGaDr8fTBUA%??JiOz|-&sM2}mdE?=zeu36kJieYM
z-3bo{^EFw1S`98D=hiSD_6!g2GBHJgc$tNT%0dx7x<9QbjeHN^PF>#Q+MXsU(eHT0
z8Pfq1nFY*u$V}AT-=!}8XSqU7QoWP8{6?etq41ZF>MpP1f@+
zZtzBBPd)_zkPff{nBrg>Z}S7Z!0*5*VACS2m;J(YVmAx)hCyQIlEQa}fT(=p;UU57
zdoXx4xjWm_9zpB0+(~(zPQh%_(=vmG#Y12F@&~s6LLp)P=fCYN{HgTe*jaBto#y3|
zsDrW;C{U!`PINw!RoG&>xFu!EOcaL)3G!b37*7PM%i%bWxz#?PM6tyhH2vDJ!W*cu
zk>P#$E!aPc)1dOBOEuyuYfO*T5xbv8T|ltK3_;~R&3`%LaRj=DZx2(osj0tJ!p_tqS`h?|2Bfhw2aKGz?h7PDM>
zCMV;%Wg$g1=Yf(edj(-E_+7-sr-#QV(>Wo3Sz!8<)!(n?c5*PN*Nq;z@x=;pZs}jV
z&DUrSqeeLhZa)hm!Zhc~J7C_8O$%B&konJ
z*Pb7Cu%rVg+n#9MXEB8T@_sno1eiKNt@T&-Vc5tfZCewP^XmKY)iu7=uaPF0#2!&r)61{se1do|6BJ#um{
zRinL{HH;YfC3@=)q53r%aSFmY;k}3W=_3g@a@_`5qcUUh&jXil1P-{2waJh}-TJdSp8W6&~cQsR^3z56=uN)G|
zT>3lN+2OeYhw5ht62W`xe$iX}z16oJ5NJfWsY}q=q29+k_vuB9$7;SRzEEDAYiSJ(
zqi(QH58w(Z8*7w|<)eG(*SMi_J{3mY97(r*GZn~kt+t0N*>}gF%`Knu*eUY?bre?X
z$_p7M>_#b<%o|^((h4jS=whOtMw~oebpZRz`IPiB)w2J+w+$w$;vrYV&LnUVBRXNc
zCjs#n7RI&U9B-HZAAQn(xgsY5ljShtePk<(LGTsHn5EtvvS1xhaS0
zrDW?u-_|OR+Vv5g(?A-lceU@?zC{ZmoK{G$ro^nIDia2Hf-!<$^&N)
z9nW9bCc*gu_3lm`STy(bqW9La4ZfoO{zmHO{^5K<4@8>A-M5pRL*0F^WWm@*U>%l{
zSCNS8o{7o!L+)8oGa|>$gsZw|Q9Xc%PUIEt8sn)sevwY3q(p$a;B{M2G4FO32bO;M
zEQV+(e@)vj$9kA3Go5xrvWk$&sx|A24=j%N`#3|PsdaO(1E?=a*B4MLU@V{Ds
zAdj5Q@i<{E#923tg6MGEKi;U;MD!NJp4?Tr+tcJe>
z>?H}2X`Z+Z81rk{+aG^MskX3ROi~2Twz})z5A+|6n*FJuPVwl_fjT8==72)l3-c75
zkX+bBS+%5HW|{)HP37jOxo2*fV3-snFE%`wk}NL|S%5H+wzUCIxaiMZYDjaRUGVv=
zaJ*f8{-bq$76Yc0i{A1%?0cvyo6YJwIC1NYCA)+ETeVFf0!vwJu68M#{_r>G7AS!o
zcud2O7tKi0I0|Eu;ytE15mn}T(tK}D?d|Y7h0wrdhDD|N~YbEefyEGu-!3*UjMt*(gW4A@6;kf##*(Mp-
z%#R4SG5ddC@plL0n=>S@V+f>JOsx}pgEwyi&x+isgp+r
z5j9tT!h>@(4P1*=ocHx-GBtYj`{F~n-`jc$Ui#dy{@V=Re&jnzkNMB%nU3twaKK=j
zM8>opP~6S=S5pRa^cK97DgH52Qx8UIJ_STEfIKEJIB0OUKtFlK))_wjJJ@EdDD|^J
zK7kTyqnD0()^_+=h&Y<-HCKOG%EQMs|41+(nVp~dG*eKBF-5t^o^miKtUvT>0a(Ka
zTk0l{`e7iMqku~utyb_uEzqn3WL)qJTM(OI+$BMu07%p^51rU-3S2$*XD4gTNs_b+
zmmH=gSl{xXSi5F`zu8XU+0NPmf4eJ6>TzO{H5^}0Ncc!q|JQ8^kH0Vx)FYs{DU-eU
zxuKH5uO}oR1km69Gq&q78#Z=Nk7^S|RvYc%L5VrwmF11!TGuhI8&uTO7JUH+8^FQ9
zs15Gv9-t8r8kwfp0WrIP*jwPcp+Q8`T_YE~er~Aci5j;ZfQu;l()VL8>z%GsAXv4#
zr~|VO?>~CcOE6i)bC|@R$L@rn6PCz+4E{3+>f3Es+7UFB+lnXwzQ{1;Y76kykbi}e
zwC^|Hu(GwlMEb=oZuW%#gwx1_T>c`xO8s<*6L9_?fXji|)WnLtl?gwc#e4uH9E|)V
zRKfh{xL4gf(b|VeC!Sclq>?BW2PrDch{)w2jn>bACIC(x0~TMblNzit4LH;lrAb4z
zl%t)%T}N`R+nlVX(3?WMB~k
zFs&z(Hy!kUzZR>w=PxdwY{o<#d
zK6N6lGLo&$PYwpEtCJPltn9dEz_+39yYbkki_y!Z+`T^O=qrgXuJM?}0BUBNWUi83
zhmz9-v=@usEGX7$Q#$+~nyxae$}Y;1BA}#zN+}?ybfc9N
z#$6dGxpOlmWGw(mzAp
zK^Fn(Fuan1{ablYFb09}#Q}HX@~NV3eZvixaP@R&mD!pmx8s}`fwA@=*Kbf%mGY;P
zjifg}%~LWR)|K9Yd--II+CDF`3D9hoz~aNVUbjwmz`)#V{N3UURs}BHx<}GwwX3oa
z((cru%Ou`N5;PLHe_+_Z;(?{5GZ)T6DQ!S6`;POrXTF2C_o(wYVAPG`OMpQL8P$)G
z6I;KZD#7cCAUWLOVhDc}hjDG!x3y+-BQ@M>UarX8WN%==qEj629LmSvU=*+YwKBEK
zIzQ1FwpYyM>*&;0&W%(s_e51%!pu#`0>5%C)x)#e_Ea=|%V4J~%u7o0Tjk2-sS(xO
z$az`(*6!6ZSHf~s@x?K>|Hd(l
zeDy0%yQkNaWjT|47jKOp6W5&{$V$BLud*?(*C@{gr%xW370upF$eW(sXyoz2-z=};
zOt5?&Q)Q?;R;%XGqTJ5^4*PAFo;5euHIOptIu#(5hR{&J>pA*3Ta&Q4j*E$7P2c=y
z$V+YGK2`r%EwhHHLm%1eC?t>cfE8`%>JsoKGHqNF!{<*`3{AF?rimSRb}1o>8(QtC}O&<8Xi~053gxl2fgv)
zy#Ud92-R)5)@4qwh*{~9&)eMR$PGmFL^x2p1G{*-GM1dUD!(~
zj^4~lfsbx2kwY!>s}PYRv(tz7RUg#>g@Q~%?dgmnO52zRO><~zJmp1xZ>tC1L4FFA
z(PN$pMcy|_LXgb=$uYG69E+2}!8Z#hHYw%dO;9l@a^cH(bDjPA*?d;iL?>Hk(U&bn90Z9CNCe
z_ENLa++y;$6J_Jape0je3OUbBLP5Ur=jbum0aoP}xaL#f8An2Zj`vy=P1BLj&jE^t
zB#L|afLUFzgpyP@3B1!Bwa2dBBQ8Zh@2%YhZ%xU&A}N_xSKAwflg^d0g#{p9m+
zZ-EMKDMWFB@I13STMFW0;p06t@Z{
z*ZO!TbKNc+e}$injpZk~eIKhm3fzhUtv>Tj?BhG?FtfkkiqO~
z|8KoN%K7liCavA`KG_lE5a#OOO@si6
zWAbbN;ViZIE0C8#zfF$zcQ`(jeiss+D*(NMC-3Nr1b0Pd1f_8ipQBdZ26><{hewYgcF{{1z!gO#P
zgZ-#iy%viJVSy_t2_16f$*0wB$;bX}H?
z*}*Dlxo&YIKO4&jX8PjHJr7Px3Zol;tc&>5(vlt?&N?77E|AEiuea1HpX1K4(6Fxt
zkr(jO8DZ4H(}TQui=oelb?;ww1T#g)^9?ncYJEjIoh#cCVcTpScOEz4318XYy^PfX
z$F98AaH@y(;Qm47hS~4eP_L%neJ>Ys-#nD~F>@+6*DYL0SL{khvChzyf
zH5<||LBNj@H__TWnhTyD+&O`F^zspnWo5yEOQCXr2U#R6h5LKn)}y+ChQ?E^w8{n1
zoU_Vp-bp%rHN3gdgqjjEvXsPGcYr6N@Iw|3=E-NGFccu{GGHMN3vA0wFQ=k)JpXci*^e=Ap1Nx;fK7jHEB-jGy-PMUCg&FwamB
zI(hJ>l)mTU{d*Y++PNQa!ayG5p#iewNED!iAhn)%yV$j@E&kwS@$4`PN@2>ShC&~>
z+-m+xMs$=^MJnXqmo93%H&v!5Q8FORNhvj~+0Ywpe_PHjrosX$?I>e;V22zN;ejDg
z7BVBapF3777s2sputyRC_32S{f7r$)BA(!2cu{x3I0$cDPaPf|%tt
za=Nggl5{xNTg1fmV@tq-1J
zDTEwL=pTVfcDovK!LE}t-7UG@g{HS-o_v6^jZz{{(&h51Ar_S9z)qj;$3v2PWv@ua
z>Ckjx@F94gyiZWE3BtpZc!!D}hS7)oHC|DMatq1R-G_4_-u3+{n1=oOG?}f<{R+8v
zdX{Et0v$K+7Mb6x?JzkWbJF%m?!%jLcC(niVLpp|U&vAlS#g;}fN_L!EQbFhX-|c$
zvieQ^d<{USqljD?3q<&w|5Ko^W>$}bQUqOv!FnJGQ~RgH0AjC^94}<;gvNo02;$4h
zQnij19%6dy8khD!cxgeY$Q#BZ{>1Br+F<(~gJ7cB_0XirxcDckyJN9FuG#DKjKtk7
za2?C*B4V=nQDf&-W->d@!Oam-YH*)NA3KLnq13RBtSaBY)RB+P2+zR^$q=WtF#(3%
z8g+j%;q^BRI+V>xbO>Uc69u)b*{n(chms`^G~KJQg5RfTlz8?PWhVR-AG_~3g-d;bQz>?S1f@hsO>uBhWm+#7fjg$reJEkQ3SF8
zlPN`B}_4oCxtTr7mfP!XjP8kl;ds4VTwU*q&ufIaeHZR_r=g(
zW`z$Lf{h2E$hx(d*a>GMryr$f()urXCspm*%Iye&!^4;yWUL=Bogo#hZCgvOa+u{d@W(YG(jbkf7%%0#RN{
z&R=hkt1eipflzK55P`BdEMo+)gi{6F61FroDip13d0!{SApGSl;?Fh;&A0NJW48Y_
zp>JMry4P_gQX&&5^M$R=mP$nr0Hv#$Vf`IKV`2tH$_3@Z`Wq{K8y6e~)q;;6xSO8+
zyZ*4#(3+lG!QlZv`3f6>L^nN>?%6)0rV`0#F^6oXD2_9
zL`i~1i12Rb(zuEa>RNwJ=qtz9LFo_;J{i
z$aQ0%EFc~iq1Riya@LB8ogslnNSKe!~2?Ftx?z)nUYvvRIM9t2LvpxE`(CT;|$Y&ct!dIjMR`A
zt2s}_g9_s`0itlK(}ROvrdq93iwqiz2+z1TpSWUU3@WPk`0=%e62O?=+|c(tXs
zFkbJx2RcZzkSR=&1+%`m;qE_>(2oCc)crErL;s+ff2Fh8@6zPg$!_6PcXX4;b?2o4
zX?qYb^8aMrHtVM-=;&O}=O4+#R?N*PL`$|#rh7n7OpLDIMYDx#IGm1UeL#C2~4rFCyC;PV^oBusJ{
zqugQq(eV1R6(6|aC8smy0-torO=N=CC4Fk?P}#$O_o#J6;aeXB_%Hm6=}R1KhbR|+
zcYRJv>sE_kp7POKYN2eFFTkV}a;hp;jFWgnppmlL_kr+5^b-ZocbT5!+6rXegW5-%
z03AOwp(QDZ#Ati@JzcFUPf^N_PRz`114?Dt<7=LE_1wWHCDA=B-l*1rS_sp5I#?~q_
zc#gXgD0$CTH_icZ03Ka+WAFA>r576J2>veuPX!=*>pYm#wD*>T
z9A5FHlY7%WxIsqA48JoGkJ2+wjsJLN`g?k&Tl4(CKd74Z>xoal_aQ@lfU6!CKKj=@
z`Krb;*`d((m<2y;WAHiP6Brg3k8w)H=HWHj*1ASWgOX&nMgnX9;WbqQiG*83ToA^&)Rn=CK<1o7b218jdU
zz+<&0i@g9N<=SV8DVMzDmsi==1|@IyNy4jkQ%t0_sB5>x3M9q6&+~7N+vkdJfJ?nR
zP#n*ycp8Z0=();=$WJja+5aZ-;#WDowd11Uj_|x2)!NKEvD)X<8M(`C;#bt
zF*J=j0sED}pk3D66-mH_ugn87#ElQl0S+*z4b*=10rZVnmo-
z<(jG3WA!Fvg2B8mC3?%WhZK}7R&I}_s^xE{3x9lhKCWF6%uvvC`8)OV=QxVqU!;8f1B@4h*oNw
zP<8)fYH;noP`ji5ub`1pGmbe$U4_u!hEdp*Gep-PyorE$(PY|!I4m}V|~Y-P8O
zA}_L4%NgQxzOpy!Y1q4f?v*6N%tQ*9e+z`aynXND1%Pb|LD6B
z1@t9E)~p%MhZ1$Q&51^x+VQfHLskvTyrYdJ?X!khNcC2jikdPRB6EFLWDz`tPwe?Z0XA1Hc$An14%Km6IIYcBW@K
zJ(gIYVo_fzh9W~s5&BPsFfw90e~$F=H!0v?Gm(-$BW019-i}8id
zaXcaa(4)<@>r=nTsXS$v!LO!MQSJEhyy-hoVW-l!lci&z^J$;{`wPzaHUsQ+*Mr;g
zbuoQwG>^d8+98aT+D;F=5Gr0&&&s~S`iP?J6oTKUkTr9CI-yEmkt|?BoygX3>z?E8
z?>sf8FI6!6I3!DpF=9eY@>Ha-?PYbya|UC;$mvxcD6ZeO_NF{GK
zFGSH;o`@h>S_T6uAq{}N1W$5~gcXm=c)>Y(ZCwe(D!;inSPm1@aF6EheMKm(FaM0s
z>s-}c3X+EhcN=U=p-0aGlAQ;;oUdE?lMb7ij9bP}lB7>cM
z8{DlO7;ep+N0}ni?RizM-ivR>LuCkmJgmm7x3un!1O>+9p;GN-COIBDVrY$7FR-BW
zFyBTWTQ4geB<;k2#k
zE}69gDV=$b*mLPB1{ZsJlH%f~+1e)_^WD)x*Dt0%_y~e_!P_=Vqj0)MwyP+WmR;-l
z*7AqzOzW^Lhjgez#o&$Vv2NkEXr-lHSf_9@{N8~(=6!pWm%>d4)%=;x>W>E9^B*dK
z^Nyleuvz=xYBgCk7E4A@tgTxtcbGR5wNUo+41f5k2)G9rF~&}2
zYFfl8CgY(4N+!s;jKFxA1xvG!$|7V?zOVQ%)!q5uj^V(K?U}_zEip$}o3Z>4C3{72
zcjdOsesvu4#rXI9KNi3Sdl?t!y^a2rE2%V9U;VdmLzs*(z=spn1Xgmv~o{|%}y16+?dmJm7
z3TQzPXQ`^fLiqQ@pc?ffPh={MxTj$s)oie^ExjK#@{_OK(P}HveSg*^(ISF9u1>K)
zU)^}{8!8@^kUzkxb*C#VkV5e{Zru%AAGo?W7`Q9!%IAEv8Su>INcYzdS=ADKY#xg#
zANCI&Ri7>k8*hAEyP;k=wxmOQp*CJ{QIx`eFgI?_14#e>oP99ML704Q2~vKMvv@$V
zc$4H+4=coRfhSoGmbO$?b@Q34svX^x6j7Ld+s~iNfRMh+ZF&do
z+9Ra$sAK#Y8Od$yM9a`SS|
zeLC6LS5gbS34PFMzPeCQ9`~sz(MJ_P(UO9D$p)
zt^{5PB&bG*ZkEFBt`CWaRhKvd_4O%|iK_5(THl?FORi17ebA=gteQPo8@N6`?!v~w
z5$jLle|9!`ew$(f-)Uc{$}a=(!mv@a5=0n%2*hqaEMvEt6M~br<5j5D;HvhPYxNtcEMlgiiz7WcJ1N
z&q$q`PuL9dDXuF7MTY&ep2s`3U_cRu9Qo#}=p`wp~lVUP6D5
zPKK}J
zHz5v=6%bC53LsFA6HfN#qM_ll>9aI?D}Iw1pn_1dc#hRlNrx)+>dhMh<$QJD_w9jc
z&%JLvRx6?V{{1_f`2?HKEbr2z2M-n+y>XI}n9g#u@g>--$QkL5X7n3HsI*#Erl$ne
z_Smk)JS`s#o$c>yX030FUwi)i;tiP?uDu|ZQPk7+z7{f8jwggP^%0Q6xeEw3Kw31J
z8n7EIzZwn4=B%>uHu_+qD$}T8N88@72V;tS8uK5_DUe5QW5*ie|7mrt^8)g+wK~(tR
zp~^q|JvShbI$mKlADXLVFi^m-vPXLx*}7yjS7}xbx_rpQb7X5)mq>U0yqt3m%1Y}Y
z&yy_t`^#%Vm!48inGwpEfa61-(+;-#?ej1}8^O
zE&t;8M708BBC~5Spa{aK!gsmu4rq|Hw9Whmn-{X+c`Yq@
z%EWuhB~x8ErwGjubJ*pYzamR1od#^XS4W7F#8M;DHR%XB?Rlv5a`8#x?QBKt?6=E9
zjT;l;_<`@l@1&GWPp0a8Z%g+WPsfUk#Kd)_hWMcErKPadG-+q_#!zFWx>veHwZzMt
z4qCN0dQW`Fa7=+VThrpmAsAPJ1+5sC5gC#XTO1}GBx3U1H+?tXQC
zB-)<@Zlmo0>VPogajZ1}r~y-_nRXjb?({q(MA31n4I7gB61=G*c`vX?)!u(_LoS?-
z2WEv;Y~PwQRlvhfSFKM_YL1#BOG;8|Q$n1ivHCEA2RB=rb>()CW7lQ1
zH=O6)Vhy~KnKJ2{cafY7kzsLnNws{eeP{821shZ=#w;cJso**KRf#0Y+p2C$EKowq
zRgyk;5&X2^R}asPfG}0>#rPCijYBMQtXc;zlV5SJRUiMww6|PZB2-*NAexC~MYmlm
zsekrZ(vC|EVg`^`V(qDOy7)~w7`I
zYhIvZh74&Y%(p99Rr8xdDTiM@9X71wOv`@PewbRU&M#NeJ;x@WA52xk@BG#kYqe
zke@>dyn~v+^PBZ+YZ~NdRj{$mGuKD3J7f9|QvnFgtTDXG@NU^$=O(Ugp&KNt?o)2n
zPx$OnKI?wjGCIl)85Gq|0ReljRa@xX))zHF#2iHxJQa@owx|Rw^<&G@ayF_-Aq~
z(&Povce(^OzI0q$o?1#dE2NQ3;vtRnsY?)?E@*0UIjZ5=9ur1DmFv6~>hPYp!>IDW
z_4~Mv3T1$G1V-BfsO~iiy~`whQatGiqNyoP9ha#V)5^L2GzR@gzN>xw>f;biXoB#b
z^f^4FQ;qY6esR%BiFy1H{DN9XLe(Nq-!M_9_0ij>jV%w*&`*0xbx}RyeX8blJW$Db
z9AQnE$p?#R5&qcNQ?PffHk5&_^+0H*G?i5|t}Cc4Ja7fTj{t);LR6x>0n&MG1swOT
zME=MZ$~E>%lmS(#@baKl=MiAouSgj%msz>%a88(h~Jo7P?l=uD-53s08_;lFr|Au?sqc&W|
zFl&jSh`I_95TJb8PHGs(zO{n%;jEAH=+m%?i>4vL?x~zVd@K;pSt>HrMHZnfdUf&FqrN{mzPIgX
z)^)kh-fTmkn~_!xidsp=^&zmMamnIVaBQ|IcEEq#5fsyb#Auu+N<$ZmdYcZ*;{4IJ
zfqcDkPmfy3uAXSFKbo%mWwZCxtj_5HXM8cJh~K;hxd#=iXS1$XMZ=k1HFlYz44rC!
zBzM;Hckv+0D4FZu(gkS_(iNYF`KnB=kHemRFPh}j%T{LI(*9*?Fn|5!HssjY=o3S*
zy-5+3aDN4HxEvWDC$u<5L{vo-j;`kqrog*`mOJl^6vT%?&QSoB6xVORO5Dc=R*~kVuA+o;L2k8)waQishun`&EQ?4
zI&r_)CLON1r?{j5vPXI5YV=y9_J!@i%;RkO5vf7uqL;Q$!0e%6L`NOi04${!K0iGWS@LHLHy@1K>v`@aQ_h~Bk4YT
z==vt=>Gx|$6hMG~pL>4}@M{agkQUWuKLa@Uv
z_`ke;)vk5L>pXSHV=poymBhchIPB;!3QV_ouMYqZ_DwQaMfWEjm<+C|JQAt{j0+ohc&NU+tvRH
z7_<^qXfz1w4!A$Def-cj#!&t65uq;~rw2rA#amQL`@BCp=40ZX>^|tV_|JgP&*~rx
z1py%j`?S3lt1=b1eqYX3osr2j%UK+D~jqo6jp+YYh4h?J-dIJ0um;o2$(wiT=+
zg*&xo_8T4Otjo)84zg)q`Z@^bNf^(z6G(BbS8p+#VIO=fm}|J?c~kUlr@*ZIHF=Im
zm0O~3aDTE}sWam+90%gg1QHP5Yjmx&L{@o$%GF?@WBpV$4F5Jyq9S3R`F~0Fx<>vJ
zJ?PlLT2Gfa)VF=Uhr?bX0w?rJsK_`Rj#njU9B>lX
z*dJb&x3)qudkH<4Eeq_n>uH?%S;8m|@RTl2vvvxZU1WN~{XW?>@H3xOyOP
zKU)Fou?FPvT9m+pfBAPmxMKv{UgukBfAKT>k0#{~mQI`Tml21=k%rcyuO
z76eGr0~)cuLv*y0T@Y~qLQBG3pJOKVwsmXOxP%R(?zZUq6G!?NEt*S9j>eXf{s|jo
zOgBLV4(;{32;^5M%$a(*tqPEpNm!!{69u4=z0^HK!D~X2<7{&GIZxe{-rmT0zGO&s{a=
z-3%KO<{eweGx51=y1B?ecf8EkOsh8!;yAIY+_h%GP$xk}`d2!Z#$Ce!fB_7?mbnF@
z4THsC9Zv}Mj^_b{ikzY1$*PZ283F5(aTu3C6*}KRei#sXBUfdOIvNd4wN0(~Gj=$e
z@Y-A_y{sog${WfM>sT0Bq3p3n@%MBC{oH$Wbk^-@3Jg?584w=3hJ}U4tb$rf!xR~S
z%LDI(bB6RT{drs9nXRp5yFTb;^s=oDsz1hyKdGxfBb@DI9bds##lgoq+C;6e1b;vh
znO^s}9vvq)2jqf1GXM|QC0{!CC1TA~HDkQQhb|mUrAD0mL>)gWBXdfP)}Gt3vo|FR
z!d3s5gz|P2Q`eARaPGyMn&V*s6OGFh
z18U|12`(8SBNULLYzhn`a7&i4C`ZeZw`D3~E3jRIOvBPWR_d$2|+fuXB8YrlICp(}4e@2T==^DX@N%XdV_4=YUD
z(Pezuq3rVRbia6K3@`}xdQ9U5sGNpH)WQn%qeDWuu1?B?2AnnQ$-;dk!~Qqjz~JQL
zMm?cbGEGNzk($5$SMIRo4%CSS0TTtDAJBlM)$eee^1)1c>sP9@=v`~Mhia8_aE7&P
z*Eq0;4$KdBt(6Inw_*LP$IDDat=UvwA9nI{9Bvc>O!6&q)AZfA^Z47qs0IosX}N?L
z_DAVqy}CnrTe0BQNcMkt515IGg8_7I4#z~3Z15%V^kI5
zA9T>Z|F7sHr3P|xmyvo{9Uqr(s93#tar&)LMNf~yp3Nu}ER-M+d6WzEQDuHN*U?u$p@uZ3{sjyHrm{cAJ
zQRv+|SVLDS_~UX&TE)8w=INfjE*(2Nh0k!BH*!zH6n_Mn8UBxwBtw!vWZ3)74~p0-
z*m{!@U@da99|Pp8Aaq^pC5A>(3^OdRweNxcI@Eh!N4=qxodW#iZ0+w}rgTY3-E-qC
zIiX+TcN5`g#WItx70D;kW3k?Ao-75*A%#}X&%S1SM(w10
zBxOH_J)!~%fIv^bQW;NLAHz&>SN}qJ*Ov-^l_Z6;i8fS{6%l-k|7!9v1R6>&bKY%Cmz#;Y*11avX07B`dW!k3TuSfs
zCoOi3Kx54}Ve7`46p(%O6tmf`*a6%cLR42XFm7l6J~gwD??-S|&yk6T<)gl1FySS9&!EiqH4|y5Lo&Ct9UTq7!_G(FT&U()X^#$7
zvC@2A)>0`1J1N@N{m<}HGjj_B%tTaNS#I^puE;IP9@ptHuJj
za%h`vc({49ddW*Wx+T50Z)dU&rp$6__cUR*Nb*|1k~pd=-g$$FVSgoo!-ZzqJ9`{0KM`V8`QZ$l2Ns&hB`an&*_MX
zTwRg@&a=ES2hsqMQ@UgesT(4vsoB
zt+;BboL8olI@9lJp?RZ8VSVre3V**cq=e$eAEzh#ZqT9baUQN02lAOjz+qMR#HI1!
zbu97+xUC>dLZf6_U*!_J6jULPA==5^yXt4377tkwK+>P|7jn|kueY9f!Tl?O5_evOZ|=E
zja<;e+C5pGN&G;nr{~HS{1qZ?|3EZQ?@e(7pJpn+U)SK%B*$p@3GbTm8i-80#Hqb}
zi85VbGw=0gt)Egj9a_zFe`lkX61{j6N|EtS7&%>a$yT%9J7Y&|%Sd
zG6J7LN-7ul7ND7AKB1d3iVv+sp>s-RpL{vAnR{kfagKOP`%RTy4fCzV-g~@3wliz=
za1Iz(QJ)UqlK_$#
zQfAK3_XDkRu3Y}tU
z2`U(=6;|L=XxBr&qfQFucML(cyHU95K+;g|{>*v-Ww5q#U9zr~e^Yn#Y05r}D`4*E
z9~w?lTogg~LQNztN6FV}(j1C|Nd<UX8Uf(*aaOSM
zL0^DR8yyOBRx{u#T~E|R`-LP}*zUFhLMVazL&+nHjD~|zl^GG^n4!fdPTTz7Ufm`Q
z^4XC|>=+Q|+zz>e4{4hLyN!-g@*i?=n_kBW-GdgK#?!F5=E$h}O>_>{5TR`zFU3*i
zMfzSy^s#Udoh;*nUL|a~uU(PQdb!WW+Em^7c$JR-p8Wzj*tzyPEkTeIh4PFQu=&qs
z=$xJ!K|pw6#I-(cWh?1l_T;={|F_TsHJ;RSERhp`B9p(9kytKnm*wk{y^#85!1D8h
zhjjo(=hC^nNKR-QVE3!OPi6+KOS;lN@a%$Cr%gEux#{eUa9KLqkdj+6uG)zf;~E8xug=onv+&rRKq3v_SBo4O*e96SI+@oBr4XL!0&N#cWcaq)!~-fbAk
zisWhArE?@hkEFI$f>8XHrB(fZ@oR+VO%!Mk)I=;VS%~13O}YuU(MVnns7`DQ`_htp
zc&{k&UK<)VJ|i3u0`$iG#w<^pY~|jTzGWLOMDei
zu%tvWP=qO7y+pBH``Gq6kVC7W{V
z4pZkZyGtc~It`!y+?G?BxTY84LQ8`y3-k<9E@ZyC=@^S)`r4lfOgp{}84tgPesV0ho7?F-ellTgD
zO$da=aPBPp6ZVLCh&~+!cS3(EK)alvqX+cd5W22|Jy$4&Mnma;%P|5IgQZBSh7Pq
zPFDL3xRs~K9&7Lj({;3=j2Gmi
zubf{sWcxcR-v~?$z#eKlKDVPg(<}eDyf~7ROUusV=bbnJUiIr}xc}T=zT!BIT!
zM@(GjIYNmMRMSR>{`i&3I-PzT4Zk}*iZGXt8Rfoy1f8_nE|u1$0cQ3=6Ihl`lR6SR
zKQeTmhpr?G#ix_`8YK}so&AFVqyfatlpC>$Cs=5ON?n07c5|>WbzSmbrl}I%udwjC
zznmZ`vHT^k;FMEJ^koSXsW63HDumX{aD1}M6@2rAa?-pPcSIu88f9Ul+#cXfN{)T_YO^k-
z7^O(~%;qli+KT%L
z^5;2Ch{AYT2a(~yKfo>@kJs3l``+0;1wvmJ1K_w7CBDn|ht~nV2MN9JaHN+-d#Z${
z?TkcFKY}RYvXbYoKj8n?P$Mz7NfrA1i!8JZP~~DXHdCwubvThTaGo=X1RU7BH?VYGxxl{
z!9UA&fG}igm-r-V`I;>)^WTR|1MHI+c3J`|7TVNV5)w@P{#!m@z(t>jHdHtn!7FwH
zZ2=H5NOquFWa^^N*5`ja4N
zyt>@Of~sf9*H_iZv3zuZ9K718k$$ybW4I_*fjHbL6d+0?gWDq(l+A6tOO4=Z8<&<;e}@m%Zf}f#
zB_E1KMv?AtqkxZ$FiZLK3kw{K52@n&9beZ*TBpk4&SPqB)@)A}B;#{Yw&OZmu|`?$
z*xSr9N`dJd#FY~Dk%k6-GADb>zja$y_#}2JEP8$o_`2jOePAtD%!yo+xuT_Yy5VIl
z|LX_HJbz@L*B7v)~adc*eYY2!4~mJDUdCVEl|dZMBu>s5f{T`ak}jbzyFtMDEF9xyRi3@YLiO5-Ak_O{IHQnTc@XDEKa%`#Jy2@hK|>G(K%Q%gD(#H>3)yaq&!-o74;)j`9=>1_5!QcZ4F
zmYHMUVWd}DKL=6uC{}zfWALY!k!j5cUlNb!AP8i)(Y-3m3^!TeH4 |