From e9de6efeef5e58d7df6bd4a23e931dfd95c2debb Mon Sep 17 00:00:00 2001 From: "yeongtaik.byeon" Date: Mon, 20 Aug 2012 22:22:07 +0900 Subject: [PATCH] [Title]stop progress design [Type]update [Module]stop progress [Priority]normal [CQ#] [Redmine#]6019 [Problem] [Cause] [Solution] [TestCase] --- .../org/tizen/dynamicanalyzer/ColorResources.java | 14 +++- .../org/tizen/dynamicanalyzer/FontResources.java | 2 + .../org/tizen/dynamicanalyzer/ImageResources.java | 3 + .../dynamicanalyzer/nl/AnalyzerLabels.properties | 2 +- .../tizen/dynamicanalyzer/theme/DAThemeBlack.java | 7 ++ .../tizen/dynamicanalyzer/theme/DAThemeWhite.java | 7 ++ .../ui/widgets/StopProgressDialog.java | 90 +++++++++++++++------ .../theme/black/img/loading_icon.png | Bin 0 -> 3220 bytes .../theme/white/img/loading_icon.png | Bin 0 -> 3220 bytes 9 files changed, 99 insertions(+), 26 deletions(-) create mode 100644 org.tizen.dynamicanalyzer/theme/black/img/loading_icon.png create mode 100644 org.tizen.dynamicanalyzer/theme/white/img/loading_icon.png diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java index 0e48f6d..45d578d 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ColorResources.java @@ -351,7 +351,13 @@ public class ColorResources { public static Color SCALE_BG_COLOR_END = getColor("scale_bg_color_end"); //$NON-NLS-1$ public static Color SCALE_AREA_COLOR = getColor("scale_area_color"); //$NON-NLS-1$ public static Color SCALE_AREA_OUTLINE_COLOR = getColor("scale_area_outline_color"); //$NON-NLS-1$ - + + // stop progress dialog + public static Color STOP_PROGRESS_LINE1_COLOR = getColor("stop_progress_line1_color"); //$NON-NLS-1$ + public static Color STOP_PROGRESS_LINE2_COLOR = getColor("stop_progress_line2_color"); //$NON-NLS-1$ + public static Color STOP_PROGRESS_BACKGROUND_COLOR = getColor("stop_progress_background_color"); //$NON-NLS-1$ + public static Color STOP_PROGRESS_INFO_FONT_COLOR = getColor("stop_progress_info_font_color"); //$NON-NLS-1$ + public static void initColors() { // shell window background color WINDOW_BG_COLOR = getColor("window_bg_color"); //$NON-NLS-1$ @@ -524,6 +530,12 @@ public class ColorResources { // scale widget SCALE_OUTLINE_COLOR = getColor("scale_outline_color"); //$NON-NLS-1$ + + // stop progress dialog + STOP_PROGRESS_LINE1_COLOR = getColor("stop_progress_line1_color"); //$NON-NLS-1$ + STOP_PROGRESS_LINE2_COLOR = getColor("stop_progress_line2_color"); //$NON-NLS-1$ + STOP_PROGRESS_BACKGROUND_COLOR = getColor("stop_progress_background_color"); //$NON-NLS-1$ + STOP_PROGRESS_INFO_FONT_COLOR = getColor("stop_progress_info_font_color"); //$NON-NLS-1$ } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/FontResources.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/FontResources.java index b873347..8aafbed 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/FontResources.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/FontResources.java @@ -97,6 +97,8 @@ public class FontResources { public static final Font ABOUT_TEXT = getFont("about_text", resizeSystemFont(9));//$NON-NLS-1$ public static final Font DIALOG_BUTTON_FONT = getFont("dialog_button_font", resizeSystemFont(9));//$NON-NLS-1$ + //* stop progress dialog + public static final Font STOP_PROGRESS_FONT = getFont("stop_progress_font", resizeSystemFont(8));//$NON-NLS-1$ //* not support public static final Font TOOLTIP = getFont("tooltip", resizeSystemFont(10));//$NON-NLS-1$ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java index 3e4014e..2d38bb7 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ImageResources.java @@ -270,6 +270,9 @@ public class ImageResources { public static final Image SCALE_CONTROL_MINUS = getPngImage("scale_control_minus"); //$NON-NLS-1$ public static final Image SCALE_CONTROL_PLUS = getPngImage("scale_control_plus"); //$NON-NLS-1$ public static final Image SCALE_CONTROL_THUMB = getPngImage("scale_control_thumb"); //$NON-NLS-1$ + + /*** stop progress dialog ***/ + public static final Image STOP_PROGRESS_LOADING = getPngImage("loading_icon"); //$NON-NLS-1$ private static Image getImage(String pluginId, String folderName, String imageName, String extension) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties index c036358..920380d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/nl/AnalyzerLabels.properties @@ -80,7 +80,7 @@ OPEN_TRACE_DLG_TRACE_FILE_NAME=Trace file name PATH_WARNING=Please install the Tizen SDK RE_TRACE_FORM_IDE=do you want Trace Application from Tizen IDE ? -STOP_PROCESS_DLG_PLEASE_WAIT=please wait... +STOP_PROCESS_DLG_PLEASE_WAIT=Please wait... STOP_PROCESS_DLG_SUMMARIZING_DATA=Summarizing collected data STOP_PROCESS_DLG_DEVICE_DISCONNECTED=Device disconnected STOP_PROCESS_DLG_ERROR_1=error occurred(1) diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java index 003fe44..7f7ec72 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeBlack.java @@ -342,6 +342,12 @@ public class DAThemeBlack extends DATheme { setColor("scale_bg_color_end", new RGB(99, 99, 99)); //$NON-NLS-1$ setColor("scale_area_color", new RGB(46, 46, 47)); //$NON-NLS-1$ setColor("scale_area_outline_color", new RGB(208, 208, 208)); //$NON-NLS-1$ + + /*** stop progress dialog ***/ + setColor("stop_progress_line1_color", new RGB(2, 171, 208)); //$NON-NLS-1$ + setColor("stop_progress_line2_color", new RGB(86, 86, 86)); //$NON-NLS-1$ + setColor("stop_progress_background_color", new RGB(66, 66, 68)); //$NON-NLS-1$ + setColor("stop_progress_info_font_color", new RGB(185, 185, 185)); //$NON-NLS-1$ } public Color getColor(String colorName, RGB rgb) { @@ -361,3 +367,4 @@ public class DAThemeBlack extends DATheme { } } + diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java index bd9ca00..00cdd13 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/theme/DAThemeWhite.java @@ -348,6 +348,12 @@ public class DAThemeWhite extends DATheme { setColor("scale_bg_color_end", new RGB(186, 186, 186)); //$NON-NLS-1$ setColor("scale_area_color", new RGB(103, 103, 103)); //$NON-NLS-1$ setColor("scale_area_outline_color", new RGB(250, 250, 250)); //$NON-NLS-1$ + + /*** stop progress dialog ***/ + setColor("stop_progress_line1_color", new RGB(2, 171, 208)); //$NON-NLS-1$ + setColor("stop_progress_line2_color", new RGB(86, 86, 86)); //$NON-NLS-1$ + setColor("stop_progress_background_color", new RGB(230, 230, 230)); //$NON-NLS-1$ + setColor("stop_progress_info_font_color", new RGB(70, 70, 70)); //$NON-NLS-1$ } public Color getColor(String colorName, RGB rgb) { @@ -367,3 +373,4 @@ public class DAThemeWhite extends DATheme { } } + diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/StopProgressDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/StopProgressDialog.java index 5b63b15..9e6a66f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/StopProgressDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/StopProgressDialog.java @@ -23,7 +23,11 @@ import java.util.Timer; import java.util.TimerTask; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.layout.FormLayout; @@ -34,6 +38,7 @@ import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.Shell; import org.tizen.dynamicanalyzer.ColorResources; import org.tizen.dynamicanalyzer.FontResources; +import org.tizen.dynamicanalyzer.ImageResources; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; @@ -42,6 +47,7 @@ public class StopProgressDialog { private Shell shell = null; private long excuteTime = 10000; // max process time(default 10000 // MiliSeconds) + private Label loadingImage = null; private Label processMessage = null; private Label processInfo = null; private ProgressBar progressbar = null; @@ -51,6 +57,10 @@ public class StopProgressDialog { private static final int DEFAULT_HEIGHT = 100; private static final int DEFAULT_MAXIMUM = 100; private static final int TIMER_PERIOD = 1000; + private static final int DEFAULT_LINE_WIDTH = 1; + + private final Image iconImage = ImageResources.STOP_PROGRESS_LOADING; + Timer timer = null; long startTime = 0; long time; @@ -101,69 +111,101 @@ public class StopProgressDialog { } public void setProcessSelection(int value) { - if (null != progressbar) - progressbar.setSelection(value); + if (null == progressbar){ + return; + } + if(value < progressbar.getSelection()){ + return; + } + progressbar.setSelection(value); } protected void createContents() { setDefaultSize(parent.getBounds()); - FormLayout dialogLayout = new FormLayout(); - shell.setLayout(dialogLayout); - shell.setBackground(ColorResources.DIALOG_BG_UPPER); - + FillLayout fillLayout = new FillLayout(); + fillLayout.marginHeight = DEFAULT_LINE_WIDTH*2; + fillLayout.marginWidth = DEFAULT_LINE_WIDTH*2; + + shell.setLayout(fillLayout); + shell.addPaintListener(new PaintListener() { + + @Override + public void paintControl(PaintEvent e) { + e.gc.setForeground(ColorResources.STOP_PROGRESS_LINE2_COLOR); + e.gc.setLineWidth(DEFAULT_LINE_WIDTH); + e.gc.drawRectangle(e.x, e.y, e.width, e.height); + e.gc.setForeground(ColorResources.STOP_PROGRESS_LINE1_COLOR); + e.gc.drawRectangle(e.x+DEFAULT_LINE_WIDTH, e.y+DEFAULT_LINE_WIDTH, e.width - (DEFAULT_LINE_WIDTH*2), e.height - (DEFAULT_LINE_WIDTH*2)); + } + }); + Composite base = new Composite(shell, SWT.NONE); base.setLayout(new FormLayout()); - base.setBackground(ColorResources.DIALOG_BG_UPPER); + base.setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); FormData baseData = new FormData(); - baseData.top = new FormAttachment(0, 1); - baseData.left = new FormAttachment(0, 1); - baseData.right = new FormAttachment(100, -1); - baseData.bottom = new FormAttachment(100, -1); + baseData.top = new FormAttachment(0, 0); + baseData.left = new FormAttachment(0, 0); + baseData.right = new FormAttachment(100, 0); + baseData.bottom = new FormAttachment(100, 0); base.setLayoutData(baseData); // base.setVisible(true); + // Loading image + loadingImage = new Label(base, SWT.NONE); + loadingImage.setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); + loadingImage.setImage(iconImage); + // Process Message processMessage = new Label(base, SWT.NONE); processMessage.setText(message); - processMessage.setBackground(ColorResources.DIALOG_BG_UPPER); + processMessage.setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); processMessage.setAlignment(SWT.LEFT); processMessage.setForeground(ColorResources.DEFAULT_FONT_COLOR); - processMessage.setFont(FontResources.ABOUT_TEXT); + processMessage.setFont(FontResources.STOP_PROGRESS_FONT); // Process Infomation processInfo = new Label(base, SWT.NONE); processInfo.setText(infomation); - processInfo.setBackground(ColorResources.DIALOG_BG_UPPER); + processInfo.setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); processInfo.setAlignment(SWT.LEFT); - processInfo.setForeground(ColorResources.DEFAULT_FONT_COLOR); - processInfo.setFont(FontResources.ABOUT_TEXT); + processInfo.setForeground(ColorResources.STOP_PROGRESS_INFO_FONT_COLOR); + processInfo.setFont(FontResources.STOP_PROGRESS_FONT); // Process Bar progressbar = new ProgressBar(base, SWT.SMOOTH); progressbar.setMaximum(DEFAULT_MAXIMUM); - // Process Message + + // loading icon FormData formData = new FormData(); formData.left = new FormAttachment(0, 10); - formData.top = new FormAttachment(0, 15); - formData.width = 280; + formData.top = new FormAttachment(0, 9); + formData.width = 24; + formData.height = 24; + loadingImage.setLayoutData(formData); + + // Process Message + formData = new FormData(); + formData.left = new FormAttachment(loadingImage, 5); + formData.top = new FormAttachment(0, 16); + formData.width = 247; formData.height = 22; processMessage.setLayoutData(formData); // Process Bar formData = new FormData(); formData.left = new FormAttachment(0, 10); - formData.top = new FormAttachment(processMessage, 10); - formData.width = 280; - formData.height = 20; + formData.top = new FormAttachment(loadingImage, 10); + formData.width = 276; + formData.height = 22; progressbar.setLayoutData(formData); // Process Infomation formData = new FormData(); formData.left = new FormAttachment(0, 10); - formData.top = new FormAttachment(progressbar, 10); - formData.width = 280; + formData.top = new FormAttachment(progressbar, 9); + formData.width = 276; formData.height = 22; processInfo.setLayoutData(formData); } diff --git a/org.tizen.dynamicanalyzer/theme/black/img/loading_icon.png b/org.tizen.dynamicanalyzer/theme/black/img/loading_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf2d7896cd567f2567affd94d6912de3e60bdf5 GIT binary patch literal 3220 zcmV;F3~Td=P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005MNklPE0j)EE@<68VtjL1%qIakrEVQ zb2Cjgf!{eK{RsU8>&$hzGD-^x`zKBA+I#`0Lvx5xe2JitG^3^p^IN5>iIHn{MOVfWcgolREYI@-pajh2QklMQ^-%!xkA2c zZvhu-4H9*p5xe$Aaq(`b4)*H&2>h|%R4c)+19vh}bv{&do(Y?3Wq+UitBN8#wmYU$ zu+QnBpBT;6^U?rbr6_#hW?i>MTBE(FYI=42W8eH?G>++f)@q8R zwP_LbcFvZ!htW9Fxg~e~svH%ndPb=Zri1<*xRgpLOb2~GsZZ8*+m{Vl0t)N8{ibqh zk%H2$Oc}veapKQf&D2iUv&wDOY9`$W2cez&uR`a{_!$6uRi5Y(1=pAW0000KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005MNklPE0j)EE@<68VtjL1%qIakrEVQ zb2Cjgf!{eK{RsU8>&$hzGD-^x`zKBA+I#`0Lvx5xe2JitG^3^p^IN5>iIHn{MOVfWcgolREYI@-pajh2QklMQ^-%!xkA2c zZvhu-4H9*p5xe$Aaq(`b4)*H&2>h|%R4c)+19vh}bv{&do(Y?3Wq+UitBN8#wmYU$ zu+QnBpBT;6^U?rbr6_#hW?i>MTBE(FYI=42W8eH?G>++f)@q8R zwP_LbcFvZ!htW9Fxg~e~svH%ndPb=Zri1<*xRgpLOb2~GsZZ8*+m{Vl0t)N8{ibqh zk%H2$Oc}veapKQf&D2iUv&wDOY9`$W2cez&uR`a{_!$6uRi5Y(1=pAW0000