From 838adc9a51ec21df6974afd6daa75a33ef1a9d08 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Thu, 14 Mar 2019 22:36:43 +0100 Subject: [PATCH] reorganize netlist code, comment out unused functions --- .../org/diylc/netlist/NetlistAnalyzer.java | 414 +++++++++--------- diylc/diylc-library/lib/diylc-core.jar | Bin 278549 -> 277538 bytes .../diylc/netlist/GuitarDiagramAnalyzer.java | 19 +- .../src/org/diylc/netlist/SpiceAnalyzer.java | 11 +- diylc/diylc-swing/lib/diylc-core.jar | Bin 278549 -> 277538 bytes diylc/diylc-swing/library/main.jar | Bin 616325 -> 615764 bytes 6 files changed, 218 insertions(+), 226 deletions(-) diff --git a/diylc/diylc-core/src/org/diylc/netlist/NetlistAnalyzer.java b/diylc/diylc-core/src/org/diylc/netlist/NetlistAnalyzer.java index b8bba904..183ac549 100644 --- a/diylc/diylc-core/src/org/diylc/netlist/NetlistAnalyzer.java +++ b/diylc/diylc-core/src/org/diylc/netlist/NetlistAnalyzer.java @@ -18,7 +18,6 @@ package org.diylc.netlist; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -28,9 +27,26 @@ import java.util.Set; import org.diylc.core.IDIYComponent; -public class NetlistAnalyzer { +public abstract class NetlistAnalyzer { public NetlistAnalyzer() {} + + public List summarize(List netlists, Node preferredOutput) throws TreeException { + Map summaries = new HashMap(); + for (Netlist n : netlists) { + Summary s = summarize(n, preferredOutput); + if (summaries.containsKey(s.getSummary())) + summaries.get(s.getSummary()).append(n); + else + summaries.put(s.getSummary(), s); + } + + List res = new ArrayList(summaries.values()); + Collections.sort(res); + return res; + } + + protected abstract Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException; public Tree constructTreeBetween(Netlist netlist, Node nodeA, Node nodeB) { Tree tree = new Tree(TreeConnectionType.Parallel); @@ -199,45 +215,45 @@ public class NetlistAnalyzer { paths.addAll(unmerged); } } - - protected void findAllPaths(Netlist netlist, Node nodeA, Node nodeB, List currentPath, - List> allPaths, Set visited) { - if (nodeA == nodeB) { - allPaths.add(currentPath); - return; - } - - // System.out.println("Finding path between " + nodeA + " and " + nodeB); - - Group groupA = findGroup(netlist, nodeA); - - if (groupA == null) - return; - - if (groupA.getNodes().contains(nodeB)) { - allPaths.add(currentPath); - return; - } - - for (Node n : groupA.getNodes()) { - IDIYComponent c = n.getComponent(); - for (int i = 0; i < c.getControlPointCount(); i++) { - if (i != n.getPointIndex() && c.getInternalLinkName(i, n.getPointIndex()) != null) { - TreeLeaf l = new TreeLeaf(c, i, n.getPointIndex()); - Node newNodeA = new Node(c, i); - if (!visited.contains(newNodeA)) { - List newCurrentPath = new ArrayList(currentPath); - if (!currentPath.contains(l)) - newCurrentPath.add(l); - Set newVisited = new HashSet(visited); - newVisited.add(nodeA); - newVisited.add(newNodeA); - findAllPaths(netlist, newNodeA, nodeB, newCurrentPath, allPaths, newVisited); - } - } - } - } - } +// +// protected void findAllPaths(Netlist netlist, Node nodeA, Node nodeB, List currentPath, +// List> allPaths, Set visited) { +// if (nodeA == nodeB) { +// allPaths.add(currentPath); +// return; +// } +// +// // System.out.println("Finding path between " + nodeA + " and " + nodeB); +// +// Group groupA = findGroup(netlist, nodeA); +// +// if (groupA == null) +// return; +// +// if (groupA.getNodes().contains(nodeB)) { +// allPaths.add(currentPath); +// return; +// } +// +// for (Node n : groupA.getNodes()) { +// IDIYComponent c = n.getComponent(); +// for (int i = 0; i < c.getControlPointCount(); i++) { +// if (i != n.getPointIndex() && c.getInternalLinkName(i, n.getPointIndex()) != null) { +// TreeLeaf l = new TreeLeaf(c, i, n.getPointIndex()); +// Node newNodeA = new Node(c, i); +// if (!visited.contains(newNodeA)) { +// List newCurrentPath = new ArrayList(currentPath); +// if (!currentPath.contains(l)) +// newCurrentPath.add(l); +// Set newVisited = new HashSet(visited); +// newVisited.add(nodeA); +// newVisited.add(newNodeA); +// findAllPaths(netlist, newNodeA, nodeB, newCurrentPath, allPaths, newVisited); +// } +// } +// } +// } +// } protected Group findGroup(Netlist netlist, Node node) { for (Group g : netlist.getGroups()) @@ -246,62 +262,62 @@ public class NetlistAnalyzer { return null; } - protected List trace(Set typeNames, String nodeName, Netlist netlist) { - List res = new ArrayList(); - for (Group g : netlist.getGroups()) { - for (Node n : g.getNodes()) { - if (typeNames.contains(n.getComponent().getClass().getCanonicalName()) - && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { - res.add(g); - break; - } - } - } - return res; - } +// protected List trace(Set typeNames, String nodeName, Netlist netlist) { +// List res = new ArrayList(); +// for (Group g : netlist.getGroups()) { +// for (Node n : g.getNodes()) { +// if (typeNames.contains(n.getComponent().getClass().getCanonicalName()) +// && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { +// res.add(g); +// break; +// } +// } +// } +// return res; +// } - protected List find(Set typeNames, String nodeName, Group group) { - List res = new ArrayList(); +// protected List find(Set typeNames, String nodeName, Group group) { +// List res = new ArrayList(); +// +// for (Node n : group.getNodes()) { +// if (typeNames.contains(n.getComponent().getClass().getCanonicalName()) +// && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { +// res.add(n); +// } +// } +// +// return res; +// } - for (Node n : group.getNodes()) { - if (typeNames.contains(n.getComponent().getClass().getCanonicalName()) - && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { - res.add(n); - } - } +// protected List findGroups(Set typeNames, String nodeName, Netlist netlist) { +// List res = new ArrayList(); +// for (Group g : netlist.getGroups()) { +// for (Node n : g.getNodes()) { +// if (typeNames.contains(n.getComponent().getClass().getCanonicalName()) +// && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { +// res.add(g); +// break; +// } +// } +// } +// return res; +// } - return res; - } - - protected List findGroups(Set typeNames, String nodeName, Netlist netlist) { - List res = new ArrayList(); - for (Group g : netlist.getGroups()) { - for (Node n : g.getNodes()) { - if (typeNames.contains(n.getComponent().getClass().getCanonicalName()) - && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { - res.add(g); - break; - } - } - } - return res; - } - - protected List findGroups(Set typeNames, String nodeName, Netlist netlist, - Collection> belongTo) { - List res = new ArrayList(); - for (Group g : netlist.getGroups()) { - for (Node n : g.getNodes()) { - if ((belongTo == null || belongTo.contains(n.getComponent())) - && (typeNames.contains(n.getComponent().getClass().getCanonicalName())) - && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { - res.add(g); - break; - } - } - } - return res; - } +// protected List findGroups(Set typeNames, String nodeName, Netlist netlist, +// Collection> belongTo) { +// List res = new ArrayList(); +// for (Group g : netlist.getGroups()) { +// for (Node n : g.getNodes()) { +// if ((belongTo == null || belongTo.contains(n.getComponent())) +// && (typeNames.contains(n.getComponent().getClass().getCanonicalName())) +// && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { +// res.add(g); +// break; +// } +// } +// } +// return res; +// } protected List find(Set typeNames, String nodeName, Netlist netlist) { List res = new ArrayList(); @@ -316,67 +332,67 @@ public class NetlistAnalyzer { return res; } - protected List find(Set typeNames, String nodeName, Netlist netlist, List inGroupWith) { - List res = new ArrayList(); - for (Group g : netlist.getGroups()) { +// protected List find(Set typeNames, String nodeName, Netlist netlist, List inGroupWith) { +// List res = new ArrayList(); +// for (Group g : netlist.getGroups()) { +// +// boolean inGroup; +// if (inGroupWith == null) { +// inGroup = true; +// } else { +// inGroup = true; +// for (Node n1 : inGroupWith) +// if (!g.getNodes().contains(n1)) { +// inGroup = false; +// break; +// } +// } +// +// for (Node n : g.getNodes()) { +// if (inGroup && typeNames.contains(n.getComponent().getClass().getCanonicalName()) +// && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { +// res.add(n); +// } +// } +// } +// return res; +// } - boolean inGroup; - if (inGroupWith == null) { - inGroup = true; - } else { - inGroup = true; - for (Node n1 : inGroupWith) - if (!g.getNodes().contains(n1)) { - inGroup = false; - break; - } - } +// protected List find(Set typeNames, String nodeName, Netlist netlist, +// Collection> belongTo) { +// List res = new ArrayList(); +// for (Group g : netlist.getGroups()) { +// +// for (Node n : g.getNodes()) { +// if ((belongTo == null || belongTo.contains(n.getComponent())) +// && typeNames.contains(n.getComponent().getClass().getCanonicalName()) +// && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { +// res.add(n); +// } +// } +// } +// return res; +// } - for (Node n : g.getNodes()) { - if (inGroup && typeNames.contains(n.getComponent().getClass().getCanonicalName()) - && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { - res.add(n); - } - } - } - return res; - } +// protected boolean allMatch(Collection nodes, String name) { +// for (Node n : nodes) +// if (!n.getDisplayName().equalsIgnoreCase(name)) +// return false; +// +// return true; +// } - protected List find(Set typeNames, String nodeName, Netlist netlist, - Collection> belongTo) { - List res = new ArrayList(); - for (Group g : netlist.getGroups()) { - - for (Node n : g.getNodes()) { - if ((belongTo == null || belongTo.contains(n.getComponent())) - && typeNames.contains(n.getComponent().getClass().getCanonicalName()) - && (nodeName == null || n.getDisplayName().equalsIgnoreCase(nodeName))) { - res.add(n); - } - } - } - return res; - } - - protected boolean allMatch(Collection nodes, String name) { - for (Node n : nodes) - if (!n.getDisplayName().equalsIgnoreCase(name)) - return false; - - return true; - } - - protected boolean allComponentsMatch(Collection nodes, Set> components) { - Set> extracted = extractComponents(nodes); - return extracted.containsAll(components); - } - - protected Set> extractComponents(Collection nodes) { - Set> components = new HashSet>(); - for (Node n : nodes) - components.add(n.getComponent()); - return components; - } +// protected boolean allComponentsMatch(Collection nodes, Set> components) { +// Set> extracted = extractComponents(nodes); +// return extracted.containsAll(components); +// } +// +// protected Set> extractComponents(Collection nodes) { +// Set> components = new HashSet>(); +// for (Node n : nodes) +// components.add(n.getComponent()); +// return components; +// } protected String extractName(IDIYComponent c) { return c.getName() + " " + c.getValueForDisplay(); @@ -397,53 +413,53 @@ public class NetlistAnalyzer { return -1; } - protected List extractNames(Collection> components) { - List names = new ArrayList(); - for (IDIYComponent c : components) - names.add(c.getName() + " " + c.getValueForDisplay()); - Collections.sort(names); - return names; - } - - protected Netlist simplify(Netlist netlist, Set nodesToMerge, Collection nodesToPurge) { - Netlist res = new Netlist(); - res.getSwitchSetup().addAll(netlist.getSwitchSetup()); - - Group merged = new Group(); - - // merge - for (Group g : netlist.getGroups()) { - boolean needsMerging = false; - for (Node n : nodesToMerge) { - if (g.getNodes().contains(n)) { - needsMerging = true; - break; - } - } - if (needsMerging) { - for (Node n : g.getNodes()) { - if (!nodesToMerge.contains(n)) - merged.getNodes().add(n); - } - } else { - res.getGroups().add(g.clone()); - } - } - - if (!merged.getNodes().isEmpty()) - res.getGroups().add(merged); - - // purge - for (Group g : res.getGroups()) { - g.getNodes().removeAll(nodesToPurge); - } - - System.out.println("Before:\n" + netlist); - System.out.println("After:\n" + res); - - return res; - } - +// protected List extractNames(Collection> components) { +// List names = new ArrayList(); +// for (IDIYComponent c : components) +// names.add(c.getName() + " " + c.getValueForDisplay()); +// Collections.sort(names); +// return names; +// } +// +// protected Netlist simplify(Netlist netlist, Set nodesToMerge, Collection nodesToPurge) { +// Netlist res = new Netlist(); +// res.getSwitchSetup().addAll(netlist.getSwitchSetup()); +// +// Group merged = new Group(); +// +// // merge +// for (Group g : netlist.getGroups()) { +// boolean needsMerging = false; +// for (Node n : nodesToMerge) { +// if (g.getNodes().contains(n)) { +// needsMerging = true; +// break; +// } +// } +// if (needsMerging) { +// for (Node n : g.getNodes()) { +// if (!nodesToMerge.contains(n)) +// merged.getNodes().add(n); +// } +// } else { +// res.getGroups().add(g.clone()); +// } +// } +// +// if (!merged.getNodes().isEmpty()) +// res.getGroups().add(merged); +// +// // purge +// for (Group g : res.getGroups()) { +// g.getNodes().removeAll(nodesToPurge); +// } +// +// System.out.println("Before:\n" + netlist); +// System.out.println("After:\n" + res); +// +// return res; +// } +// protected boolean intersect(List groups, Node node) { for (Group g : groups) if (g.getNodes().contains(node)) diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar index ce73d5f2cfe6405c897a6c79658f4a7dab370272..19b852f8763cec0f2b634df9f51c61c09517b77c 100644 GIT binary patch delta 9750 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 delta 10895 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 summarize(List netlists, Node preferredOutput) throws TreeException { - Map summaries = new HashMap(); - for (Netlist n : netlists) { - Summary s = summarize(n, preferredOutput); - if (summaries.containsKey(s.getSummary())) - summaries.get(s.getSummary()).append(n); - else - summaries.put(s.getSummary(), s); - } - - List res = new ArrayList(summaries.values()); - Collections.sort(res); - return res; - } + private int positiveCount; private int negativeCount; private int noiseCount; - private Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException { + protected Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException { List notes = new ArrayList(); Tree tree = constructTree(netlist); diff --git a/diylc/diylc-library/src/org/diylc/netlist/SpiceAnalyzer.java b/diylc/diylc-library/src/org/diylc/netlist/SpiceAnalyzer.java index ee195056..dfff70c4 100644 --- a/diylc/diylc-library/src/org/diylc/netlist/SpiceAnalyzer.java +++ b/diylc/diylc-library/src/org/diylc/netlist/SpiceAnalyzer.java @@ -48,17 +48,8 @@ public class SpiceAnalyzer extends NetlistAnalyzer implements INetlistAnalyzer { public String getFontName() { return "Courier New"; } - - @Override - public List summarize(List netlists, Node preferredOutput) throws TreeException { - List summaries = new ArrayList(); - for (Netlist n : netlists) - summaries.add(summarize(n, preferredOutput)); - - return summaries; - } - private Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException { + protected Summary summarize(Netlist netlist, Node preferredOutput) throws TreeException { // grab all components that are in the netlist List> allComponents = new ArrayList>(extractComponents(netlist)); Collections.sort(allComponents, new Comparator>() { diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar index ce73d5f2cfe6405c897a6c79658f4a7dab370272..19b852f8763cec0f2b634df9f51c61c09517b77c 100644 GIT binary patch delta 9750 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 delta 10895 zcmZWv2Rv49`*#Miw+G4IJc*3VN|8-QRw6`-NQQu`9v_)k)fa z@b4+wkOToPkQ{uuIwcCyAb<{02^fXc2oQ$#2-pED6L1>VCLjtD#jIh7b4BEoZ!mC_ zMAi~E+i}2SN0Cs4fY_f9T|y^~8WP}*t|K4~Rl%XA5lw^%bY#BINYDZt9|>6CSR~ka z&Nhg^X6{0O`*=krI-CFO(_(YZEyMu->as18|M9 zDe(7GF$8#p8ckrzI@RZdJJY%gfKF2r23V;s0kCJiJ}~3foF}Z=w0;xT%-Xih1iBdZ z04wSy3P6+1)&SFu$mDmnCV}J@+wuU8n;inh?Y8;`){eFr0H^G{0XjHN5F@GC;wA^| z_V1DacwskLov1h2eCM7GAkQkl6Tt7Be=jHD=N8HZ)&a+Zf#3UxTy}y#87B|;E9WzT z-1ACK)hCC^%?;jzYgzucDxLyg&z_5!kW$2e!&6?pR znB;Af8Fe5Ah96MMOpjO%$A|;)_a6O2;^#ULUt;_Uh~GN-9`L2pO5o7E_*Dh?nBVo_ zWN-UBM#goVv)1utU|`tCkkXwlkYf9u1)E|;SyPxV@nK;wE?e+5GiiRkn!CJ2O~ zTeCoe?D!K%UndBaAcXKr7~%!OxG1C!1PKX976{vW7IiyA>f}ln_o(A$!1dt3r3U2_}9MlmX(&ZiV6zP9ok2JtwFY zkJkiaGiMG44D9xryJA>gmoTJIS}4?L5V;J@`aMg1gj1-D#3VyC88fmx~f0K4=juWpal@l zCr;Bk@MUXy-B1FpXY5D^U%hN6fJ>RFm4Kp($x#0W{`fq7&0Y|Pnq0l z62*-vNIg^owSYY>Z-SlypNJ>W z7a;hzK^(v)v;#5(!kuT(aUf_shYW$&;g8T37UD?MPC$=z*#jXBh9iK$&jkAb;W!H{34|PWSP>#3w{XC!fSKopR{;UxheLpHi~^gJ z6Sz;mc`*!cuY?g(+X_+Wqatt|dC=oBRU`6nO(xlRniyOKd`+d`)j-%I3!ehQm;!tf z2>vQ?Ef8eZ!P7tx)PVJXV6P3|fWSasrBWA_@tMnEQFi!=me+v|z|?&8;KRW5ts(pX zG?2RqE(MI)R=5%f_@PK6tMj@3W8HSVI!jO;7ATFbqSsr%Zoo{$1`Y&5tR3tLf`4^@ zw*Y3HGmHVD)eXJ?1ZNLe8>CC}ggJ>19D2cSn3?!-f|dEgBLtD;2cJQCh>tdn>fPKU z+zbq!>I@9>SX4ADfawLm0YgHMXRo_oE(+o_NL*JkF zXuc7)yYa?s@HwoZU~v5|1=H|@+J;{nU9vy)v+W9K4*EUq7Mc{z!uYBFs&OWTa-wDM zkiMnT+&#*Lxj^ybGmN=QoL#%@rj1oKPQ)HNiJ3*XJe-=DGM1Z`>aA<48Td5BH8-fN zzpzD2E@M$#F|~e!_;JIx;epVZDb_!Y@qe3WigS>+_3ZS(wPp>jzqCe$`>l<8 zxOP1e(60D)UHrJ(S%2*c#TF$PuAnA4%e+wZ4Dx@cI`}z`YYe_{dd68jO-S65L*{Tq zbnfv@FTLU87B>27J!A2P{Yh=NH9XaE3)cmiEdy&J%|Cko_KX`! zhA%dx`GilhiE|t~e?_W0A(!t;Uf*s{nKKqk}YDBXudwEklRg(rCVp)%r$OPqa3^7sjIm{-M`M- zZ)*{`Kpj!ie}314hck|%V`%eGvhucQ8SBO9jB~o8u^fRHO{|o-8m?>IxYtSR|E;$X zKJ?@B&~7ako$p89P2Mx?J?=aa&O0-s7Ij}+s>V^s;spPbP6sLds}@bgB3kL)!2v~u z8`EN%OjNqFQr(_*$krEHwg|7%8xZADz9sB+gg1hDzg7Mxj@CW-Rf%7k+~m?UW0fj4 zspTF+tV&*XJ`GACw6YH zH|(wG`opzkx~Ljd-WZe?c3i3HkdK zH{{)MQ%_9uuz*)zs7OrIJqELswDhuT{9isu_OsrXG`!YkXMBM-=lGHkCCMSmi58_P z@G5}%p+@CmN9@zSuYUFq{M7p?V#WLD_lv(2i^h7zuX^jS#A{!Dk8*8Cjh~Xw)RD+8 ztDljwCgm07x7<8`?JOuC@h~Y8EY)}EKST|AgLe>H8-2(4cEO;viOG}8NkbptsnXYW zF0wP1cpXe6ra!)&>7r_U5|Vil`fV%COVJ=nMrBXy^`7vjpQX9XrZVa%4qKjUQmSj^ zO5xmU^#!I^m(E7U{Ti%%aN_IHT|Cx~cg`5uKDy3&ak}i$wl1sZl+e4>Y<;72$AhX& zW7M)9kA}GD8OZT@jO+23vdalax7P3F&TzUzH%M9~?ib~tW~0%=w?n|n>%Nj;%voCc z;<~!BXH8O$ZzTlFy;!&`n$@F>(*~s4=R(9X9ji|9+)zR-oKi2BspftW7hfGOZ}7FN{GP+GY<3sUu7V}d@9y4oqy<2;mMWrJB0e^R4+^%l_I_1|&-Jhrm{yxWI zAZhEw?K@TftF_(MUc~iz62I16mLnSkuEhUI=HF2*SDs|!vfzQuEX6GP56%gt`TV*c zd`d*jK&kTXquJW;tj4r*$9=aVKRVqE+G;~PvPN=2W^TR9mU!d-gFn8;uELbULt}Ci ztf&Sfx=ELwT4l6%?fOAo|CJuTPR!!0w3_Zwp4^G;$)@EF3qtNPH`?Z9KZhvEWw#{- zS6^%^U1TynCaPAuH^4uqRmzwtK66$nYJ__IMco=BnIPMp&4mlY4y*4De^5IuR9l(H zIYK*dEWmW5$!@d#32)GOYa5xP4c&GfL1UA*186%sd-iv0s&~cp=L@yyw3wNBy2#c& z%gX$tFXHXWB9zivf+m#%wFTf=VnGL@QU7}GgzIqbldV(jELpD19UJ$8(? zLD$+RwQ#ZSnDdvLLa!{-(LnLl^6!IgZ!&bEh3Lv}7rrsxDYu7W74%Y(e)s#Yi_wK2 zALgDh6xmp2A%B0*T7f#F?}|wuE4r)r3o4`=ggO|#E*e^jZg4F+@-^OO^89(x0%@*; zsSCpo&$k`6S?fGJ7m{+OjQU2(>x8Um{1d6uLsy5c6sx8D>Jd5hR@f}TxbX?cox33t zuhnn%&26_o_Ks^0oEZ%g)$+^75X;A1w=hJyG%%u?Uq%P6Iw$^jcI zep82KWH9WG{9w1JpR6FWc37pF;2Q>h4esIIhd+C-c8g}NM{aO1ck-05%o)X%>^$`$ zyTo!+VAlg$P-83ax(?Zk>Q@V1$n1-CaBm5me8F}`KT{srXJkDr)iug;@66*wr&;TK z#g8>X4p|Nz*uxW1HXrOYt}HR;HKk;BW&2e=ONbBk;eGvZaWqVYbzZ((;aKN~bG95a z+ok*U&em%6-V zh#`$k0d{4fTH3iitO*J+F)CpeIj0u*->M!x>+={ z@o=I-SJCNLM%I1o<==Gf^z;Xr8Bh&lne4A$n=8-|4J$sklQxm5d|GQ4YGkgrFe0mv zpmA^f{N^VMYaDYwee`i}X%2lktN$Q0 z_tsQbZLOF2pzo|H%kNNM^GykPANuX1{NiAfKh{w!0UKBvN`hl5$9ns_5?`dTA4opn zueY}+RkB{~V{YvTO-;@0-p>p72W@9tb5{R&&N`b7^i99+t{Hzg>h_K4Pe+$%@+ zsHMyS{?JIjk_VcuRzu%v?rdMn5^g_pQpb+-6UUXof~|?Z78?hOa+}oej`ZpKb8;kb z-6%+Xa)SSCVA`JWR&%XmDXJG%E3r6R-Hu4x!#3(;Kkolru#Mla&m0S-bTf+`BG<5)rJT5O#Z#14qZE* z-b#XZ7a6|!)os|(Pc^3b?`2h1R9lmuomzYdYj(x-PGI?`3InTR%OkWvg=Sbxv8GhB$%Loi(4& zxU#$&Ounn>Q}v|%wc~>`X1m%M9lotQ%cR(M{c6q+lh`v}lN6bP*X7l;)H!-@r-1E| znxwXu9qvVpFR49uzY4Ve8r|AcQJ~GN6C$v`r1E`+PwCj9G;gNQU-s3Mh+WA%4s(fU zI)1nNwPRaDS$DmTj;Zg|dsa{52-kv`2sMu;kqc6NsmcnwYHSuZbQo0IEL4tae)7%x znLpkelJ)jVX|+w^n#tZp2aLAln|IqrZXGkWds4x%Mt0WzzU|Y6D%a~;8JlBft*Fw2 z!ngMRIeMYFKlz!{*HMxiZe8%zMKDq?1gSknUFPI(_dE!b;OqrN1HZteL#G( zBIGB6v+ASD{tA|s-9Ku-UHP?@LEwnoISpYA$MMV7Sv}bsviywCM#LczG#`Q9gM&|| zV|E+a%0)+?%xgI!knmHqz-Y@U>G^X$%Gxqv<%-#6vRf%#mgTibc6*lGGo2_mtK4*E zRlDNL6M-Lv-_$m3xZ|DJim^G!o85CMK=NjI~Wv=O_Lw!a-Z11Od?Gy~Tc0l%;L zzR`;BPfxwn5u{&ldBeglFSn*cU$*CjsrhV*Z(l{BhxkOp&KJIU)T&D#c=Z!5Jl8!? zoHToEf9sp$R;_O`IoexYOI-GCe%B-FK|hf;rF6glqhah3XkLr{ES_$vIzOtJW02SR zQ!p!R%{^nNHv79ehd9=#WfwzBin;R4fA822FX~e2bGyzO4=sa*u`*X(!*V~a_Tm1o zD*EAOm;7q(&13zuW8;N~j(xS;Hs{Yf(>Nz=-y~LZ`&x0dkJI+uE`7P5oCO72n-w=q z`1SO^6!kMNk289n$;N*&U13qw(96zQrkumJ*JNbBpNF2~Rd=oIq`WBhIhy>~V&Pl{ z%f`g=qoYoR@6|ig`40;E^ktrR&F(y@=lsl+BcS)Kmj{DlPQH8-6Lk+ z{s$#l+l*5A#%>)xT5VcpymPMzJFT>&HpNrV<6+sUNgH!!!#yF#vPu{7>kpYdJ8@Zy z8Ou;@y53~*;IQ_m9MYf_tFLGLfqft^p9ocTx~SUC|>`Kr+;W|W6my5Z?i2L zqMqV;59-Wj_%=8n4mN!)OS9VAx5^W*Fg{Kd|>iV_Tioq2k=WvHXv-9CgOuTwGQ~`pI7SWGQknW2m;_ z{Nr3HkD-Ldc} zL72tCHmrn@nF@~+uY2h+7;Fh%%k*Wy;>3$z`mbyl1muq{yS?S{e2etKvxEC85`FW@X7sJwz70b%+zTnq&49gM$L#gkqigy|rl?=XCs zxOfP4d9=ampSz}(bFq=CAUSOk9hw$(as%`BE69{P2h2ZZzapq|c(hN#Xeudy~ z$Z;m{4RRFhglr=acM`?4KI22c7r3VZfq9=1;*t#;AP~J~ft$bJ72$aL3!+cp!!O7V0)@XKy9f+h#{RE}6R}nwM{Ef^ zGfuAGEw5E45J!SPH$lelnLw6`Q;2UC3*d>2M90>gUjm)nxOZInWmW=;)7BMCCa^H~< z0yDpp_S4_Vct$_SIun18euK-n?kA}~^^>f(>nE94`WNXR_6s3yVz5`gknIF2&yjr8 z9Jzizhqw~_x_PqxxOv2rSdY&m{scPxCg)85jd&Al(FGEt7LfhKdUAoxXS9ge5bKm> z{J2Qgsj)=XeQJqZ_biclW&e2dCkm5=5u8u<5sbuR`|n{&W@T8&yXoQx|P5LcGQ-@ z!DUqEz}@imSq?lbjxRXSEd+{iqQ(U7=0q(Btl%X5zb~UM7a8}|GPZG{=7gOfH|gij zP1+YO;}|!(jnJ#}kaj0|NdLz?s2RcY@RIp=FJl!i-agK=@R5FY%b3MS#vkUx$A;_I z^W)>fF@~Rv_iP!31V}p%0n-1f09ntZ02m8qAV~HVCrH-Qw~SI0vW^f68SgFyH6`Ms zLS#G(A(BrKBK-%2@NK~L8p8NC;TR`O>U)GqdtnjM&Q}DrB=k3z*U)M*uElDSzqFe4 z8(K}~R}&@cj1(p7Zxto?Npua_ciWk|kKhCBodGGtIwS-dFx*-Dhfc^uy?qnsRS0q(2+d)b50KnI2yY4L3M)%;ETOZGqI<5(0G zl=UzBN(|=0a;YdgaEhH{&-sA2JXa-BL2vR_}%b;^|=@A z?T_#T8}Wp4D-yoX#~>wC17vtn>?&l7XLyefR&9mV#{!H;8I{1OxiBAA3NKgGAXCfp z9lu-bV_{%WU15K^n6z&%fO-C>7~xN;JhvGc7%Vvdf10MNgxf|?OyKE2cOkr(LwGT3 zR|IdZAcH3=;{(PAT|pof|F}^`MX=xsSnR(uE4R>j5s5n|;$NC8f*h#%$DRv&a0BK9 zI|?!%NZZ@BmXCqqJl>Pm3a8CC|K)T~1zk;~?^nUoH$M4C!-{b?!K?pUL)Y!%HP7)d zOZb=Wig2SX|8hDf7#;L zI+XaY0(PEY`Q9$GJva+;Sbu#SuoLfG4DWnpj+gI&?b`o2YA3ueJnz6=Qt>}FQ(jTl z$sx>B4b>siWvSumQa^$a!dT)k%!s`mgjxT8th5NYn8309y@NNfGSMA-!gM|PgpaBXJi@J%@hw<^?nw@osAU3W;PU1JNLDoJ)FwZW8 zAEWA`6!2sYdHISN;<0W2=O?mOFR+ya#}U}>NZR*39xr(-8~!A(D7(53*a~Cqx?~-L zx_BL7Z?QkRD3v${R6RVq!vKPve1phiuTiq5D4d1cKVW%!s2b?@=$V&W2boV?B7Eb|)GAyPpaD z`x^(A@B0j5Odd4IVG5(c7gH7uHJFlUpn-5^5Mq&_FIlnV(cp-s0`fVtOCY$n{+ELc zRcubAuRb<3<2D2jRF*=62}JQf4dj?H{Qp&%fQX}cxY#miP{o!&LpZho8ma+kSjO(c zzF9WBg#W`wV==`L1dTp4xahbVg82-w&^Rnm4d7$pF?#e`TQ3;U>oZCQBc5j17BUD}eFA2SosS z`ezcOjbTRf1IC1&9pa+b%&BSs-#tA8z`vO#0G1%jDbRe~ng{68G;}oI25{_?FMvuT zE`VJ5SO^uG&$e4efX2}?I&{*gADEZ~Xa}e(IA$jf`l5{pQwr@GbxDfp0Y_gr(PI(< zG7s4?1JS9WzVl$h;6P4U5j4B#F-RmvDhWbpk@^&HLgZg^I3Y?(3=UcAl-_SKioo!>< z0uC9d(Va)RvS6_?qAwDau>8qyE}G1+%mEQg3oH#vH0QN1 z76G8$5P)?Gu*x4{?Ex2AAy~!0g=83(DGgdUH5*G993@{b?vXrl42*PPBvZ^y*>6Ik zXv)KCLOVe<*JAkqHn|$GxTt^>?s2$LhTo)+!H2Z_hslph7{V$5qUT=65<*Wq%IXx$ z6il~9Bavf(6a&NiX4BDQ{+I5LbF5WTwA?5j#0yAHmJsp~2(N({(g9oql0m)!#kXaJ z@BjfMa6rm{j*AOIfX#$@E)2m2)KkPEQ-GF}BxD4=uTY|<5U};J<`5IW*Rm%>8IWQ2 zfvf-&%t#0^gaF+sNeP>;vJec6LFBO|CLOX)7y?5IMndpWx-k$dz zV1}s_as{yH%OUzesUEaLGyzsiCqxgZ1O61m2%y-{K!O3`#d%06SQ-4U`(gPs7#Mz% zNCi^}3#x7r(gJw!K8IWa6X}YB%?|9DWI}8jK)ZqjTMrn-D?02?=>9;K2qC3KW?D zcKdChJrdOZizGM6@Zli4OklLYVb>&w%?nuISHz|vx;a%*_w=zlfGvt=h8+X!!!&Db zqFaE4O~EfS(3`VGAA+p&#iGrQ!-gXT#BcT@egzB<^}`jL07&Y}9eW8V_QEr4QX+IT z2S{u^AYz4L>|Nl3yAs2Lg{LXZ=LHxZAo zVbh`>F5R50XrrYo*jPa99f#)x_HL%I! zpincw#2O6R16;htgXTg3pU!80L|@#THBBVo(03X_;YcP~I208`1nmMsmZpYM0cja? zLwSMNpNc?Lfua1Y2+afA_`wBZ{>N<$j5kckr|dTaeq)CSm9GN52IO)Lp)UYUNo(j` zAc6=R=oG**@`fV7Y-pl~g7EP%FeItKW6xIs4o6Zcz{ye6eozYFC=w2bdI0J#5YS^F zrqopEPhb?H^P$B+c{q!pjKFTtD1oX1la$g1JqNU&bwam+9zW=Vx&appLr_XU>*px+ z3y|&T95f9Ow*LZ+1}Ho0P+dUg&Nj3XU~TR~RRI^g`%pF(bgc~taXbN5J24J7ApDIC zM;LHHM}u<-j0c4z4jphpi>cr+12LQF;D`dlmuQ4T0%*N7#rXr+DYC%%4(y#oFB~|~ zMPvXD6HvnsVK`HO<>W{l1RzWpgOdlSSH|JskOO@!WB2ht#KFK&B|s{w;P9Zny}-Ez zm^puqvkqu~slWkisaB2C3S@)*4yPJC+RphRNM77%FX01Ikv$A0M132?0YA(tCvd?1 zeKCb&4Y)O#!+8T(__K%;2+jjrL8I;Cn*(o;13k+U$QSx>7^-yzCx#R_X}ZK(3|MYP zJu7?X=Ah9xfHR=te&UFMB|ODR20mSM31Hx9*h>hT1Wxu`PS_(rhL{J|1RP!iaUqX|qLDC!Rz z*d8D=?*j7%T&TOlCV`}AePG4Fx!xWP;{+%>aWFh=z-fYaxI6Pr9xox__E~L!;UQn9 zz$nmX1THdh14e{0OoGt@79XVi7e{>C@m7uZ^?#{p)_(~ zM?kF7FJZx;@M5j3Q2UK=4*~d@2?%?>gps3uzk-bd!h_{7U%;1a73?t#7k#L+84Il- zl{R3!sJ#Z57QnpI1Um!71=?W#pl!0Xqnzj)+qwkECuBDtet>P;HW)E7q6&tC+UtNN z0~(=yFmTX!KEv36f)R|v9spJ&CSf)JWo6;N66!3$egIlB8?Z1y=ED{&8jw-ghfP9( z+k>;^FV)OQrI#=sWXBnd94uViOBf|8_yk4`~R)K-9ZR%}W zz%eigNWg>V2`4TTrB8$#2(-128dnh5a~Ev5;GK#EC+=Uss09yhJ1_&(0=O{n0M6oX z>zcZ;wMddti=;&YrgSxN4*^pO#<;V9BBdEFIiM(DiTf3x5Z=cXp#hRnJCHCuM`{M) z$|Ah=NR@~pvQeHxn2mPqTl5Amp?J9QkzCo7l~5f`w{_H(`C`yGR9;w(zi2mz?Migs$)NpRQ_QZjM)Prl z0~!BuXg}n|j(5A9tG{EA-u$Gy+MS0%+4gR$OEyuS_~P82Dneq;fkstisJWQ7!8wA- zyCT_rN#Z`=Nsw9MBH}ngW$sgCj|NwhSv4{w4_}2lW_s->AM6UKbF z)rCye7s*2ch%f@7rz+2cZ zu_jCEmc0;e2F*03ywKI9R*`6DmwQo&{9l_TXFA0n@Up2x|G;;(v~oB4vg@e#^j`iA z5Evv1j9*-wW_^5j&aor1D)aADgwb@!RD@jNnZto$NCnJ^-tjFmm3h_DV(yKI(0hD* zmt-z3_qTfEhV@lJ)rn`3zmYPT!HNyq$nS499&V;RtmxdY3brA8qxM|B_+T}U13@R9 zUt;txXne9itY0mqGY8)obA#mWpNn{(kLG#1OEF!a>=zsYzZy@?B~nb_W*o7(| z_uQ$wWUe@en=os>OZIxgZ_QF3xg%!n6m4bj?CF>t#Qgw+sa`ih- z?}W{Gj0W|_F17bpEM1yl-;>T!B0ib#l4z$G$A<@6;I z_rs54y4@f8($bl3nJgC}JvPO=iUjwsAaN61${*D-3x#~_-w0g7z`tWjFmQ2i{*d+2 zRdlPMzPh=s{vnRc4#gEm+zK|HY5Y4^AQ~__T+qs~>8I%T1ecizt4vn;Wi$~JkusC) z-BL+y-So5pZD~==$ZE@a!o@GM9`&mwmi*Im)ei8a(q$qjg1%QD@{#} zsHXOT`&Y8DxlSZXSK${1Njp_-7nYv2{T&xJSBYO0ejVMx9DZ}vhS=@pT|YKEzRV|- zIjV@CGj6R}C150L?)Zg?>!y+s6s&1)!Sam1}X=g}c?AYb8M{|#nnV=vlWB|c z8@PYeoZ%VKFIOwg{q)vC*{;dAL|JT%H0;gC6Y`IpDb8Z*#UE@6g9~>HYW1skt(iji zj4ipU%-LRBTwEDjRvEVGH{UJAiOH^*E}ImI$-b(~HO2j-!&8me44&l4$|JX|HcTM2 za!=Frj7~R=nT?-#h}ZaQ{HYnaY!xa7$kN68;Ip&5@(vm-ufdg(X_PA5t#VH}RqYlRW<`)Eu^EXEJ!UP}cW`H$ z&c%H=*RMR$zN{AcM_)S0SgR~Qrr%hX{(z@z3}0t0c-VoY+W9z#e_iMNQBVWCCD*5V zSlBb+%qG<{j@~MDXi~z+l~Hd$S)8``_9qLe=2=dBl|;Oz*S*`x&vli5;r`&L>|Or` zXU8Y@k@AR7j|)TSv9-3Lo(ajQ$kQDjJnzpDx0rHQt9uh+C6a|3V`Qpmr9(Z-XLm%Nj;rwD@jcC7=cCyQP8_r!?PNm9lU<)*nb}6-k*EL z=VFyBxA^#EPSVl&aCA4`-d`%EthLFQtMvteaD6xI4&x>QuaUPW@L7oEqo01BS!~ux zzFYQx`L_a!*5;dey-r`V98;-?rCcCZ&O*DnZxvD|HqGsPncCks`;bUr$+$+oLuza_ zy{h_o=j}2-MeICGH)%o6qy(GC(*%wRFZP|+;NW!`El|%X9GYBmT{D)?yWisC!j+RX zk;DF8Drw;rqIfo@@2 zcH`OFIJ_w8@^NGN+$zkKg6Q=7;sY-V*7LGPioMm0O9bM%0&`>a)})n>%N1uhNs8r( z`3e5TBIbPA1?Jpj>hIp^6^l9d7^KgeE+vX4Z}Hes_XuNeYo`xmPr6Zb}k2 zO?aZbE+R*y_qL0#E1Nwujj+zUZEb&;;fKqUpNbW{WfP63@EG}W;vMah?|0W_={7Vn zOHSP<@`S82sA_c2@3L|mWvCSuk9h>jh3lG!MG2j&CCTeO{$&S`b=X(JISGtN)Y_Sg zdl)O7bpGwFv47ZGY^i~A0amIM)hoK}mqu`tDoO;^XU+Ci*S8hj)cyX>K26!;-=Ed% zR-~xW&uKr?nU|t4xiFv6cD8C=q5_>jtd^^FUn;dKA&IF~HHG5e&3r4S$E>Y6? zEyb+u(N?uPQ~Wf`nkeF*4Hq;??HXoofila=W!vwMis>B*TS7|NBJl+!lKw?nTb{lf zp^G*~urLrj>LFE1%aNh-nu=NsHDY1<)>-ShG~ZlP?T2Omcbw+8*g;LF`@fPAxDM{DD49Ay)&pPy@3^qzh2||?F4dHcSX41Q3995uz^5cta2`Db)epRpb$En z;YpHUz*sL$*}hzAe@9?vFd5~O)UFMq>K)BSMCcw!z9l686xM!pcQMKu8!E$+IHzBg z5=3Xi*`!BTZd}mKbUVt9XOeVtH&8uTFSqN`e3^Eurp!K>LrS_$80V2>bv-9BA+6dK ze%fS|RKtoxO>yn`a`z+F8sp}`fe#H-1`>Q-xp+Y_4#YL%9(M|E)y@z#|0`#-fwQPf+W&TL;i1b5s^ z>TByB@vyG>7Rk^AeZS7VZ9C%@#;ej2Bxp}ax6NI`GqPDA;~_R1^M$q84f3_{BkNje z+U9wzz8)9dTIICHTjeG;#+hYmmXc@f5pxLN=iF~YejnS&JCtW;Jli=;?)S)xJ>GOC zpR({iAt9xTs2=_hX;sjY=aL%|!9Iwh$lX>h|x!iMB(`j*8bZ!l#h?@{C-|5*w zWV|TeeH3%xsFfFeFTa^PEGJzn$*%0Pov1h&b;~dh%l(JGQZ#f7Pm38dr!}OZr4}}> zOPA#GU6$r@`P8De3$}J%wF{>jB5jhtu&e3*@TwSP2rZIs-ExY*v;KiK#3MrXgInej zdA#?BuDc~CYj#^2gKDi5Nv~{01V5knvmvC__X2u*N%z*4kzI!OrLM8WuB~Rv^|(~A zvd#ynQ=Tu1GjeCK=H`uX*Vw-8=1lhp7uM>{-;hbV8)dOjR^A-2Ie71+g}S6rkfD&i z*sZpCFVnTSl$jyPQaZ$@P2?i(bCAi_c$T>4rrctZe84U43c6(LB8`@eqXkxuFfznh z1v8#N09F=jn?Z2jYoit-jv}AerMksV{xxk(oJ=|4SreRtL=Cbu?~)`x6AiJF+tx=s zY_M}1{52D>U1lp9u$QU2ip#HZ=h@m)iA~`%?^G3S?Z+}4-woS)H1@@MI6PbP59?fi zhR=@rcX4M7*Zyd=k8>uE?;Tn1`>iO8IDQdip{*$R=t&(ZUf8QwPQRlttS^aBwN#Vs z{u);mRZUt;)jFXmf7<)Pu5zCpe!0G;LU~;3Tt70Se|r6L;M^}Fba>RFIlCyY_le$W z29W~ik?IIVO;b$ildGr9uXsi8mcHM88xR*78(%ZP{X6&luIx62<1h7MFL|s+#uY@w zWvquqQ8D}1S(c54=E4u=S{D3|11VOM7-NbW-S|zWey5r7e*ek5c~SCmwz?&ySU>2Z z#1}&~I-INQHa3p_k56x+_NGiG?VEd|dQ>Kt)rDO|VfC*WOPiA4S&kWGHu$%hPRK#1 zw8~5#KE&8Cr-ecvQmhdd-2Xn)mf~=YkYB%GrLz4lYWqjhm9bDhe${1}b3k3Fc=mz# z62ruJpv8sOpB(f2{!ACcU)o#WWY1oI!D?Hj!V6Tr_y&cPrPkdWlZkZ>{VP13Q2cSP zL=x$pPnR>9qPaYmQht5g__>;rf+W?{l>z@pm!lF!@ur=!nG=R*6*~&avc-ORFA*F& zrV^r7{&~*rKP1BM<=1}8b1ZkU2tC?_->2^6ThTc9q;#Kxn}ogruI_82Fj{M}|I4H8 zCtVTM$0v5s`P!>$jFNl$kDfG=e2qw)YHPB**w=>y-2OzLGsNMOZvJdeh@M$E(lo z+jC4=qY39@T_wu9{j%0+Se|eCj|0NFI#777;)~z!=6(a8L-wV0;qZdCgFd+Th=Zvs z^p{%NX%e4QbM}Uxe{Eda&gy`ktCXl3qod4;mD0j!oDlRhUE4J{XfmOpW$-S(AX&W! z=~E|8GsaH5w&CL-X2Aj@oPc=|d;v;FmasQnTgra1m6Y%i+URXlE73~N_u_~Xw#JVV z@h;v@BT>DuukE@QF4#;-O8BpZo3-tZmPRZ*Ydej*FSTn=DLly;y7Im#hv=rQ3OP1- zU{qI0zJz)8dP1F}TAE+GDR6v?$z9U&|G}pkS}gwHc>KlIibvbgG=s=I(|IA?itKMh z4=sa*=YC?Y4gYvJ0!deWWt)y*{r8n!{h!fFVk+y7(AjRGVt#67h`P-Kk-XBeh|3VC zsAXn8U_U3}_H;4n+3qJ1FLm0vdaGvt{nZMS>FPPZUyoQlFIgyq5f^^;cREX# z9j!Cv2Uy4aVt&aY<2$yL55=wZ8jhqqdI+Xt#-<+qD81kOyrz$G*U=iW{3PF9uw5f) z_0e8G{V9Lg^Y$c}Z+Ds#B2olf*ywyie8qq5$0UsHh*ZWt z#x2`by`M$L@2vWYmdP&@9!uExjrH0tCmi1i6154iO`KacTh+OEdz5_@+Pc4zl5qgR zukGISN4#LWFz|1&WlG^JBGV%-FAUi{<6|pwz4c2DnZCWC^Q$n$@ac{v&(9@2%rQ96 zd8?u$8DSPz1dquZgItj)#9$V=n5lcI-ynNn_PeY;-p9LiTSU;TZZRb(CDJV03AU^< z<*aYk4`p=>D$5M3-|#%-*DpMtZ@d?W(EF=d zZiQwgmWK=PJ7seBT1DN8QMnW$D#n5}*oIQJLI>SZ#fuE~xg=Z8q{IHXEFSj(SN=VC;yO9T_YEa_r8c&ym&WdNiG1@(Kh~>q#^2a`@MeTP zu|}b;|FOZ~FVtyPK%aN~@v&fVCtcPt)4vu<=fwP?ynxKlUwenP=^S4R*ubAj(!?0n zR$>wgo3P#gmX}gne^>G2tVvY2Hn|pMOViQc09w4)YIC=ZB)*CgA`V4241eUt-5P0s z!pYb&>_!$Ee~H8Q%3w3%skii}6N=`J{`>^)%HYX&f^VJme6RTyC@*I{2SX2B8Fehi zbS`W7AAd?SNtSvy$n0vfRVP~eu0Pl8+oNrhLqDe(T6&8!9#@-(DWbI>XLHT&uMQ{h z?_q|$I9XGA7RtM^Z_kCO$(J>tbB3Gn1a$P6hf&#Z@BS74o6B7!HuEPSEQ7m4Y%!ef ztAl37-cm|~IFfa2F%g5I7gZd(a}>e7t=}U)+rEysCp^lMJ00YkSld#8B25X1U?&R} zbZ$BSdAsWIo%P4sAKGXRTRssIwvSzS5weacpO7Z%-0Id-Z1B58M2X#oIu{?_Q!9%3 z@K)cYWDn+UEbPp>izYndloX`ED^#q1vGZ1Hh2ibkXwk0B+UY{bn!F6{l52nd)ekO( ztmL1f`ak9w^!m?(rJMSv>g5WP_l;VAR%`r8Wj$k6Dd}T~5RWjfkDVs~p6~_$U8d+mU}ESASDp1daKsej4J* z4!(sq)cTa?`U|49huC&WwkPd)o*H^?vR z8_)fw%3*Mfa`N9M$zbm_^61Qv%*a~6Z^$|2kAU2{Ol6oI)4+q0N&JnQzqAg^%g8G( zm2hvEtTt|$J5*mu7edtxtqgUi7>&~N~BQEqQeqtu&GloEbea6C4 z;e@qyqMMp%2i5Yzi1{PY!sQP3C-Cd-8fU*B2T4oSz;Tg#=w*3AH4@6|<_7KJsb7bEVB^6Dg6;St#&jMeen^bqd!x+2z_Z zNu6%|AnEpEPxKgl`W0VRJ)Z4oqo+ zr2Xr4t@^35!vr_vA?)=B1GpT+kK@l~hu+SXS)VX)D)~y|G%-^gmGVB=47?jME?A2> zb7UYMA4-@Bv1cpzS^4vdBv*yoY5fsudkDWg)iR*ArRb-neNMA>X~^}nQLnk9vrjn8 z_$GhyHt(sJv>|5NJjlnVlxF0MD(Q|1m*CA+QV%XtqSX^?-Nc4cv^>bnyatu8QU9Jz zXszn@N2-|r$a?LWe3bi{n7zXww5#%;Ce zTD_Z+Ue@LKLUHHow|Aby91rUS-<}VaJ$HIG$K7i#fUwt`VS9D(0ZG*uh+ndQHcv1l zes7uQIA^^-z^wbkd3fB+A(g@pceu&q>RbM#dP)qwdu`hLc(Okj4f@ykrk9b^oS|Cw z(SKo|VdhcQNQW$3QbfnA6nmwAMaq- zg!tsMEoav3*R69c!%N`HIA-Kx*Pjg0q2-qUZA#C16ygT&)en{ zsc@I$C!=Bv4h$t9F~!8`6TbfM`Sj5(wEIdjfqV0hLoH$q40doZnUM6^xG;p-)nhU< z>WDFyN3NnW`Ke<0BKlvVW8dWyrDLewV<98y>~;DOtz~4nIB>v*|6|n4)s4#j{xku9+SsYbEJNcR z9ht2cE`~aXM*J@jE%}k*`kd4=FW$_2O`U{I-E6josnAiM-O;^!-WkPjU@7jVyixPD z3vh82ZSo289ps z2EnLM`ZT3#VZrF+VI{+nbo`*vml}E5vqXn+7w_|PtK8jUb?(Zy#nw@#?s&^B6QRVl z8g+aMGQ}TuC)09!KY85?uT!$*?0EQ2-rYrn?b+2t_oFV~VSFe4YCQyJcIuF>0Ncgy z+o^XaVn*r$F|WA&tz%s*EIrg$Mz^0w9FG)yA~K!&#!Y)~>J|0&LyFB`{%!b!vg7$D zq0(E}65|hYfAP7F(vr!mXnnC96qidifJuu-75hIr$9LfrEelmbp=NxT2t0RQdbF?; z?o?Pk@th=Blni_(z2seq80fz5G269eJPhSgAXX^Rq!iZP;#&_PZsD4@!b!KBoz-FG zT;JI|mY*6dYsxr+zYS%XXm*Xi6&@-*QYRw)Z# z9)9_v)Jla6RJwBAG{9X%K8{eBZ}APatVtu!v)6+<*%fZJE|tQAh^GCDMhl~)X8Zip z8C~UvBP{Pq@KHK4ei_c?QA-&jHl2daKPb5)P-WM79J-P$4#s^{ebhc3_c+ozoLi&e zKbsSgeg=KKm+VqDeU-sFeczjVeEXICkoB0f+-f2bF$u~A-Z^@MPin!l!bAPQFC=S4wWs>3BvD~)OyqB5$KdDA)Z;tW z>m*;ZkAu8kyO}ha8k{bM^6xba>c|iy&j@i44yqep$Y!SAzkPJd@ai4OadIMJ{XX@- zPaWJ+2g0EN7K7<6KE#kQt`GNC?{(*Axr_DeOa$BMX*ZRoFKi*y;8GnXqaqbV5qg)8 z`E>FtL}Ep}JDa9o%Qcu(Te{)*xJ*Z&`WACYUewR{yqVh6OJ5#zwMjyjEu17|sJ3Dg zkubYjI{ENPqe4a}a|SA6+`Ck>CIi272=F(Kco%L>%wMnYZWcUO&&b75)GzXPxalr+ zfQD?@HpwR6vmHc)yjelY0x2q0yS3%@vX7y*?<3u0hQ%LZDU(p8ku(o(*UIb{i?spo z;?%#cTVl1o!XKOu6^w+csgFx=X1sLDtI*mSjDG#bsFv&%ef{lsPl%eP9(IaM$^0rS zW$1nO?dR?%Bbfth_uqlHYeq%wFX;-t2OsRG<0oMSsOeFbA>N*F5v7KENY{?k&pzB! zp4ChyI1qp7*JU*vCYVm|Jk>H?-WXw%x=x(ztj;+0+=8{Ibk#s0ku&y;VM6NYU(UE@ z(71S@po_WsoN?NUnCb3^!uCsn`@Czl^w7tJ6!PySgDe>3kSd+aZlzh)Ov<$K_!00@ z(|x?MAShYZ6(aWSJY;lskh)6MsOloLj$*|5{?@?9fhd!lp)Z?VJa(dAp2wTVu>9;~ zNk2cpzLslz$cme&tUayAG_NAh#SkU-RDX@wpsWBh}1Ou3^r5(p0lWHvXsiie)@5pbgN-&)>q%3tu+*%H!`48^7H{O z7H9jjE6=S6vxvs;Pq{*vs-guQiI01l>+Q`H`4L4O5%yRQo~Jm>)RFoZl8mva zjk!c~Z;=lcZe^+%XvT5`>I-{y`FO>|dw+J2(S1qEiI|9)(jZ!;Z+`NkIr@GuZ26M# ze3j>1g!rOf^R$j#vUBek!zv245Gp(TCDn;uqkehUQSR;u(QRSKvjxA`3r6oFXgFk| z)aRwly{M$lS-j4rlk0dT2Uj{@X1p`gR|?K1dB@N7rsux;d=s)i*`N>SXPaimQt`TmqS!qcG8ju&cBstxqRF1wTS!hVW+rTd7-=(s9 zd`mi5s=4%&S<8UKcGY<*1LHsh=~Z3Ppt}@pfA}u*q1wW&=A!d!H;1t`3}#$AdYKfM z8~eHviLsV3^s&6!M?A}46-@ig>87d2LIe8G{}O2;e2C&4h}&4wSqxcrS-z_4sqJ1p z?YmfO!AqN+JH{l2sqUVdJtjzE`EW^ND%y0}ky`tyf2F@d{LbgUFOfo%59bGnV#OxL zlg9RWs-vTeva{xHQPzKa>o!0|^Ra(i64fs&UDBT^b+EG&xE2VNQ|bE^LR+atCVq=} z?e-oUIikG5e4D~c&e=P}sMv;71*`Pm9Av9_S*Ib7D-_x-43VeZ7PD zfA5519o65D@L^zJ*VPIgOwu*4C_<&dCirqe|{1d~#xb{bWEyATn+PK1rQB)(i zx6ofIK(b@OrEcEGMcQG(718(#3oeAlX)L$|nvV~GOQTT(0#`y~0tBv&#svsm1C6ZM z@OxZLxGI`B zg#*|6Pg4zzZZJ6dixtSS|8N%u^2KrChG_b8T+rAeF5CjWmVm?U(3k^!rvc^e(SrUfXyI;X zIvE{U&M-Q#EL(JNXEa@#9^^OCgM0=CxFeb##Q?VD8w1=2y|!Qk{k1WI@|;W{KZyyX zA2We%HD(6sADO{+aj}4y%>v5(W&zvb$_nN^$qM&F+gD`+^(xsw`{e9kJmKu1-Woet z7ZnaruZ9DZC*uU|J>>-Dwm89YGvxxurk4w>0|z%KmjPln4_G!^9hOc+Yxu#o!URBhCjn5dLjVk$Sr9BkiXa%)UqR5X zjSyT9?Wa}JBzU|WvFz&H)WLHn)ZAe~VHltV~>{=Z0ob&Wu-tn zMN(k-A=2R5MH;MMyENPw9Y2{2=ocXa^4DcRc{N$kU#ToOj`(t59i8PsdXF5~7Z!Q2 zj?wa~+q>Yl`Ft1L4w9( z255imKNPtK(zEY@cFymC^5&XgUm7&QILNfXIKs8SIQF$bKgQaiezP{%A0{2p&J!Jw zzoP@jp{fh!Tc-=kQR#vGjnD(v+j^k9jy_ngclw||S_6yUhf_^hm#{~ZNbm%Kek|a&URp$ zy>?(a0`_3K&+Nf=um6W~4xoIg1LzCp2+G+xf@A#gKO}Pk%kAd`wt376Zu-C8$`){j z8#DgDZ=_;i@Za2|{Ljzpr=iGVXE^#RmB_Eoa5}8cROBCLxCqn#&$Gw>(ZP8A^j#WK z&jl_HNP$m+{_lgJ|0NZfiI!qU_PW5)-|IjwxZF6%eu2Djfs3HmyskIv(m~`sSGWYu L_P?92D97=^>UV>i7g9G#y9$r9rbIV~U;{W9! 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