From 5bea0f3e28e2eaa09bea095801f9e0f733ecc7cf Mon Sep 17 00:00:00 2001 From: Gabriel Tofvesson Date: Mon, 15 May 2017 17:24:26 +0200 Subject: [PATCH] Updates Check diffs. Basically, all code is now compiled and executed on the server side --- .../org/teamavion/pcomp/PComp.class | Bin 5502 -> 5487 bytes .../pcomp/container/ContainerComputer.class | Bin 1294 -> 1511 bytes .../org/teamavion/pcomp/gui/GUIComputer.class | Bin 14303 -> 9850 bytes .../org/teamavion/pcomp/gui/GUIHandler.class | Bin 3087 -> 2653 bytes .../pcomp/tile/TileEntityComputer.class | Bin 4682 -> 10838 bytes src/main/java/org/teamavion/pcomp/PComp.java | 33 ++---- .../org/teamavion/pcomp/blocks/Computer.java | 6 +- .../pcomp/container/ContainerComputer.java | 6 +- .../org/teamavion/pcomp/gui/GUIComputer.java | 87 +++------------ .../org/teamavion/pcomp/gui/GUIHandler.java | 6 +- .../pcomp/tile/TileEntityComputer.java | 103 +++++++++++++++++- src/main/lib/minecrafthelper-1.0-sources.jar | Bin 23301 -> 23448 bytes src/main/lib/minecrafthelper-1.0.jar | Bin 47870 -> 48230 bytes 13 files changed, 144 insertions(+), 97 deletions(-) diff --git a/classes/production/Programmable_Computers_main/org/teamavion/pcomp/PComp.class b/classes/production/Programmable_Computers_main/org/teamavion/pcomp/PComp.class index b8ded63958c58fba99cb59fc2c91737a51783808..76e429389a495e3bf36877e5c3e8cc0d6344a9e0 100644 GIT binary patch delta 1941 zcmaJ>cXU%#82{a*$x9wLZA^jELTgfJNkY@m(h68vwN(lfN|SL&GJK~Oi^>#Vb;-R&`oFT33Zmfz8`})Jsb`AtDB{e zB48VNCq;(kPBpCWqaM^RHl@X6zr=9-z^WPyYlH;NBVfC_)i6h2hskP=F)#f|jveUa zcnX~iE_ILS8o^PAE{=(q#9*xqhn1KT^+jqWWnS1H%P?Z66;Bg;#tI+Dv)IM)0$vob zo8u+CtZpz4)W3pP)qTba=N^vN@VbD#9B-h38eOP0&Y+Y19B<++0sA=K#ye_>&^!HI z>=*DJ$NTtz!J%%lI9wbb;v5|u-Zl}&QMFGVS4j6EvNm7-FpLGs(D$^of5q{vE( z-N|tXUkLb;<1oHr=;5+2^u_F#-RfwASitcMe&zTLM>&4SevUtIM1%QHhBRrB)WETY_7O2PGjB3xnP^aJ z&Ca%^=AKL^$!)8}zB*Q@M)X;<-3&8>aY}XlwCeh{PM*a|c%!6rLnGhmn(+UKse3I; z^giNmqNsAoz))8U~;U@Wl6;#s~iAW(@pU0W<=mu+r>pw@wkfuQU zzq@Htr^*d`esn8rbsm0Oizbk=&!a~ z3hWxTRdP@Y#pEzGz++NW_66j{(!|QC3}c<@0ZTrsp-u{!gZAT4*IPy7Ech5k(I!W= z9ktG8@uBo{G9nwpFdPi0lcr1R72WhR$UXuiPuNGnjL{fFdL{W=iJwVPRWVfKtQgKF z>sZtrvl@xlk{8n+Epa_b^uUSMljhZmG7=2#cCbw(=rDz-76tn6O(n`x4mgK$YI&w% zI(gNr*35Bn%{LDM(E|Fv7DB{8igKbq{Xk1-CT%J$M{kM%$*CNgbS`F4F0Fs9*7-Ds z2*QSB>WfuUwluOO+?!!r1G_EL)^pIH1bTI#cNek}=+l90TTYzRwXoPSJJ8qGFKNr| zLT+slx#lHs>O{{jxHiMS9gZ38$hY-RU_i=LK$5MHNCE>BaI#hpox2indlJwJxokxV zcvc{HJBnw}nU}u7TTqffDM>@xQPxUcahI(;>2``|Co)z*^mHL3fzwzk^{!7MSxWc; zE?D3ud0VqKL()8621$60V6TdLcjOU0yZ#1(sCNKk?UrKS>wJ={s#pAdfOa1|&hsPoS delta 2070 zcmZ`)d0Z5A6#xE~-JRKSlywns#R#xq0bxbSgtbsa69QDA%qts~aarAq+2KgD?Xt`) zrRg-YL(A?kY9%eTGAp|;%MR_f?6BLiKIWT+57I~c=N-Ry{NDS%H@`WQb2KNi`{hJfe$_@_3BL<2*WeY~t|*k4^zk;wb@9Z0676jnJpFZM=}1?Pkh}cOBl?VP0c}7H)rSu$sf|?Ob&-d z{Dr>>ZV^ZD4@0UxjX`~G`WMyO6uyNOY8^t3w%;hkF*sxL0X}bN@=4}RlSx|durPyH z?#vNV44tiFBGYyZTp2kbV!EWNvO;^oxr6?Y*GD^%=jh&}7}T|@;thCQ*(a=4ParkI zd1SRrQYD5Vjvl|hq2%E2UPFe+n7+9uHA+gY+|(=w+;TrR9ADm^1Yw3aNA_%j(4z#K zLkx+I@_sM09v@zJ{WJof9Pp@-Mg~i`xt`XPx?)Ijl=q*3Q{<3OauXV5C#|>-O8s^6 ze+*Irvg-7gcmuLqkrt@VK)vd$2nPdo!RpdFhCzg3o#dIK1pWFc!`Qyp_6|Y+bhV23 zqJ;PmHK5k2l6z5|600*^Yqun89o8Y{*_h8zLQ7K8X&F49MGEQpGsBKEFcu7Fl4gkM zVb%^0!W zZsemlZC0_#%G*s*oNjE0BGZ;-b3~DC%dt^hwr!*>PiOfyC$TP!DmLfY%~2F=gwUOE z4C|l@v#<=y=}!U8qA?q?4 z;Bp%23XI1p8l?_W4S2Ft;v(qn*I*1qk0n?m1d$sJL|2d|V*y!#c6bnJBtaLwSV(oH zB8)}w5!P9x`w^gN2g#lU<584z2ytlQpd5j#ltb7|X;iWr(A>L6Eu^)E(T0n|RBAa{ zN7J?EU@N9(S}>FN1;po28FOhT=Q&8Y&}hM{#9uR8n2~YJM20IVP+yy?sDNd-8rK{H DDwgO- diff --git a/classes/production/Programmable_Computers_main/org/teamavion/pcomp/container/ContainerComputer.class b/classes/production/Programmable_Computers_main/org/teamavion/pcomp/container/ContainerComputer.class index 41a14abe244d6608128f02e4c4111027ba602e89..e32ef637d25356f995ce99ca0b4550166c9fdd14 100644 GIT binary patch delta 602 zcmZ{gOHUI~7>1v@(6Pg52{3>twIYhNQynje7u41YYS9E2(4|QoMkQP%bzHDw>CQxF z!@{+0+>l63T=)b06}s|AXw>hF3C0DJocDX*?|hf{%uDxs_k%CLK79rzx$Dx$Se9On zyPRNL!$}PjE+xvE`I=Q+PH{R@{VHAZX%%QV<8qdBncDrod57~3lRNXTjm7{M6#aM( zQ;LgRQe5VWVw$TC*A&;ODr&ms26cyl*5Qt#!JI+x>UWULnY$JBIEw45 zPs5dk&5g*QFj2a<9>u}h@_H1uTaV)4p}q{#lH{jZ9O{1-K8co|uSRKVabu|!OJ6;y zSY!VFt<#N0scDd1YqeKqmfP`WGHiX@>XqLF2A+PBFjM#dgMve%Lb@aa#qvjtvcHSz zcd+Exa=I+5Lq>?RlQtd{9Fzv=#zv7P$070@p@-r0E*&Mg!=hxUtju|`$zX(n-k7xP zk*x#e514PM`Z~&{4%rtTZn!7a|1y`#4tbBB?Ke2~J8bK{%(u{v@)D6v1$o}0#D7kj adrq3-u_y+PN@bse`GbX;wlyl+y@8$v^-6^Od^tYOg=fFF={9M-Sskd?q|5nX)kLF~h9K9P@7F zLu7I+Td)v#6j^kuhn>A99>hL|4d6>h;uqwxW9ffE>fIo9M#xKmf+*7(_03V$#u^o_82beuwlS#y diff --git a/classes/production/Programmable_Computers_main/org/teamavion/pcomp/gui/GUIComputer.class b/classes/production/Programmable_Computers_main/org/teamavion/pcomp/gui/GUIComputer.class index e5543c2eb5f014a1d0f8cd2aa58a373e3926f270..6e34cb309c72f13d97b757c5231544e213b79c12 100644 GIT binary patch literal 9850 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 literal 14303 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 diff --git a/classes/production/Programmable_Computers_main/org/teamavion/pcomp/gui/GUIHandler.class b/classes/production/Programmable_Computers_main/org/teamavion/pcomp/gui/GUIHandler.class index 2b9d4532ab4fe6c553b3cbd6dda84dc4b4bfd16f..a644b5e5f5a972b2e8f27cfde4c91ab2ad4e2363 100644 GIT binary patch delta 840 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 X3`;0u#><%hDx)laFViG>b(Z}FLHlGW diff --git a/src/main/java/org/teamavion/pcomp/PComp.java b/src/main/java/org/teamavion/pcomp/PComp.java index 9eeb53f..b718253 100644 --- a/src/main/java/org/teamavion/pcomp/PComp.java +++ b/src/main/java/org/teamavion/pcomp/PComp.java @@ -1,8 +1,6 @@ package org.teamavion.pcomp; -import net.minecraft.nbt.JsonToNBT; -import net.minecraft.nbt.NBTException; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraft.world.WorldProvider; @@ -12,6 +10,7 @@ import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.fml.relauncher.Side; import org.teamavion.pcomp.blocks.Computer; import org.teamavion.pcomp.gui.GUIHandler; import org.teamavion.pcomp.tile.TileEntityComputer; @@ -20,9 +19,6 @@ import org.teamavion.util.automation.SetupHelper; import org.teamavion.util.support.NetworkChannel; import org.teamavion.util.support.Reflection; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - @Mod(modid = PComp.MODID, version = PComp.VERSION) public class PComp { @@ -42,23 +38,18 @@ public class PComp SetupHelper.registerRenders(PComp.class); channel = new NetworkChannel(MODID); channel.registerWorldHandler((side, worldEvent) -> { - World w = (World) Reflection.getValue("world", DimensionManager.getProvider((Integer) Reflection.getValue("id", worldEvent, worldEvent.getClass())), WorldProvider.class); // Get World + World w = (World) (side==Side.SERVER? + Reflection.getValue("world", DimensionManager.getProvider((Integer) Reflection.getValue("id", worldEvent, worldEvent.getClass())), WorldProvider.class): + Reflection.getValue("world", Minecraft.getMinecraft(), Minecraft.class)); // Get World TileEntity t = w.getTileEntity(worldEvent.getPos()); - try { - if (t != null) { - Matcher m = Pattern.compile("(\\d+):(\\d+):(\\d+);(\\d+);(.+)").matcher(worldEvent.getData()); - if(!m.matches()) throw new RuntimeException(); - String s1; - NBTTagCompound n = JsonToNBT.getTagFromJson((s1=m.group(5)).substring(8, s1.length()-1) - .replace("&rbr;", "}") - .replace("&lbr;", "{") - .replace(""", "\"") - .replace("&", "&")); - t.readFromNBT(n); - } - } catch (NBTException e) { - e.printStackTrace(); + if (t == null){ + System.err.println("A referenced TileEntity ("+worldEvent.getPos().toString()+") was null!"); + return null; } + t.readFromNBT(worldEvent.getEvent()); + t.markDirty(); + if(worldEvent.getEvent().hasKey("update")) return new NetworkChannel.WorldEvent(t.getPos(), t.getWorld().provider.getDimension(), t.serializeNBT()); + if(worldEvent.getEvent().hasKey("exec")) if(t instanceof TileEntityComputer) ((TileEntityComputer) t).exec(); return null; }); NetworkRegistry.INSTANCE.registerGuiHandler(this, new GUIHandler()); diff --git a/src/main/java/org/teamavion/pcomp/blocks/Computer.java b/src/main/java/org/teamavion/pcomp/blocks/Computer.java index 1aa022c..bdad1d6 100644 --- a/src/main/java/org/teamavion/pcomp/blocks/Computer.java +++ b/src/main/java/org/teamavion/pcomp/blocks/Computer.java @@ -23,6 +23,8 @@ public class Computer extends Block { @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + TileEntity t = worldIn.getTileEntity(pos); + if(t!=null) t.setPos(pos); playerIn.openGui(PComp.instance, ID_COMPUTER, worldIn, pos.getX(), pos.getY(), pos.getZ()); return true; } @@ -30,7 +32,9 @@ public class Computer extends Block { @Nullable @Override public TileEntity createTileEntity(World world, IBlockState state) { - return new TileEntityComputer(); + TileEntityComputer t = new TileEntityComputer(); + t.setWorld(world); + return t; } @Override diff --git a/src/main/java/org/teamavion/pcomp/container/ContainerComputer.java b/src/main/java/org/teamavion/pcomp/container/ContainerComputer.java index cd31bf0..d300cd7 100644 --- a/src/main/java/org/teamavion/pcomp/container/ContainerComputer.java +++ b/src/main/java/org/teamavion/pcomp/container/ContainerComputer.java @@ -8,7 +8,11 @@ public class ContainerComputer extends Container{ protected final TileEntityComputer computer; - public ContainerComputer(TileEntityComputer computer){ this.computer = computer; } + public ContainerComputer(TileEntityComputer computer){ + this.computer = computer; + computer.getWorld().scheduleBlockUpdate(computer.getPos(), computer.getBlockType(), 0, 0); + computer.markDirty(); + } @Override public boolean canInteractWith(EntityPlayer playerIn) { diff --git a/src/main/java/org/teamavion/pcomp/gui/GUIComputer.java b/src/main/java/org/teamavion/pcomp/gui/GUIComputer.java index 179df3e..a016212 100644 --- a/src/main/java/org/teamavion/pcomp/gui/GUIComputer.java +++ b/src/main/java/org/teamavion/pcomp/gui/GUIComputer.java @@ -1,6 +1,5 @@ package org.teamavion.pcomp.gui; -import com.google.gson.JsonObject; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; @@ -11,17 +10,9 @@ import org.teamavion.pcomp.PComp; import org.teamavion.pcomp.net.DataListener; import org.teamavion.pcomp.tile.TileEntityComputer; import org.teamavion.util.support.NetworkChannel; -import org.teamavion.util.support.Reflection; -import org.teamavion.util.support.Result; -import javax.tools.JavaCompiler; -import javax.tools.ToolProvider; -import java.io.*; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; +import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; @SuppressWarnings({"unchecked", "WeakerAccess"}) @@ -37,7 +28,12 @@ public class GUIComputer extends GuiScreen implements DataListener skip = new ArrayList<>(); - for(GuiTextField t : inputLines) if(t.getText().startsWith("import ") && t.getText().endsWith(";")){ skip.add(t); sb.append(t.getText()); } - sb.append("public class ").append(f.getName().substring(0, f.getName().length() - 5)).append("{public static void main(String[] args){"); - for(GuiTextField t : inputLines) if(!skip.contains(t)) sb.append(t.getText()); - sb.append("}}"); - JavaCompiler jc = ToolProvider.getSystemJavaCompiler(); - try (OutputStream out = new FileOutputStream(f)) { out.write(sb.toString().getBytes()); } - int result = jc.run(null, null, null, f.getAbsolutePath()); - if(result==0){ - //noinspection ResultOfMethodCallIgnored - f.delete(); - f = new File(f.getAbsolutePath().substring(0, f.getAbsolutePath().length()-5)+".class"); - byte[] b; - try{ - InputStream i = new FileInputStream(f); - ArrayList a = new ArrayList<>(); - byte[] b1 = new byte[4096]; - int i1; - while(i.available()>0){ - i1 = i.read(b1); - for(int j = 0; j> compiled = (Result>) Reflection.invokeMethod( - Reflection.getMethod(ClassLoader.class, "defineClass", byte[].class, int.class, int.class), - GUIComputer.class.getClassLoader(), - b, - 0, - b.length); - if(compiled.success){ - for(Method m : compiled.value.getDeclaredMethods()) - if(m.getName().equals("main") && Modifier.isStatic(m.getModifiers()) && Arrays.equals(m.getParameterTypes(), new Class[]{String[].class})) - { - m.setAccessible(true); - try { - m.invoke(null, (Object) new String[]{}); - } catch (IllegalAccessException | InvocationTargetException e) { - e.printStackTrace(); - } - } - } - } + NBTTagCompound n = new NBTTagCompound(); + n.setString("exec", ""); + sync(n); } } @Override public void onGuiClosed() { computer.unregisterDataListener(this); - for(int i = 0; i lines = new HashMap<>(); protected final ArrayList>> dataListeners = new ArrayList<>(); @@ -20,6 +33,20 @@ public class TileEntityComputer extends TileEntity{ public String readLine(int line){ return lines.keySet().contains(line)?lines.get(line):""; } public void writeLine(int line, String data){ lines.put(line, data); } + @Nullable + @Override + public SPacketUpdateTileEntity getUpdatePacket() { + NBTTagCompound t = new NBTTagCompound(); + t = writeToNBT(t); + return new SPacketUpdateTileEntity(pos, 0, t); + } + + @Override + public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) { + readFromNBT(pkt.getNbtCompound()); + super.onDataPacket(net, pkt); + } + @Override public NBTTagCompound writeToNBT(NBTTagCompound compound) { int j = 0, k = 0; @@ -32,6 +59,18 @@ public class TileEntityComputer extends TileEntity{ return super.writeToNBT(compound); } + @Override + public NBTTagCompound serializeNBT() { + NBTTagCompound n = new NBTTagCompound(); + writeToNBT(n); + return n; + } + + @Override + public void deserializeNBT(NBTTagCompound nbt) { + readFromNBT(nbt); + } + @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); @@ -42,6 +81,68 @@ public class TileEntityComputer extends TileEntity{ for(DataListener> d : dataListeners) d.getData(lines); } + public void exec(){ + try{ + StringBuilder sb = new StringBuilder(); + File f = File.createTempFile("exec", ".java"); + ArrayList skip = new ArrayList<>(); + int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE; + for(Integer key : lines.keySet()){ + if(min>key) min = key; + if(max a = new ArrayList<>(); + byte[] b1 = new byte[4096]; + int i1; + while(i.available()>0){ + i1 = i.read(b1); + for(int j = 0; j> compiled = (Result>) Reflection.invokeMethod( + Reflection.getMethod(ClassLoader.class, "defineClass", byte[].class, int.class, int.class), + TileEntityComputer.class.getClassLoader(), + b, + 0, + b.length); + if(compiled.success){ + for(Method m : compiled.value.getDeclaredMethods()) + if(m.getName().equals("main") && Modifier.isStatic(m.getModifiers()) && Arrays.equals(m.getParameterTypes(), new Class[]{String[].class})) + { + m.setAccessible(true); + try { + m.invoke(null, new Object[]{new String[]{}}); + } catch (IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + } + } + } + } + }catch(Exception e){ e.printStackTrace(); } + } + public void registerDataListener(DataListener> listener){ dataListeners.add(listener); listener.getData(lines); } public void unregisterDataListener(DataListener> listener){ dataListeners.remove(listener); } diff --git a/src/main/lib/minecrafthelper-1.0-sources.jar b/src/main/lib/minecrafthelper-1.0-sources.jar index eddc14c606fee4d2f98fd4ee30a710947bb0f5ce..21a5ffa045e9fbb503b215952143238045265e1c 100644 GIT binary patch delta 3590 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 IpbZfBzod|eDgXcg diff --git a/src/main/lib/minecrafthelper-1.0.jar b/src/main/lib/minecrafthelper-1.0.jar index ebbfef80dc69d51cac865861eb6bb31e6c7ca066..ba22ba9f2571803a82d3ae3344d9d69aba9a9971 100644 GIT binary patch delta 8068 zcmZ8`1yEdB(>590U4sU<;10nCcXxM!2e&~7p8!LGySuvtC%C)2CJ>wu;NRridUyA~ zRk!MNcRjaH^?j=Qbf4!Nz`;GBMw=P5GVMWtuq(CU-&e}K6^%k?jT*cqD@&)q0KpPn z9~X=^YIpw@Yw{!oh$4yuPd+p3wyvA=Zilw<3LIwnOW)T}z&QIerqj|%s-aJ^_s_8%y@)YY}m#X<@Ww|KhKxXhl6^Mzp2(#nJ4v z3{$puh%?P3n{l^>d|T-e?3=@nJ3qolM{QyD=IqBMUFO~e<{r3DMhkts+(&Y+~J*AoboGd z8C5Z$AaWafIrr!cc7M{WEB%Z7FLSiyvsCY8R>y0QGa+ zn`6AugIs@gjV=0Gsf)76;1#gd4h5&xy z`voH|53=qa69g0LlA;Qambz4b3)SYuEWp{4?Km7NTrzY*u}Q*;GDr@i%11 zQMw8Rv?a1hBF$;(sBn_&@#Ia0%i=v5Y9+~|pkA&$0y|>E*kk7C2>)N*?ZyVYpZkC^h!v23vI*>?|aU@&tV-MYk77mDPt+HAnv!} zA)op>e#xB9hg|5V-PU%qOvI)%E(i)7EOh4aTMvh4*&KILtzHLgmy7Hvz_*GeB`%VH zay5OT!c~lo<9#Fitci0Q=Z>a} zNCSxW$BXwzo{elPcYD|fW-N|)}Nv@Sw7jC<^{)Wicc2dSlW|EwYyq9A7^t8ZN~dco60-(lxd** z(N>87f6cAY6*+bG}4$t^np)T|lmVeN7ZD+zU zqdSv5JyVsQXH3}22AD=H$I<67DB!lOVF{4adPa@P zd75ei!Te6GoPr&W!tgLKPAGp;t0I>I=u{b34eJ>LZ}csyR1H!{UPzteCww3rYGe)_ z4g8+@>%gqfvvoDe)?TRF!TvDl(bN5i7rC(?+L$Xz(4VGLGX=Od`I0~Ud>Tr2hOxc~ zFI()f06}R!QzMguQTIZm|sq|52yBHzt(h8bp3+ z;iS7(N|ZhzsfMy+Ym?#yG+ip9mM3RJwCW|4UT%s_e81Yi6_x{bUeQvJHLIvZ-8{s{ zmO+$!Ij?{whW6Ojj`0f;t0yZ*OIjV3*l^m8$8jo}Wcj9N1J6XzGQY5ZQ%5E73@2AU zidAuzpr_NV?qEr@`so)A8(XNp1u33rg~e;M5^&U`=@2Lmp?xl4?c6`p%*r)V+2=ts z)0IM_CaJPe6@Tr-(H{akYm@RGpLYd+z9>m#(O3W-t|#_LVD{4;D?d+kqnn;LSXi(0 z)2Wqh(WdZPG>2^Lo4Mtm56RLwP2TwycYwItpHaT|oHwH_(~_I%WZV zR0ObQ64sYKpmi{P4Ow`$R5dGDhSNEks`Mp*{OxXSG@P}qz?@Lul&DP)7UtT|Af7QZ zMcOqVa}$rda7!Ek zT@gz_a&Ta&pBUJibG2YQAXuLF*sfO!X1wLCr@%a$E-0c4f{OrKull@Hgh% zuu?dd@3xn-sa4Q5*9kkm5-JTXjCR=_8@Fn@8Jc8cJtyvVePwl7CD49d`Z4VA2Pj0fo9NwP z_LWqX!P?uSk2cw;eUk@{+ow{q1mMxbCm$5n>xaC;*UGiBJ>TSo*STV76~0PQU{XU| z{U&g}iv_;8NE3vAQ)%ze#Bt(1X+1OjocsL_fY(p_oxBMNejW||i*+ZH1_zpyxk1^N z2xU(9Goi>35^#|bwbaS4hFy^UhgZ%h5YCcS!BFx9ANU)zsEe955e>8e#M90YIt0h! z@SVx1Ww+qq@%Z<0dFxDm{JkY-Bc$jPqkV&soQJEHh?3=P{&wX=FCf73psI-JN|ESS ztoP?BGcFj1S~OF6+i+>n5(#F>H4}D`6Fcr8Dt`F{_p{0#@72I98!FJH5eD>tbd_*4 zu!)*el-oa#b8V42dwwcd5oc&B6-ZJ^qP&x|cg5668c_l4;jxdlnZVBe<~O~A5|iv` zA>Q(nCP2>HDMu*k^eA^|rZyWzG9|{moUQtnjDZt(+GlYpBArKdx_VnNylE9p{s;Zi zbLa$?QtLL`XvA(!Uq7g(i{1kC;_*P(=YO$B@;2XyRz2d_NjVKZ{n0AfHtvvAK>fJG z!sUH*J6(2TKUXVz!DW(to?!;QlWl3{b?c8EY_{+=!Q&(&$=EdY>A@&}J{#9bTylK| z9l)G;zinYe_;YRlemEto%p+3<-P0JxlfwnAh;+jSy@Kd6ksOHU>J=epEl)!yYS-&r zt#WS{>||L8!XuM@JEJw*L&*~R2$NJ?LdLP7)FRzU;n#{hM|7PH${y{4XZX@Zei`im zT>63|eW_}92g*i>0Y^nV$0I(9U#N8J({VLFqc4k?M^_>vkk$*f1(!0jhZ2mG3rwSn zrBuOvfIy!xd<@9p@M+SPq;8@@+}GK)T=*(-=qtp=-JP~{7yZ@@9$+!&gA3D@HFe|6 zSmI^al{qCv)Q&YBJ#ZKkJ?4_Rhrul!E+iyW*=%txJTHGrN7js4gB&ajjP;+=QU4+U z`wC#D1%(rGhf`O^9fkS}*?~so`^50TFB-Gu)Ak1E&2cf>Jvl9PJ4Fmg1L4t+(-HV4@c&o4A=)hd%P3$gjL7DKZw7!w==WTulreyb6nFDMPNj-hvU32F~f3Z9sX}IWKX3ZFc)w->F3szmEO$1{kEmmkl9QN2#LgCX*k2Uad7EWJYzBA3D=lbkO zfKbeG))bgh3f@q?9uY&{qncUj?3FKuNxvV^d%{{p*aZ=JChxUYmF8=bhIdML~~b-GYip6(80T z3h3iPIIIOd>&{ZO>ongIkS!`WK{s|GemTx_HI5*=%9U>|+JU1f4I=0gls@~PbJg;@ z=aWIlE6%aR05To4LbK0e?$J?VAC{bdeRL1;bm?H=0mAFk6$A9AFNBX*05M$ArZ5L1 z*got6SpM?J+yt44Vt#|4jq6NTI1fqsjB6TAz4M2SM~BIXT;$hQOb_6JX_i)Eo^78p zX@@}@J>nJxlZ<$ob(zKU6-q^pzUlDaqbAR2M7Yd{-X=o4&Sp3$Q1fkj-vloyc9VRL zmlMuZMg))M=|;czXfSs|C2`4w_}FUXvb>=@-1xmm7|nSPJ}?ok@h{AgNdKPdTyA)ppl-+WeLW-~&6oqwd} zlgVY+^g;6dLiMKiDVWM&h|aydf1QrqtF02e%J{(1$29t_4{)`6Ecni2Eoy_|yBGxs z)*LTphHi8I$4Xpd6BVC?Lyxx9xl^#!k1o(=iuUXC&NI?=NeD#I1ri9a7GcBF?+MT0 zLfp?PDMfaNh$W<#P>Muu+AB<7vrzl`b&}W}!>kCP{;H0Nc=WW$ZL}wY#aA;49FaQG zG4@#o=_v;y!(Kphf3(j*!RAw!Lp2I=S6H;_2$f7xb_*gE=FA291PNQBx|vG%OJc_= z$K2kY1*TqEN8Sc{#KHnlZwH!Ms&;St5zv}xt~j*b)Oy3g2Twp!^rDv`gjc67QV#L+ zd7q=JpgeU8-eWZu>U!0Y-P`cS5tZPfxx!Kc76Zl-2#dE*(w5YAUWElll{zTFCu1O$ zPxu{-;|(4kgnq7yp6$5vmSDjp5~3H>sy3`zRp~jV@98x%G%_*b{SUP52JU)%n9`Nd^Q;f^|a)FB#4Dv$(T)`#k5>JLFHYW z!bz^!fNW@TnQlgg**8va4l7oH5|RU!K0^m)!nzrBor8PiGrs6;;kH@Ec7fJ;`rKk- z*5*l0d0M?*67sgFFG!&D8sI#g4Ejm%o!`6jz)8aN0MrsA7E?b+y%)!5^Xih%s~90R z^W%-d!9i5rK=Rs&!7JOtnX*nomnWaKrBv0J@_F0TpKch2M}nu4FTG7%FcLU?u+OsC zSkJO*wihzdKbaPFTR zaqGymI-@%w8__N^w;xQHU<+}fSG1zAm|hdFHvW2L{N8_eY;b64Bl^4G;J0FH?&pjl z-H+(GKcH)s+Fpi0OzH&nGv+1X;C7}K8z&X`J9y?*rX@8VGR;{{cE`gON5W?2zXmM( zB_W8#+2%6n3DvToyM0z{lNcqpqR<~9kgWY6E)H0hb-H&tsCTybX$x^J#h*Ys$BS4G0d)fV3OL!D^h8$vX0+mmzlFmOP+5Y-*LJT4rgblyxTtCYZ*DP>b$@K9 zy9PhuWHkj-)L^q%)A2NLmr`sgO`Ypr^Zl+<&yz^s!x3O$Ofmk{DHBsdD0>qUl#&?( zx+sYQ(!kZhd#)0e*wLnDGM!&wvPVj(BxuARD5A2rN0Mc@Kk5rN?A@{EbK)&%XjsY za+_A?X;mFNM4wI6SYskS2wf`6J2kut=73uSC3#3K;E6C#vQ+-C8jW}he!3B&HplJr z9-Zoo0he0soEp-17=y(;CS0mKQUnV3Lhgxwj&LEgdLZ3(^iS=QcWwQ+$Sd8uTDvx5 z3)O7zb!qfq@DdzHg{K{LX7H89O?g5?Ob@&S@+qy)z9Xe+EB^p4nP3$tKJj1H)ULn> z0roHDm7&RTh7eN^#L`&)p?dosPCoD<{)+85Ntvm0bns$Vk9>R8PrNSLK z@agaZJF5NLYS-znc78`FuIubQ-R^Gh>&Uu}T+XeubSmY*n36&TQ(pm+I<}VLy$1Z) zVtim&qVAe7KG(62M*OVX3>#Sa*kC8ndo5P>*ruv?$7`MDBmyXzs!>_#~F_-h%n=iu0pzZU+o;f z=_@4+N;lMq{&~s7hs-L8d_msIO_psCImyv6m5*L5djR+L(G^*TXh+B#jHyEmx=rKF zUaKhB-Q^8oQ8OW-voHB*C!fonU^}mf4OR2U>VAyGR;smpla-c?<>l~2I=GNoV5Sb# z?nR7|6jxjBQ>d&I-eI+It8X(@p;;yw=ZVHd6=f$%YaHF(TC$3N5vSb4<_A-<5r7Nr z-w{h4I5j*h%F{|hNs%AUl$8|%l}&Q#z7$t!@jSs-*&M``NDsgJKG25|rt!-O5v!jJ zJd6>t0oLyq!LFy!C@nq`KGh?O_81}uKW@a8>KGT%&acE@rPYc1;5XaU-&*=EVC*+4 zkKNEI_6D#Z+kYMg+Tix35TeOrM5J-^ElM3(kyYuG`f8a|+LK6$^r@bJk~%y$D0qui zJR!5Z9`Q8@O6-z^Y@=NLo-mEQKa$dReS?V#lRtYwa6@v-Gue}{Zbg9NOEMoDvSQN| z6caL$69yAt0QVX8Zcv5I_fBhpw9>0ooKtWs)3?#ZOq!foD)gwpDu_t zBh??n-VMga20RdtMmObvQp)NIe)vqsXD1ezl%*K#6t#1zesQEW**H-t*E6b(ri-KS z@E2$bm`4&4**}G>lS{Z!I^vC61uEgk$|C=CT5-lV&IwwPayD0OSLq0~a~JD~E!{+= zGxnbgl&Lp3$`k4CxgbymXIpGd5GadCG6?@f+ZJ^QIxi)2;WfhpSp^8>dc9PcAhtMiB65hIHZv`#A-F7>u=i((hOsDf%v8R_^qw3=Nq2}t&(ncS#b zg2R}bH+e4@JfU7LQPzFJ-9 zChxnQ{o=(I{>e#Y>3d3(VyDQJ2zC>MKug?#h3-YQGFXaQkdcmZP~IbgLRPGR};C5$OFKA8~F(|=S zJA(lkUN13!GF8^c#&M5ngeMh8P&bj`=K~+7M0Z?sJSU=K#ZEQk$pH-- zo+9Jk&N#d2+ZzQxL6MDxh)>5b78+v*#k6zUz1RgyQ=VQbLq9~SJ|Wy#KeX_2r)>3O zwt|z1zLhhh^1T{q&?(=n^UNP+R^vs$GC-d(kLD<*rX z1^(Yv5D&UhM*;VHvITurPXN&3`i~97MF2Ie$0GfwD~Ev*{Ljb2dH)5#gqHCV{{j5& z)v5pL4%_}3mr4BxAS(DD0IML)AHYBDBn%Aye*hao{{f5%5&i-EQ`i6hEscx(2hb++ ze_Q&8JuonA|MAcV{1@Q&u>kY82WWmH31C?Mf2OrY5rCEQ-=YGbSoiNG3N)ih1hA$5 zN4#hf0B{=oS&B6q00xZzUJ^own{yZ5#(i?EcWAl=<5EZx%V0#ef5>Cy;DE)9ZohjdGKgMx(8-QB+G`#itz z@B5s;?)#eS%zZv*=FFU#*}4HdT>`3gSYRzv?nJ0a^o|{?v+gUxgvz5tfUfvBaC^|{Ac-own z!j4GVhC~X@_B$*gK8ud^tYFv)Ih@h}+TgQR1ypO;e%wom zAk{T7*5ec-?!l5hon80O-RfREc&mEh(2gmKd3oDB&XUyL#2{P?bLH3B?jxTS&Xpl# zP1`Pqy~VzXzWA* z^}$SP)PXLtDbkB$5YKMWTWNEhZifHr!D7q_$7>9e)Mam})Mbvq8Kzm13d7Fu?NHj+ z>pNX;`D_-6HXF7735p$z}? z1EmXqi^bbr0M7VRz=#*)f*wVX1eVM6`!&#aBN`D}Y0>Xh=oECkyMQ#;a@4MMC)}NQ zM*;=Ia-EoN!<{78(JVs{!{v9n1o{W!Z$k`Lgmg>--HO#30^9Ep)s@iD^SbsA)c^w!T$;%6E%#794}Jn2BF zc0&B;kNZX6?2YR$FmK=rat8sYVU-=~bSdP#VL$b=e~cV062z`YpCvQ=zx#itluYilZ?vgt-%u5!ArmT3tjo zbjrt`Ut~4eR5C2a{1iP(qtP&wti#0SIgeqFgOv}jEPXCLETpK?$CZh9IvZ$t-Oe8O zzAGRZ&L;*0QlRpeY9m*nQ^gpf@|#8Zz_k0s&F%pMM!X)f1u1W%0%mqcl{PEm#zS`< zX{Je$X%(}eV{FI?IY){(i&d0KlBF#Y{)1aB?S(&JH0A_BO5zK4&VM6du>^R&K zrJ-oom@gQ0oVsWf4F$%Jd{hrn@d-}mz|I_yEcnt%pV7$do^(%=aE`ah>jVNTTrJZD z4!WrhRCku7AkK0Pms6AtJN?vLCH2Z)9frD>tyQH)5RIhmqxN%Fa<>+;ep@%!(D!?# z8abVkWv_kE>gHlN_8NHx5cFIo(VsRB(zt7tw4D;a6S!!T-3#Nc3&Io%qK3M@1va-B zGAXLbF-33-ukV-|5k;*}wpdo^zbUYh}+l}o3y+?DH>3^ltr{2%TEM#L6 zhwAtBvE4XwXfcaI)c$d~^!nS_w@y)qvYe)#bYP22NhNEeu{J%c#V8`Fu9Wc%XVvYL z4*r#oESrWMD$~^6mbzDn4VEyeJ#h~U5s#k(S#|<_u}hIF_``=PJO_Q^R0d3ffojc1 zRDzt6LNVA)vX9a`=FpKLnJmI#ha@t zECHq?0Si)N1e=KD2J0tTFbThpKX6trw@kQHqiE}|TgY}uas&$rVbQTKzWL;e#ZsMew;iJc(VND#)nf#YOOgIv-D#0zK6zrkQ`3no}=!O*~Hl4Pg z#Han60z-%BJg)e2vYlO;`-X&SJa{(DOCAlzm7+x&oiL12$6i~_2oI~xI`Q#n1WAar zo8<^|wrEsX?_sVZ*zB1Cp@-+{dpFby&?jsDd^NA1Mj~f;i^i zAnM4Y1Y6X=m&6rA>Z&$*iH<6%uBFZ&!5#G87y;Dwn($R%(3vwHy@?4&$uc$pf5}^mU0m$Fu%PUl?NyN@IxTRz@gTAGl^^nd)iYX+IM$ zqm~$ix2j}R!)D}WpFy07n|NPn_&FcX&))E^gK9fRN>U zn9*Bwp(IBT&w!Ijm)odu!~!>DT=kf{j%?SE0!*w*6$YY6;VRC-o+CEx3f$!xt;Zxg zjI^0i%(AV@L`^W3{m`~sdQX&jCRMMM@Ise?<*P;oaQPx5{Qgd2ifwi#V04#wpaS{M z3F@vx=3Du7oRo!D5Xl;wl)J8@eXQaErb*$M$Pn5pUCjaTVer50&scgUI>V&-Vn8fO zpf8U5NgOA|St5|u!b)gXq-RpXvI`eyX(7OU)Pz;C>AbgN??|cdh$yt4MO2f3wK)$N z%&qndg-pAZs(o;#o#Or4R7g|=B_Ev z?2E1|zcmQSea}A~G0I>tW-eiTL7{K2MZ$31s2Ef zZkx`X9G)O++Ap-;_-3zbR6?1AY2c3^FiL4$!=`x5f0~`KX{1%jcVLLkWS>wm*S41^ z=NT0S>Wh9DKFA@aid8K)1CY&D$`703yNT)+8GW$$#1wQOCwk|K455J9c0X(Nk^#lq zo;tI_$JL8STRsiUmK{h5U^6PTq_|P;zME!>B-VTJfbqwzPnT)P;r{%#FhezbNdhr2 zmQspL9EYTqI!H-Ur;Zx3(Gxk9|LHSoR`}b1&_jpXR+I;vj@u26lRh-%_o$QvZ+K7T zNRI2UWB~E@(KsJPJjKV`uSe6qKRsODVg=Az5GTa6=H3Tw--PYX`*aDgEwgN#$L#OB zcK>u+y1Za+v^Tko7hw^Ng;k-Wd|0)$h<0>ZUb~8XvU64;e#dNv^=2ZifzzPlfCIm7 zGQ~C7L9m%TaFI@Qna9;zX;2nMN+rH}l|Z+2I=VZP_8qt3%gULbQBz6vy#_v0*j642 z<9lvpZD>f4aM(AAyk{foKzPo4^3m%Z;-1bDNdjKZI?5=5y^ZJOb1(?=S>XyW7;;5& z5jV;rIHFEwr!$gnN?dVpKv>6P6)rcpoJjH_QJ6yN#XyaWskb(pEU|qG20Ny<`|Xw_ z*V8ZM{7mq2lXb=uGMHAJvuc%^y`)$M2R!?RPfWPo$r^eP+WkUU`<4{U2go5iJYjFOj#LHh&14(FePK5r<@xrQe+%Vh9`6Z4fXDM6DI6EyP)=)3j5po+foF~jxjHf}Cl-zNZBoM+cB5_WWW2M!dU?4A+SScwv9iu8MAnoH8lsZq z<7x_z$%*x<_Rp8TOvR%?)CEN{+Kau2SHY!VKC~&1qRol0w-8~JPXg^>^euMOZvB5oMp;9VLthzJNRa1aUw{6<6$rli#K ziXe2NVt2->zT$YUU#84h-9X=2lOSYGs_)S%TsWPcE=|X2b)Aw4JqQaHAfea>@3(wz zLv=l#nRc9+(bgs|hNL$DFd4&1k4es@YZ<=IjM1sY_gJu(m>kcVeg4kLNQ5wpVY$!W z`SWs8mTEBi_|IlyQYwNk+2xrLuu3YeC%Yus$T;up;J6RIHk#gwj-dWw_x0VTZd+kA zVRfTgh)_*@kMT1iyPyI!ZF#+_U%y(*lm$YzBCsBrLIPblN{kaCL+lul=nUMMFbZ4> zC_i%rO|jyoQUUolQucMm9Od!Xv(c~RtKS_AgEi4_Th2C&iriU)^@b>JU>{ecj~Ht| zdwOqu+KS{%e5vz&Imnwe?iS0S$h)!2C&<^v`W6JfZc{W4+xJrI<2(Z;ano?~kX1zN zYj0@2_a{G+Rbdy)y|6aB?w#Ml@7Ut%7u;ZY2pDR8vq~0LB%Y9R%g6kvTp)guJh7b% zRTy>UkfzL*4Lf8#(r39xefGy-ZLG_fu-{g}L;9Plv-#QKehnnBk2+9YeBIxb4m%LT zOuOxqJT$*9Oq${}$keWks^PQbE8J2IXL;4`PIG!ydd7wOueN3N0=9uLxh&fz9S)^73Bf0SS^UpNZOOyCMr97# zPqh$28y>Qc3sy-_Ny;zLIQ7vk>uen_@cKbdp&-a)Mv{eZ>KophtYhEOVZ*ZNid+<$ zbk_tcJU_<8U}6ShF!S}Zg;8vNr?-bZJ}AeNF+B-xzeQiJ#1CB^42hR*kRqOt58|gN zT-n(S`GB!w@_|N{wP3fvBW1Wq%Ub zv=?^zl8`aaM)>1qq;aj1Qh4kp^YTrs>ll@7=vhh;N5ZUf=n=ZFA_|`9^id`NSV0k#z;&o_N8 z{&tc5y=z2VHn?w&0*M-axPO9u;@<;EcJX(TU;su*Ffhd}Y2|O6qxx+@`B%)|hPhQK zuftiaa+^QtZci!Uiv{8u0@|DX%;#p-dGJpcGT+Y)RuV3@zsJ1n<{*Bgi2gE;2*XMa zZ0_yI^+0=c%{*?~9U7mD7-FyU9)CUvDZdiyezBn0N~PXihBKw#O~!JS>@;t<%bwF{ zx4=>8?71MlzF=m~zLs*rAFU`To+AHKlv*HSFk(0V7t)=r;^VHbpvayb zhcjiZ%*j70tetU*J8!rwm_dTgZV0mD+gA+K$|aR;2aA$*JXYnpn^ibQDM$lpx9($K z`6t{&2P+UiqY9Zg4Q=dF1w20)q3n{oV5c{m!mI4JIIH{is62f$EyRWQ)mt{>`SRHO zM4gYnuo>A$J}RyIOR(QHnJNZha>g6l&c$bbxDrCplNmkgxXU_2jGTa*Uqk_Iu;pKW zLi!82lh+l$tFLGvyh|Di)5Vt~c#?hLysksTZ2VP+g&EnrOvb)XY6h2&6o7{bxpz_s zt8V%poq^3%;Xgn3tE8w~=rZ#u;Hfz4N17cTUakecs+#InQrhv4`{e=Ur`zkQFNn%3 zo?)QHAshBN*SjziC}fIHxk7z(+kW6{!V=r}@%5c_2mK{r09VL2*d?|hk2_1*SVj4H z9oehrJ@I!R*G=(zq(>&fBMoL2resUhZAM|n_Tx^??x`s48-a|#dlnwl3U~D5w&BTj zijKYWlbXEk^CgTG+~5}1P?HvSMn~ZhEEKU3$9eLtK>E{0lta2t5t5*++uRlq z6x9kDul8D)(p}bu0X7$G#%HHJ*yXBqNJ@g5I%{RS-1) zPR3|NU@9Mx1m%7_U?X0I3DF0G9~-$-8ZJ8+r%RkeovbdlxfC5cPRH0i+)GShB0awO zlY@BRxs$f(F#2KyD9#^n*dQZ`4bQcG@+sS*5Vnl1&wV_!%?3 z<+%&D2nX1^9pCj4L-Q1!B`BRYP47o9=N4LULY}fpqzD=HMa|pFxndt}GpeF!#}CSc8B5;*>kQ#yy>O<~oT!vdl3d>a$fj5SpmW))57SB`5(Ca%lWq*azEFQP zb=<2dnhFN9jWr%~ON0DVFI-7KFkkaf!LfkA(HBtOA?~gtfGuq|W`V@JOtKXN8c-`Xwfu1 zrWDRI!i=S(XO3h1f=>V_!{R>sK?^-={z`dyYkf+OlANarc~`#a%i!mSh%up!&g>6( zk2np^PbgtMc^tS;V8FvGdzd%AEEnqFlnkKYc_Q*b?v-E!S?9|=l!qoX#~isVau|-p zz~&U2!E%52ssyO;*y&C2y-;BTrzUjAI|f=e$>`a}>`C4Ty56`_KvG*lP@UdRESjQN zD&Ud2BEMX#qplvx6hd6AN75frhve$t-rqVyPEbRDJKwl03e4h8K@@C>Zv{wrm$04y+3l+twFWM*Dqi*)H)1 zY`d>8G^*QS`ymwwpI}Y9Cm}Z}m34m$#Jo{L4hCd$P zp4}**A|QzVi^vTRsM90=r#MAG5dN3kl>fIPRyb8X6ZwD2)ZdC^{zcjp`b!EIru}=` zKa~>#g5bZ1A@G%YE%JZT@c%u{MeMI4zXm4qfBXaif#Y9F;=u5(26KS1!f!4GT)I&V z@Syy6`Kb{M5ZC>?T+t)^^CG24GbnxnCX25sX|J*z7g#{0BC;h9IwS^SG?)hIL%D-^JZ`dc~zhF%GOp6cz zl>Q$`DGLkUmO=EF4QV9>lx6;x=>O|({S6lt{|A;UrTD`p|Hl&$5HSDsJ}67!B5ic2 K9%X;b|Nj6vK150Y