asterisk-java-cvs Mailing List for Asterisk-Java Library (Page 82)
Brought to you by:
srt
You can subscribe to this list here.
2005 |
Jan
(4) |
Feb
(75) |
Mar
(211) |
Apr
(70) |
May
(12) |
Jun
(7) |
Jul
(96) |
Aug
(90) |
Sep
(11) |
Oct
(42) |
Nov
(45) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(20) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(32) |
Aug
|
Sep
(4) |
Oct
(2) |
Nov
(10) |
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
(3) |
Aug
(73) |
Sep
(13) |
Oct
(4) |
Nov
(1) |
Dec
(7) |
2009 |
Jan
(1) |
Feb
(2) |
Mar
(48) |
Apr
(21) |
May
(14) |
Jun
(11) |
Jul
(9) |
Aug
(2) |
Sep
(11) |
Oct
(14) |
Nov
(6) |
Dec
(4) |
2010 |
Jan
(3) |
Feb
(2) |
Mar
|
Apr
|
May
(3) |
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
(9) |
Nov
|
Dec
(12) |
2011 |
Jan
(1) |
Feb
(5) |
Mar
(7) |
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
(10) |
Sep
|
Oct
(5) |
Nov
|
Dec
|
2012 |
Jan
(3) |
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
(2) |
Dec
(2) |
2013 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
(2) |
Nov
|
Dec
(1) |
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(5) |
2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
(25) |
May
(10) |
Jun
(4) |
Jul
(7) |
Aug
(4) |
Sep
(1) |
Oct
(1) |
Nov
(3) |
Dec
(1) |
2016 |
Jan
|
Feb
(42) |
Mar
(6) |
Apr
(15) |
May
(3) |
Jun
(1) |
Jul
(11) |
Aug
|
Sep
|
Oct
(17) |
Nov
(2) |
Dec
|
2017 |
Jan
|
Feb
(4) |
Mar
(1) |
Apr
(3) |
May
(2) |
Jun
(3) |
Jul
(7) |
Aug
(11) |
Sep
(5) |
Oct
(7) |
Nov
(4) |
Dec
(4) |
2018 |
Jan
(11) |
Feb
(11) |
Mar
(3) |
Apr
|
May
(9) |
Jun
(6) |
Jul
(17) |
Aug
(9) |
Sep
(2) |
Oct
(4) |
Nov
(3) |
Dec
(3) |
2019 |
Jan
(13) |
Feb
(1) |
Mar
(1) |
Apr
|
May
(5) |
Jun
|
Jul
(1) |
Aug
(6) |
Sep
|
Oct
|
Nov
(3) |
Dec
|
2020 |
Jan
(2) |
Feb
(72) |
Mar
(8) |
Apr
(11) |
May
(12) |
Jun
(3) |
Jul
(12) |
Aug
(3) |
Sep
(5) |
Oct
(4) |
Nov
|
Dec
(9) |
2021 |
Jan
|
Feb
(31) |
Mar
(6) |
Apr
(3) |
May
|
Jun
(2) |
Jul
|
Aug
(2) |
Sep
|
Oct
(9) |
Nov
|
Dec
(32) |
2022 |
Jan
(5) |
Feb
(7) |
Mar
(2) |
Apr
(3) |
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
(2) |
Oct
(111) |
Nov
(105) |
Dec
(26) |
2023 |
Jan
(25) |
Feb
(6) |
Mar
(10) |
Apr
(54) |
May
(41) |
Jun
(24) |
Jul
(6) |
Aug
(11) |
Sep
(9) |
Oct
(8) |
Nov
(55) |
Dec
(34) |
2024 |
Jan
(6) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(89) |
Sep
(48) |
Oct
(31) |
Nov
(9) |
Dec
(19) |
2025 |
Jan
(12) |
Feb
(18) |
Mar
(9) |
Apr
(7) |
May
|
Jun
(7) |
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Stefan R. <sr...@us...> - 2005-07-15 11:50:53
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/action In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10442/src/java/net/sf/asterisk/manager/action Modified Files: QueueStatusAction.java Log Message: Added QueueStatusCompleteEvent Index: QueueStatusAction.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/action/QueueStatusAction.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- QueueStatusAction.java 23 Feb 2005 22:50:58 -0000 1.2 +++ QueueStatusAction.java 15 Jul 2005 11:50:45 -0000 1.3 @@ -1,51 +1,52 @@ -/* - * Copyright 2004-2005 Stefan Reuter - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package net.sf.asterisk.manager.action; - -/** - * The QueueStatusAction requests the state of all defined queues their members (agents) and entries - * (callers).<br> - * - * For each queue a QueueParamsEvent is generated, followed by a QueueMemberEvent for each member of - * that queue and a QueueEntryEvent for each entry in the queue.<br> - * - * Note: Currently asterisk does not send a special event to denote the end of the generated dump.<br> - * - * This action is implemented in <code>apps/app_queue.c</code> - * - * @see net.sf.asterisk.manager.event.QueueParamsEvent - * @see net.sf.asterisk.manager.event.QueueMemberEvent - * @see net.sf.asterisk.manager.event.QueueEntryEvent - * - * @author srt - * @version $Id$ - */ -public class QueueStatusAction extends ManagerAction -{ - /** - * Serializable version identifier - */ - private static final long serialVersionUID = -8599401015517232869L; - - /** - * Returns the name of this action, i.e. "QueueStatus". - */ - public String getAction() - { - return "QueueStatus"; - } -} +/* + * Copyright 2004-2005 Stefan Reuter + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package net.sf.asterisk.manager.action; + +/** + * The QueueStatusAction requests the state of all defined queues their members (agents) and entries + * (callers).<br> + * + * For each queue a QueueParamsEvent is generated, followed by a QueueMemberEvent for each member of + * that queue and a QueueEntryEvent for each entry in the queue.<br> + * + * Since Asterisk 1.2 a QueueStatusCompleteEvent is sent to denote the end of the generated dump.<br> + * + * This action is implemented in <code>apps/app_queue.c</code> + * + * @see net.sf.asterisk.manager.event.QueueParamsEvent + * @see net.sf.asterisk.manager.event.QueueMemberEvent + * @see net.sf.asterisk.manager.event.QueueEntryEvent + * @see net.sf.asterisk.manager.event.QueueStatusCompleteEvent + * + * @author srt + * @version $Id$ + */ +public class QueueStatusAction extends ManagerAction +{ + /** + * Serializable version identifier + */ + private static final long serialVersionUID = -8599401015517232869L; + + /** + * Returns the name of this action, i.e. "QueueStatus". + */ + public String getAction() + { + return "QueueStatus"; + } +} |
From: Stefan R. <sr...@us...> - 2005-07-15 11:44:32
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/event In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8947/src/java/net/sf/asterisk/manager/event Modified Files: QueueMemberEvent.java QueueMemberStatusEvent.java QueueParamsEvent.java Log Message: Added attributes status and paused to QueueMemberEvent and weight to QueueParamsEvent Index: QueueMemberEvent.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/event/QueueMemberEvent.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- QueueMemberEvent.java 23 Feb 2005 22:50:58 -0000 1.2 +++ QueueMemberEvent.java 15 Jul 2005 11:44:23 -0000 1.3 @@ -38,6 +38,8 @@ public class QueueMemberEvent extends Re private Integer penalty; private Integer callsTaken; private Long lastCall; + private Integer status; + private Boolean paused; /** * @param source @@ -133,8 +135,8 @@ public class QueueMemberEvent extends Re } /** - * Returns the time (in seconds since 01/01/1970) the last successful call answered by this - * member was hungup. + * Returns the time (in seconds since 01/01/1970) the last + * successful call answered by this member was hungup. */ public Long getLastCall() { @@ -149,4 +151,67 @@ public class QueueMemberEvent extends Re { this.lastCall = lastCall; } + + /** + * Returns the status of this queue member.<br> + * Available since Asterisk 1.2<br> + * Valid status codes are: + * <dl> + * <dt>AST_DEVICE_UNKNOWN (0)</dt> + * <dd>Queue member is available</dd> + * <dt>AST_DEVICE_NOT_INUSE (1)</dt> + * <dd>?</dd> + * <dt>AST_DEVICE_INUSE (2)</dt> + * <dd>?</dd> + * <dt>AST_DEVICE_BUSY (3)</dt> + * <dd>?</dd> + * <dt>AST_DEVICE_INVALID (4)</dt> + * <dd>?</dd> + * <dt>AST_DEVICE_UNAVAILABLE (5)</dt> + * <dd>?</dd> + * </dl> + * + * @return the status of this queue member or <code>null</code> + * if this attribute is not supported by your version of + * Asterisk. + * @since 0.2 + */ + public Integer getStatus() + { + return status; + } + + /** + * Sets the status of this queue member. + * + * @param the status of this queue member + * @since 0.2 + */ + public void setStatus(Integer status) + { + this.status = status; + } + + /** + * Is this queue member paused (not accepting calls)?<br> + * Available since Asterisk 1.2. + * + * @return <code>Boolean.TRUE</code> if this member has been paused, + * <code>Boolean.FALSE</code> if not or <code>null</code> + * if pausing is not supported by your version of Asterisk. + * @since 0.2 + */ + public Boolean getPaused() + { + return paused; + } + + /** + * Sets if this member has been paused. + * @since 0.2 + */ + public void setPaused(Boolean paused) + { + this.paused = paused; + } } Index: QueueMemberStatusEvent.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/event/QueueMemberStatusEvent.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- QueueMemberStatusEvent.java 3 Mar 2005 22:04:16 -0000 1.3 +++ QueueMemberStatusEvent.java 15 Jul 2005 11:44:23 -0000 1.4 @@ -28,8 +28,6 @@ public class QueueMemberStatusEvent exte * Serializable version identifier */ private static final long serialVersionUID = -2293926744791895763L; - private String status; - private Boolean paused; /** * @param source @@ -38,36 +36,4 @@ public class QueueMemberStatusEvent exte { super(source); } - - /** - * Returns the status. - */ - public String getStatus() - { - return status; - } - - /** - * Sets the status. - */ - public void setStatus(String status) - { - this.status = status; - } - - /** - * Returns whether or not the call is paused. - */ - public Boolean getPaused() - { - return paused; - } - - /** - * Sets whether or not the call is paused. - */ - public void setPaused(Boolean paused) - { - this.paused = paused; - } } Index: QueueParamsEvent.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/event/QueueParamsEvent.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- QueueParamsEvent.java 23 Feb 2005 22:50:58 -0000 1.2 +++ QueueParamsEvent.java 15 Jul 2005 11:44:23 -0000 1.3 @@ -40,6 +40,7 @@ public class QueueParamsEvent extends Re private Integer abandoned; private Integer serviceLevel; private Double serviceLevelPerf; + private Integer weight; /** * @param source @@ -180,4 +181,32 @@ public class QueueParamsEvent extends Re { this.serviceLevelPerf = serviceLevelPerf; } + + /** + * Returns the weight of this queue.<br> + * A queues can be assigned a 'weight' to ensure calls waiting in a + * higher priority queue will deliver its calls first. Only delays + * the lower weight queue's call if the member is also in the + * higher weight queue.<br> + * Available since Asterisk 1.2 + * + * @return the weight of this queue or <code>null</code> if not + * supported by your version of Asterisk + * @since 0.2 + */ + public Integer getWeight() + { + return weight; + } + + /** + * Sets the weight of this queue. + * + * @param weight the weight of this queue + * @since 0.2 + */ + public void setWeight(Integer weight) + { + this.weight = weight; + } } |
From: Stefan R. <sr...@us...> - 2005-07-15 08:47:17
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8044/xdocs Modified Files: design.xml Log Message: Fixed typos (thanks to Tobias Wolf for providing a patch) Index: design.xml =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/design.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- design.xml 11 Jul 2005 17:58:10 -0000 1.2 +++ design.xml 15 Jul 2005 08:47:09 -0000 1.3 @@ -41,8 +41,8 @@ Asterisk starts. Your application is then tightly coupled to Asterisk but has access to any internal structure.</p> - <p>The second approach is to write AGI scripts. An AGI - script is to Asterisk what a CGI script is to an + <p>The second approach is to write AGI (Asterisk Gateway Interface) + scripts. An AGI script is to Asterisk what a CGI script is to an HTTP server. You can think of AGI as a means to make your dialplan more dynamic by handing control to an external process. As with CGI in its early @@ -59,8 +59,8 @@ <p>The third approach is to use Asterisk's Manager API. The Manager API allows an external application to query and change Asterisk's state by sending actions - and listening to responses and events. Comminication - occors via TCP/IP. Compared to AGI the Manager API + and listening to responses and events. Communication + occurs via TCP/IP. Compared to AGI the Manager API works without the need to operate on a concrete call (in Asterisk parlance a channel).</p> <p>The last approach is to talk to Asterisk via IAX @@ -70,9 +70,9 @@ In contrast to AGI and the Manager API IAX allows passing media streams, for example sending and receiving audio.</p> - <p>Regarding the first approach a JNI based solution - (JAsterisk) is available that spawns a Java Virtual - Machine from within Asterisk and exposes Asterisk's + <p>Regarding the first approach a JNI (Java Native Interface) + based solution (JAsterisk) is available that spawns a + Java Virtual Machine from within Asterisk and exposes Asterisk's internal API. Development of JAsterisk seems to be discontinued. Due to the involved tight coupling this approach is questionable anyway.</p> @@ -95,7 +95,7 @@ <p>Flexible means you should be able to use it in a variety of different environments, like standalone Java GUI applications running on a user's desktop, servlets running - in a JEE servlet container, Java webstart applications, + in a J2EE servlet container, Java webstart applications, or maybe even applets if anybody is still using them. Being flexible also means you should have access to any feature exposed by the corresponding Asterisk interface @@ -104,7 +104,7 @@ extend Asterisk-Java to support additional features. This extensibility is important when you choose to run a modified version of Asterisk that supports additional - actions and events through the Manager API or addtional + actions and events through the Manager API or additional commands via AGI.</p> <p>Robust means you can focus on your own application and rest asured that Asterisk-Java "just |
From: Stefan R. <sr...@us...> - 2005-07-14 19:27:07
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/fastagi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22559/src/java/net/sf/asterisk/fastagi Modified Files: AbstractAGIScript.java Log Message: added getData(...) methods Index: AbstractAGIScript.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/fastagi/AbstractAGIScript.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -p -r1.11 -r1.12 --- AbstractAGIScript.java 1 Jul 2005 16:36:30 -0000 1.11 +++ AbstractAGIScript.java 14 Jul 2005 19:26:57 -0000 1.12 @@ -19,6 +19,7 @@ package net.sf.asterisk.fastagi; import net.sf.asterisk.fastagi.command.AnswerCommand; import net.sf.asterisk.fastagi.command.ChannelStatusCommand; import net.sf.asterisk.fastagi.command.ExecCommand; +import net.sf.asterisk.fastagi.command.GetDataCommand; import net.sf.asterisk.fastagi.command.GetVariableCommand; import net.sf.asterisk.fastagi.command.HangupCommand; import net.sf.asterisk.fastagi.command.SayAlphaCommand; @@ -142,6 +143,64 @@ public abstract class AbstractAGIScript } /** + * Plays the given file and waits for the user to enter DTMF digits until he + * presses '#'. + * + * @param file the name of the file to play + * @return a String containing the DTMF the user entered + */ + protected String getData(AGIChannel channel, String file) + throws AGIException + { + AGIReply reply; + + reply = channel.sendCommand(new GetDataCommand(file)); + return reply.getResult(); + } + + /** + * Plays the given file and waits for the user to enter DTMF digits until he + * presses '#' or the timeout occurs. + * + * @param file the name of the file to play + * @param timeout the timeout to wait for user input.<br> + * 0 means standard timeout value, -1 means "ludicrous time" + * (essentially never times out). + * @return a String containing the DTMF the user entered + */ + protected String getData(AGIChannel channel, String file, int timeout) + throws AGIException + { + AGIReply reply; + + reply = channel.sendCommand(new GetDataCommand(file, timeout)); + return reply.getResult(); + } + + /** + * Plays the given file and waits for the user to enter DTMF digits until he + * presses '#' or the timeout occurs or the maximum number of digits has + * been entered. + * + * @param file the name of the file to play + * @param timeout the timeout to wait for user input.<br> + * 0 means standard timeout value, -1 means "ludicrous time" + * (essentially never times out). + * @param maxDigits the maximum number of digits the user is allowed to + * enter + * @return a String containing the DTMF the user entered + */ + protected String getData(AGIChannel channel, String file, int timeout, + int maxDigits) throws AGIException + { + AGIReply reply; + + reply = channel + .sendCommand(new GetDataCommand(file, timeout, maxDigits)); + return reply.getResult(); + } + + /** * Executes the given command. * * @param application the name of the application to execute, for example |
From: Stefan R. <sr...@us...> - 2005-07-14 12:54:54
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/fastagi In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28604/src/java/net/sf/asterisk/fastagi Modified Files: AGIConnectionHandler.java Log Message: Now logging full stack trace when an AGIException is is caught while running an AGIScript Index: AGIConnectionHandler.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/fastagi/AGIConnectionHandler.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -p -r1.10 -r1.11 --- AGIConnectionHandler.java 31 Mar 2005 22:29:52 -0000 1.10 +++ AGIConnectionHandler.java 14 Jul 2005 12:54:41 -0000 1.11 @@ -114,8 +114,7 @@ public class AGIConnectionHandler implem } catch (AGIException e) { - logger.error("AGIException while handling request: " - + e.getMessage()); + logger.error("AGIException while handling request", e); } catch (Exception e) { |
From: Stefan R. <sr...@us...> - 2005-07-13 10:26:19
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3607/src/java/net/sf/asterisk/util Modified Files: ThreadPool.java Log Message: Removed superfluous imports Index: ThreadPool.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/util/ThreadPool.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- ThreadPool.java 12 Jul 2005 09:38:19 -0000 1.4 +++ ThreadPool.java 13 Jul 2005 10:26:08 -0000 1.5 @@ -19,9 +19,6 @@ package net.sf.asterisk.util; import java.util.LinkedList; import java.util.List; -import net.sf.asterisk.util.Log; -import net.sf.asterisk.util.LogFactory; - public class ThreadPool { private final Log logger = LogFactory.getLog(getClass()); |
From: Stefan R. <sr...@us...> - 2005-07-12 09:38:29
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21588/src/java/net/sf/asterisk/util Modified Files: ThreadPool.java Log Message: Added "this" prefix to references to attributes in constructor Index: ThreadPool.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/util/ThreadPool.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- ThreadPool.java 31 Mar 2005 22:29:52 -0000 1.3 +++ ThreadPool.java 12 Jul 2005 09:38:19 -0000 1.4 @@ -46,17 +46,17 @@ public class ThreadPool jobs = new LinkedList(); running = true; - group = new PoolThreadGroup(name); + group = new PoolThreadGroup(this.name); // create and start the threads - for (int i = 0; i < numThreads; i++) + for (int i = 0; i < this.numThreads; i++) { TaskThread thread; - thread = new TaskThread(group, name + "-TaskThread-" + i); + thread = new TaskThread(group, this.name + "-TaskThread-" + i); thread.start(); } - logger.debug("ThreadPool created with " + numThreads + " threads."); + logger.debug("ThreadPool created with " + this.numThreads + " threads."); } /** |
From: Stefan R. <sr...@us...> - 2005-07-12 08:28:14
|
Update of /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16551/src/test/net/sf/asterisk/manager/impl Modified Files: ManagerReaderImplTest.java Log Message: Removed several unused local variables Index: ManagerReaderImplTest.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager/impl/ManagerReaderImplTest.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- ManagerReaderImplTest.java 23 Apr 2005 22:57:25 -0000 1.4 +++ ManagerReaderImplTest.java 12 Jul 2005 08:28:06 -0000 1.5 @@ -81,9 +81,6 @@ public class ManagerReaderImplTest exten public void testRunReceivingProtocolIdentifier() throws Exception { - ConnectEvent connectEvent; - DisconnectEvent disconnectEvent; - socketConnectionFacade.readLine(); socketConnectionFacadeMC.setReturnValue("Asterisk Call Manager/1.0"); socketConnectionFacade.readLine(); @@ -122,9 +119,6 @@ public class ManagerReaderImplTest exten public void testRunReceivingEvent() throws Exception { - DisconnectEvent disconnectEvent; - StatusCompleteEvent statusCompleteEvent; - socketConnectionFacade.readLine(); socketConnectionFacadeMC.setReturnValue("Event: StatusComplete"); socketConnectionFacade.readLine(); @@ -153,9 +147,6 @@ public class ManagerReaderImplTest exten public void testRunReceivingUserEvent() throws Exception { - DisconnectEvent disconnectEvent; - MyUserEvent myUserEvent; - managerReader.registerEventClass(MyUserEvent.class); socketConnectionFacade.readLine(); @@ -185,9 +176,6 @@ public class ManagerReaderImplTest exten public void testRunReceivingResponse() throws Exception { - DisconnectEvent disconnectEvent; - ManagerResponse response; - socketConnectionFacade.readLine(); socketConnectionFacadeMC.setReturnValue("Response: Success"); socketConnectionFacade.readLine(); @@ -240,8 +228,6 @@ public class ManagerReaderImplTest exten public void testRunReceivingCommandResponse() throws Exception { - DisconnectEvent disconnectEvent; - CommandResponse response; List result = new ArrayList(); socketConnectionFacade.readLine(); @@ -299,8 +285,6 @@ public class ManagerReaderImplTest exten public void testRunCatchingIOException() throws Exception { - DisconnectEvent disconnectEvent; - socketConnectionFacade.readLine(); socketConnectionFacadeMC.setThrowable(new IOException( "Something happened to the network...")); |
From: Stefan R. <sr...@us...> - 2005-07-12 08:26:15
|
Update of /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15448/src/test/net/sf/asterisk/manager Modified Files: ManagerWriterMock.java Log Message: Removed unused attribute socket Index: ManagerWriterMock.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager/ManagerWriterMock.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- ManagerWriterMock.java 9 Mar 2005 15:50:28 -0000 1.4 +++ ManagerWriterMock.java 12 Jul 2005 08:26:06 -0000 1.5 @@ -34,7 +34,6 @@ public class ManagerWriterMock implement private Dispatcher dispatcher; private AsteriskServer asteriskServer; - private SocketConnectionFacade socket; private String expectedKey; private String expectedUsername; @@ -82,8 +81,6 @@ public class ManagerWriterMock implement public void setSocket(SocketConnectionFacade socket) { - this.socket = socket; - if (sendConnectEvent) { ConnectEvent connectEvent; |
From: Stefan R. <sr...@us...> - 2005-07-12 08:24:35
|
Update of /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14654/src/test/net/sf/asterisk/manager Modified Files: DefaultManagerConnectionTest.java Log Message: Removed unused local variable Index: DefaultManagerConnectionTest.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager/DefaultManagerConnectionTest.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- DefaultManagerConnectionTest.java 7 Jul 2005 00:09:27 -0000 1.9 +++ DefaultManagerConnectionTest.java 12 Jul 2005 08:24:22 -0000 1.10 @@ -158,8 +158,6 @@ public class DefaultManagerConnectionTes public void testLoginIncorrectKey() throws Exception { - ConnectEvent connectEvent; - mockSocket.close(); socketMC.replay(); |
From: Stefan R. <sr...@us...> - 2005-07-12 08:21:38
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/fastagi/impl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13503/src/java/net/sf/asterisk/fastagi/impl Modified Files: AGIChannelImpl.java Log Message: Removed unused attribute socket Index: AGIChannelImpl.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/fastagi/impl/AGIChannelImpl.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -p -r1.3 -r1.4 --- AGIChannelImpl.java 11 Mar 2005 19:43:48 -0000 1.3 +++ AGIChannelImpl.java 12 Jul 2005 08:21:27 -0000 1.4 @@ -36,11 +36,9 @@ public class AGIChannelImpl implements A { private AGIWriter agiWriter; private AGIReader agiReader; - private SocketConnectionFacade socket; public AGIChannelImpl(SocketConnectionFacade socket) { - this.socket = socket; this.agiWriter = new AGIWriterImpl(socket); this.agiReader = new AGIReaderImpl(socket); } |
From: Stefan R. <sr...@us...> - 2005-07-11 18:47:54
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs/images In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13463/xdocs/images Modified Files: agi-thumb.png manager-thumb.png manager.png agi.png Log Message: Updated UML diagrams Index: agi-thumb.png =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/images/agi-thumb.png,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 Binary files /tmp/cvsKWgsgk and /tmp/cvsTAAWXu differ Index: manager-thumb.png =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/images/manager-thumb.png,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 Binary files /tmp/cvsh5GZYS and /tmp/cvsscYl93 differ Index: manager.png =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/images/manager.png,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 Binary files /tmp/cvsVb0Hp0 and /tmp/cvskJG9Eb differ Index: agi.png =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/images/agi.png,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 Binary files /tmp/cvsSmyHqb and /tmp/cvs2Lv6Mm differ |
From: Stefan R. <sr...@us...> - 2005-07-11 17:59:38
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23287/xdocs Modified Files: navigation.xml Log Message: Added link to design document Index: navigation.xml =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/navigation.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- navigation.xml 7 Jul 2005 01:51:05 -0000 1.5 +++ navigation.xml 11 Jul 2005 17:59:29 -0000 1.6 @@ -30,6 +30,7 @@ <item name="Patch Howto" href="patch.html"/> </menu> <menu name="Documentation"> + <item name="Design" href="design.html"/> <item name="Tutorial" href="tutorial.html"/> </menu> <search/> |
From: Stefan R. <sr...@us...> - 2005-07-11 17:58:19
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22374/xdocs Modified Files: design.xml Log Message: Finished first draft Index: design.xml =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/design.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 --- design.xml 11 Jul 2005 01:05:00 -0000 1.1 +++ design.xml 11 Jul 2005 17:58:10 -0000 1.2 @@ -25,37 +25,247 @@ <meta name="keywords" content="Asterisk,asterisk,Java,java,Manager API,FastAGI,AGI"/> <body> <section name="Design"> - <p>This document shows a brief overview of the design of - Asterisk-Java and the requirements that lead to that + <p>This document gives a brief overview of the design of + Asterisk-Java and the requirements that lead to this design.</p> <subsection name="Introduction"> <p>When I first stumbled upon Asterisk there haven't been many options to integrate your own applications.</p> - <p> First of all you have the possibility to write your own + <p> First of all you had the possibility to write your own Asterisk applications. That's the way many internal functions are implemented, for example Asterisk's Dial, Voicemail and Queue commands. This approach usually requires writing a small - module in C that uses Asterisk's internal API an is + module in C that uses Asterisk's internal API. It is compiled into a shared object that is loaded when Asterisk starts. Your application is then tightly coupled to Asterisk but has access to any internal structure.</p> <p>The second approach is to write AGI scripts. An AGI script is to Asterisk what a CGI script is to an - HTTP server.</p> + HTTP server. You can think of AGI as a means to + make your dialplan more dynamic by handing control + to an external process. As with CGI in its early + days Asterisk had to spawn a new short + lived process for each AGI request. When using + external application that consume a lot of resources + at startup (like spawning a Java Virtual Machine + when launching a Java application) this approach + has major drawbacks. These shortcoming have been + mitigated with the introduction of FastAGI that + doesn't spawn a new process for each request but + communicates with a long running process via + TCP/IP.</p> + <p>The third approach is to use Asterisk's Manager API. + The Manager API allows an external application to + query and change Asterisk's state by sending actions + and listening to responses and events. Comminication + occors via TCP/IP. Compared to AGI the Manager API + works without the need to operate on a concrete call + (in Asterisk parlance a channel).</p> + <p>The last approach is to talk to Asterisk via IAX + (Inter Asterisk eXchange protocol), a + UDP based protocol used by Asterisk to communicate + with other Asterisk servers and IAX enabled phones. + In contrast to AGI and the Manager API IAX allows + passing media streams, for example sending and + receiving audio.</p> + <p>Regarding the first approach a JNI based solution + (JAsterisk) is available that spawns a Java Virtual + Machine from within Asterisk and exposes Asterisk's + internal API. Development of JAsterisk seems to be + discontinued. Due to the involved tight coupling this + approach is questionable anyway.</p> + <p>Regarding option two and three I realized + there were two implementations of FastAGI for Java + but none for the Manager API. So I decided to build + a library to make those interfaces accessible from + Java applications. This is what became Asterisk-Java.</p> + <p>Regarding IAX there is a C library available and a + Java wrapper using Java Native Interface (JNI). + Several people are working on a pure Java + implementation though up to now no usable implementation + is available to the public.</p> </subsection> <subsection name="Requirements"> - <p></p> + <p>So what are the requirements for a library like + Asterisk-Java that focuses on AGI and the Manager API?</p> + <p>In one sentence: Asterisk-Java must be flexible, robust + and easy to use and maintain.</p> + <p>Flexible means you should be able to use it in a variety + of different environments, like standalone Java GUI + applications running on a user's desktop, servlets running + in a JEE servlet container, Java webstart applications, + or maybe even applets if anybody is still using them. + Being flexible also means you should have access to any + feature exposed by the corresponding Asterisk interface + and not be limited in any way due to using Asterisk-Java. + And finally being flexible also means it should be easy to + extend Asterisk-Java to support additional features. + This extensibility is important when you choose to run a + modified version of Asterisk that supports additional + actions and events through the Manager API or addtional + commands via AGI.</p> + <p>Robust means you can focus on your own + application and rest asured that Asterisk-Java "just + works". This implies you don't have to worry about things + like reconnecting after restarting Asterisk. Being robust + also means that Asterisk-Java must still work as expected + when put under heavy load.</p> + <p>Easy to use means there should only be a small number of + well defined and easy to understand classes and interfaces + that an application developer must be aware of. The + programming model should follow the style Java developers + are used to.</p> + <p>And finally easy to maintain means being well structured and + allowing for automated testing. Of course being easy to + maintain also requires extensibility as stated above as + Asterisk itself is in active development and new features + that Asterisk-Java must keep track of are added all + the time.</p> </subsection> <subsection name="Overall Design"> - <p></p> + <p>Let's have a look at Asterisk-Java's overall design.</p> + <p>You might have noticed that Asterisk-Java is composed + of two packages: one to support AGI and one to support + the Manager API. + Although these two packages are quite different (due to + the conceptual differences in the Asterisk interfaces + they support) they share several common design + principles. This section will highlight them before we + dive into the details of the two packages.</p> + <p>Asterisk-Java is based on interfaces. As you will see + below starting to use Asterisk-Java usually implies + getting an implementation of the interface you want to + use (i.e. AGI-based or Manager API-based). This + approach allows you to easily integrate Asterisk-Java into + IoC (inversion of control) containers like the Spring + Framework. It decouples your application from the internal + implementation of Asterisk-Java and supports testability as + you can easily substitue Asterisk-Java by some mock objects. + You can see examples of what that means when looking at + the source of Asterisk-Java's unit tests where I am using + <a href="http://www.easymock.org">EasyMock</a> for that + purpose.</p> + <p>To provide extensibility the commands and replies (for + AGI) and actions, repsonses and events (for Manager API) are + designed as class hierarchies with one abstract base + class at the top of each one. Asterisk-Java does not need to know + the concrete classes upfront so you are free to extend these + hierarchies as needed. There is a little difference in how + the two packages implement this strategy, but the general + concept is the same.<br/> + Note that this looks like the GoF Command Pattern and in + fact both are fairly similar. The + difference is that Asterisk-Java's commands and + actions are not self-executable. Instead of an + execute method there is a uniform way to "render" them + to the format Asterisk understands (i.e. convert them to a + String that can be sent over the wire). When using AGI this + is done by the AGICommands themselves that provide + a <code>buildCommand()</code> method, when using the + Manager API there is an ActionBuilder that renders + ManagerActions by using reflection.</p> + <p>Asterisk-Java depends on no external libraries at runtime. + This decision is crucial when using Asterisk-Java in special + environments where size matters. It also ensures that no + conflicts arise from different components requiring different + version of the same external library.</p> </subsection> <subsection name="AGI"> - <p><a href="images/agi.png"><img src="images/agi-thumb.png"/></a></p> + <p>This section describes the design of Asterisk-Java's support + for FastAGI. The corresponding Java package is called + <code>net.sf.asterisk.fastagi</code>.</p> + <p><a href="images/agi.png"><img src="images/agi-thumb.png"/> + (enlarge)</a></p> + <p>As you can see on the diagram the AGI package of + Asterisk-Java consists of three fundamental interfaces: + AGIServer, AGIScript and MappingStrategy.</p> + <p>The responsibility of an AGIServer is to listen for new + incoming AGI requests that an Asterisk server directs to + that server. The AGIServer must then choose the right + processor for that request, invoke it and provide it with + a means to send commands to Asterisk and receive the + corresponding reply.<br/> + Asterisk-Java includes DefaultAGIServer that contains the + default implementation of this interface.</p> + <p>To choose the right processor for an AGIRequest, the + AGIServer uses a MappingStrategy that returns an executable + AGIScript based on the request.<br/> + Asterisk-Java includes a + simple implementation of a MappingStrategy that is + based on reading a resource bundle and matching the URL. + It is called ResourceBundleMappingStrategy. If you + have other requirements regarding the mapping you can provide + your own implementation of the MappingStrategy interface.</p> + <p>The third important interface in this package is the + AGIScript. An AGI Script is the piece of code that is + invoked to service the request. An AGIScript is to + Asterisk-Java what a servlet is to a servlet container. + So when you want to expose your own Java based services + to Asterisk you must implement this interface. The AGIScript + interface is really simple: It contains only one method called + <code>service()</code> that is passed the AGIRequest and an + AGIChannel, that allows you to send AGICommands back to + Asterisk.<br/> + Asterisk-Java also includes an abstract base class that + implements the AGIScript interface and provides convenience + methods for sending commands. You can choose whatever + you like more: either implementing AGIScript or extending + AbstractAGIScript works fine.</p> </subsection> <subsection name="Manager API"> - <p><a href="images/manager.png"><img src="images/manager-thumb.png"/></a></p> + <p>This section describes the design of Asterisk-Java's support + for the Manager API. The corresponding Java package is called + <code>net.sf.asterisk.manager</code>.</p> + <p><a href="images/manager.png"><img src="images/manager-thumb.png"/> + (enlarge)</a></p> + <p>The important interfaces of Asterisk-Java's Manager + API package are ManagerConnection, ManagerEventHandler + and AsteriskManager.</p> + <p>In contrast to AGI communication between the Asterisk + server and your application is not initiated by Asterisk + when using the Manager API but has to be initiated by you. + Asterisk-Java provides the ManagerConnection interface that + is well suited for this purpose. Its responsibility is to + establish a TCP/IP connection to Asterisk (and reestablish + that connection in case of a restart of Asterisk or a network + failure), to enable its clients to send ManagerActions + and receive the corresponding ManagerResponses and to + dispatch events received from Asterisk.<br/> + Once you are connected to + Asterisk you can not only actively send ManagerActions but + you will also receive MangerEvents from Asterisk. + ManagerEvents usually inform your application about state + changes that occur within your Asterisk server, for + example due to a user dialing an extension or hanging + up the phone. To recieve these events you can implement + the ManagerEventHandler interface and register your + handler with the corresponding ManagerConnection.</p> + <p>Instances of the MangerConnection interface are usually + obtained from the ManagerConnectionFactory unless you are + using an IoC container. Asterisk-Java provides a default + implementation of the ManagerConnection interface called + DefaultManagerConnection.</p> + <p>Finally there is the AsteriskManager interface that + provides a higher level abstraction on top of the + ManagerConnection. It keeps track of Asterisk's state + by listening to all state changing events and provides + support for domain objects like Channel, Call and Queue + that make it easier for your application to interact + with Asterisk without diving into details.<br/> + Asterisk-Java provides a default implementation of the + AsteriskManager interface called DefaultAsteriskManager + that is initialized by passing a ManagerConnection.<br/> + You can use both interfaces at the same time thus using + the abstracted AsteriskManager where it is sufficient and + going back to ManagerConnection where needed. If you choose + to do so be sure to initialize the AsteriskManager before + you register any of your own ManagerEventHandlers.</p> + <p>Please note that the AsteriskManager interface is still + in an early state and the functionality exposed through it + is rather limited. This interface will certainly change + in the future so be aware of that when using it.</p> </subsection> </section> </body> |
From: Stefan R. <sr...@us...> - 2005-07-11 01:05:09
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17753/xdocs Added Files: design.xml Log Message: Added stub for design documentation --- NEW FILE: design.xml --- <?xml version="1.0"?> <!-- /* * Copyright 2004-2005 Stefan Reuter * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ --> <document> <properties> <author email="srt at users.sourceforge.net">Stefan Reuter</author> <title>Design</title> </properties> <meta name="keywords" content="Asterisk,asterisk,Java,java,Manager API,FastAGI,AGI"/> <body> <section name="Design"> <p>This document shows a brief overview of the design of Asterisk-Java and the requirements that lead to that design.</p> <subsection name="Introduction"> <p>When I first stumbled upon Asterisk there haven't been many options to integrate your own applications.</p> <p> First of all you have the possibility to write your own Asterisk applications. That's the way many internal functions are implemented, for example Asterisk's Dial, Voicemail and Queue commands. This approach usually requires writing a small module in C that uses Asterisk's internal API an is compiled into a shared object that is loaded when Asterisk starts. Your application is then tightly coupled to Asterisk but has access to any internal structure.</p> <p>The second approach is to write AGI scripts. An AGI script is to Asterisk what a CGI script is to an HTTP server.</p> </subsection> <subsection name="Requirements"> <p></p> </subsection> <subsection name="Overall Design"> <p></p> </subsection> <subsection name="AGI"> <p><a href="images/agi.png"><img src="images/agi-thumb.png"/></a></p> </subsection> <subsection name="Manager API"> <p><a href="images/manager.png"><img src="images/manager-thumb.png"/></a></p> </subsection> </section> </body> </document> |
From: Stefan R. <sr...@us...> - 2005-07-11 01:05:08
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs/images In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17753/xdocs/images Added Files: agi-thumb.png manager-thumb.png manager.png agi.png Log Message: Added stub for design documentation --- NEW FILE: agi-thumb.png --- PNG ('¨ 3ÿö=eðîÍu¾sðí]õíýz½É¶lVÝåmêVîÜÞÀÅ!æsT¢áq«2^ØÜ£c1h9)½Cc5Í:Ô<ä0A¤$òç«È÷Mɾ.¯¿á¢zíü)}à ÞÜ«ûÇ3÷c ýп~kFIzCÉ =ß½|Vñ[»ê½ò£?o>/âCáO5ÛôÙþáɵsø¢øÓ³.A½c5+RÉWN¹û"ü~ÓA0Ô§oéÑõ'Å1~ñò§Û67u e«îWñêÓßYõó|z¼%D"PÜØ5ø_ß½ë±3F-|ïÐ×Í}ù£c8-¨Îë6æ¨~ùð$å"aØìDÅE¾o$H®ôEè×S©ø«¿øÎoXÑÒ£QѧúåO÷Ôµd'5u *â?þÓGÛ·<¼|zAºÜéöEHBÒÚ£+ÍNLU<'ËÄå9*£Õ*4v NÉK iTJ0³Ê$|& ©Üdsa&âs0ó@ rUâ3²n~»ô/ +] §Ó(ßN 0òÔonO&nopxÌyíé]K]þõOÛÈI)+]ôél§[FJ²ã{Zã®é©m&:²rNÆ=äj ò¬dÁ¨Ù#æ3;ÇÂFÅWÍÍÜz¤ïWT¼0L¾H$HYéú ¡Í(椵zûÃËó%VªßÞo "mýæûç ô3mzuøÜ Ñ>`Z]y¾c´¹g</UaÏ&_$ $Wº>XS©58:ÌvW@Ìgýýã.ÆuªÍ ·»Ëëa±{ &wv²ÐáòK¬¡QgºR@@¡J$H|{@yî¹çnIÃuûKÒã6ê8,ÚôbN! A lÞûfã1J E3¥o÷)M0.̸1³G&á:9,Áä48ZÿñáÞ_>RyT A¾Î´Äì¼4qs÷ø=s2ܾ ÏîTCáH[¿Y3âØ¸4ïõOÛîéõ³$ý ù9é,&µScií59?t±Ït¡{¬®e¤"/Ñí^èÏMáæê$H\é« îê@0O5(ããòÒD3J NïÓcÍ·Ã"ñï²»U»;ä¾ÒM~¿núÉ>>ðòSyi²ÿñ#^sñ´B«ÓÝÔ5ø¯§ÛFúuÆ Õyáñ.te$Å{|:â \¶ÃíóúsQ¦¢}@ÿÑ¡Æç_f°xê;õ1hÔ )Â8&ù^I®tûÊJ_Ò.)+ÝÄ÷ëñN4õÞ3§´µOG¡àu-ý ¦à8 N[ýÿþùÈéÁP8Y&nÐní§àxfR| ÆNÝs²M÷Ú|BÍåÿèDÏÆùùä{%¹Ò7E@³©õkÖ5³gÏþusrÉ·~Ód¥?¿$ 6fÃb¨EþµÝ¥ÙI]C/6«,Í ¯úù?{lYi¶ê¡eÓúuÆìä_=²dïߺkFáËj]í î!Ãm4Ù7Þ5µKg½«2I£ ÉWÄe.J?Ù6LÊJ$Wú¦xôñïíºo¿ýv³tÅ*±XL¾ÂÛVVÒèMÁPèO?YÓ©6üêí?{`þ¯^ÙñÛíÝy²uýâʦ}té³ÿÜåVÍ-KSHÞÜqúÏ'Jøù)µôê³-=CÏulî{ëÙ?i[§Æ &Hø¬Ø¶Ec¤¬ôíù¤Ýq+¯×ûöÛoß}÷ÝÇ[¿~=ù oO¼óâS÷ÍÉFD§ÇÇc9Ý>Á,ðE|Ãåårc ©BÁ-v7 Ãt{ýÁP¸sÈ*â±bïÑjîÀÚ4FòîÛüëñ±cÇ|>ß;È÷w;F¥0hT ]èãsºÇë[õ¹ñ^È6+ q½°º6³Ogë´:\þÒø_<4¥[k)HıhJÁ+[/n\ïö,voªO§SzlùËg§ÕT(©Ã°#çæW©È¼å¸Ö]w*W:yò$9Qî ¹ªYe~" ¸¬w_x¸¥Ww®C[U0&c1hûG¨<Cÿì?w®[àõnJ1ìe9*¢1Yn°O5?óðb:¥Ö¯âÅ÷¼wAszü?{ië~¼æáÞyöÑ¥n¯ Ä-ÁØØXYYL&£ÑÈÍìÛýðè«¿X âºÐ×Ö?Ò¡Ö×_T>ÛùÏ_Þ¿óDkiNÝå1Ùܾ@À`²7÷è¦ä¥üï[ûÜ^$Bpô¹øo[Îc±»u-ý±ÔîSúÜk»J²ñBîùNmE®jóþs^_Å ç$Gë"²»O]¬ÈMnìÃϼ²}Ã]S?jW&á_µóy/Óéär¹ä8Ü)ºj°8Ü"XºÃí ÂL:M"³ GüÁF¥FÁ1ÞìóebG@040lLKâE\»Ëêº}þD1ßíõGâÞÜ&U(æQ(8jA&Ýh}§ÊJuuuä÷ eFÍÍÍz½>;;»´´;D,ÆeÙVpY¡)Y&D1 öîÝ %QÌÃ0Lo²ûýÁT D3bJUH"bpÔ"cWkýF1âC~é¼hµZ- )ýûàÆý~ol·Û7n¼²RªBe3é©òϤDuCájªªÄË)GQ]|!úI É/YÙ ,Ç¢-^Ùú`0hµZããã£)¤[ [ÃDÎE 3¾é$sb¦ûÖ®àHÜ477ÆéÓ§Çr%ÿ¶hë7éMîñÂIÿ°Íj÷e¨;ÂDyn|sÏxû¹2?1MÁïÔóRÅ=Öü4QÚÌaÒRüÝãêûé){Nk1ï,Îá°n=6Éî`D"O?ýF£UTTH¥RÒ¯^=]!9×1Z[äñ Òü÷öv@uAâ®SòÜø÷=¼<ßhó[=ÎfFÔèíÉ2Þzy¸ò½}ݯ,Ü~|`ñ´d "H²$PU8¯R*çW$@S÷ØÂ©)ãVrùØC7浸©ÜëÝ¿8÷µmOKqz&/M¸®¸º@ÖÒkÄ1¬2ÿ¦ê+¸ÛÁ`°£££³³B¡TTT;G$¾ß[Ua? ÒÅ8ÀÖ"v³xZ* Ö©1Ï44êøÝ;³J,uÜêi0ÿx}ÙoÇqlV©B!;Û1Ú¯³=ýà¿miùÁÚ¿mip4*TÊ\ NÁ0¬}ÀT~Tü®>õO5÷_èry§ûÉw|ÐÚÚúî»ï¶··WUU_¿dI$¾6z¬õúAm¾xN£þd}Ù¡³I\¹$nÔì ÙE¥ 7E$ä2èTJÅ#â@½67MLÁðP8M¤Rq_ G µ··www£3~r@HÜ ¬}ùróUµÑçk&n»-ÍG§[õz£kù¬4 ²~ýzÒTÄM@»Ú<<ælí5æ¥V^ì3uk-÷ÎÏ2Û½CgAäÇ<þýÕÅùéâ6ÃísMí0ç§;Ì m7lÞß 2$è§; 7ºÃaÂb÷UÈÐ6¹ÕáKñÜÞ` ¸¼AÞÒgô¶¬¿TÈBÔ\Áä X¶Ú Yç;FGÆ]£ëèy]Aº ë+·¢³µ²Z{í±!²ÑþÀþzFo>=ÖµãÄÀ½ó³ \Þ@¼¥¸+ð5% Gùq!³$K:Xn´z~=7U4»\ ~4ëK1ù6w^|jÃ¥3¸ppyQ3âhÔí Ú]¹ãòC5Ù¼ñBö¸Õ/d·¥BV=fö$'CáÑêÅ1,AÌVG& ùáp$(æ[=ã¯ÇL³qD Ä|ÖkÿnÓo¾?M&ágIDìn» G*ò7ÏÄ¢Là Dçl´ü«[[¹l¤jGD ·7@£â:% `tÚ75Ü$+áWý¶Ûþ7wtP)²uy.sß\â¾è¹å`¯ÕáßyB¶þsC QîÛ{ºý÷ÎfÄ@£R¢ü ÇAìÏé7tëݾ Ã$|Öô|ENnºÝ ÉkÈöÜcS'6dcn¬LW G«¯[]Q?«L îÑ]çµ²Q G~úçÝZzÑ;ds@Ú|à ¡Pxfifí =¶²B Gï)$ AÏ u~e²/âq T*5öîI·Û rd0¹ÐSoâeJ+óN4é ¸ôGï.ü·ÎýÇâ£çu»N©ÍLCQÇ,v/>;ôÄbýhTÕ]· ûÓcýËg§;=§' â1£þ-oá¾ =?$æ³Js¤ÿ¨eÍüì@0Ü;h]63Ídó:ÅQ³; o©*G¥`b>óX£.&XLjAºQYªØ{ZóÛ'¦GâbI·dJ5z»ÇJóP`(ÂbPK²¥ÿ¨eͼ¬gZ_zì]ÝMIßX@¼]S®cÓÑ14Ø¿v´Ï©HL Crä¼nf©¢µÏ8»Ly¬Q'²2UùUÉmÈV$vk,Ù)"d ¶jn&b5Ê=u»f¤®]ýÒÍ2 ç¾Ù6§.ÑE÷s3UÕÉõ Óå£z:&.Îì©Óà,¿dvMúJ4*ÎdP]Þ R¦ýÞê"t/ÇLSð×-ÈÆ0 ôd1©ë©u¥h¯©Wyü¡P8]YÄFOOXé¢àøÅS% A§QNMA7,!ʨc'.ØÔmý¢ueÍéÿøPïªÚ,)f`_íÛu¶>¹X!wæH7íîX´5&XÊsCg;ûêµèC CYÉ¢}§µI£º}õÚ8ýÐÙ¡ütñ¾zmAAºøï·[<gÈE|桳C%ÙRTåèy]Q¦t÷)5j+$JØÅëÝÁ!·º¯:¤kæe-öXK²¤ß[U4³T H¬å³ÒæW©¢ÑEÓRæNIZ>+-YÆI8bNwUYéêºÝl&mÝl 4®Sm¹2ú×S|pY¾?2Ù¼ëdí0 çÚÙ4*>fñÄòεyéÌ´èîul´®EøìPUablÅT9U¿INºRèÈ$NµY*b`gÛG\· +6˰3U{çeí?£Å0ìxÓðË[ZjÊb)@Aºø\ç(ún ôè zÄ^?«TQ](1º 3$£fOvÐdóæÄ=ùi"«Ãgsù³ ^(U~B0Ù¸4ßå 4´æ¤E<¦ÁäÎN*¤qVÏé ¤*øq,*CGméMî¼41qm¼ûΠINtå#Öàè×Ù Ï*UD÷s®(Ï=÷\lübÝþâôx$ùÌè"±Ñò$´KsT¼1[,`%%pÑA£¤Êùèj¨lv²0ÖHl4EÎQ¢óY±K²ãQuatJ³ã³ ¥Ùñ£Î5ó2óÒÄ-6E}¦~mf©bV©¢ª ñ(e )gÔì¡Qq³ª6Ódó"7°Ü]}" p´-´Wpÿ\«Ã÷Ô}¥ ñ×B ¾R+ÿÚÑ^[©ê×ÙX*McÓb}j£&®ZqÜâÙyR½|öçÞÏxu®5¯W%ò z ·¾âã¶0P| e¦äJ§M3Xܵâ÷PrlÆgÏÆxçøJ'7cFÔ@[Úí (õλ|_gB÷öòq»ïô¼=¾¹L"!þÖåm2 xÑ%ÙñJ½Ö:¢Ø5âiL"®HÖÚ³ãà©m ³³6ßµ wÅ#j£OðáËY³¾z¡B^wË»ùÊelw~{lsNEgÚV¸¬$E(`£håùãWÆ}ªä# øb ævß«Ã{¶eòÝsCsoâ^?Ñ÷ã×Û%ùÆ[§ ØÓ;`0»÷Þ· c@£7»'M RÉdäU» ;®£_Ö,çÉh5NfPA,Äò2xnO UÀFκgZ¤ öÇq£Qa Âc ÉaèÌ..ç36º³]iï®/¿ßýEÑ©:%Ä(×DºH¸"q¾EÞú°G*Í4IÕ¥©×zoÈÃÃÝÉLO¥¡¡á¾ûî#®Ã,ݯ/.üØ)Þ6¼psµ;ÖîªÍF+Om+µµÖâ Âpß=ërÏ\îYûy¥ÒÿíAq ÒgK϶HÍåª\Vr¶e29 aÁ¦ÐÚYÑ´xnôÊf´ºÄñ¿{Wòøæ´Ä ÎÎ S¸L¥ÞÀR\ox|sAbóØå1À[ ÑDðùâ3GÈÖÌþu{mU:ÊÓB@@pOùÏW¯µt«wîþã}>_ ØïBµåixF a[^?Þgwù6.Í3-EIr ½BkÒtÊÁ`(uÈûÆ y׿ÿyRe¸Ò9¢Ð·ÿë« Y¡5Ëujïù·ï4üú@}ø0Â{ÉÁLmüroÏJKá°[ªEéIçw-ؼéD$ m]E"!É#¤.Ñid_ D£Rð]no`÷d3¢SÁÐö1 H'ÇÑQ0#IÁæöøxÑ3fæyr*£rsA£%òc CN·G¸O*AºÒÊ B½Ùýئü¶>5ÚõÐú¼Î!-Ê&*AËë=ªë½ªË³¦²8¹®ujϺܳ-x5.n°¸ccó,¬ë³$~ì¸BWK$Yº{HrÄÝKKÄ 22ãÕß@=g§ f C©³à=ì^»¨éæhR<ç^ÝÙ9h"¨FxHÜ{lÉäðÕ¥³áÞpxî6ä²ÈÈRænZy{ Öåjx`mÎç<µÙopèyfÐi JfÐ ÉòyÀ"å?ûöÎ3W{ZóÊ+JÖV$ÆÅüà §¯ö ÊòÒD)ñJ½aOn]ºª"¯¹k_OKääÃÿ-.ÌkMriýÂ"q²ÝéýW³Qm®ÚòÜ!? ÷¼mEÏaFÑZ¿ #¼øØ·Î´þèù÷H]íÕÓJKKçr÷G§-CºKÓ+¦Êµö9UÀv¸üj3Eÿý»739=Ñ}ªYºª"M®µKVÁ±8¼:+I×]6§ÏîôÉ-G/¥%Ÿ½6a ×ÚO7ONã)ò¼õKÿm't¥ü#nZV EÉxI/?ú¬á-ÈNEÙé kÿ17'NmÈÇäí+³5MüàÎ!íÁóÃÏí,& ¡mzë ѼÚl©d´¹å&BÌF+â-Yÿh tûúY¿¤ðsï!UÀMÜÃ@=s´+µ÷kÌvOVjl^U,×:¬/ +DÊÏäÝS-ªªªÛÿ¦gBwM)¥bòërÉdRz aOn+Ô\(T.£åSÛôײÒì[S©Ù£1¸Q4¯?°iYf(½}nD"=÷êJ_uJÅ'××!ò8Ð?W»îj J!¡y?5â .2u¥óý|«XÒÜ5¶³¦¸,_]I»ª"è)Àþã}| Fa±ð áËðgwy|Á˳ڧÉ$ؼ|þç+æ" ¾BøåwopygûO>ùä?ÎÝ?wmÂRïÎ㩺RdêJ_[] Ãí èÍnµÁ©Ò;Í6Îä_èDYi§Ì9Ö aT =GüµÙáÕµ¹;WiTÊÅöéIDÜôy@ؾFv¥`o:sa ÑÅöéíÓ[WdÍÃCKÌíþèJjóDã8²VÎÚ|ëô Ze3rÓyi1ÑêñöâyqÐ%t¥¯ ®¤Ò;¬.MA±ßgmÚþEù¤Ål\&ºÚ¥2XÜhT Dü~haG¿Æêð=°6çÛ{Êö¬Ëås¢²Ó¸-ݪÉJ! £Õ}°nø¥ým aOmpn[/âÛ¾ªâ$ÌaFÑD©QÜL [#ÉrQÃtÞÌ´ª"MÀcΪ$ÆêÌ®EùtjUEIvßdó$dz|æÚÊt{ *ñ{ÇåùÃV,L½Ô1¯'ÅtÑ|fN:ïæ°.ÂR12µ}ã²L6~ ³Ó¹2µmMeº?ÊIã&òø°39¨íÒ@0a¥9 &»G¦¶ñ¹Q(~H·RVVöwï~Z<çþ|æKtk+Ó%v°¢i?KÈ9Ù4a´y&½aÔå l[E§Q®v)kÊ G/Ê4¶m+Åg®JW/N;zi43óÔ¶¢ú6YY^BeQÒ»ç\Á;Ü0ZU4íÇOø±v% ¿¬(ÚÊôð!áÃÆÛ"Û úòµmEV÷¨Yæ®+mF¥Ô³Ó¸Ïî(zåH÷¿¹ìblmeDZS~¡]¦7»SØ górÑÅéK7¦ñóöÐó¾&ºÁ´Æf´z=8|óPýð¨ÌòâÞ%]#º)mÅÂÔxöGÏ/ùñëm?z~Iy¾ OM&ÖT¦¿}vHctþàó×§j Q3̬MôçýÀÚ\ oíÛ߯aÓÃëHå(pâ«fâßãÂÏMiì áªò´{}jTL]Éí ,¤8F¹}óÙů¼ß k£DÑ|S¹¶2]Â1Y=ÛVd¡ØdólY.ZWÑ(Q cÝÔæÄäÄßÔwê3ßÙ9sºýnL£ w¤X ¯ÏJgÝþV~¨~äó¼±(¿ìÛ»Ù,Ñ&Nkí· þ]ãO¯ °w¯É¹kt;T¸' + øL¥Î¡68¿ÿDE߸áTÓDEa¢âVîw¿¸wÉË»é42NõBEYüîý?Wewú$CZ³ÍûÔ¶ÂuÃq±Ñ|NTϨ^Û(QüÇ¿~»ó®Ãæ1¾,ÊOÏÏLbFÑå§WãkE{¿Foq±¢©ÑjUqr^Å9ÈJ¥QÉ&WÀgjÎs×&×T¦¯YVß&ÃUô }çÁ2?¸ai&FËaÑwÔ¿ÑÁº®a]ïÁhõì¨äÄûü×°¹TÌ78¯íòÎ]±0ÅX^Þ>¼2*`¬îûVg83K¥I$Òò²Tà ïrØw.A¤^|Î_ CAä+0¾¸wIsÒæðf§qejû¥noàO».¿¶¥éÐÈÔ¶]«²¹lúõ^u^]rä¨Úàܵ*;ÕÚ«¦Q)!Céj,v¯Õáéâb£|æÈH*`ßQ`NÃ&<N"»Ó÷ÚÑ¡IãÍaBçè3|÷á Àæô¹<~Ów°n /\¹H¨5¹äZ{zRIK°QMÉåñ&»<6&·<°.ÅøÌÃÖQËÊ>ØKÌ æµ]2¤-/HÇã"zZâ]êJDÜn©no é¦âܵ©Oª$ t±} §Û¢qü¥ým C¥w4J'& çW$Ý!"dÖØO4ÿï¡. T$#F·¯Ìm+²¤JëÚÊôX6Ýb÷üÓÒ©¹8ÝþcÇ ½é¦B¦¶ÿ×3oÀãrc>0ÂèTJ bÐ) à kXG"AÇælË$Rpù¼I¢ðù:«é¦¢îúR¯ïª ÷ Zº A8î·ïv²4V4Íáö×µN=½¨µWíò®tÊöêïÿ±9=cwzkË ïâq¢B¡P7êý/â¡à½¹<Â,> H×zTËËRîrØÄ|%H ÐÞ¯Q ¼h TUǪ(H¿PXÚdËKS«KS¶,k±hµ47!AEÙq¹lÆ¿>ºÍ|ZVÏRèFç±Í®Ïo¡]xoùÒÉK$5ÝTÜý°ùJòÎ]¹H¼sßU|±c ÅÝÜ¥¸Ð> --- NEW FILE: manager-thumb.png --- PNG 6Mñ ا @ @ tý¬ÉsË@ ÐeÞ;|>_(êõúq*ñ¨¦à'7k®¤.óøñã&)??_$Á«ð@o@y臘¦^»v¾¾>::^EÈö©B ÐeÞ;)))&,,ÃÁ«@ ÀX2xõ/ÏĹOð óLEùDþ3QÏk¶öF GôžcðÔýögþXÌ rß0?rb×Þ¡ú±±3Q?MMOn¡µ?Àû^ÐqUó¹µ[<óYǬJ£=[©Òh «ØÛöP wgÚz0§´A$ [ö%« «Ø?g]w¦9üx®ÄÅ2´è_óáÒZNyc§Vg@Z¶áµp{;º%BioHN j>ù>úÈ*ÜÿúòW¾ùûÓsXMþ^.B±Ã~ã{lÑkK6ȹæ÷þ>??|I ê_<#zP§GZ×ÙHëøyGúæOþñ̼õ`kI Éi@(Vίòótñ÷rµ%ÚttsJBBï°UÑ||w=§¹@Q¿Ñhâúf&ʲ¶>1sôÿ½ eV¬·I²Ø½Ùå¦XË[fe3ï©yþéïÇ _«kÏ)m,ªn`T4qßÙ¼ÄJö÷tÙwºðBI½»Ó©¼ê Ó£â§øÄ0OåWáñ8ÉXÑÄݽuYJ¤ÿoX¯5õÉ ¥æËc¹_¼òä3¦úÖ/Jé*B|ÝO\©LO]<=Jo0¶r{#¥Çø3èäôaôÉì2ǰåOñcx¹9¢Æ¿ü%÷¿.ôvÕXkØå½Çóñ8ÜÒôè?ò«g'MYóØÔP_)~©1MÜ0ßÜÃÉÕwj·³µyrÖ+#üxW'Ìî÷ÎK£¼cB9¥ ¢~e+¯ µ>¬Ãýþý÷UQA^ a¾hAØGÖ\ּ䰴¸àf+·7ÔÏchÑt×\óB±û4¥°ª-PêÖ 6¼6~_rdÀM:{$ a¾hÎVn¯3üíïS#[¹½!¾îx<îBi:RU`/оÓEüu !!ÌwhY.£¿Ö`Dý% ÷Û¹÷¦áº ɨµ¸P&v992@ yº:E0³ëßùö¹RÓׯììÔ´òcC#¹U¨µ$ì:Õ¾_98I®Nyc'O(ýË?](m ñþåbÅëÏÎ ©Þ[«p_ lëoCÀ?3'üÐ¥Ã2øÂ¢xu`Í?B|ï+ØÂì8߬9uxÎh2§E1CÎãØeN0`ôÈ$ÁfÿÂBÖü8à±Ä;ÿÃòj8¢C¾R=ÆÄþ3ÞýAÖ¼ ã¨æ'uk¿ýæý9Æ*`d¼æÝ×}/踪y0ï^db#Þq\¼ÉdÃÁó㻺dwVbô+´zñn*vtF¬ð¡m¹ÖÙ&¡Ë@g®¶£ËJµ+TÍÃÈ~¿Ü «»ö¯ ¬G¬:Ó|Çlÿ=ZiÀ¢b¿<VuðLÃᬦÑ÷E[Â3 ¯së5N+u,ÁHÉ¡ÍòÖùйÆÒÎïOÖ %·ù~q%¨æ4[mà 0úÏÄ ª¥¯#÷§óEÊ6¾ìÙEa ¥¶¹³¿°ZæÑÒÙÏ*VÏÍ)ít¦Ö.;Õ¤ÖèT» ¦ õufzPÑ3M÷@ZÝc©þûNÖ=9/T$Ó -öâu^Ü÷ØW Èp½Õbë9bÄ_ òxwTÈ&..>Y HkÇãq^~^´V®Í ø8y»S:»=buLkD˵úmZ7 L4Ìaô¦v©jPO à#\ì¾ÚÕ*d3gªon9Éìéê`dK]r/Ñd^5;ØS(ðrÄãpt¡D=-ÆËd27E23Í."ÀÅD0ÌT[½ÁÔÂíì+i ¦caUW=G²rv°# ôj¯½/.m5^Ð5âÖÙ£ðeÐ<Éö$då8ï׸۸Pw£Éàäã\)gªÉdªçHèv^n`'ow ãöë8¨7ùÓ®dÁÜÞ¥ð÷¢Õ¶õ-îÿPOój©g*© +ëI$fÇáÒã½ù½¥u=KÒè4; i¸?lg´:¤YÎOñkåÝh±1!nyü6¾ÌfG!lȾT21!Ìýá·É»|æ[QÙq1¥µ¦o×RÈÄÅ3<èäñr.}2 ¥ 9¬kÖ·oß¾´´´Å»¹¹Ya¹9ÙGº°ù²)}*/7$*¯È5Óc<Óâ¼ ;¼sJ¹EÕÝÝòëõB+åXNK_ìz8«éZ½ÐËòKN/|-ï«°I¡X5Áø)îߨUjôs|åJíᬦvi_VTÝ Ë/Ëd²~ø¡½½ÝlDü´hO$¶ñÛÚ¤ú![S¢< ììV ¿ë °®Îö¶D¬& ±*Éõz¡«ý7ÃÎ0\nÉH]þU½ç1+cï2=]¦F2.ñÍt¢, ÙéAëõÁ_§ ÷<`åL¼C}¹=ît²EÒJâðe£iý¢ð¦þÖ¾P_gÑÄtB~½kZûd:ä¿ /ë5ÅÏ}yÇ&G2¨7Ö- {lF¢Þ`N÷.®éFË ¥6§Çáj]¯óu=GæOÏ*ê·üY&á³ãì}ú!÷Ïç§>4e ©C; òYá²c×#Ëf Hw²kæJÑWøh¦)«j-LõÈ5G½ýM1G CK©a [ 85Ê#ç×϶aiÄbت %ªªQQuwF"ódz S#Ï6l\ ofÈP¬gn¾PùÑË3 §ÆxVµg7ÝÃ8~d$²²²V¯^ÇãÉ<ɵzáÆeÎ4»¡ÉõÃ?Øm×ÔüJ¾Þ`ÌHòéÝ:sHùÃéz< ÞcÓü¸BÅ¥3§û{ÐɨÆã>$Ùw6FÊ9 Nc2Ùfw±ÿy#ƺÑÌx»Q6øå³d7ðxÁ 2"ÈÃ!ÕZÀjÁãñsÂfÄa7e×7pwmY:ì»3ÏîÚ²»æÓ/¾òÌ\Û§% ÝóY Þ~ Dy²mULÇãpB± Õ·ÎjRk tª]r$#2¾ç`EñøH$&$XFu>uêL& tqqò(]æC[q÷,ó8ýgb@%N®óÚ%¹fãò¨·¿)Æ.kuÆêÑg?³¶>ÝÔ)IÕüÞxV¢OVq¢HyÛô÷¾/¥Ø·=󣾬°ªKo0á bÍý~õä¼_Ýg#½)öó§ErF£qçÎ~úé+>þøc Ü®<ÁGwDzuU´T>¸uÕdùN§§§§#]ACµ+&ÉÑѶ[È»Ìs µ'?Ý X«ç%¤Æ5¶÷<³sÿ¿øÚ~ßy <Xxuݼµ;ö¿²vÞÝCFFÅoppppp0 ÖÚ$ Ü...³fÍÚ¸q£ ¿<~üxIIB¡¸{SóÃS¢hvÐ_Nvimôöö&$$\¹r ¢«««ìï`ôê5à9ä~á ò*øs¦ú =«hHÀÌk³·³Iöjê"*¼ W¨ps¶ïë׬SÚU,K<WØþxF0ÒõÚ#VabdX[y²Î`4f6_VX-Hóhéìç CKrezPd7k´ÍGáq¸v\$U×·KÂ=⧸õ¦I6C50PµbF£Ñhe³ÃÞYêâdçC¹\Ƴ!à3nþµÂÏ ëÍfPÖ Lºsv/l²¬AâãìL#]¼ÆÅFÔº7Z¸ýxñu~ }ðyÜ3}2Íw'j9ÙsK#|<¨É¯~«Þ²2Z*+µl^¿§¹ÝÇ*¶=#î×l{"æ×æØ·zQlYíéê°~qøÅëÜWØ =¤,äì#ù`]¸¸¦ûJÏh4Êk ¿C ½õ«íNÒ¢éþC#¤Ø³K:#éÁL§¶ø©ù¡ü^e [<R):HøçÆä½¿Õ4p$QA®½RµÑd¶!àß~!ùZ]ÏÐ]ÕÀ@ÕÊèäUðç²½Ý&\hZ:3 X|ÄÍ »£P#×ë Lwʬ¦/z"8` 8=æV» "GÁz8D*^")$UÈ @Õʰxº:¼ñ\RVQ3ç=4y¾¨cIZ J:#ÖûØ f¹JGvG25RRÓ-kþï¹$74¹kK*È,ݵ%í¤u:VeCÀ¿ðxHªf5÷ÚÚÐr;{®NöBzNz bÌj¢7ÐPؼ~¤ 6OÖÞ%ñÉX£É]ÜÁp%×v#¾ P;¯~QàêdæâãÎþÓutª-r<,¾»³=«I$W ¾üT<º êçÃÒºÔhO빦÷Ã$ùuä³Z5ZÝ¢éQ¹êë_¯ ÓÝ3»3Ïâp¸èÀÓ"`õN XõÃ-ù,AÏ zè4;7g»Ø×ïNÔ¢v X-o}uÊh2ÿ~¹â½ÌsÏûôçR *ÕzôBÙ'?åhuù¬Ö÷÷»PÒ *[ v h0n®tq´Ë4È \ô8 íçJí®-©m|G 3Õ·¸¦µýE£³[ÑÐ.ÁÏX¯Âê.9"ÀÝ%aûÍx<îéÇB)$ëiiðCÅØ²*mù«{¼{£¿zÞÿÑê æ< Èx¿?= E#×ý êÚÄ5e´pf#Ù XÞÌ7ÀbPëÏ b:ÊÚ¹l:éõeP±Ip{øì Jwÿø`Ùì$ìÎw6§ì=^K&Ù qäÑãAv¼\Æû×3 %é2 ÓEF¡ÄßÃ6Gä`OÅÍÞ/2p#¥zãØ`@ <q¬Lõÿð²ßj#CV°·JÐØP'NXkÊÕ _á$*ifj1 kÞÜê>+woô¸|» 8¨òÞ_ýÁ;ñøÈ¥<>·»wú]á^IKS[zpǯ^L(Ë«hM«¡a¨§# åÈj.µÜÇF%x.®ÔØUZÛ¹!Èé{¹!÷¨háío^8W20(xX¤d7"w-½½k`c°#úIÍm¤áAøìßþæ Üòö¾31%¶^TbdD .ñòí õÈúæÞ¼ò¶ÀÅV,mÆ|}G?²:-| ã¸Ai¯¬¥³ ¯ ßÍ·d£ÈO߯ÛÍ¡Î(r±)ÚYæeM5®Ä ½SÅñè^GÛ[_>a6ÿ=ÂW8~~*ëP'ò#E hÎS×voò°4ÕWÖ4vm_·än~Óùø²þA¹0¿iÿv$/TÀKð G®K%@kè1yA^Ö^_ Únrxg å®õîÅÕ¹e®|#¹BéÄ㢣5'·¬UÚ#³0Ñ··6r±4ÈËzÝèD ê&QJ åÎ8(SüF¸'ܳ¹½OÜÜUÔ<4¬DÆQ<2[Õ ØþXUÙÐU)îZälºÏ¨háñ« *5ÁuþöJáwû¿ZôàËá'rWþRósvv&í03Ãtm-:ê/UÇ®ru7¯tbÐé<s4ãÔÇÅ[=&ßÒÐÂD÷æÆzÚZ÷'lªÑS ÞľS+p±Õ ^zAÓ{c¾ÒKdj3Ô#í yY³Áe³l8h²Å|ë2çÑÙ/Neù{X ïð*A®n¿- «Q$J`ÿa¿ýÛwiy ¥ò«IÉÙ墲Íï|5,W$Êþ|äZlZ!ê&ñö`ôµDQ+ð·¨ÓýÓ¿.)#çã³F_Ci>?}³£»/QTö]lÆg§âeTSYEµßüçΡ£× ¯¼áïgn ÊEeÿù9[Wµëcz:Ì}7wô¿vüJêÈÈ5¼« ÈÀ¢ªöÚÎ ±Ù¿Ýçèå|cýð8eH¬P0ý=,Mw¶å x.Ûd¨Ï4æè óæ³WX ÄÐ@÷¯ÛYeåu-ÅÕOÇÔ]ÿ«L®øËÏ \D¥Á^ÎWr:{FçKGF¿ûß\¼#×4uXqNßHxn96µõOÑ×þß[~¸oã³ïÞ´|ñÙúæ:Iç±^¾÷ÏÿF£y8ZI¿_4ÐÖÒª¬oÁÖÚ¤xÅÔÂÕ~êͦ|û3®ÁÁèk¡WÔÁ7´tk$â¹åäêÈS¦¦3¹,{Mc׺@ûÎîA!u¬ãåÚÛ¤ý{6yøò¼¬Z}q*MU Nd×ÇÜX¯³{PàaÁ1`ÉêÀ¡£é×Sk[éLUconïG±©)W-±½^WTÕ¾ÐÉÇÿx³lëj×Á] uÁÞÖA^Ö?g§µãââÈ?ÕCÒÒÙÃ3ç6¶JsËÅû½ï~<6ð¹w¿ ÿÎ~ÄsÁÿó÷xªX¬~ãÿÒr+Q.{+c¦£©MJ5%nîpw-5´Jغζæ cC eieÏNeIÚûÔM$°ô}¨û¥5;YZÛ©i6Ô:ºû@¥t vÌ-o]ºÈÒÌHfom@³·æØ[òÌÙéW>×Ç-Kµ~÷¤Â{ÛDUÞÁ매µ--- fûBÿø-ZÞÞÞ¤SYd0;eÙcÒª×/s&"L «Ú»ûd -½9e-ζFtÚ¨,;58Á=ᢢ{k¤¯½kÐÏÃ[·\L¨P(G «ÚÑNCKoQUûñ« «üùê.²úöJáwû¿ZäeýXMDÔ¼U¦dxn³GN0.+_;ßÓ'KÎi\älÊÒ¾ÿ¦ôÀáTt©T2èt;+ÃÏNeÉÖß}~{CÐc-êí:r75§q`ÜB¦qEõå-é<öS)W÷ѯ&Qÿ!LóåkAS[ß©kE»7yXê«k»¶¯[r7¿é||Yÿ \ß´»O*à%ɲ/÷±ijë+½&)4wôq*ëåMV¦úA^ÖÔàDÃf¦æ6²õ´ÿ/l9Ìof¤ãåbZRÓvtu´³KZdÃÊj¨âìsànÄé r>¾ÂñÈ¥| -¶NºWÏb2*Ä]ü6èéÚZ¹¦ÙÿE¢ ±Þ°\\âDFªø®ÁFngÕ?Pïw/ú4´ô~[ºÊß;ÉIËmüø #ó¹,¦6#§´ lm8Ø5½µ¡ïóäìöÆN<Ψù9I¢úܶUþ¶î&L±TÐrDÜÜË3g¿°Ú@Ûæ_ÞfcÎvåð±A]l®Ü©Z¿Ì¾µc`Ì?mMt³7R÷ÆòòÌÙ-§¯À$¾wP{Zµ_\ÓÑÙ=ôT=ª½µá¸Í8%zÈ·LÂt@Ì(qÂÚuvÒ¡²ºÎ%õÙo ÅÙ§pI\\ܺuëÈ2o<ðøzÈ"Ât@dÙgTý3YCòÂʶâêjq8ÞùEµOÍÔáê?Va}éóqGZ©xþÞÿÁO¤¿©rlG .óÑYö%qÂÚÎI[µ¸ûYÆv~QíèpÎíÑVMU¤Ï©Êïã*ªÇgÔýóûìæþkÉÕí]?Ò"H©Yh,;S^ÓØmn¤7(SÃYðÎ/ª}ι=ºJÕGE£¢ ð ô¹òû¸êÌÚ¹ÞýóSY˼¬¢/@ºÌ_&ȲãÎuÚÇÅá,xg\µOªA¢Ã9·GW¡^dD ZXI>WQ~WQ=ÈËÊ£ÃÖÓ66Ô0uYveÇÙÑ.åRÙÙ4z(>£®¥³ ¯ ß j¦8ûìû£2ºH:ºBjã*£+s4Ú¼ÒÙÖD#$®.5#UÒ}ô¶¤H«üȬ#¨ÆÉH@xÈYÂTÎ%·3%ç³ãj³i,ie_ùÚù¿N{ÿËÔ©ü$úì(Ã<z?3p¨º¦«èDZ X'3%»ña´@'2xûB¼¯|qF óÈ%#H9h,{¨¯Íá÷V]J¬GÝÈP§´¦³©µÏÂD\õNR3õÙãââæöè ¯S;ÔѺ9 Àû{ÄgÖÁx켦3Å×SªåJYQ¤#ªnj話O®ÉîbËýµýåÃ˲yÝejpè½ÏO{ÛÀxìÂüF'[îÒEV§®QeE±¨ºeÐ0ÕÐ9 þ£!£+$Ë¶ê ¦å5&ÝkHºWOdÙ ÒeN="êk³uËèc&{ïÀ°©¾±!KÒÖGÅ:¢ãZÖ(ÕPKKË9p·hÂèz¡é¹A/Ȳ¤Ëz4GÝÇ)Jj:Õ5ÙM8º'®~{¥ðé'ª¬(f\ËD5tN®t:ÞªÚÝ;äÄã ±ËÖ¡Z gÌJ$Ù«f ²ìÒ¡n-[l¥T\N¬@¥ãj$g7{ÛܹW¿ÌË xÙ¥-1iÕÍýT'I"1ªÂ¯%&j/Kã5Ãr6 ë@4Ü yÚej p(Vít:M5úíS¡ ©X(ít°áëõ·vöê²Z¥ä>£+¶ã)·øô:êÑ0? dÆ,a*gÌ<yröNS$· ³ZÃÌ%LóåŬºú± Sr®¥T«ÄO"®ièÂtC4Ü æÅ+DQ=D?r)Feë$ÝW:ê¬|í|dD`ae;[O«ÛYLF ¸ëßauuKM@'hÎhlÊeÙuXZ¶>c[yév9~{?h=I¨d¤&_æ[ZÓy9©âÙPçv¤/$ÈS¦øãbS{ßÞ§^J¬üàÕ+sÊZÑ!,¶ ##^ Y¿Ì¡³{IàNrº=Lýá(WOü yÂ0÷¿eæV¶$×ùhªLÍõÄDþ22êRr##{ *ÛÂüøö_úpßÒCGï~¸oé Ô¼F®k³éôº¼òÖwv &ñ)í:v¹@àn3¶w :z7á«-I"±¤½ÏËÅF\¶b¿¶¶©'ÌßÖÑ3p#µº¹½?| cH"°Í.muåsõuµî58Ú¢ì,&#&Z×´d¡åó¸úÁ««^¿0Qµqʤ1u ¸ZèïayüjáÞpòV@ºÌGå{´·nÝýüóÏétò,>¿¸%®oéÝì Ϩûø xgn¯ðå¸Z¸ÈÙ4VXóÉA0¦Ã¾1ØÁÌHW%dÙí¬qÆ~³4Id ¶lÙr÷î]Òó e7b³h4ZvIµ,j2SÄ`_)¼PWÑV²pt¤½CçâJ¶uÅÙãîÖæµ^/Sñç¥^mõT¹vìQÅ3Ïè>:gWEGá¥=ζ\´Ð-0(® ª'µDD@2 nnnööößÿý²eËHÌ4D yÂ0÷gÌ>¹¹¹999¹¹¹^^^dÞÝÃ#Hf¯Áì1ûç£w?û(H xX|ÜØPç Õ. ®^½Jîò_EdD ÉîM¿Ýê _¤Ô·*ê¤eµD^@ ]æáZrÞKôuV ?ÿüóõë×oß¾]TT _ rù¾ÏÎÅfdVÊËëZL8ú[ÿÝÛ?ôgãU!²áÔm-Ƭh(<!6£P2®Jó$3fÊ! Òef9eµÍ.|s:+,´0fûºñ\NM+°6çÕ6/ñt_¾ØÞÒøn~U°(%§ÂÍÁòÈåC¯?£¥Åðuã¾H§Ñ6-_T!n]âéðþ+ë«Û?úͦ7^åÕ·H??}ó«U!ý²vx#$dÔEEß x+|l êËÕòKðþí¯ßF;êÉÍÜï?Ä¥<ÉFØà~èèÝÈ@,%v¶å¢µ¦T-õãW »ÖIcÓj´èªr°Tw¶6Ç%É[;ûJm«tÜoé2 s ´¸B½'gj=æ0âÂB}Èã&Óþ ððþ LD³K[ûõuµî58ÚT¶ ùñï´Êär¹R[qèèݯ¶$Äèù2I$^ìbZXÙ.W(WúÙ&dÔÔtì\ïÎe³¨ÆC<qs²&*i ¢âæþA¹VimçÕ®4þÁaê>P¾wJ{ÎÅl[ëúê¡êîP¥v÷Én keJ hµ« %Ì?ÁJ×ѱ±ÍAK½mïÕvV´û¸Y2¡áü,Ô«¸²CàïúÝò{µ]Ïoò14P}èPXÓ¾,xëËñp2[ìi£¾æuG0¿°²=p¥±« ®ïlÎÞóè+%©B ! «ÜÔ×ÒPìä3IÛ¸ÚýûÛ5[×x´wÉhË]ëøùr¹ÂÙçbÏóp2SÏR¥Xª§«Û7(_æc/Èý³Ù¦·lÙ2äÌ,d¢}̱I& Måí[×xð]̧R,%+qÕêI&åjfíÖ5óðíø×ÙÄ$ p'LYÿw¾ °¢}òfÌC»Ïå÷öËÙï¯õszu»^>t¬)Ó ¼¾»²Auè$ÒsmLì¿Ícî´?õzÉdIÅ)ÿЬ&æ4Lb7ç «:R§_¹È¼BÄ}W3kåÊÌ¢¦Ô¼ÆÔ<IqUlø_ãGT' Ȭ}õ9¿¢ªlQsWïPZ~cò]±úR â°#AÏmðþ&¡a"ÇÝ®a·$çÔ¼FöûEM¹¥ÙÅͽýòä»â¤\qÏÔ*&ö×?_ñ"ªR,½U7¢P2[Q(ïKk:Ùi¤mR bBóJóÆÎ|RNçç¤}ÃL4¦jGe3ãØ-of7|tV¨é 4Hò]ñŤJg[õŸÛÕK¼lsÅ箹;Å&W1pê W»9ð.%UÞ¼SÏDSY( ³ÃáìÛâÝ@µãê"Geÿ3µzÏòíµ{;ÖóÙ-S âqçl}yÌòç6x?·Áçï7*æjbSwê·åÓPç®ùzXM(c¶øíÕ2¾ÅßoV°ÓHÛÐÃaçyê g¢1¿¸ºòþ®°[^˪{mÏ2æ åèÍìú¤qàÇ£¦äµ[îüqL¾³©¹éýpìÅøôÚKIUÊÑ1ÚqH®|ç¬;Õ7÷¾ùr»Ù¥[UÃÃÊÒίâJtutµtëeu]aGíLÅýúz:tëQÛæ»[Ò×3ëJÒÙ3älkÝÔÞϼ?<¢¼Q×ÐÒ7$WYÚX6¶¸Úó¦·©Ú&KlÌõò¦öþZks#v*ܲùRRUIMgï¼±¿ ¢ÍËÕRs_aÏ^(àÁZ;ÄýwK[:1'2ÑVR â9Mõͽ=m"þ!2Ð×1Ð×}j¥«½µ±JØäjSc$ÓhI¹âß¾ðU\éZ?'mýÀþp (kÙñ:a)¼8óí§Nö£/,/ªì8pÏ^´23´µ4ôó¶¡©UÁÎʸ»wZÅéZ¶¬<<*;>£îÙ§¼Ø[§úxvËq æl;ùè×-±uM=<º{TR¡~ÈSTØOs½âÀ¶æ<Ãv©LŤ¯¾öi²±4þä»W÷,ݹïhcòù¥"õ.ïþ:H=Éð¼97\ËNÅëTáÍË×ÍïKÂIVQs{·lóõÅ ¥Ûùgî±;*L$#gîmǶ3kÙñW,wε°Ð±gìd<¡9ÛN>#úõGK,!v©ÌÔØ@=ê< ýD¥ýà mø:GÒÚ{&¾TŤ¯¾öiêè|mßgÆÆÈRo¦6«w×)Ï; {1E(¹UÿËÝýØÓU<U()¬êx:ÀuÁ<koWKj·±0ôt±P;ÛÖ6öl[;¡þwêºó«Ü¨ü©é×§cvÄZò¸Õb©B9z`ëT0¯ã:Ó'QØOpD1º«ï¦@¿ëbì븶I_}+pê{ÓÄ5Ð[äiíãnùÕ÷%ÙÅ-Ïz[ªw×)?g<ï¸14&hsLËþhL¢_0o34Éd©Í¦@7ýNm|df<àL¡íwL2 Ź¥Ãr幫e5&[óÒÒ1°ØÓºµsðñf5úJé¦@¥r©ôç®ýüio¿KVq§«EàÇoâKÕíóÔ.V0®s2>1§áÄáÕw^Ú¾àRR%a¹ÔsJZ\íy MìôdA ®ß©ï8ÛXq[:ÔíóÔÎv«¡?°mAxÔB!WÏ@_ÑÉRº´oÈËÕ¶J[Ò1: ñ·ö©Øç©]%ºþbb \1JéÿõïN¶&å[§.uvKz² Fàñ³Úǰ¼¾ûûÔêÝO7Kämz#fߺóöáÀÜG¨EbôÇü5ÁY«L0Ef¹=|ÜhóÝ-ßxiå¬MéÌÖËGb ÀcÏ24§eÿËkuô}õ&Ô> ³ÍÎìóTæÆ¨èéÌ¿a"À Åwÿç`Àâæßý-#=j/!¤J,¥[¹^neÆ-¯ïÞ¶v}ó·«ûrÀÏßxÑÿñfõBb W¯§_NId#̱Twéééê¬ðµö÷ ÊÓ 7®vgòu¹ØÞÊdçz~O¿üý/sûÚBÂBrĹ¥íã²½\ÍÓYØÄ5Ð÷l ¼aöd ç%^¶|-¨ è÷ ===¯½öÚ±cÇlll/_îææÆ¬MOOWéþöÛo ¹¸¸ £Gâ ^xáóÏ??tèÐ+¯¼bggÇãñØ-!/^Ëå@À~Å --- NEW FILE: manager.png --- PNG 2A-W%GBL ÿkÈu èß'j'Y {þI³lY!i ²""ôHéÊm~õÆXiÕMKÞÑfÜV¼i1Ü®C1ý»ÎÐï§ýl6~õÿ÷DKÔá,L§ïP÷P<| ã. ;S[QJ¤OxG´®ÆA±!I F±:túH¯È6hê8&Ò¨ôêFk÷¬ìZíu¾ËÛv[0ê ªô$.niú»¦ÌÊ£ýÙyj¯$2Q ÐõEë4ª½Nd>lEͨߺòåáCÑ"WWU¦ú¼¬öÂÿ6v¥*±°¤EJ<ê=j h¿7w©<½pÛÉ*óÕà jÐU µY6¡öH¼ì®ºv1T)Twí©ÉYàxsâ|Ù E&á%#=Fdºxoñûòâ%ïh3n+Þ´îØ¡å£Mkÿlû ɨ^0ÿú¥NÜ¡.~ïÈ×>¿!Gw!NÄzîÈBû¹Ëi¼úÐ:rúò|¬ºp¦òÀöFsä¬]¶ÎwmÛn˾ռ?j£î-Mí%s¼òÈÏn§Jðñû ÞC½Þð¾»jT{ÈçP}£æLöô;tí¸ÏQ{ÔÛ½h6Æû~QƾOW{IëEõͦçMóAøÇºÄ¨R£²¢6 FC³úEB%y ñDíQò° ÷¤J|íó"v·s"ÊÒ#E¦·ùR*ìe,yGq[ñ¦ÅpÇÅDÊ+CöæUú¯ê°Ð`vINÜ¡®ï/¾ÌèÿâeÒnnÚrênÝQdàH!;túÚ3ßPòôGvvð¬]¶ÎwaÛnÇK«êgÑ]2G~FÝWc jçw_nõ´9£Æ ¾J[#& üøý¦S¯|ÛTúàÜ^Ùª^Öf%ÿR_=\<Ñà¢^JLO"ÒSE¦+·ù0ñ-Ðò·Ô®G²NUÃ]¹+:ÚÛ7-;v(æ]LG±KêÐêâ÷|ÜÓ¼gÄ£®fji77mí5½³þtèôé=DrÆý®òÔ¦wä¬]¶ÎwUÛnß>þA+ÒÏEã%s¼òÈWÓ<Õ¬?çkßòuñÂÕÕ^'2§{I{@·)ÏÿÌæ#o÷¢é 6ö¥ßË¿è\e/õ~0˶ÃEüì tÃùIïÌô#ï®ÈR^¿ºüeº7Æ#smiÑhªç4Pï_>TvGÎZÿ(#æ2F¯Í ÷ëÛw@ÿ~¾£_TÓ:E&!¤§LWnóÅàL`«z×M·xmÆmÅÃ;d>æ;ÔÅï|Õ¾$9Âk°Ä£¨øª}A®ÝÜ´µ×x#h+¶,IêÐéÃ*Ö/ÄûÛºm9ë?ißþDCä5ÄS ]ê.G}5ÍS%Îôô;¼\àú G2]ÑÑÚO§ªU Ý5Õ+ûsQq3ÌÕ¥W»8W6õâñÛÉ ºc[LB;¶í.Ûæ#óò¥mÞ»¶7-{u(FË\sæÀ{í,¹þù[Òÿ»¤nºC]Ù_rä°u?:²C§¯¦ÀíL9]¶Î?¶¶¿¡ñ÷1^²UÓ<{¤xÌ*Ef*êÄT&F ý¿ÿ{¾Ç.ÉeïPÞ;=¦ÎSdö¢k+E&"¶æv´öËc#áÿn3d×¾_Ä.w(ë<kí±U0LE&!m;Í]¡jCôù_ìÎ×§í¿ªÏx/ѧÁ]ïPÖyÖÚc«`4LBÛvÛ_¿,Û ¼%ý\8XÄ.w(ë<E&í V0LZ/V«>{ÁKFFãÿ¼Ci.^çYsXÁ(2i½ºG§á¡K£Qdò¥QdÒ(2YYi°m§±KâJ£È¤QdºV3GzT,°m'ìx\çù;³q$ÆLBIØ¶ÓØ%Þ¡¬ó¬94>.KcëFÅBIèÂÒh¼Ci4LVVV>*ÂKFØ¶ÓØ%ñ¥QdÒ(2ÙÌÑ(2 /aÛî6ÖTûà\mçó¹wºæþ=ìxvyÕ5ïÙt«¹¢Ë³eU§ÈìîvUW]{Iå¡È¤±u£b¡È$½Nd~ÛT7?ªK²: (>ì_YµÜýÚQ»öyiVÜÒ´Ääé1±59«»¼]µde$å'-ÏY±ÄÒº¿ðo*<MxØÚ).TjtÌõíHdÈ.w(¬Kª2yÚÃWªýl»û&ê UÝ-D¦ýf¼ùvPÓdªj«k¯ª<4¶nT,¤7Ìß_gºéb}qñêdzB>á3çkÿºôîÌ?ß3ýæ6ïÙ [M¨iVµT½§¤È¤±u#¸½g±yÏ&õ·÷¨ßÙàÊÛ8?-3ò;-UÆñ¶ ξæ½Ó5O{øÂÐæ9ö¥iâ f¨;(üç¨õFzû_oØnÌÙÜ`òñ4öòð©ò7<¶Nõ-[gO ÂW[YÁ%aì~±¾X{:M¹oùÎ1miñk¨±u ¤ *t'b9²+;hj°6A¿¾ãÙ%ñµU'ÕÌ4%~ÔL5ÓOÀ¤¹*±ÔX[7B÷ÝD½§ª?Yy³±X½²¨ä¢®µfÜ~#ß¡Jh¿ñ·Óæ¦ÚU ôÂÊCIcëFqK.Ôú'x_ÞÍËÊ3W¦'Wk´Ï²ÂcÐü'ªµ;e$ÅEa/tù2mÒoa¡î ðoFxù«"!s¯«çfµ9;Ä*$«nÎL8OÈid-f'+5·òÑNQJBò»ìÌN0<¹eqøG~ãÈÓ1Æä%Äc/á©ÞóÀ.w¨i4f¦)Q¯²âjgýÁ©ÞÝzõªþdE&. ní£ûÖéZKõÕ~#ïx%l·ñ·ÕÚ¯Ò*Ð+O¯ë7tiÆÖâ¦.lSenÀ¤¹ZGÄ8Í6²uáo!ðõî¼~sµoa N¢°eòØv2ÔôÈ®lmVíØ¬Lsv$7|>ÁäÒá/¼qåУÖÅ}±* ÎBÆm´§S*îµ7ÆÇÁ úéTÍõíÞCýt/µª1ÆXB"j\1äÃ.w¨i4f¦)£æ¼£êùÕÃÿõG%¶u#tßMÔ{ªúøÕköиv¨ È?íéàë¡Ò¬´Å1pzPÚø°(¶Gí¯îN_&Íw'bAzqÇÅáÃ)°Kâj«NV3Óg pÄq#à¶E½UõJ%6½ºõ&ê=UýÉLüæ2).üx¢ÚØZª¯öyÇ+a»¿&Ô~V^Xy(2ilÝ!néÂÚZÇLùZ»Õühb@5 g'=¾jcle¨5x9p,tóîèHnYéN²ðäù?-1ÕyªI)ìH<}GÜ>VÙ°3»$Þ¡íV]c535TvÓtæêèMÔ{ªº+,aÒÑ+k«w¼:Òø6¡Té^Xy(2ilÝ!=Ê Õvü"êò×ÊlºU h]h>)¾Þ°]»F»$Þ¡¬ê¬óÝ]sÜ«ïm"ÆÖÒ3]Øûgö4VäÀí¨ßº^ÍJ£±K¢÷Eë"<E&9ZéÑV+}÷.,FÉ;Ö#E&"Íôèô0ÜÒã!=Ú mªÌÕ×%vït½<IcDIcgÍé>ë¦~Ðu´ë¤È¤±G§b¡È$®Ø¶kÚvоm*W³ÌÛ!5:æzÃvKH¤LLO£QdÒûbgÍq³de$å'-ÏY±ÄÒº¿Ð~Ð9³ çºNw¤g@ÅBxÉ-G¤±"gö uÆU¶µ¶00\VBC²´Å1ôih ¬ó=²æ\¬/.^`»iKõÓ©¨8hË«·I_¶/oÍCÛè3ûr®ëäH&=:E&qŶ]»Ð6úÝ?mYNW:`±³ÖÂÊ )M¹>)FXbÎ(RGvÔä¬VÓýa÷ôX5¥Ä°ç'³¦QdÒûb²51ê½¹in5¶ü°Öý É+ê·®W8¤%ZB"d?ð¾ Ë"(ºÄªËêÅ6vf¦'Ùz4ÔþV'JR!ÃhcVÒêú²;-UJ³´1¶z=ÓHÓ_@u¸[kåï|×IIcNÅBI\±mWë\£G9a&!:³.mÔwÐÑî/Z¸ H¯i±e$¡_Ä.SÆÍ:]Wðà\÷P?ôë*ÿ>}^{Ï ÑØ%QdÒ(2Mp«¹¢B2F-Gi«iËd"+r¹öy)b â ®Îýg¡ ß>ViLË[ q ¯HÌ ÃŶ¿Õ^=\ê5ä¿uOÊ ü ?µ}ÂêìÔÚÍ3ýæ~U+)½HÓ_@u¸Ðº(zRWuºë¤È¤±G§b¡È$®Ø¶£c¼ÙXz DdäåOKÆ|ëNKD¢ï<þÁÙåÊ¡GZ}ªl}yøÔõÅGveM ÖN`Яïx¶Ã4ÌÝ¡o-uß~ãÈòÌU±Á>~Q±ØÚjÚò£õâ2®h-ÈP¯å}ih*mØVâq¯¼Ý¼g®×¶ç'-_¾ðäùÆÃt«s%lªÌ}Ëwi»dìË´[gO ¾vR#mF:\ôO{øBE«Ct¦ë¤È¤=±Ù)2 /±Õ¶«I6'.Ë´X´ÃûÖ!½»zzg@ÿñ?¨Æ.è±v¶»±õÁ¹Ú¼øeq*S½ç;:M7"8A]]*Lmm- 'üöÏvlôVâGgv¶¶üûòÖ (-MOZ-o9JË/~©6lXõ¶æ\7-DFùÚÝê\ Rß]d2Õ!\¿u=º3|Nõ-+¦4´õ¨eIñaQH gºÕVËc\2Õ6M¬í2Ô¡ãæGUnH³µÕ¹^9´mâ«3ÄGp}:/ÏAdDÒTöz¶"íüêP6ù{·3]g¥JJu§¥*Ð?¸yÏ&T\ÝCäûÖ¡¶an/51£é\]>[£«õèV«={ÁKÖ5 ÌDÁùãjyc'/!]8#|¢¯Õî¢0ôÁÒ#FºXñÐôQVÑ(2¤¦¦¶µÉ¤3~ûíchÛm=:«ÛjÚòCqA5¥$T¬OAã¯XTx×[kµaÓÄÚ.Cëà$'"rd«s%Ä×C¥Yic ö°c|XLºcÚeÅ-Ei±`SÀ¤¹òV§iJÓHû¿ _/Zâ5ÄOÜ2y!tz¨µ ¹áwÐí¥&f4˱ËgkdNqÐA£múOv4qÆ¿Mì÷-ºpj*»$â/_hkkûç/ÏÍFEE]¸p?Kg0cËoì#ðUÅhÃv:'XBé¤N~¿½]GZ©ymÒ ³óè6u¦ëì!"³TéJxåÐ6|EåCåáå/sLA ÊëLÚãj÷MçrìÙÙ£BpDÐ. ¨Ë_{°$kÁ¬°ýE>äéb´´ÚµÂh4vI¤CÈ|?ò(M]]]^^Ç 2nù¹~ 3§»Î 29K®T0(j$ÀYúè=¾¨DI¯=v/UlÓ¹»c¶Föè'4Y9hвÉÄz4E&ylÍÔZ¤L×oùÙ7õÌLÎR¥-´%²*ËH"M[#3A¥ÇÄÊ+Ȧ{©MçrìÙÙ.BºÜ¡Ñ(2Écj¯ÛvZox'³TI©î´TAjÿAAþþjÅ!Ì ¸åSw.værìÙÙ@Bì·íM¹2÷@ç¥v3ÃËèÂÎ-óK£È$l¯ø#PdrÝû^4»,g©ZgY¢úéb}ñ/Yê± yò©=ûs9vÇll !vÚvíSú4´NicÐØÙ ;½Ì/"°½â@Ù ÎÞuYFÒÆø8tR¦³v«uyÈu2{ì,UÎ(ek/GNª³5²&ØiÛ+rfO ê|ûy§¥Êcàëòø6Üe~iíWîµ¾=¼îÑùI˯}^ µÙº¿¶Z¶ðñXw½Wdrª';å{tBý¶]û¾qå^[këR~÷e9ZÑyÓBvf?P¤ÂïÌ2¿4LÂö?Bøí\ߥÂ&ÝÜã}yít]z¹C» ½ñ,O × ìuï)29K{tB;9"ê)}Ó{M×6¦¼Þ°=ÓbAß 7åø[Tøÿü;:³Ì/]a{Å¡~;×·R]=\:øÙºiMPó¦ Ùõë~ØEæþ4=ÇS&DDãÐÐPËòdbwt|\ÆýWdÍ+âFðõlG}T¢éʽ¦kÛZã76xzD ;¹Ì/]a{ÅÁi¿ëÛkKÕT;}þ'ÊK{f¢#¼üq[:ýÝÓ¾Ú7º©C¤È¤±GgÁ>¸\Û®fý1]¹×t aÓª¯Õö»Òwf_»$Âö?s~;׷ת y qÙüÈ¢ÑkArfèxJY<">, ñ2CA7u=Ö«õõ¶ã3õéóZGakm<ªxò»L_ ¦È$¼dÄVÛ®Öæ5]¹×t aÓèk=¾.Þ6ÜÉe~i¤ÃGi:ã·s}{m©*7¤ KÒ½Õ9ö¥i8}HîðóÕdxÒ-fèxJuÐé¡ò çÒ'Åø5Ê3WÙÊÐñªØ(ü3ÛMbO7ìX0+ÌÁwZªJÒãâ¾Þ7ö¥iêAäÕpVð÷e¹H&1]Ø41ÌkßCÛ&¾:C=бggæ;[(¡?DzTÓ1#ßR ]ý»sê£÷(2 /q¤m·¿r¯é¦)¡6ÕÚp'ù¥QdB:ï·s}{ñÒqËÃîÍMC?] <mqªá·ï/Z¼@¤ i§DGA¢£¤ì¾±çL\ïºüµ¸0ÐcnÍ´X*seD[é"üâ¨òÜ6®·QMiæ&ÍEÒÎÑqq4m'wËfg«s%%nä_ä þê®}èÜô¼PíPuÙì)AØöfcÙ/Ý.Å«¤Fâ+rƽò¶úDýàÍ{6¡ÒSd^2â#bkå^GÖîe~iηí\ß^;Ý´åéº8ð08á"%_ÐÞñºnê{Èüª*: jÊôµ][[½ú©¥)ÿcç öE¦ÄòÇÖ ~ëú°PÓùmmu®0QoËH7*¨|Ï=3Q÷×àg'Ê?4øÄ.Ù¯ïxõ·qðsÌÈ·¤Hºx쮽ÃUn8ítÕÂYæFIy"³WoßXiT®¹î}OûòÖú¾këþãºH=D SÏ»Úí&Ö_èôPÉÁÎðÈ®lyI `J¥1ÎGlz^ÚHU ¬¼úéþ±5)îâS=Úº©9IxÉÈrDh4LBضÓ(2»¬²ª·.°ÅÁñaQ ;³¡ð©æ.IKܦÛbO-ð &6Lÿ)M_¶³ÕâÕÆÊ _÷lÊ[ª{W{.ªØicÊ2(MORÓmÙÉï.§¾?ºËZ1Õg¶z·X-nÛR»ïd^2BGÄÝ©2×ÎC\hóÕq7tK²Ô2§²{§;öÚÛBضÓ(2»fvÙeé1±+#£/}R¬¦ÕABAhÍ¢ÖºõâÆ°ib£ÈÄAíÛÙêD gúÍ= H¶LÛvr7v±u^ªØ·U¥$l4»¬Z¡È¾È¼ÓREº9qd$:ü 7³Ë. pñÙe¹æÛÁKFG¤·ÙµÏKåïB4ÑùIËèw·ýðM ç 2a£na7)ài_õߥömSyÜü(õ*º¡òÌUå¯U.s½a;Jèxa(2 aÛN£ÈìâÊúUU®Ï.èú%´ePÈõ[×Ãß]ÄâjÈÅúââÕ Æ°ë¶TM¹3ýæ6ïÙC§àxi»êÔ+rfO L ¿^WmS2:w²tø*¯Ë»!*ÒA[. ¨X¢fºvd+'¦uáoé"ÿ`ZJ6M¡0i®©LòÑÚßê\ MçÚÑÊ©ÞÌñIm&¦ Òcb¡ß´Ù&i´%QïÊè¥õÇÖ(»ËyÉbWÚ²áJ\PtR"U¤#Ŷd¨¯E) "¸ ÷ïß¶ZwïÞ¥ÈtuÙ¡%L¤oë×w¼F÷N×Ôä¬ÎY]ôÝå¢ÄtaÓÄ0¯!êøêõôõKìlíhñÔÉc_Î^ús÷Vs\X °q/@2tÉÈ?mqzüI|äæ3êm¯O'&Ñ£oT¤³ÖBµÎvñxºÅKØ£BlÛïÙs°$í 4ñ ÓùIË¡ë ÞìÊN~wÈ'ymO·;/5Q6lXÍy£=tÜü¨Ê )Æ¥Dìou®É+´0-p5´X£è21MB¢s©\åÓ4qÖ½è°I"¶ûg®ÿu?»$hÞ³IIGéÈEAJdBôö¿ÙXFI(2rôèÑÄÄÄþ999ù/¾ Èt]Gä§S5uùk¡Ù¾ÞçàÖaÏOÖõýè ¡âäQåáí,i+1úÅêìTí¬ÐW輦íäncÁìlu¢x2c»ô¸ð ¨ÜØ£BÎÙæ ¯!~ÚëÐéCñUÛXi·w¹u´Z»1Ò_ ÞCýtã«¶F2å©]|ª±Gû"S7×¢[d²Ã`OzÈDÓXíª÷á ¹~ ¹ª!ìHw×-øAù$õÖåñ¶thëµÏK!Þ$\(+bkÍsеV6lØ(2e ¤4}9ÇþÖ§Ôm vmÞ³)+n©îÕí¨2§- ×JÓÔT öEfò»äoøïî²dÈl2ÅZ¸¬¥v³[¼É}<é"F£È$>JCèÉôéÄì²2Öç;:@- Ö7-DÍ/?êÅ7aÓÄF#Úù¯ÚÎÖo¦ßÜót`kÀ¤¹m'wc['¥Ê|ûXeQJÂÆøG³Ëª%ìÌ;-UP¤AF^ú¤XÍ_¯]vQP[Ì.KM3é©"³yÏ&5cöc¶{§»ýÅNE&!E&ÿíî-¶22º~ëzXò»Ü¢G§Á¦ôȶýakíÓ¾êÙ ±Ôèµd»ömSyÜü¨÷Á¹ZåzÃvKH¤îè4LB¡È¤È¤9ié1±0wéÑéa°i&=²m¿rhzÈBBáW¼:ÁÎ^ëULY±£C¶00\ÖÆ¾jAE&!СȤõ¢fâRmûÃÖÚÏvl¬Ü¢uaAòúëUÌYkáùE7ì¨ÉYM XÚ°3E¨ø;-UþÁÍ{6M|uöp×¶ï/ZW¹ *KÒ!Dd}tBÍûý§-k÷åQ *KÒ!Dd}tB]=¼íO[ÖîË[ z¼åþ=ÃÌ6]¡È$E&×õèì0ØÇjÛ"¢¡ô KÓ$êr±±"'jÎ;uù¿>ìi±e$AÑAON7ët]"!ÃB!ù¬±Á TU¶K,Èöò§%^Cü~<Q-_ïÎÄÐÐ×>/źñö±JNd->s>29ÆEgðà\÷P?5ÛL ÍÌf]aD+E&"°i&O¦m¿wºæi_'\ !zñMDjP½$ ±u'áO½X_§Þ4·©2W=:;ö¥iÈ:p?ËÓ°Ã_xCL!èUrÃ7ËPoW*åi,À]ÙASµçÒ¯ïx¶ùìHOÒz24öè¼ÏÙ47°²¤ø°¨òÌUiò ñRùDTs©C 5@ ¥ ½j« ³ÁϬÕ%øøýçñ@?m·éîݤB%>Ó¤bÂ|)2)2)2 !t³XU¹ "M@ݸ_KÓVFFË|&È aÛÉÝúzÌKÏ[ªõG ÎØàÈðÔGïúJµ¬DÐâÈùàèöËýEël gYJcù ÇãFÙ_ÿú×ÃçääÔ××óƤÈì&YU¿_¡ ~kvªúAËù~³±D7ò);J ɶ8ħÇÄB@êf<vzVa TÒBIÊà§iÒZ¡r+JIÑ\Ü!;sæLEEEÌ/ìܹ³¥¥åÿøoLÌn÷NïÆWÏA¿ûíIþ¹ø !O;Ã}?}Ã_xÞAiOÃÎÔåáÓvê×·ïßýöàÆ³H©¾în§¨¥éïw±çÕà Qs&kãE~WgÇþÒ~Fg.2ßôG@bäwgØIA+ôü<mÎE&E&E&!¸±³øýÑ]X!Ò®xuBj´~VDf,ùut±<sH"tß}Y2¨x§¥ ²ðÆjß%Yþjܲ`VÊ'$¢+Hù¨R(UèU[À§£#½ýo6QʾC6oÞ¼uëÖ}þùç·nÝâýHù^SÄ×Oõð°çÁ×µøôâéÈ3¥Çþ;ÔYqÿ¡hN| þú#[mÜ¢j¿ÚÉóVóÎ@ÿ×´Ï#òÁ¹½ÐÞc_úý/ï EÓßÁñ5½2RªïÐ% ȤȤÈ$bµZù#ðq-!{sÓÒcb!í Óä±UQëS«gV¡%7?JäèYk!t]øÌùÕÙ©icJÒez h§áåÌ3ÔcAò õíÕÃÛ¢æ¼SoC2)ÂU& 2- sedîWRy ¡ò8±6·ý¦µ)w´^¸·³øÓ©y+²ÝH£A:ʤã¦ËaÓ9R 1Ï=ãaº»#EÕ}µçþ¢sZ){]úd$À¯¤ËC?ibÏA¿K]bGÎ""N*aeà%#t]ú¤øzÃvíº4·pÈ´:SqëÖ»wïòe»Ñ "óÔGÙ#¼{ ñþ¼P»³£p<å=$^2 B5g²-5êÅa7ïY'ãá3'hR®{íðö±]B3îî`QÚL§Jpü¬ÁÏ ö×LØT¡HRÐôG°uâ¦ãæ¿)ï^Êx©´tä¼(2)2é¤V^2BgFë°C&:³µµÕñªÄ"íFÖÉ|Z>ýÛ¦RÍ{ÓcæØUfë. ðUÏ|^ox¹y}¶&g}O×åLûï²ËL¿1ºuS®.DüÄWGÈÐDRBãµîÏ5îî`QuÃÆ<µ _>tÁ¬È¹ÝwPM[%1M|ãÈÖq¯üJ%3©¹9/LL:©ÐY¤ÑqÈ _¼äþýû999ÑÑÑk×®©©9uêbx;³Ý ¹¾ú(ra ×ɤȤJX/ÅYóMj LGâ]ß´%oªÌI·{§zgÖÙ 8°eËżsçÎ3gδµµñ֦Ȥ¹=÷ÇÀ§ú{à{«y'Û4L:©ðÑYüÕ¶Ö>íáûÃ7vâ¯}^·´$-± yEzLlMÎê.ì¹%$RC®+p:CmÉñé9h¼äA¦FÇ\oØ"ÚcvÈþþ÷¿744ÔÔÔð֦ȤÑ(2)2 á%#îá,^9´møoØoªÌé7·yÏ&`ØÔÉnûb}qñêùô Zè5ÄO»gGM[òÆÙSßwa`xKíf>~]Úâ:X=Ì!#4E&TÂÊ@xÉHgÅ;-UJ³jrVëæh Ì«ÎNmØ]¿uý¢ ûñùIË3X´»·î/iÖÛòýÑ]_¼ûªMg çA4ª2|ÛT^h <X ½t_û¼Ô{¨=Þ¡CʪÌm ;ÊÊûòÖ¤ÇĪÅW=?[8d 555þóù'E&FI'°2^2ÒíÎ"T¤WKíæ~s¿ªÊýme¹¬°P(4kAFlðÊ )öã£æ¼³¿h6Û½¹iËêÃq¯¼ýà\-¤Ô]cEÒ×å¯KYFÄäßq³N×@F"t&TâícHé¡*çM±SxcvJ¾000-[VÜR"5:éQ~[`ÍL¯9þ-í :dW®\©««KNN Á§Õj=sæÌßÿþw¶4Z¯¤°cp5лóGà%#.è,ÎÔT« Õ¼8æÚ |ÊÇsÐØËç?P$3ëLõrÆ×«·zñM/J/n~l<vÔ ±ûÅúâ_V-¦ÞºTAOʸ¢iáM3´SrÄ£`¶ÊmKøÈ®ì ©ÁÚ¹úõO˽²»wï^¸p¡¶¶víÚµaaaSmRdÒh½WdòòÝBég±~ëúeqø&óâ³âjçÈyf+þÛ¦òç¨ õNKÇÀ×ì`IÖYaò¬éæÄeå«JÓVFFË+ÚywÚNîÐ<òH>cæÐ9¶ o¡«Ä¶Êj¬àXIùßóÀ~Ö}ûåþùÏþs]]g¦¥È¤Ñ(2iÒeÎâÆø8h§NÕ\oØî=ÔO=ûúñûë~[=ü_säØ×MÌ£ ®z4B(òoa`¸Ú]̤ÞÛÁO&akÖÁÏNDimÞ4C;%ĶÊ0i®új Ô>µ[£³íñýòÝ»wÙhüOÕâOMRd²3ë^<<<ø#Bt}Êsµ&È:ÕÙ©êÑÔè((¾û²<cE ßÙ/H^¡õG °Kyæ*õþ$¾êÒhçÝAÊÑòÀªG¹õÇVáM3´Ur¸Ý²Á8úHoÿeìg{v¿|ëÖºººË/ÿüóÏl7h4G2i¾ð#F@/2fÌQ£F={öúõëééé ª¿)**B°Dzyy]¹reâÄýúõÃ×{÷îÕÔÔ ÍÊ+¿ûî;ÓN«ôTñL³>|øÕ«WQ[û¶{ô>¿!éÛ-!¤÷8YqKógZ,K²&Í× ÏZ¡ ÂgÎxK[S¨¦Z5G "sÍ5aaa©©©UUUþó{Û'}QçÌ˾4uÇÀ°@ÿ×ðÕÖiÿ*-ìþ4¤é¼}é÷ú÷»ÓÒu«»¤`½ð8"ä%´åµk×-ZT\\wóæMOI ÷uäè?üðÅ#PdÒìXóM²Ì¦,s¢[ ´]»wÚ¡·RéõÚÚÚZ[[ëêêCBBðY[[{á·ád»A£q$Ó\§ÉS©KmøøY¾£_µ#ê´a*Ñ+Z¦Oøµl«ðº°©¨~<"óöíÛEEE7n,DØTæt'ÐrÐóæÍ3írÊ~Amm7[6îëÈÑÑÃ5ÊÁâu7V«^¾{ÁKFÙvíóÒ¬¸¥%iÉ+ÒcbkrVwmæHm!óÐ:g[köð¥Sðé9hößÒv'J¹Þ°Eèõ*dÞ ´¨k×®ýÇ?þÁvFcæB"syøtíS¦ºÇSíè4ÏA¿S##½ üÝÛí:l¼wz·öw¤¼r¨@;Ç,ÒÈÞA©Éôúl7Lò:*ÂKFè,þfM¹3ýæ6ïÙ Hü*s[eS?,~ôXµ@˰ç'Ó!#¦üå/Y»ví®\¹â:¯qRdÒh=\dÊ<þ¯ |ª?,hê8í:vDæ#[ǽòo#½Ôå/C$¤©ã"³agª×ÏØ`ÿ° #¥ J¼}¬*g¨ÊyÓBDnl©Ý<ÓoîWU¹¶2D$Î+, YÅ/JF&±ÉÖ¦ýaQ~[`MýãÏÙÒ!ëU@X¶¶¶VTT$&&lذóÌ3Oö [m»q±~ó÷Gwh4¶in,2;i§>Ê[èÇO¨X/E&$NÊhä¨ßii ¨âæGý¶ÕÛ"à Fxù?ðèñïîzÚÃJéfczÉB«~ëzä9Õg¶Ä̯¶2øç °OßjPÂØýb}ñ/¯fLSo]ªÌÅ 'Õ2âÙV2ø©fú 4W%F< f«lÚöÈ®ì ©ÁÚ¹úõO´ËÝ»w[ZZjjjÖ®]ÁyâÄ'ÞnéuÖúGÓ NÑh4L^ø®ÇÃý/é"³©27`Ò\>üøýuÆyTkA¬U½5<U6ü 7äµL®z4Ê'ÎVæÚy4É9´¯¨\yoS?<vY?;ñzÃö_Þ×ðûéT ¾zõ³aÔwÔ¡q^jÖ¸ÝM~"íS»E) 8:ûeÒåüío¥È¤ÑئQdºÖ ÿꫯaÑ¢Eü±DÞºu«ô$7µn$ÉrrrÒÒÒÈáÃ_½zuÌ1>>>---yüøñÉ'÷ëׯwÒÃà%#®#2µS×È×Ôhý¬§Ú4ØZ¤q³,Nõe$%DDÿ6g[Òg®²yAò ݬ?ï«-R®¬&æÑe®fýö4AïÎNU¸fãB"ðÝåØª$UâvËCVJdâè#½ýo6±_&]NIIIHH\«ÕÚÚÚÚ «qÒ¥Ñ(2iÎ_xÅråÊ.]º4räHLNN®®®~øðá¿.Ù éééAgJäìÙ³±ïwß}wóæÍ#FHä°aþÿþ{*ÂKF¸ÈTSר§gESU¬OÁ&céÕ{#¼üeÄ2)ìÇÕJ§-&O®Úʼ$-á 9_=ËêȾÚA(Êh* õÜ &uS *Í ªfåÉOZi± IsåNÓÏZ¡ Q6ÈÑ´Å1(îèíM¦É*³éªLØ/.çÿøGKKKmm-¼°°°µk×ÖÔÔ@pvr¢Zú¢4E&k.¼RÏ=÷VaÚþé§À'vÈ~ýúI¤6%JõñÇß»w ð'+2Mí§S5JÝ9nîå\æÚi,Ç~ÊçjÛMc¿lÈÁwtÀíc ;³ãâØ/Ç&8!/Vkjj*ggt&}Q"æü ¿yófuuuIIIYYÙ¼yóP´¥?µamä줼zõj^^^llì×_Ýû<ôvìøyÉ+LZwØ¥O¯7l×®½É~<N:ù®&Û "æü :xð =*MèííýàÁGF2ÛÚÚÀ§É4M)<yÒÇÇÝ!"Æ~<Yþþ÷¿755ýõ¯e»A£õ.I¦CWzòÆ>¼xñâ#~øáDfeehyzzÊ&tLKK+++C ´´4##£]yíÚ5õÚ'!PdÒè'Å[·>üðÃå¿ 6fä[wZªä+ÜxEWoõââ¦X2ÔûpN×è¶Ciý±ë ÛóC>ü0ߨÚnuºÐføzït ¼®^þëe:§=|Ej]¢27Í B&øµU$bp ÈäÔGï9x¦úÌðì)AøêÈ^GveM ÖÎýÓ¯ïxöËÄÅ}Q¯?ñº\áVg(´$m@ÿñÆ?ñÄÑϯ}Ø¡[.SÈ~sÕײ¤@ÿ`W¸:+#£dáÇA"ÆÎBÚïS>Û±½xÃÎlÓVÔÎÖLºNyEðx~<Q½/ïÿ±÷60U]ÛÚð?õâ_ýåò¢¶¼U_¥HA¡*ø²å@AAôp@D*\ðçU¤R% ¶çýR´5bµ%%1¶4¦1MÓ¦ñ6¦1iL1=Íù;Ï]w¹Ö^{Cam|ìÌ=ç\sµöÞcgͱÆÜ¹?o+hRCI>þÅó®D« 9Ú²²ó÷6¡]j®ziy¢XñóØê0jtÀYÚáô¥×'') Mà`>ön(4%źp¬XÕò½?صbqÜÍsµvf©#·¸/¯N²©[unNåÖ-rRxØs±ü_&ìø¢·/ß4;÷zð=HòÂ\|ý7e¢,*g.wXBCbÄsÂ"ö;bÁÊÑ£ ~"þDkà´ÇwpÀÍÄý-eÝìºè á¤ÌÎ׺Õ_iߺÂI#ÐV¹á÷ûÝûÇ_n©Âï"ÞV^å¥+uæ.×\ënÔÊâSÐ ¥mÝÆEµc_XwªªX\@ëÖ"íêÊÓT~U=aëó`x?8Y-HíÅõ3ÒÖþQ[~$$ü3sÜn7/?2ÂQÎ"þqñOÜTV¨[[³nÅüóîï<ÿx]¥ö±@¸Æ²²3øJïþÍVß4·ÄP à] gp7QÐ>ÇèZá§Þ®¤ö&½v(ôÇhÉÂÕÊOáàh8:6¯¼.xH!³^¾£²SáÔÊ·pµµgÍÿeBéþt _`0|·m¶lÈ nÝjdXf/ÇÈÆ/¶~ÜQI#=ÌÐñ³Zøln¦òS0µ`îòß8°bq|è]> .îÁ<ÂÂ{<MåWEÙ ËO_[éñ,ðe|(ÈïI&I&AÆBð##lý§Æx ÎêZÁĪss@ÞÚ*wõ >SSÛTV¸1.Y>XÚPqmYÙYæ¿Kj KfY·ú áîìÍõÅyºMJfFÁáÈNL=UU\ 'üoÏE¾5%@,Ã篹pÑ £5æÃÙO~Úkÿ^zEvBY>kr®»ü_&tvãtõNÐeXu«ñY_-1´JI0 ~ÑY /Ëe%e7&ëÙ=j¢°2× NÖf«7Õþ°·Á3§ í¹`ßð³ ¹xiy¢·$óâÇáÚÕfõÚã·ÖÊú³{.¶§©ÚI,þh>s¾¦²§üLu×ÁþYÇQ$ó®ýw¯S(ü3s2ÞzëÿþïÿåÞ½{Â$É$F2}{½MÓ"µ`}ºåP¼ÕÞ Ö¶;ºx«¡x<Êþ¹Øé þ ni|¾Ë·+f}æÏ¿öÂë9Iiü_&<ÚKÍUI±®ÎÝÊL³Ö éº Á©ÃEd)^µëf.þÕ7ÄØ'øæKò`]·iVºêÊÀ!åD^µÚYÉl~µP Ì Ò21cÿøèóõåâvFj¯d,µZX\pZÙùìp¡ÒÖþQ#*o« JÚ?MmYÙS.Tj+íŲ9oNàgîÿT(ü3s2:ÔÑÑ!Ë3gª««yYH2 ?%øóÎO9spÈ.WÒiößù:MàØ}sá53·ÿË´O]*÷ÛP¶oyE·N^¼)³±ôñF> %ù2Û=~ý^|Ê´áûÝfFáû|÷Ê °5<Æ8»vi`NU+c(¬[íLÐ`Pt°,²{ë"Wo_<>/"/Ä)¯qnøtðéC©§Í.¸G¬?;ÙÔÝP.ÿÈʰçb¯óxʯ²gNRÚ ×+PWÉ¢íEvbª¼}ûùL& fÎÂ_~ò·¿ý Ê£GÒÓÓÿú׿ò²d~J2ñ÷ßÓT æÖUWæ1â°ó5äÿ212ìWÙe\= "§ büá£æÂܽ9sºÊ¬Wf¡Ð¹ÛPçáY/*ÁÍsµ{²³·§¦ßê>8-Òlví5Ó±0)ÖÖ$SH|tBSY!ønË_0Q0ÐeakAØÐS<F®¼ò(yâ«"×}þVN´Æ¾°Îú{ÔÊú³Óö¼Üò8óx¦ñÊx<MåWEÙ¤½$3WFOÈãYh³Ëfħ0», fCAAÁ_þò|(W®\ÉËËûûßÿÎkBIø)ɤPø¿L»A¡ø£ÓzûP mI&?ø'gÎÁ"2 þ£«®L2½úâ¼ìÄÔóõå¿uDÅ"ºÎbÌÏߪ ûó]x{áõ|³ÐPëV1X|÷Ø^¨*³§â(íÖpZíÄÔàr£?1ÎíÇpúre¥ò ß\x³f÷ñ=êmß§½ fAÑÖ" ê3âSä2dg=cJÿ LÇʹËebR5À]3vÌ"ÝvC,¾M {^°!Ã!·ØH2I2i|)üƽº×ÛfæcL¾¯l=spWÚÚ?v7>¬ý¨D70¢¦JÔ H[Ð*±ÿï°,ÿðQ³±³Øf vGnQz&8¡Hù_^j[·bXÁÜÀ'1)ÊàxûýwÎÙS²ÖäUëAÿD{Á3÷dg7æÝ¡rÉÂÕ"A¢²RyF¬vp¹âBáj/ÙEI±÷ÙÃQY /Kñó éÿCm¸hÊ] iå¿ösÆ=¯,û hÆ/tUä:ùCd:^ùòíúÐcRÙ¡¿>¾ÉöÔtXHØshÓJ2 ¯dRè~þë,Þ¾xìø?É=¢ØWݬnʼ9Ëî÷µ·`Y¿q sqlñ¦Liú(+Sc|ÜqD{}dÁþÔÚ E6Æ%ë6¡Mód¼ÃG!É$ßÉ^½{l/þû%YÒEëìlð:·9vÌ"¸P§«wîÏÛ R ~xìðÁÕh<J[VvÁ!4[×ziyâùúr;Ú¡Kóáa.¸AxoÆ}p^Ú§;kvcIãqþ?ßèPV*ÏHµ³x¼Õ¹9å[^Ñfý^êáÉqà] =K+GóÓµ¶3w³äØl1%BKÁWÌDü¶%o4r<mYÙDäM»Â-úà·fT̺Õdú <hÒÍsµ08(Ã|æ>¬Ý¡1;1U<>s¢D%X(N$íNOãìÀ(0VâöSçoÃÚ¹D°]¨6 )Qú(+SÃÒ¢§Ö¤+?\ûS!ËoToû¾¬iÓH2I2)º_íþ°ñ·?xíZÇV0yC.μ9ËtºÛÿƲ²3|&øCJ&¦[´h æÚ@5¸w®. ÇE¹öON<*bSÅ}t.ÇþÑ¡kÄÆJåÁy4» ÊCÒÖþQVBõê¹Ênð\A;iåa±[ªð#ÂRyKȬ5.*ßm-à ùã'â~ È5É4ë_«ñ±½®º²¤X2ÞºÕdú¦<M!}ôi»ÙS²~ô¨EòegYÙååÕVz¼Df:L.¦ÆëÓÃ-ôQV*§Æ8ºïòõ?5ZåCø(Èδi$$þÌôc|ýÞoõ=MÅ¢Ò þÄþ ±cFp²Lîá@{ ¿êóõåà6 XÆ$:ÊÖùÛÀë@//¨(Ø!xxÒ¸MÌ[£-+;£²ts¶nê-ëÓ_-Ô!xlCÉ&L-8¤ñWg[¹u\Bl,ýgf JÇ÷üI,KUϺÁÛ©xõxP#>¾{ÿ8f«EL¸s¢îô4ÒÊCo7NWïãRÞñ±nEeunNVÂËr1JÆOBd¼«ÉôØÙ ÔTV¸1.Yzf ¨ %ù¿ôwhËÊÎ(h£aÑ gLDd§Uzªª¸$3lMÞÎïn(/Þ ýsÒDB ¨'3µwåµ*Ð ª¬T*A\üõxà@&¯Z« %áYÊl@2ò$_ÖÓÊCo7.5W%ź:kv+W2[¯¾y04$FñU73é±³VºêÊÀ!µí·ZW¿y®vÉÂÕj[ã£ð£Ì¿){ÊÕBm¥K¤Ðdb¼ÊBû$S9uÐôHÝ:³ÙJ¦Í©¹II§mèXܪÈyÆýtõ× áógkI¦\H\0÷ß/·ìÒV¶Un>ùér!TÙù~_Ó%óQ´É\mÙ0nlhHðzíKÔj2î©1c¯ýWÅÅÿ}úwÖü¦V «ÿºªtó:TBJ2×âõ©)WªASEÐ^y%÷zgjÕ.$ÂÒ-âÖ-ж;ÿ¢®üÅ/ß®×ùÁTIy¸®ÒãEnFw aÏÅíêóV1¼vC>uùñ¼jýú½ù`a}qqÏ$Ð'K[Vv6B=w ¬[=L¯ãà+~ãºèßÛÁþ|ÑU;;0J¥dVÊ00¨©°í_"þ2âM¥ùâIr©ad*§.ßòîvòúØ:;1UfëëØÏg2I2é´ý$óÌÁxmÈúõ¾~Êñ=ÆÌ/ßþ¿¨ 9EËÄÐùûQ(ذҢ3( m¿UepQ¼jGn(Ù [Éìë(Ó®¸*-Ä[¨d\kaÀ/¯ÿ×óå/swÚÞZrp¥4Uíò|}ùË«:kv3ahäæ¹Úo.¼f¶üBI½Ýð*»¬¥ãÒ2X] hçáY/ËÊÎFB-òÇZ·Z?éòÆq´5àH¡!1ËÂÖv7cÕØYÙóNOcIfÖöÔtm>!;< £L¹²õk s÷æ<Nñ*·O2S?¸zo=^ûSk³ËâoÙeI2é´ý$óç§&ÿ·sÿý×4úÓïõ¾®5.ËÊÎRmý)Qþ¥¿¯Ó&)GûËÂBäz£òØÙSñÖµâùÛëÎÆý+cÛ¼}ôiÄLmY9¸R *öÊ£<ú´½§©Ü²«®Ì£»F¡ÐÊÑnP~?¹ÜRå§¡ >ï¿2I8mI&ï L¹"WëJ Ó«ß({nÖØ1£íLeçÑ£FY(#l-HæÝ+Ç@Áè~ü¤ÙâØ«o¾*¨#:w7(g2Êz¥Ú²Åà:5hªtp»ÝüÓ^Q($´GÉ)ã up5æË½%)ÉÌЦdÒøþî$óæ¹)¯Ï׫9AÓPþîý×ìLeçIãÿM,÷é:ÎöðúI³%PíÛúâTöæ$X+,J_¦§'èFøéZ«v½Q·4}²ÇEZãàfjÐTé¿Þí BI»A¡PH2'dB¢Cw2RÁqcÅ'¢ò~_SvÞ²þEñà¢X/+~Õ¹.±|jd Ì1zÔ(¹Gyì¿âòO tW;Â]ûOU½BIæZí3îCÛºê¶É4Ö n¡MI&í BIÐnP($ÄM2ÍÞ ×§MÊJJ ¯fLLÙùöź Ïþ/3ahÒøù]AùÉ`Ì=É«)À`1/sg.»,:¯Y2,Q7;±1»¬rÖ8¸R *LÚ+ $ðÍnXäeµH¨cçënfòKGÁâMüõQH2 :mkÿU&¶1.rY´Cöü$É$h¯(LÚAqÏ kµ$æ|}yW]ÜcB!É$è´9E ÖbÃîõ¾>Skwפ©"É$h¯(´rCìõ²dðÌ¥_½stÞe¡!1}ûµbÛãååªÚ¹ø³GvdÊõ<¼ÞÖV¹£rëÉïÞ?þÃvã}» mI&A§BSE9bíA#ø|BHæ%ñEà{wzgFYľÊrvbê¦3¬å1\¶³f·½ÉDátõÎmÉE%Èê'«E¹·}_VÂËô4($I& ¦$ FÎ9ßQGG/ñäÌÑ£ýtÍb5Òæ8f$³¿óðKËE¾Ã<ÞÓ;òÇOZÅCÆ/þWVø£OÛE¼¥§A!É$H2)4U$á÷xôèQzzºÛíNIIùÛßþÆBø»£VÕÆ¬z¤Öwz[+êóKóA -¹×Û´,lvsH2à·J^:vÌ"zL$BSEI~+W®äååýýï/((øË_þÂB?Çæ ¤}p¾¾\¬ZòKz~þVvÞ9AQ¯·2Jp%BIdRhªiªÜn7ãá3·l ÉL¿øûtAÓ#o_<ùEWíìÀ(ÑÁxlQz¦L$¥¾8ïTU±®2;1µ·}(÷uìç3L$BSEßãË/¿LIIyðàÁ?~MKKûë_ÿÊËBdöwõ¢®<04$fYØÚîò3wÅE%ØÏ.Á!ºP[mvÙøf¥dþg| y ÐáСC"ß8sæLuu5/ÁéC&ÛSÓ»êÊ 2È($/ ¦ y 3R¡A!É$h|)4UA¸¿ C¡Ðs#É$h|)4UAdý $ ñ¥ÐTAIõsl¶ú,½íû¢C׳H.Èfî¢_ú; 6doʤ¯B!É$H2)4UAdÄ÷sÆ=oÝáË·ëCCbt[kzE2·§¦¯/ïª+Cî $ ñ¥ÐTAIïç(×ïõ6ÕæVnÝR¼)eQ8-òV÷Ñðù+GZ¤=ð~_K}q^NRÚ'«Ì]®6xæÒ¯Þ9:oÎ2ðþý¢òrKUí\HF|Ø-S·ÉÃëmm; I&AI¡©"$ ddf5¢ÐX/Kc_X×ZQôí¥ãº÷dg_j®Ûf>k]³$G(Þéi%*³SÁWQ¸y®vNPQÐKLNWïܼQTN¿äÓ¨õh² ,Ãn³^¦ÇB!É$H2)4UØß L~G9urøO×Ó9¼>=1\öüùFñÀ é¿ôwQ»Ñ£¡ÌæRƵbÌ?iOQ[ÚÎÓ8,àD}Ú.Ê(Èó¢PH2 L Mcàï êçÈðT(çØ1O¾¬9¶|§§±µ¢¨¾8¯±4ÿ¥åÊRDt.dB@r%Óz4¥&:µ)ôÜH2 L Mc0"y~ÙJæ«'QÀ«v%Sy \i´O2ã£Î×NeÏ9AQF>¶öòKXÆL I&á ãûE×þ»W) I&A1Ifñ¦ÌÆÒ|JòK7g[̤´¯WüÒß×+íÌ é·/Ã!_tÕÎúþÃ&AVER_wªªX§:cüëgéê£ÈNLímß'Ê}ûùL& $ã;oNàgîÿT(L bÌ>j®)ÌÝó8»,ÊÖ$óNOcIfÖöÔôçj$/4$fYØÚîò3wÅE%¼A!³^Q¯ {pÔèQÿcLåhÖÙe3âS]BI§ñ¥PH2 ú9årKUNRÿ Á»êÊ 2è®PH2 L MI&AáD?gÆqO ºV¸Kóå¦Ì,} I&AI¡©"É$ èçP($/ ¦$ C¡Ðs#ɤñ¥PH2 ú9ô¶ï]3vÌÿH;¤Ìô{õD¿ôwlÈ(ÞÉ$ ñ¥ÐT ¸¿Aý!þC÷¼²ì/¢ÕùË·ëCCb>«Æ+î7d$s{júùúò®º2èd$* f?çöÅc/¯N²Ùz¿¯¥¾8/')íÕæ.¯·µUî¨Üº$ç»÷R$Wü´eegHà´È[ÝGÃç¯=j¨I^µSieÝjAÌ|Ð_ìz g-xæÒ¯Þ9:oÎ2Pоý2Ñní\:{d·EOe¥òúHM>~ã@Äbãî,ã¹;I&á8ãKþbDÄÈ#?]k;spÍÖ=ÙÙ«ÄÎrcL0"ð"NWïܼÑbL³Î±/¬k(úöÒqÙ d ä}\=iÔͺÕdú¦ÿ¤ñÁý£YµAïô4ÎÙ© Ì(Ü<W;'(Ê¢§²ÒZS"î^9¡ÕTV~@½íû²^&o$É$üã ÂL øë&Fs¹¥ <Í}¨ôþå¾ÊÖ é²F2TþøI«x8|ÌduþùFñQ¤XWwC¹òADV39pýµ2zÔ"Pq>²RÙSYnMSx MA$1t~Υ檤XWgÍnåJ¦Y«\[ÓÒ9AQFfF2=vÖJW]8ä»ÇöúЪÓ7ýÓÖþQ>]éñã£Î×%J|Òe Wß<ÃLL$BSEI&A8ËÏO]~üÆ9Ii^¯ !ú Äg¡SXÖÏ\zó\-Fxiyâñ=úá£f³yv.w¢J$1Iæ)ã up5æßëmò;FáïúIIf$ðã;"÷òMCÈÙ#»K7gÜJÏB§°l]&¶xºÜR%o¹y#QjèÀÝ¢iª¸¿AdüNP($ÄðߺoBBCbîô4¢ =<s©M©ÔлE9ÓTÑ9&þ~I'(LbïÞ?Ê7 /¨ÈMùíÇ "c¸ÅYØIü3! Ì~jo£Ü-$ F*@d>ÉÒÛ¾/:t ü ¼öuìz7¯!I&I&1hÆw¤îåK®Öík,{K2® ú ¸e®µ)Y®RCîEIAdúECûúßê>ºðÙçjQþòízñ:ôÙ}1¯!I&I&1ÆwDîå8A¦®ôµ·}ÙYX¬d>ýÍ ×IzfF¡òîͯ®Yoó²8p·(L ¿HæKph}Þ·ôñ)gìÖÞÄGÅvå9ÚïéÀ¼$$Ä0_çïå«"×}þVn´Æ¾°Îì,ÌH&:ºá_$)ÖÕP/W5¡Ììlh ÿüÓØ¿,NÛ-$ ð»é#)Á¡5ÉôMÿIãké}ÚnbÃþñ¼$$Äà̺ÿÒHÚ!Ê9»EdA~áçÔÖ$sàúë>(»ÙÐ_òddÃL2¿ÿÒHÝ!Ê!»EdAÎ÷sFpC] ݦ߾éïíJ¦ýâ/y I2I2a&*L Âù~ÎHMph=¦oúÛy&S¹Ðz@=×I&AI¡©"É$ <û9#2Á¡5ÉôM]Vd½y®ÜOd5Ë\¨Ð~Oæ5¤çFIdþ.òóTy;í9R·r¦©âþ~AôsÖ$Ó7ýź⠫ÇYJe½2s¡r@û=×$$ðéðÍ£*]<Q¼j}W]ϧàÉôí8a)®AOãïé}ÖoÍøKÍUÊ0ã×$$æ;|Ƶy·êÉÂsõÎÑys jq :me}ðÌ¥7ÏÕb'ßó§>j6{fÃÎ5qìR$1RÁ :meStè\.1ûå*yÎ,ÙµÝB$ FòßA<ñ$B!É$É$d|}Û?ʸµ£6òA=HhHÌF@>ã15¹V[³g2g.µI2ýk)º¡AI$ I&I&¡0¾>ï¥ÜÚÈ9Gù ÞŹ)¿=âX°!Cä ·8;&Ù$þµ ÝP É$¿&¨Ïfþ?-GLj@ I&I&¯ïûG·6ràæQ^©·dájÝ)¿½%OO×FüʬÜÊm£<^Çn!E7 H2 $Óù»¦0tBj@ I&I&¯ïûG·6ràæQöÕéáu஽íûÌNÁb%óàèo.¼òo×Ë$=Êm£<^Çn!E7 H2 Â_ü%µ¹T¤ú Áÿ©|J¨vG.$#>åìÝ=!îC¥{s§ëûÌ}XnbÏϨIìëä^ å±F5tË¡I H!É$ɤñõ=»¬qk#Gmåz«"×}þVn´ÂÐÉ\0w9º Ï_ëj(É«Êm£ì\gn!E7 H2 ¯Iæ%ñE pwzgþv'Óâ_[ÞÞUöÅ_6 ®ìiª4¦r°qPaRmz¿'*Ç*ÕÐèÔLL__¶¢J$á×$sô¨E2JÙAV*{γL¤ë35Ë8h| UÜ{\0w¹Ù±J5´;ä I&I&/Å_eØ·r¦©âþ~AIðleÇcмÖ"H+-ó´~&Ó~öÊb/J¼bv¯)Zd®ÔLLL eD*:ÇÁßÁ/°ÍL%=N8__.Ü0mNDcgû9}Ú2ëÅï?lØO¦ÈL I&AI¡©¢sLN#'dM¼}ñØã]µ³£Dr>eÏ 53ݽrÂ}¨4:t®ÍBþ|`WNRZSY¡ÍceYAÐ!©)ôÜH2i|)jùùFGhH¼8èÌGÀÎW$AÄÈ#àfp y«ûhøüò1w=]L,Z}ÐP®¢¿ØJ<naq: e}ðÌ¥7ÏÕb'ßó'yoÒxÒÎeqàÎW$AI&SRH2I2 SãûÓµ¶3w°Éí<¶îÉξÔ\%â4äÄ·Òc_X×ZQ$÷Pܢϫ'ºY´ú¦!äìÝ¥³ÅîC¥Ög¡SX6E®ÁE»{åØÙYÞPôøÔ¾RCî|EIAdR($$Úø§Mi¤yl )k<n ¥¤gf¾Ña|±«®,)ÖÕÝP®|XQÙêÐ;=(:÷V6µ =©|TCÙY©¡óÅdA$ I&I&¡0¾§«wÆE%|õÎQå×Ñ¢U»ùý-¡teûGÉ«\+\PÉf«o^<QòÛC2Þ=¶×ú,ì$þf+Å ;_dA$ I&I&¡6¾«b]5»+frÍ«-¡´eûûGAºêÊÀ!ß³ÙêK®Ö¥}X°ÒùôÄpmÐ/æÕuøéZC*5äJ&I&AAI¡dþd|åS¿qÀfkNRÚ ×+À<ñ*hÙ¶NÚ´eûG7è)vF¶ßê8A¦®ôµ·}ÙYX¬d>ýÍ ×Pþòíz¶gv`*ï^9Ñüjá%ñ6/w¾r¦©âþ~ÃeUp&èçP(Lb¯WÙeïô4dfmOM¿y®V¦ÕQnë¤ÝÁI[ö¸Lj]Ö¢Õ WE®ûüÝ8h}aÙYÌs£[øüI±®|¹ª eödgC«[ÝG§EÚ¼,Üùk]: >%- B@Iü.Æ÷rKUNRTÎ×Ðw¾"É$èÒQ(ô)i(Lb0ï)ã up5æßëmràoÉùúõÎW$]: >%- B@IÐøRè»´* õb¾èÚ÷Ê1eB¡A É$èRhªZ!?h0n¬kÅó¹ÿÓúKÍ%ÏO=jñm:¦¯ßûíAñ¦bþC/·º¥4þ߯=5fÅâÿ}ñÄç|´Ò$ysÅï×X PhH2 ºCéüsçW'Õæ*Óíú6àØ1V,»~æÐ (9XÿÒßQ°!£xS&}VEGQðë34}òØ1£?«ÚâÀipÈý¾¦2¢©ÇÖêödÇˤØ0ç0¨¯Þ9z<spÙA8³¢EÝu£dò£§PH2o|Æ=¯,;G´ZIöèÓöÞö}áóWöw¶y¬5£»ß×ÒUW¶*r´6Ðùúr(}.qìÌÁxv'Þ>¸Ú²1.&4$øNO½nåS( ¦æþûå]ÆaeÝ ¢fUä¼ ã~ºÖ·ß^j?Ûx¬r¢¶ÊÍ ÇOO¡ÊÎ ÆkÌGeNÒ2L$G6¦áRsÉìÀ©x»eýx{öH®ñþ|ãTéæuR¹oíèf¬Wª©ÎuØ¥cåueo5¡OID¡ddl|½Ú©¾8/')íÕæ.¯·µUî¨Üºå»÷k×ñteeç_"ouµ=j¨I^µÞbV44.ºÊM)/·TÕîÈ dħ=²Ûæé §N·è|¯·©¡$àqÌØÖÝ<W+ÿÌýx«eq"{sW¢ÜÐE»3ÊÆ¸d¯vF!É$ùðúI¼4þßÄ[0¼IÃ+E|æoÿ_TÏbdÇAYPÜÖÇ¿j SïÉ0Î¥¿ÿ° +-:w ®õù[ÕÚ-N³¡dxk·>Uì`\¹õ%¡¼ûÐ6ðÖZ7³z¥óÿ·^/2ûÈ´o½Õ>%- BIIñýéZÛ»@ØÀÇl¶îÉξÔ\õ_÷x¤Ü ÓÕ;·%o4²,mYÙ4©µ¢Hî* ó¹EWOu³h¸¿ÞG?9!à+Ù© Àÿøu¯Ë9AQ6ÏH»YÙUWfѹ`CN\ÔÎ8;¨${ú^<Q¡ìb¾-N§§©rá³1òùö¶ït¾A©«÷Ôü3mõD¼Å¯Ó&Y?è-±4¥o[0÷ßñöàé÷z_WÎes@ceÐôÉ(Rm½Ó´x$VðOÙvÊJ5ÄàZ;iA2½Õ>%- BIIñ½ÜRæ>TªýÏöØ4=RÖH Ê?iKvÆ/¶¦pf¾¡WÀÍb]Ý åF ÍZ®¡±cYDÚ9£Ñ£asjÑùéáÆël¡0è¢ äwzÅj²ÿ¼9ËD¥îpL÷èÓv·þnªÜn7ãtéd r¢['¡§ÊC>~£<ì¹Yh8É«yÕ¹.²«íãÕDÊÎZ¢h<Ðú4·¯ôÈ®#Ø/[«aM2½Õ>%- BIIñ=]½3.*á«w*¿Zê¥e\Rd¼« óØY'àQ®.¨d³uàB~ø¨9xæR9EkEQ}q^ciþK˽=£ò-¯ô¶ï³î,6Çl«Ü±7g x n65 VÒiÿ2U\_¥K7è$ó|}>Þ¥¯Ö®éî9AÓðö»÷_yóÜQMt}¼HÙY¼{[Æ@ëÓÌIZ&"Q=®dMìÛEPª!*mLo5¡OID¡ddc|/5W%ź:kv+W2ÍZå*«Ì zx½Í"Ͷ챳VºêÊÀ!ß=¶×~ëÀ54¿ZXþÏÌ«ñÑ çë˺ÖfÆÓ¬Ç5ÀÊÎAÓ#u¹Öc>ú´=dÖߨ$»)ûOû¡e#v%$.ÝàÌkÿU1;pjà´Iàf2åXW´ 9ãÆGD½È:»=5å;=õik#ÌNȬ(÷¶ïÖLHtè3OO0RAåDf+;ä=[võR¹Ðgç4EvY\¡0.QnJöIH÷¡m]uÛOBÚ/+ÕÏdâ£5Æë¦{&Ó¾&ô)i(LLbЯ|êR¹c²5')íÂëpzð±à)êóNUëÙ2$S$§AOÁîì·ú¦¡T 6d up5æßëmrà«ó5tdfAFïB$B¡dAIФÐw!ɤU¡P($Adt)ô]H2 Z $ ;hRò)^^TS«L´ëÛcÇ,Z±8îúC¢ä`þKGÁâM$ BIAIø;0îyeÙ!¢UI»ùdoû¾ðù+û;Û<ÖÑÝïkéª+[¹Î DZòç|}¹6Ûíð]Ün7ã$ $ LÂ)î W[|üÆ+GZ$yËÃëmm;*·niùîýãÚ¥<]YÙ8-òV÷Q°;+jW·Ø¿Ä¢Õ[õîC¥rßÈË-Uµ;r!ñ)gì¶y:ºeéÃ-:ßëmj(ÉQ¬Ç}aÝÍsµrðÏÜQ£ì/NdoÎãJt[¹h7/ÙìÕæ%ô]L $ $ðàþtíÌÁ]àl¬¶Ù:cJÄÝ+'´Ý@o@rP8]½s[òF#ÑÒÁZ+¾½t\³uÛÿ³EWOª6v3m zbËÊ a¢ ö¨Ý (§£]É,JÏìª+³è\°!ç.jgÌKÍUPIöõ½x¢BÙĸ¾8ONOSåÂgcä!òÓìmß'é4}Â7«B÷^' É$ÉüÛHª¹jÇÖ¸¨³Gv?¼Þ&k¦GþøI«Xµ4~±53ëüó ½è ÂL Ì'Ô<]½|ì«w*ÿ,ZQYð²\¤\Y³8u*åZá>6[¨äg.ã·VÕç5æ¿´<ÑÛÓ)ßòJoû>ëβ`s̶Ê{s¶ WèfsX³Ø`%¦ïBdR($A$/îà¥æª¤XWgÍnåJ¦uëÕ7ü3sNPvåÐÅy쬮º2pÈwíõ¶Õgõ ͯ¥ÿ3ój|tÂùúò®µñ4ëÁqé@Me°²sÐôHÝ*®õ>mõâ÷6ÉnÊþ´W2 L $ $ wP>u©Ü·Ã¢õë÷ä3õÅy§ªu&_"d,+;I¦ÈOàyÕêzrv=Pë%WßéiðöÅc`k_tÕÎxu:*.*AÐHeçò-¯'¥xóÏvå$¥5Zô/ØÑYó8SÑÝ+'ÜJ£C×ȧLåâj_Ç~>IdR($A$Äà»^eaaÏÅj·ÕÅöwõ¢±¬ìl$Ñ"»¬E«êÉXÓøè07Ty hXhH̲°µÝ åD$õöt´ ;?¸zoµ5Çüá£æ§'ãÕ¢ÿý¾üýy[A#o«ÀÚì²ñ)Ì.KdR($A$ÝAʼR°!¾A«B¡dAdt)Ì,}V B!É$ É$èRè»(àv»ù§U¡P($Adt)ô]ïëMЪP(L H2 ºNotÄÈM><ÅÞ¢ÿ¥¿£`CFñ¦Lú.$´* $ Lîà?%`ÜóʲsĨÕÅÉ«ÖwÕyuÔ Ìí©éçë˵iié»d:ܪ|ѵÿîcÊ B¡¡& É|âH¦W[Üïk©/ÎËIJûàdõ¹ËEåÃëmm;*·n)úîýãÚ}AteegHà´È[ÝGÃç¯=j¨Ù³ØÅÄ¢Õ åú!úõÎÑys¡,*ïõ65äCÄþ%º£dÝj s1~ñ¦LEeðÌ¥b´Ð¾ýF2é>Tº7ç±J¹?mÜedc\²»dCoUæÍ üÌýÊ B¡¡& É|HæO×ÚÎÜÂ>f³uOvö¥æ*±]¤äE W p(®Þ¹-y£MiËÊα/¬k(úöÒqÙ ä ä}\=iÔÍ¢Õ7 !gì.Ý-F r4ú.$$ $ L¹îàéêqQ _½sTùÿdÑ:vÌ"#/A¤ïjF2=vÖ k *ÙlõMÃ'*rS~{ ¢hñð¤:j°î©Y9îtè»ddR(L H2 纫b]5»+frPKæE=¼ÞfÙ鬮º2pHÁ÷l¶ú¦á «µD±`¥XÕ-±dÀ]¼ÊµGk9! L ËLLL BII&á¯î |êòã7ØlÍIJ»ðzØ^ Ôçª*Ö²÷ýMƲ²³dü7è)#Nm¶ú !N§©k}ímßW¾åñä¤ò¼¤ÚÅ2KóQh(Évz$2ÀáQ¸{åûPitèQyE¹¯c?É$É$ɤP($Ad~æz]öNOcIfÖöÔôçjeZè(ÈÖKËEMçáY/ËÊÎFI-²ËZ´ú áªÈu¿U£±/¬{põ$1;/©ö5׿îÍy]e;$ó~_éþ¼ P5xæRcvÙøfµ·ÛÍß8I& B!É$$ðowðrKUNRÿe¯¡!wÕA 6dÐw!H2) 5A$ÄHvgL÷T¨k «±4_né(q¾v¤$3Bß p¸U! "$à 7È Z BCMI&AwBß U¡P(4ÔA$t)FùùFGhHÜ;Ä£Xlìéí!Úú_ú; 6doʤïBЪP(j H2 º¿IÀ¸çeQ¥'*Wïª+óê¨A'ÛSÓÏ×C è»´* LÂ/ÝA¯¶0ùøVµHR£×ÛÚ*wTnÝ^ôÝûÇk¢++;C§EÞê>>ÿñ°¢|ÏbÿVoÕëæ.ÿê£óæ,CYTÞëmj(ÉÄE%t«)ÌÅøÅ2e¡àKÅh¡!1}ûdÒ}¨toÎc>sû¬h7/Ùì´ÍKè»$.Ò°ÀÌÂ(·,ÖJoû¾%W{I¡ì£'·ä»ò¢Æ ×ZE®;fÎPýGãÃQF¡¡&$Nwð§kmgîgûàdµÍÖS"î^9¡í~ÂéêÛ7ZliÖ9ö uEß^:.»_ÁåBWO³hõA=ÈÙ#»K7g£°';ôOTÂQVsTIfVSY! ¥ùÒ±X³$ÇÓÞéi¥;¤vGn}q п§©rá³1rWLy©áfe%¼LId<NaèGðÉ<ú´¿úðù+û;[ôõeöyí©¡rUä:ùLÜP^ùòíúÐãÆÅþòåqH4 5A$ݹ[ª@ÕÀ©´<Êc+¼P²×ór¦GþøI«¸;iübkiÖùçÆûÁøNuu7+ï+[}Pl]Iù®;wåIM.|>¼âQ9zÔo qñsÞeB%]= ¢ G#É$üdz¡ð*@@¼ 8ÐEI(ÂÖ1JM1øBg`råÝ%Q°Òµ;r!ñ)°{fJyqb_XwªªX(ÔZQ´fI¼ö/À8¸ò#Pö¼ß×R_öÁÉj¹@j'([°ÿPV*§ôpçD£ÐPAI;xºz'þVñ©ü²hEeunÜ ¹æ&ÿ!Òå2#;ëÜϵÂ}l¶ú ÞŹ)¿Ýr.Øñî±½(Z¸FGD,2Øé©Y9v4Lp»Ýü;dúa° `^ÐþtQʦuÌRA¾ÐýêÑaB@Í(ìÄTÐ3n«eÇøh[Ap èÊ5»µ¡ûf+?eÏ=ÙÙ«PèïümX;,Æ/ÖÞ%ôá+¡¬TN=èá*ÎF!É$$6w@R¬¾ r%ÓºõêCCþ¹â¯ÂèLµÒUW)(W^©'pÒJÄb T·¾j¶)G¼ÊµGk?N¤ÒáJæ¾Þ¬oñƨûÆàݯOû+Vþ0cbð ÑúÉ»Kv¢0¬ïUYL128`G°9W~ÊP^^Um¥ÇH3ì%Ê©=\Å96& LÂkÊl_¿× ïX×çª*ÖuÀ¿ø÷6ËÊÎF¯B¡§òé#ëV¯Ôéáu஽íûÊ·¼"TÔ¹xSfci> %ùâÁN~^Á°wî^9;:t\y8ú:öóLLÿ²*>ÇGXG X(Ìl²ÉfÌ&¾Ð õÃGÍÁ3ÚÂÀhE0S0A/-OôdâVë3÷aam|\ÙS¡Ýc$Ë0åJ¦1#§þýÂU= & Lb8I¦OO?é°çbÁôd%¸¨ÎÃèï<2ëEcYÙÙè±aF,Z½UoUä:c ´Æ¾°îÁÕ8Ä줤Îp k s÷æ<~\e;þÇý¾0Òýy[áØÝ<W+}Jíó<ñ)Ì.KéwVÅ·øcÔý M"A$I&Å$ U¡ØË-U9IiF¡¡& ɤ;H¡d´*ßeÆqO ºV¸KóåÞF!É$ ɤ;ødɹËå³4" B!É$$xBÝÁqÏ+ËÎVøÃÿY¹N¾m,ÍO9!øê|}yW] ô]H2I2) I&A$¸^¥è¸ß×R_öÁÉj¹Ö÷ðz[[åÊ[@¾{ÿ¸6 ®¬ì y«ûhøü2ç~òªõ4,Z}ÐûºSUÅbÌ?im(ÍtþøVìf5[ªjwäB2âSd^~êÒHlKv¦&Îô]Ün7ã$þ(ÒÁÌÖæ*Sòêâ,Y¸Úb£N³Yü(|ZE®;æ$þÆcOH2 É$ÓÛ È}Ì=¶îÉξÔ\%²ðÉ F Hb¿õmÉSü);ã×}{é¸ìB¯}Äe:±hõMÃàKo« rgÍîÏܵÏq÷Ê ÝcHºìÄTgòQn±`_CPSyñáx cB|ú.¿ÌÇMeä ´B>mÇo<|þJþ ^Ê]RlÎâüð/ß® 1n_ì/_ÄÐPAI;x¹¥ <Í}¨T¹mºYkÐôHY£Ý'íÇOZÅM\¹·É4ë¬Û[tÀ_uR¬«»¡\yÃXÙê³h×ÔGá=²[»Á·±FéçÙ×Ð9[{Ów!¼"^ÅGÜëmj(ÉHÂÜÊ7icg.ýê£óæ, éëØ¯ÐE(èB$FI7»n¥&y¡[.É÷<Æ_(%,võð*|C9¸ò#`¼îbbvã ²ÿPV*§¶þè¿ÊY{BCMI&1<îàéêø[ŤòÿÉ¢uìEf[Õ ^ÉôØY'wz]+\PÉfë@4,Ýýû°pò<êëSÎr±ÑXõàºé6góMCÝô]gLâ# 6dàg¢½UÕTV(×dä!(º!àg5;0Ê,|@û«Ñ H(qvm7¥&y¡û£Ã0ñÊ@ ë#ío(W~×Ð]ÌIã+ïÓÙÿJ(+S[ô²ljçÄÐPAI; )ÖßB¹iÖ*Ù´ÿÁp,nÉôØY+]ueàïÛk¿u ÂIZ²pµð<ê,äêCCbÌjâ£Î×ð69 } ¹IøUñ->_l]ÍÔÉáâWWùµ=ê·HQùÃ1è~×Ú ¥Q2ήí¦Ôd#/¦OÞKò¡Ç>É´ßP®ü¯añùöPV X|ô²ljçXlj H2 G¬9(³M([sÒ.¼^?f¼F,X)*ëóNUëÇù÷6ËÊÎFÇBÄ¡§ò$Vß4 =+¼JÊà |ý^¼yo¬gsûâ1(óEWíìÀ(1} ³Sef¾ý|&p²Uñ9>B.Ý+ $]J`0»½eÖd=»GMy¡êg.µÝ ðdZoØ|pã5&)ïèÙÿJU§¶ùÑû6õðÆÐPAI'Éôáé)ø%YÛSÓo«ÕÆVêþÎÃ!³^4N&µxÆÉ¢Õ7 èj:C@JÁxÍjÀCCb ín(ÇâÉûjðÉOavYÂáVÅ·ø éº Á©ÃEd)^µëf?OmøùÓµ6I0³ëV25`ä n¨æWÒ3mÆ_(%çhAÀÌÂ7¬×¯¡»°xòÁNß¾ÊJåÔÖ½v%ÓæÔ\É$ ɤ;8P¹ÜRæä½Fà¢ðM!2¸ýá|«âC|DùWêó´Ý7e6æ£ÐP_º9Û#{Ô(#ÌúæÂkw¯ þte=GÉÈÓ°$3Â=¾ ?²*^ÅG<¸z¿íþ5׿îÍyÏeaÚð çj÷dgoOM¿Õ}4pZ¤ÙìÚ<j2ÀÈÃÐTV¶ì1B»³¥1PByò(ûáÊÁÁ B!É$$ðwЫ¿q bÁJAÔ<¼ÞÖV¹£rëp¡ïÞ?®Me¡++;C§EÞê>>¥L¸¼j½E VoÕľ°îTU±ðÇOZ[+dJF3 ³k.·TÕîÈ dħÈü÷ûZêórÒ>8Y-×KShHlKvÂæ%$I¦Mñ¸%ÓÄqL H2 ¿tåvrs3¦DܽrBÛ ìIl¶¾-y£u~?egÐ<P»o/ÝÀ©ÀlÑGìN¦VÔ¹ôæ¹ÚÂ\;kvæ>¬Í ¨<Ü8±&;1ÌY${+ìÉξÔ\%rÊYSÊËÞÛ¾oSád!þ1@9Ä'è̸ I&A$ÿ¹[ª@ÕÜJÛ¦µÆE%=²[»«uÐôÈ?i÷ÂåÜf$Ó¬³nGlÑOR¬«»¡\yß]ÙêzhÑÔîѧí6Îb¬QúM^Om¥q çlêMIø@2ðøy¯·©¦0ÇoÊqtSèF¹ô«wγ,4$¦¯c¿E¬ÄìÀ¨/ß®GÏY/~æ>üÍ ×J2³rSÒ{*ý1nBII&ágîàéêàEp\ÿO¨¬ÎÍÉJxY®³I"ý93é±³Nîô4ºV¸ ÍVÕ+Ý L,zTØ8±ºµVé¶e;fÙFÖ×D{ }L'LÆGXL°¾¦²Bñø·O5N¡aÍx8!¬ h¤E¬½·üú½OPP&íQþ7A!É$$ð?wðRsUR¬«³f·r%ÓºõêCCbDþqÏÌßòØY+]ueàïÛëm«êÁQ[²pµð´<*lÅXp¾¾.µv@¹P©TNÁLL´*0Þ9Ò-KN.Ì^åïÚ8 v´Ñ£C̬¥¬Är}R[öÓ¸ I&A$¯9|üƯZ¿~¯AÞ;¯/Î;UU¬ë ëf1ÖÄ,[ÛÝPĶ(ðK2³¶§¦ß<W«M/dBûTF| ³Ëdú Ua|G«2ur¸ÈÅ«nÍP; Gº¨ðxÅMPH2 É$üdR^.·Tå$¥yÌ÷R°!¾5Ün7ã±*°&Å2KóQh(É/Ým6 ÙhÚÀWc¬Gé_qL H2 Lg1%bÜS¡®.x2±¤ dfAè»~gUaF2ø¨¹¦0woÎãì²(Ma6,+c%<Lÿ ÐPAIdRè»´*¿gÆMPh¨ É$èRè»´*ÆMPh¨ É$èú·ÈcÇ,Z±8Nç4ù¥¿£`CÜa¾A«B¡Ph¨ É$w0`ÜóʲsD«|fé~_KW]ÙªÈuNl;__%Q ïBdR(j H2 ǹ^¥è I&AI&á;xºz'XÍWïUþ?Y´ôU³&;ëäNO£k *Ùl å[^û+Sð²\TÔé¯B*¦W9¦Ç¥=Yú.H¦ñ6ñ+8b êA-ëÓ,âtzjö° I&AI&áµ;x©¹*)ÖÕY³[¹iÖ*Ô´þÐ (íµGè±³VºêÊÀ!ß=¶×~ë `Òu[³$g Þx§§qv`W:għȢ·}ßpígàLßÅívó7>âI¦?ÆGøÉtB $ Lb$¸`D jîC¥ÊÑÍZã¢ÎÙÝ<hzä´{áÆ/¶&f¾Ña¼³')ÖÕÝP®¼ï®lõM½Ñ£³hÁÜå·ºZh_·*{N.6ÜëÜEÉ]øä6uvÈÎìô];$ñJi3lA§¼2&ºvG.$#>DTÎúòízôõâgîÃß\x$3+7%½§©ÒùQj H2 ¿wOWï·ã¢ü²hEeunNVÂËrUMzWYLur§§ÑµÂ}l¶D½ò-¯ÈÏÍT¯UI9¬Å¼>謾á(Éøis(òÊìÄTqSìæ¹Ú9AQr"ÐKp˯ßk 5A$ÄHp/5W%ź:kv+W2[¯¾y04$FáßhWá¬ý-µÒUWùî±½Þ¶ú¦Îô¥åÒ±ShÜS¡÷ûZä£v%Sx«x«n¨G¹I8ߪ0>ÂdÚJ«¼2B9>Ì\Ôe'GIPh¨ É$FÚÃÇoðªõë÷ä½óúâ¼SUźp_¾ÿ°ÉXVv6ºM"|=¥ke¿Õ[õ´³ßéi(Ü;åÆñ×,o~µ¢üç»äâ@ñ¦ÌÆÒ|JòK7g{tC=ê*Zû:öóLÂiV ñf¿nëPÊ+GE°°3/-Oôx%A¡¡&$!$Ó§§wö\¬v?IpQ¯Óßy8dÖÆ²²³ÑÄOOY´ú nvmꥪºñgLøæÂkÏG'Å>Î.+¹ë5׿îÍy]V¦µpû<ê¬}n*#> Ùe ZÆGȵAyÚ5C2;ñøèóõåâFòYPeÙÉQj H2E2)¸WÁïN0Dæ°¥ïB8ͪ0>_èì<óÂëÙ©^ edM¼}ñ¦ø¢«vv`Ú#Étr L$rZ>9ÓdfAè»·*Ox|ĽަæWkwänÎÞ Î·3 6³,lmwC9FJ°C2%A¡¡&$ ɤÐw!hUhUF8!JBCMI&AwBß U¡U92ìQj H2 º#üÑJë'-ñ9L³¡´õ¿ôwlÈ(ÞIßÅn·¿qZ BII&1ÂÝÁqÏ+ËÎV^Ì!Ȥß~¾¾\ö¾âëMdR(L H2 ¸^¥è¸ß×R_öÁÉêsÊ×ÛÚ*wTnÝ$¶ÿ[±éÊÊÎÀi·ºÏ_)·nK^µÞ"KE«ZÌàK¿zçè¼9ËBCbú:ö;»bXL÷ñÛ¢X¸n¨½9[?s~&8Úcc\ò°çä É$H2íÜ<³hÉÂÕÊ,»ÚpT $ Lb¸r;¹3¸ÇÖ=ÙÙ«D*EI@@Ä~ëÛ7Zç6Tv}a]kEÑ·Ën`S ·èóàêI£n×PûvÍx(Nx§§qv`®µvG.- P£§©rá³1#[ë`6TF|¼þ½íû}wLb¸H¦Ã#·/»8d:*JBII&1ÜÁË-UàiîC¥ÊÑÍZ¦GÊím?~ÒªÛvÜÂuþù^ t÷ëên(7jhÖ:p µoGZ$÷Í3.{γLkÖÁ¾fC9mtLÂÉô*>âã7D,xÅ`±ì?ÁÞª§³ lY&ÊÙ©à~(Ü<W+7ëjöçm=UU,VE®÷ÔPSº9[¤m*+D¡±4_F½êÎÝ_¢$($Ad#Á¼Ô\ëê¬Ù\É4kKpZG ÓÃëmAYÚ²ÇÎZéª+|÷Ø^û¾iøôÄpy¦W;eaB@öú;À¥ìÑZ³¡¸IéGVÅ·ø¸¨³Gvk ðM=£VrZÙÙ8¸®¦¿ó0TB¡(=ÔQPVÔ¢0ur¸µÀ«4ºs÷( I&A$ÄH[sP¦¦P¶æ$¥]x½®^#¬õÅyâ^»ì}ÿa±¬ìl$"=e´ªÍVß4,Øñç»ï³SíLÂÝ+'à:G®õ³£¾¹ð*_-\³$ÞÎ M7 éëØÏg2I2kU|@eun¾ÛraÍQÁTO;2X"ì@ciþKËÍ7ÖÀÀÐÁ^ {^ ±ÒN$ÃÌâ2%A!É$$!$Ó§§à'dfmOM¿y®V>ÛÕ9Oýe¶UmYÙÙèaR¨,Z}Óð^oaíÜÒÍÙ{²³%ù´&÷ûZJò÷çm Gég.õ(cèp«ûhà´H;'n6ö¹©øf%Ét²Uñ->BÈÕ7Ä808bêIN8__.îé:h7ÖsÂnÀ¬Äf(lÈMS'R¼jW2µCùK $ LbDLßärKUNRÿe^ÃßiwMUø¾éYÒw!Ét¬Uñ!>BÈ×ï5È'ázJS4=òöÅcà{_tÕÎuk>«&|þJÐN¡ç²°µ=M¢©xSfci> %ùâ)Mãìþ%A!É$$xrIæ)ã upÁ³É%è¡L#9èR%Ö1è»(áv»ùwUñ*>BÄ=åÀàÔSL¹ÐPÄîr ÜX^:! L<f ò5&j s÷æ<Î.++u³ûK $ LâÉ%ú.ü5´*#C%A¡¡&$ ;H¡ïBЪЪø½8'JBCMI&Awpä.´Ìú¹ÊA|êÒl(mý/ý2äöwô]Z BCMI&ñºãW"Z¼"C%H[¿=5ý|}yW] ô]L BCMI&áî W):>~ã@Ä£G-\èáõ¶¶Ê[·}÷þqí&rº²²3$pZäî£áóWÊýÜW·HÑaÑêz$3xæÒ¯Þ9:oβоýÆÎîC¥6') *~Xµn¨½9[?sÛ®hÓrlKvHZú.I¦[HB`<k svµÒÛ¾oÉÂÕÞÞá2ö×nàimèLAIAIü¾î ÜN@îúí±uÆ»WNh»;AÍÖ·%o´Þ2NÙ9ö uEß^:.»PÁ9C±N,Z¨öí%ñÐ ðNOãìÀ(]kíÜúâ<±=]OSåÂgc,F¶ÖÁl¨øyåá:dú.ÄpLxôi;~¼áóWöw¶8vìEf[§Ø!Æ«1\Ò¨Ã1H2 H2ßѼÜRªæ>TªÜݬ5.*áìÝÚȦGþøI«¸c=iübkgÖYdç×Ýÿ_ëên(WÞW¶P=íÛÑ£~sû«óæ,ÃuÐu0Ê[¥Ów!ìLÆGhG!7<Û[»#kfaXWÃbSfF}ùv=ÌNȬ?sþæÂk%Y¹)érïMåõ¼×ÛTSÊâMrk(£V:eAIAIü^îàéêàc_½sTùÿdÑÊêÜ8LrM%ý93ç±³Nîô4ºV¸ ÏÿÏÞÛÀTqíû'~këgU.¯ú§-·ÖWwâh©òR)¡Ô`_îâ¶Pàè«ÈVbÛkÇ ÇØ±ÚÖÛsÒÆÓ41ñcLã1ÆcîÿgWÏêÜÙ³çÉ/d1³fÍÙËÍz\3k¹ÜÛÃê)·Ø«3fs#ÎupSë ï}_2y>ÂúWÊ|fÄLÇf.[!z,«BC¢Ü|9(¥íQ¢â?¯Mãó¶5+ÌD/W?ûê\«>û8 xlþ÷ª)ß$z|Òv~òbÜèpõdüÔßE%³o~! óEP:×VdÌ=ækGk$ç¨xHè£Lw£i[Ã_ÖWægg=]VÒn+Ó7Ç@2 ó%!¯J xj7gqLÓý´½òêDÍ3â# <ïúuº|Û,°w;`wÎ6¹ù¿®ÞmÛ!ã#M£¬qsãT©ÑÈ#êñiù© ]J¦óY¬ ÷Äß`$ iZPþ¦Ò ¥k×ç\ýìçVgCµ7'+1åó½åÓ[`Òª¯>Ü1íáájiüж@ÓIýI¦©äî&¡áп~ÛúpYÛ¢&Ms騮©¡óÅ$;[*¬,è`¶§Êª6dKHÎC;6ù»ëãÊ+$V¶ L ãû¦ÝæïV9 \H]a¾Ë¢tÚx9ß·UÉ8w`¿CÆGþtb·\ä¥4]u\uGófîl©àL$ ÎùÖ:Ú)~è Gk¤ü%Qñ¶bÝb]6-.ÙeL ó%QëËÕOº¾y²¾Li]!3vv\cÉú«}p¥½vJp^ãQT/)¿s $ À7¡6Æq£Ãïmü32\mùà|)§N2CbÜ(ÇÞû¦Y¥%¡"? XusvmnªÐëyóËúÊüì⬳ËJZm¼Ò^[±nŪ«¬ÿØJ¦qvÙ´¸df%$ Xusv£d¬@/þw8ÕPâ~̶ y©ihA Ò_3¾Ùºíí¶ë¬ïdú{~ØT¸C5ø HfÌNì^þj¢Ë½·:ª½9Y)ï-öܵñ¦Ò ¥k×]ýìez¨Ð¶Í,üläÅ£»Â_Z4tȵ%iñrjµrØ«OôÕ["¦=,PoIKO³":T-Uò®N×Ú6iâKÇvM /^ªGäl7Ú^SS+±$*ÞåMhÝæ+Îz¸ñÛÖízýã 1+$ébîgû¹Ø®7sª¡¬jC¶ÜC;6ù»ÿ¶5éRµ»j§H& ó%QëËÕ¤ÆÎ*J]i¯å°ÑöòRÓ$§zVÅåMñQüõi½íu¥Ó_Ön¬?æÍñËÚ~.¶Aæ²â¸p¸*4$Êöþû«Iªd" ÆÍ?R]¤Æcýy¬¿t©ÚÓ_f$? Ò3$[:[*ô±}ðsº§&"L *ʪV§l¯+þB´Ú.z))ýåï¼´Ò93Ið' ´nÄýïZôö©¡óùºÑM΢¶Ë¹ô£°þ2KH Y àO$ ýÖÖVnBLïêôZ_®$j r}ofªY)Çß/ zÅÛþ$3sÙæÍzlÐöLÛ³L úñø¯ÞSÿ^~ìì8ýÈëO'vKÎïÛª$ȪU2óRÓV>HmÝæëUÛ«½9ûʼ¦o$y'àO$ ?ýéOÿõ_ÿ¥%óÆ<7Û7%sÂØ §< j}¹=yA± =C¸¥³¥B?Û[géź§&"þD {÷¤H{HNN¾}û67äI}~õái¡ñ¦Ò ¥k×¶]ýìµqÒÄ9í:ßm§u¯8ëaÎo[·ëÕGÔ xW§ëyl+`\eå$½> Að' H{P3 )V¥;[*x'@2 ÓܤÝïÛ*ÞNZxî@)90¢ =C?!L xW§KÚ¡Æ%LV.Ib É Ú r%DÅëÕSôyuB²UægK¼«Ó%íPã&+$± d ñ(ID©¢mÕÞIÜ>³·½®túÑÎÛx²¾LJÖ¿ØS" '"'¿î/çí¤jWìì¸ÆõâuWÚk§G9¬iÝb[yÛÖܶn"ÆRÔÏ'?ÐWñùÞrîhÞ¿¦H óÕ¯ÕÞ}e^79êéYª&Îi[yÛÖ<`ÝÔ+ ÍUº³¥w2 $ r+rÖG]8\5iâÙßvïLÞü²~ÌÈpù©O'§pótëùÛÃ&Ï(¶·-Сæ.ëf]6-.Ùe $ }âþóH?u+V©.jÛY(Á,î&÷)ÉìöÇM )GN¡?9±§Ä¶(Ûêcõ§ßѼ9#~ùLÓ%Û^T[ôRÜòò§5Rm311ãuYûõHo²dºoTr½ÕÞIH»¯þB´©(7m©'7d q r±.÷ª¢|of~Ûº] òü%뫽9µ¾Ü×,s¨mN]a!èÐ×îp£t4n(ÎZ# ù)çrS?ÿ1k¬äcLÓð8_¿ëÒÒõ¨orÀ¦âæõDÝhK]ú¸ $ >lÆÂYKô\G=,³·p¾%/5Í»:Éì×-VZ×ìé¯ö¼¹ö¤9ùk½Õ\;7Ë5ª_»ZæchçH& ç2c^Yzáp.üÛÖí²Å6¿ºâ¬%^ŸRÅÊ%Ih¥G'´XSzÊc[+iWùÙRwuºMÊT5mk´Íf[Ûöf{'Ms騮©¡ó=aÑ-þ.ÐßU»ùPO;G2 çö½Öº9ìíy ÕÏ©W¨«ZºS¼"ãHæúUém;2祦Éåº)S®Nª¤súØSb_ÄXìE]N{]éô¢õ!ú3íhÞ¬uºïK&-ÖZC©Ã7RlkUQW/Z_®~dÔXmkkt.G'üµ7Ûk'g?¼Ò^;%8Êy}]ëF7ÊãiçH& Ñl[£C9:áÐÞ\^K6üPO;G2 H÷ZteöôW¯´×ê>÷O'vKß·UM Rt館%Qñªãn¹hÍ[êe6ËüxËF¹Rõ¦¿üy©i"]¸vzOë6ß\O¬~ËT®v¶TôÇw2i±n$Ó»:½Ö+\ßÖBl3X[£m6«úkoo NÛ^ mN7ÊãiçH& é&,Lú¸ÜÛÃê©ó¤stù%ëÕ¤&zF÷S´ææÍÎuÂeM¥³ÖHB~JÝ\ëïÙ`[îÙík¼Fã}è;¶{5<±§DÔNÿöÉîbÿºt-úWkQ3_i¯+FóTÏǬܴrIû³¸lÉþêö0d Ò3$úxO´·Zì±AOy&ÔúrotÔõÁ£ï×pp6`É iÑÐ!¿ç´ø !öv£&zÊc[+'æ¥WéÌß¶þ¶n©ÛËtY7ÓR +$õÇ¥zW2[·ù³Þ"¹áz}·¿úpKÄ´Þ2iâù¦ÎWêèu2N5UmÈHK>´cµ%Ü訫)ÈЫ>JQí¢<aÑ-Öóà|˸Ñá¦ûêÉÙ+ó³åpïêt= m¬eÔD 4Öa`´É ÞÉTïI¬|8IϵÓ{Z·ùæzbm?&ãç;;®þ½ü+íµê#ÓïCCþtb·|ß·UM RÍÀØÖ¼¥ÞÿìdZGÀ¯ÓÆ:6@ r+rÖnÉ 4qíÇÆÏ}ÂØÿQnubÌÃÙeµ¿³y¢çÏ|íhMÜ|5 ¬±=Ü>³WòûkþÞÉÔÛMÍ#`×icL L 3å º\.ÓYôhuYáê`|m&³ë#sÝå ø}ÚÅóïÛÿÐÒ{ú3MªqÞVGÅý÷|Øÿ:øY<\óðn9((SÛÌ%y)Ï6>½_Æ¿{±^]møÍÉî§9}¢Ùj m Æ»Æq´ë9ïÎíîB§vG×j ÆÈIåHâ×d<õÞ+Ükóu3Îæ¾èÍÜÉ´ëæåå^ÕýxªP?ÂÆxpÝËjcû×ZÍv)ûå éÈô Ú.þí7òïî"µÛöì㪵>þK·ý\ó½!cé4Üÿõï?V-»MÏ|[v%ç´x3NaU¦OÉ»eË åß±_¡1ÕÃ/ýHepÇ'l¾nVÓYÝ ýò"Óãñ$IÈ£þN¦þ"eee©TÊf¯×«¿÷Éeµ±ñµÌ®?gÝå oAd¶¶¶B!ôõõµ··f^ooo,³¥££CÎÑY÷²ÚØøÚLfw¹\. ¶ÙÌ¥®|`ß×ôY\T¨íN¡¿Âø`ׯ>e5¶Z¡éçdª¾ëK`ëÖø^¬Æi+$2 ÕÖÖjÜn·<Úf~¿_;(ªªªÆÇÇm^rÕìþ' --- NEW FILE: agi.png --- PNG ^üétéöÕoYå/OÉ6ॠög~ÿ¿¥+_\6:ý¯\,ß§ºÿÛ}ñpÁÖÌ䨹ïîÉ$*QEQQÉm¨´üÙiC'4ÈôÄÏ{ZðrÆÑÊN cùué _ÏîÁjf-£¼KÙ£ë£ø;bpÿAõ ãFAåÀûôìúrR8¶*H«¢¦¢v6<¾k8ißæ´;Æ}ñïmÉc%ëJEQETr*}\½±¿ßµ÷¶Þm¬èØ¡ Db2{³WNlBͧFGZûø¿®-FÉá¢erÛÂó±|óLØ ôóé±M(ÿòDÊh¢ ½ºûß8µËÎõû_^´HÉI"~<];ÞÕwJEQETj.*M;lÆÑoæ& ôí(¹ûBÄ[ÍTG @,̪¥Ñ!r'WæG!þâeäô'±<°_Oð¿_g,cs±ÕÆäyr+ À¦ ªÐà0mK:vx½JEQETò TBl_½,!"fgÆ?+xyóÌÎÏ£U¿ºp¿Á3>?¾ %ß}PºÝ?Úú¤}D9ðKT»^÷_õ±7rÄý¯!*QEQQɳPIÌ% ^· ˾;~Ì4Q¾!!@ósCùÕûýÆ@µ¥Ù!OÍÛj뿽mCäôybùDIÖô ûÕþ³'G,òä,1ç]¿Z¤$áXD%¢("*y*}srWôfî}T¾`YÌ%êÑõIñ cfþcgÆ?±\º>T$*-^7kbèaZ+Q Ç:pâ'¶(¢(¨äA¨Ù¾ÉZ^AɧǶrÓhÖÅ?·,1Ãá8\´.ä©Ùb¾ÑYx)÷ ¾jÓðAÁ¡kÍ$Íq ñ¨#á;-e¥(-)()¢(¨äY¨ø¹A)/e ÖÊi×f,¢¯]1豿]9º¦ÛJGÜ8UZ³#Ec¢("*y"*µhÈÉÝʵ^ÙªÍØDT¢(¢(¢¡ÒõºmZÚåREQQ¨äYAT¢(¢(¢Q©¶4[Ìòv9ê^{ùzûío=«YET¢(¢(¢R«¢Òwôèúds<F°m7ÿ@hÀ]tK»Z³Õ17ºI{&*QEQQɨt¢$kÆP;òquaá$cù£[=ö7÷ö'-Y_±om^¶(¨DQEQD¥Ö@¥»ooÛPº>E>&L~~|[yÖ Yx¶2_ºìÞ,øºvgQZ²cnôá¢u"[ÈiwfjÍÌêW×ʼ"÷Ò¹«^ÏY±¹ðH~&Ø<ĵ÷vëmErK ïñD%¢("*µ*%EÅx ` ÜTå¯^6ì%*c'Óça-ÆZÚ¿1yH%0kbØÞì4á%7jè$üÍp8¶¯þ¯£ß¾P1°_táE<òÈ_ì(¢(¨ä"*ýz¶¼ EË #ãÑh¡ÁaÚ6wìð{(¢(¨Ôâ¨$x%!""²ikçtß<³§s§'n_¨ ^·J¤ 4[øFnpÀ,¼½mCäôyrÒ·¨µãÇLÝEom^#g&É9ݹÑ W<Âr¬=¾+31rà¬fGæûeÙK£ck¯ç¬4;:v"u)I'¢EQEZ¤yíÂÐ(Á4bN·(ÍGÛüå/YÕÄHðEÎÝNÁ`áÚ{;±¹ìÂìm%EÝßÛG° Ê?{§ËòÊ£ã¯D%ðÖп<±¨DQEQD¥G%ÇÜè½ÙiÀ 0È9¹`Väá¢ubmü¼ÁOç«6 <kbØ5ÃæpùôØ`Sqú²»¨ Gá¬TM q£ fàÈÁ}zv=Qý{wŪàáG`+T :騡¨å¡ÿO¨eoöóÊM¨òÔHñòhñrAKcÿã׵ž.ÃËG¨n ϧÇ6ÉfÉelûÍÉmx9åÉ?c[Ñf=ÔïyUÒ"%'øñtYìüyWß-æ×¢Jq©õ5ñSNµWTÌ0úÍÜľ=@-ÂmZ±ÕìH¬Ó«»DH ÏVfaÕÒèß=§¯ÍBüÅKTÃòS»d±ÉÆäyÚyËþ!óGUbÛêK®×íÀBbäߺ©ÒâOÿ+×úWÍÉÖ¿HT¢(¢O«²²WÀ j>*Uæ-2 Ïâ°"Fî:ó²?;MÛ«BGÚ9Ý2Ĥ¥AõÆrÿÞÝ;wê¨]Óö¥ØXþ¹a·_NcýË(AyU~âoÚáb~EÜü¿ÝáaD%"*ù®nݺ[UUõË/¿ðPTsPéæ²ýzßµB¢Æë9ñrw}ÅZ>,âç=-çt-^~ûÂÞ»ÅéÏ¢0')BÇbùpÑ21;Ä&×ëv<ôgüý¥è¾0Dc¼(z¹lûËjD%"*ù¢N<|çÎåË¿ûî»<!ÕTÚ6gr3ê^[:I*^®ëæï÷ÈCõèúè£ùÚ9ÝÀ,±ªc;uÄåü§áúU½ºûMä$nÝK,÷éÙ58`8vÃg='û±üý:˱9ö*QQr®ÔÔTAHxB(ª9¨d'î6V\>òJ}ÅÚvØ`idß5L¸Æ&¿Ýãtÿr~7êëvò¸KãÎ|ÅIZËÿÉËM¨DQD%ÕåË£¢¢nÞ¼yïÁH\LLÌÅyZ(ªEQ©¥CLó»ãÝ=[3-*Üi¬HvÄ|r´¨DQD%U~~¾Í]UUuïÁüîòjTúîíµ¥é"Muüxº,&2üÖÜ·9-'-9>(¨äÓ×w>ÃOQí'+^J\mô0¹ÓXNrÄFj'3ñú@QD%ß¾ÐSå{¨t?@ÙúØùóÞÝ)MÎ|%Ù¯ôÍEJEù*!¾zo»0}v¹¹é/\<\À$ûET¢JET¢E(¢EJET¢JETjMTº|ùòæÍyõ (¢Q¢(çß ßq¹¾uëV]]ÝÊ+£¢¢***xõ (¢Q¢(ß ßèUª¬¬INN®©©Ùkyõ (¢Q¢(¢Òo¨$héÎ;âWUUYtAܶfâ¶Ü¶5·ÍÈÈ *QÍõ'¢(¢@¥}ûö^¥ÚÚÚ_~ù ?´(ö(¢¼~=[~ëÜk-4ûÖ['OLMMå\%¨DT¢(jKTúºvgü¼&mrûBEjlÜÕ¹Ñß}PÒ¢OÀ}òÉ'ùùùD%¨DT¢(j3Tzkó&m²`Vd}ÅF,`ôEqÌ«DQD%¢(C¥»ooÛPº>eaãMùË_¬~u,9_µé£W¾» krÕoä~sr¨ J®Öl=P°fgÆ?ë^{Ùl¯ç¬L[,o{ïñD%"*QEy*%EÅ¥%bÓÀÐÂШ%Y13ÿQ·J®¾pERjl jovZbäQ~åè±O½}¡ ýgONøðªüÕ %ðr¨?°_Ð×µ;e3yä/6¢E(¢<~=[ÞÍ?ðÆ©RYòé±-#?-æYwäô#ðì"ÂBpÀ±<cB¨(ú WÌ'*µ1[7E5Iõõõqqqß~û¼yða¨ô é... [truncated message content] |
From: Stefan R. <sr...@us...> - 2005-07-11 01:04:35
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs/images In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17597/xdocs/images Log Message: Directory /cvsroot/asterisk-java/asterisk-java/xdocs/images added to the repository |
From: Stefan R. <sr...@us...> - 2005-07-10 17:26:26
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3849/xdocs Modified Files: index.xml Log Message: Moved mobicents to related projects Index: index.xml =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/index.xml,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -p -r1.17 -r1.18 --- index.xml 7 Jul 2005 01:42:58 -0000 1.17 +++ index.xml 10 Jul 2005 17:26:15 -0000 1.18 @@ -71,13 +71,6 @@ Telephony API (JTAPI)</a> based on the <a href="http://gjtapi.sourceforge.net/">Generic JTAPI and JCC Project (GJTAPI)</a>.</p> - <p>Another option is to improve Asterisk support in - <a href="http://www.mobicents.org">Mobicents</a> a VoIP - Middleware based on the - <a href="http://java.sun.com/products/jain/article_slee_principles.html">JAIN SLEE</a> - standard. There is already an - <a href="http://mobicents.dev.java.net/servlets/ProjectForumMessageView?messageID=7615&forumID=739">Asterisk RA</a> - available that is based on Asterisk-Java.</p> </subsection> <subsection name="Download"> <p>Official releases and release candidates are available on the <a @@ -119,6 +112,13 @@ cvs -z3 -d:pserver:ano...@cv...urcef portions of the framework.<br/> It is based on a pre-0.1 snapshot of Asterisk-Java and available under Apache License.</p> + <p><a href="http://www.mobicents.org">Mobicents</a> is a VoIP + Middleware based on the + <a href="http://java.sun.com/products/jain/article_slee_principles.html">JAIN SLEE</a> + standard. It includes an + <a href="http://wiki.java.net/bin/view/Communications/MobicentsAsteriskRA">Asterisk RA</a> + that is based on Asterisk-Java.<br/> + Available under Lesser GNU General Public License (LGPL)</p> <p><a href="http://tanesha.net/Wiki/JastAgi.html">Jast Agi</a> is another toolkit for writing Java applications that connect to Asterisk using the FastAGI protocol. The lastest version introduces |
From: Stefan R. <sr...@us...> - 2005-07-07 01:51:14
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7526/xdocs Modified Files: navigation.xml Log Message: Added link to fisheye repository Index: navigation.xml =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/navigation.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- navigation.xml 24 Apr 2005 14:34:00 -0000 1.4 +++ navigation.xml 7 Jul 2005 01:51:05 -0000 1.5 @@ -37,6 +37,9 @@ <item name="Code Coverage by Clover" href="http://www.cenqua.com/clover/" img="http://www.cenqua.com/clover/images/clovered1.gif" /> + <item name="Source Perspective by FishEye" + href="http://fisheye.cenqua.com/changelog/asterisk-java/" + img="http://www.cenqua.com/images/fisheyed2.gif" /> </menu> </body> </project> \ No newline at end of file |
From: Stefan R. <sr...@us...> - 2005-07-07 01:43:09
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2896/xdocs Modified Files: index.xml Log Message: Added Requirements subsection Updated link to OrderlyCalls (formerly JAGI Server) Index: index.xml =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/index.xml,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -p -r1.16 -r1.17 --- index.xml 8 May 2005 13:22:14 -0000 1.16 +++ index.xml 7 Jul 2005 01:42:58 -0000 1.17 @@ -95,27 +95,50 @@ cvs -z3 -d:pserver:ano...@cv...urcef <p>When prompted for a password for <i>anonymous</i>, simply press the Enter key.</p> </subsection> + <subsection name="Requirements"> + <p>At runtime Asterisk-Java requires a Java Runtime + Environment (JRE) of at least version 1.4 (1.3 might work + when using log4j, though that has not been verified). It has + been successfully tested on Sun's JVM and Bea's JRockit.</p> + <p>Of course you also need a working Asterisk server. When + using the Manager API be sure that it has been enabled (see + <a href="http://www.voip-info.org/tiki-index.php?page=Asterisk%20config%20manager.conf">Asterisk config manager.conf</a>).</p> + <p>For logging Asterisk-Java will use + <a href="http://logging.apache.org/log4j/">log4j</a> when + available. If you do not include log4j in your Classpath + Asterisk-Java will use java.util.logging.</p> + <p>If you choose to compile Asterisk-Java on your own you need a + Java Developer Kit (JDK) of at least version 1.4. To run the unit + tests you need <a href="http://www.junit.org/">JUnit</a> and + <a href="http://www.easymock.org/">EasyMock</a> in addition.</p> + </subsection> <subsection name="Related Projects"> <p><a href="http://www3.mb.sympatico.ca/~chadk/">Asterisk-Java for Mono/.NET</a> is a port of Asterisk-Java to C# for Mono, Microsoft's .NET - Framework and anything else that implements the basic portions - of the framework required to use this. - It's based on a pre-0.1 snapshot of Asterisk-Java and available under - Apache License.</p> + Framework and anything else that implements the basic + portions of the framework.<br/> + It is based on a pre-0.1 snapshot of Asterisk-Java and + available under Apache License.</p> <p><a href="http://tanesha.net/Wiki/JastAgi.html">Jast Agi</a> is another toolkit for writing Java applications that connect to Asterisk using the FastAGI protocol. The lastest version introduces a statemachine approach to handle AGI requests and uses java.nio to - process all requests in one Thread. + process all requests in one Thread.<br/> Available under Apache License.</p> - <p><a href="http://www.voip-info.org/wiki-JAGIServer">JAGIServer</a> - also supports writing Java based AGI Scripts using FastAGI. - Available under GNU General Public License.</p> + <p><a href="http://orderlycalls.sourceforge.net/">OrderlyCalls</a> + has replaced + <a href="http://www.voip-info.org/wiki-JAGIServer">JAGIServer</a> + and supports writing Java based AGI Scripts using FastAGI. Support + for the Manager API was recently added.<br/> + Available under a modified Lesser GNU General Public License + (It is prohibited to use it for automating 'cold-calling' and you + need prior written permission to provide or augment call queuing).</p> <p><a href="http://sourceforge.net/projects/jasterisk/">JAsterisk</a> is a set of JNI classes providing direct access to Asterisk PBX functionality from Java. It is not a socket-level interface to Asterisk (like Asterisk-Java) but a true Java-Asterisk - integration at the Thread level. Available under GNU General Public License.</p> + integration at the Thread level.<br/> + Available under GNU General Public License.</p> </subsection> <subsection name="Contact"> <p>You can reach me at <code>srt</code> at <code>reucon</code> dot <code>net</code></p>. </subsection> |
From: Stefan R. <sr...@us...> - 2005-07-07 00:27:44
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23830/src/java/net/sf/asterisk/manager Modified Files: DefaultAsteriskManager.java DefaultManagerConnection.java AsteriskManager.java Log Message: Added javadocs Index: DefaultAsteriskManager.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/DefaultAsteriskManager.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- DefaultAsteriskManager.java 22 Jun 2005 18:27:12 -0000 1.5 +++ DefaultAsteriskManager.java 7 Jul 2005 00:27:29 -0000 1.6 @@ -51,6 +51,9 @@ import net.sf.asterisk.util.Log; import net.sf.asterisk.util.LogFactory; /** + * Default implementation of the AsteriskManager interface. + * + * @see net.sf.asterisk.manager.AsteriskManager * @author srt * @version $Id$ */ @@ -113,6 +116,8 @@ public class DefaultAsteriskManager connection.sendAction(new QueueStatusAction()); } + /* Implementation of the AsteriskManager interface */ + public Call originateCall(Originate originate) throws TimeoutException, IOException, Exception { @@ -176,6 +181,8 @@ public class DefaultAsteriskManager return queues; } + /* Implementation of the ManagerEventHandler interface */ + /** * Handles all events received from the asterisk server.<br> * Events are queued until channels and queues are initialized and then Index: DefaultManagerConnection.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/DefaultManagerConnection.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -p -r1.18 -r1.19 --- DefaultManagerConnection.java 7 Jul 2005 00:09:26 -0000 1.18 +++ DefaultManagerConnection.java 7 Jul 2005 00:27:35 -0000 1.19 @@ -46,9 +46,9 @@ import net.sf.asterisk.util.LogFactory; /** * Default implemention of the ManagerConnection interface. * + * @see net.sf.asterisk.manager.ManagerConnection * @author srt - * @version $Id: DefaultManagerConnection.java,v 1.15 2005/04/23 22:56:38 srt - * Exp $ + * @version $Id$ */ public class DefaultManagerConnection implements ManagerConnection, Dispatcher { Index: AsteriskManager.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/AsteriskManager.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -p -r1.5 -r1.6 --- AsteriskManager.java 22 Jun 2005 18:27:12 -0000 1.5 +++ AsteriskManager.java 7 Jul 2005 00:27:35 -0000 1.6 @@ -20,6 +20,14 @@ import java.io.IOException; import java.util.Map; /** + * The AsteriskManager is built on top of the ManagerConnection and is an + * attempt to simplify interaction with Asterisk by abstracting the interface.<br> + * You will certainly have less freedom using AsteriskManager but it will make + * life easier for easy things (like originating a call or getting a list of + * open channels).<br> + * AsteriskManager is still in an early state of development. So, when using + * AsteriskManager be aware that it might change in the future. + * * @author srt * @version $Id$ */ @@ -30,11 +38,11 @@ public interface AsteriskManager * * @param originate conatins the details of the call to originate * @return a Call object representing the originated call - * * @throws TimeoutException if the originated call is not answered in time * @throws IOException if the action cannot be sent to the asterisk server */ - public Call originateCall(Originate originate) throws TimeoutException, IOException, Exception; + public Call originateCall(Originate originate) throws TimeoutException, + IOException, Exception; /** * Returns a Map of active channels.<br> @@ -47,7 +55,8 @@ public interface AsteriskManager /** * Returns a Map of all queues.<br> - * The map contains the queue names as keys and objects of type {@link Queue} as values. + * The map contains the queue names as keys and objects of type + * {@link Queue} as values. * * @return a Map of queues. */ |
From: Stefan R. <sr...@us...> - 2005-07-07 00:19:27
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19181/src/java/net/sf/asterisk/manager Modified Files: ManagerConnection.java Log Message: Added intention of this interface to the javadoc Index: ManagerConnection.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/ManagerConnection.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- ManagerConnection.java 23 Jun 2005 22:06:10 -0000 1.7 +++ ManagerConnection.java 7 Jul 2005 00:19:17 -0000 1.8 @@ -23,7 +23,14 @@ import net.sf.asterisk.manager.response. /** * The main interface to talk to an Asterisk server via the Asterisk Manager - * API. A concrete implementation of this interface can be obtained from a + * API.<br> + * The ManagerConnection repesents a connection to an Asterisk Server and is + * capable to send Actions and receive Responses and Events. It does not add any + * valuable functionality but rather provides a Java view to Asterisk's Manager + * API (freeing you from TCP/IP connection and parsing stuff).<br> + * It is used as the foundation for higher leveled interfaces like the + * AsteriskManager.<br> + * A concrete implementation of this interface can be obtained from a * ManagerConnectionFactory. * * @see net.sf.asterisk.manager.ManagerConnectionFactory @@ -135,7 +142,9 @@ public interface ManagerConnection /** * Registers an event handler to be called whenever an * {@link net.sf.asterisk.manager.event.ManagerEvent} is receiced from the - * asterisk server. + * asterisk server.<br> + * Event handlers are notified about new events in the same order as they + * were registered via addEventHandler. * * @param eventHandler the handler to call whenever a manager event is * received |
From: Stefan R. <sr...@us...> - 2005-07-07 00:09:37
|
Update of /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13098/src/test/net/sf/asterisk/manager Modified Files: DefaultManagerConnectionTest.java Log Message: Fix: event handlers are now notified in the same order as they are added Index: DefaultManagerConnectionTest.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager/DefaultManagerConnectionTest.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- DefaultManagerConnectionTest.java 13 Mar 2005 11:26:49 -0000 1.8 +++ DefaultManagerConnectionTest.java 7 Jul 2005 00:09:27 -0000 1.9 @@ -26,6 +26,7 @@ import net.sf.asterisk.manager.action.St import net.sf.asterisk.manager.event.ConnectEvent; import net.sf.asterisk.manager.event.DisconnectEvent; import net.sf.asterisk.manager.event.ManagerEvent; +import net.sf.asterisk.manager.event.NewChannelEvent; import net.sf.asterisk.manager.response.ManagerResponse; import org.easymock.MockControl; @@ -592,6 +593,36 @@ public class DefaultManagerConnectionTes socketMC.verify(); } + + + public void testDispatchEventWithMultipleEventHandlers() + { + final int count = 20; + ManagerEvent event; + MockControl listMC; + final List list; + + // verify that event handlers are called in the correct order + event = new NewChannelEvent(new AsteriskServer()); + listMC = MockControl.createStrictControl(List.class); + list = (List) listMC.getMock(); + for (int i = 0; i < count; i++) + { + final int index = i; + list.add(new Integer(index)); + listMC.setReturnValue(true); + dmc.addEventHandler(new ManagerEventHandler(){ + public void handleEvent(ManagerEvent event) + { + list.add(new Integer(index)); + } + }); + } + + listMC.replay(); + dmc.dispatchEvent(event); + listMC.verify(); + } private class MockedManagerEventHandler implements ManagerEventHandler { |
From: Stefan R. <sr...@us...> - 2005-07-07 00:09:37
|
Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13098/src/java/net/sf/asterisk/manager Modified Files: DefaultManagerConnection.java Log Message: Fix: event handlers are now notified in the same order as they are added Index: DefaultManagerConnection.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/DefaultManagerConnection.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -p -r1.17 -r1.18 --- DefaultManagerConnection.java 23 Jun 2005 22:16:03 -0000 1.17 +++ DefaultManagerConnection.java 7 Jul 2005 00:09:26 -0000 1.18 @@ -20,10 +20,10 @@ import java.io.IOException; import java.io.Serializable; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import java.util.Collection; +import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Map; import net.sf.asterisk.io.SocketConnectionFacade; @@ -40,7 +40,6 @@ import net.sf.asterisk.manager.impl.Mana import net.sf.asterisk.manager.response.ChallengeResponse; import net.sf.asterisk.manager.response.ManagerError; import net.sf.asterisk.manager.response.ManagerResponse; - import net.sf.asterisk.util.Log; import net.sf.asterisk.util.LogFactory; @@ -83,7 +82,7 @@ public class DefaultManagerConnection im private String protocolIdentifier; private final Map responseHandlers; - private final Collection eventHandlers; + private final List eventHandlers; protected boolean keepAlive = false; public DefaultManagerConnection() @@ -91,7 +90,7 @@ public class DefaultManagerConnection im this.asteriskServer = new AsteriskServer(); this.responseHandlers = new HashMap(); - this.eventHandlers = new HashSet(); + this.eventHandlers = new ArrayList(); } public DefaultManagerConnection(String hostname, int port, String username, |
From: Stefan R. <sr...@us...> - 2005-07-02 09:43:07
|
Update of /cvsroot/asterisk-java/asterisk-java/xdocs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18391/xdocs Modified Files: tutorial.xml Log Message: added note that AGI can be used for incoming calls and calls originated via the Manager API Index: tutorial.xml =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/xdocs/tutorial.xml,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -p -r1.12 -r1.13 --- tutorial.xml 8 May 2005 11:59:53 -0000 1.12 +++ tutorial.xml 2 Jul 2005 09:42:44 -0000 1.13 @@ -26,7 +26,9 @@ <body> <section name="The FastAGI Protocol"> <p>The easiest way to interact with Asterisk from Java applications is via - the FastAGI protocol.</p> + the FastAGI protocol. AGI scripts can handle either incoming calls or + calls originated via the Manager API (see below for an example on how to + use Asterisk-Java to originate a call from your Java application).</p> <p>The AGI (Asterisk Gateway Interface) facility allows you to launch scripts, from the Asterisk dial plan. Traditionally communication between the scripts and Asterisk was via standard input and standard output and scripts had to run |