From 632db6a9bc890c9fc384da9cb930d7e6e39d2dcc Mon Sep 17 00:00:00 2001 From: Robert Butora <robert.butora@inaf.it> Date: Wed, 15 May 2024 15:51:27 +0200 Subject: [PATCH] mcutout: implements doCutouts loop with Cutout::doFile and CutArgs JSON parsing --- .../servlet/src/main/java/cutout/CutArgs.java | 165 ++++++++++++++++++ .../servlet/src/main/java/cutout/Cutout.java | 4 + .../src/main/java/cutout/CutoutImpl.java | 68 +++++++- .../src/main/java/cutout/DatasetsImpl.java | 139 ++++++++++----- .../src/main/java/webapi/ServletCutout.java | 53 +----- java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar | Bin 22253 -> 28614 bytes 6 files changed, 339 insertions(+), 90 deletions(-) create mode 100644 data-access/servlet/src/main/java/cutout/CutArgs.java diff --git a/data-access/servlet/src/main/java/cutout/CutArgs.java b/data-access/servlet/src/main/java/cutout/CutArgs.java new file mode 100644 index 0000000..2203c9c --- /dev/null +++ b/data-access/servlet/src/main/java/cutout/CutArgs.java @@ -0,0 +1,165 @@ + +import java.util.logging.Logger; + + +import java.util.Iterator; +import java.util.List; +import java.util.ArrayList; +/* 'JSON-Simple' library */ +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + +import vo.parameter.*; + +// The cutout-args: +// CutResult doCutoutFile( +// String id, +// Pos pos, Band band, Time time, Pol pol, String pixels, +// boolean countNullValues) +// +// The result: +//class CutResult +//{ +// String fileName; +// long fileSize; +// NullValueCount nullValueCount; +// String pixels; <- from WCS-conversion (not input) +//} +// +//class NullValueCount +//{ +// double percent; +// long nullCount; +// long totalCount; +//} +// + + +// vlkb-soda has: +//class Coord +//{ +// Pos pos; +// Band band; +// Time time; +// Pol pol; +// String pixels; +//} + + + + +// FIXME or clla this Jdl.java ? +class CutArgs +{ + static final Logger LOGGER = Logger.getLogger("CutArgs"); + + static CutArgs[] parseCutArgsArr(String jsonString) + { + LOGGER.info("trace : " + jsonString); + + List<CutArgs> argsList = new ArrayList<CutArgs>(); + + JSONParser parser = new JSONParser(); + try + { + // FIXME explicit converions: should check type first + JSONArray a = (JSONArray) parser.parse(jsonString); + + for (Object o : a) + { + // FIXME check type + JSONObject jElem = (JSONObject) o; + LOGGER.info("jElem: " + jElem.toString()); + + CutArgs args = new CutArgs(); + + args.id = (String) jElem.get("id"); + if(args.id == null) + args.id = (String) jElem.get("pubdid"); + + Object jCNV = jElem.get("countNullVals"); + args.countNullValues = (jCNV == null) ? false : (Boolean) jElem.get("countNullVals"); + + // FIXME first check if array (or null?) and then cast + + String defaultPosSystem = "GALACTIC"; + Pos pos = Pos.parsePosCirclePolygonFromJson(jElem.toString(), defaultPosSystem); + args.pos = pos; + + String defaultBandSystem = "VELO_LSRK"; + Band band = Band.parseBandFromJson(jElem.toString(), defaultBandSystem); + args.band = band; + + // TBD: * legacy is parsed inside POS and BAND, not here -> do modif + // * still missing TIME and POL and ID and (?)countNullValues + + + // FIXME explicit converions: check if exists and then check type first + JSONObject jCoord = (JSONObject) jElem.get("coord"); + + if(jCoord != null) + { + // legacy + LOGGER.info("TEST: " + jCoord.toString()); + + args.lon = (Double) jCoord.get("l"); + args.lat = (Double) jCoord.get("b"); + args.radius = (Double) jCoord.get("r"); + args.dl = (Double) jCoord.get("dl"); + args.db = (Double) jCoord.get("db"); + args.vl = (Double) jCoord.get("vl"); + args.vu = (Double) jCoord.get("vu"); + } + + // FIXME missing: + String skySystem = "GALACTIC"; + String specSystem = "VELO_LSRK"; + + + // convert: + + if(args.lon != null && args.lat != null && args.radius != null) + { + Circle circle = new Circle(args.lon, args.lat, args.radius); + args.pos = new Pos(circle, skySystem); + } + + if(args.lon != null && args.lat != null && args.dl != null && args.db != null) + { + //Range range(args.lon - args.dl/2.0, args.lon + args.dl/2.0, + // args.lat - args.db/2.0, args.lat + args.db/2.0);, + Range range = new Range(args.lon, args.lat, args.dl, args.db); + args.pos = new Pos(range, skySystem); + } + + if(args.vl != null && args.vu != null) + { + args.band = new Band(args.vl, args.vu, specSystem); + } + + argsList.add(args); + } + } + catch(ParseException e) + { + e.printStackTrace(); + } + + return argsList.toArray(new CutArgs[0]); + } + + String id; + Pos pos; + Band band; + Time time; + Pol pol; + String pixels; + // FitxCard[] extraCards; ??? + Boolean countNullValues; + + // legacy + Double lon, lat, radius, dl, db, vl, vu; // double throws except if json-null +} + diff --git a/data-access/servlet/src/main/java/cutout/Cutout.java b/data-access/servlet/src/main/java/cutout/Cutout.java index 37a210d..0695e85 100644 --- a/data-access/servlet/src/main/java/cutout/Cutout.java +++ b/data-access/servlet/src/main/java/cutout/Cutout.java @@ -25,5 +25,9 @@ public interface Cutout throws IOException, InterruptedException; + public CutResult doFileById(String id, Pos pos, Band band, Time time, Pol pol, String pixels, + boolean countNullValues, Subsurvey[] subsurveys) + throws IOException, InterruptedException; + } diff --git a/data-access/servlet/src/main/java/cutout/CutoutImpl.java b/data-access/servlet/src/main/java/cutout/CutoutImpl.java index 535525e..f89ffbc 100644 --- a/data-access/servlet/src/main/java/cutout/CutoutImpl.java +++ b/data-access/servlet/src/main/java/cutout/CutoutImpl.java @@ -33,13 +33,14 @@ class CutoutImpl implements Cutout static final Logger LOGGER = Logger.getLogger(DatasetsImpl.class.getName()); private Settings settings = null; -// private Subsurvey[] subsurveys = null; + private Subsurvey[] subsurveys = null; public CutoutImpl() { LOGGER.info("trace DatasetsImpl()"); this.settings = Settings.getInstance(); + this.subsurveys = null; } @@ -47,6 +48,14 @@ class CutoutImpl implements Cutout { LOGGER.info("trace DatasetsImpl(settings)"); this.settings = settings; + this.subsurveys = null; + } + + public CutoutImpl(Settings settings, Subsurvey[] subsurveys) + { + LOGGER.info("trace DatasetsImpl(settings)"); + this.settings = settings; + this.subsurveys = subsurveys; } @@ -380,6 +389,63 @@ class CutoutImpl implements Cutout + public CutResult doFileById(String id, Pos pos, Band band, Time time, Pol pol, String pixels, + boolean countNullValues, Subsurvey[] subsurveys) + throws IOException, InterruptedException + { + LOGGER.info("trace"); + + String relPathname; + int hdunum; + + FitsCard[] extraCards = null; + + String dbUri = settings.dbConn.uri(); + + if(settings.dbConn.isDbUriEmpty()) + { + Resolver rsl = new ResolverFromId(); + rsl.resolve(id); + relPathname = rsl.relPathname(); + hdunum = rsl.hdunum(); + + /* FIXME needs also match on filename - some subsurveys have the same storage-path, + * and file-filter distiguishes frequences + * OR + * ivoid must include obs-collection + + Path path = Paths.get(rsl.relPathname()); + String storagePath = path.getParent().toString(); + extraCards = Subsurvey.subsurveysFindCardsByStoragePath(subsurveys, storagePath); + */ + } + else + { + ResolverByObsCore rsl = new ResolverByObsCore(settings.dbConn, subsurveys); + rsl.resolve(id); + relPathname = rsl.relPathname(); + hdunum = rsl.hdunum(); + String subsurveyId = rsl.obsCollection(); + if(subsurveyId != null) + { + extraCards = Subsurvey.subsurveysFindCards(subsurveys, subsurveyId); + } + else + { + LOGGER.info("Resolver with Obscore returns subsurveyId null: no extraCards loaded."); + } + } + + final String DEFAULT_TIME_SYSTEM = "MJD_UTC"; // FIXME take from confif file + + CutResult cutResult = doFile(relPathname, hdunum, pos, band, time, pol, pixels, + countNullValues, extraCards); + + return cutResult; + } + + + private String doRpc(String InStr) { final String userName = "guest"; diff --git a/data-access/servlet/src/main/java/cutout/DatasetsImpl.java b/data-access/servlet/src/main/java/cutout/DatasetsImpl.java index ffe8d0b..7e863e9 100644 --- a/data-access/servlet/src/main/java/cutout/DatasetsImpl.java +++ b/data-access/servlet/src/main/java/cutout/DatasetsImpl.java @@ -25,18 +25,21 @@ import java.nio.file.Paths; import java.time.*;// Timestamp in cut-filename import java.io.ByteArrayOutputStream; // for SODA direct streaming doSubimgStream +import vo.parameter.*; + class DatasetsImpl implements Datasets { static final Logger LOGGER = Logger.getLogger(DatasetsImpl.class.getName()); private Settings settings = null; private Subsurvey[] subsurveys = null; - + private Cutout cutout = null; public DatasetsImpl() { LOGGER.info("trace DatasetsImpl()"); this.settings = Settings.getInstance(); + cutout = new CutoutImpl(settings, subsurveys); } @@ -44,6 +47,7 @@ class DatasetsImpl implements Datasets { LOGGER.info("trace DatasetsImpl(settings)"); this.settings = settings; + this.cutout = new CutoutImpl(settings, subsurveys); } @@ -52,6 +56,7 @@ class DatasetsImpl implements Datasets LOGGER.info("trace DatasetsImpl(settings, subsurveys)"); this.settings = settings; this.subsurveys = subsurveys; + this.cutout = new CutoutImpl(settings, subsurveys); } @@ -72,22 +77,25 @@ class DatasetsImpl implements Datasets { LOGGER.info("trace"); - String updatedJsonString = JdlMCutout.resolveAndUpdateJsonRequest(jdlJson, settings, subsurveys); - - String outJson; + MCutResult mCutResult; if(settings.amqpConn.isHostnameEmpty()) { LOGGER.info("doMCutout with CLI"); - outJson = doCli( JdlMCutout.mcutoutToJson(updatedJsonString) ); + CutArgs[] cutArgsArr = CutArgs.parseCutArgsArr(jdlJson); + MCutResult.Cut[] cutResultArr = doCutouts( cutArgsArr ); + mCutResult = doCompressCutFiles( cutResultArr ); } else { LOGGER.info("doMCutout over AMQP"); - outJson = doRpc( JdlMCutout.mcutoutToJson(updatedJsonString) ); + String updatedJsonString = JdlMCutout.resolveAndUpdateJsonRequest(jdlJson, settings, subsurveys); + LOGGER.info("doMCutout over AMQP : " + updatedJsonString); + String outJson = doRpc( JdlMCutout.mcutoutToJson(updatedJsonString) ); + mCutResult = JdlMCutout.responseFromMCutoutJson(outJson); } - return JdlMCutout.responseFromMCutoutJson(outJson); + return mCutResult; } @@ -95,9 +103,94 @@ class DatasetsImpl implements Datasets /* ================= ALL ================================== */ + private MCutResult.Cut[] doCutouts(CutArgs[] cutArgsArr) + { + LOGGER.info("trace, count of cuts : " + String.valueOf( cutArgsArr.length ) ); + + List<MCutResult.Cut> cutResList = new ArrayList<MCutResult.Cut>(); + + int ix = 0; + for(CutArgs cutArgs: cutArgsArr) + { + MCutResult.Cut cut = doFileByIdWithErr(cutArgs.id, + cutArgs.pos, cutArgs.band, cutArgs.time, cutArgs.pol, cutArgs.pixels, + cutArgs.countNullValues, null);//cutArgs.extraCards); + + cut.index = ix++; + + LOGGER.info("cut" + String.valueOf(cut.index) + " : " + cut.content); + + cutResList.add(cut); + } + + return cutResList.toArray(new MCutResult.Cut[0]); + } + + + // FIXME implement similar for Merge: MCutResult = call-Montage-demosaic-sequence(cutResultArr) + private MCutResult doCompressCutFiles(MCutResult.Cut[] cutArr) + { + // FIXME do compression here + for(MCutResult.Cut cut : cutArr) + { + LOGGER.info("TBD compress cut-id"+ String.valueOf(cut.index) + " -> " + cut.content); + } + + MCutResult mCutResult = new MCutResult(); + mCutResult.cutResArr = cutArr; + mCutResult.fileName = "filename.tar.gz"; // FIXME do-zip-all-cuts(cutResultArr) + mCutResult.fileSize = 0; + + return mCutResult; + } + + + private MCutResult.Cut doFileByIdWithErr(String id, Pos pos, Band band, Time time, Pol pol, String pixels, + boolean countNullValues, Subsurvey[] subsurveys) + { + LOGGER.info("trace"); + + MCutResult mCutResult = new MCutResult(); + MCutResult.Cut cut = mCutResult.new Cut(/* FIXME eventually add here new Inputs(id, pos,..) */); + + try + { + CutResult cutResult = cutout.doFileById(id, + pos, band, time, pol, pixels, + countNullValues, subsurveys); + + cut.content = cutResult.fileName; + cut.contentType = MCutResult.Cut.ContentType.FILENAME; + } + catch(MultiValuedParamNotSupported ex) + { + cut.content = "MultiValuedParamNotSupported: " + ex.getMessage(); + cut.contentType = MCutResult.Cut.ContentType.BAD_REQUEST; + LOGGER.info(cut.content); + } + catch(IllegalArgumentException ex) + { + cut.content = "IllegalArgumentException: " + ex.getMessage(); + cut.contentType = MCutResult.Cut.ContentType.BAD_REQUEST; + LOGGER.info(cut.content); + } + catch(Exception ex) + { + cut.content = "Exception: " + ex.getMessage(); + cut.contentType = MCutResult.Cut.ContentType.SERVICE_ERROR; + LOGGER.info(cut.content); + ex.printStackTrace(); + } + + return cut; + } + + private String doRpc(String InStr) { + LOGGER.info("trace"); + final String userName = "guest"; final String password = "guest"; // FIXME move these to Settings @@ -139,38 +232,6 @@ class DatasetsImpl implements Datasets - private String doCli(String inStr) - { - - LOGGER.info("doMCutout in CLI/ExecCmd not implemented"); - - /* - List<CutResult> cutResList = new ArrayList<CutResult>(); - - Coord[] coords = Jdl.parseReq(inStr); - - for(Coord coord: coords) - { - CutResult cutResult = doFile(coord.relPathname, coord.hdunum, - coord.pos, coord.band, coord.time, coord.pol, coord.pixels, - coord.countNullValues, coord.extraCards); - - cutResList.add(cutResult); - } - - cutResultArr = cutResList.toArray() - - MCutResult = do-zip-all-cuts(cutResultArr) - // similar in Merge: CutResult = call-Montage-demosaic-sequence(cutResultArr) - - String outStr = Jdl.encodeToJson(MCutResult); - */ - - return null;//outStr; - } - - - private String generateSubimgPathname(String relPathname, int hdunum) { String cutfitsname = "vlkb-cutout"; diff --git a/data-access/servlet/src/main/java/webapi/ServletCutout.java b/data-access/servlet/src/main/java/webapi/ServletCutout.java index 35d352d..7ac6c45 100644 --- a/data-access/servlet/src/main/java/webapi/ServletCutout.java +++ b/data-access/servlet/src/main/java/webapi/ServletCutout.java @@ -57,10 +57,10 @@ public class ServletCutout extends javax.servlet.http.HttpServlet boolean showDuration = settings.defaults.showDuration; long startTime_msec; - protected Cutout cutout = new CutoutImpl(settings); - private Subsurvey[] subsurveys = null; + protected Cutout cutout = new CutoutImpl(settings, subsurveys); + public void init() throws ServletException { super.init(); @@ -129,60 +129,13 @@ public class ServletCutout extends javax.servlet.http.HttpServlet } - protected CutResult doCutoutFile(String id, Pos pos, Band band, Time time, Pol pol, String pixels, boolean countNullValues) throws IOException, InterruptedException { LOGGER.info("trace"); - String relPathname; - int hdunum; - - FitsCard[] extraCards = null; - - String dbUri = settings.dbConn.uri(); - - if(settings.dbConn.isDbUriEmpty()) - { - Resolver rsl = new ResolverFromId(); - rsl.resolve(id); - relPathname = rsl.relPathname(); - hdunum = rsl.hdunum(); - - /* FIXME needs also match on filename - some subsurveys have the same storage-path, - * and file-filter distiguishes frequences - * OR - * ivoid must include obs-collection - - Path path = Paths.get(rsl.relPathname()); - String storagePath = path.getParent().toString(); - extraCards = Subsurvey.subsurveysFindCardsByStoragePath(subsurveys, storagePath); - */ - } - else - { - ResolverByObsCore rsl = new ResolverByObsCore(settings.dbConn, subsurveys); - rsl.resolve(id); - relPathname = rsl.relPathname(); - hdunum = rsl.hdunum(); - String subsurveyId = rsl.obsCollection(); - if(subsurveyId != null) - { - extraCards = Subsurvey.subsurveysFindCards(subsurveys, subsurveyId); - } - else - { - LOGGER.info("Resolver with Obscore returns subsurveyId null: no extraCards loaded."); - } - } - - final String DEFAULT_TIME_SYSTEM = "MJD_UTC"; // FIXME take from confif file - - CutResult cutResult = cutout.doFile(relPathname, hdunum, pos, band, time, pol, pixels, - countNullValues, extraCards); - - return cutResult; + return cutout.doFileById(id, pos, band, time, pol, pixels, countNullValues, subsurveys); } diff --git a/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar b/java-libs/lib/vlkb-volib-0.9.1-SNAPSHOT.jar index 554db77940832d36d03f0cad3addef64dfa3fdc8..f1a6a61c90acada94ec801155a5adc9f30d1b1cd 100644 GIT binary patch delta 22829 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 LDYj#vT*UwY21|r` delta 16365 zcmX?hpYiQlM&1B#W)?065Gd}QJ&{+1xu|#cM3b3d>Vh1Y`l!KI)H^%k&X;B9ez7tz zEZ~`}&Zt=bI#@Vd<bSNtCPTdif`a#>U3mpq<r{3aWK?wUCiEt)-C8y|=Fq7$^SgJK zTw1<utN!nI?N*m1e=n?e$Xy<KMDlk2xi9%eR<`BljVw;>(|ErBwBBF*&hq)Z-SvO> zeqcGkS);wMEiw4un-eRi&3ekW-70C;)Jv5Db!`qgZ)$YxWa^z5CbcZ+Ddo^@pC7C{ zJDTUK<U17;<;9;hL(dntt@HS^D=NVHQ{S@kp4B_+@>i{PTc-Rlg5_;~>`oD;W}U@+ zUzgN57@Is-IsD8+^yW$dvxLPh8yxbJZfszg=@a){v;CmBpvI)>7gac}KX2K1kI^~f zSQzK+l$_&zT$%oi&TD<^n`NAnmvqf_e3P^y@D^*Y(qqdvf=rgN%3Il2&8$v+I;%yj z&DQ&L@~(5ntLjdjdb0UWL0kTkigOozlso?Nu<wn~sO?JBVtx2%MN-r~56_uxi?iBv zzrC3=YtiMmtuo6bwx7yywmv*<jn(PoWfOzude1U;R=yp`dtB_C>}sj@W{Y~2h0bp3 zeBnFNPn=ONjVnsa3^R3cZajF%w`0G7>q74tmvk36hl;FIK2j*T_r>BJFP9xW(8g5n zSNW*%;7TEX-d!wTru1Bv3n^u4zPvPc{&s7v$2~WABeJ4S-+p9}p1P;OqWMWxPEl2> z>^;w4hd(4cMOd9IFxymAudBWK$7ff``sWi9II`M;_oz%+n5@*Q$MyQw;T1<!7yefL z<SN>}?j@UHi{D)Nz0a0%JMWNMv`*yzBFW#=?_a%EF?E(h)4v%r)oPq$jDNV;&3<x? z^=fauMc%TITCc4phWdJJF>KKfv|qklCt`EfcWP1b&Ph4tOHUj)l^n7&Q2pplp}twO zR3|FcU)<F)%`ikg|6+yBr~eV*rR~OxJGHl*+NMAEifdQV#IwmJi@KcFW(DqEndNAp zX)Uukq*3aH+#IvdZnyN-{#dSS94&bz>0F>`k&ogctEoy0TV`$#s&OgSUz>hgQPFSv zuPvEYDU)YOKR?$qbDK0%g?7vKk9{rWu5$a1U)Z$7)3~1NnU22H>#LIlO`p!VCUf}i zrxINz+e^l)CSKclSIGSA&6=&@38sz{c|spNt^3SXdsJ5==txMce+J)jr`qm^N0L6C zd6w%wGmtyRa#g|HZmVqV%yrq3Ov|S}nG<fm*vsg>#^pm3xws!Ox9xN7$~>#Yclc~w zzy3+lvjI9m=cj7Vt-rYV?%Z(gr}@S_I;U>WIaOL!+SI&v?!|jgdE}=@J4B|h^%Hp6 zBWJfS=3j7CSobHNKTSKFXP)>av9@25ZF|zLtlM{{eNa8T&$Kn@&~={O|75*P4=`Wm z_WbE)daFNoN6+-kveq=ykc~4newm~#TD1GG<aYiG&)tOM6widt66J`jcdiYNzG2>f ztKxU?l}*3<59)2VKl1Ch-sjctq#rCVV^+yIQZ?)9Lc!}TbJTmUF9_0K$mn^!OXO_I ztG#<ozRvmAoNzusJur1%+1fJ#P5V4oh;Hk-(3QZw)z-y1`Zu%5zekH&{#9)fzTp`5 zM&)<;)R%mTY_op*wRY{wK9b&f{3K8PB#sOBlo#C=y7!Y|_wmL4f!`&n_1nMO9%-~^ zQeW)PWUr(Xw#Z*hfbmGtmGTt1i*fav_y2pxKVkOYUW-qEZTYXgi9cY-f9=|v|FX7$ z^_+J){t5kYvHbJX=tshqvd-W0*!!k7x1T<se2CTVI;-#vm$!0OY232;@|K29j`^)l zqV-Fg>ukUH8g?C?aVU^0U)*x<>_fMkZ%^SUztI2Qpke-t*I&XnrO6pyZ$17Z^UXos znB`XlG)wq5Ux*F2k1BbsoD#de?SnDTj3;q|r_OTNId5*cV{8%_u>HrY^6T$K;_Bxv zdUCXQhK4I!PX2FR+s_h<^Dex0TM>Q0qM+XJ0He57{i~>_s^`8fV&%D}wA6XZp<T{R zK?12AnsKw1WElB1+L`xr2d<A+D4&w~@lwW|NqJ3v)-SVyZH_J4X0<EG>}BGX`yDpD zSs5`avJNKfWNrR`w29^AP6sKybr+fB?-fYqCG`FJ`(&+o=Kp24_r2dHzw51g-tW%a zb#3SGdLR72y6=#n`Hf%vu*!pjp{RHE=9QdjY~Y$=al?_f%<K#d;e3;21?20)eisX0 z7yY+RHT&$Q8!l#>d>V2(gi{tDaZorYp>eF~LCCR&l^lkZF`nIfE4HqFw@zkG`0Rb3 zUKsn{UgG=NZ@#DWB+mn-X&H5|ebPR8|7$q+W%&npgPC)x%fmNqJfpJpSowL|-*=1m zRll=Lf4@9lFNSRczx;{}M<2%+XKf*#?E3Q`Bkd9jtFsdJRGicJ$<w)aS?;gjl1Vf7 zHFcS-30ja9!P~27`I;wW=V|S>{2k2d88Z(qm~_ne(8*ms`x1)|mHSp_tyn+7qTxZl z=*{TW57|^CA5BZnPfxI1_~z0Ey`XmjU3t7O9S;6|>$EZMaPPz>0qKpN2YsbV7QT)- zlzpV6-dn7&bD}Qeoiz`|8ohSx$+>2;a98NzTqjZG<kb@#=Qq_QW@|fN7m7YElbv^J zqhyp?u~y!3SuQq{oWtKV%1rNXVQY(>e!lX_!OyYH;SzZ#eV+aL#Ots?{)FY$MX5d~ zPF~2m(>a%`EOQ5UxpB@Oy;&>5d=_m~+<fCr#Z`0J+0pfkMIJ{LzG+BY+93X0;*vI_ zWSGC?zYXGNUo0tZI=kIOMj#|fv@Xu&>4J_+VWO5YK?M<qZ7nvbq&9s{%}_m*Hq}Xd zVsy=~+#S;wE%!FA<W08F5)09tT$Jm*IcH|fy5NGI#A0XLtjJ>`+uQE0j5@mEuk&;7 zwmS*Zeg-N2Jo0<%pHJB5zFoF<TC}P1YU@0Om#W9V?aZuxG&lUIs`F6`zpkVUlcvmL z<y~GN?_Az`UP8Gq_R&Ah%k$Mve%|@ET4}%g>^Ff&|IP?0a68OgQQ+C}igCKD(AimG zo_d7|-+piMnv|fyrKQSv*0gZOk0k;Q!t7iZXNifh_7_W~B^YWH9j||!K7A&~WYtcI zoQFpeEhb0)`}hCy8i6_Qy99QJ>~UGDAhNGbDoyg1&ux8<MMm82u9N17OYhL{w2%}1 zBA0yQu1btA(~cNdKKD6BH{YF@y{&Ldn5NV_PrZJHndM%0v<j|^d=8NOzTDU9$+|zE z?A*6Sr86%&nbtSOr|;h{E}qpZ>fiPRgh{QNuv7kI?h^adX@4^nyN*msvYMQKX-`|r zLKn@Pl-IMIB&ya$N}Fl#j9BS5SNp1r3!}cc?nNeErj3D<R`g^((d(V-yJ|w>*_QL( z#>soM9xr{sdaLWbOYVYZvx*BVZ>Fwa`0!s)uhqjVcP16y5cwUHn(|(tZ$$>5RiA%7 zPetjO56kCnx<2uMwpQHHY_2%*&JS$P`OT9v&s!P0dFX0fJ-p|M^*fov-rb*7S=ikA z3wGy7#^v8DOv}2e=DFq4p~=Oei#clwr!?`um}J7^+f#6QmO*WE)x&6>>c#&;R#xt_ zJDbj1yF4$V?M2GGI5VBiPB%8i&Ebv;3Ddt;Q~!4j$KrFhKB%`HJaH)Uva0a5Gp`TC zT)f~LUG5t5^<?f%>-V?59k}$gK2f4;S~c6(!=FyQ&X>P4O?J<<1NSv}nV5BcY<(zu zN@`oXVaDQZxjU4_zS|rQ{@~vhz5kk{#*PCUUj7PL)y~i}`=!|hCtZEN+(~&tDu#uX z6V8|X*b``XyWV5bHNVG?O{{%ZAF<l{Unt`LweEm>%OknxE!a4Bm*NFSv+I{spR(C_ zZVqWU_FZ60gsA^R_7v|Me-bl3r)spYmwC>PzO*(r;;~O{OP_~cZOgfT`?d(Z3ZCfm zYhK&$uO1g}xW2nC*eGJQVD`TKnQvVBmu#9GGikEb)Yu;r|9Ek{tUvDI^=bD9;Ymz) zE~{uxdSR@1ak+=sZAl)p|B7Z8{-2$cX)-ay^9AqyC9fu@rI-uc>=jw*`(<&r@Z3{* zIdLM}4_e)HwCR3+XvbfZC7-Jo=>!~Cwu*i>@vnH9LCleN6G9f;l3%5=^`YvD5NFYa z(=Og|GBFl8YxhO?WbKJZ60wh^>P`BuXUZKv|Dkx%b)|Q^7=6FVtrZJf7qG2I#a;i= z?c|&P6V4u&u%ByF$0__j>|46N_IgE4lbffxfAA?>xp||na*kZj^2cxW_wwk<zCYxw zzfbDGrH`y17_QClyBxRq<9hygXSTUL(3_(C<L1#1FI_)`n0@qpU{qx&xtCotZGrW| zdas*T{LHVI$Ud%mvv9H8p@to5Ni*Ixvj;BF|0b!m*63`F%)&!EruS9zoPVrwZ_(+i z>>}4IeI5wUIr3a&-v2=L|4fs=uGuFo{(-w={oksZw)jWkM$^|{@qfw{Ddf8R(f%K% zaSJa0<jvf@FwQmVVE%fgqw5w~U)#6wui7uc59KaO^(QvAAD;65?SBE;&jv3qO4<Y+ zT-+|ly@KKATJd!+S@?xj{eH&8Owrn_xbmz?wcQ&Q{cC&YD&#LxFqVJ(@A9F?sv-J^ zW*=8xxM=gbhyyYgKFpZ#df8HS-3@|Oi~MhPeG9&R>;2Asf4zi%8?JJ0{Kfp$@WRDy zkNUs-^R?Wkd))r?N9FZJf2{9Kjh*mNzJmY#;^*2ZwPr*FqxhP~lUGU_*0)_+raN8i zj@d)8#+Hf)N&!=*t>_EBx`N|t=HoR|;@73u&i%mthwFSpNGQiw<{uhI)`V{D=-zs7 zrm?kgx}JSqoi*zRneW;&oDMc6F6Nk=Sf?~wdEJkRCt9-Jow&l=R-+<uhO_^;QfkCH z^KX0Wt8H}`w`^+d>h<0rxvGArZAwIaX)}MI7~k%iCw@z+|GoR?X14XdW^nBE+%pFh z--V@bf4WsN>%a1~*pS?qgEGykR~5V}&IGJ5w-S3MIgRgUi+S=q8IxMcp2H8*R314- zYpyi$KYMJ^GtGDVK5f5sYg5kSS=%D4ZQtJwJHNf4`QXkImtM<v86<1iazEDS+$3&! zQ?9=G;w0v*gk#-85BvLnIqiM;cZN==f1Ay{$6A+uoUxEiv8nN&Y;kz1Ltm(dnKG}} zm3z#-o-c2CN}M+F;@hPpeX6mQZR+ReIvPjBGrvVG3z>P>Q)pq7p?~n+tx0z3>8)ZV zbH&cjnH4wj+KD1zZIy7&T9-zX2PZjiy!?JDJR<%}>P)+1YcBp~Nw#k1X6Y6$=v*-K z@OhEAV=`g|qNaC_S)JsyIg~t!_0FOrY4hxsnqQc~IQ?JbjC|csFXqJ?Y?x-fCU}Qi z>8|%rrdhq4v}V$>uhshEE9-vExulO0-<$VI7c+5!`qQi%8<OKTTgiQ7tdDQ~Fgc>* z!+8UhwN<mu&QE+J<MW{X-$DILC+in~;PAfW-|e(KK|{&Se!*FNpZQ6@e%L>h;#yQ< zGi^qamw2?WXi$R^w|sv+bN11yj+wek+0W*zw3W)M7w5EbG~~M1(KLNuP|mNsHzMEt z1SX$aqa^C9^*waui}Vxo5`OIH5AHPds`e@tERsCGH0Gf9P20uwtm{wBj7M>HM4{%- zkBLkS423KV3~~&Ud$ScL|54ztpEhk<ly=ktQJ1x$2bV3=k7}M!F{S0lL79q2rpFWe z7I*$Xb?Jzil&}5o#XXyE8?Q~;>06eUHm~wo>htI8*V{ALxH=x?IDDl}{rkm&-fb^u z=B>-xdUnabm9J;M<&Y5RQ*h#WwR-yO{PNY(Je`+Ze>8D$6uY=IeEReC+%kihM-ML5 z2dta2z2%|NafwAPGuPN^zs-BeW1O$|?25o)QPIFY&X`mVv$uW8Mm|d}EwxR)f8u7_ z<x`<j)oGWNb7X?GmRSnTSm=`8pu7C~vYy{<ca62*ONIqKUu2%M__ppG;}`R?E!Q6U z$<yTU>3m_#;nKE%i$yy5y@^Jq5<4faYZbh*;%5C$1Es`*kJa6e&BR>qZ|c#r41TFN zH@MH<A$9TRzFBhGk$sWxwn{IHHkC4q-1Ogbo}8PccIm9PSmPLPfgd_u&Jho#A1KZL zesB?&(ypsTJnNqe=}qvu{$gRb?``>mpX{5p;$jX;1!h$(e{Oa**ZWByM}F85;nbUN zs`Ra5{f{cww|!(3V%zuFVwtwQ&l%N{Q@iFZ|9C8O>C~^88`m+M?9ksi;bO}TODC3- z^A0IJyu3trg2?=9$6tu|%vbm})1-~(uHwtt>NQN>cK;aNmV|b1JY%Tle}JX#iT)p> zyMIJltxtH_=knZbQtW4tbvUbYRxa^dg2#@oIU2I%s%r9AkNm3t(fVY;i9?SUzEAk- zAkVmW-Is;0z9!6nW_`m|;`@Z}&D;Mzcw^qxdzQVg;IRPXN*#@$z@<gT8lrC{PCEC< z@f2v)Wq!}pb6WRc;gr=CI=j<L!ak<d{xU~RdQCcl5-O|=42)b13}Orn3}yNH1&Kw8 zxv3?o^+oyt`8j&YIf=!^bHgITMchUHWo^rA3)~<o^5_!Rs|_z)d`-B73Y(hv^h}f% zd-@noady6JTXtRG<h~hC73~$&`}aM$n!`T*$P?Y?Pv-oYZ}a5HovbzkW@kS?xn+6x zSM9F-es7oQ{=Z*;Xf|B_5#!vlu=3#PDLc+TZxyL~*7dypMTeow`j~U3N{qhE^PHF` z@yt&9$#j0o(zhvYm7OkKPDU~w&kxnM?>>6w>B`8!3AM4Wx0@`H*miG?)rKYcyN~Wu zkuY0+p(U-&W&hh-MGXs0W8F7pD{(SMo8|;R(iQm`r7se^D|=C+PM&`v`z?t{ERUy| z+F9787@9l{6O3^BR&V;q^39bE+O2nQ1UH`#I`O6HxmVt9MrUu^3FanmQg3XpGI(UM z=)_#d{SouT*U9XP7EsNsUf0LRmZr8*p4~*oN3nO^tQXT6jgF+*-cGd$eyeMJxYqlQ zCiixQU#q^kuZXHSC1`qbUCOBipS~@*(Cs{>v(ip|)4b>hpLXe{ztEmge`hMotEFG6 z&RRvT4>uB)3~hdXJ>}Var<Fo7z7J<;RW<$b6x8^lul3@%WSbdFMe*Y1T^gLtPL)Nz z;(0PV+w9tOSC`5?JIHf2>UgHsg^s@IoiSGpJ)X?!)0xOA>&!E8qoM5c&SyndZX*6) z7Cp+WpYr0#lD^X}pDSg<Mg6Y?{i#n8x^A%WVHMZp6YE24OYC0!u9^61!UM;1d@CM) zyIxZJHkQkDibU#vk-SxJ_Mf^iZJpKGsw?%ZR|`TI*>Vfs{L#&-XG^YCT5&tvDzV8r z_27kso37JOZ}Pt{yH$K?{oa2Jkry(vSen?_G((O%9&TI|XC3OHIPL4Q)?IDewDqPw zuV3C`zs@Rx^@ZpT<Ab%)AE%ymSs`~NE;@B~pV$@M&zXK#wDhKhP3gb>>WX7P`T>oA z**Yh=i<bl$mMH%HuXEMcVat+9qLYow7C2m=7;xfLlV9n}wLY!6FRkYK2>oSUZlpJP zTKG5aM|0LHT|0RxQPux!*|pCp3bk=kqD9AM^UV^fkMMb<yJzh~+0x>BsV`zob9Zy! zo3o-KLQe8|g=5t}rNh&&imy@HkyA2b_vJngtKxa);d)nRDoAUtD!M9o{|8^l>=Q-D zH|A*mD%s=z*S$8cZKd(s11Zl!B4>Sm>M$$#(3hBBcg<$@@k>7PnqauZEhhX&WIKB! zhsmAAr@zmCkolv2O5*qZ-9e($TQ^Qun=<QY;Fiaxd;IR`K2kdJKH$9Y$NUzX<@&Rx zevw_gyo`(W)@-$R+>?3)-o7wf)GyHgK-}b6Rh{b`+ZUBmyVt)E-cWO1$jp{wD(l*} zU$U637shQ(d$W+ir)b;sZ`K8~{i3G(F6xk6q?yz1t9>}<#Ku!MWdiHl>v%i<a5_6L z4(lwP7gn{#Gr;wS@}q^jAHGw~c`5m})=I!uF1z#XuKwh`x*HcSe{_G*R^5LbZv|^w zzo{F1&Mi!q&$V-To?OE0ZSm*xUWwnoZoa>3YyaScdEz#ap1T(^-l_()Yy3I<r7Gou z|NZnrmgj{gElF)N-?Vt|>|L$#pnf4sOMJPL0oNfum-&Li*AF<!^oG=@{8Qj%lXql2 z>3L|`0dvXUyY?TS*k19_(2s%N>4Me*mx>ytl09>lFYB_F719+oerh0lV5_>t)O^3c zEq{NmxS0Pm`B=l$e(CfzHHR#+pPD`v)m|_Cd`(U9A&F(7#(Ec4Nn1uq_jqqn>(%z& zVkVV*&ACVa;j!|J(3^>g2D3RW3mC);1s=OBeiFgDtHJ#6WsY}~o>V{l#b~$4_N)Et z<eH}Q7rvntu{pcXyH4)X)~V0G6d+RfPGif1xeC?7cS_E!G`Lgns)kve`;m&`nKhGJ zeylufwR_67EvcRVPi;J+D|OcH_u`)C_pVyB_o#g@I9GY@^PK9cOY`^d`^WHs=X_|7 zfzR8WNBi5-OU@qn(zQOeKJNb$_B3-owpQgXiJMiW!RaSV+7i5())XFLjfjrVu3r<n z{Z**oo&yI}5C2O0+sYC1#N(7h@#09~MsJzS9>W!%*KR#FTk2%WeZH%n2~3l<j#(@# zn5lScW9;!1iStjTcORP<xP>=;`Hqcyv&)zcr4_m!H95|+ZqkQ%hqEtBJqylnsD5^= zx^3#6m9JLi{-}Ey;=pfn`ljaGFaefH_0t|()jyL+N<F=?DYWh6orF}|`<DcKFT|#s z9x*N8^?dl$QY=8geEQrUJePO=`LKKPDfu};rS~sxoy>dMaQ5DJ+g|2M-Zpa;`>#CT zzTNO{fpyzmBOC84?J8Z)0TZPcEQ<MXa1q<1U0WYZIG$IIQJJ29F<QU;O#xf0@nkLj z+=QtT!n<zQf3|w&?d_30B}VA#m+hIq4r*WL51Aqvl&&dJaktRNf1jS=<QtsnsWa7P zFa6sWW|UOPxas4CPZ!i$eN&G<;#7J1et|=2_mi^|MfbbNuhf^YKXxSjlf<+aJtt#Y zKNxGY{a}}vc+q8+u8d+akJ<<2{}0|@I_Vz}am;q+^1Ta#4Rq?2o%k2%i7ewU%>6&7 zNc6kwYZWa6?UgMz7HpU(s<G*#<X7tm>r3t~`P#KBs;qA<*W8|5+w-cq{NjfRUj7<i zCM^2WD{;wOseOjMgNv29=*tzCc8X5*bF$i=d`Z&Q=^ew$zl@BkZ@vl2dH-hdU#fdi z-Gis)V(_6X)z8x4I-i4qfdMj@XsH*;2p&v~OLAilU}In~;+ecaU$H(cvREWk<lnm- zSu5WIjV&8G&I)bfZE<B{JT$FQ#VAriz(>jH{F$>$JeOC$c_-PqXwjp#7pp}=emX>c z;tJ&wiI}J*zoF*I$xWx!e@bf1yM6bhfYC;c$+LFPdw-{RU-7%0e{b7=U&gTIaW<!7 z+fvuns_SpwVkzHw_fo#(WXscQ9O_#fU%mI{E&cZOREOiFfQ1Q+DQ&8o8E3sMn7vTz z_+7@kXC!L^jJf6{Ry)616LuwvYhB)!FBw1Y{=0JFOw8$q?8z_Q9oy+`Bq74e9e7mW z_Tt&Qc28fpYavfrz_Fw~DvEkbrW@$!b$(fT{!`Csfjohrmhb>&5v|I^oCk|~qI9Nj zsCPQ(wPqIUcmISAE0Yt#&b+BSYY$|#O}M3VWd+x@gtZJ$c;}v5tDpY<#2r)4*OJ$! zP20`e{M_Vm!(45jg3GogdWS!+(_6H$F)>(xw{&_|R94`GIRU!2<yT6cE-}4Za%A4* z>qarhtTYO{iWfJjnHcNLzHqFvJvGhb`;vEk7f%${n_ezu*?TutrboE2mwUy{B@0+* zclsVSI{9?sl88I25@zpTvD0YV;?P5UtkxIJx=$_%^^l&zJyq`G<;|NO`W*WvuJ7>Y zsG!qsgInD-n|d-gvN!L`$oc=kM6IWcv;D-`=S%s;N|aCMN_uK2MZ|LLYRx*Sye{9Q zkE5^SaS)I7>4^GoO_{S@);HOG3BHx})5d%=kM!xEmg$-s`hWC2>bPLM;K7a)C%CT9 zI(Ot0^KmPG_K)cu=R;3#D6m>^@ayXOf4@wZor*1Sa<f{a!zi}2Wb$`0wM%#G)>RgE zEnm}<#*?*8@7ckmGr<oze%}10`M3MuMbpiNlYeIByv{i>Z)e?<ohtR!t;Njirb()M zEXX+6FwfX@d&1=%+aLbVoI9Vt+^4)n{PUak&6&-OsxS3kSn=-a6uD~|@}$K2hJmkI ziLt6$;wt$oS!P?kPsP=Dmsn)BJ^h@<+H8{``i94T4fpY>2YP&+=B>Nsc)IANi0=Kv zcMY{)>vTQLm3(fX`A~M^<@ZKw>h)J%JG;pAT(j_>pn{0gJEqy5EO>e|g_osvY3!_- zraLy<rA9t(ElRDiThLJ>`7wRw2kozGq6JsHxWJR_P;M!D>$`-N_tE@C4|cqo5%y%& zvsG-@Gp?;FYVPiOxgs*}g)qzMRWCjF3#eTwIT-4`wrOT)B&*$mTc&H*Ea?jV5^~wQ zzV52j*X&h~m5-aaKd?)=5o?qbvYk_k!NxRm-K%9;li6crZ_c@KZP(8$Z<_7XGW0bI zEJEMB`6FevE!S_0?fOT;r_|Kg<_At&WwNN{g_&<&xx}o;1@4Db+jfa_Ep9o@v-*GZ zl%Sj9%dYnp^`6R+&@NzVHnH~HEO2&ag>=T5BgOR&wJrMuvp!h8<-NGZLrC#e_N+$_ zcXuqCC9iZU?;g8!*1qObv*-QU5WY|O$~DJBY$1#0$$fF_;h58ZOxnVAZ;NZiW$V8t zXGLE9-D`X$`^##E>ZVqqt3S4+$F`}waBhl9Je?RNc<aeB>xe5?YNWmMD}x^W(b^<@ z!znCB_4jt$;`(hpIy=4}IdSl&;z!+wuT%Ot0v)USJ@0P%aeDhlFaJl1V)u^kT3B&c z_R9Y~7Te4Xw_23R7H*t2V^=$yLypR_ML$<hP%;<b-0rqYIow-_Gk#I0OV9iz@*4}& zwy55bTHB|#OzGz90->uH*Oq_Gie6(DR{B(G%B>qgZ+<<Cj`z=fQ!n?8rK;}0u~!*a zR`kj$dptQ~lA-y{_b{Ig_v;yrxts~&ix*1!>)-wKNdJbE8e4<x5f5p@jom-;mgle7 z8_`{RB$0iq=P&yf#*&~ryCxjYF1XPA`Nh%HD&_SLHTEsP8~x?nU#Fj6IySxZpY*eP z3G3%rk(ZxEE(SUsD-fG3(d@Ur{;^$+`{u$&HL7*3j@e3C{pm_yB!uHyQvNUsi@AEG z990Xkb6neEv(@LGzh;o{eyLw;Im54p+b%uA=bbP~{c)<%-hGbeY!+-jB6;}xM47Jk z_YVrR?%dOnh~4^B&x+Ok-UGSF{@X7sB{Sny%a*TOyl%~n!1y;w9d|2!S*xDiIJ@3> z%{sO9jx)7`?`b^=X0F`YYw=?7KNdrU8G*IgO#P`}9_!wC)ID>CsLW5f(;R<$)i^z` zxqRxI{#1|aO1^?!w@UrJ?EBwuamW3hcs=gRE&q=@m$yFTuIXIA;Sbt?hwq=&ys<nC z4BI4;d!3VaNpekYuwt)|;H(k3D*1nZ%4XxpHUY7goT$`;4ra4kI9x9<ToX`O_Ur%) zv!F=&X6H>Qn>WA9Yl>LwepT!1s%xvhu8Ddas;%M4(*0HG+O?`{i@)Zq-J8AIHmCd6 z|LWa0WpYgRM<qP3eSfxm|9h!<e=@$uF`RB)rs%D(|M<F&S%#ZWdqr&QGOaI*X?Iqr z_D$Z*?I+-FK7o7sfh`w1(sc5UvV6L=)}>hElH9haGX>jK3wEr}>%N&BR-*3ou&c^= zm&s1v*%QBYJ#*<<;qA?5b19L-Vs-ZHRj<Qdo)Erp&E(qFYbItdPCVz%x_sx>n!~yi zq~G5WyD#P+5gWAsWzf!MmMpv2S1n%(>Kzl7H8NFbltyX@dC8~-yqPVqeOioA{ka3r z3k^D7OJ!$;nR1Hs1?c2#-!8m$QQvCO;6rJWACk5;%-b-zhGp4rBds!xE|W8+2K+~v zSRWgT7PKhM&TVWq(ulpZXkp45->~+i+{DwY@?J|H9u=CU8ai8lyC_p#d@Ng2kKBa~ z4fVhJJ6C+zR%ZR^P@=|E{-eJNPF8JncqwsB^GVMh)w_aheJ-lKuQ|)vW~~V}GyFB_ zl}Ti7Cnwwe8x8TR5@#NmlX&J<!Hq2Q!=W3$z0=d46j7QrThzDZO$Q&_;YFd#XXSQ& zFk3IXanH9jedo*7yUZnbvIHf*e*3CVeGlX5+j6fq)+>FEjnG=V{ty@M)l1)|`s_(; z>}}Nb`kNE)**$yb&RY(=eTgb%Gv|hFmCZC3e(luB=k&2f((?%Gv(#O8&piC2%6$CP zgo}%fQZv_cf6cgXAtQmeZ}EhU|1`3~ULKWsGg0&Ij>rWzi+2=qOh09lVYWf+xH11D z&9r&`4)N_@rJ{K2B`h2hjx|=urcIf;RDqfOr`yTf84p}M=L%1E|CBPhadKi%vze#@ z&#azAou%6)IkX-vTh%rzbW+9U#<G$RDsJ7L*0m<NlWjtmMDsj($l@tvcA=GHub3~J zq3%hUJ9;jKU2QWOcbxh2XXCu7ZUP;zUWlFeG|lVJS~kC<W<S-W`05RVY9#fRY)f%o z#u3r3e|olE?1G%8?JMTITILx)v9My<8r7|mP1@q=k7an{O$+qS2^Yv8=-8T27WnyE zz@oLyJ0q?ni!Z$|-n--a8s4ozr`JpFU=Y7lU#26`H6w8<-&U!8cGI>N?c=_k>bCZ< zj`^kyQF-Yn4?HuIp6<POeZtNe^$`!xJu#JEXYxU}(mwc5SxW0&S<YjV^_Q;De)?Ey z=85}hDgD7mQcm9Ld(9IwKP6esZS%*6R<h=t9UJ;)?_?>tb4vAD8}oKg?y8x4gf}HL z>3-w;W#y4re$w>8q3;F#ZSSRbh+Dh0KJ?mctstB>X_bWY?jGLMr6wQkUUvMhEZ$c? z_0QxrS86}4iC=JJx@NJ_)pA*Wj*#W6vI^JS$UeU3=)Qy<IuaV1-`vgy=){IBHr%Z) zvZd)>%Uj;4j{((3d?Mob*y4=SW?FsY(8*Y7UDj&Vb?f7VHTUkBT`SUl_O<milj_ua z8=lC2XnS;TU4V_BXvrUkbGDo8<ht5<{s{0F->Oe&mdsl7`S|*sGk0144ZIq%x$|!$ zV~xVn15XxK&6_nRM#%Q2$BW-8YqQi=hM!dI;N5qNPpH-_RwK!@q?~olji}(e6Lz1= zGd`@FrlazGrStMnwK0$S^Lj%RGIGs!AMRXOwSIM#KYzd;rq#hyFMI6uxVm+Z;vU6A zZ&oZRl)n*~TF)!9^zybB6XLqvS8smfz@NGz&E0eDY~i$Mbx#pxUj5G*BHH(&Hgk2p zlX#l*<!^qInu+BHBOzJETk|eY-g7u7EbrzQp^d8~8Z#v$vMZeZHiq4LyYq-&d}CJp z*-4!bdKR!Bo*gvjYeE9Ym849Kzfs=%uTJ0E8r-~k_04yETO(K3J70QeB|1-k>%+HZ z5g%RlsyestdcJ<cTb5FT#b3h~9p*c>+~T9S_`k02CVTW>U%1cG)pnM{wd#$ZcB*fY zMdaDe6MY+PV{MIGgE~By9iK5V;YOGE)thDM-<S71U(AtuBE>=e<&7slOjbQx8WA%4 zVL`D*;>I6;ozLAc+<bP`7cSX)c@C2kCw+hFM21_Pk#j0L^GVHWO^4L`M}d!~AJ?sX z$vI70JLhDh!8_g(?>`H|m-Ks;{F%+$zEXy3)y#m{B|7>mFHX4X<|{5FAtj_bdu>`w z=9c-DuDhNl#TlKS{`rkE+q4A&2SwKOx~z#Pz0q@A_ukB6jfA2Q;j1p&4&33~8CNfC z$<$tBwCYby;E5S$gW`^MUTJl*X>#9L-LqTg+YKihyCnP0-?hr$ChwG&**O2udZjvX zL9rse5bfutTZ_Dcwb}Ky7Ii(+vVYU(s+u|f!NcEgI<5Tgf7!j6eM0d2a{ot{9+dk( z3wrrs_wo~_$0r+e9DYA9%BmrAs^y|fk=yt`*PmiHJpNeX$iZrbsM9u<e`f@~ywmB_ zznQ=NOQN6tw&}b{jz8_Dc$?gp`w?~e_rvv9R3=?(H&XJ9>R0PLtvz>dgnw6Sip~AU zH`*uJTCBPH_{H%<CMU(+ChAO5DfTp)ta5qD1e^Wp=?vaaem=2{xb-UTUcbKGlfrx6 z(y~7U=QDn*_fL>A@p;}-DUg<+#@E=sccnn;msHmB(?8x;@VsBqx;%G=_xZDrXGHXT zwup{t5Q^yxy5sU@cR(NGnd5RnwvDY7a@`-L_Ai;Yq^0*uv3Tmq=nEaO3;wM4jDLLm z2j_wX%df;{Rj}HtPI2v>cldJ4rj^$xSF}xN{$<mY&iORp6kq+m`g!-C>#vwCqM2v^ z_?J?B@xwnevMf#aEK#)jB)>skRq9Ant8uZWPusckp6A{d+DUS7tbV}E_woDV46EHG z=3$Iqw(Z}-zxCfH#w%}~F7vr+-nD3c)lj^UnfHXdvh2>b#ELmacV|Coi4O?XcoCYq ztYuzkn%7BD&6Bf(CfNpUs;^g%DobqMUn1^j6_7E{DQDS*ttkb6I1=Y=G3fuaBjCb@ z4gU&TSc49&`Pi~{@rJJ{7p(dWX2vA9>dLuCXsE6!wn>!M$WfM@W6@_I>8RYAdQ$(w z5`#e3DE9kz5B%PAw{wo&mn+lXmfq=ds*n8UG>`Xz$tnF}j~xre^JdDWR+ra5=5cs- z!f(#g{qoYk3jY1EUb;mp)ObOO#*_6e`<4GVTb_CS^60}mdDCxqzc>(g=JV;Ar)7%1 zZ;twCDxCcE=<W^`&D8cs8oG8}Te;7y^DKE7(jp-hJtJ07=i&9+ZeK2}jlS5KTQl$2 z{^gHrw5k-(9WgHuWB*?~rCrRB<N2iftF`KrGpcWen;Y<_p71>+S|OW%A=q0(z4LpL z(f{v<mp?rF_e64)$kV4!eU*PjJHI<p^fXT4dc4)Qb#qSXKiA?-Q<-?FsQ9C|YWRu& zwO$*mrW>h-{gx09@B6T!eZSH_t&RdA?c`YfQ=Cz?JElC4X_~83SNgbO>lAk1+8sIO zdz-5-*Xw=Tytlzm`;hAzE^*_>dP}AC7C$(>v8gZes8iVa{*7TVbIZ~tGwYZ7L`-T6 zTcRj6(P-;b#o0F1fm0XFQJQ{wtNi7ZwSu3R^;7@64?f0zOd{TN-^cq)W_C|H7Vo;j zg>7bugZ;X9hqpfdm9XZn`K0G(w>%fS^*1)ESo-Zg*{wU6>q~X+WEYxqAGMvIQT~== zH?!t$|7E7hZ|BY0_WRfQr0=|k%i@1azPaZ*k9o^;##?*aui1F){(fm%d&c*}TYd}P z`f%g_)x7C{&L4i_F!AZLJS{^u*7Q#4$(xUqU(q>e`9SODRsHX~^F4V*e+Mk#>N@`L z<ju3*O>_9>tlDqwZ7F!=d;Os=yYr{t@Z0~}Z)cX=bGtPkGJbE^Q^Qa$zp`4UsIYQQ zk)h43m`_VybA4e7Zw#Dpy?^f1pIzy8mG4%`&*EWQ^1aHiyXs|-ezS2)G}FoJyPv+^ zw6XYbu*v7lw4cT%pDeE(6*p+VyIn&6BBQ?X!nlWbK4?Wh%+8ToKlz#OwT;^o>NjhB zxlo(_;QF3z<psQT&95btwm&@2bG*FL_kH23-@A8B@tzSebxri9ZcER-4Vw?&o^vrL z?)}-8m?tF~EAKs1opZ4Ash(5il37cl0_{?_2b@~GB=-EZKYWV4R`a|&`&Uh~oiWdj zEmT}^%ZozO(3Feo_WoGAYGUxsU-iqE^*{7Xt}i&UB#`TE@~m0&OpbJTK6W-yKgd5} z_R`mfKezc!4qx^ud0W!Srk8aE4At+QAM#C=IQ+GgEA_vl;6K6oN2`KYZ@$_0`lazr z>EajWj`L4Gx4-&1{?$+UuYUyOg|qo8uQUh$yC@gLrMP3B?$T$kmAoxlgy;Qd0uPZv zM#wmNXGi?}v*c_0<V<hv`dt6Z0U~vJudi*5yCb82D50xk7o$<&$6VpcLamKAg;p7N z%X?^wdha?{BFp*T%T38;@yE^frz+kpbt`eoFY-TcdA{<TxBsul&!6Wr$UW}tvTK`o zH|%4xXoRnNNz<dQr}@4!tKVM8%t{Ebc;sQQ<i5^zZE5YW4e8c(5<ASCuhm=VZctI0 zEHkU)$}7>u+Y)EI)^GhP!!927^yjZz!HE{<Cr)b1S{o(U#w{bsW3VFlYwF|DqbU;A z)m3V;&JtmU2MPt1c?xf5|KvNIurJ|F#O|<*oBzB`$}K*=(fLrC;j*MT%I)4$e)2DP zR6c7;;q^~ees5(DJN<L{vMPP+?WMwO^^<>n-|nq$%)xZh{$L^NWS-7VuXjIGI$W^N zyl8EJztXzk&BC4;o*z_#oU{vklHIoGX=fTg`P6DWYq`n(##33@-M{=K*S!z1KI^Mq zk(yhTGV{0pzeABzBp0Vf$KB<MaTM67VVBstzP-EVVfA#a3qIwyw;%Fz*b%WWU^%bG z?YMfA)|>Tdp>}(lTo+wA8>YTtZu+_tYdPP~=}<ql>M~#amRk$EjMjSbb27(&u2r9K z-{*{K;h9|~{*TXIx^#TH+fgTGm8~A1JeIZiq#ymosq!=3(7DjubGC}6+}`dl>O6JF zFSuXI*i)ju<UQlVVhy(+yI)KWvpu}5-{6<5&x7Cp4%OdZG+TbLLI3Sb{->R{C(Ll~ z;alK$zDNGir+<<Uwcd4H(p-5!XG!Tsw?IYifRu-pU$rBYueqMd(TH7<rhIRyrMXb- zm)U#wsucD+^=qE#SoEb;!YDkseTJ2TkJfdOl`DdF%1!Umn<~w@@{7D;eZ!YJe<syc z-|Y5s{}kw7qI0oc$&;t$qGn=Y<`;3KB-%SWV$E5}1zM~O3>@5(H^vB0PRM1MydjsZ zer{M|uyDADt^UoF$pR)UE)Lzdlv*4XWG&Td;t)J4wB=aR)u@<5!eP_y&baIHSN*O2 zi*V~??&S1ef$6_y%PfDME2N+nw#@is_4m7Xs^9H>ey?_Rz1^Ol(g#H1Tm%F-Le@x_ zw3M_wz91<0VvWUP*TpG0p8nI0<x8uEPh;U*>s_y(f9v(M7_&8-L@ee<)ntYAeB6{C z_1JQ;MWk(1+g`hQ-@Q!c%H)N)3IrRTHav21-Qxh6_K5->ZzR*^ep==FXWOE#7<*aI ztqtd2d2p4OJh9Hck!@JAK)X-*g&0S?S?=Z8VivPbr9~&`xL;6Sa6T^f)U)@`m0t*V z>~xJRh~G7@{!Y*pneaU|iUof^v&v6s5@wpkwc?YF=<(@4yf)_LuDdt!eAtQ4o3_kp zdbw9*h6Tq-->?2!4=#5#I5sX6JG1qXVw*@?>5{3pIXLqjVmIsz<9RLIyP%jY+3MKi zA5!ToRkMPmPW-N!^s-B8ezZT!u_#4T@!-#MdNwU9F05((oU^Jv+WGbGEqhlzj}AS< z+9*&RzxG3r%;X(90w3pOc{CoJR%x;_r1SEr-(3#jt6Ci=`Cq+ik!E;2@wSoK(>clF zJn!ed%nc~AJ^U@Ek()i+eRG#({NCbP*R#D2o36fp`_*8p`j)kM=MO$Ra@I0CL@v%G zcW21GsHsbLxBbsh6`$Lbs9P_s8ay}KYp>E;(bJWB3KDv2{GKYY&d&}%XmW0;!<DaI zU)8c#=dh&jI-0RbvbBqUji?rv(W(uWB5JZnm>b_6D~S_(t?6shw&#w|!NX}+w>(mP zFWKt5>xYAtoY@`ouZA7Z&X(T(a7wkUYRa$rjeOrqjHcCZKl@8%>-v-GZZ|)@s=woU zB6)4&tnG=DUO$+Yx%z6w!iZ_Rr)}I5tS9<p&&nH}T3ZZ7=l8}>S~q?2s^ca8XRP|% z0~XJie6MZuGdaG;nLM*Ml;o_eRQ+)v?$NT?LbFue|F1aCOS7KW{Al$n_5X)!JgXO& zOWd9G?!cnQIn(TmP0cJ;v28cF@Be=7)#aNWnAY0}n|4?p-t=jidgbz>Nw<z9<lb7| z;!tyNTWaPxqnPkXtp!s}W#=7u$t=2XvC@VA_m>@6EA?1p{c@4~28CY}j+%0u`7GjK zfByRSx&1+pWZf)#X6*X4a`(Z@?E6xZ?xefw%@wic&|5k=FmL*nGtoz?w{E|%_5K1@ zbtiYH{g1lO@YUbaYpXWh>iW;=_}_U2{wXQab9Y`0ce%LXK&e3BI@z8Jo-4b9%s;<b zxQ~CaMO(2&pX8hazEO7_TXyNyw7aI2@x46}*tMc(LrZjn{@ridoEKhKSFv<d30A&p zI%3zndy0vhMXUUV9)Wik)%|{J9qYgI{`2kD2kc*7zqs(RVZP+YdO3C0x=%MNU5?Bz zx2*Iv>HQsHRXHW(iQD~!x^v&i-aKeH>B@SKQ+u3EY<D$JUN6Eq^I|T~o2&Qz{Tdn9 zHD??ah?Gcsn)%B3%Dj)S{lb;sT(f8s-S0N{+p1d(w!1#uSYNn)-p1OmGENU{ts+lW ztL%6ergY`^^wq1L=$SgE&Q9yEZwooJxc<SL_xqkU^)IZOtCk*q;!n@~n<rPX^BD2Q zSG`GJwj?V}%c)%VQ1Y*~o$8mI58s~Q@x3kT_=!uer2dzjeZSgnqqK5kXj$x!pvIsJ z(?hlhY|WNf={j2}t)be)_EX`E4e#p?x4&N}_4bf^HnYl=>=OAYpI)T6Z!a|bE0yl} z|Hu{TNe$uhjrYDdu9khVrZH>6zN^A(eybn6mlx0#VDz)}L(g&*U86Y{FZt-lO!+9Y z7p3m+oxNE)qJsrIJ2rDmWy4lx28JAt$s1$j>O<>;r9(w*``dDarZsQ|bVRKR@^JS0 z6T0Tp;cXiOOd4<XhLp%W7mQ0hoo2rI_asTX&N`ksfr+nr{#!jxFOqp*y?bTL60^rC zn<~G*+xdK6`L}0p=hxf+mpvf0&(Pq=hp5}yraR9|J8|s~*(|NpDB-+jTWIYBCz-a! zmQIx*o}2Z0FO=W0A4>O-=gPeKZlQA7&dWkP+dofD-*eVmH`98lR{pw{g@^ARo}^ma zwC>IuU)2O7iB+q&rmsAfd9}1B@$=OZW>b$wvuvei9p{>>Ww|@gZI~e6k!#-S=_9#g z)vM)_YP;v$D0+G88Q;_27gj!!i8KGu)@feYo4D)vN6XhL6Y3W^{?6CtE}v(l^EG+Z zo;5|Pp0ju7J<{FdJDXc++nv)Nv+Rr2@)G7LD(>CDc(~^Ny4p2o6xXlHH}ZM%o59E= zp<AtM$I*hV2m4)b7Qc?M+xS#)Ez`+ZNrO9*Xa3w1$=vt7;&ZjB4$sWG@9x&Qi)PBa ze2}?AVv?`v?o<42PaT(Stv~LbC8%A^9%3K1F?QqKtT){IkA0V2$WmGQ?oHACu)--l zuYWl_+<klEHRg{~w#(d<Y<gI>qH@*j=SyxrjC!{$;%(@k-2ANA(oHJs<%2ubj6P@{ z{*kJ%Gx=t_-gMphQMJ?m*Y9OB3zWN=;<fGlSr>)BFMg_K-u$R8*&!acRA>Fu`s+vA z*4B8g+NFARrreKh94VnIjywH%{N2`Hh&4Z~)#ejl(?$y|&5(_`3GQcKD!1*dSG}Eg z+gfbmr-BmmirA`uoQM0x+s&BTmhkVae$bJy?os9Owc#?sv8}Hzert?3DNFx9bH(X( z|D9X{pY<i*47$MhYsR*-&lYROC-Xd;_L{4H|C<jA0#BT5O3oh8JKWo7miQpME&D&O z>OBFU<@|FSzMS9hbo{W8m&ji4ixc|p?-uC4(B-EUb^Jv~y}W$DJLj&t1r~1mH@BXd zTFevPU7s*xu9%T>_j8H6|9ErOSG?wVynNROv)JVZKG!)Vu9USb3OsW`t3CCU7>9AE zh^f{@hI*x=?mL)YTs<Du)0kP~v|4dZz_lel9Z^^F-4z(WiM#QxdAx2~ZNI>mZwpon zMPHU?zSMfu*hi%6`HY{eo9#1~T$*;R{JG~trkAI(eXk$py5k<H?fKYvt;<@u3{@WK zC0cJbxP27(tH#|u{p90aD;9Vzce=oRY00vrFAG2aWSY9_gvX@K=@rXA7^l@AJye`@ z;HB!NMQXfvPq-~H%*ndqob$3HPWOjR2}k^e@7@t2sT>m*uP7^Li+{-Z&EPY9FAW1j zaqsNOjVW5pAbMSjKA3)xVk+qDGa<s_tFP7?CI*IRE(Qk0$?sBR>kIO8^(u06j)q0& z-!c%Xd%ym~g}B`ICNAg9C3ah~mR|~6wE9<DPx7TDopW#cEtvJ~e){uk6WH7YZ%tr$ zKIi?NeZ@()Jz4lQ1Fu>2&9HgDS7WM=Kv$ug<PlCaeUYMvi`#!|N;yg2+RJ1ad3u4{ z`Y`PsQcrdS-+s6F`OCLH(#Is~S$wq4aJ-!xF>Tw76EQWXIl~y!t6Mg2Q!HXU(N<iY zcX;cUskK9>&QCKvny1ba3@74s#3HlYY?o{N7?bVYBv6bW%(~3x1)HBJw@tT<m z+k(gYlk5}rNhdvA@ZEj!nNt#Gf7pH}l$C!p*uAg5B;Z=d*#aN#``507B)pt@;8Fcq z$DPL<f&_O)uPU1mIPb|!j(GudWu_im@yjCB`k@l962I3xE+>7-hx0r?9e*q;@p?^p z;;uQIvkGLpeok1f<$2YtJ-X0$c|600b$RoaPoK6VE2(yW#jY9g_x<(H2WqiiDp_FA z9oS*a^GkU_cgn)=tEOMLuxft-!}Jt`w$~qT{;AK&(0wt9JL{<AW{)?K3^^>?94a<` zO&wjE!nWHN1#C}iUwi1#@>Qp|U74|NL0a@DyULL82Z3%}f!!RJ(=(;!8amJ85fRTn zR%~10v0e65h9ytnKkfpdEvwfg?=d~Pb=Ry9w=N&MP~Twgwy*C-ouHjWsPVmaWebbj zGk!`n@A_<0KZQf`h^NbcLvhy&$rl2XRWB+(*3z2V-1Rl=5??~^o&)n^4t4zI-W$2_ zll%k@Z^;SFH*c5hGH+e`V17a&hr7G-#|oKQz0dy(tWcJ3+<UD+Ho$$xCWp6k>pJfl zzh{&={Le6cZrg%eJ#+u?+}RMt#^YZ8({Sy3b_M&@2d~Fpl??Y@_W8Es`vccJN>gXK ztlX!5;+z)O-TNoB^=y9KV&wXxULkYf@?D!nvYHF}u0%Wcdx@<Uz98^)-XBKPp2DoM zvas~Yx)~mce11BC1v(l*21elqCfkh+w;7p*7L@Vw1sWI`7(MjTKc%nx!DplH>63ns zymYiq`gr^3F@F49Y&3btsi5vI<IkUSc)#d;<tc6cE5qDm`^R|)Lx49UlL#|>lk?=O z87828&69aD?ZLEPrXHBC&$Iy7sdo??osVW(f~6R<q?sJpC(C82D}a`6BR04(Fi3#* zPDAmM#+AI26$PXw*Jts76@nM{Gcqt-W<po^NM!QrEH$vAS&WUdO_&%MKC>_|s6b5u zQA-+si%tHRWdv3PUM<eVz>vzqz#s#Xh2kZRg_4t<v$epAP#0-KRWL9xENSGFncSPL z16G8-oED~RN#ioP$v3lAz=}W%!YY{<7-q6CFv!AGfKB?RJXtnJ8yqU$Inqp<)Fx-- z*n;&SR_ZV?NTKNA)0liTM+2<L7j0S<rfx~&G`-1rRuVdh*a9yEf{b!7F)*wHFFc1S z2l+|edU9Yc#7~HhCIf>wLJh-`##gqJ19OEZZ^#t_TVGc2u_}m#fnhc$1A{b*LQm(( zS`o67|K~zt4$-heH}Q)5WbHgvh2q}X5l99w@WVL*4FCV{^PXIgCkrmRC*(;pz4o5` zK1B@4Z{SiMML#0MK>B5UCcn?qP{1hi;g)~`Ak=5_`xKeU!TG}A4F!-ql%Frk<lqmM NSd=fv_SPSy1ppdzjKlx{ -- GitLab