From 8137a3000da652026d16ac1ca50ddb8f66a4a365 Mon Sep 17 00:00:00 2001 From: andreas Date: Tue, 4 Nov 2014 11:31:21 +0100 Subject: [PATCH 1/5] =?UTF-8?q?Anpassungen=20f=C3=BCr=20das=20Skalieren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/de/heatup/objects/StaticObject.java | 41 ++++++++++++++----- HeatUp/src/de/heatup/testing/GameLoop.java | 3 +- HeatUp/src/de/heatup/ui/GameInterface.java | 12 +++--- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/HeatUp/src/de/heatup/objects/StaticObject.java b/HeatUp/src/de/heatup/objects/StaticObject.java index ebf1066..0a31fac 100644 --- a/HeatUp/src/de/heatup/objects/StaticObject.java +++ b/HeatUp/src/de/heatup/objects/StaticObject.java @@ -30,12 +30,15 @@ public class StaticObject extends JComponent { private int staticObjectHeight; public StaticObject(char staticObjectType, Point location, int staticObjectWidth, int staticObjectHeight) { + System.out.println("Object Type: " + staticObjectType + "\t" +staticObjectHeight + " h:w " + staticObjectWidth); this.staticObjectType = staticObjectType; this.location = location; this.staticObjectWidth = staticObjectWidth; this.staticObjectHeight = staticObjectHeight; loadBufferedImage(); setAutoBounds(location.x, location.y); + autoRescale(); + //System.out.println(getDebugInfo()); } public StaticObject(char staticObjectType, Point location) { @@ -51,7 +54,9 @@ public class StaticObject extends JComponent { } //g2d.rotate(0.2, 10, 10); + // TODO: Check if we can store a rescaled image in bf1??? if ( doRescale ) { + //System.out.println("hit"); g2d.scale(rescaleFactorX, rescaleFactorY); } @@ -67,24 +72,40 @@ public class StaticObject extends JComponent { this.bf1 = image; } - public void setRescale(double rescaleFactorX, double rescaleFactorY) { - this.rescaleFactorX = rescaleFactorX; - this.rescaleFactorY = rescaleFactorY; - this.doRescale = true; + private void autoRescale() { + // TODO: get original width and hight of bf1 + // Calculate factor new/original + // Rescale image using factor + // Save new bf in bf1 ??? + this.rescaleFactorX = this.staticObjectWidth / this.bf1.getWidth(); + this.rescaleFactorY = this.staticObjectHeight / this.bf1.getHeight(); + + System.out.println("Object: " + this.staticObjectType + "\tBuffered Image: Height: " + this.bf1.getHeight() + "\t Width: " + this.bf1.getWidth() + "\tStatic Object: Height: " + this.staticObjectHeight + "\t Width: " + this.staticObjectWidth); + + if (this.rescaleFactorX != 1 && this.rescaleFactorY != 1 ) { + this.doRescale = true; + } + } - public void unsetRescale() { - this.rescaleFactorX = 0.0; - this.rescaleFactorY = 0.0; - this.doRescale = false; - } +// public void setRescale(double rescaleFactorX, double rescaleFactorY) { +// this.rescaleFactorX = rescaleFactorX; +// this.rescaleFactorY = rescaleFactorY; +// this.doRescale = true; +// } + +// public void unsetRescale() { +// this.rescaleFactorX = 0.0; +// this.rescaleFactorY = 0.0; +// this.doRescale = false; +// } public void setAutoBounds(int x, int y) { this.setBounds(x, y, this.bf1.getWidth(), this.bf1.getHeight()); } public String getDebugInfo() { - String info = "Debug: " + "Rescale enabled:" + this.doRescale + "Rescale X:" + this.rescaleFactorX + "Rescale Y:" + this.rescaleFactorY + " Heigth:" + this.staticObjectHeight + " Width:" + this.staticObjectWidth + " StaticObjectType:" + this.staticObjectType + " X Position:" + this.location.x + " Y Position:" + this.location.y; + String info = "Debug: " + "Rescale? " + this.doRescale + "\tScale X:" + this.rescaleFactorX + "\tScale Y: " + this.rescaleFactorY + "\tH: " + this.staticObjectHeight + "\tW: " + this.staticObjectWidth + "\tStaticObjectType: " + this.staticObjectType + "\tX : " + this.location.x + "\tY :" + this.location.y; return info; } } diff --git a/HeatUp/src/de/heatup/testing/GameLoop.java b/HeatUp/src/de/heatup/testing/GameLoop.java index be6d589..cfa93b5 100644 --- a/HeatUp/src/de/heatup/testing/GameLoop.java +++ b/HeatUp/src/de/heatup/testing/GameLoop.java @@ -2,6 +2,7 @@ package de.heatup.testing; import javax.swing.JLabel; +import de.heatup.cfg.Config; import de.heatup.mapengine.MapEngine; import de.heatup.objects.DynamicObject; import de.heatup.objects.StaticObject; @@ -25,7 +26,7 @@ public class GameLoop { //dynO3.setRescale(1.5,3.5); - + Config.setGamePanelWidth(850); MapEngine me = new MapEngine(1); for (StaticObject currentStaticObject : me.getAllMapObjects()) { GameInterface.getGamePanel().add(currentStaticObject); diff --git a/HeatUp/src/de/heatup/ui/GameInterface.java b/HeatUp/src/de/heatup/ui/GameInterface.java index 1f2d99b..b5edc06 100644 --- a/HeatUp/src/de/heatup/ui/GameInterface.java +++ b/HeatUp/src/de/heatup/ui/GameInterface.java @@ -51,11 +51,11 @@ public class GameInterface extends JFrame { final JFrame frame = new JFrame(); // Fullscreen testing: Remember not to use pack() when using fullscreen mode - frame.setUndecorated(true); - frame.setResizable(false); - frame.setExtendedState(Frame.MAXIMIZED_BOTH); - frame.validate(); - GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(frame); +// frame.setUndecorated(true); +// frame.setResizable(false); +// frame.setExtendedState(Frame.MAXIMIZED_BOTH); +// frame.validate(); +// GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(frame); frame.setTitle("HeatUP!"); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); @@ -94,7 +94,7 @@ public class GameInterface extends JFrame { frame.add(outerPanel); // Comment out for fullscreen - //frame.pack(); + frame.pack(); frame.setVisible(true); frame.repaint(); } From f92e46f1c593e2b2cf0f29b93cbcac22df12ee32 Mon Sep 17 00:00:00 2001 From: feschi55 Date: Tue, 4 Nov 2014 11:47:07 +0100 Subject: [PATCH 2/5] =?UTF-8?q?StatusPanel=20Package=20hinzugef=C3=BCgt;?= =?UTF-8?q?=20statusPanel=20dateien=20hochgeladen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HeatUp/src/de/heatup/ui/StatusPanelAdder.java | 65 +++++++++++++++++++ .../src/de/heatup/ui/statusPanel/Score.java | 30 +++++++++ .../de/heatup/ui/statusPanel/Temperature.java | 47 ++++++++++++++ .../src/de/heatup/ui/statusPanel/Timer.java | 27 ++++++++ 4 files changed, 169 insertions(+) create mode 100644 HeatUp/src/de/heatup/ui/StatusPanelAdder.java create mode 100644 HeatUp/src/de/heatup/ui/statusPanel/Score.java create mode 100644 HeatUp/src/de/heatup/ui/statusPanel/Temperature.java create mode 100644 HeatUp/src/de/heatup/ui/statusPanel/Timer.java diff --git a/HeatUp/src/de/heatup/ui/StatusPanelAdder.java b/HeatUp/src/de/heatup/ui/StatusPanelAdder.java new file mode 100644 index 0000000..245efce --- /dev/null +++ b/HeatUp/src/de/heatup/ui/StatusPanelAdder.java @@ -0,0 +1,65 @@ +package de.heatup.ui; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; + +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.SwingConstants; +import javax.swing.border.LineBorder; + +import de.heatup.ui.statusPanel.Score; +import de.heatup.ui.statusPanel.Temperature; +import de.heatup.ui.statusPanel.Timer; + + +public class StatusPanelAdder{ + Temperature temp; + Score score; + Timer timer; + + public int getTemp(){ + return temp.getTemp(); + } + public int getScore(){ + return score.getScore(); + } + public double getTime(){ + return timer.getTime(); + } + + public static void createPanel(){ + JProgressBar tempbar= new JProgressBar(30,90); + tempbar.setValue(45); + //tempbar.setSize(new Dimension(200,50)); + + JLabel scoreLabel= new JLabel("new Score Label"); + scoreLabel.setBorder(new LineBorder(Color.BLACK, 2)); + //scoreLabel.setSize(new Dimension(100,50)); + + JLabel powerUpLabel = new JLabel(/*new ImageIcon("path_to_image.png")*/"powerUpLabel"); + powerUpLabel.setBorder(new LineBorder(Color.BLACK, 1)); + //powerUpLabel.setSize(new Dimension(200,50)); + + JLabel timeLabel = new JLabel(); + timeLabel.setBorder(new LineBorder(Color.BLACK, 2)); + timeLabel.setText("0"); + //timeLabel.setSize(new Dimension(300,24)); //Groesse, + timeLabel.setHorizontalAlignment(SwingConstants.CENTER ); + + + + GameInterface.getStatusPanel().add(timeLabel); + GameInterface.getStatusPanel().add(tempbar); + GameInterface.getStatusPanel().add(scoreLabel); + GameInterface.getStatusPanel().add(powerUpLabel); + } + private static void getStatusPanel(){ + GameInterface.getStatusPanel(); + } +} + diff --git a/HeatUp/src/de/heatup/ui/statusPanel/Score.java b/HeatUp/src/de/heatup/ui/statusPanel/Score.java new file mode 100644 index 0000000..d43b472 --- /dev/null +++ b/HeatUp/src/de/heatup/ui/statusPanel/Score.java @@ -0,0 +1,30 @@ +package de.heatup.ui.statusPanel; + + +public class Score { + private int score; + public Score(){ + score=0; + } + //returns score + public int getScore(){ + return score; + } + //resets score + public void resetScore(){ + score=0; + } + //raises score + public void raiseScore(int additional){ + score+=additional; + } + //reduces score; when score<0, score=0; + public void reduceScore(int reduce){ + score-=reduce; + //when score less than 0 + if (score<0){ + score=0; + } + } + +} diff --git a/HeatUp/src/de/heatup/ui/statusPanel/Temperature.java b/HeatUp/src/de/heatup/ui/statusPanel/Temperature.java new file mode 100644 index 0000000..b8d5078 --- /dev/null +++ b/HeatUp/src/de/heatup/ui/statusPanel/Temperature.java @@ -0,0 +1,47 @@ +package de.heatup.ui.statusPanel; + + +public class Temperature { + private int min; + private int max; + private int valtemp; + + //ggf. f�r Schwierigkeitsgerade min und max zu ver�ndern und startwert!? + public Temperature(int gmin, int gmax, int gtemp){ + this.min=gmin; + this.max=gmax; + this.valtemp=gtemp; + } + + //returns temp + public int getTemp(){ + return valtemp; + } + /* + * raiseTemp + * return true, gameplay goes on + * return false, heatup done + */ + public boolean raiseTemp(int additional){ + valtemp+=additional; + if(valtemp>max){ + return false; + } else { + return true; + } + } + + /* reduceTemp + * return true; gameplay goes on + * return false; game over, temperature too low + */ + public boolean reduceTemp(int reduce){ + valtemp-=reduce; + if (valtemp Date: Tue, 4 Nov 2014 12:01:25 +0100 Subject: [PATCH 3/5] Anpassungen Fullscreen auskommentiert. --- .../src/de/heatup/objects/StaticObject.java | 30 ++++++++++--------- HeatUp/src/de/heatup/testing/GameLoop.java | 2 +- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/HeatUp/src/de/heatup/objects/StaticObject.java b/HeatUp/src/de/heatup/objects/StaticObject.java index 0a31fac..af63843 100644 --- a/HeatUp/src/de/heatup/objects/StaticObject.java +++ b/HeatUp/src/de/heatup/objects/StaticObject.java @@ -10,6 +10,8 @@ import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JComponent; +import de.heatup.cfg.Config; + /* * Draft for static objects */ @@ -30,21 +32,21 @@ public class StaticObject extends JComponent { private int staticObjectHeight; public StaticObject(char staticObjectType, Point location, int staticObjectWidth, int staticObjectHeight) { - System.out.println("Object Type: " + staticObjectType + "\t" +staticObjectHeight + " h:w " + staticObjectWidth); +// System.out.println("Object Type: " + staticObjectType + "\t" +staticObjectHeight + " h:w " + staticObjectWidth); this.staticObjectType = staticObjectType; this.location = location; this.staticObjectWidth = staticObjectWidth; this.staticObjectHeight = staticObjectHeight; loadBufferedImage(); setAutoBounds(location.x, location.y); - autoRescale(); - //System.out.println(getDebugInfo()); +// autoRescale(); +// System.out.println(getDebugInfo()); } public StaticObject(char staticObjectType, Point location) { - this(staticObjectType, location, 25, 25); + this(staticObjectType, location, Config.singleTilePixels, Config.singleTilePixels); } - + public void paintComponent(Graphics g) { this.g2d = (Graphics2D)g; @@ -55,10 +57,10 @@ public class StaticObject extends JComponent { //g2d.rotate(0.2, 10, 10); // TODO: Check if we can store a rescaled image in bf1??? - if ( doRescale ) { - //System.out.println("hit"); - g2d.scale(rescaleFactorX, rescaleFactorY); - } +// if ( doRescale ) { +// System.out.println("Hit: " + rescaleFactorX + " " + rescaleFactorY); +// g2d.scale(rescaleFactorX, rescaleFactorY); +// } g2d.drawImage(bf1, 0, 0, this); g2d.finalize(); @@ -77,12 +79,12 @@ public class StaticObject extends JComponent { // Calculate factor new/original // Rescale image using factor // Save new bf in bf1 ??? - this.rescaleFactorX = this.staticObjectWidth / this.bf1.getWidth(); - this.rescaleFactorY = this.staticObjectHeight / this.bf1.getHeight(); + this.rescaleFactorX = (double)this.staticObjectWidth / (double)this.bf1.getWidth(); + this.rescaleFactorY = (double)this.staticObjectHeight / (double)this.bf1.getHeight(); - System.out.println("Object: " + this.staticObjectType + "\tBuffered Image: Height: " + this.bf1.getHeight() + "\t Width: " + this.bf1.getWidth() + "\tStatic Object: Height: " + this.staticObjectHeight + "\t Width: " + this.staticObjectWidth); + //System.out.println("Object: " + this.staticObjectType + "\tBuffered Image: Height: " + this.bf1.getHeight() + "\t Width: " + this.bf1.getWidth() + "\tStatic Object: Height: " + this.staticObjectHeight + "\t Width: " + this.staticObjectWidth); - if (this.rescaleFactorX != 1 && this.rescaleFactorY != 1 ) { + if (this.rescaleFactorX != 1 || this.rescaleFactorY != 1 ) { this.doRescale = true; } @@ -105,7 +107,7 @@ public class StaticObject extends JComponent { } public String getDebugInfo() { - String info = "Debug: " + "Rescale? " + this.doRescale + "\tScale X:" + this.rescaleFactorX + "\tScale Y: " + this.rescaleFactorY + "\tH: " + this.staticObjectHeight + "\tW: " + this.staticObjectWidth + "\tStaticObjectType: " + this.staticObjectType + "\tX : " + this.location.x + "\tY :" + this.location.y; + String info = "Debug: " + "Rescale? " + this.doRescale + "\tScale X:" + this.rescaleFactorX + "\tScale Y: " + this.rescaleFactorY + "\tsH: " + this.staticObjectHeight + "\tsW: " + this.staticObjectWidth + "\tStaticObjectType: " + this.staticObjectType + "\tbW : " + this.bf1.getWidth() + "\tbH :" + this.bf1.getHeight(); return info; } } diff --git a/HeatUp/src/de/heatup/testing/GameLoop.java b/HeatUp/src/de/heatup/testing/GameLoop.java index cfa93b5..c7d1ac9 100644 --- a/HeatUp/src/de/heatup/testing/GameLoop.java +++ b/HeatUp/src/de/heatup/testing/GameLoop.java @@ -26,7 +26,7 @@ public class GameLoop { //dynO3.setRescale(1.5,3.5); - Config.setGamePanelWidth(850); +// Config.setGamePanelWidth(900); MapEngine me = new MapEngine(1); for (StaticObject currentStaticObject : me.getAllMapObjects()) { GameInterface.getGamePanel().add(currentStaticObject); From 45a5fa6f59c46716cfe2a134104b17ace54c4be9 Mon Sep 17 00:00:00 2001 From: andreas Date: Tue, 4 Nov 2014 12:14:31 +0100 Subject: [PATCH 4/5] Anpassung an Grafik --- HeatUp/src/de/heatup/objects/ImageLoader.java | 8 ++++---- HeatUp/src/de/heatup/objects/StaticObject.java | 12 +----------- HeatUp/src/de/heatup/objects/logic.java | 2 +- .../images/little_green_guy_verysmall.png | Bin 0 -> 774 bytes 4 files changed, 6 insertions(+), 16 deletions(-) create mode 100644 HeatUp/src/de/heatup/resources/images/little_green_guy_verysmall.png diff --git a/HeatUp/src/de/heatup/objects/ImageLoader.java b/HeatUp/src/de/heatup/objects/ImageLoader.java index b63576d..730b13d 100644 --- a/HeatUp/src/de/heatup/objects/ImageLoader.java +++ b/HeatUp/src/de/heatup/objects/ImageLoader.java @@ -27,16 +27,16 @@ public class ImageLoader { imageFileName="src/de/heatup/resources/images/25x25_wall_orange_2.png"; break; case 'u': - imageFileName="src/de/heatup/resources/images/little_green_guy_up.png"; + imageFileName="src/de/heatup/resources/images/little_green_guy_verysmall.png"; break; case 'd': - imageFileName="src/de/heatup/resources/images/little_green_guy.png"; + imageFileName="src/de/heatup/resources/images/little_green_guy_verysmall.png"; break; case 'l': - imageFileName="src/de/heatup/resources/images/little_green_guy_left.png"; + imageFileName="src/de/heatup/resources/images/little_green_guy_verysmall.png"; break; case 'r': - imageFileName="src/de/heatup/resources/images/little_green_guy_right.png"; + imageFileName="src/de/heatup/resources/images/little_green_guy_verysmall.png"; break; default: imageFileName="src/de/heatup/resources/images/dummy_image.png"; diff --git a/HeatUp/src/de/heatup/objects/StaticObject.java b/HeatUp/src/de/heatup/objects/StaticObject.java index af63843..496f76c 100644 --- a/HeatUp/src/de/heatup/objects/StaticObject.java +++ b/HeatUp/src/de/heatup/objects/StaticObject.java @@ -90,17 +90,7 @@ public class StaticObject extends JComponent { } -// public void setRescale(double rescaleFactorX, double rescaleFactorY) { -// this.rescaleFactorX = rescaleFactorX; -// this.rescaleFactorY = rescaleFactorY; -// this.doRescale = true; -// } - -// public void unsetRescale() { -// this.rescaleFactorX = 0.0; -// this.rescaleFactorY = 0.0; -// this.doRescale = false; -// } + // TODO: getter für höhe breite position public void setAutoBounds(int x, int y) { this.setBounds(x, y, this.bf1.getWidth(), this.bf1.getHeight()); diff --git a/HeatUp/src/de/heatup/objects/logic.java b/HeatUp/src/de/heatup/objects/logic.java index 66921cf..a9e2a04 100644 --- a/HeatUp/src/de/heatup/objects/logic.java +++ b/HeatUp/src/de/heatup/objects/logic.java @@ -84,7 +84,7 @@ public class logic { //System.out.println("x: " + dynObj.getX() + " y: " + dynObj.getY()); //System.out.println("h: " + dynObj.getHeight() + " w: " + dynObj.getWidth()); try { - Thread.sleep(10); + Thread.sleep(40); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/HeatUp/src/de/heatup/resources/images/little_green_guy_verysmall.png b/HeatUp/src/de/heatup/resources/images/little_green_guy_verysmall.png new file mode 100644 index 0000000000000000000000000000000000000000..19ad9fec7b059520a398010c860b79a6a1cda669 GIT binary patch literal 774 zcmV+h1Nr=kP)P000>X1^@s6#OZ}&00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-U|c^3pm^H{|x{D02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00M4FL_t(Y$L&-*YgADX{?23X z?%unb?2D|?L^sjGLT!9BR{jK$RH+oKq96z<1S=bhq!LuHv$N4Z5G;cvsS=`%ih;0U z!)_jTANO_68H)}0ShHDngM~OSaG04hAIyB;0RM`yBP;Hoix(*M5M=Il{^qZ$tTB&g zpM!2KL|1^Rv1C4xeiT2Gz8#+&F2zQj%+JnZ{H(QOhP?^v13tRyur{(AMt&qWV~wSz zWzjClY`h~+ib^t*n9lQ@Tf^quVSRYlSu#EoE83He)<|yEf5|1c>PR*N2uDsbV5VCi z-pk^$YZVlh%7CGEzz_;cWn|a3ds;mI8|;$36zyItf=3$Q2V~?7)oUjaH5K5Q;{gc@ zc1O$`O+)Vnz-D7G5XNaiyWtd*e3->LCu>>?CeZstY@u(EFfz0B#TB|5+!8~vq2Ke` zja;?ozg0xDeTy+z+4kj?+&b4RW9rdm<3=#`18+nyp?)2z=&Ac+y*!ZOQ?`B28c*Gn zMLWX;1G6QBBOyl}@Px?IUc`=4d{>bCjnV^aJbfp2!kG}cICw%r3|Vc@#Q}p11!g=U zE#@s(76(#1i*b;rA#!o>tOb@7FpUV%rYFVsL}68K!uT4A3ps!Yy6Pj`Y=8+4o)iO8 zn2`@nAVWV+3IHMingB-aH!;8Ovtks@1{?KdRq_6q*UboeKUk(gDC{|vuL&pLf-)oA z5~sN(pte0gQ=7t`UNoV3Ui-BA4jVB2QFsH!TdAztSBvMta9y{QA65PLFm#GSBPr5v zYA@I3x&idOcp~hWmih)yttv8)5$Go%Tq3X<{@ZcecdvUJ-35D&S^xk507*qoM6N<$ Eg4{w%1ONa4 literal 0 HcmV?d00001 From ea7652becfbc269b754edf48fd24ead89fb530fa Mon Sep 17 00:00:00 2001 From: andreas Date: Tue, 4 Nov 2014 12:21:54 +0100 Subject: [PATCH 5/5] Angepasste Grafik --- .../images/little_green_guy_verysmall.png | Bin 774 -> 1027 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/HeatUp/src/de/heatup/resources/images/little_green_guy_verysmall.png b/HeatUp/src/de/heatup/resources/images/little_green_guy_verysmall.png index 19ad9fec7b059520a398010c860b79a6a1cda669..fe6e98618420a89ff4af29776ecd95ef9fc17da2 100644 GIT binary patch delta 921 zcmV;K17`e&27?HYRR$9wJ%P`Zky|H!18Ye{K~zY`rBzL6TvZhQ&b{}&`N_;=bS7hK zr%D1AiPGBo1EQ`9ZmJtsf*TKVL3Mtf)PBJq| zCYkqh?>)ywA|_^LGHEWH&AI2DkMn)^JCAU{DSUjYn$_7^0A~i2{2u%Gqs=RSi>rfr z&@h0?r!Tw;V=jbGkIj&#dcPX+@-S^|U4?T$wJzVe*{{Y70w~Q)KM8H#(HZl3STB$& z27T+eYwLa`{=$1uX=eKV#?^)P|7-LhkmBpdz76Yz3)$z&}UBl{#! z2MMnui{saqQJHT5EW3CTROTBvc6}KpazlF@2m%1)1+*LB-#quvk1YIuod{d?B5X0U z?<%g1!6^lyBZ9b`LF4??4tKi-*9t4Ioq!}Bel-EQ_6U;zkWdfIkHFS{u-An}VaapP z)hHM&omhrg4;E=cu-MPu1AUS^UH(~8Hm(`H2`eO#2Y2oM=p?X>ElA|QmL&PCbLG#6 zBZEZ0wYr&e)tEe55KKwrirjPP6Mu7LFMH>IY|q|ZIJ71m-@aW&Wm6^oZDBbsey;$e z2~hONF@Luv?WKWU8wOH;eP!}Poi$%&pD$0Fr}9LBf-Z*8r4V{NMDT0@rjn^iCq18+ z+-C1)^VdUxR6jZWzN%*54XU}ff?8gwtOh9sl{edwGti|FWHj-HtwNCG&eU{oGPsY0 z4L2HHgfGo_IGH(BCU^k|&=c8RYh`9#oGgJ9fnx{XPT*QG#0m760TI+7W=1ljUr(W|*)xSi9=x7HEJKf($6JsBN&#^r zSy})Qxb1Ha0mASXT_?U4FLZ>r+)&56W(0}tHHN>q=I%B|eqHf=^Iqn~YDpsZ3`8bW z-e~hg1{^s^&p}du25(w$>aAG5?JduBzWL(^+yWm;lXeizRc!7Ch~^~nFWE*9uGtd+ zFqItbP<2N{K4=Hg^5gxqE-fVqCoKrTiHBQ_5{~^W$9~pz;)GKM1V}h(;nGraq*YIZ v2a@`-Pkm3=e-8kX_%{ILL3=&X@B9M-n#?uDuQ{mz00008NkvXXu0mjfXI-h< delta 666 zcmV;L0%iS!2!;lbRR#+<+wuPmky|H!0&Yn}K~zY`?NmE!R8bKA&SUTH-n*OZi>%Q^ zH_^gEZG1FV{sfU!sT8cDAP6Z0D;tZX5>&9Wv(Y~gEQ2Je5~7WYfv{o2ZXS0Z_jS%0 ziw*c#vsre7g*Y&9n3*#l%zWPf|BA6AEAF3*7bx`*WbStU=C7)(F^^}TgKjNPR*N2uDsbV5VCi-pk^$YZVlh z%7CGEzz_;cWn|a3ds;mI8|;#Qy%g^YUM2`ArzG9%m)r@1Ad zwmm>oo5G%6G@*H3`?UHF8!-J*cmu{;sjS*pi|4^`UAL4URsHucbc#YFDbjChFW2U} z0rb3hBJ7x!`UX#}Dl(4|=qDgtBCs0%+i}}>uX`Ka1$&NK0000907*qoM6N<$f;Ij! AT>t<8