From ede931b313109820e75d0559560da4033be1f6f8 Mon Sep 17 00:00:00 2001 From: chenhuahuan Date: Tue, 4 Jan 2022 22:18:36 +0800 Subject: [PATCH 1/8] FIX: Add Boolean class buildScopedDecoratorConnectionBroken field --- .../plugins/logstash/LogstashOutputStream.java | 12 +++++++++++- .../plugins/logstash/pipeline/GlobalDecorator.java | 4 +++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java index f6ae5de2..7f572d13 100644 --- a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java +++ b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java @@ -27,6 +27,7 @@ import hudson.console.ConsoleNote; import hudson.console.LineTransformationOutputStream; +import java.lang.Boolean; import java.io.IOException; import java.io.OutputStream; @@ -40,13 +41,20 @@ public class LogstashOutputStream extends LineTransformationOutputStream { private final OutputStream delegate; private final LogstashWriter logstash; + private Boolean buildScopedDecoratorConnectionBroken; public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash) { + this(delegate, logstash, false); + // this(delegate, logstash, new Boolean("True")); + } + + public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, Boolean buildScopedDecoratorConnectionBroken) { super(); this.delegate = delegate; this.logstash = logstash; } + // for testing purposes LogstashWriter getLogstashWriter() { @@ -58,10 +66,12 @@ protected void eol(byte[] b, int len) throws IOException { delegate.write(b, 0, len); this.flush(); - if(!logstash.isConnectionBroken()) { + if(!logstash.isConnectionBroken() || !buildScopedDecoratorConnectionBroken) { String line = new String(b, 0, len, logstash.getCharset()); line = ConsoleNote.removeNotes(line).trim(); logstash.write(line); + } else { + buildScopedDecoratorConnectionBroken = true; } } diff --git a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java index a8509f1c..f264e795 100644 --- a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java +++ b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java @@ -5,6 +5,7 @@ import java.nio.charset.StandardCharsets; import java.util.logging.Level; import java.util.logging.Logger; +import java.lang.Boolean; import org.jenkinsci.plugins.workflow.flow.FlowExecutionOwner; import org.jenkinsci.plugins.workflow.job.WorkflowRun; @@ -25,6 +26,7 @@ public class GlobalDecorator extends TaskListenerDecorator { private transient Run run; private String stageName; private String agentName; + Boolean buildScopedDecoratorConnectionBroken; public GlobalDecorator(WorkflowRun run) { this(run, null, null); @@ -39,7 +41,7 @@ public GlobalDecorator(WorkflowRun run, String stageName, String agentName) { @Override public OutputStream decorate(OutputStream logger) throws IOException, InterruptedException { LogstashWriter writer = new LogstashWriter(run, logger, null, StandardCharsets.UTF_8, stageName, agentName); - LogstashOutputStream out = new LogstashOutputStream(logger, writer); + LogstashOutputStream out = new LogstashOutputStream(logger, writer, buildScopedDecoratorConnectionBroken); return out; } From 0578af883da248b8ed4ef043feeb0abab685db26 Mon Sep 17 00:00:00 2001 From: chenhuahuan Date: Tue, 4 Jan 2022 22:18:36 +0800 Subject: [PATCH 2/8] FIX: Add Boolean class buildScopedDecoratorConnectionBroken field --- .../plugins/logstash/LogstashOutputStream.java | 12 +++++++++++- .../plugins/logstash/pipeline/GlobalDecorator.java | 5 ++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java index f6ae5de2..7f572d13 100644 --- a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java +++ b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java @@ -27,6 +27,7 @@ import hudson.console.ConsoleNote; import hudson.console.LineTransformationOutputStream; +import java.lang.Boolean; import java.io.IOException; import java.io.OutputStream; @@ -40,13 +41,20 @@ public class LogstashOutputStream extends LineTransformationOutputStream { private final OutputStream delegate; private final LogstashWriter logstash; + private Boolean buildScopedDecoratorConnectionBroken; public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash) { + this(delegate, logstash, false); + // this(delegate, logstash, new Boolean("True")); + } + + public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, Boolean buildScopedDecoratorConnectionBroken) { super(); this.delegate = delegate; this.logstash = logstash; } + // for testing purposes LogstashWriter getLogstashWriter() { @@ -58,10 +66,12 @@ protected void eol(byte[] b, int len) throws IOException { delegate.write(b, 0, len); this.flush(); - if(!logstash.isConnectionBroken()) { + if(!logstash.isConnectionBroken() || !buildScopedDecoratorConnectionBroken) { String line = new String(b, 0, len, logstash.getCharset()); line = ConsoleNote.removeNotes(line).trim(); logstash.write(line); + } else { + buildScopedDecoratorConnectionBroken = true; } } diff --git a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java index a8509f1c..966fc7e2 100644 --- a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java +++ b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java @@ -5,6 +5,7 @@ import java.nio.charset.StandardCharsets; import java.util.logging.Level; import java.util.logging.Logger; +import java.lang.Boolean; import org.jenkinsci.plugins.workflow.flow.FlowExecutionOwner; import org.jenkinsci.plugins.workflow.job.WorkflowRun; @@ -25,6 +26,7 @@ public class GlobalDecorator extends TaskListenerDecorator { private transient Run run; private String stageName; private String agentName; + Boolean buildScopedDecoratorConnectionBroken; public GlobalDecorator(WorkflowRun run) { this(run, null, null); @@ -39,7 +41,8 @@ public GlobalDecorator(WorkflowRun run, String stageName, String agentName) { @Override public OutputStream decorate(OutputStream logger) throws IOException, InterruptedException { LogstashWriter writer = new LogstashWriter(run, logger, null, StandardCharsets.UTF_8, stageName, agentName); - LogstashOutputStream out = new LogstashOutputStream(logger, writer); + LogstashOutputStream out = new LogstashOutputStream(logger, writer, buildScopedDecoratorConnectionBroken); + LOGGER.log(Level.INFO, "buildScopedDecoratorConnectionBroken: {0}", buildScopedDecoratorConnectionBroken.toString()); return out; } From a1fb7560e6eb0a4639b5b38d20c5b85324ffa00a Mon Sep 17 00:00:00 2001 From: chenhuahuan Date: Thu, 6 Jan 2022 02:28:47 +0800 Subject: [PATCH 3/8] NEW&FIX: 1) Add maven-jxr-plugin for generating html report 2) Fix build_scoped broken test case error --- .gitignore | 2 ++ pom.xml | 34 ++++++++++++++++++ .../logstash/LogstashOutputStream.java | 14 ++++---- .../logstash/pipeline/GlobalDecorator.java | 8 +++-- .../resources/jar/maven-jxr-plugin-3.0.0.jar | Bin 0 -> 67264 bytes 5 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/jar/maven-jxr-plugin-3.0.0.jar diff --git a/.gitignore b/.gitignore index 805bf2a0..283e3ca9 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ work .classpath .project .settings/ + +.DS_Store diff --git a/pom.xml b/pom.xml index da16b0b1..3591a387 100644 --- a/pom.xml +++ b/pom.xml @@ -185,6 +185,12 @@ ansicolor test + + org.apache.maven.plugins + maven-jxr-plugin + 3.0.0 + ${project.basedir}/src/main/resources/jar/maven-jxr-plugin-3.0.0.jar + org.jenkins-ci.plugins.workflow workflow-cps @@ -207,6 +213,18 @@ repo.jenkins-ci.org https://repo.jenkins-ci.org/public/ + + mvnrepository + https://mvnrepository.com/ + + + + aliyun-repository + + aliyun repository + + http://maven.aliyun.com/nexus/content/groups/public/ + @@ -258,6 +276,22 @@ + + + + org.apache.maven.plugins + maven-surefire-report-plugin + 3.0.0-M5 + + + org.apache.maven.plugins + maven-jxr-plugin + 3.0.0 + + + + + verify-pom-sorting diff --git a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java index 7f572d13..a38f6da6 100644 --- a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java +++ b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java @@ -30,6 +30,7 @@ import java.lang.Boolean; import java.io.IOException; import java.io.OutputStream; +import java.util.concurrent.atomic.AtomicBoolean; /** * Output stream that writes each line to the provided delegate output stream @@ -41,17 +42,18 @@ public class LogstashOutputStream extends LineTransformationOutputStream { private final OutputStream delegate; private final LogstashWriter logstash; - private Boolean buildScopedDecoratorConnectionBroken; + private AtomicBoolean isConnectionBroken; public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash) { - this(delegate, logstash, false); - // this(delegate, logstash, new Boolean("True")); + this(delegate, logstash, new AtomicBoolean(false)); } - public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, Boolean buildScopedDecoratorConnectionBroken) { + public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, AtomicBoolean isConnectionBroken) { super(); this.delegate = delegate; this.logstash = logstash; + this.isConnectionBroken = isConnectionBroken; + } @@ -66,12 +68,12 @@ protected void eol(byte[] b, int len) throws IOException { delegate.write(b, 0, len); this.flush(); - if(!logstash.isConnectionBroken() || !buildScopedDecoratorConnectionBroken) { + if(!logstash.isConnectionBroken() || !isConnectionBroken.get()) { String line = new String(b, 0, len, logstash.getCharset()); line = ConsoleNote.removeNotes(line).trim(); logstash.write(line); } else { - buildScopedDecoratorConnectionBroken = true; + isConnectionBroken.set(true); } } diff --git a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java index 966fc7e2..689d356c 100644 --- a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java +++ b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.charset.StandardCharsets; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; import java.util.logging.Logger; import java.lang.Boolean; @@ -26,7 +27,7 @@ public class GlobalDecorator extends TaskListenerDecorator { private transient Run run; private String stageName; private String agentName; - Boolean buildScopedDecoratorConnectionBroken; + AtomicBoolean isBuildScopedDecoratorConnectionBroken; public GlobalDecorator(WorkflowRun run) { this(run, null, null); @@ -36,13 +37,14 @@ public GlobalDecorator(WorkflowRun run, String stageName, String agentName) { this.run = run; this.stageName = stageName; this.agentName = agentName; + this.isBuildScopedDecoratorConnectionBroken = new AtomicBoolean(false); } @Override public OutputStream decorate(OutputStream logger) throws IOException, InterruptedException { LogstashWriter writer = new LogstashWriter(run, logger, null, StandardCharsets.UTF_8, stageName, agentName); - LogstashOutputStream out = new LogstashOutputStream(logger, writer, buildScopedDecoratorConnectionBroken); - LOGGER.log(Level.INFO, "buildScopedDecoratorConnectionBroken: {0}", buildScopedDecoratorConnectionBroken.toString()); + LogstashOutputStream out = new LogstashOutputStream(logger, writer, isBuildScopedDecoratorConnectionBroken); + LOGGER.log(Level.INFO, "isBuildScopedDecoratorConnectionBroken: {0}", isBuildScopedDecoratorConnectionBroken.toString()); return out; } diff --git a/src/main/resources/jar/maven-jxr-plugin-3.0.0.jar b/src/main/resources/jar/maven-jxr-plugin-3.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b6ecd9b513ef9c5ed54d7a9b1a19fa41cd0554b6 GIT binary patch literal 67264 zcmb5U1F$B`wk^DD+qP}nwyj>aZQHid%SQLIZQHh9?{n^d?mqW_ac;aXqT;KH7&&X^ z%#l?&MwWs!FbEU?1Ox;CwFR3jZ7~b`1polR3LpRg%AbE(Q58X2NjWikSwT5TF;Qg| zI$5!p_)V$b3|-SkidePtWyZ3lBW%G&9yzwYV8CD%LF=}ny@9#tlgvj_LrVjrOn2R-xXqR zEowkID^8raJC_vuzKPD3j;IPqm5@*V2r+3N(Ro7@kv0qCF9p!K{B%?DM~uFE(-c>c z*nqGJ*CMHd`{0RyR9?RD4kMwlqLmkEB!1tNvV4FF(%=w(uZhAxss#W6@Q-T!DbT-u zkblnpRjvPqQT{3Fzc7DJK>r+8CO=r{|5pgx{|;gQ4-oi&-iV#v(bUP##nIT*=|6z~ zD=Ut_L8$&m;(x{aSO07bT}^HO2L7MDr1<}X?HtYN4DAh#EllbD(VEWQ+Qr<`_U~E! z&s%c-KScRQOj;{<%n{*(KEhzI>&h=2C(KL8Q` z9r(W$5##>`|6hBD^B-FMDbIhU_t$*?tEY67-McD4000Q!0078;TK%NEU#F1eBU4J;;IKMicFl-UGh}m1|t!)R*An2QJ%%}!OQtP|w ztdC}9E1m{60__1P_klcp%ibOn9DrTyMPS}W=OXM7&<)(l{PRMzt4KYhGV}fY?TFCr zg%BEG*+!ev7cIY$l!2yH4qg3h$!#-^4w!a+ml3qVj7MN74?QFAQ`1W{qPp&CF&*eC zq*vq;jT-&1l&lWsK0-ts@{{~1r>xQXFfVjEVMeo#$&8ptr|K>`&jUeb5#=PF3M>0k z2d`Tjy7^%9e1)c(Is!NA$_Wi~VmW+OY*FQXFj=Oew#;1#8bjdmLZu*&)Ha`Z8 z&IQeDqfUQSYxxWCGC=$r^`hnT=)LeZ+3@>H?`!9Xbo|a)($R>I{bt5?_3rT<3B+N= zmQ#kf$6#!ur#vHYx^zdXF|cDsL*ioHT`E!>u*>LFO(G_vwjlXQok(_6@8|x@EJu0J z+gMl6YRBq&TWniBDzsQ9mswOocQVkmhVHAnC*8*zh_>ep#J!BYA@dNL7-O$%_j;?UvTib(4(6QIl3lv*mQIkfX@(vtCgjqJ9qiTCDW^nVF z$!N9$Qf-pA5AZ`cSn}`J3#jA(wOJJPIn0J@oNf!c=sv5Ul|pAWun|OHpBCD=cT|-^ z$QPv*=vbJC0bC0)jgypDKvczspD22ntOO+87D0&cEE>$pP?||ieAtTkIOTeU4d4Zm zbvKH4j}}9E;o_QOo@$#2riq>u#DR7q2gJQ`+x@Jt?lVR&E)MsM`P!~v6*$gl+be+b zIL*YJCe@2E28rMg@mH!rJUuWZR@WGljR>GBthm5O5SNfUJK10LI!`|MjRx#$rFyY| zY1n71?*C*#BnYApfYX` zODiXFj`HB;%xGv$5{?r0px#n5r2`h`({!qJQTB-_I}pz z-t5br<);C%O>S;w2?aZ)+2PQ^todN(W~$_=cU1Mfq^uD>ryB$H3Gy2YYyVDp-r45) z0Q!q%f9KM_vkdGPT!HtW7kL27KUwy#mz#*Ff~cH`sGP8*sPd$ijng_C($|%KK*qVu zzMSNm<6QAe>e}fdX6K`*ZDt(;sB}GLptyhHM%Mdvt2-%$BFZ89DUWdv0DQg=+R7kZ zABo^><9BQ#$Yv@Dy39{bQDdzcZ<+gK#ef&wL}fAs#XGM|sq*Be?1t>vS=~`{1xeL= z%#3*)RE55A$kEkp1%6LwdJ(4FVW?-I0X*IF?YECh=#J4!$nm(?SYJ>@hPT{<@-ckJ zo)PTck55D)M56WyDHGcjoomSm@Y{EH`(niJjveU-Gb&R;`$U=aY_%ee!^UC)RW#XA zYp}^gzqr>s3_%B)vaU>-!@x9nBDFyceVID)*+;Jv)B@_%IUR*)+cFd%8VRUY!rmlk zB_;J&;x{R2z(OL6@Msu<0i%ZS2wOzpJQ8Mu1RdR6zc-&3N+5fhv^x!Hc%(^px{i z_R*7{NGI8-%34Ms%vIhr3wr4EI#@t zW=Kc-+|vJ~e~ewN>)qM&#%zuR=OG}ru`77OB!8|3Pgi_VRh7i8W*E8OhS0m{lZ4*qA)&1E{4uGsN+65WQkW+ zIGsu+2OPk!xB*s|1yQ5dDtT#08^LA9YVpxIV*iN2tKVJHD-v|Xq)G+gjw#1B!7?l% zeN5BL2WCPSl3IkKb;eYX9F|d*maTO}8X_0L+B45~Fw$3=3=^AI(!C-JPs2M^@s{OO zbsQKHUQV;-CsmHR8enwaSHA*xgm_T5 zSD6!Esj^Z;DZP}9j_mqoTL8eC5Ljx{m;K zvDap2zkHcRx%b!7m>&7RuvnI5doVzx$qW-7YMQ~R zGhyv=IE1rczae_qW3m!MJem@&h*PYf0WYW?CPmWN*b!thpj6f7ZIy$5_&XtZ={{PK zr7@?&GN<#H&7KNI3P#zgK{*&`{qhASX@QOBcmb&KYKP++^Kd~{3J+rV$*q>wzSZD+ z@9}bYaRE|6D^F5cxI=od%eM$8?sVpL)8#9Aeg-OSzqiFNtZsM!B=2<86E;~s`Yd`(b8Hg@)UbH zS!<^FKG&TASWWtg3DB0>BP(d*rS^OfkenDy*>$x0^YEVXcRsE~9+uy8Uf{G*xv3jT zO4`1L3h~H?pqm{Z&Nn;flQ~Sq86x}k#%RCtu)B|&^x(B6e!D6`V(4Cl+lKd#O)kGw zcXSvbEeYp0367Q(0SWcsWvJ+K`E6ZI^v6hfGKNTcE^wxKay=ivSC5+%6PP2O>yp#0 zyJ_7z_wL`9_T4B^y0jfG=xbTb(@ggD)EVWqKd65H!YbXBcF@j{Q~;Yc_$sdd?R<%$ z_cbe8P2mBUdQhyc$z7>$e`C>7x7F=hd-z+8(lKp^3LXwNJa|dC`V?j_@2S$$sn2$Q zAS-ctmBZfht(^Zt23>^hgqo(yqdcFm4b`G-*|&9%M)(}DMX9k3P7cjMfGMUi307oD z-b)DS3*nFfq}EV&s)aF~a>fj*<824Ww?bp-mr+yw?1+D>y<@~;s5D)+jt>pBgRG@KUPp(&2<1&i?!s)*f69po zWWi1q3y$nQiB>)lmSj?GHvL998sf0W@0cXh!t>Y0!kO9nB0}ylh18%3Z-2v(m)sms z3cBH1z}3Mc+P*0x*3Dy|#aW`uOlBz(aXH~P{;%cB-xn$WzI@pgggFTNgGG|D{0xDJ=g>DgLGT1kKGIP0bCR?Hr}t9aT)7oR$8$nl`pJbaKjxmz7@^KnUHI z%`S%BElQpfYO@c#IRxHQ2}UU(0L_3G{2c(THL+uzd?9x3g7T$I&#QV?!0(SAg3$>G zg;c(`el-Wu<~07(_ft8+v2vHpB08JKa1TG-OsGSLg=(ncaX5zYug0Svu zvY?gx)*+Oj8B}}i%VlN11MoXyzEP)(jEiB_rcL4#1#>gi?7`u89ZghPD2BuA(n7KV z+*WKJQ3(g-DA3)TQ40I!&YLtRQZD8vawCzM2SCu2j>R}+70RX*>0j6b5>ayzjcz!k z3XxY~ANo0i^Q%QKvoKusfaA1A@@2-LG-gOanf4;oIW=@yOhVFgzV}&##?g)qx2r1?l%${;GS%t1^Y*TRO z=x1k=Qmj=FJ)iCeXbv!)DD(-M6t&et>365Sa^jEV8(M)iJNjHmuonQc4JRTLn%&=iI-uQ5#}Y*!T|{r~lhEVx#|eN;a#?#;q|RbQ9m= zmkN0adIy)JNO90MmFudiimF@LrAU%Rpp%QWAg9*8{BeCjkdP{Cn;t1Kdp($anT_M# z?d6&FoZySO7(g%ysZQcLb8O8w!r(DxK>GKip*j8i$)$iKy?3aD6kiZZKsJk^NG*s1 z_xhMo0^i=ag>D!LDCc9z*X&3{RuJs4p>nO*#_d|!H~9OUOzkY5bxvw7GLJP{k5@p4 z18Wrf1@&lZvJq9sJE z3CS!&QG2dWOXWQJpB3wqXE&-+fO058pNFFE@<_k*i z-T{P2v5C+EOz4sKnTI$y_%Fj59DYbKVIhfn6haeGF)Lj%!fGKjhzyaXHB)nSbrY{) z7Y?)xRi{jH^y+7?++A_Bo(Gn&(h<)T7b;Ln6bOl?RRvC*`wersN43;`Yo1b5 zZS-*5mm1XEJ5`5dd<`?Sq+I#cVm~ur^72LK%jo}-#IjRpdvk)G-i(zj?ZUw&Pj}-^ zEe)71U)aB9*Bwzs-=oaj1;D~iXkVev2&@3Mv*_9vN)SmY#)#v=8@3qgh|QbIMq){P zJCztPvu#A0WkzI|I{$^PgEiQLpm>)7N6bs+u*__gc zGqI0*P4a~Gbra0`G2^c)QeRJt_oVYe+lIV}{})I9&cuJ`C_=r7Gua=GlKnA}{&G_P z+eFegG5x!blqmR@j}&s9`hhPtMVer(^SD9!kAwpsMf6(+%>e_xb`0 zN4&=KWEAYE`*mwVr$6+V0tU^1bOno0g{CY|CAGyI%aE2^kzu^V|C~X08-TYEjMAQ~ z9jKxpMI}YrkagQ7RgZ;S+#p5FT2TWTpg4SsPwwZ5Ehwp7SI^E-F|mK{dZtxdfZiE8 z#b_ids9TLDu+B`>QV>VMP~>S~RHRl_(UGc+;1f`DMSG!dMpR<0IEE7w-n!CK(M2c) zdPSJw#4b5z`v`szyuB=_91C{Olr5i^%Xln7amdt87WWRJxG7{>pVp#1nPVN^T#gsQ z{=ET_TdE@Oy`n&BnrRGm_=eOti7q9aV(#*EIsb2Gt#;4K9fOQ=}$ zbz3Rmb!;CB;i0v7KJ5AC+ehlh6J)_Mi>=~h&RR6OeS1-BM2vUx`%izfp^rc_LnuYA zAbLZr5-0b_pJ4}#L1p%xu=_MxCGpm~bP?A@G*U*MTEZCo+=s0cJ$b-$UFE2F$*zRq z$(;^H4h}NJLEI^Zl46Ea(z(h!iZ0bc>-e~TJZ@;6k3x9A3aXidOlouA_jsRe8rKQ?g;d)g+XZCB zp;72j$I`@r-llcd4lQi`Uiwi(xgF*YcHi(o`mf(0*B7{hc7Jj0?~M9)t~E97h1&et zAkm}wCS&k#<|M zq%hKYf>yBl5juj%&qv<0?to$ww>LG}QdY@})yCtyoa^jC=-c*QQTp*5q-&Q7t};EI z`vd-Dmo?|T^Vf5s4_ViuCh*(G^W|-xb_;fx&n)%2r}s~tIW{Nb);g@Mv2M=*=by4T3_86W%cpL&&|6q_!n5n7c072 zl^Skde@EM|fgjBG>Ayew_b!f<@VC55tD+|s-r?ZK(9;D>p3rS=~#Rg?o-LeRUNw;^v3ci)Utl{ zo}Jjit8QaZ3Xo`Ly95Uu7txE~rJr5dPSl|}I3U&?%}8jj+MXlpgvtUoro^?94-rVl zVc;Z}DeJmyPMOT&c?N{BQTCu&hGY$Gt--ji975G>E9_esxvK5rPp* zLCOsuccFYm&=`nPbGNIW@N6u{98OWIg@4M;-uAyY)sd{Wn?7L`K^E&+%mi=jyLO06 zHrMuNcK;-e?0I>5yr#G020k+U1unS116I%V2C!k00*xeiAm(BatQ15|KF7?PH15Z? zFQe0^^^umNd!!fkJwpcHfu)#=>f!AUc!t=t2!{&Tt$m3D$}@;b4%mK3vanRI4M_=c zx`-#PWv5zG9dh{aLl*5jSi7lo&Yne56BVbr^C#vgN_=o3bC88|m4n+&5%XjH@Qq^= zAx8<&dDsTApdJjrLhwi3qifRxcUy@fruT;R7ifWfWyb~F2X33OH3h%b53QGmjZwHJ zI7lGHSx#@IQ2#7-W7{e!+Clr1dt*PAr+G+!wZ zUnM}ZD8Ti}e90!iL;P(Gz}z_ou(hG^mQ2(*VKlTygaoze_kiH?@l4l$P1Pgh;|^q_ z?L)V`K9MLfo44VDm84I7|+b zAUu~|nP5pqsh6>H0q@Ly`#^~UmRtPe?fq_e?RsR$?7o)hs>4!iRvP|L>25-yv_R() ztE#qwiwEB%XW9TO1l=!As_B4{TLutmNhL*%AgW53Ehm>Ma7nI6THYo~e#i1#+8^db zP-a`F$C@G6DKAlkM`62#9JD{okcc-~VQYf&^^oj!2iX#w z70pcYfYUBlb=De6mSP2aP;yE9$Xo7l@R(?eT+hZwJy zV2$@*0>D5&35l_$hn|}OeDB;_RYGZ?-Uj}X<^m)- z14CyQpcK?n`$>fA2+m%ZYP0BvqO41?kGK#%D&I@Z(U7o(UsEM9|Ep3EO_d z(OKotaya#7Zhj;#*u8?KV%Q+~R8yE|KvAb|d^Q>`u{GrhStw8TfU ziSt=2;$B(5jWqDnkz-6SyEH#oVcqdwokW%Wdh6{=fM&$w$l&7e*{T_tbR$j*s)}R+ zrUXH-|J3ijaC899U}d0R=ZgTTkh|bB%PL+mIz`Nz(sx}!$os=-eV!L+*yK*}llJbK z+MszX2%X@{MDcklPTSwRp#|%KsPV?UL${D~q#W17u+^Z{LitZI!2)sH{!=>?)$s;o*)Xzwd{CWZJ$Ch* zEVvvw)zK@5s?^vO{aYW_t{nA5kfSx&4vj$Pd2luwQ}SSJx}J>VCf$Y&QJT?a|A2$tFl=!^Tlz#Emj z;SgG!k1?BsUpY7`NHDAs=y=~i0)2H1IlgySh)Cf>m0V}K!trU(u)l@v$_N{YET}^ z2?>x;vxFsC{Mc~>QzuR^6)$P&*hS{?f@7+o5VR_oJY<69l6 znvFyhlG*oWMm*(+OgDlj5QAwetjJDV1Ll`f{a{R3q_{20ugP2VlB-a^A=rG77m@{s zP0mdUBvsnYU0(RW?2p&4P&d8bXZvf+vJGI0H9rc z2Xe7Ij%+=>Y_Ra24JAp#o9*?LF zC1i^&aT&IoV|Zg-=Cm^zF|O(+R7_ha7dKT@X!7vPMjp(!r%RE*w@#IMNCqUWS4yJB zR%4rwij*+Mk{M^LRN%M(A%}TOPsa8_?&z^L2(Y8$bCnmyW|!g_7AYCOOCvQxCvt3a z;53d{r>Dd;QNgk4OF z*)4^cca^@xO+{3ij8TBgu0+uXF~l;VyTxYg+ySK2U~Cc5J~^ehf#(x0CsvNDoFK^c zXUFg-5~;yb_h$YKSo2DYU*0N71! zG#`+(mh@^pQo6&g4?C3%(6W$syeGwNm2)%Kf`%X97pM!z2w7N}1_pGb*2;?$Y(C-kH$se;n9^pjqPzxH*uU$Rp$cxNRvo!9)a5a4R8OM%) zH8?!DxoPCm+oczk)%l_Ib(Et~?ThB8Ut8;cWzhrZ`}?$9ntV2xT9u7V7E{DY3Df=z zK$b2e5{t+Ss=;95{qXbs9H_d-vt6gVQ@i%d^K<_3tOtQ#cf0!&u}SBn-n+N!J45JX z^Ul|$`)C;)O>gLO4-V&P_j6Bf!?&%oTT|bu`EY#z%nnW98;@<#`CNdVc>`7M7buUp ztR3r|6PG>gY)G8K2kGz0qY@q)XE+W-Jodh3*Win(WUiJ`n6t0kl+uP*(Q`}Y@rLI# zPH#A}LDB2xjgwHi=`;-w(3w120$vR;@5PyVWanTxZtUjZEELVQeTt91(l{gMuv zJsUSh%)_D4Y4iQhzzCqJ2kdS_A@MOA2Ry`U+JRKyo`9Vb*AH)B22Z&$a5&SzaV%Nv z_XvP?wH8P2oZbDi8z})#&b~*e>!rqZa|sH97Vi{)kWljucf#Wku;8H#?30*%t8up@ zjX~p@A?^Krv9xMVv1rU!>`f1Iv$jlm7`ohUWO%LJ2JByeovfv6=VW=fzJZ0-Z+d&l z2%P=lk;_W#MTb@-S)Lb2?FB^cN3sZApnW@&m;Kn(-~mAn;UJ&x2*;+s4LhpwSacJY zz8+ym0PKQq9D~rOF>f|?Xr!tkEkgXe+U|)^&uA$5uHrl7=O15w-mIRt^a+jUF!F$w zNFE>j%rUF&TelK*2T~Bn8mm?D4$mFV$NPjsajU$%SxjU>Fm7ZMbTed&$rD1f^9ZRA znn zu2-$9Qb!;t5EAa7FEBewRFR{LG<|c#7YnA{s!c)=0n-kOH?wcs<-BW3I03QSEzh{>O2*M9G<+Y5?{?Xl!uwm56TASq$V^Ev%V6r%L*#V9$ZDKIFhBfJ1-fwC83bGJ9xYzsL zhXdU|aHfk1!ZM#d*}A~Br2=TGehMQdJ(ATZUSDW z4iBFxh#rU`Ky-ROUU+8QH(%M3^BKidiaCf}KFx&ZnK&_5Lj+QVA)cqZ9pCWU-mQE- zkyJ`a^#^A1_VB)Pm{F2q7UZ_=2c&~O0?II6z9o8rZ^;^KQZmaC0<$e(f5YI^tj8kQ z3qa=6I1k%By;@4{onJlZ+@pX0OXHJZ9B060C2eh0GR(s_5ZkSV&vrP zXlU&GXVc{0HcYf2y;T+$`H#&KpP4*BnBolpTr^~b&;*u177zkK68$9s5C`R$;!F(E zBbbpPlzvn#soDInxkRd5>=;yAgMV8kOs=f4(Op{`yvlNIc5SV(*?j#v?qQcsjKIIV z2EX2PyKX%M&ri#XAFw4{%*cO%3-#tRA}TL-(Q+ta(cSKqe^5fyr<@5pxK;DeA&qMt z-M32GrUST+A7<6-Nv&gk${n`9@8ovE>^zv?^1*ckMh|^GKf`O7-WTHc%0V84AV2G? zIobEdfw_$D(t&>Zhjfyk>0O=dSIlTH>nrE#Bew?+{fVF59e&q`_*W9en{EG%dBGh$ z(2aVMetgi^(P8gBzsaR&(6{AHugq6#n(aZF$(gA~7g3!0;cX_5UfM7=SRNCq$0?XE znLjaWqr{|=dFIBUs(D4@;Vyb?EgDXvEbFj}6D;er!hJ^c zmxgoPW|9F{87tO#4fF%J=i5bxPr#>Z@sw`WkEA-reK5oNd{~4&YPGI2O-z@^}eP(x4+y}Yd zs7aWO!2K2^-VE?p6L0U40SXgvM%p~d_1qT{GqJ0TrE9m~;6*_N0y+MJI`thW-oGrB z*HAW>@ncpH4SgJ)31<1@HNb&9k!Du}OZS#|13m*f6q;;(D6D}^^fKSp(l_yANQDx% z))?3OmWvfYm?sl*Ef4@?_`u~k5Ke2(Wqvb&>yR-#t~Y>8F(D4ydfXGw*p`Z{RR-O6mQzMO%0Y z*oGPX)W!|nQ4}HKj6YvnYVqB#QQk_wtIyzed#4KfB}@qL9A)6P60o8QeFR6R+4Qmz zD$EPaxFdNY`Av92iU6rwfjUEHzWj#$%dmF{<$3s`4R_rR{D+{!z}7N89Eo)}S}3wS z4$S&3-@06QADGtwupl;>=GllV0V32g>yS}EP)$LbMPohl0yZQGm{EQ^6Z*v2trVyH z0uY(bLXu%_q0%xp12ZXfg4a|fqjHt}{Ne%4c9*bmtbZZTZFhk$Sr16%()*8Rm?5j2 z(T~jldmI?l5aEPwYzMlBK-`G*Hnm$kbEB*xfzs0}ku>UIcTdw2GNcy6XHc-c8yGJH zdc;A2{N>nX%TyiV@+7B?ocwkJ7YZb)?BQf}#dcV8c0fpxMXbn`OW^m8OAYmW?Tg>b zSeKB&t)NDPudd|05j_aMHP{oJmI4+#hOXR+z$&b9qFpS!hAK$AU5)NBI`h;NGsf%4 zT*!cUz1D#~-(*aD6qfO^!&h?Fk_=?>4dezjWYuETZS-asyQ+Oav5@zaS1q34p2{?` z*{ARv(=!UtFwSsFV~j^fAbC@pAZeC~BLxqf1N+cu6-rX3@D_OFV*|CuO+XPs<0 z~%55^1 zH1!aE75pT~MNNY}SBBVy$mUY4nnc8<^Ft_PleOG^T=U+986&8LMDi@Bnd4mU&K9a> zvCJlCE(%IAfU|`>@X~R<$A=7@^?-)rglO?v`JYl;|%(O2a!-wVzOb zT35Dd1`9mlr?U4r^Gy7dp(krCmg*VPkszmdgBs)mBN8m=U<*4m1^@Gr5?ojCQLey& z5Vz4V&_L1)4+%E4tIbu{LoLt+&~W@1Krid(df3E6%NG~+O?$7{Lsn(ch8*zi8bDci|m7{k%S<$ z=&WplH)3326=k8@Bf)eT5(GI$>e9VLvT8CGNmI%u#I{@vGOH(%ymTRbh_{Hx2i)Xj zgm{XC3Yw+<1=ddGjfkPGt@O>RMb1G(h)1BP)dW@_8ym@028 z(?-$h`D0j;iVTVLcA zib~ij)TEm$T%&UH$zhvUm9!VQDCA`7*%m`F&xoX5%H^b8Dr#(Tb7*6m=Q1P@^e6*w z%359(H(zG8-#Tr$_ryiYpWuI+@~L{55YRTu+Jq%neimqTF4bxC`cdQtz^r{DT@pvE zrgo(3F)YAI>lV6dohd=+>JG)6>~2+uyOL~RUE08ay&)oqEO*klw0lO0`k~%}xwA1X zh8~HH)M=xv4qc|6A&!3d`$9B?mj{itEZ8pon3XrFl^0|ol)hB-qD57EhXFMeRqZXP ztyht`Y*f)9rO^Zbc%b#1E4<$6XFg~HY~D8No$(cbC897*Neu5vFd!i7;IycqUL=(6 zR%PI!1>?6=dA6viT3FAIhvbqa6Y|Av{Byauz6-(0B`@6lOKCYARF|6V5F0+gzm03> zTKKfx3@#}%sAssbgU&uzbQ}Hb=UDPuuDedKcTUOHXcml1cga@CR?Oa%5_>r|txJ-p z{1~>lI=9SZ3}P>Cl&JBS1$IGUfeLApDK%NuLw~(fYlk)dNh~Q8yX&;445k}hz?Zq&f z9)XXlEBy%O2f4}4y|4!$#z6G;wa7SI%e&G5E zz&>saz7YhyI?nR`O{pvv7X%jF_%k}TJ*X6O!;a{NPVp%H8r=bP&5;WIoYhrT7@y! z2;CZE)!6Au^-3ofQ&^^6)sG$kF52qOEXj zkQ3`(`#L)D)dOrfB9)_HxX`hzhA?+qs}Y1FOq0_4+o304Ck`KmxJ6)jj@o*6uYSC= zM*9^RbUiF<21{>yhtsg?uUWm*%pC+z>3n@E!L}z$+`ZINqaP9F%qdkE_VaI-51sdx@^xiU@pTv2wwby@i31lM&iuzaO>^ zO?Hw-HXl6vqQu%RuaX0fpvOUYz?MIEykX(hvwdeXcR@vN>zT(f2WFGm5RMxs(jdBAv|wP`B@?RmXbQ*Mg8Xhs;K;6|eb-|zhdpPxmJkdlZEdWGGALav z>wHek?pO9rTPeKG=WRUYh(S<J4m7dLa~m7hs6R_jG8tAie4XYi$3K2!erCL7(GqDMPdMFYJ(G~h<2 z<<5oPQ)c?uiQz}zt(C7H@^*ck{tozwFpYnD8#i42X)?eX=R9@VoEMie!W>J$>nO{V zJERXaQpfP+;>jA-ylt@Cy6-;JvTd}>`G!koZnWp|#+&Qcr;fW7?dH4auxFf^&)-pu zR8z>mYsm@lVEz_G_Eq-~*y$0}*B3 z`QT37sy~tmI1r9kU_?+J+)x`7(bCV;+J_gi zK-H%@$MZ&Ra*C*>Q)v1?PXQkr%lo}#dyUxzHC`U_&hAO;{M6zcoBu)`mBX?{;?eeF$YxDSBldHa^Y~olVi%&RI=1RZ@D=jg;$WAV(wDYuRO^p%`b##R`o&# zb1}o@Bh$)$j~&yNo5F)<@HBA5&~TUK0g@a>5%hgkJ`wa?)}orX-TS*#FDYL0Em3rp zG|$w91Kx2rv&1Q&uw3FdW_n5UxOl(t$f~jXW}Fn+p0PT*-Ac zRF7M4xIN$8qo6>ndNp`9wO{FLhH|MQgx*nx$v$~`4)`zx|StZfra=^nl!}I z*ebU5{U2D9j4R$DWBNc{iO~E80A*HuFTwGvZi!~s9CA))yob4GU18-G!AE44c+MPt z!Dujw&DYt8mF3fQQc8!Cl|Uy#`Ywr9!J}CEw0M%0+=5XkDPAVZiD+qF1a+i`xk=7f zaI3D_sbrRzsYy*dlGJ0oJt>k}A=mpVdBtECTAvuNhbhIZVHGmOTC`0hr(N`OuaX@A z$T4s-#%MCeY!hpUR#I~vZ{A%FN=}JOiA zd}Gjf6_tE)Hp9*{K8R+b&QPJwR5q!b&R`^JAj&P}(c}qvCzQ( z<0nwLazWl;-9hFv;O=Of0O8Q98194zP0Np=wqud!jl6QO&9B z0?fxVIN1-y78yR2w2kogNhDx~D$%MX>VrA=0;+`aV61ow+YmZ@7qadCz>iG%zxk*r zzgevq-Os9;oUSO{RRj9xVM2qxb-lB9aZN$aGi(DOZ_9b0X2DOvhA-Q3zRin?DDYj3 zH}%EJHt8{Gp#OfNf`oddM-UZ)6MqI_pqLe zIDU-w|J-+g^^?T<(sJXIn3lwU#_>y_0xVrv+Crv%iT8 zKrJ6cOiv2ci%nB_T>!54 zCh&XZj#N(3wgmVmyR)lXpf9I~ewir5(~Ek?(oSVsg+@;ELvSB$_fIAg@UwuvUR#PgE}Yw*_PHu?T;j$uLpSl(}z2 zrl`{3!7i!yRh#FXpy&DQ>>~+(LRIcT$*HGfMCa=7qpHM*mWKD^2nNF=Lh3GD?bTZ=9&9+}|$a}+Hc!x|e@UTdu z&aGDZe~cA}jAfbqmKSB{zHdUP(oHQ5LKF`ddSV&N@`U<~a&)XZn7@y5=6eL#6N7jI zGJ%)`9s`YI+k3*{G5FYOp=#TG54Aw#vlWBA|Du|`rrkLN9?88VKMlq0(f$!TABH!I zCrzjf7^M@sL3=IMR!~&vNs+sN!jv56ZAH~aTf(e@*+x_5VTGnj!B4B0(j+rkaA<|c zS_#^urmB#ol|Cgq-VE~lVCihuyC&qR$#Y#-GaGQkucQ-(nm6f;)+`a+F;mu~0_y-3 zQFWf|#Z*j(UEuP3PVNaI7K!>appCD(YT;6ov$XFyp-7Xnr0;pQNb~;?_KrceHBq)` z*|u%lwr$(CZTpn%Q#fVYb;`DF8?V0Z`)+@I`^9}fa^_wUYe!_}&b?O7Ima0DG{2YK zg{32n_W}iYm&A9%U0aRyyhGQ`mm~SuwW3BXLA|<=X;I+N3U*TcSXeE#QH6CD%9Zd^ z1>546)uhvWZk1YH0MFsj5OlAUbGs#00vO0OXI@Es%U&n4>DfBI0 zT4}KiQ}Y>7{8|`-KcmfqQf9TAY1?DAOPM!Xt@z(;Cz403Nv0PejI0mYfOCOqfNG3w z)43`kmOKtQ_a-j7Ef}V&C0XnCVC|%{oh!@dO=!za_n@#0xtULy_WG>OKTr*MJc4<1 zxaZ45pLiC!>8IMq1Xqb?q7Ccd9qYiF;g(%d3gKsE)l_hpWOI7W5Hn87#A&V>f0IK) z_CVrNcsZFX917k$m~-@8E!))(Vid>_g$>9 z1e>tSQq3=>TFft1uH;DlF%KiKw^Hblb|h)u_?QOgw0yN%vXpaX&E@iK@|O(XGOj7S zYMZTWk>k0e8%V@bVrJ?N+qtH&3#QMGVAe7f&oB$;&U|!NQjUwlDo;h&%UnIv+5Vml zTa{fnqPqZmZ@&SV-xzc$+VP0ZlWZC*>HT0UACFPSgA^$Q?JJHM-n1dr^5*6Cvsr{o zoo5(jMCpR7q4C|HNgumIG1;RDX_A9_eq&cCbitE3K~JjUmq@u{B(%&*xpMc3ke|;vV`k_pdH{XY^b+Eg*j61m)pQN|DwUgy zJ~Q-^l-}_T;%M<9fLn&8t?R0=HY(=APgFwfD}nRRSIKcSPHAOM}{%Fg%s1M|21cbe?N$@!@oh5ZjW`QKyzuUY*g@qwD@ zt`GO4P6PSVaDQg?Bk}QXQ5YjbV{3CKdsjOXI&(`iKuE}^CvizJ4o*WR00)4hpZfs- zzQ4bDwH^6%ocMK}g^fG~^jt)Yy#)1LrESC1yi$3z9eH(}c(fh(be(y19Jw`Zg^WA} z4c+)-?ZPCjgOoj! z72OgPT;t@OW8@s8Xo7u zkfrILq2ZgZ;g_xzkf|G-s~wP~9hjx%pP?I^V;E6n5LTccny(+4rx%>77m}+Rlx-AI zWE5Fs7+z=?QD_jFZxEJm6kcc)QD_)eU>IIt98qK(S;V7lFKXe>qix5nX(MJCz@ud= zVI3r7}*2Eckyc{6B{9737EI=L7HqEe8Pj=QjZW{|+!C3^EH1B8&(Q4v7wpj0g!!h>i`9 zObbE}vrA5k$_&l^MVKF-oNs1_hKf*CU0w4Bp`o@GwXUhErLCd8#-g{^fr7$*Mih6Br`C4*(1v48|kih9Ec$8lFsN-e2ILEpX{2; z$#Ri#5nWwi$n{p2qzwj~POJTXUnDvEl#l1#E+$h91|e^|E9`8Y`3yr>`{U(Yg>uVQ z*T?gv2}8NMe^?9z4AERI|Gi(g_siYovVJZ8cQ%^y#4K3AH{yyAwiAxTP5@xDfk6Na z8U$eo7}6*hw&g@`e;9Us0U-*6Q50ondH@_G34w47^KffW4E4#M z{#d3t3}YakCyL^Dp(Ti7D8^oZ;BP1?x(c9VDWTQk6nUw(gA@g`NYZ4E&V+$qx?ZpS z>6|+|z;G6Rnq(QqUKM8PoUIi{nMQFL{jl~M0ms;mJF8{6_8?K@`95!u6a~IeTqn7a zPnN>Ct{a4dxNHhsl*Mci1r-R1a$1(9?gDF+C24M4XJxWFnc#n+tXP;A@k>gX+rkpqG5`WdNu^lOQWC>)$77AbY9}RPJCXDe)C~ohTOJk zUX{N3VNrp%77pP7J-kT=4xu*JKwIL(gMY^r~t5tK+IO*wFiA09*e3wiTIv7*$UPari-x$3GNf zQQy%QV^)5;>v6?h{`32OGy1#hX3m zZ{9nYL@yB5O#p;UJ`nn7FBsQNAVN$&2)RTbl-5lU#za0C`)D7W*G(`1OaX+rL_bpI zO$dcd0hIb^KU(`uC__vEjJd=B*4j-N$3y{~`{)4P8$#FvFu~UWIOyB0e8f#MKGN<; zH)(gg&m1=XTYbw9kBHGnkw^cv-eYK;(cYuuT=y;|ymKQoF=mo@AAJ&oYtpgCwH`YM zTlRT)B{a_2^7D8^m z)&X||x$lGF{11Rt`ma%ePZ#0*p}00K6Zg269BFmSkn!$l)Ofeq;=p}^Q}z)>tJ^H$ z4LQ1U7U95HYbT|wRf@27R>atgN5gEbp0?Jc$rYN^5c;x4{I(P6MVW;F-nfnT1Ti7F zvv4ru2SM5em*ybY;}GZU1q_0*4#qutxd~gYGqlPtz#JA3V+^Q+F_hTHbSNKYk%`$e zuL?r%I02>8*@f2H(LnElaEe29jFNTPL(E{fqmVL;A_)&d47&*-!a;--Cul>;DX%97 z0tDdx=V0~kQW3$@v zHLGaF^)px->fk^pz8p0_Y+K98T=Nm5{DIX7! zLSLo(ES;|swZMdNWn@D59Ze{o>h6(OlN{bagOdK0K$L2MsA;ua@nN&6GzP7^tl+5o!Gvh#uCBDGk%>k)U_HH$h z;f)l^|9p!Rv~BK??B5G6R4&%XWl?)f3p?;ts6n-VQX`#`$Jn~L-Tu%`37EEA4`^eO=>>XQY4qnv}Kmes%zN1 z(k4VoLQn>g4yfOV`F_s@4nUC{OOlx_O*SIikJur6*#+QW_ep!-o-RYos8ex5<^xW2r8{ND9E*rqX~RHY#qux2V@M)Q_TiS@joBqWlQ z`>c&T#`JUs=0l!~KTUz%D&Xh$;Z%%pn=7JR3apmT#YCR zh)9fpSI*RX_BPf0yx~CAymS7+j;)kI!jeraulN89K6$r=pp{kZ5o1xbvI)O%$X_zN zbk905F(;x6LlB+_W32OXbIK|-PUzR=Q zd}!_qB&IB#`9(%4VM5s!lrxNGHG@T<&J#6?&>11YVIdo-=1LR< zud`d~>mxPW>!2$`sc{4H^Z-nQ#0Fmom2;5w)!Kb}t!zwB z(3k+#WD*XjrOYs;(O=&udz_44BWY2^5gDp$h=P{mOJJk?i{Xl1@Ru8gwX39I{2NDh zlGLR$?QfQ`g?P3q-gUaylNkMWL%8WwGk)2zi9A+B6*Ege?=*T5UOvlPZ6aw2G<>71hZ^mpN5 z^vGy8i0p_h_VeldaAV2*%mq_%pJhh_g}a(fyB%wv#NJ&!>^c|byz+NiKs?!W5RVJ2 zQ)FOtwo}-HJHOOWTjbUdkd(ys!Lxt21XMCf7oiZb*!;n~ygs%$K+b|YsTims{0k-9 z8ZSPkT*5CN%e`E?Y9E%_#pd^e9%QgJ$yrK5J7dD=JDJ~Bvr`BgGSt+io12EXKOq!O z5RIkZ8^RBkD7U$lW5z7m=wt?i2*_dfe~g&eDPOm=&d>}6(Q&FF#T1tsrNgZLl!3`x z5FM;0OXLJHn#m8J$>=}aQ9Jjj^8U6K;4r*!qu#W%g`Yu$oo=;EzM=VLJsKK$Zd~B> zt7ZV|!yz5~Q@AwxNtm)wCWDhBgyA6R@;X)3F6gC}D)gsRlp=CJHZ-W_a8P(Fh69b1|lY+7qIVAV%hFMb8X@ ztdLfdGxXhCdzx^SAr#*!1!aKPML-?>mZ#CDi9R z_5t!>Cd-lkY0D>&g}u)m(4PM$ac;4cM$Vr-IIurfEd5!2(>@fzEuh~WMc+SY7!p~U z&_p-dvd+^qcj;i>!m{WETA&^}!~o(T_>w_)z1&&~Xx zd!2o-=`ksK>LQJlLp9+)oNmmb^C809^;}n0eb)EAh6Ib^1{{lFPS+*%6H3c$Te?`# zc4t(>YZ7bfla`9!+ej(ZN@MG{i^IBqx76S}Bl^@`w9oUG zy5xwObwSp?iqa-pZy2!iz-f2=Q|+P;cCP}QU00Fak>q5E?w(%w?9=(5eNnVj4 z231Yz&+6S*=IWO`S2KXX&{m4d&bqj3r#r%%WUK|- z)|*yYh`VHPD;W3%Rrr8gpD`bGrL@wBv0f%aYy9z!-|F zyz+lFtq)uyC~h*ld!%uc8-&Uj{pg2HcdG7O31M3-%0s@ln*$DN4-cF3E!(~U-TdB9 zQSV?pBi4?cXd~8b{;`~T(fdsu=`Yxm94$rKgovJ~lhv<~1r_vbsvK#YX^@cXw@Ap^m756Rd>7U{Qv zl_B;2Bvl`HVCdd6;C*0=z`Sc?ZH0ZVMbii7-(vKricCBF)~CG_MPR{!9hhanfi*Tx zJGQ`x3)}s-A+6@Z3M(??_{Z3AyNC}su)v59SX6=iuTTGR`M*qz)AfIR+w=K9y7ct|Ecy*L18GEMAHWs(jOvkCB)s_99Y8O(X_NWG z_XYk_gm(q>RX*y2{TT47(>uPWo=c;^W7r(J>y98eku`;BT)<&|Zpb>Rf$9}T3;AR1 zsH)tHBxbnz+ z6r??n78|Sr*Wd<6`56K;*>XY9{J(TBqn7)<=xci#hta+KCi!NY!jG&ywcz?B#2W`cs+Wx`5 z$ur`?BYt;5u4w?u-f*EqhDWr}Fd zO?c*n3#)a)w$OUBbt?$<7Kucs+e0wT*L2qgeW>?$`)#E!?tE&Nar{X8w{m?_WhaNE z+q0i85O@yei1$Y?+NU}F_9_G%eoL)%4hOIqg?i>gu>ylpcNjKthkz{j5V1*+k8;|K z0wS&Wx>fK=+ASim4C!aRbF_<~PK#EC<;JW7Nvq&g~0CGJo5O5##Nt$Jvw} zCV33_7`e-a8@)a3lkwMza%n*+1;wv4f>p@~U+*?ydP=97W!*6nHz;rUwRcb!)kU%4 zeqkhYe^ zB^bAk0|5P`RC@Rq9|nYeKSR^t%d)Sl7d5qrS*xcWH9N&J+j_m9H@d4^UX}wmvC_L@ zW?#?n&zJhwi(ZQ~Y|V;o7Rk1UW4XAgS?Hdzb@C5AOo=3CeGaR8$MVtq@nRj>Ta~#l zW1hg5W$s|@JJ=UGXTPt~o38WW`@45fgq>dkvj7mquZe+)!Ghr;fRm7iv4R69L&uPS z^v5W}h4N)S#`6w+L6}2Hlf?UPiaqK@R^QYS$`KKfk5lCQc!c*RKO7nfg~WpwHUERh zT~~8=X-#FtQeqz#z(0=uzgOeGuhSqEL|*MrfNJ4?N?@7V{VPCasxoPx#emYIe)fHn zg101rnc=n}XPISTqe&Fns2UG{52P1+xk|?J{h14ENqh;C{(So$gsmYhxTXx+Ctv}A zh6bt+ej z0IG=9vwC&^PKr}3^_lu0j1PQbYSAj@brS0x3LM{GndHbym5>R)213HdRXMAwwA{It zn_ZO!P`Z5JLri1Oc1~UvFJZ+tEKITH43cXZ>!R)aon0U8*0lncQXpa+Y3!y*T zNB7;=%rXwl`)98iJ3f=`c2S4sVLWa;R-#)CD*oK38asC&7MMxBNr6-sMZRMt2YkXO zxPPn9H7}lyL3F$x3RW=j@4IOXCK)hUG*J@Jkz2Jis>{?bX?o9#L zaX0MQ;a~Z-?OrTFqbH>=K2q)R%mk{?YYW-Wi6F(Oin3L7Lr!A|#Y|bow2|%zKX)>i29KnTkbTSKjbjF5akeolSmi?@jV$>NsUcHI~5PT&2jl z0$JH|2ucDOKN{Ph?GS}7vYUV9P}a2Ay4HhQC1#gJ7&rpW7ehap>lB>U>fK^ zyxyNalQ*ZqtyDPVx~;P(EuW^RbJXIX$uzi2YeB_U?7-vIF#-Ky(Io=>Lu}7QenMA0 zZUr^4X`9HB*~fL6-q$5`y$rS*YiT3P55(azQ9wkW-FRxx;zvH7u1?k`WSsvtnERjF zg#X^!|9#WXWU^@l|2!0`f7*YmSt2K|@}tJ(J5dMK&wvoH`1rcNc zzFfqaEHD=OFt@W#9rSy?$LGVLAe1;4pS@FVC=`NRvKA*>{bJ3n<#g>54}97~hQ-h6 zSDD&)OjnA9WUxp;UpS^Rnzq;w!bpWiuH%>DUugNH6(Y(H|K0K5rNZ+ITClzui5Hno zfC23P{AvF^%Ktw8P&$30@}H^)A=Cf>R6le0zY&xrOl=%w?XB$T{zJ&MS`*SI|Ml}^qDhd8|L=*3_pTA=ue|-w zyIA);|Hufs9eTz|`O^2y{tAa;eS0j3>ltL(iWdWYn%PEM^>)h~JozT_7E;!|`3sw? zF_ZaSiKP`w)6699ywy{|mWsXD%vw>9&BxBCH?6EWm_>-4YaKute%g^B8 zy2jj78S<9X#46MvTSK7&dr8-aA%=&|f zeltE&NIK2msR0`r#6{%QniW@$spt$Uu64F5SXUd(<+Y`@l7=>KT;=kLuBMJQ!iBnF z6qF=(tR(iz$l>gRvkE{zO9oi`50;1mEO*$!9F<9xwsu$9`>^IKTHAuSC0g5RTS%V z3dJTlLhjEWWt-y8(e%X9T%c?1%rGuJLD;0pWN1Hq#wrNY$_0mz1MnqqnS3_ro z3LNi0y83c)GH)fXu?D$dTJc_&3gJ)CM7w1C1cjX1XbEs(xgPN}-w~z6^4HGoOVqSY zF2SVHBB}6_=1P~GS49db>SQT`i6s5Iu(nzIuH2S+ps!I*3H_Pzbzs1AcHI|dLY5YL zIdlFQjM>`TnO`{bnw-%Vv&73XQYWeHOS>0rr-?<|!UEFU)v0AWfqrn?7 ziO)itX-h(~H{r78VYoBsSrzpz8Rm$2I4t&+Q3mXwvxz#V{j5x&`Hc(w5@({KuSex9 zvvN=hKQAs4ww_&#sX0NjW-e6^vd1rmkDinlkn9Ek>`3U&#dSKbK%Omi z8fifoBro5TKy_8vF+}tX@E}O;3&w~cXKvgjP_4iRfLkxQACtvLUC{E2k33eSlsLl{ zS3=Tzk9O#eihWZaK4JqtZtQlrT?{_hi6lcHI%PDwStDSE_@O)+ZuXe4Xj?L#kyZ8} zecqywf)Mh%;{=-MFLHuuCpOC)x5;IBZe+1Bl}h#l3Nq)ZrKE&K9oM{nIcI@Jm>d?Emj|GF+yMK9kmi|zv15~FpfA6{@Z@eNMP>*xcHdY%%ChB?a~amAf_dXT z?7d@qAY(s90kF{*G!jL4j2_7CA%x$CCTyjcO+%R>6P^jLY`)?zzUV_Xd+lQ15O)Z5 z!rQ5;<9)OI`TkU8*Yoftr)u-Y)&aBl0eA7Id8XU)3H{Nqn^?=SN_Wh~r#Y4pt!l2L zwEoaKYf=g-s0XxfZ5+qwt@49R1tRwKtc0M%XQld4E7GU>gl;hRc5kVPM}D-EuOK7> zs}@W^9kNTmwU~Hix+O)^MBoxQQBY>TCh^0IP?0rj`U|3N9e^Wah-^rH_|G`5q|lff z58`V|a^ffQdk_c$J||(MTnoAq(WWXF9jC?RUs#{0wi?k=i>(tcq<8_H?mKw=4jctJ zI5{Nd5*cP<8D`KpD{-B8(nGF2$+mwmMN*6llmZOEtr3EAB348c3DnS3?BvP@I#jbA z+M+j=fJ!CeDY1vdG9s73GuVKV%kEfKf~kjD>DzFzyb1n1+)$})>VzunOFcmm)xQN$ zz6?6`ncvE+o&<+F>W~ff+tsMS?O<_0W*`u9OqrA(L15($m=hEK!DoXKFS6qcpGMQ3 z5N?jy<*2D-Ab~-qRB{!w6x|iQ-Avayq1+XOV~}M>Ol)&;cW;$1c2gpa!J@p9&E7aU z60Ibu-{3FuqN*0}*W^7*IWO~e{c1zB)7vYhWI^?e|7B#~O*+cqi8+zw@8*QCWU&>v z-UMP$;4YB6hbqtj_4%Qjd73mo_&q4XYY5hQpz2e1;s9BWzT#RwbCWiKA(4obF9uYJ zWsKqsZDZ<256fLF?r?{t0fJe_361DojK1&sAi$ZE@b2B#sA0a)gBVrMGq7hrNz0 z2ghO)6yL0v*706-gV3xUOJFU4Z!yn1oRCQ$ILUJz)3ccByR%)vudjf;bfk!u)b@y$ zOX))ighT#xw`wC_x(T3UD{;k2SZsV&@v;^DHrNM3iZ{5c3kaJw%SL!4Dg9eF|(!DGyBOX(Fs}h`|F}{@r6Wh=h+{QmRd6ysisho zFUeuf{Gjh*Giq$+uq`dEuX5eeG*0X=aYhrgFE+sss|RkphTZ(o8F+O-hy?j*Ooau6 zX{KM{**^SFd-Zu!W^6+tyTNl0czfXjcJayZgyl17S=RAb)_LfN;NDI{%i5Kg!GH1g zM@*m5iwB@&n-3*dgT59^j*AdBAKv;z*w_GG-3OT%i${<8xy3*Tfu!~14~RyV3g$rrm5jpLkv&N*y?^OgD z2u-M%FmUn;HaFyHSU8i>e4M5Epcly-t_-!hVbQ*1 z%RMefHc!T9)*qBX&UNS^^fpMJQq+FI^y!F|%oM+me9&L~p<7xB9rzHpI32tw z0~T&vX)p;1Lfd2G(b=oOEM&DEDX;GGi{RqMIt#Nfo>6npu4HU~V^9UXq*u5!%kz!s z=X+-m)qh%zYyOM!6n<_>^jsY8d8R5aD9%VJn>ZJeQYyizM;3dQzitH8y98|+`?@as zc-9h*wP+93f1Q7B0l&1Ypv9}53dkp5+6a;sJIj_{fVI%9j5GdT@Bu(NDrGGws7Bi; z7@LG4xGxaiINa#CP0{$4|DW)ufb(V z&IZ7cZ=kv54S_19%mq%tISt4BD-NvD*ITek#gRS3(dG2)BfyrdE&a^a#Ggl z2m)?*JQ~QEED~Rqjen;_hiiH+kBsvKvoi1_UlyZkT!C;{pqB#|lpNdR&TC<&%?%HA zy(I>W;8{NNj{K5v{!0ahN9dbuoysJp zoRdSSr!FC+MYe!j^zcK_!#dp$`lHXBOz4*b{b$@4uAgq-^4#?)KS2CqCt~X-EyDKH zrGOx+Pfw!yJUL_ieDy`i_u#0Y{k-u5j2PBuDqj9~KP373DV|r{mw+jc4GF6Ak?n*8 z%tnBWNCXb7 z7o23bxci=%ANptJQ}9z)!VaIq8_sn8`zw=I!1DaS%roMaaQvODOFF+?{5_zT(9lTN zK`y5;${{f}{W5DXN7-Du!68F9KXysB}tGmh<)(c*T?dxWG zmS0phmhU&oWS%C9Ii07knb`%a*>El%2V6Oj&U3OEw+!2P^6P=A$@S^Owu89i6JI4t zbFwK`4IP?is>L8(eO&6nwZoMF?%nw%@dLk%`2A3?eN_fV;%wfou3Aw~Kxj$CkV4`D zn&-Er(+lZQG077(9K9P$%nYUAiO<+(+o%Wn47k>_x|E3o0!+i>VVI5&4aJ()*i({s zHL;FaVmU|Vh*$4U)~{}Udfy&G-WhZ=bOo!)f`x2PZ05pMniH`HBD0>5vsb1Z_zl{! zT7qytRZJB31!WgL9ZhzzS46KZl`r@xNW~LSH+#GzN?ccB9^6}-2D&EiOTKl8X#=nH zGat5E-w<<6iW7k?%-z+Q*ke2b_h6pMmYGstH$I*>Ghx9FR|1^;h8LQX1A*f|A?W#Q z>!F%@`wDvd2^Dq8nXfvt7;id*&~0c7PVLy%oSV~%pkLT8Ut~|+aVI{&A6vzy54Kjr z_gW;S$13o< z?b0&p?7k4q{9#=EfK91%Pb~(rTsbu#WD7 z-BkG*957P*%+P z9jB%-Br}Xyy~JKM#RfKj96CJcpi)t)sQ99_9hc-9JgIm|`;x>1`v}#OYD9^}C`jnu zVCBBhChxB)B6!t(YUX}c;M&o6>q*k&c8t|cWWUM-A}k#r1(w1^k^QuoBJc! zuuQ?H4atM5Vt_ByB(x--+$qz41BlDb;`zw?|5C$31$^~KafhH)NB?sv;>Wx|EtJ<8 z#WZ_7kPZF&eug!@OS#KRGsq2&3oCBEQ6P94>>*zff{RBVBx2_Z+BZ&0kGubu=1%Dv zPskdG(6CflsLDq*yEZj#JPWAoX@}`n%^NCmo?PBN2kkv4^h*_Xyu3LgAMTLE@B7um zwxo{G4YAWJ6*!c1T}o=ACnm{=toz2vGQ+QcUdHJYtwl@OgIkwwrKf(AB8v{{opUBe zJv{aMyVlGy21~^vwMB^3TbivxheJWU?Mf^{dig^Jh2wltmn3f$;zs!D5u-&2$a=QD zFEJk6GF}e#P-MM3LPz=?&Bln|mYmb2)jn*xBYtZm&X)Wp7<;b|NOQN2dJ_BsM7)4D zJ(I8ks>CK7dDFW?P>QTU<)CfNdxMmrHOg}?I2qoGj>LraNfTmw%4SS_>KCfCIU?T- z&rRCulQn+nrHjT!-=)543t25C!91BQ876B`nKe+cEMUh@Jr9^xD2czx>^hk_$tH{D zv{Q+DU8vZFkI^cJuXXf_4&0ItaVr7FUr8*q4(OdrUE+hI5B3c{ZQ3|SOZG6}F(QY; zk}}SNZOx20Q5u&k{JQ&D2PFfFOYm#Go}wq>LH#NrO1)jUQ4Hc_~IMXJy8& z5TPB>K|O$JMTvb7?UkHGmhtGk*Tjv?S27RjY-fu{u!wqAHTx3jYATAR6)0&@9eWyA_|oL3b)#8)^wk z)-a44Z{tc>2R|6@b>`L`1zu^uRS!(5ho}iOv-XL|P(|Y|zJ+}W4~fv)uwVn3rgq-6 zAfttDmGAqAY&ZU>E0KCXMH=zFF(dUiLUQI!WB%nEaow7yR-s?F^s8mcF9Hp0&*a?E469SeScu(U6P>SOQS zUrru(dODIY^0^8>QoKkLQRMOmyq^6J#lVCP_+oow>@N+ybsl%WKiU{`RTg$6sm2BC z{eXEqlZB>3cbbtTEcVw=q`Grz4&#-guJd($$ZOo)=W%`DH-RnlLVTu!rvH8b_`+Im z_pe^x5x!ya7b5&g8J7X+Oat!Q0s@j7iw+lFqvZHP$r;H_F8&O?@SkFjq6a{43G6`p zv`JY~<+!gPc2g>%P+GKk^o@r%!PMB$Zb$95VYPf9Z^LIE; z4c$&0F!i}o^{bu$nTA1pr?iT;c5LZZ@Nw=!vq^va3~}@YWpbx1u_3RpK~R$E8fxX$ z$ijg#clj2291gF(2iTmrXp##w%~@_dR{9IW=&TuhBXm8fecy#o;j0&c-zNag=wTEA zpHHCSJfM}_L~l!5=66HU{bxNb*PwWu6CpG<68)HYJ?Te^*QNTXR_zRpA1dc7tHc{C zX-29-9L-0e(ritHCm-e!^&jATtl+>D+^*th@J!piW`9EolLYm`zr8 znldJno{@qkdK<>q`T^Maazb4dYD#JSdT`gbJ?PXnJ;Cy9ltzDCKfU$tu zOea=g)1dP2%+o>i%b#V=0=Uaz{T_V=T{yHx8eX_(w~^AD;vt4sU7 z$uNU-y^dIkfIULP_Kh^Irg2~$zm1Oi!3Pu?X>QP}ewhSOqCL*^?B5SwI#b;Zx zdWXrQwgJErs`g-iIPD&e7GxVj@2jvzhI4z$w+KUPFNOVq~_0+%mW0e%g zpiL{Dvnzi;d4}a$*aY_Ro1#$O1;$j~uUdIVW_gApQ429ZMK$NASFU&q^>h^`#Sgk= zq^U2`W?sD%VdsP4-W4f%8ynbscREWNB-2#gW*G^lVr;524BYp89r-?=zIYvfdT(_S$e z)nw$tbQDgG2c-#{nQtaYlN5+kWTmGe$?5e^9?>xvS7Cwtt>p#;5sf5?>{Kb)TrFGn zEU=0mbyHD8iT3%?N@pmdyYCkh+`sRSxd^8#F`r)@^LbO_%lW%KKB+q?SK^E$M=ibF z)F+T06R!PKHqvarv0bH3E*$_*;sr{7S+78FQg&IOT5_yX@8BHCC_?%L40&P6+8n8S z$bG>W8(%%-F@bQ&_1i$ATgKgKtX{UnAbB#)&)-=U(L5sOUfUIi*vd_N%vhIFDP#}m zOdhI$3h`Z=I-1Z18*`tIy$q-HVGdnnwj2>o6uZ*FZtN0jSyGS^jhxjg;vI|HeSC&x zE+5?~#cjTt4q8%apgz9%HEx^E3yZ5mVKKVUO=Uez-9kg>Zm2f$FsgNp7IHyx#LR?!*6ucS~r$9gX^TF||Kp(df1WUgl z2R{6UYEsyML&jX3rZcQ)nK6oy@kPXSCQ$*Bn@Xl!cBY z76iY5AJIRmdmG`-aF!S9J9H&Yt5wihzK|?g=X22bm<#Y20fl~) z;Is7Lwc~uapsoO!a^9KiIo)H%*{3x5x_igJ+BGg7(qYdGr5+ujnCm+hUj#>D zI^+N5-s&bnxr~AE@(k6HGc`u;iep6bkBl~nn4DlfB|WHLdTPy;Zcd!9ooNOBPc| z!K0wS1*3uua&c$QtSdIg)`iB{++07oy4tw^{6wGjb-m_%p5%Sb{asi}L;A`4-VU&c zwD=t;RB%x&ZBJNSn!J5sGHO#MJzXMoVK#0@WHMSe4Y?)Mq$kw0CFCJ5m|bR&`dc71 ztC!;jl=BG`^QDkmq>5XmidUj>Ouu+by>&{wbxJ*bhc@OJrN0%@Xan^31_(HD9=sUu zH8lD)9O^a1SDt1Suf~rAT_dSLBdJ2;tbFmTKFB#;h$A{yjMpsstq&pzV;&V_&Vw1z z7wb>SB9fy+x%LSx6)RApCXgf@sbn1x$*B?v8M02okuI{KF1$$JrYypaWV#N>U#kIs ztAtCI4d<*CPEG$T_?2#$)c2d5by!B6Ikl}zl^mZQO}uWceG@5veg}$|eJd&}o+?Cs zA!OKO?OogWo zFh9&sq`c`&N3sxQ#Yhg208%Z$HYk~-4V7JqshoIc9-j{cj<3;A1`W6*6@hWE^=#R85m(g+xfjiVVqQLo8r+F&D&vEdr_ zjr>q(Rf9Cl*$n~eNSwK+eMLXLC#o3tWr$?vzJckHQQmB_r|)7Z!3nX;EEu;QN@!{K zO*zK3#;Sc|dZVM21Q7Qo?6WDjQhNz^%>Ik0==!P3$C1gOWMM(mkTXfNXqRZ(RfR#J zTpsfMGU!vt_c=qR9H8QNyGQ#}URt6$vNF>;il6vO6}B?hHrlfWa7`qw_61N^ea6{v z8vSz#wdgI71L|+#*LI2qJe|Wgjj`z(^DHzf!2N6cDVe^Q&2s$34X!r3r%7LPxNGq? z_+viD?CXb2xX`~wm&n9=<{w8Do3cP)*7v2IqX2)y`6iGq;e$1QpuFC7P=TfW z6k!+1Q}RzK{|{sD*d$uGv}x|LvCFn?+qP}nu3ffm+qP}nw(YLd9W!y>=$MH40qa|4 zJ}WctyzT|US1#3G+=TZUu16=w!U0ql6|^tb7w*m&+-?M6OC{UTYElk88s|RNP>LgE z&Ww2AWb#$zgA^X6&eB*s?H&H69{yp&_P79GOQ42Jcrxjkd3jK_1gzLm6~9Wqt=+aP znP$bhLaAeQufX{6pD*0Nj)ZjM@c3lC?5`^=D;h8%!x zUTD?7Dw%OlE#@~ok0r^SA5oCXT*^HrsvHs``4Vhj@~80>h0^+0cxXYxw(12E8lLF0 zrO_L&QTN4^pc(ZzPc%sBxtGLR0-22Kl^D0o&B804mlTy$%XbtM+E7pRH5eDj^&{4d zcI=6?Cgb5Mnfte}!h~I={p-#AYY2;HPuKgw2lDmah*zn05W)N)QN@k5Jh9Z)I=Dv~ zwpG|n-R$rB#b-aZobn5EAQvdzcr`k=}C2J!0 zHraZJ@HfufG&Xl8HgZOCj-wI)yG%$nup9WFGn97N4OzwxrBWUeE?kV`Bj=0K8a&zjLs`75~O$!j}e#eTx zKg*saN%_Pr3)9N3b<5=DG%Z`a$Da0VLVu6yrYV<-MN>}k}{rGlW=eEI8q{Y zI@Z<&lSeVb55FpOxa5egY1e1$>gkb_l4%B8GMp5fkD051mTCp$Y0-ZGtTb-quJq2B zC6#`abBszMR^f&(*&o{$ECq2^zAZ@g2SeY)SK4ZN|mYyo#44uq(Z=BvYRR0Y-NA5*M%`Z>7^A>!9l6^}*yGv6Qfw4!`>#ZNo4 z+@F_OIq~C4Egu7uJYFRi3})RbkL;J-LtIcUMaNBF)GZz1Of3ap=D3cE3m;59o^I~* z#iRA2sP(t0N6oqC8x5L|a}Fr7GW=H-qAmMhc_^}E$=JURHxgWz27WgMjqUL=0t!|` z38FdN9843L@s7d{uTHX@JiyyBe7Huu3j1=*S4-kybzj8yUyYJMBCG%(`tpkd1rv|z z?iS5MHz)ML>FHEQ_M^u^Dc}k%Ur&Q>{X_9~?ihSKQm9zLI*I4%AZn?^{lOH;gB`#f zRhU`$MN$*Ajb{M9$(i~SKM-PuMF2OM2=g294m;TzPj85sf6H)Rg;&@cw{}SVTodkf zVf1*t9i{zajA$tpWO#*7y2sJXe9BpLW^HYG^4q0;$mJ^tCR`6@^E=O1f}3ax=JZO0l%JXiEWgMctdnp+zZ*wkL(}o3#g$Y;!@nNlvr^eH zhoXog)<<@uP%&cc2BjO7i4P956`5V|fxl*uY?~QNR5^weKP~UP3}i`~9OjKT45S9U zt|*E~PSzb~9P|f@HgfNwdY@}F3?IDfjh3#tMZ-OrjXbgx%a`G54~FdN8;n3LD!Ddc zy)+CR$n6Exd>;Bgx~RC8Vnz!PSumaa?3jyZ&EiU&D>?_tm~DG`FgH%V$|5z zk5ayeNhj2~y5g4a`c}yC?FaVnu&qkM(-b9OU-ENdL_>-PCFRbBY3W&`Wg>J)?V3jC z6}J{}f;PGBGLCV@lNM}F%D)tmQp5LREb}j_q$ZZnbln%aZo)6$hXI8}%xSebvxzEVAy7!jv(>R1} zFWL^>FO}%;?yyHvZFp5ARYBw;gD+LK<7VV8EIqifBjYt4CAo?yj zN_Yc;%E(K9U6OH)qDb$(bq)XBSD3suj1>`wji*X-PSA~}+9pxDPSS(>#iRplx94B(2TcfuwHj)il0n7PTO)Qc_FL~u};74EpT-A5+{SS$$;5%d&_c97rr%+C(?KX9DUz@VHozNLephb-`fkeiNjIUQxORm<+Y;5KU6 z@M|lWkU@3h>Yj8J4!N)(fbs_NR%`o?-0)X2IR*nstMbZt!Y==Xg(}X=puL|Kv!)7B zLz)Q=3s@Os`fPoUISa<+?GDh`2vVRwYal4oPyxtubhZ;o`}d z@XJ|r)xH)O=oH5fEI^@Y2w(zf!!No@7*^UDsL^k7q;1{`3oRoYVp$^wvwta5?bd`~ z^;-5<+Y%p9y%@5>@#d+t88GYy6KAbPF`lCJ7$V0+A4&PZLW-d`4LZOF=~tNusF<>D zV{Cn1dai1(c;f1bc(QnF5LOv?Q2oljak@e;oOuAxvtuAWV@Nn(Svy88y}u!vbc~pK zc@G=u!?m?g{@J2m-w0Q#=?2+M$v2*W)0=_Y<$>5`gV-GcwyOiX{|n^C4=}R|6r==% zTLBuL34AXJ!lMb{1p?{iEdYT81Lv`hLxhL?7)&Duh*-FaGdPU%xy_JjODx90t2TxA zis%_iLLwJHBc{x(28d*kivef`Cyxi3?kBL_0M<1aINBOQ@i&0ENWdyAuQ*q3Bmw>- zY1fwYSKZWawJJy@<6pQb*o^`FmJ_Jn0p>mr(vA@r?BDML32c56qShSZMI78=*q;R= z;DZ>zR7mjc*Poy?pii0y-#*IcC#L2Dyvjfzi6<4p-Je236+lCf%q=y^fIxwqoQ@l2 z7898pAz>C%3LXPa7%bc&iX<5X1}@|tBpR|HyfQEB+8P1?l7A_i-#I|YsY*bwRUodg z$Nd(!eH|Bi8++#>A=RLyl%QlJ>0^iKX@=|hh(d2do^$>LeRUz*>n*t(25|can5+K} z?S`M}H6KM^>jLtwGUx3kcQgl}TP*H~8>CTwOou%DNIr_IG{-fMD3>TdSBBoFbo8sI z#U0l?1Qr%VWAI&Np&NizC%EWlL$q7p!fQ#zT@4Ik5W)V96VdG)Y4;!r&zYFg;4nlE z$t(nkLp6zylB80-#9_2pu5Q#%Z`><8f%qDox-6XxA$3>}o;*K?x*wr@PGWA9G)uh9 zEP_%72S4eCJEKz~*KZc#T28<|)B0 zIRYANxley*@hMMB!K`NCMQHv#mGXP4>T5sV`YE0gaa-LYsT6=-?EbTL>Sd|gC8F{w z`qQrbNB8s}ZT5V%J)X;=p10a+5!j^~yuCn-TCwa-xL6N@)Xp{EtVc1fL$A&LZcC+p z<>(`O)8ktsG>YADxAHpxiy=gYPZa(a1lrt9Twm~H>qgoe6T+}BsIPva{Ro-lWu!km z`ve=pq*vgi(S6`Hi7B0^3HSA6d+?;f-*Gp~#459_zNy$J8SW1VHf?_H6Ihy$IFDsd zhvdJ4u)W~buE{pNv12gPZ#0Q-qzr-$j9|6NeW(*CE3!|-r-#H9dp<;<>WjTk)M7zt{yCxa z#)7~*@S~72EP$uktHfFcPO6HU#Komqjv~k)Wdf+z1y@E2A*&VCvKg_Hmcxb(Y7$bS z$%V=&F{5e!-a!uLZSDO>@&?0OZMqz|e;Z^0Ov(GU?C-#TQI1wT++iELC z2q7*(m9R&c*a>H33o9N92$;@2YwV3_%yCrP#b|Yw>vRIrP#jS4B=g6319h(pZ@Iy2 zv=L=`-mBx}HsKsFr(GbGXoA#;xwQ4Fs^`@D^T||Fx+Qo@MYM0Ygn#zEH7xx-9Q-dRM;?7Sc!F* zuu#~szF;J`;2j`PW5ZybG}v*VV4O5qN=CS{A?UEa;Oi-9?^LXKCTt&2H2PMoZ$LDL zDD?SGtT-g>H+|Oo4EI;#y-=5#+m~$lqN%^yIeohMguY(EFy10o9wL{JBUlE()U2Wa z|M=@t=_PUU-w)MJiH#2#8Rz7jCei3nOj(PE1SKBPqp6529wXU4phxwm3IQXA|69k_cOGp95MtF?=y%$p2gWoi*jW%taOjI%y z9lyih6AlBpKh)z?pqz12+jF}iN^^}*bQh;!$SSQRRJN5lUY3FGBY7tQJ0TfCy(AHz zRLuN0N3&2imOWP9UluhX&YgXS-8(pwI_5AJCb4=-Zk68^%caGs43yh;B{uLJcDzQ4 z@%@foT!wCba7k-%6c&NV( zl2wH&?{t*VaKtc((2YPzoI-I@NBJWhaewRnRV7UPp&qa;EcsECLnW#4>6yaNYLcV;Ku-Mm?+qbZ!A@?cP9v2i)U1GUmSMMG`5%Yc=^GX=cMlDlpqwd$#v zava0RvOvvp4^^KrhpuC^gT=i`Be#i6b`|Yu%fh3hy{KtvvR-+rLtVA8&84YLvvKG? zSpzRx1TQOCL|>FH>zMZn+bC8>`+`T>g@#+ZaFXH-Vg)B=|B!Eit?e*`ROO{N$wY zyX4_da@DU?&wcLE{pxAY?gm@tJV&L2H=D^%vEJ{k3LlNI_Q~(Nt6HCx&~E(jJ$xTo zMaVfHX}I5tY*!3BxOQxk#aepBvKeHa*9#@uaIn2TDW&Zb0#^|%%MI$wQ1au%-Ph%x zeL=kY4rxygEjORhyiK*dP2k8`q2Qi+VrF(`YC>*8a#m7$PDWl@2z2yBZ1~iWC<%Z3 z3i09<_tIuBTTi9vAa&&8HM5mflw)<()3b8qvn2UgScnZSD916!IryECut-W+(76LG zhk|2}V_JZ~z&zI%E<%9_6CBy=7+;sBqPE576&%kDM(zixtWFBcJQITV_}XF$=A*|S zQL6ZrM5Oh$1yR~Qry~V)*TK?G+PoKNvt(AF!E&x(#zn2mG}e#n_5xmg-`2kqh|fLCmDlL9RuYOoFnn@CbwYR2ufH ziSTT`G3!iLiUgrtC18&dW#G<*$3!T~#8xcdfX}YnQN*IEvL8A;ZtZrbp|`6Oq%a zpM-q(K?R4R?vkEG`l=)HClet;Gl)%76!J)2Bz`5ft_|99FORp<*YxmwZ1Tj57U+lS z`((T=8dmXHYevcp34!ccw_aza7e3M|g5$N5WgNL?)U44oH%@x!Byqa`F|38*)@r7wqg73IMNdiHlF@u}+EE?C?(Xhu|Eo2itI)?o;?i z?gZzNpH$7e`}(2Ii+5pEnb`@DM+#i0V=LLsPo?zQCg$fLoZZ>tY77l7!eWynx{oIH z$-3n!Xab%unQ1vjf;D9&9=q^Tdo(7|a(8B}VHNkKOJ4z{>E}tBc5(O4nRC`HZ2Kpt zZQkI%&@an#z)$Z#F`%rH zn+upsiMSK7tplBzCW+A0NfXT!+cO6a)w&OxoyVm)4kh0XlY%6Sa%sw-!S+9rZ9lSBPowS6r#O$%ez%GybQ<9iI zFxc%^x+BQ$jo4>bKucnNlUZC>N{~e1=4>!;>uloz4VGKfuc+qZ?5>^N@4Gd5-^d1G z6k7@rb($mhR(e+45mUJW=uW0_eZ%aR*y{pw_R!+$0ttW^ z#c?@6#yX}w?W(y)m+XH!emF!2N6r&!CsE-ix~!r#__1*>^anS$yvBwAx8T!i(mawt zSV>)DO*psUBq;TaLj*Y|Z+nGG>rz9&W)+Md2Gp))~JNKsaX{` zWqqS5X+Eiv^%pKmF^_(EXg0Wv!gZ{s!BRFJ>*V+RUP|pPn@F5oT>~(ynrc)dwnWrs z{f=_1GS5-zu%h&c+6V* z)1!g{RA8kDA;R1`M=;_b(s8qXGB`dv9*?zn=t`q*kPu<1teY~GON*0GN%htgFfu%( z-rOi_3zfrSW6k8G6V#=fC0d_X$$31cvb?IQx}duT+_q=04J;0Y{5hRk|H4#nQNaMz zeBce8jqQ>|F^|%W9`jV~o*rK2He!J5Z6gKmR-eFi(>;lHq((aI85;}v^|TsOut2b! z7B{AJU`^k=Eo;S_Q20I*2Dbt>+s|!Bh`qU29@N9pFQ5=X#q3M^JZ!Z`AXnG(vyr3r zu0lo47r#9tU|%`W;MPrr{6_3;(`w_{L$DWp=K4UGP<3PdA-*Exd#IXWW4`Ie?J~8e z7J#~qnMa$jnAbEf9=8Mi>K)g5X({jL)&yi%q~mnKJ)M(t3G;d-oW5m&CDygBtX!G} zrFVDBy+GX5v2MtVxgjk#%obv^NoLXUvP>UtZ9t#r(1a{^YD9Uax^a%zbaK*m5`W6l zhDxb^BImhh%jm;_?Xr})(9&Z6?E;W<;xe0SeOMTShWkJW-+u13Ur{lgQ`*Tc5$LXr z-NkKf`M~*ZxPo}T+W6@zxmM%8=qIuCaz`7o#&QGm)$^d=4OZs6reJNG!}cq+-sZg1 zE^EwFgz1f9ud8CSJNy7w{ot{L(=zz@v>P%NB&ZeUghV@F#z=u zWSz8CU>_Lq38>eG3doB1ZY_B1a$4t-N=Zx&4!9cG{1*QPRqm+J2+ZBmijv_XKoNL+ z^Boa$L+5sk(tnthE(-LI$)c9|KGXDgKLIf{@$}$^66|pQ{Nrw<6!LBTK~nZY>B;VP z9H8o>34Y!5Asp>^XKz>LlS)gnsVl)4eR|*awW2#aV|$$kF_Gtk7W1f-68L%hK$?B0 zyP0*?$p@$d?kX$Wyn~C@1ve}M^H2*j;{fMb%NJEnB5t6UsD(wh%=!Wj~MFEnC$$!gexM;r=Y zLbRQP*sKY_l^T&_ejl^y-`b@d>r!h+1;oT(xoSW&HP2QtFryhln;CBXDWEv3+w3Kv zQ^H&8e+MVAqD(Fz-;X{VL4j&lVk`F2uCIt3lY8xW*e!)9%xNgYK~S3XLbdYC?_T8-wXBFvXGI>(yEqEgP%BMiC9+ zm*a)da&@%geI!V!99p5FVhlh^4jJfuTDB;Wi#i3pma+VgeayWFd~a>S&ZPcG%5A;dUlNKFc`~9D9{- z*GU;)nx&5>N?f7-vo+z!P&@OdnUoXBR!Ajsl+f#l!G}-c40S_=Nj< zL0O|^FLn*(Rn6Pnsn0HH-}xA3z>5J zOKuug?iGFC26gAy>*qUK-1Pt`4w2%c7@)Tr=V&qdWh8_{TCPz{mI5oy9BqL_VZ~m$ z9mDsOz%acbkFULim}P(P$ZM-V7qNV5rzDU=%H-6kq0H`;1iPU6&v}lP3vWaR!(Fam z)=XwIo8ve?7i~1ul6{~olGw@4V5fQSm<>w2B9$B~+e?I;LS40=4h5mo_jptUa#)4H7-cCa-K3r>xI~GBI3vJ$&_QiZru&&8L;}3v+$6L^K_5x@Q;335;qs zQ6bagV&12D5mq_hScL(o!iQVtuANM4M0JO|y!eRrSf~6*yL`Dhba$+@zJ9(=gZXRT z?_b&5TG(IrLqPja#i-aa0B3!K<%)!;y|@FmLiq13(E0@uSW7L$U;$w#Vb>Z~R`4G| zdwuZw)%vGm1_xfYbPL8dgF@8`Or(zq&UslHA$pEHu#ow)=~ttOrlm@IWb>6*g?KBo34P0? zwfNDUEZJbC`=v$NNLG(b7M`v@+_OyXf3r#^mi`dA(iCvmM!fQdlkgp4IL&ahj$ks7 zQgl2ytXPA)U}&pt(2%qZTQ+BP^cyFZ(pXGQ?@m|im>vAHTP_sIs$W@2nf0fQ4Q5EV z=2rTW9($h|wb3uOz@FZQHrtZdbd7VJ9~N0j1~<}8OW$LEvKBt)3|~}5^hVwMQYH9G zk@`Yv`^Mz@TG9VnF?cVt_^8o+UKo^n|4FzpZN$tCfw4=6t(AqnrGwktMR#jl`$40# z%W%JqKKrv{jH@a8lQ7W-HYw=O4P?+1Fv%sD&l9juAK>~9raJ*w7Y2LF0OyDT+f|0` zq0Ck~$XM9N_$lus)@P%}ZE{-u8H%PCDCh*N$5Cp)YSzzaV8B{<%xDCPxfqVFa*v*r zfJ;Y#MgN3uABuiNf#nT>##oDKe}eAm%l;0;@(4v|;mSU#$8jI!J~&~sNNciM68oAI zf<`0D)QM#e3P0c_!YmwC=0aHaPo7mV|A&Y?E{*69;n`xmk4`inz@cuC(Sam^f7)Y< z9o238B>)=D8qwNtETX}1ynCQXTk1%;$0&MJf&AoQ`ovwVxC4q67fJA<5eLd1V{!+( z3OBnB!x}2z?@06KeDxG4Cme8u;K5LFda?332g{|jF7B*EE;Unw{Tr9`a`p*z0K3hg|CoAYcf282t8 zX=%ui1=zYL6g&F8(CdeF8V-&Egpwz>mPqzE@x0OVkeJ5cy_{GOd zUqb(#D32AXrScfZdIY95b57Erfal&@oiFWt08b|kACdB1rD8SxI;VB zWGuYT1#H6FBgJTprKpB^@GL>pM|!@49q&lE>NYoum0uz#1~DSS7=!s$89msD`S<-` zUrSIPp$wGZE{O9{WJ*_2<5iU;fLf1IX|0uC7Swf*C{8#V%vBi{1`9A=oKGbf)9f@Z zXJoftg5&ThDCWz+%;SE#Qa~2dfA@Ip&tX?0b!Q;m#m;2KxNfk`IJHFyS?;<99)v>I zUSlo)*-%{IWcp^kJ@u7%h53&X_`d_{e}Wj=9*^MsDuMrBthb$&v756a zt)Z>8ovn?rjg#Yl*xuGk+O`>d@Lr<(yjEX{VxX$tQq+<*SQU+B)aWJhI5V}umb=#u zuD~BVt~Y-|n3AZ}J1$2iFMB@~k%IcTXXMZ(`y^_K`xWXUzZKjYsTaU4*FrPZX+X57 z7oM2qLNN+^>0&V~#F^8OR2~Ek$>p6N{vl)3iRep1#}d5nWnA&Jbp;UClyaUFU*sQA zw-77a0aY!|*cI|q&9rGwQ0)36G=cpE#egbyq=D3^m`+D60$GDxEItf(xxx-};{HRw zwQ56b&oxn8LT9iMK^L^cG%Wvx;2TUy0UjX!W99I*^s;;jEudir-7O8uWn4-HKrGi( z&W4Eo^jt~v0I{XWD}X~)U~w$|k1KlO-x?h_(7$;NXU2>sYfMHsre7;_m_d`5!XuKd z2=K}ZUwC8;APilMYVm~u^i%>WbWZsG@TOfQXVbfp;;Sl>AYpnKAjV8juSC`~P(2}6 zEj|JI_EDoWfq0qS4F>6XaxRjOn~e}|E*jU4Ba@uXqS~##E0+d|=P?(-IgI3t61vwk zD-}gPgs|mZadWU7I)@UxW5ONik1X0x<;ea>Tz8R1p}AVXyx5x3poSm;ZO4OYGjJUl zkPB#9L#jhD+Hls)@^pVh*EO{PN32QZ22~_Evo$g?6p=+pffaaXvGTZKKEYhILZDclvOL<5T$-^|C_ zqnzp%^L{lFs+Y6SO9@npX{cYcQlXa(Qqy-&VF|D2j4u*rkVqcuxbA;a;lBg^f2IO| zcW^H5FX3JU_y5-om4dOIt%H-YleyLZ0cmBaL%Ct8I)BIDa8}HbH80O3S-T_m5UJ0v z+wTur>gT6eql=@&U#;Q~q1O!0bIf1YcQ_n2C$hl6!~hcK{X>NGW0Hq7ufrsmK)W{s z@|!K>N)T9RM3O+92h5vA7-@dJ$%<=?R|(&g-I>nheCavK^vr%)m(_jWFZk0usww4k z(1`1MF)~2n|LPwmN|%pgx@gykW_mYdkU5aDcrXEq!z>>;0?lQU4=juJ%83Yd`vRKH zBp<#&((PZ9?gpvLc<0PjrQ$0H^V2uT=(gV5;PY9q{~y~}Cwsf~DK@yU%? zahn+i$z{8rbL;)|>KEoa3n9|Q9l;+OM!mqXI; zHa1AYWxH$4>tnHR(P^}c%=40troyRB2($HalicP&MMa^sR!L3!KXMW~EF?u&J?;CCwDrdDKy)w%|#Ho$pytAwKtz|`l!^M;cdVwx#&om-P zTFVK0QXCVmd&DWi4axHtnHgKdPF29Qw_w74IC z9f{plv?XJa7W@iLk5(aNFZd~CmtJg4c22~-5a^K=xt(-konl;&6)pT?5xINomBr)8 z%GjfHG#=WCHr35$xl)BrYHW%?KCMoUot%|@vNB~7QB8%Gl2pw6ua>7cMSDb1>nMA-MfHdUO8Ek)A8 zM4H$Kxjzk$ZBD|J0qgm1quC>~;92j-t%^}=xE!lhNst1OQ=&;zT|4gcYy=Qi;I|mkl6F`h*?_aSxJZgv(KS->I?9_i!e0ZYixu zNJ+josZv^t;v{`C@H$JJ!@A)all)d)WCQO|v_fojnL>vJi!!ntNL@KrAOj(=Gh<)N zdRLg68$w~rY5WEZxxo)<%=Mri#rb9A*)>Oz_;Q)H8e6E~;&%4spCHk-Yb>aqh#khk z#zHkJNr^*9sFz*D%D!Z(*r3XZO>J~ArBXT$yD;EK?_ks(&{jroF$`3qzv(6ZD7tEs? zsAhXQUhDD9788~yib}wi$A6~g_vsJ%;=wzd?9G;S|A@6AB%eaVY&2wVhS`1Y0$4HmIEMUKv*0t7Ctf+SfR+SN7eBzc)&h>u*Updr}@SI==q^l{gCuA*4WZ@@5xapD9 zs81IBJ?wO-c5kt7KZgrFfq4hwjpLD$5AKUa{Fl%yayLAb z_taHhxQ_r%xtc6W1D+npo!=1{s_AvF4mD&12OY=L^;=M>j?dPTRN`%OYO2uyV7(R` zTg_iaBM(Z`yv0MKJS>?*0BXpr;Kgn!Yx7mK^(@AI!`1Pa7JkX(%s=M=#j2V%zRY;I!zHW$aoD+ycx+1h z4Ypd!-Ujs(wN{AcUrO#HnuQ+PD7ZOL0BAI3YZ8+k#04~TTS52^o^2%612>Ufb^+o# zk-zlp3;s&Z8{94C7dc$E;8`9cxRX+h-W)hej9!?f3&#ZG$G(Q}{IzKv6C5jaOxK}7 zN|fFkrXi4VoWBNYF?Nk!y|8>SBtTw|H-`v?KMyj|w;um2Z#c5+04vvXRjw~ECGH3X zs`7Q-_=tQ3^SL7=vV;7v;`zjwV<}tV{;%Rw4H4h&3VfM-(F0lLq}ETf8d@nT*MrcP zaFs1QJ+ut4+y%**RK9RbaiEoOpEpE0WLVXTM5C^4T-zB`6DI?*br{Gh3&t)BY?TF5 zuLGrq5bBe&E_sFth$4WQO=c7RdH#X* zAPah#x3}Xqq&3R-X5i|TZr~lK6E|lN><&+~#13_Ox4;b$cO)UxJ(+Q5FX)baGY0nn zpfen-2rVb6$W2UTU*6)uy{y;V;-Qvl|F4CkNIsjS_4L@)YyD=($RU7(qBxWPAE*_` zPo5_-z6szbeX51BgOWpI4PIVjZBgo<(8Y>XG3}pJeZ|SZZtNSARV6*ZIQ!|yAr7x*D(#Re`TkNe{YKN^La`qit>4cC}JvZjQvH@>bd8o zrk)jflS=V@?45fY1zd&OUOU(_=8f|o3H)tnvPIWGsGPzg$XIUw&ZpF>o8IIw`pp!a z0;-_Bl0h6eH!@+ou1=Y-(duDYacxz`PGDzIZa17gL%*Dqic4b4O;h zmXOj77``wLj##>)qEt-H1B?CO6)>-N*$qWOf??5Vzj`cw(tk|61`W0wKa!oeUehODA1fxovpgu(LT zzTGV2E0!|b3l7KBoZiA)*hgH$x-S;Vf=P74CR$wgCfS_?0t>fM-lVI!qxO`=uE9PK zB*%nI-b1PFBBa32;wmp{2~}x6%v2=H4ad5}e3#YTiEmBu4jntu@?152;P{Lkcp^(~ zW&m-up)B^0X2DEr)lkOM)7;!Hj5E?DcL^9ETWtOn@ybl4nuN}!NXq@i zMTjcb<;%dY?P&)Hh~C(tTD5pdV{|xZeyex}Ez%13ICunjEG8woeVl6 z;@qXOOi{0t-`>fs36r}s^oU#atr)_n^5ur?4d2YSVvb3EJ;}yI<1n97>y>OMUOJ-p zWjlcX={^6u!~CDUXKS4D!ujtQMjq(TpWpWL|LY)I*ZBV!F8?1&J(9_+p4;&Mrqut` z_TF!KMSLhq^HMc>^z`1(IW@#YRPIc-v@e;~)`(czHZ5;sRBb7zca$@=B$-=LuC#91 zx>d~Fs`TuosdW9a>`Bv|;aE?xN*A_uE4q4QJawaY|GSzJIV85UsQ8BSqowly#bg?kw#IH1cG4kpzYe9Gc*WBav*Bc*(M6{n-|S*PE^yO#?x zriY?zDIJNRh7C#mJW)%LffQ47DpXW!vQ*(q7B?YnX&;9K6J1cLUfP>LwO%FmNEDVL z$QN8*w~_{qY4)3m0tuhC?gY8Ou`S>FqDzU2P#wq99{?PA{Yv7^Il{4XvM@bKsQYbf z&0bH*dK7MBz+zxqBBWQObygl66*)_C;{|~N;uVjNg0ioyBE^MeXC|3te})m8j+Ty& z@){nz2zgI7H_dvyc62BgIz2C7VtNv)?8kfRW*9W7Y+J;)50(&pN6x0cRBqo(E4OKnP4eGYw76Kfd2QO z{J)dqf2IvJPh&0lZ`#oP--B{Tm;V}+XT|r~{LU?dZ<0S@2~Xn1SgJj&l7OVGf`*6U z@uM8D2L7oAYqxixeRzLBbDO$EVU`!CWW&?_@b2(3s@5W)iwm-=fw+jmv!vb;$_HJ^ zAyO$*IyMT3x56eI!Q4`s%f$~DQ2ttJ4k@R_t3+5^z6mtI(qN)`tgF-wzKv>99FsZ zOkKcfRjw5_^+~igRj#q{$UXTlv!G)DTiJgwgvPDLvyhxEJUzrc-Xf<=F`CJWB`hgW zXxFFK2Bd+eK5{cKSv5S6TUEzvgxOd2Df z&4F}2_TwXD-8q1Fovp~&m{$UHWp)RJUUpKbpso~O@lt|mWJ1GtMr#J*a^*ngXEa6l z+E5427HAA78>K-{sK%L(HCBCYOgQEiiOqfTihmb7i}?(sTVfoK`8aGUcr zfYwesLjF&c{_mjrpWzlu?6H{&@#jzeFJcMt|EbcBPVQF5j%LQjPBey&jz<`l5rl1b zAHAPo*n)U1tJyf7T!t@R?NTo6(ML3!gunu9hsjnKD%UJq^`@O8-!G?I9?l)yT7dXE z$y>=1MINeUg&VHBoNj@o6nq0RNC74h^guT@H8nOn+PYtMgUp3Uw{HWmDN+F1x?yk1 zK{C597nHrelxkk!=VvLv+yMs6>bcm}uHpgJd(Gw4+BGH+cjqn$`CD#}WDv!u(L}!TwB8 z!49nmkZFY2?&q(r{CY^Vx+b7+m%UwSTX^V~l$4#dWn~u?-&{R<|7<@jJ}%1e78c)3 zKKiAbOJML&Te(cicxDpLBS99I!s7r8d%W;NgSYCSfvRp=tHGcFn(hsesixN2a|9<^ zjb|!*29>g39t0(THN@DB^kA?W1>Q;PhxIx(@h%xPEd8(2-U6zsZF?N1LAo31kZus9 zyBq25?(S|7Dd|q>PATc`?v$2P>VLT2K<|6L@%z3tIAd@2IWyK=bH!e3M%g^YYAPzK zfH}rjVr?ah60teGN}|!LayMR;@nmJXZwUke61AIPWyPSkP=mw3R%-bs;HtFsQ{mT$ zgz{Ek9Q3W#?09783ExKb<%#Z+WvYklHy8ju)?RVppJ!053D8vMN zb#0J+`~sB8cW>i%7JUrAc9Seo_x-8%L z5f^vtO9YGNF$@Jt!m?+0KLv|az3T+!7fu%|Q}ch*WyQJNQL!U@&*bI#MY%{L;N23_I{$9VK{4;$?V~snqZ3XSU#?FkS@;w55L~D$E##$BZ|GTmqR2aJ(aL| z3J>P$wsg1{Z8{wHA$#woyVwHD#1R{<*pNjWHJnZ$D3A+aBEX9M-6UzK1ag zJTG0C4G*!Js(9Vpg9?o!N-h0%txhz(kaDa(*3_0KgNIvaQSD2E!rfunBt0RDnw8}% zOHv)&*GE0VG2@*@Bp^e0@(WxPrb+}nn;ILytXiE^e;^M5`~J&I!qVI zM%F}jXYvgz2SKUzJhP-qx5B_X_`(N=a}w(U7J<=A60)ZZ>ZoE4qsh@IN5h9@*|`Cx zgxQpUiF^*sWTSlsX>`NUb9`Td-`*!UD!;H_D?J<$Jmi(3pe$uOW(d4c@i#9*5@{1T zZX0oiNk2Eb2iP5uv~7^Ibr4dEfcM)ADUzyb6lB>jWW)1Fp^KEFwZs~HgcFC2_&d2< zpRtY;R%{sg({ochK0EC366S>AV7MI4E3rj7@qUD#EsFE!QhuKX$?f*CWI^26Hae&^qQ)dx}d)a=s5mD zpu4U*(9*@HfFu-*-$1MS$3Ukxj^3a0m@|@%yrnF1LUDz(tlkRQ9CcHDpzFQ zh5%%L6j{nTFt1KrN$E&Z1UxU~&a;pbEN-?%j7&qx%mD>$$T?<*7Yk(6`e@tDI5t-gXkO`2xlaRn`zOFz105@v7{V=a) zjm@W_En%v7q`#m$WS-L8sZ!Fun+sITTvu#R=Hf*KvBNa>x54fs&@>Ai`N%D#a4LE_ zC=-l_kVP)byZ_C@pGzj^?jyDgiRhuY`%yNTFbcz(<-4iCpbAOHR5C+ng%358b9f%) zJF67AqY7WT4-Fa{fbrur`B1t{+A9p)x{vCuHtIn0^_QYjO);)1Fqz%wN)4IZ8;ger z@vBUDt_6Dbb%NOhyA@{ zqngyhbPryDnbzvR@^i(=-51V$Th9rBh3g~v$l&>1!jL9>k;U|SsFb1PYw2dhNnG#@ zIYc==f7|Oik#W*-!>^;;#f`edT%p|;~S5IMG5ee2cQRAj3`=dWs%5z&WHgrf8|C9kvKZ2+>>{I(=DeWWz>+*rg=iyc_EZWNHI3Q8V_RDuVZa6DQ8$7R4GF5r zHZ@hp4#C;P%p&wP-AD$bKDs5l9&Wf*)A)pc{W5Yetqw_Fbq1LdEbCii+ZSEY_WOLT zerI2AluRYYkak=`(F&QHi_R`fkdf@$Khh^XU%vgbuzN~wE@j(nVG3B-MS21(A)Z@7 z{77yN$fiWAYon`gVo3YP16mskM`Kefd%8dVqcL-_qxtcK?#G431dw9sM=o?r`^5&N zhx8A3kczGS)w|bE^lq*JAc?3L1~`7SmYxiAtZc(4rI9h=KIO=XBZ**s6&j%gDGrHn~iDuiWZh+>CFE zbn#r?Ze>s#$C@R?oW&YAjC}Qam!Ob-U5i*mG@AV>)@ya99)ImajIJ~jt6TVG|H1W1 zAHYo?H%U){P?s{HWsKnSo<bzsN6dCOUrxsL?} z@W0vv5mx<_a`NGZAkNi+?s%RBZ+u^|>Q%dGO4+9w<2}N+0kJ9u`stwGp|TAEW0Fr( zWp6f{{0xZ$QSnti=1ApA?#ABNZ^afV+`#O77!{I~ihLo37GigF9r<$Pke8TdP>oZ& zN$x%kNu{>;?6Z<54+f#;XsutQwD+(AZ|-sdRjJvzM-NG`=k4a#I4P44Zdvsnh1iwg z;S$3mMv9e4yxOOzYRuxZpawz%j0xs2(=40}ewN6sg+}LYghyL^QAW4Lt8qJ%vC{K< zplOrqnQo=SlBUV#Rtst7ORpxk3w5e8pwB9)ZNe7KYK&ALN!DsEDCTmJXu@ zFXR-ASFg8oD{Eg!GA5@^iq&$|#uh8{kx~G|^%hf>B+fv$Vq?LS3MnhRoHlNyrj|w8 zK=rM#!PQZrwo-IhBr&y2$yE&})tIy$SW+(1!imQY8-x`V2Pcm+%QlWs(G5*Xs=v;} z?UTW@-dlSfzlN>C`zg~*Y> zCy8z?AMi}(?5%v@LenJUGM&Y>tnj{QiC7gHX}fhN%s{DKY!Xeq7w2A3Dov(KA*6v! z*y|2vF-=Z*0%~#J@khQd^$OfV=gUOI#lKtHzOyyTthQ3x)DSF>p!w>kcw~Tr&J5P#az-)C4M%}#e@JpDqtw_ZF<{!S z&F{3(sCQ7T;EwxV;{YP05 zhFbRg#CEYS_`^7`?NMxGhq(dsr`~usP>} z1;|LWqqRDG)Ds}som=SPrG$!@^eMx35nZ-UYW<{$=hWPwG%cd#5em{YQ@u=z`Iycy zM~*xVKVXT#x9#N&9WLi=tT=jQtB|@Fj%Y2-&Z?|jBWKJ~I#DI65TTF--NA`ovY_`F z5gencW_G>uzCeNb5_v0$A^#d#DlQ81>|=K2%tC&-*hr~TEX+}S?0EQ%&6-pK0~1nj zC9-J|%@ky&2oEFViSt{1=*vb8xT-uXHK9uRWq&{zGOkE>#rm4X>Q4-F*|-sZ7jkEqJb`&=$A~alVLw7V072+}lwd6xpHs=S=jXTn;}9Te<` zgbg-mL8B$o$=lt@%YAy{B^%-?E5Fw?MKlqR2BxvkX8;F3*P zfJ~aAPq~-7hTv#&c3J4tx)i1`))`H3F)s!k=+V`PSR4i`kK2q<7fKkwewO(>S}2X% z{#9O7RM#C7=&{IIeRAR2X)4IylEaR@@Lj=T$P|`DcnbTJLfM*?I`T(IX>=8y5BvCU z#3%B7a(bh+^xBzHcEQ9Strjk1Q1V~N$VgIWdWQ+5y%D=);J&a8lga;%X?@xaSL>u< zIe2g!jWH03)=8?Rm3ipNR(lG~c-Is}!MYfQZnAiI zZ#=_HCx=8R#!&qYe=>A0oDg&s(33Wpt{N9 ze5QW^j3{JLv7>_5rfJXmBDK{1q4zSMYqTC&yBVx>s3+4Em=*jxaGkU-upn{K^zEyZ z>Y8J6-@z`HjOr-RwL`eU0yaUFWBlX@S{G#_A0TL>oDUCcS?$gc+f17HB~jd~9+gMR z6jk!oeLZ~F9Xti ze_EQ>DV~_FTa=(%&t||fe*Iye`Y46IgO8J#?#$J{A$%ttKr{-e8 zJExs4K~I>5F9cLagj?Bx5!Era=!_#)aP~oe-tzaT_OZiY853?=>{6jIjwJ8>@l73M zqS>F%sSQ&9g8S#kfQMXFdG&~eHs7)o_npEqEDOjEB$dFAzjU)&EX z6s^y?fyJ`KeDpO~=F;;ufFn7WoiVuPuYzD?hza$Tgf-A3Kmq-L+1JhM4gQ^KOq(clW7 zw<5HqN?FwPdtTC~gfStvH~L9NzMS`}Ly&w#5XJPefxeV2(|rhvx|z_RN|=S6yl8(s zC3*S+_SdJ+A3+MDEr=*qWLh72$3O5q?b|(H#Qn3pdrJLV&16962uS_TF zxjs#59U3*&vK--&=bB^wt?Wd7KYVO1r;O{prG6Jp5Fc8LcAtSuWR{H;(Lp~b+I9N9 zuey0ilnzCj5Qid-Yau74?3Te>bCfVyEGa8xFMAZ5Gu7UbeBHj_9HH?1?au`t{BDv` z^YQgz&F^cMPQ>Y;0V|1`1ENgjlzZQ@rgtl)vvCCs!X8#9xo&QI#|RyKLB5aY-dO05 zMBHCwg`v-I_y#sqQL7y`awC|l?|_^#GB4@jm6OXEExJ6e1oV3~GVC0>J0LHLO^a5j%0^tHNn<0YrcY^U%Nd{A9)V6VX>jc4 zl7j=);jK2K5}MWOYL}`j^w--0HTh}!i8`%fiuy40k>K;ZiAD^+M878rQ^=UKAmZuE zHV){~P3`#xh z=w@7G`xA}k%Gx$>gndy1Ba`&1aX>ysM0evUN(b77-RHnKA?6WrZELlDlrNz3bnK>H zh?Lv1l<}|pmItBH269v|X6~FPLE-Gy^+p5XdOO>~(OhU}YCf9J`-r%l@{ki!YffF~ z^Tg^(&lMwH$RAf9GiYZO$TZjo-V#`79m_aVD9WUxGs2NNzgWD}+Tl&wwN}jtU6oJs z#F$mVVCV4b0IgWm<~tg}z|3H0tmtdTaet-3C+Rre&})B$+}>UcloH}*m)?O zBz?;iF~T+ltHFE3co}n)Bf+~%H^%pVm)XXWa_l2WMujH_XahHzN;wF^Ja-20QWCU< zqHp<}lQEEWf;p=<=##2ESBQU91raa=d=UwXsD%UqY6hIH@&Z)lZ#(z@^BbPE<y2ldjblgk;idsbf}#WSVh4R(7KEK1FJ;lwYq;S?(`HNS(~NTFO&)jH zhkL*;U%V&b4I^eDEX2{re}KJF8LlMQOC_gnhYrZvUGDe>1C}93Fd|yr0iJBPcJ^Aq zFA5nvpl?8c9W_Amg~Ei832z9}$|vlrm5eNgNF8V1yk+o#T}3G$e{tsB4fsetM0k+m z=?y43h=3x7?0H0zZhm)AvrTutu26oDk@oc$k$khVoDA%vuCs z0KJ&+fx~MK-g`~Yj8p1Rdbwd;?HqQ3vt`qMOLw;az(S905&QemeW1W*?O+NMm@+l5aefA)=vR z-`KK1^f;PC*df$C-hjXmzY*am{;o2l>wneg166&RIUh4`i-BN>l|MvpQ{M;V+i62o zdJJ?4L32^Yxd#V7mbh}-HC;gXeWJB-|0=k(8n~&6@1*>DL96abF@pAP;o>Jt)`$H| z83aUM0$=Q^kU&;^i(C#r5{fml$#Pp=X`!C(0{t)k>eP}pqOyI!=aOASWP0Lx+`=z* zz<~l@DM7rcnlHTBV#SHlKM|n5VcVbr!wBhruZ(^FDji8V;_-4i@4CRfkS<}}qdJCp zcgC2-+w>+10U^4jJP`wQj{P&dp}eU|JFVENs6fkF8-oR;p$T3uKSaVFCO1Z#I$mV@ zRU9OVIMOmhxMjIuHHCSv&8g%Eu2VGV^zPP7&?+VtWk8q@6Zd(ufr!9t{X?qEr0q`U zfpZ{4 z#{*|uVrVT$IuUd5t$}o(82Erc;XCUR-ma>00g*NY==r3eQ2NBG8nE!MQ9Z`|HsiYm zg5UjmWKVL7qVY(PC$3m+<1Snd&}#erZbJK&OCYwWs9><;)+io((g@zdWWpAE5cZB2 zFL`7sELlRu-)p7$)YXqv(U1j$4X_4@Z%B%wnnPYyx;0+Eu%I22Si7LyTS6;eTXTw2 z(}Hxt50={#$Oem&t0yEL2sw~hcWMhwKw+0d{^q3t z?lxanJIcBMRUCbBi%*0t@~Z+=!V{eIb)VZPCt)}C{8Pfo7MWD21uV}UWji!t)>O`w z6=-q5#<)`JLd4uv)ko7dkZc*~es2;toX{sv%-*GVMSQ$iELBBe8-7w6AtB{TH@Wnx}!O5 zm#x|jL^(J{`Sf)kJ{>LeznHOK^|~HG6D+XX3vjk&Fm}4AsGFZo9(g?5T^q6Ot4|Hm zwIzrgrcg{f+TYkCPcp?m9X6tMcY`Wgk?373|=0|b8HgzINHWKoqjw#o-1B-_D*%)^eT(0?K#g{wE0^dPMR(V zKZI9{ux>oJFRK-zYKU)aP{z(3K4@L(B*rx+md8XnOTOF2gWoa|-a?O#Ue39v;tQ3< zJUQ3UOdm*;vUH4{H$Pr6{-U*?G)h(eA zj^C5u3SQWgmm=kiv+63oxWaKVu7EHLtYZ@9<-p;-t{8o5`|07=?_cuW?bSKO@=9CZ zyngJy^UO-d|C3LnsP9W=go}` zA#i;wNG->ybu84^T(<(a`}S|k?Jdp@YXjqFtt%>;B~T#^(K$H0WK-IwU$IO2^D!}< zCh2Qin@SNpj!ud7#QB#MM0#>?{2^O|Oazhg=#t;e&h}?_44SZRkw$Td#%ps*lw7s# z^PMy4FCN^LZ0Mv39j=(haPTCD15*D zX5*PGw=0B~pK}EXxXHXgAa65Yh_5kuuL${QRJ2!{0ID+D+GaC0%f}Q450akf=!c*K znk?8ulgloJFtw^2a5EX@T-_tFQ115Tcm_Rpig-Czz?dO8%|RFWv_a{ zi=c)xK5p$6<0w~r)AM4;ph{}z(CWZ`i|}m{1NU1w=P5kv(Ik?KG{Z;XHMHVm#4d1L z-vopRb-}X%t>q0Fii~tC9!ed!eQY+@9(*2r{En8+;UlQ_JNWvfEP1BEF%ec;IX()5 zBxY9u>@7yO?{|lHdimoPP_xPH)f;N&_|b-qZ-SW$E8G3nIWGd=+%@~Me2>;TEUC^I zKl|=N#2QA!vXplPap%t*U@bfBU8}B=Ib~(zkW%C?6*a=h!~r8xfMMkD5{rxJb_qCe zdnc&_8pCYb)L?pPO+!%F*yw_qkz+ciSv*>~K`FQQP&fQ5a($Q^pExr}geMCg^cs2s zsnv|Wa9yMIF0zZR&(hqui~p%x*Vp|m)M-3*Qc%BY>mfAq?zPxp9ARLpj(UQDBeiZn zvmrK*<*n2!M7AR<9IL`gIwWZAJ;Xlx&4{jiuvvp!-awG%ia94+TX{t&?2K51Z?P4T zMCFR@);y45Qkj^#;Vya^JqW%M9;Nm5+l^%3$wJdw5v z+0jcSRb%u$iE49Vfio4zRi;&DYJtks8Pqj-k_j5(FU^}*DP4*o(fEd|afTG>U0?CM z^{?z58<$h!dY#3B%tOA^GSN>qI5GmetpYM(cC@_xGST9_b0-emsfsA3i^VI{m~su`v#pj!tTMp+mN3e2>8MJjT*%$+aBd9a?0uPvy`_V4DlPi%Tj2M?=*M0sM~-Gu zbX5~}+J`uvhB{5MH$=cfC0r`(?cwatt4I91nB##JjO zB!`Y0qKXxJc&&?qS~^762k#y;Kh94O<2zRKb3nng#-4&~-;V>X2l~>~~<-FXHK3+ntQw=Nne&e(E#}R%42dFj9lq z|57aikq30N>8Dmj^fg9!5&OIyBEWU1v~W%L1+gsAX~4l%AX4-9!@N^x6q{LVn6Ub< zQwqv=ysMV7^d&HeZo+!@&1VL;pMjP)-y#l|#!AngvTf{+^T)XdQd~pH2`h;9Y8_U1 zeF2%|LTm;nQc#W!4K=wC!>@EO%h=1&^zWa-NK%&X1dB7hHDo1NnSkvKF zym*&20MGg+(-P`)2AJbw=cJ#g+WeM$Ju5rJl0^gcn>JK0tQc;xIrFO+xK^4ly%3~Y z_wdZ&1iwKP1M2q?oh`V+oci@*XPc@deoJDE{_7%Q3rdf5l3LeaV-DFla!EqBcs|?* z5HBA25e(+Y--VP3w1}!`hGfvu@gzm{aDq+Yq6h4~wfLG-+QQR5Zxg^Pxt6*H-y7AJv!IwMH{VQfO@ z#R~6nCvmvS!ZItL~`%$6OSU7G>p>&O`LrU*<6M&i{LLGpmPAy2=8CwWg!%JR$YATZmf-oYzX)e|Ss}W7&!XQc zWO%Hw63euDxW2xHr@ylazlY;YEf4q*bm&*!Np}m%?iqK^Zr6Pj9+>~xqeQQbudF%5~e^C$Z*39M5h z{HvW0bDAlo$694s&EoExHK+d0DOvIAcfmOc`JMvxv#*tRs6!_Y>L{e8BEa8uk?uw| zqUytNx>Xv6B_B*dWK1R}(Kr|rnXO(~B@w5?jrYRh7>PUL6iO?jR z`#4dikqf=Gp~#Dn=l4BW@KHXpw|ZF z$dk>zi)Tj?jH=GK$vz-^>j7!bTI-6d;o$gd-%;m$z2pq%l$P^Jb!yRMgz(l7oE1@O zBBr>!i{|Tc{YQ7Yw$l1y9DZ{Z)0zz>phg1Z)+-I0P`0a#sP^a(8{l;)kH?p@h2Yj> zTrLu3a~?b($c!N0x4p#184V9Kt1IT>->2=5WgL=IR7P&l!Z4C)rSO)ZQMSMx(N<~O zS9=O95#JI*lYPqj$GSv2b5)K5+jKb>+xsgfANhJgkHS zVl)z%TUIslSw<(kd>vUS=eW*6=-~Rzl9?<<{AxP~L}juLYU189I-1L6Ci&NoZiA!9 z<@DJx=r}Oax~2FOdYlUmGGFV)$4qTo(YE*0K<9#*&CS!<-?OUkd|;|2Z!_s=Y}R_O z)&e{-o8#8(%YU#@JKq{H{;=w^(Fx+)#FC=k!mDpSUM?8lCccKmt56IgDVOD$TO6bzEN+QnuXUEg2!@Y9sl?NOBwAB@-x*xnN+ z29oFi5&Bl7NIA(0Mt1N*0l!EISB2siOgfZiMKLlCYTP2)fRj55Vw>umpd5tM&Jy<* zM?>H~U6ZMz802P3S?)K=ex*HFX>~4Q_E1$xm-)< zCJ61<7GJ2n}IC_YkHG7?1=p7mmL7Utdi%E~)AsMekQ<9`gSRTwG%h_V-car?j zbsTo&zoHgj(~?vvB{X<_^-k=dAqSAKlRInpRRUw)zX_P8qH}D*h$FfYL$}Re7EX`rBNya>D0%a0Og7`rc(; ziiU(13w+X{upOf|RK(!nGeOy)FMaKaHevdzqoXO`?ecG>6o{Nt$oyMuDT8<7dC?;c z>2a9q;#!%hv5q-FD6M*nyJmEBW!?~gYoT@P)?uHcw*q&FgoSmu!rFD}-aMw)3*R|v zX;$UyRW#9Wc?l#iG_qCjP8S1~z74BB74KG&n$+SnlOvm`smp^s-dL$fJAUX_r=Gt` zVrq(Q!^PgDipO$H8Pd^Q*+iHm&Lm~cPXdMSzjO@I^;9m1DQ0H7p+8F&F!Rj!hq0Tf z#L9&0i73pbCS|FgOTtRTrZ>uMDMK(oK{~%`b&JwAt)CR8R$KJd0z5Z z!P6BeEsRr$m54POVCzk6%|JWNrNIspUPRbdf;Bvi=rv8?lPr<;TZ;x?1h6+zY2Dty z_#4E)_?t~WGGkP0WZc^o!xHvkm)VMZ@->QOlBrPKD5tO6D3rPicJiW(LFC5mzWVu~ z3Ic0q2O|%5gIKLoeQAG~U<}c=pQ|o|@5;Jez4%^0y%<+jC-cc_`!W;vtzGJX5ms?$ znX$(uxG31whoG>yYHljk6=3%bulM6cwF@9J7zP%NOeA|wAM4q`aw&P=O$@V_je&V+jCq}rOVzL;|+(k9x@p$;k8$9J`L6$LKW-EzBuR)xydeZaBSsq zQJk@x!3va0@oPa`xeBX8&1CV_ypUYriw>j=m=nse#VF-B5#aPp;g!J;sO;s3yh<0q zeZd+qcb`v_FMm`_|Gq5t<4nBm(8mYLk$wd}1!oaBXVrVEhIdT-&Xf_sAdwjYbfyfOpZ0LF%f))ugH3cZRHl(xbKfJh zi7@GQ;~pOFkNr44 zDYIfrtotsXf~6gk%e{9z1UA_=Ilb8UmFaubdso~Zp-u*&(K%e$p@tAAd0p&|O@egi z$`3*oN0>tRM|SLr-A7^zCQeBtZ#qk(D>(hUDpd}Nt+*k=zTNn@9p1ZCLAkLjzrP?p z7EeHGuvydu=b7m#%f&Z&i?s*u2W67k%b`ZG#mX+KlO9$Xg3_P{BHW9yUNJ8RD}O2n zT{*hF$4D(gjfSlNTXMDn_Y_{c1yN$q&5vzgSyW2MG94s-7wduc?GI8 zZHaeqjj)`J3Dx;P#%vFOL(UQPu^#t1*;9Vx zgTW?CPYq1AZ3da-5xOm)kz9k7(uxiJzWV_Dw3GCF9+H&+ z20;Zy1%iTt0-^%!CDG(EvmFBFra8drBr4$gSIPB#y8HX^Ns3QeOjt-kkyc9h2L@;$ zASl4B2Egza#M2dEnfPZx1UllQ1>pP}!*j5wO{~9u_;dw?bo#SAfhhsN%nZz#0hz>~ zc>O`?_aH7mKv@3|ASpjU*nSIw@E2b|PmHzw1!8AtZ|!KOZ)pEp;Gb)C@B^6rCy*zT z&c8_jZhoc*53mCGTYf)||9&SDioY>EG0XXH;QwkJ`W)-8EWQ2-tMC5->%VMHpOg8u zJrRE*Gxwa#p8>vp2MzG5`?EY%9RhI5{$x4vI|#t`=`#q5KOuhD&i)n<=`XlHRN~1E z_FqOCzoU!!6S&WR0{_!O_jg!uf5KAt8!P~m-#@GKqt8Fdo%U7hx*|Zrh=60}C-1Po zO0MrI0Mj2`@8{j*AFTX?U^oRohZul>03dg?zn}rvT;D*za`(x~*zS**Q_mb5e?s7(slQe?@Tsc>1^23kt~!Nec=|3y29R{EA|o4|XdU(5sdJocyDuPh1oO8tGrH z@~2pz1oD&VjH02v!*lbQU&%o8CrHQxNZ0_X23W}dU2=Vs0K)sdpwyw31@r;1qyLgL z8TucRX8mQ~{#W9N6$TDu00d-z`i=fYJ=b>tph^EoTHClbA{diD->y7~^{KN~1L zC-5|b)B}ZZ>jDs40X`x>5x5tA#@_!I0|*;CYa2s52UA1)=R}`60a~)NHauXydI9+0 z{X}#UzyqKYu+jZ9%ItG9ppl{g8uCy7eiARW+)s^UXz^bf z>1og<&j^lp11OkWClCu3CXr4t3XG)P&SS^uz``W5f#Q$rkcpfPADO>$tCD*qSAc$Xd%Hdh=`d_(x9tQJgjgkdO^I5n5Daz`v zSe{1^dikouj|p?YHwQ+s{o9pA1O8 Date: Thu, 6 Jan 2022 02:28:47 +0800 Subject: [PATCH 4/8] NEW&FIX: 1) Add maven-jxr-plugin for generating html report 2) Fix build_scoped broken test case error --- .gitignore | 2 ++ pom.xml | 18 ++++++++++++++ .../logstash/LogstashOutputStream.java | 23 ++++++++++++------ .../logstash/pipeline/GlobalDecorator.java | 8 +++--- .../resources/jar/maven-jxr-plugin-3.0.0.jar | Bin 0 -> 67264 bytes .../logstash/LogstashOutputStreamTest.java | 1 + 6 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 src/main/resources/jar/maven-jxr-plugin-3.0.0.jar diff --git a/.gitignore b/.gitignore index 805bf2a0..283e3ca9 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ work .classpath .project .settings/ + +.DS_Store diff --git a/pom.xml b/pom.xml index da16b0b1..63b3af1b 100644 --- a/pom.xml +++ b/pom.xml @@ -218,6 +218,24 @@ clean verify + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M3 + + false + + + + org.apache.maven.plugins + maven-site-plugin + 3.7.1 + + + org.apache.maven.plugins + maven-surefire-report-plugin + 3.0.0-M5 + org.apache.maven.plugins maven-failsafe-plugin diff --git a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java index 7f572d13..6063a4c5 100644 --- a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java +++ b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java @@ -30,6 +30,7 @@ import java.lang.Boolean; import java.io.IOException; import java.io.OutputStream; +import java.util.concurrent.atomic.AtomicBoolean; /** * Output stream that writes each line to the provided delegate output stream @@ -41,20 +42,27 @@ public class LogstashOutputStream extends LineTransformationOutputStream { private final OutputStream delegate; private final LogstashWriter logstash; - private Boolean buildScopedDecoratorConnectionBroken; + private AtomicBoolean isConnectionBroken; public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash) { - this(delegate, logstash, false); - // this(delegate, logstash, new Boolean("True")); + this(delegate, logstash, new AtomicBoolean(false)); } - public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, Boolean buildScopedDecoratorConnectionBroken) { + public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, AtomicBoolean isConnectionBroken) { super(); this.delegate = delegate; this.logstash = logstash; + this.isConnectionBroken = isConnectionBroken; + } + public AtomicBoolean getIsConnectionBroken() { + return isConnectionBroken; + } + public void setIsConnectionBroken(boolean value) { + isConnectionBroken.set(value); + } // for testing purposes LogstashWriter getLogstashWriter() { @@ -66,12 +74,13 @@ protected void eol(byte[] b, int len) throws IOException { delegate.write(b, 0, len); this.flush(); - if(!logstash.isConnectionBroken() || !buildScopedDecoratorConnectionBroken) { + if(!logstash.isConnectionBroken() || !getIsConnectionBroken().get()) { String line = new String(b, 0, len, logstash.getCharset()); line = ConsoleNote.removeNotes(line).trim(); logstash.write(line); - } else { - buildScopedDecoratorConnectionBroken = true; + } + if (logstash.isConnectionBroken()) { + getIsConnectionBroken().set(true); } } diff --git a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java index 966fc7e2..689d356c 100644 --- a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java +++ b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java @@ -3,6 +3,7 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.charset.StandardCharsets; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; import java.util.logging.Logger; import java.lang.Boolean; @@ -26,7 +27,7 @@ public class GlobalDecorator extends TaskListenerDecorator { private transient Run run; private String stageName; private String agentName; - Boolean buildScopedDecoratorConnectionBroken; + AtomicBoolean isBuildScopedDecoratorConnectionBroken; public GlobalDecorator(WorkflowRun run) { this(run, null, null); @@ -36,13 +37,14 @@ public GlobalDecorator(WorkflowRun run, String stageName, String agentName) { this.run = run; this.stageName = stageName; this.agentName = agentName; + this.isBuildScopedDecoratorConnectionBroken = new AtomicBoolean(false); } @Override public OutputStream decorate(OutputStream logger) throws IOException, InterruptedException { LogstashWriter writer = new LogstashWriter(run, logger, null, StandardCharsets.UTF_8, stageName, agentName); - LogstashOutputStream out = new LogstashOutputStream(logger, writer, buildScopedDecoratorConnectionBroken); - LOGGER.log(Level.INFO, "buildScopedDecoratorConnectionBroken: {0}", buildScopedDecoratorConnectionBroken.toString()); + LogstashOutputStream out = new LogstashOutputStream(logger, writer, isBuildScopedDecoratorConnectionBroken); + LOGGER.log(Level.INFO, "isBuildScopedDecoratorConnectionBroken: {0}", isBuildScopedDecoratorConnectionBroken.toString()); return out; } diff --git a/src/main/resources/jar/maven-jxr-plugin-3.0.0.jar b/src/main/resources/jar/maven-jxr-plugin-3.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b6ecd9b513ef9c5ed54d7a9b1a19fa41cd0554b6 GIT binary patch literal 67264 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 Date: Sun, 9 Jan 2022 00:19:25 +0800 Subject: [PATCH 5/8] FIX: Fix all unit test error&failure --- .../plugins/logstash/LogstashOutputStreamTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java b/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java index b154f139..23d1f974 100644 --- a/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java +++ b/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java @@ -8,6 +8,7 @@ import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.nio.charset.Charset; +import java.util.concurrent.atomic.AtomicBoolean; import org.junit.After; import org.junit.Before; @@ -61,7 +62,7 @@ public void eolSuccess() throws Exception { // Verify results assertEquals("Results don't match", msg, buffer.toString()); - verify(mockWriter).isConnectionBroken(); + verify(mockWriter, times(2)).isConnectionBroken(); verify(mockWriter).write(msg); verify(mockWriter).getCharset(); } @@ -103,16 +104,15 @@ public void eolSuccessConnectionBroken() throws Exception { } //Verify calls were made to the dao logging twice, not three times. - verify(mockWriter, times(2)).write(msg); - verify(mockWriter, times(3)).isConnectionBroken(); - verify(mockWriter, times(2)).getCharset(); + verify(mockWriter, times(3)).write(msg); + verify(mockWriter, times(6)).isConnectionBroken(); + verify(mockWriter, times(3)).getCharset(); } @Test public void eolSuccessNoDao() throws Exception { when(mockWriter.isConnectionBroken()).thenReturn(true); - LogstashOutputStream los = new LogstashOutputStream(buffer, mockWriter); - when(los.getIsConnectionBroken().get()).thenReturn(true); + LogstashOutputStream los = new LogstashOutputStream(buffer, mockWriter, new AtomicBoolean(true)); String msg = "test"; buffer.reset(); @@ -121,6 +121,6 @@ public void eolSuccessNoDao() throws Exception { // Verify results assertEquals("Results don't match", msg, buffer.toString()); - verify(mockWriter).isConnectionBroken(); + verify(mockWriter, times(2)).isConnectionBroken(); } } From 627b2880ef6a6a2dec31a4192173628309dce0d4 Mon Sep 17 00:00:00 2001 From: chenhuahuan Date: Sun, 9 Jan 2022 17:25:44 +0800 Subject: [PATCH 6/8] FIX: Fix build scoped connection broken issue in every eol(line) --- .../logstash/LogstashOutputStream.java | 31 ++++++++++--------- .../logstash/pipeline/GlobalDecorator.java | 3 +- .../logstash/LogstashOutputStreamTest.java | 6 ++-- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java index 6063a4c5..3e4b22ca 100644 --- a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java +++ b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java @@ -27,7 +27,6 @@ import hudson.console.ConsoleNote; import hudson.console.LineTransformationOutputStream; -import java.lang.Boolean; import java.io.IOException; import java.io.OutputStream; import java.util.concurrent.atomic.AtomicBoolean; @@ -42,26 +41,26 @@ public class LogstashOutputStream extends LineTransformationOutputStream { private final OutputStream delegate; private final LogstashWriter logstash; - private AtomicBoolean isConnectionBroken; + private AtomicBoolean isBuildConnectionBroken; public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash) { this(delegate, logstash, new AtomicBoolean(false)); } - public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, AtomicBoolean isConnectionBroken) { + public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, AtomicBoolean isBuildConnectionBroken) { super(); this.delegate = delegate; this.logstash = logstash; - this.isConnectionBroken = isConnectionBroken; + this.isBuildConnectionBroken = isBuildConnectionBroken; } - public AtomicBoolean getIsConnectionBroken() { - return isConnectionBroken; + public AtomicBoolean getIsBuildConnectionBroken() { + return isBuildConnectionBroken; } public void setIsConnectionBroken(boolean value) { - isConnectionBroken.set(value); + isBuildConnectionBroken.set(value); } // for testing purposes LogstashWriter getLogstashWriter() @@ -74,14 +73,18 @@ protected void eol(byte[] b, int len) throws IOException { delegate.write(b, 0, len); this.flush(); - if(!logstash.isConnectionBroken() || !getIsConnectionBroken().get()) { - String line = new String(b, 0, len, logstash.getCharset()); - line = ConsoleNote.removeNotes(line).trim(); - logstash.write(line); - } - if (logstash.isConnectionBroken()) { - getIsConnectionBroken().set(true); + if (!getIsBuildConnectionBroken().get()) { + if (!logstash.isConnectionBroken()) { + String line = new String(b, 0, len, logstash.getCharset()); + line = ConsoleNote.removeNotes(line).trim(); + logstash.write(line); + } + // Once it gets connection broken, set the build connection flag to true. + if (logstash.isConnectionBroken()) { + getIsBuildConnectionBroken().set(true); + } } + } /** diff --git a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java index 689d356c..bdccdcf0 100644 --- a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java +++ b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java @@ -43,8 +43,9 @@ public GlobalDecorator(WorkflowRun run, String stageName, String agentName) { @Override public OutputStream decorate(OutputStream logger) throws IOException, InterruptedException { LogstashWriter writer = new LogstashWriter(run, logger, null, StandardCharsets.UTF_8, stageName, agentName); + LOGGER.log(Level.INFO, "[Before]-isBuildScopedDecoratorConnectionBroken: {0}", isBuildScopedDecoratorConnectionBroken.toString()); LogstashOutputStream out = new LogstashOutputStream(logger, writer, isBuildScopedDecoratorConnectionBroken); - LOGGER.log(Level.INFO, "isBuildScopedDecoratorConnectionBroken: {0}", isBuildScopedDecoratorConnectionBroken.toString()); + LOGGER.log(Level.INFO, "[After]- isBuildScopedDecoratorConnectionBroken: {0}", isBuildScopedDecoratorConnectionBroken.toString()); return out; } diff --git a/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java b/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java index 23d1f974..3d125e92 100644 --- a/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java +++ b/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java @@ -104,15 +104,15 @@ public void eolSuccessConnectionBroken() throws Exception { } //Verify calls were made to the dao logging twice, not three times. - verify(mockWriter, times(3)).write(msg); + verify(mockWriter, times(2)).write(msg); verify(mockWriter, times(6)).isConnectionBroken(); - verify(mockWriter, times(3)).getCharset(); + verify(mockWriter, times(2)).getCharset(); } @Test public void eolSuccessNoDao() throws Exception { when(mockWriter.isConnectionBroken()).thenReturn(true); - LogstashOutputStream los = new LogstashOutputStream(buffer, mockWriter, new AtomicBoolean(true)); + LogstashOutputStream los = new LogstashOutputStream(buffer, mockWriter, new AtomicBoolean(false)); String msg = "test"; buffer.reset(); From 663f4ea1064bbb1f4a4f6f147b8f73c591a28208 Mon Sep 17 00:00:00 2001 From: chenhuahuan Date: Sun, 9 Jan 2022 21:33:36 +0800 Subject: [PATCH 7/8] FIX: Remove extra code --- .../jenkins/plugins/logstash/LogstashOutputStream.java | 8 +++++--- .../plugins/logstash/pipeline/GlobalDecorator.java | 9 +++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java index 3e4b22ca..270ffa54 100644 --- a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java +++ b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java @@ -30,6 +30,8 @@ import java.io.IOException; import java.io.OutputStream; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Output stream that writes each line to the provided delegate output stream @@ -39,6 +41,8 @@ * @author Rusty Gerard */ public class LogstashOutputStream extends LineTransformationOutputStream { + private static final Logger LOGGER = Logger.getLogger(LogstashOutputStream.class.getName()); + private final OutputStream delegate; private final LogstashWriter logstash; private AtomicBoolean isBuildConnectionBroken; @@ -59,9 +63,6 @@ public AtomicBoolean getIsBuildConnectionBroken() { return isBuildConnectionBroken; } - public void setIsConnectionBroken(boolean value) { - isBuildConnectionBroken.set(value); - } // for testing purposes LogstashWriter getLogstashWriter() { @@ -82,6 +83,7 @@ protected void eol(byte[] b, int len) throws IOException { // Once it gets connection broken, set the build connection flag to true. if (logstash.isConnectionBroken()) { getIsBuildConnectionBroken().set(true); + LOGGER.log(Level.WARNING, "Mark logstash connection broken for build!"); } } diff --git a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java index bdccdcf0..820ee6fa 100644 --- a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java +++ b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java @@ -6,7 +6,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; import java.util.logging.Logger; -import java.lang.Boolean; import org.jenkinsci.plugins.workflow.flow.FlowExecutionOwner; import org.jenkinsci.plugins.workflow.job.WorkflowRun; @@ -27,7 +26,7 @@ public class GlobalDecorator extends TaskListenerDecorator { private transient Run run; private String stageName; private String agentName; - AtomicBoolean isBuildScopedDecoratorConnectionBroken; + AtomicBoolean isBuildScopedConnectionBroken; public GlobalDecorator(WorkflowRun run) { this(run, null, null); @@ -37,15 +36,13 @@ public GlobalDecorator(WorkflowRun run, String stageName, String agentName) { this.run = run; this.stageName = stageName; this.agentName = agentName; - this.isBuildScopedDecoratorConnectionBroken = new AtomicBoolean(false); + this.isBuildScopedConnectionBroken = new AtomicBoolean(false); } @Override public OutputStream decorate(OutputStream logger) throws IOException, InterruptedException { LogstashWriter writer = new LogstashWriter(run, logger, null, StandardCharsets.UTF_8, stageName, agentName); - LOGGER.log(Level.INFO, "[Before]-isBuildScopedDecoratorConnectionBroken: {0}", isBuildScopedDecoratorConnectionBroken.toString()); - LogstashOutputStream out = new LogstashOutputStream(logger, writer, isBuildScopedDecoratorConnectionBroken); - LOGGER.log(Level.INFO, "[After]- isBuildScopedDecoratorConnectionBroken: {0}", isBuildScopedDecoratorConnectionBroken.toString()); + LogstashOutputStream out = new LogstashOutputStream(logger, writer, isBuildScopedConnectionBroken); return out; } From 6bd017c4a208e1bc3107f63061caf14d84ba7408 Mon Sep 17 00:00:00 2001 From: chenhuahuan Date: Sun, 9 Jan 2022 22:50:41 +0800 Subject: [PATCH 8/8] FIX: Add @field:run to LogstashOutputStream Class for printing #build number --- .../jenkins/plugins/logstash/LogstashOutputStream.java | 10 ++++++---- .../plugins/logstash/pipeline/GlobalDecorator.java | 2 +- .../plugins/logstash/LogstashOutputStreamTest.java | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java index 270ffa54..e780198d 100644 --- a/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java +++ b/src/main/java/jenkins/plugins/logstash/LogstashOutputStream.java @@ -45,17 +45,19 @@ public class LogstashOutputStream extends LineTransformationOutputStream { private final OutputStream delegate; private final LogstashWriter logstash; - private AtomicBoolean isBuildConnectionBroken; + private final AtomicBoolean isBuildConnectionBroken; + private final String run; public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash) { - this(delegate, logstash, new AtomicBoolean(false)); + this(delegate, logstash, new AtomicBoolean(false), ""); } - public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, AtomicBoolean isBuildConnectionBroken) { + public LogstashOutputStream(OutputStream delegate, LogstashWriter logstash, AtomicBoolean isBuildConnectionBroken, String run) { super(); this.delegate = delegate; this.logstash = logstash; this.isBuildConnectionBroken = isBuildConnectionBroken; + this.run = run; } @@ -83,7 +85,7 @@ protected void eol(byte[] b, int len) throws IOException { // Once it gets connection broken, set the build connection flag to true. if (logstash.isConnectionBroken()) { getIsBuildConnectionBroken().set(true); - LOGGER.log(Level.WARNING, "Mark logstash connection broken for build!"); + LOGGER.log(Level.WARNING, "Mark logstash connection broken for build: {0}.", run); } } diff --git a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java index 820ee6fa..5c3513e7 100644 --- a/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java +++ b/src/main/java/jenkins/plugins/logstash/pipeline/GlobalDecorator.java @@ -42,7 +42,7 @@ public GlobalDecorator(WorkflowRun run, String stageName, String agentName) { @Override public OutputStream decorate(OutputStream logger) throws IOException, InterruptedException { LogstashWriter writer = new LogstashWriter(run, logger, null, StandardCharsets.UTF_8, stageName, agentName); - LogstashOutputStream out = new LogstashOutputStream(logger, writer, isBuildScopedConnectionBroken); + LogstashOutputStream out = new LogstashOutputStream(logger, writer, isBuildScopedConnectionBroken, run.toString()); return out; } diff --git a/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java b/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java index 3d125e92..ca62ad8e 100644 --- a/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java +++ b/src/test/java/jenkins/plugins/logstash/LogstashOutputStreamTest.java @@ -112,7 +112,7 @@ public void eolSuccessConnectionBroken() throws Exception { @Test public void eolSuccessNoDao() throws Exception { when(mockWriter.isConnectionBroken()).thenReturn(true); - LogstashOutputStream los = new LogstashOutputStream(buffer, mockWriter, new AtomicBoolean(false)); + LogstashOutputStream los = new LogstashOutputStream(buffer, mockWriter, new AtomicBoolean(false),""); String msg = "test"; buffer.reset();